From f28a5d0bf65a9f3f8f6f82c243011582b3266bfa Mon Sep 17 00:00:00 2001 From: welbon <2261238+welbon@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:05:50 +0800 Subject: [PATCH] [compiler-v2] commit stdlib build generated binary file --- .../latest/stdlib/000_BitOperators.mv | Bin 212 -> 0 bytes .../latest/stdlib/000_bls12381_algebra.mv | Bin 0 -> 381 bytes vm/stdlib/compiled/latest/stdlib/001_Debug.mv | Bin 100 -> 0 bytes .../latest/stdlib/001_bn254_algebra.mv | Bin 0 -> 370 bytes .../latest/stdlib/002_EmptyScripts.mv | Bin 85 -> 0 bytes .../latest/stdlib/002_empty_scripts.mv | Bin 0 -> 86 bytes .../compiled/latest/stdlib/003_MintScripts.mv | Bin 49 -> 0 bytes .../compiled/latest/stdlib/003_vector.mv | Bin 0 -> 1756 bytes vm/stdlib/compiled/latest/stdlib/004_SIP_2.mv | Bin 43 -> 0 bytes .../compiled/latest/stdlib/004_option.mv | Bin 0 -> 1178 bytes vm/stdlib/compiled/latest/stdlib/005_SIP_3.mv | Bin 43 -> 0 bytes .../compiled/latest/stdlib/005_string.mv | Bin 0 -> 907 bytes .../latest/stdlib/006_SignedInteger64.mv | Bin 471 -> 0 bytes .../stdlib/{010_Signer.mv => 006_signer.mv} | Bin 114 -> 114 bytes .../compiled/latest/stdlib/007_Vector.mv | Bin 1084 -> 0 bytes vm/stdlib/compiled/latest/stdlib/007_error.mv | Bin 0 -> 610 bytes .../compiled/latest/stdlib/008_Errors.mv | Bin 480 -> 0 bytes .../compiled/latest/stdlib/008_features.mv | Bin 0 -> 6969 bytes vm/stdlib/compiled/latest/stdlib/009_ACL.mv | Bin 500 -> 0 bytes vm/stdlib/compiled/latest/stdlib/009_bcs.mv | Bin 0 -> 76 bytes .../compiled/latest/stdlib/010_type_info.mv | Bin 0 -> 489 bytes vm/stdlib/compiled/latest/stdlib/011_Math.mv | Bin 746 -> 0 bytes vm/stdlib/compiled/latest/stdlib/011_table.mv | Bin 0 -> 923 bytes vm/stdlib/compiled/latest/stdlib/012_BCS.mv | Bin 98 -> 0 bytes .../latest/stdlib/012_system_addresses.mv | Bin 0 -> 1150 bytes vm/stdlib/compiled/latest/stdlib/013_Event.mv | Bin 695 -> 0 bytes vm/stdlib/compiled/latest/stdlib/013_hash.mv | Bin 0 -> 90 bytes vm/stdlib/compiled/latest/stdlib/014_Token.mv | Bin 2397 -> 0 bytes .../compiled/latest/stdlib/014_ed25519.mv | Bin 0 -> 1380 bytes .../latest/stdlib/015_CoreAddresses.mv | Bin 460 -> 0 bytes .../latest/stdlib/015_multi_ed25519.mv | Bin 0 -> 2062 bytes .../compiled/latest/stdlib/016_Timestamp.mv | Bin 636 -> 0 bytes vm/stdlib/compiled/latest/stdlib/016_guid.mv | Bin 0 -> 432 bytes .../compiled/latest/stdlib/017_Option.mv | Bin 1136 -> 0 bytes .../compiled/latest/stdlib/017_from_bcs.mv | Bin 0 -> 494 bytes .../compiled/latest/stdlib/018_Config.mv | Bin 1317 -> 0 bytes vm/stdlib/compiled/latest/stdlib/018_event.mv | Bin 0 -> 498 bytes .../compiled/latest/stdlib/019_ChainId.mv | Bin 439 -> 0 bytes .../latest/stdlib/019_string_utils.mv | Bin 0 -> 1129 bytes .../compiled/latest/stdlib/020_VMConfig.mv | Bin 3667 -> 0 bytes vm/stdlib/compiled/latest/stdlib/020_debug.mv | Bin 0 -> 260 bytes .../compiled/latest/stdlib/021_Version.mv | Bin 195 -> 0 bytes .../latest/stdlib/021_create_signer.mv | Bin 0 -> 204 bytes .../latest/stdlib/022_PackageTxnManager.mv | Bin 3175 -> 0 bytes .../compiled/latest/stdlib/022_chain_id.mv | Bin 0 -> 248 bytes .../compiled/latest/stdlib/023_Treasury.mv | Bin 2454 -> 0 bytes .../compiled/latest/stdlib/023_bcs_util.mv | Bin 0 -> 3201 bytes vm/stdlib/compiled/latest/stdlib/024_Dao.mv | Bin 4845 -> 0 bytes .../compiled/latest/stdlib/024_account.mv | Bin 0 -> 7112 bytes .../stdlib/025_UpgradeModuleDaoProposal.mv | Bin 846 -> 0 bytes vm/stdlib/compiled/latest/stdlib/025_acl.mv | Bin 0 -> 438 bytes .../stdlib/026_TransactionTimeoutConfig.mv | Bin 447 -> 0 bytes .../compiled/latest/stdlib/026_aggregator.mv | Bin 0 -> 234 bytes .../stdlib/027_TransactionPublishOption.mv | Bin 600 -> 0 bytes .../latest/stdlib/027_aggregator_factory.mv | Bin 0 -> 547 bytes .../latest/stdlib/028_RewardConfig.mv | Bin 419 -> 0 bytes .../latest/stdlib/028_aggregator_v2.mv | Bin 0 -> 1073 bytes .../latest/stdlib/029_OnChainConfigDao.mv | Bin 649 -> 0 bytes vm/stdlib/compiled/latest/stdlib/029_any.mv | Bin 0 -> 372 bytes .../stdlib/030_ModifyDaoConfigProposal.mv | Bin 850 -> 0 bytes .../latest/stdlib/030_table_with_length.mv | Bin 0 -> 923 bytes .../latest/stdlib/031_ConsensusConfig.mv | Bin 1292 -> 0 bytes .../compiled/latest/stdlib/031_big_vector.mv | Bin 0 -> 2815 bytes vm/stdlib/compiled/latest/stdlib/032_STC.mv | Bin 1339 -> 0 bytes .../compiled/latest/stdlib/032_bit_vector.mv | Bin 0 -> 807 bytes .../latest/stdlib/033_TransactionFee.mv | Bin 567 -> 0 bytes .../latest/stdlib/033_chain_status.mv | Bin 0 -> 408 bytes vm/stdlib/compiled/latest/stdlib/034_Hash.mv | Bin 129 -> 0 bytes .../compiled/latest/stdlib/034_timestamp.mv | Bin 0 -> 773 bytes .../latest/stdlib/035_Authenticator.mv | Bin 873 -> 0 bytes .../compiled/latest/stdlib/035_stc_util.mv | Bin 0 -> 539 bytes .../compiled/latest/stdlib/036_Account.mv | Bin 5260 -> 0 bytes .../latest/stdlib/036_fixed_point64.mv | Bin 0 -> 1331 bytes .../latest/stdlib/037_AccountScripts.mv | Bin 191 -> 0 bytes .../latest/stdlib/037_fixed_point32.mv | Bin 0 -> 888 bytes vm/stdlib/compiled/latest/stdlib/038_Block.mv | Bin 1381 -> 0 bytes .../compiled/latest/stdlib/038_math128.mv | Bin 0 -> 1257 bytes .../stdlib/039_TreasuryWithdrawDaoProposal.mv | Bin 1013 -> 0 bytes .../latest/stdlib/039_transaction_context.mv | Bin 0 -> 1526 bytes .../compiled/latest/stdlib/040_BlockReward.mv | Bin 1593 -> 0 bytes .../compiled/latest/stdlib/040_object.mv | Bin 0 -> 4669 bytes .../compiled/latest/stdlib/041_Collection.mv | Bin 842 -> 0 bytes .../latest/stdlib/041_optional_aggregator.mv | Bin 0 -> 1536 bytes .../compiled/latest/stdlib/042_Collection2.mv | Bin 1924 -> 0 bytes .../latest/stdlib/042_function_info.mv | Bin 0 -> 729 bytes .../compiled/latest/stdlib/043_Compare.mv | Bin 588 -> 0 bytes .../latest/stdlib/043_fungible_asset.mv | Bin 0 -> 8849 bytes .../latest/stdlib/044_ConsensusStrategy.mv | Bin 435 -> 0 bytes .../stdlib/044_dispatchable_fungible_asset.mv | Bin 0 -> 2012 bytes .../latest/stdlib/045_DaoVoteScripts.mv | Bin 650 -> 0 bytes .../stdlib/045_primary_fungible_store.mv | Bin 0 -> 2966 bytes .../compiled/latest/stdlib/046_DummyToken.mv | Bin 731 -> 0 bytes vm/stdlib/compiled/latest/stdlib/046_coin.mv | Bin 0 -> 12047 bytes .../latest/stdlib/047_DummyTokenScripts.mv | Bin 292 -> 0 bytes .../compiled/latest/stdlib/047_treasury.mv | Bin 0 -> 2606 bytes .../compiled/latest/stdlib/048_EVMAddress.mv | Bin 442 -> 0 bytes .../latest/stdlib/048_starcoin_coin.mv | Bin 0 -> 1628 bytes .../latest/stdlib/049_FlexiDagConfig.mv | Bin 326 -> 0 bytes .../latest/stdlib/049_on_chain_config.mv | Bin 0 -> 1371 bytes vm/stdlib/compiled/latest/stdlib/050_Epoch.mv | Bin 2882 -> 0 bytes vm/stdlib/compiled/latest/stdlib/050_dao.mv | Bin 0 -> 5305 bytes .../latest/stdlib/051_FixedPoint32.mv | Bin 595 -> 0 bytes .../051_dao_treasury_withdraw_proposal.mv | Bin 0 -> 1028 bytes .../latest/stdlib/052_FrozenConfig.mv | Bin 670 -> 0 bytes .../latest/stdlib/052_block_reward_config.mv | Bin 0 -> 427 bytes .../latest/stdlib/053_FrozenConfigStrategy.mv | Bin 2298 -> 0 bytes .../latest/stdlib/053_block_reward.mv | Bin 0 -> 2391 bytes .../stdlib/054_GenesisSignerCapability.mv | Bin 454 -> 0 bytes .../compiled/latest/stdlib/054_bls12381.mv | Bin 0 -> 2073 bytes .../compiled/latest/stdlib/055_Oracle.mv | Bin 1982 -> 0 bytes .../compiled/latest/stdlib/055_capability.mv | Bin 0 -> 1023 bytes .../compiled/latest/stdlib/056_PriceOracle.mv | Bin 694 -> 0 bytes .../compiled/latest/stdlib/056_royalty.mv | Bin 0 -> 899 bytes .../compiled/latest/stdlib/057_collection.mv | Bin 0 -> 5157 bytes vm/stdlib/compiled/latest/stdlib/058_Offer.mv | Bin 538 -> 0 bytes .../compiled/latest/stdlib/058_comparator.mv | Bin 0 -> 497 bytes vm/stdlib/compiled/latest/stdlib/059_NFT.mv | Bin 4000 -> 0 bytes .../latest/stdlib/059_consensus_config.mv | Bin 0 -> 1344 bytes .../latest/stdlib/060_LanguageVersion.mv | Bin 143 -> 0 bytes .../latest/stdlib/060_consensus_strategy.mv | Bin 0 -> 622 bytes .../compiled/latest/stdlib/061_MerkleProof.mv | Bin 369 -> 0 bytes .../latest/stdlib/061_copyable_any.mv | Bin 0 -> 361 bytes .../latest/stdlib/062_MerkleNFTDistributor.mv | Bin 1338 -> 0 bytes .../latest/stdlib/062_crypto_algebra.mv | Bin 0 -> 2084 bytes .../latest/stdlib/063_IdentifierNFT.mv | Bin 1049 -> 0 bytes .../stdlib/063_dao_modify_config_proposal.mv | Bin 0 -> 1163 bytes .../compiled/latest/stdlib/064_GenesisNFT.mv | Bin 1204 -> 0 bytes .../compiled/latest/stdlib/064_stc_version.mv | Bin 0 -> 218 bytes .../latest/stdlib/065_StdlibUpgradeScripts.mv | Bin 2461 -> 0 bytes .../065_stc_transaction_package_validation.mv | Bin 0 -> 3340 bytes .../compiled/latest/stdlib/066_Genesis.mv | Bin 3619 -> 0 bytes .../stdlib/066_dao_upgrade_module_proposal.mv | Bin 0 -> 1256 bytes .../latest/stdlib/067_GenesisNFTScripts.mv | Bin 121 -> 0 bytes .../latest/stdlib/067_dao_vote_scripts.mv | Bin 0 -> 647 bytes .../latest/stdlib/068_IdentifierNFTScripts.mv | Bin 172 -> 0 bytes .../compiled/latest/stdlib/068_simple_map.mv | Bin 0 -> 1953 bytes .../latest/stdlib/069_MintDaoProposal.mv | Bin 681 -> 0 bytes .../stdlib/069_reserved_accounts_signer.mv | Bin 0 -> 606 bytes .../latest/stdlib/070_ModuleUpgradeScripts.mv | Bin 756 -> 0 bytes .../compiled/latest/stdlib/070_oracle.mv | Bin 0 -> 1864 bytes .../compiled/latest/stdlib/071_NFTGallery.mv | Bin 1895 -> 0 bytes .../latest/stdlib/071_oracle_price.mv | Bin 0 -> 837 bytes .../latest/stdlib/072_NFTGalleryScripts.mv | Bin 174 -> 0 bytes .../compiled/latest/stdlib/072_easy_gas.mv | Bin 0 -> 1516 bytes .../latest/stdlib/073_OnChainConfigScripts.mv | Bin 1254 -> 0 bytes .../latest/stdlib/073_easy_gas_script.mv | Bin 0 -> 327 bytes .../stdlib/074_PriceOracleAggregator.mv | Bin 570 -> 0 bytes vm/stdlib/compiled/latest/stdlib/074_epoch.mv | Bin 0 -> 3021 bytes .../latest/stdlib/075_PriceOracleScripts.mv | Bin 223 -> 0 bytes .../latest/stdlib/075_flexi_dag_config.mv | Bin 0 -> 358 bytes .../compiled/latest/stdlib/076_Signature.mv | Bin 343 -> 0 bytes .../latest/stdlib/076_managed_coin.mv | Bin 0 -> 723 bytes .../stdlib/077_SharedEd25519PublicKey.mv | Bin 615 -> 0 bytes .../compiled/latest/stdlib/077_math64.mv | Bin 0 -> 884 bytes .../latest/stdlib/078_TransactionTimeout.mv | Bin 293 -> 0 bytes .../compiled/latest/stdlib/078_math_fixed.mv | Bin 0 -> 1091 bytes .../latest/stdlib/079_TransactionManager.mv | Bin 1499 -> 0 bytes .../latest/stdlib/079_math_fixed64.mv | Bin 0 -> 1350 bytes .../latest/stdlib/080_TransferScripts.mv | Bin 777 -> 0 bytes .../latest/stdlib/080_object_property_map.mv | Bin 0 -> 5018 bytes .../latest/stdlib/081_TreasuryScripts.mv | Bin 892 -> 0 bytes .../latest/stdlib/081_object_token.mv | Bin 0 -> 9089 bytes vm/stdlib/compiled/latest/stdlib/082_Arith.mv | Bin 395 -> 0 bytes .../latest/stdlib/082_on_chain_config_dao.mv | Bin 0 -> 655 bytes vm/stdlib/compiled/latest/stdlib/083_U256.mv | Bin 1510 -> 0 bytes vm/stdlib/compiled/latest/stdlib/083_util.mv | Bin 0 -> 121 bytes .../latest/stdlib/084_YieldFarming.mv | Bin 1610 -> 0 bytes .../compiled/latest/stdlib/084_vm_config.mv | Bin 0 -> 444 bytes .../latest/stdlib/085_YieldFarmingV2.mv | Bin 3429 -> 0 bytes .../stdlib/085_transaction_publish_option.mv | Bin 0 -> 808 bytes .../086_stc_transaction_timeout_config.mv | Bin 0 -> 466 bytes .../latest/stdlib/087_stc_language_version.mv | Bin 0 -> 164 bytes .../stdlib/088_on_chain_config_scripts.mv | Bin 0 -> 1367 bytes .../latest/stdlib/089_oracle_aggregator.mv | Bin 0 -> 500 bytes ..._STCUSDOracle.mv => 090_oracle_stc_usd.mv} | Bin 322 -> 325 bytes .../compiled/latest/stdlib/091_pool_u64.mv | Bin 0 -> 2192 bytes .../latest/stdlib/092_pool_u64_unbound.mv | Bin 0 -> 2335 bytes .../latest/stdlib/093_property_map.mv | Bin 0 -> 2673 bytes .../latest/stdlib/094_starcoin_account.mv | Bin 0 -> 2592 bytes .../latest/stdlib/095_resource_account.mv | Bin 0 -> 1157 bytes vm/stdlib/compiled/latest/stdlib/096_ring.mv | Bin 0 -> 1303 bytes .../latest/stdlib/097_ristretto255.mv | Bin 0 -> 4076 bytes .../stdlib/098_ristretto255_pedersen.mv | Bin 0 -> 1533 bytes .../stdlib/099_ristretto255_bulletproofs.mv | Bin 0 -> 856 bytes .../latest/stdlib/100_ristretto255_elgamal.mv | Bin 0 -> 1960 bytes .../compiled/latest/stdlib/101_secp256k1.mv | Bin 0 -> 610 bytes .../latest/stdlib/102_starcoin_hash.mv | Bin 0 -> 549 bytes .../compiled/latest/stdlib/103_smart_table.mv | Bin 0 -> 4673 bytes .../latest/stdlib/104_smart_vector.mv | Bin 0 -> 3178 bytes .../latest/stdlib/105_starcoin_token.mv | Bin 0 -> 5561 bytes .../latest/stdlib/106_stc_transaction_fee.mv | Bin 0 -> 856 bytes .../compiled/latest/stdlib/107_stc_block.mv | Bin 0 -> 2019 bytes .../compiled/latest/stdlib/108_stc_genesis.mv | Bin 0 -> 3750 bytes .../compiled/latest/stdlib/109_stc_offer.mv | Bin 0 -> 472 bytes .../stdlib/110_stc_transaction_timeout.mv | Bin 0 -> 308 bytes .../stdlib/111_stc_transaction_validation.mv | Bin 0 -> 2223 bytes .../latest/stdlib/112_token_event_store.mv | Bin 0 -> 3050 bytes vm/stdlib/compiled/latest/stdlib/113_token.mv | Bin 0 -> 12903 bytes .../latest/stdlib/114_token_coin_swap.mv | Bin 0 -> 1109 bytes .../latest/stdlib/115_token_transfers.mv | Bin 0 -> 1725 bytes .../latest/stdlib/116_transfer_scripts.mv | Bin 0 -> 758 bytes .../latest/stdlib/117_treasury_scripts.mv | Bin 0 -> 916 bytes vm/stdlib/output.bpl | 348965 +++++++++++++++ 203 files changed, 348965 insertions(+) delete mode 100644 vm/stdlib/compiled/latest/stdlib/000_BitOperators.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/000_bls12381_algebra.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/001_Debug.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/001_bn254_algebra.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/002_EmptyScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/002_empty_scripts.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/003_MintScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/003_vector.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/004_SIP_2.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/004_option.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/005_SIP_3.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/005_string.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/006_SignedInteger64.mv rename vm/stdlib/compiled/latest/stdlib/{010_Signer.mv => 006_signer.mv} (64%) delete mode 100644 vm/stdlib/compiled/latest/stdlib/007_Vector.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/007_error.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/008_Errors.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/008_features.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/009_ACL.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/009_bcs.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/010_type_info.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/011_Math.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/011_table.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/012_BCS.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/012_system_addresses.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/013_Event.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/013_hash.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/014_Token.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/014_ed25519.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/015_CoreAddresses.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/015_multi_ed25519.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/016_Timestamp.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/016_guid.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/017_Option.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/017_from_bcs.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/018_Config.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/018_event.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/019_ChainId.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/019_string_utils.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/020_VMConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/020_debug.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/021_Version.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/021_create_signer.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/022_PackageTxnManager.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/022_chain_id.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/023_Treasury.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/023_bcs_util.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/024_Dao.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/024_account.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/025_UpgradeModuleDaoProposal.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/025_acl.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/026_TransactionTimeoutConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/026_aggregator.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/027_TransactionPublishOption.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/027_aggregator_factory.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/028_RewardConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/028_aggregator_v2.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/029_OnChainConfigDao.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/029_any.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/030_ModifyDaoConfigProposal.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/030_table_with_length.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/031_ConsensusConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/031_big_vector.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/032_STC.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/032_bit_vector.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/033_TransactionFee.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/033_chain_status.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/034_Hash.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/034_timestamp.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/035_Authenticator.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/035_stc_util.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/036_Account.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/036_fixed_point64.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/037_AccountScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/037_fixed_point32.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/038_Block.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/038_math128.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/039_TreasuryWithdrawDaoProposal.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/039_transaction_context.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/040_BlockReward.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/040_object.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/041_Collection.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/041_optional_aggregator.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/042_Collection2.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/042_function_info.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/043_Compare.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/043_fungible_asset.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/044_ConsensusStrategy.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/044_dispatchable_fungible_asset.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/045_DaoVoteScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/045_primary_fungible_store.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/046_DummyToken.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/046_coin.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/047_DummyTokenScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/047_treasury.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/048_EVMAddress.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/048_starcoin_coin.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/049_FlexiDagConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/049_on_chain_config.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/050_Epoch.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/050_dao.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/051_FixedPoint32.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/051_dao_treasury_withdraw_proposal.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/052_FrozenConfig.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/052_block_reward_config.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/053_FrozenConfigStrategy.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/053_block_reward.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/054_GenesisSignerCapability.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/054_bls12381.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/055_Oracle.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/055_capability.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/056_PriceOracle.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/056_royalty.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/057_collection.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/058_Offer.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/058_comparator.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/059_NFT.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/059_consensus_config.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/060_LanguageVersion.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/060_consensus_strategy.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/061_MerkleProof.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/061_copyable_any.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/062_MerkleNFTDistributor.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/062_crypto_algebra.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/063_IdentifierNFT.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/063_dao_modify_config_proposal.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/064_GenesisNFT.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/064_stc_version.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/065_StdlibUpgradeScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/065_stc_transaction_package_validation.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/066_Genesis.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/066_dao_upgrade_module_proposal.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/067_GenesisNFTScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/067_dao_vote_scripts.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/068_IdentifierNFTScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/068_simple_map.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/069_MintDaoProposal.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/069_reserved_accounts_signer.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/070_ModuleUpgradeScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/070_oracle.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/071_NFTGallery.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/071_oracle_price.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/072_NFTGalleryScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/072_easy_gas.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/073_OnChainConfigScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/073_easy_gas_script.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/074_PriceOracleAggregator.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/074_epoch.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/075_PriceOracleScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/075_flexi_dag_config.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/076_Signature.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/076_managed_coin.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/077_SharedEd25519PublicKey.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/077_math64.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/078_TransactionTimeout.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/078_math_fixed.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/079_TransactionManager.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/079_math_fixed64.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/080_TransferScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/080_object_property_map.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/081_TreasuryScripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/081_object_token.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/082_Arith.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/082_on_chain_config_dao.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/083_U256.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/083_util.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/084_YieldFarming.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/084_vm_config.mv delete mode 100644 vm/stdlib/compiled/latest/stdlib/085_YieldFarmingV2.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/085_transaction_publish_option.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/086_stc_transaction_timeout_config.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/087_stc_language_version.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/088_on_chain_config_scripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/089_oracle_aggregator.mv rename vm/stdlib/compiled/latest/stdlib/{057_STCUSDOracle.mv => 090_oracle_stc_usd.mv} (56%) create mode 100644 vm/stdlib/compiled/latest/stdlib/091_pool_u64.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/092_pool_u64_unbound.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/093_property_map.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/094_starcoin_account.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/095_resource_account.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/096_ring.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/097_ristretto255.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/098_ristretto255_pedersen.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/099_ristretto255_bulletproofs.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/100_ristretto255_elgamal.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/101_secp256k1.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/102_starcoin_hash.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/103_smart_table.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/104_smart_vector.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/105_starcoin_token.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/106_stc_transaction_fee.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/107_stc_block.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/108_stc_genesis.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/109_stc_offer.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/110_stc_transaction_timeout.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/111_stc_transaction_validation.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/112_token_event_store.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/113_token.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/114_token_coin_swap.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/115_token_transfers.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/116_transfer_scripts.mv create mode 100644 vm/stdlib/compiled/latest/stdlib/117_treasury_scripts.mv create mode 100644 vm/stdlib/output.bpl diff --git a/vm/stdlib/compiled/latest/stdlib/000_BitOperators.mv b/vm/stdlib/compiled/latest/stdlib/000_BitOperators.mv deleted file mode 100644 index 5def61d4135da077e983063d8429b7003b22fcfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmZ1|^O~EDfq{XIk%5VsNsd*4lU-AbBUpeZITR?$2!sqwOhAH}5lFCrxU3*98<54s z%*@CP)WpE!lv(0mkXn>jl3!HJoS2uwmQ$ROnO4G_mtVq^U&K}f;Z@`p0gXfkVB?ut txf!?_WlWerHb6M~CJ;M;GHm~$K-Pqb8LmLugoy>tF)(3bg>!()7yt$89e)4- diff --git a/vm/stdlib/compiled/latest/stdlib/000_bls12381_algebra.mv b/vm/stdlib/compiled/latest/stdlib/000_bls12381_algebra.mv new file mode 100644 index 0000000000000000000000000000000000000000..48876278919f6b0d549e710d228117823316201e GIT binary patch literal 381 zcmZ9I!D<3A5QdX+*IhTR?xnZBL?SIch?l~qpuJQIy-C*9TG(_oSt)&iK0@z(8{fs3 z=nSr48~8pl{|pSt&-GDs8Dk-505Faw2OfVxmVCn$Q;q=AK>{R1XgWe-q=zJkK>A3E z43HsXSy6eZMt5>ys@GNFOqSQqnkL^#HS^1vFGL%-%lo4*(o?SGeQmdHc&?t`msFp- z>Q7g--MF1@0@?$)11&)-(9P9@@f$5)Y&qW;b#puSAN!~Jl&XKJDEHQWF4k|Ws>Ih^ h9{eVraZUnKhZK-PQkN8wVp5NkkOZkuN=X9}`vp);NR|$EXJTLg0KM)G9{>OV diff --git a/vm/stdlib/compiled/latest/stdlib/001_bn254_algebra.mv b/vm/stdlib/compiled/latest/stdlib/001_bn254_algebra.mv new file mode 100644 index 0000000000000000000000000000000000000000..fe6647984c9ec622b46233e0074ed8dcef01fa08 GIT binary patch literal 370 zcmY+AF>b;@5Jh(f8yhdiPR}L0N_qs6-GD@s8reWlBn)9O1sC8RxkGN1K6UU<4A7qOA`0 z<#|=^ciYO9X?}Ed+2p6p&d=-lxiW3gtrw5nb#jM1{@X9I*|Gj`N!z_1*6iD<{WrDu zX?WjmBtLmPL2@TWCWV!vF`G+WUsrGM+x-TYcOSk*KWR+~)uTMhr}|Vth17tGC_@dY Km>N+DrG5bj7DR>s literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/002_EmptyScripts.mv b/vm/stdlib/compiled/latest/stdlib/002_EmptyScripts.mv deleted file mode 100644 index 1f874d057cb9d0e4114b99e0c5e944750b379588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ1|^O~EDfq{XIk%5VsiItU|k)1<|LrH+gh#e@(2*eCLuDJyzmBGnHnFS@qJgFc~ Td@+~@l0^cH42JxmM$I+zT; diff --git a/vm/stdlib/compiled/latest/stdlib/002_empty_scripts.mv b/vm/stdlib/compiled/latest/stdlib/002_empty_scripts.mv new file mode 100644 index 0000000000000000000000000000000000000000..73fd1a3bc106f933960b0a8e006c5056027e88e7 GIT binary patch literal 86 zcmZ1|^O~EDfq{XIk%5VsiItU|k)1=DLs@{wm>np}2*eD$sksFumGQ;NMVSR9#XQJ7 QkTeotWME_gYGPsl09>05VE_OC literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/003_MintScripts.mv b/vm/stdlib/compiled/latest/stdlib/003_MintScripts.mv deleted file mode 100644 index e0d82f1a77b9f7b80c56e9f5fa91c080efa95085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 scmZ1|^O~EDfq{XUk%5VwiHCzvfPsPAH#4s!IJqdZprjZmg$x)O0K)SIhX4Qo diff --git a/vm/stdlib/compiled/latest/stdlib/003_vector.mv b/vm/stdlib/compiled/latest/stdlib/003_vector.mv new file mode 100644 index 0000000000000000000000000000000000000000..23d4b17dd31a179248a45730a1c67eb91843434f GIT binary patch literal 1756 zcmZ`&U2+>m5T5Rt*`Jx+(T`=xb^?Vkj*FK(QhH2M4mpNOu@_r~EvZ&(n_PewiaP*R zT!0Jk#1S|Jm*DGJWlN^W)^1O4|9<^5zdrxRCrYV|6l?y4%x~1Uf6&jA{>eXb_Lu1= zf17WLpX~1$tVj_l#jHWKv7jbNL2V}Tgb+ogNe-Ghk>p;q&KID*44_3%IdHcBFpzK@ zgKMzKLv`7#>twOnRI97x{kpE#kFGuDclS+pxn4Dk*}GZw^i7k^A=+H@ppT>ysVOX-7Fe7#$z63`F6RwzO9<|%Eo`Q zeOzq3ka-*5H1+bX5CTEWfhF31NMo%yN;C%ekux2qJC1jpljV~)DQTv>@-!nRf*POb z`cqlx_!R8a>riONPM?}*);Z<)O>i_dW3R{)W$ZbDQ+&n+TieQWHV9|&iMD_GiIC6t zLr!)fJ%1`_7lq|s6jP^OMtIn)Gn3mA0aA7Dl;;b86wII7LtqB`E_m7lO12MUmenUf zejU2dQ_g|f;q&<9=7_Fvo{^MNfA}2=1akjcvSFS`f)*Cdv^3LNDXfT_Yn1HgsNfq(({Z9 zV*((XnSLc1<5OrmM5PsdZp8r%HMoF2dgQ zCz!rQ3Qym5NqC4D^fgN5Gqfm|V(DCdrzQ^IslO;r%?o=RXU6}X*;8XXLNq=Qkl0IE z1b$KhI$?Pv`G;+|nZb!oo*B#pD}gh%ax&&am}Ti+bErf+P#*CZs^eV+4(`~MGc>cv zrGchr52PkO-}9C6p^P(oQc6a86GjrL8!#ql52aCtCs?r~sbGQ%X2};Ou}9B Di*}kv literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/004_SIP_2.mv b/vm/stdlib/compiled/latest/stdlib/004_SIP_2.mv deleted file mode 100644 index b495fd3d331ac91db7311762cd6f6e490a210008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 mcmZ1|^O~EDfq{XUk%5VwiH(CpfPsNE*fSvB2q=gQ7#RR;UITIf diff --git a/vm/stdlib/compiled/latest/stdlib/004_option.mv b/vm/stdlib/compiled/latest/stdlib/004_option.mv new file mode 100644 index 0000000000000000000000000000000000000000..48244bcce9952a9de679fde41fb39182b39c1563 GIT binary patch literal 1178 zcmZuxJ8u**5S|%(ZLjU!+j|5WglG_5N?53Pg_fUiI+9H|>FzeV+Yr(qQ9(;XhXlWX z4)IeEH64F~8E>8$1~&ce!KNI7yu{`G-;#!JN*&M>@$8q`-T3Xd#@|=N#FM0 zwGBTs#h?1CE`B*Ge>>uR2xO7D0%WF1G0n8dMrTZ|5w|mrX`VYI@Fa5ZVvoTvEuupO zB?x|yXl2DdbV5g7@MACX!~_JqQ8E(EKK18&C)dVFTqLCM%}i%}g|vVkIJ~X%D-3yE1Q@-L74mm%a9? zU9a0?-?QoRs2iV($Mf#>bg$W;9W6Sy+pfCVe6@*t&8AzoC(~8CYR;8SyKE+Bp3D1e z^R`>hc00X4Uo71Ix?N8B^y;ALrdMF|O$un4ODrwXb&@v6v%@H4+ODS(#dNL2Q2aTD zH_OBBB;U+e2aBd_SA6l87b?dykSvNX?M$Lm2?)2iG2nP=z!n~A&^mM6F^l&CJOCNQ zw4OSW5wfL+Z3bmoeg?XK0ea?$7*vd9YgAsH zXZR9o#d#PDoWvt|!8P=YWFV`G{gNjSa`HziXvakibb$;=GM?2y0z_4)ZO+A~M2bQ& zS`L?im#Y7(Xvd`|F{}dIhe)1ex65K6l$_SDVaP;;bG5dG?P+ z*R`U$(uYaPg&z%AE$A94ijulg;~nBZ0a*3;ybBz=JVn=sZ`$u(uj6{J#?B+La@ ljGSzxqO{kkC3VJkQ+mDQY9on66?8%?8m4olf%0E*@DDepe|P`@ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/005_SIP_3.mv b/vm/stdlib/compiled/latest/stdlib/005_SIP_3.mv deleted file mode 100644 index 3885df5848da07fab902933f588e46c6a38fb005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 mcmZ1|^O~EDfq{XUk%5VwiH(CpfPsNE*fSvB7$}Gg7#RR;a07Dy diff --git a/vm/stdlib/compiled/latest/stdlib/005_string.mv b/vm/stdlib/compiled/latest/stdlib/005_string.mv new file mode 100644 index 0000000000000000000000000000000000000000..6be40110c9ebf78be150e12c801354a9dcc7e97f GIT binary patch literal 907 zcmYjP&2AGh5T5bBJ>JbaNl`&u5Gs{8L>zPN6L8>8l(yS8qTP*lw^j2vJPMD1kaz=5 zm3Rim8)&fB+2^n06+*vm>{dqs&V?^(f-CC=)TFye3$d^OPcs3pG5J~ z2qq&4kQT7A$UDV*(1MMT3cza4=W@g=2M|1ODX?qwJ9@!(j%>?nQdMOtg>}Fu^AZFa2WWy2yk=KQhB+}J|3d!qlyWr49&@BbjuU1p zgbkjBf#Z{zl~YSj=s_dq#1j2T_F(#<+cejv-42_!F%R{{(01n29$as?b#qDkWpzJX zE%o_ssC&0*F6+ltdu29FUw6Z7(+qXjtZ!ErH}%Drk(r*cf8>`3q-Wx~Tb;M}&E>k= z9nSan=c~OUx9L~)-FDcS+q$_PZo(mCK8|AD(Cx;nR92??_O4b<+tggL{|8E!Ynq4T z$NxL{jf2RAMN2S&5-XT5L2!)#HF3M7B7w+7M@ditKN-6wyTsgNgkoU23=BjYFxa!| zL>0ttvQg?p7JZZ?)m$GF-vXxr7AeFKAYfFB+?3-Wl_>haX(>b#^@21RhFsxEBw*_j zkS9128U+~cP0Q2q^jVY2nwBWS^X9A)-0m>{kR#Cqb5^lLLH0yVSgAP4`u5_EgBb-Y z{mMs0O1)t~@E>UX)<;cRz0>c>Wcg%Rp-65DB69W#H+9m=5lmsphz?5`xdBCyb@(x; Mw6S=a8My*~0C0?KXaE2J literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/006_SignedInteger64.mv b/vm/stdlib/compiled/latest/stdlib/006_SignedInteger64.mv deleted file mode 100644 index aaf806024f77bacd59ba19d2af4a4b05cbdc09bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmZXRT}s3-5XWco)wHSWvQ$?@MNp99YuPss;IjuP)y7ikR_V4CkK>bg0^jyRdkH7q z5Bx~N%w+Nl^PlAXWMvcp_y~+K!PSL~Bk$%(f8aRyLN8q63im#_AO<`Dq)8+h?jnI4 zKq8$gxAn*{t^qYUL|ROP2H3wVi`wS5b!!XT%n~ol^R$~K2M>+STAMyL&-1j&Uei9S zIveC=U*^^Ueqq~n(v*v|wnf&Ky$$DG)s`>Sn?t-sckjF$?mC%2hU-dmIjEM`BOF5{ z&I6zTqe~H)bu>-<34~0Z4tWF9M7zCVA(!!nIUE>nI74bw2?GWv>z7bw!yG3=1xoXQ q83C1HVjDxmNC_yjDRZ>L6{WZGM!yTncqjMlkKC*Oa!H>12lxis&o_+# diff --git a/vm/stdlib/compiled/latest/stdlib/010_Signer.mv b/vm/stdlib/compiled/latest/stdlib/006_signer.mv similarity index 64% rename from vm/stdlib/compiled/latest/stdlib/010_Signer.mv rename to vm/stdlib/compiled/latest/stdlib/006_signer.mv index a84a73d58a7f95cf8408216d8d7c5266707fc6d5..a2198356068b231eff637a6d6bb4ca591ae90f08 100644 GIT binary patch delta 9 QcmXRanqbISJkiJj01(*&9RL6T delta 9 QcmXRanqbHnJkiJj01#OM{Qv*} diff --git a/vm/stdlib/compiled/latest/stdlib/007_Vector.mv b/vm/stdlib/compiled/latest/stdlib/007_Vector.mv deleted file mode 100644 index 2caec61d0b8b115406fb1326d3b7a19ab8e72c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 zcmZ`%&2G~`5Z;;n_3S!L(kdxXA(bF{nXTO>K#{PD`9{u)42;o4W#9MVg(O+O`|G*D$-{jEzloWo+?}}4E z00@C7*-E9^Dr4Dd7jXkjA*@N*I*NEgo-K8^ybA1xG-jr0^aq3J?{)aF!$%=9jByXF z*dNB|L5wEB1qc*;&>;=lrEVNTKud|>DbTQ$U=q-etj(gT@?vRD%epRasNd$BtJa;BMY~uPO}fmRwl44H`KD^` zbZ6bFSmw9$^4zVO9yjZ}xM(laV$rUy^Lfwu?^NfT@;VxtoPAEJ ztLC!vOrK~UGLmLhT&(l9EOb+?SFLJp7L|`?-Y4?A?GBJ`dt`w@dEp^ri2&Ik3n|3t zI5tE#0+PreNJ5e`^+FQ~!VC$H)x-<%01iDGzSNCLK&^W`LB({MSB#EkPf#B1QcfQz zJw8RcWx?2Bz_l{iV#nyX9KSC29171X@Hyo*;AB4}@s|IEKi=aT6}XlaC*AK$ZaHR? z%%*V2uCtjAkOBk71CAIPpJz6>s0P9FV75hrB|~r+12Z-4;_*BU_Av!nJ~LDA^h>5q z9&t^Y_*SM*2nY{JPl8Mn5?*F_z?Jomuv))Loli3NpWM&rvCwOE$_4n1GVpd96si8R wKIso>d^y$AsvTOT-?I?ROqtWmsK3K8E4CjMOFPB3+0)n!p4H0|7KTv#1@N40u>b%7 diff --git a/vm/stdlib/compiled/latest/stdlib/007_error.mv b/vm/stdlib/compiled/latest/stdlib/007_error.mv new file mode 100644 index 0000000000000000000000000000000000000000..53b98bf71203294aaaf03360e0d8fdfc4ca2dbdf GIT binary patch literal 610 zcmYk4O-{ow5QY7dAE!xa%YqemKpX+F;uMkFOj}E-T{%t#JH!bPH(<>HI24y)W-KHu z`RRSO$H~0p^Y*8$gb=k9N~?$Rv8tcGrFm8B>Rr9b?n8e`+@>iMi6&c+D@mwU)Fg(a zAz6^LBpt~Tr_@SoQ9_I%)^;0Wg5k=J5$y2N!?T;x)a0F9pO$|MQ?dyfA5y;$vmaLE-03_5or0kYbLzvskJcYxbB1_w)8vBh2k;Jt>j+br z;|}oAM>|hgv6{V|(-Euj4Uk*pi*=*jjzCTP8&Vr?7?-r+uGw+d?6`Gy92+~0N<$k? zj2)-Lj+14_p|ayB*>T$JC`ul9u_|f|d83rfAQ==v)r$M|T`O-CeJwnwd9TP&Fq9ce jhAIQr;eGfkP)*HXG8l#?L&LDhuwZC2vg?T&uXrvIL1c4b|71y%7d57u~*76I^mM{1UVU>qKj*KJcC^-00QF2tgXTf(h zN5ioU12V)+$Xn+|H*J)4r1ZYs&0A}xd(yI-CqMSJrk$fsdD4{`Jh?&HwHcn2HM&*q zZtiLDtKY)p!^R_PdgEJq?uaz$yjKsj8b<&3?zN-G**Kb7rFEF5<3piSJGC{|`2Ffo zbE75x>VFp?NQ7^M2BAhM5kjRxC=d`KN65G}n3v&yH@q4F5tx7xSwa?(C*%=DLJ=Vo kWCXVr%SK!_a8aF~Aa^(%6)NGVMM4!(CoCeGggQd}0Qcxk1ONa4 diff --git a/vm/stdlib/compiled/latest/stdlib/008_features.mv b/vm/stdlib/compiled/latest/stdlib/008_features.mv new file mode 100644 index 0000000000000000000000000000000000000000..aa3d05f2837b0483023a65895bfc9a7c340afe0c GIT binary patch literal 6969 zcmb7}*>c;+6^4NZK!5;9i88H~TB&`rMN1kl@_4+AXSY53J{S-LDOe=H0YJ&hRjN|C z&Q%^DPmov0BcyVXmq=Br@&w5_-HjF{Q?dhDzdm*!^m4k-0oeXaSt61msfHwJ@SB6r zl8$1ato7C|fAoC^t}UqU@m5P;Q~@qU@pUqr8K1 z8|4nlU6gw$2PpSZ-bHzU@*c`Vlt(C!QJ$c@kMb1d1C$R@K0^5zm0~8NZ+D-hw?qj4=6vP{Dkr|$}cDm-uo+(i&97NP#Wk&AE}Ab zLODbUP+p=Op|o|d>mY?F5lR>3H&GD-_vK;KB<0k##dKDPRvjvX;*&IcfwJITQaWGTcFAxQ{40F`B-c z_F_NL{5X!{ToSZGKh7QdUK+*5Q(igr!Veok*vdYyyY(neouKJ-dhIlTo1CtD+K$|Y z(+QG}n|gA5)R_wQ2XwFGOx0@VBX_8e=^i>|$9Jd=}HB0Afg2ZuCr|r8* z+HW=Cw%gH(bKG(2LFmS(PBV(3cjtKDbi3X5snZCW&4Swt8luZ<^|pKD*XmAfZ$Im- zQg0_aHRsmt9VbcSo<|*$RgTxg+TQMfigLZzZu@CBj-sY$zU&>kVas>8Tb*XxZ6(z~ zg*a9x^k1cp-;KP(>47#unEG+(wx_+Q;X4h#3+v#A-l^jq`rc7C#G76egiabc&0g3F z!0V2iBz_8O(Td$Ph(a+Oz9_R^1Vi`0mtg~Z1d|Txz0`MFZUUx$vgSn{SjYr#<>PAj zZCphx=|)jI>w3bALa!Iceh7_Wr@|8peKqIDB}}S=OzLji4Lv{WV5-k1jgI`#fsMka zVL)B#24Pb1;?r&#!EC#Sr;gih`SsY%thO6|(}it{4(e-6jOjv$ix+1~_gEX81Obq> zxpUE|>&9u|ww+dVj0=VnIF9=77{74GnG?YOU5pqEmy0XNCpzYb2?VLrjNOiZ62(Uj zi_;P;7Dk>QX9L@A!MeXibn^WVi5q7R_oYwUR8NX>0E8cd`Z!qI4_j?u}l|EbC>Cp)!!>n?PRlX@O_!z0<`nDSn z4qm&=+7h87Hsg7-mCMYsJDsFg}6F8lhCr23f3C56Ufi{2SpSJx39xa|1 z^+HHp{I+$x?X}92AU%X&OA@FNrgS8kDdbS+cSi%8T*M|j?kgv%zr@5F`YfNYJkI;2 z8@>}YdXNbGV@#>MVu9Y>U-4RMr~6GjjW5oqN*liXmJ>c#LfA*QmAQ|ZP*2Rp%u zihyJ@hIfiy0;%A_ylDE2eb`;ipoIyV?vch(D{~P|Z{Ufj7sC^w6-T|Ua0*@2gZ8;cL*9;Yjjc5*bNicqfdL7TuR?kUZoI0m=*c*(?#vKOaj<{ zv?q8Py|%sR6Jo%d+7!Io@z;^Fl*^xcCe(492jqJ#dlza)r*!{vi|gkDotKVh!6`z5 zS8TslF)+Zh{x>r7D}p?;ox3#9dEe!8LCyNftM@rCOvaWZr~#Btu6IO`s+D?Tdnt7U6K#D=~#+s30`Rf_)Y`g9WebK!)_i9Lb|aXH*WPX zzV#TMg>m8+vI-b#>YG_Aj+!M{yzJWwd^-yK27Kr4zhuRD%0DZ{BSCODLodZB2-*-d zE~qRBzOB`k7x-V!; zP+riQpgBRaf~Eyc2$~nPAV?K7CTK{|JweX|;gJtsim}Q-(y}4*&k`J~z#f5L_)8TJ zbl?tMDm^DM5TITPSI|l#2AssOY8k5GU>9$cc9_DP#)Ur(` zEvl1Rv0%KPvlUaa6r}5*yOAM!#OHWzg+6B*my)L zn;WK7`b|HWS96*LJ%DH875!jMRy zZLOeLvPDX8R%U4<@|H{>kY&mKdT_haoLaUd{r(6XXlkR_;lVnbxY}A#woTy-@C^FL zFmt9+Rd=;z(=>CB(94>ol+n#+z8ST1+Pr1TMPk#VV(L#@H!Wx&Z^A)bRehm7GA&bw z22^N3Eu(XF;oMPM*X~;|2~8$N?kgR9HN^co%*#wDD{;1fN0={1VJltZ#Woa|ITwJh z^CmD86y{7hm!-Q&TiubZv(FQ^ZouSVLj>QeN-%4N@Yh{u!%MUe#+a#B4ms= zUWCTSIS&C(a4rE)avlMm;yeso;e(;UX3%z~6DM0)Nj&SS3I3!g(nCk@EuZPn;Klf9AXl{0mJ` zLlsCQ(=;PZ@QegG1M(515ts@~AJ?^Uh#8qCl_@AE4sT}#+WD39DzM9W4Yrc3G8#;0&c?M4R5|Nh^6g^MN?f;N3{_X{)gsC5%a30J}%mtMbxUPL0nH++I4LM taOc04GF^dBq($9ikVD>M4SEbX?*hN%ya#;5ZQH!;4wQ8`mw{oR{{vP!h>rjO literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/009_ACL.mv b/vm/stdlib/compiled/latest/stdlib/009_ACL.mv deleted file mode 100644 index e596988f97653d0074b31d3fa0c28a5bf8ef51fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmYjOyH3ME5Zv8+_#RH|pwLm!(NVjN5EZo0S|&b%MPf&`6TuHqQ>CY+;uH8Eeu8x% zQmz=y?#}K=b023vUITzf(4?hsGkN3G-7MPS+PqP!cQkdMq~kAo$I-VS)*>)Q0D>7v zVo)RiG)itOzGeoAvH}5}b3ooBH#EkKu^ls-BxOTmj5W@9Ly-Z+3Pwcab!O-kYK4ll zv!E@Ypoke0M$$^qe@CDNF}u3e*KOOhoxTtAzG+2KmPyfdq3!c|Q};zxcjiD;Sgre4 zw+MZ{-K%vQR?RlZW!3d*Rd0)BRpv#z*sMa`+x4b<${&jPv#IJbyyVRzr*QmGm_sQH z=kfOlty4or(bPc#V~pw2QwHbKsl)?DFo`ZaPdsKw91)=PTuewRWg_G$4e6rtkn(y4 j#F26k8Jz&hfy!YrCB=MndTb(Mac~*#>|I1AarnPqw`(~% diff --git a/vm/stdlib/compiled/latest/stdlib/009_bcs.mv b/vm/stdlib/compiled/latest/stdlib/009_bcs.mv new file mode 100644 index 0000000000000000000000000000000000000000..4ce6cfef4da29b33bf3ce102c851fd101e4fdfc5 GIT binary patch literal 76 zcmZ1|^O~EDfq{XIk%5VsiH((mot>YTLq>o{hXp9g$iN6hY@7^?TujVK$;BKc`SD4W QC8@nl$gIUTG=cNb3(WvrpR0U&LfZAP^8i zoIo^703l(A|%CYgbbz5(S`pMg_vX9JjJ*$po_W kEF+?+`GW;l#1%p$4V=RakML4Zd=P0x5(yGsJkyVT1Fn)<(f|Me literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/011_Math.mv b/vm/stdlib/compiled/latest/stdlib/011_Math.mv deleted file mode 100644 index 2d856ff65174a6b7437c74f959fea73593244c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmZWn&2AGx4EEp5ZtSTPB(!W+;Si+u~20co5zJ z-T^!jTN+|%?D6OE%x8PP4u4t%fD%DiUdd|-Z;y)0cjY(i$L}~yKkyfO9D#fRlPh6Y z0R($3i_=g#EcB?_rN{L7z=0ZiZaX?J$5o%UB=V%539wJ zXSWx{e0_EH@zX6|FYe^#%W}mx>v_38YNu!O*?qBobDV9wI{$p(dG8m?<>Jn{J{FYz z@Bf6$4#@1Kr!a+t22aFr(h%m74i%L~5)DWp?~>tW*CaLv21)XXCIxddNKsistyCLp ztSc1@b!B3)Hfk!$T`R|}>n%xSn8aX`SS3$kBl|K6$$k3k4`P=$l4r_B^(2v7cFXqf zT$3aeMwF-1d#TX+fVN~TeS>xja%bc$J1k+?dw9)zf{DU`f)@*IN2fd6?37b^8D7X( zUWDh$IZ3%Ou69!shuY-W>nHLr13KIcfgTar;pvxqtH)A@I;6v=qtUa_?xupcWKO> zl-V!&2PZ!?<#(Egohs`)Y;=be&i&uR&)|cHryT7>HQPb|np}(CSb=7Wno5}qKQE6B0nZ2~t1 z!xO)NlD$Cg08|bv@dfbgiC2z5onU$nq}iO=6jIE@Gb2jzRA$aHR7%fP6mf_w9O%3$ z56Dm^lr_Y|Vo+zo2#Q_aK#6#41SxMDsvOGLK$(zXC}ZKj2T+vh1yauD)S016^AgB1 cG-GJK_^+jjE96>IXQ8P~8ZvU>7CUG83!LnKcmMzZ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/012_BCS.mv b/vm/stdlib/compiled/latest/stdlib/012_BCS.mv deleted file mode 100644 index 6d70b3d7a84b1119fae93a5fdae95ec26cf0f92e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ1|^O~EDfq{XIk%5VsiJO&|lU+=LLr;Lmjsqyl2!sqwObm=Hj9g5Ntc+}&49rf> i!CWQz@rfxZMXANb96)ALWl3r=P&G0D>I7;7Vg>**T?=mj diff --git a/vm/stdlib/compiled/latest/stdlib/012_system_addresses.mv b/vm/stdlib/compiled/latest/stdlib/012_system_addresses.mv new file mode 100644 index 0000000000000000000000000000000000000000..a0f6dd3b915a195b49bdc5e7f4f6c17ae332a340 GIT binary patch literal 1150 zcmZ{jv5pfl5Qgos$M&u#mxMc^oD>Qd2#JD*f`)>If(9W3v{7{NodQZ0c|*{3ybA9I z74=m#%;d5;?iO79JO4Kxd)D6lKK&J)Qp#)PjC+G0PW;E;5Pq7GyE5N^uJ8wNS}Rb7 zRasy`5hvD*1d&SfyjmoJQHn$cB1a-au2v(CV9YD&d)6xLNNLnsn~LRnjM~d~lUK9( zVo`G2<`#1)O>yn=Vx7y$oKe}#&YF^EoNvCAvpoG5>=roPC(p}#mA^LSla%GM&5QKk z%-z~{GcRY&ay>gNQtfNEtJ8~or=70)zGV8PlVy9m{cipPP8>EkblGK(IooyKF{$Wp z&}EUc+tpyF9jo`pI&03ypL1C)+jiNkXN$aE<^^B!-$R?gm%1A!*h9p(xM%WJ$iUI{ z^IGfoG`UTf>mGp~F+E~?1bf8wi0_fmBUO*oJtCjH(l)B`(O82P6W9c6(R(!>J_7j% zcC6YlEzH~$0a!8BZiQ$Og9n*{T^a4lj4&q*yaoOXB|wnFm)*ThP;rd!YBi451=3j8 z%DY55YC8-Bc+B1>f(UjJ$l#QHNMxe1DUij7?5jjJTKhN<;uH3DB8+IC26Fg}eN5z{ zv(E#0e8HX)`RMJ-KmlK|A0!Gf*w=w7e9LVeC8}ZtHMeHsO>6SD1L+K6_X3!J_Awvj L00v!Rm_Ypj?%l9a literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/013_Event.mv b/vm/stdlib/compiled/latest/stdlib/013_Event.mv deleted file mode 100644 index 471738d28856e50121299408734233b044eba0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmYk4y>8S%5P)Z9|Lk4+&Q5$(6m$_tv~WbC0Y%WFNJvzc6K@hrhkaW665T^kQBbFe zcod!m8cG@@#?ApZvUYy0y;v1$vWi-~7px^uRp$l%>ep|Km$`^a~8_!I|z^wND5V~!7H8IwIY=+X0HSI<4{Z)Cn zY3i)?H}}CEmajKwt7hE&Tc@}Q&EU(S+i^YD_U63Xw1W?FEF!DA4iN)q+rjs`TCaUu z+cD_-zU(g2wj0V_U0>(bD)_42{*Q3;_XP#_ekVk!m~nSTJy+vIcu>m0F^`7l!cK1C zITXBL;cy9)!SlP92M(U$f{49nVIiX>Cd67SDZx<}`{-OOQgpNw4oM)N5N8hZh)H~m z(kN>nkB`O&Hi^S0n9~a&$;ZWq_8?IuFQzXR?ZTgS#{)VYP#!79c diff --git a/vm/stdlib/compiled/latest/stdlib/013_hash.mv b/vm/stdlib/compiled/latest/stdlib/013_hash.mv new file mode 100644 index 0000000000000000000000000000000000000000..cf85df05f86d2aafbf9730488f7f6c0dd228cca1 GIT binary patch literal 90 zcmZ1|^O~EDfq{XIk%5VsiHntonVnypLrs9ki~}gj2*eCbAO;r`OGaXG21jv5qEWn& XsTqi23}S#(AOS`OMkWSEAZ7pn&WQ;? literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/014_Token.mv b/vm/stdlib/compiled/latest/stdlib/014_Token.mv deleted file mode 100644 index 82d9b31f2b9620c3156ec13b295be7cfdb185ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2397 zcmZWr&2k$>5T5Co*k659zs0Yb24C&3}9P*9NKK<--`@7Ug0(wfyO zj^Pz}36A77sLGjl;0D~OqBzh!`iaZY;oEPzd-`v>X7o$5b1=7$Ae5yogc2%8?^f*&BZD#RBxVcTfLPFO{}%&Q67}ZJLx1IilQchYapr^CFrT7KDM&aXl&yH>W#Cf0E-jhG^~q)Qu!j! zhI)_`$JW&+NzroJi-irze|}J%ey5=do22oDT57Z0CN}ND4)T}wVkc%|7wm1jYoq-H z{T;>!$$ps^YIK4}UUhZFcshk0jr3%-k4L9oCjGGuDA%+|P9=58q~pQh49mCu)Jq2W zcvz}3FOz;?hpB70M=@=xM`co!6Um7!vOJX(!3^?r+_y0mDhZ6+9lKD*rE6(IN5;+3 zSIIE#TjPddBG=PAv0K^>vNCq!YBodoY}C9F7O*Se)di^}_xz z&am29(e9E`o#US_BJob~I=8IeRf@bYas^1cM1d zb~tDKIm_nkc+TvU0pDQ2Kj0kTLwPgs0pPa$NC=R(<;U_9aYsl}tEt)peoOiwK2>)$ ze5N4)xh2=-HeL&X+9BjDl2H(Ok%;hxU|bqz_#Vc1yTDlV&IEWPvBt^+)b|(&d`5z9 zx5q;jico5KAMo7Y_pd3IvTdvqJb^E8I3f;sHWfKJ;1w*F%vpl&}&|Q3@@O{FI&9Gew{!ENzW5SGU6pK64mdrnE(o+>*G}bl&uX7%(Mwp!pArx9* zcKB{kUaYM-<;AyzW|$QiiFv6WhT0LJr%~?#7DMgm$(~xn&6JGK8`n1Rt)9^uQB|de zU~AwKwS=pl|9~0*b!?iPH4PuOUH}beA&^&~i7lnc!N*ubi#%1a84?rRRs>$lux-Bu zi>SJOTXR2Lmr7yf+^;mQZ+d!Kx8ZjiH$v$7SSB8i5o@xex@2Y=>zkTYcK9Br58Gp! zz0)*Ju3%!?chy(%=$QdnqB3L; z|0Y00RP=Pyhpv-iHPC`(;vIMDnr}#7(c|m0#wKQpdd)j-5)8+)xawTIlQC)n76^|8 YAei6+pE;Uh9s$m|U*@LsQK0)te8$EXTct2S;GlsHh6!LIBcCA6GC^yYWa(RE*@OcJIYV#> z3?AX3Nl<7RWcntFK#;Eu7C>lIV8tPA)g`gkuqba`kaI(cYeWc}ByhXc0)5Bx8ECs0 zki6lMSDQmdSt$tXz&ne`?)N#k;y%ZAcq z|D`O7_(XBpt)zaAf-CcPJO61@AzwVuikQ8D9)26;A$jwhuof>}WJqtTS} zmU4|3ywO=j9KDy5TB7l)DsfMN=OtVXy)$x}&}r7piI1;sU1%X*+Z6$)%=x8(D{12~ijNbqlaE`K43! zxaWHCv}y8P&Co5A`TiXT0?JY$tqTqus-!s%r#P76kOl+|4A%xD;v$TxY3 zPyqD^0plRxT8Sz}MA4sGXR__qnWiy~%AK>WQM%skjT>iL7t?vRoEM9#EQ)27&1Pk; z_24mINv2KI#HnJZsQ-j5 z3nYF7|9~AEgv6c&zknTQ+&J|WiNvHnJ#)@?&iUqeJoDq;-^v02MW9NnO?LJZ;lC1B z{7$s|h5jk+ADp`Nv-7F*mlL@EIDc^Ox0=Bdpum8G01Ko9u<@x#upCJM=u3(c6r#XI zAb5y{D#D>=L>-;r3$z6miYLqwN^2Q9(%4L9L}wv|XD}*p(i@o~f{p<>0`G zj)k_a5r>A?5en<1RwrPc`Y7315CA`~*}z_)Cf-8~eculWB^TSsuj#eCmS~CtzY`LN z62;JC1F?xwZPY2T@`vECFbzJIjZo%L^IOgTz1x*S7E_(E0I9HjK;I+LC?oGk5QV<$Ahf9 z!M@7X+62gsN^36nJXuVmbkUFQ@6zrD$m+#kYyzxndS^2@Ut_oE>2L#`gSCJanV0L` z>!|E+g62d-E_pIbG*4$!T^~Q~;3%HoE~dDXPTu+Iuv4qui(4?#N!*|4p;ttu8Gc@N zI*PBN%j*xlxA>jt;nzA%<69jRUydF|(H@RwygjldZDi3wtb=5||0v3c7n zTyM=_oOQ|$cD7AtFO0J8n$3stOWofJ(Vn;p+;e8GXAZ4DHLm6Z`Pj|wylrMvZ@ck* z(=E&Coq%@N_h0Le)^zR44xf3))_Z4jaQ8rU^Z#D!=jH3NdRf&cXJ>E9s>-iT&9vS1 zd{1B4TMb2=T|p72H#2iH`^9Bl8X?z~aE1I({450pB9svp(IFu-VWOajHEtj!4VsRC z$P0rad4dl~EVi&noCu>MHc!b110UQJMmHSGJZ^bcD~csc+8 diff --git a/vm/stdlib/compiled/latest/stdlib/016_guid.mv b/vm/stdlib/compiled/latest/stdlib/016_guid.mv new file mode 100644 index 0000000000000000000000000000000000000000..829ba6f14f0792af3db91a215b8426cbc1d17da2 GIT binary patch literal 432 zcmYjNyH3ME5S-n6*>|=QS%!)R(NOaZkx)J$wH168G7`3Mk_w4`;g9$PYN!zf4Qq#x zY;m(Qnpy4M>&0iV00M!T6XmbX&6Qg{CvP;j@8tal<=HpA!OKdiw};@1u^Ai%N$ zoHjtBMNeGf6tSM>=x= literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/017_Option.mv b/vm/stdlib/compiled/latest/stdlib/017_Option.mv deleted file mode 100644 index 9a0dae2f25d1cc22a2f2e2ccde39c9a13bfcb2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmZux&2G~`5T2b~@2+?4#Li!f#DN>P9>Mg^nH$$AP2JWau_N1Q=|gbj0r~)lBPUMq z20R1@B*YuQ%%&}=)Ri*(&CEA{_Bc0Be|Zf6sQ`^y%jBa_H)0lj5g&y4j(>&yrZW9Q zP25jq{BMQHAN5tHpDYeOTckh%B#j^>LC~d8l8h8%ts;^}v)gJ*GLEf4aLCv@wkO^S z2`Mmh5aiHk!kJ~6J7S7)k^st-Qlc7AdYoiLN1d~rjwlVzCPc)8DdR&kBKgFU^ft4( z9oeyUc4DV?W)JM4721P{L1_A!9W*iJ3y_UM1jr-|i0&Qno<=N*+QlHz1W9qM3Kqe^ zi5SPgW+nw@umn;JY}9WyebvCY zs<+Fg?iW?vC8uTAx6SpuZtC)0>6&#px%2GDneu(#E|$GIt5&P*yzJ)>yj2(S7`i!y z;-o5|?rO1-m*q06>dVEdI-M`t^Xw@-z3y?Tu(8(kQ7f!n6{A5Fkwv=@hd?3 crwFXVkuo6VVESl_;i2*%l3Ss1==E6m2bEQb+W-In diff --git a/vm/stdlib/compiled/latest/stdlib/017_from_bcs.mv b/vm/stdlib/compiled/latest/stdlib/017_from_bcs.mv new file mode 100644 index 0000000000000000000000000000000000000000..c7be51ba62eb5da519ea972ac9da5c685ef89441 GIT binary patch literal 494 zcmYjOu};H441M-pE|*I}TfxZ0!c2jxGb1ZIQJSVuQ4*A-LpLP;qY^*BjKnAL6ZjHE z!i(Q~e)h?}&-35d0B{7&S}S{}@6UqAi}0O}WRE;GU+j`^{-DW^(qJgEA)rA71j1pU z0Fi)5WH?a~i;BdnDJ*azB}}A5()_ zA{fUiuMSC3za8?`uFQnkO;f*StD-e+*KDgNH}FGOwyvwQe7$bUwhaZY>Uw8=_BHd+ zyCdO4pLgu9=1bG(MNj9qi=JN3`?R*2W`qHUBQ)%v>ZgYsjnK0E L>YzsQQ6T&QX#qx3 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/018_Config.mv b/vm/stdlib/compiled/latest/stdlib/018_Config.mv deleted file mode 100644 index 5107abbab8fb7cfee4f1fb8bcb631f398b9551ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmZ`(&2Ah;5U!t|?%D3y|8;D@Atpi!ryT7yG0Gu|lndg(1B}MIZF{8kjG38@v&Wn{ zbL7AiaOc1k@dSty4}f?Fs(aVL0_Z@6Pyi_!fJ6tYRj?)#OAi!k zWHuh${5j#i&GE4(9iaFzmOhP6dI4MUTWMb8a8Ua7*_kj-w zQXU_QOCM{8nje`V0w0Z(*iR-T_VHkf;B01xJhl_oMwuzkc#o|SZQ2p`024%v9*~Kv zU^C@=NPrm34Y zdHLE`o&M^kE9**sU0znc8E-RQTou)&kMRdz*30r@v%`y<;=Ejy-RAKB;aBx)>6>A( zSk&vP%Zuf*@ol@mh`hOfQ?^}xzPZDXmcH$pdXryAj(nH4c*kEK=mvf zV@!5Nc9qH+zgK^rqiG#VOG$QFBs17Uw8tTQ5%=lr{!j|uA z;WN(2(h1E|HA(j62DTbW6!xU7eAI%<*?|ouL#l{PlfF#gRxh1F#ugnP^PWh~G@L^9FVs#lUW|6bOm0;(-U?;DPv1zJ$}l z!Aa)p_kGiuCe!WZuTucfK~SWu=ndq9%3iMZ=N8Qu_3Vy}+Y_~aXw}&X+5HysWG^HT z2#}CTR7jR5C_q%8NiZ52v6V%XpctJd#&+^MhJEa|EI%oY);z)iwg3gDGjh_2vZ)NB zL19Tm!D&g4i=tjuLDiEFUxduBd=4TK8>q#=5@N~n{MeBp{Y0dd$OgU zPlJt+r(XH^`h3@`{Q4k|w=UMrH28d8m&=(yRzjUGLf!cOp~f-|IGBdzWE1>?_xV2% zh?I~9c^L>Gq=O;!2_w%O-16p#q7V*7z#C+GYGH^YWQ4xM5nUywxRm1D!2r%k9=nD} XnTV6)SEg`q1ElzuG$#kYjWV5oGu2GY literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/019_ChainId.mv b/vm/stdlib/compiled/latest/stdlib/019_ChainId.mv deleted file mode 100644 index fb643fe958323bd51f56698c3d8bf90eb0721d75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmY*V!AiqG5S^K1H_0ZgO%YFCau&~?OIxHD1>-%eWN80O1J^hd4vAz!h$v7d!E~iCaSq>^OmhV6s45fX`xBBOxK7Y&gKk*po2e*vK;mtkPC%;Go00~f19pU6uy*|l4i0{(;#2>A(p=&}Z#HSd=Lr{47wQ`@)Qx>=rAo32^3x(DjX zYT4SS(>HY}@buYpHRD3Rh*UqXUvAE;o@&lk>x*f3KjjB0KTP@2U^(rYcXid%#{Zyd z(X<^dn}zFE$?op1s@^x3Zt&kA(DEwAhc9+lVX8pNv4efyxosh(I7o_I5&wuDgB0Az4S{ve zl`LU6;N|v6V$YVsOTt2yvS0Nv4>A%Yyu$(35v8 zazs97QtmBfq{y;Nm!`CAVhUaI&a?2=Jr=rNNXn0V!E!@H1&#dBdnS7t`T-jbd`^Zm wo8@ekmsI+4z~-*7Wg#_4F#NH689BN!FL8QN=WKY9f)0TwpaDgQ0?X^2-LvAgSN^zg z6e!Byk%p2MK~GPI_zx&3=n#JZZ@l*2;oFgj#7Pk&c|7xb-*4Wt=i8fq2o3-q0iXH< zcKE*aCAX)aINy_>EcZ`);6La0b>c-P-Uq~{#eCTUdRul z63Jy1WmV}ko3ax4{xm*S(>hhbJSxMufnC3zN>E%$a7RmquJ z?`5W*hARza73j^`LTf|sj^=4TiPCVP7I|?VE>#gu&MSq~vbt-aJuQ-!<6x0wVO2y~ z8Ld3fMrw4f+)txouKq!b>nfkk#*M=`C2`|YXYpteeU&WgMVQr#33`#w8gip-Pn%g5 zNvs+NJ0p82vH`xO;mb~yn5Pgm=)lTxCym*`3}*9ihQ8;;?o`d9I<3Mej`KRJLM^p@ zIlCz6w`szq)OxyvJ4qR$?uz4ks?I!ooknS@&i5ib<)RAbDpMt*(dytw%X*R~Qzu02iY`}(W#CF&&yTSI@nC&w{=>a=rlrrC^!l$ka zjFKal>b`K_8gk3lJ=P3~-NO-XHv$`l!xt0XJRlje4qQp>(a@1Z5Nqs8Y99=77Sy^e z7{}&m#=d0SYS-NB7N0k2usPQYwR)IV~Y4UomV})+pYy${{Ji9rr{z{ z|8cx&TM+$xn(UhJS1tc-Xd=>r?;w_2}c{ z6?_H%xs~tp2L}GmT%Z5Cr_(r?fC5>H6Ujavi+87+!*?boqfef0PVlbj3M&WOwx-!N9 diff --git a/vm/stdlib/compiled/latest/stdlib/020_debug.mv b/vm/stdlib/compiled/latest/stdlib/020_debug.mv new file mode 100644 index 0000000000000000000000000000000000000000..e9feaf27f9bc9696ae70d297d6a3664600e0d7f3 GIT binary patch literal 260 zcmYjLIS#@=47B&kSr9}A1r4Gm9O555AljUYKoLqdyoHvINAM#)fj6OuCEMfi*qYbs z8z=zq5EN5_`%AH5avL~t={|9$-na-qxF!VxL+$_wLLe#W0I4}tn9GP299_~W56}ad z7inLq&a`z?g=0&4Q{Osu8M#KA`cWiz5}5ga=#0*;iD`9K$YBu;HJR|?@R%6;m|RQ) jedZ{gW_eLsw2SwL;|ai;V`QJqi2%+J0poVy5fX$SS-CM> literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/021_Version.mv b/vm/stdlib/compiled/latest/stdlib/021_Version.mv deleted file mode 100644 index e08ee09a6ef37ec68ff60f622e9c1996049720c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmYk0OA5k35JancW->7oLl74ty7UGv+eh%URJfD}ag9z59sMk$* zy%uj50dNG(TB|tMGd6Q)SL=A6M@^Chliru(C$Vf1U;!Rn2_Pe8naPl%7&Mac&iA3| z+GyLg$EH@bzqr=lit87fb9w6eOlWa<6lGQQJ_I@ZFH*7pWhSkLZ)_blNGYQnQzju= JIZUJq@Bw@68Sel9 diff --git a/vm/stdlib/compiled/latest/stdlib/021_create_signer.mv b/vm/stdlib/compiled/latest/stdlib/021_create_signer.mv new file mode 100644 index 0000000000000000000000000000000000000000..a5c1c0d310c291e9a93b11e19833ffef9b8dd2be GIT binary patch literal 204 zcmYjLOAdlC6nur2l7QN^@ovrIQAm}vrhVwby+?52&hvQ*!MJc{GoMT{ufw~k06+^U z%0ekEb#trl!n6+|cTZuUUMN5)(P|`$bKtg{BAskC|VhLS^eHv2KSv^@NWfU;QqavDmI Ipr8T`AEV_onE(I) literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/022_PackageTxnManager.mv b/vm/stdlib/compiled/latest/stdlib/022_PackageTxnManager.mv deleted file mode 100644 index 808c7b66c8813b69566b40e319803db3f7a790b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3175 zcmZ`*&2k&Z5uX3q-B}R30QgUegd~cRNX9a4*+}F#k!7V^<+!3ME4n19trf5UHv)GN z03^j!zVFvcIGcz|1pXXVkl{_ z#z*{%e^K#gwk7|@{!8^=#Xo%Sf3-+`v(yj%y_AH1um97l{b_9j0hBPpi6D|FqKQZR zkdVLwkR~L=e+{Th(Ce^AnnsKW6Ve14X$gpB39+IeRyD*L z1Ijvuw!wkBNqs`LIK;LUx2)K)VwVPlw5cKFc8JM$Y7lpqAol7I_acb>m=pDwQNlm+ zJR(1CEko^C^@n_g68WRn8YTJ(((q5L^~amAdY^jRg#P3fr&|1Ums7=_V!iY;c86;D z?CvJz;&Zk~m3Y1fC;izSOk8hnHn*DV8(SMY&Gz=~oz0EA+k4)}Ujs3)D&LWNRN4jC|~yFY|b0SNmKA433VQhS_wnktNZLa7Dt30I!B zc$!h=6D2*SJZTNm80rb*Q!lXDd;*7d5CPLL`vf4KfNq@5xlLezD>o;MR=x6VdA6yW>H z;>}B<&`_KLVF_Z;S<7qNq7`sE?_XAAU0~gOf0;cX#&PwFwCD}9rRzPZ&$lxpWH=wA zbSHY2CSaa09Cx!`FpEpdev}vI=`io1dxNu6q}BN(nUtqlZSKIS zoMxgZi%h*PaeyzPqD1%d;V_?M*kErGjkDjK10pPdu}z+>r8z-6=LMXdu^_YT zbX#3X@p%C62U(F#kbkzk-8qv%Ka?w}s%Z;2gK#WyuruyPHm8G3PO8GqPf0c0oe#ec z5qI9=kK&g2^*w1#+&h_hxHq`cPOr55O8f1V_U1|(UTOWAh6{?}qfQy4R=W>PJn+~< z_vt=x-`XSh6~=`3IRDnE7oCFfNAmrE9dpSz{y*TyTrnC;&BSc@A+^^p7luTnWs`B- z8C)6?uO6tF0p4EnjUDF?X+YyZhiwtanpW}JzM&6!$O0D84iU?8!!WA7cw@gq4Xe{- zTu?TA^^<_aK_~*D{kHJr6DR$XbTB#jf15kj$oH5pTuY zd*V>Orzs2$#kMUCozvHIfQS z*FRW7Iqk0ODsc6>d4?U*CJj}nLy02D4i^WI0t+IB2O<(J2-z|sQZ2usJBTx?!H>8+ zwlh%T*_h!KU=@K~_cjOCuK(Sfp4VP9r=3WBWdcExpY=LXj$>ZRiCKt(1BTPvYJq_DBBIm+@K zk41qUsN3J*s95T0FT`nr9=1b{l}27DWD8@{M!XQ~9$t9c7zgc88tDj6sMg>&&dh44 z0tFu9krsG&#UuIHz$vX$q1vCqtR9kjuq;0d(541C0?{qCe-)69ADSifrxS!4PSsFH zD!|*k!O%ftNXIxX{RW7}voU`J*aIrcKsjRiVTebh-w93Fslmg=AK>9l9tL3zo&cVj f^C*NGb*N&+6v1gBno1%mzBx=Yjz>2~UCI9e2l+su diff --git a/vm/stdlib/compiled/latest/stdlib/022_chain_id.mv b/vm/stdlib/compiled/latest/stdlib/022_chain_id.mv new file mode 100644 index 0000000000000000000000000000000000000000..a016f6e896b3d758e236dae8a865557f2b9bc18a GIT binary patch literal 248 zcmYk1K}y6x5Ji7glJ1a1CNm6(;6}INDO`C4H=#+lV>3<$x*9}1f@g4{XAv*sC9K}f zU;X0qsrSDw|9S(UC)8ZmRl91=JA3uezK`aEHr*#R!#7=@{SdEyi9ujgEl{gN!vNVz z>%?pZCNuPs=V=#~AW_=+$;D-gew0_q;V?PxQxFMa?@Ds-t6j)lTw;#yIlcvs{=#XV x@+8@%`Kay38r+P&rQwR&0#SKPmnF^ilu;yMjZg8voMgPHFDsun; literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/023_Treasury.mv b/vm/stdlib/compiled/latest/stdlib/023_Treasury.mv deleted file mode 100644 index 588181223eda01e9e54b8b0a84151ae90836a511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 zcmai0&2r;J5T5Dzk*tv&TXAg1`E@p%u>9=8vYR-|!X99&IKYWiaa1WQZKA@Kj3g(7 z2jCI70tc?V09AYEM)4Y4_7UhANzPJ9WnJY~Pxsfq)0)w5>;EcA2x(H%g4P~;^bh4f z!BG4Pe^cuwsJ48i9y+hp1NDn5-QV4xW%Ez3)%we8p&=ze7~w<^Ni6hayA)-_ z(1xLoBvNve!aJNwN)(}#6BjgXQiim}HNPY@ZA(o%j3f1^g>>0&Anh8uVrzWQ(7q#) zAJ`hRYUof2j)6TDVyCtAQklm-UOO$^2=UyO0ift!_moJB!C&o1TjEK9RoJU@?; zf`1(pXY!l)G>NjtaXgLkBACv^ar#}9xL-uGG>;1d9DEfgQILHb7iVD>TznqPf|Ga> z7nk03QL`2q%grDR{fV*mFDi5Y#lpU?)i=nklVB1gFCr@}v)BnSw=BK9#noC3xxt+Z z(?yg<^h2B%xgQjFPov@%hyEt zqs)$~HM7qa-06ag7u?H=BS7zP3VfGu^1E!00kEby820hxu=zbr2?P2r_rou-qIImpJ4T*yi@bI#B%tMLvZ?GN!;Zc%?T6&V;mBXShEmPr-#2 zDqZTp0iLNI88Zb3c*TtI$kL%KMV{b&Ln(+V@)P9oo}#e2?~rTpcDWF?#XB4O7)XiM zRUqmRhw4o3@`2dEGtvS?IrIP=;_})9*aa%O;zO-m(dtYG&V+;TG5x5Nd$(}*uhyq^Sc+@-OP;?bJl-&`u zu1S_q(ik|p@bXvINlXPdG@&WlrU{)Lj6|;i6n6QDKpVFNFG+>Deny~!E4)L^ih`%N zYx9Y7-B^cqbWys?SWd$gn7r&dv}cMa`-^(hUtN|%`wlq}E0_&O2-kJ8ZqMQUo3rDJ z9bpd@-fFOnA1F9GQm6G4M`Y|k7n`xQ*V!?y`q*piHu~G+EBLIM*mtSeEtl}vs2_Lk znD(MZ;UJ=03RD=kSOfHQy%d`@R?ye{sN<0PV;4sgMS4TAL`8dw9LN>S3otEw8yFg4 R6Y*0A-xTI?PvD0G`40haz*qnP diff --git a/vm/stdlib/compiled/latest/stdlib/023_bcs_util.mv b/vm/stdlib/compiled/latest/stdlib/023_bcs_util.mv new file mode 100644 index 0000000000000000000000000000000000000000..98de6ec8df4a2b5b3ff284ffb85bc612cd1023ae GIT binary patch literal 3201 zcma(U+iqJ$aCdh1oa5cKk5BBJIEiy{oYXBBwN6qiNPr5e#0wJqft8D?B2v4uol5Xh zp7;zTegnP$1e71(foDD<%=M=^ut%UzV4uJNfja~S1nv^J7lw?#7ex%-4_i!pz*jjFAI1m=;oVSp8iZg#51^kC zz!4)<2#lLMLHd*^p&v>>a6lQCTyV~nCva)n$5FRNe~#rgY6nT6!EvRQ?kTkJIVV>j zIk{IzNOX(~&|GkKz8GIGFR#>OKA+8lZ|1Y7W8`_WXUogkG&nzDA@;lkspgKKpJtS+vT`(~FDwWU*+Ld1tfPRa9Znw$5vu@$<>~ayAdkf~(2Y`^p7T z(NE$^{O^?Y%YxKi{08~*^hqVe>*3+aT3L@6Z;I!7II6^VeRNo*N5>U^*Q4XqOrv7{ zWTQe}P0q;SDc-`-Ven+KbVoCUOw%lvaHog*o#HZZo8u;iEM3+(y^ES7=n`~-QTC$( zP2)@Uq}~#7Ihh@|q0CA5CFUt#O{Y@IT#zzGsm|fUQOd$YCbH3Sm?5b>vz%W~&rg?B zVD-!Cb1b%t@nVS#y_{udlGE9AA{Vo#6Py<1#YOO2N{is{9DA8#f92SpId*e%^CBhK z%9_URi4FU#aUdI-8*U)(TcMgYD~ymW75gkY7y!o+#RJ1M_i&K76}3!3!~m!f`Gy%D zaSPEML(PoyszaNi6^o5HiG4hv>^K)j&-dNvo_^_l@^BG|EZ?MHm)T4d;mQjdWZt z-8pc$QWz`FQO&}xG^lmL@MtIpv?xxv5fGr(+AZO9ZVSiH!|A*&9DJj&G#ng}M7(kf z?aD0})L6eIljP5fkhI*lbZ!)(Mm5hp^QK;ZM zt)!AsF@&hHamyj_-IJ_W57EdE5xwmYO>&QAN;O$2x(EfEUl*0+51I80w@Q1%-M;)% z8O^l9LJo{7RgTiZ@I@EP$=C8&d-pdnEA`&RJqD_eL27_D2e&U&}Z?4wg`VRG0~ z*n!-2F%|XajW)D!XZP53erY$(flBA++w#*`?-71aB#ZK*p)Vh(9_EE>FGkB&)|HWu z8^$Z*!`QoYOa*P+x%J6AyFJWYWl!rBktnUm`$wsFm3Y_cXc%-X_PCJ`jej2#SG}wx z6c1L>X4oyAhHEzTALRD;WUOj+WO~`C?0P?>acmyp0ZH59M_V1gKZxcKQ(-AeaWNq` zV2!v*$7VMckxE9y&_UG4uF5B!n{eyM-Clp=giEH{sohkv$ybz)Gm(rlgVR-o=wCz~Dj4X#tLx3%TyN#Bi&T{J62o>8NNK$1+8qoS(@@Yc z>=ZV$apMx15i#r*8oTLLIgN~np;u^R^T=srL=1a{MmCO|Mn=TYM~yUv<;XLIEb^R= zVIOzw>^87Xy)2ZT^i<&UL8$;mepq@_=9+!Et)d406F}X?>%wp>w(6V9;v0zl53gHh AmjD0& literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/024_Dao.mv b/vm/stdlib/compiled/latest/stdlib/024_Dao.mv deleted file mode 100644 index 6f6bedf1cb24d29785b0f41e7dac0545d8b08309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4845 zcmbVQNp~B^5$<(n(A|TL04b5+h>%E$vL#U~Ig({5j^r(|Vmp@Ym*fCL#E3#n0yF?x zrnBe0TXM}UKO={{ms?K$1IdrbS3Ls|wvrq?eC(yFy7sE+!Jk_HvH@c(=BzI2 zcjP;N7wV7lq5ew#TZVrN{~1Mpu2zG;R*%hJYCpEWt4Hn+^?%gkuhuuqzu(xzLCyq| zOfk&@7P5$yLLPEvBCa^Ikx*PQ<{%;VkTQruU^rh*bQL#lWW9Oe6~SE1n#uK^Hzz#UVMlMS5tklYx3L}U1|0k2w1w$3K!lJ#U` zO|{P33wATPXkSWRj!Vg<_;S3pwY3%}S7Y6>NtCpbMzWe*w;NkGlAB4A1g%?1rKJO> zr44uqK~}WpLQ5H1Axf;oL#u%CXpyg{7_LN65aGx-4k(^;EO9QmWndvSICCA^u-Ho> zmBaw~G;!diR7wV}#HCk6LE@D9WGO(QrQj-7;0aIIh)3Y-^`v2{pjOJ8zyn9d1-V9% z2CE1F{Jn5~dQ?H_5-)K9`!O@WV>n1|@qiF)d`@+*` z9zhCeB49G+% z+#f#a?!P^FI*i^M4G)Lo?tWvscz_d=tmm1lkA{=1O2dO^-N9Y~E$w#4lg{UW+FcL! z>y;h^kA}ycNj5s@4~R$Suwd?b!_MpwZJzG;5B;ecHdCq&6rW^eKt|c;(B2a)WnWB2 z-QCFv6*e&V^j-#gLEjmG;so38nZ0b%+4Y`^o^{8bOBEV*@`IgTw%=}eHeQ8wuLMd|5ql)EGD?sfZ6JKxD{(slDe4DyYgDbep~Z=>$+ zjj~LW=#io^?hiii?)Q6nidCn(?r87m01BIKuQ$rZV>m>E?kH1VW}{&|p%Us8IFlXp zC%FM(k&|wk@`K?Z3ws#~sXqz(pbDsAn&w8Wo^D^b*ljA9$N_Tg6cr=(y_X`v* zqD6&F)37?qK0E3|qbU&_|2&u7LB)|<509Sg_s7qW{m+X`tqz9IkuUoIXUN^&Sdkj$ zpgZ~$62Lq}&36a8*-ULR67Ti-2YpkZK?^Qr^rg-*GWyMI^{d(Hc((faZ1uC*>KC)s zFK4UY&Q`xJR_L|p(}F{)WoBEdAmOCm{x8)tV zu3qtdUJ7v+C?(WQeM7$LyXZZxg}y8A>zn!>|BezZmGFcmcuRt{S~)h{h!mHhwhFaF zTMwh!nG1&BWv*<>JFHp*wj}G+|oR5(c^G6p!C1+6U2w@M2&OG z!txLy)j#r}Qe#6wAzWQus6Pe`gpghvs!cAqIE9$TIq!(8M2pPO9|B_=^tIrhHcA8- zcwT>CNtT7IHwaX9O1}>yTx!&#Fm_VE8M_{FgRe-N`a3C6m}(#Vi;4knId9$*|tkV5#jTMzf_?_aSZ3VZc21AxKz@gk7`>32H?fHZ9ZrimVbA z9OEF39V@e)azi-U-!<$?T24`@MHdK=-=NXPTkJJh2SX9-?Fzy>^Xs}wEC;aKH1Zl- zS64ChHq-@uiF|9o#Y&)SO{3<{q*eh~ZlbbvS`ql3W0fs~kFw%fS6WA*rW%_U73*pa z6eJ4YH4ug9t&}KKD$(s6E9dx}*B3nylDHLC-j<>aX;<2*av^mx8@5%XW70OLUAZtj zYFJvuf9*Ds2~i8~!*RsGsLPZ)L}UC z8$*c()ESkCs1ex>_yJ_n$o#l6x?*uvre<5ahP0+4ZHPK(`OWRQh#*>N6ID<{DmKp} zS!-m5q|hxQ52(fH+O>3P(S_+Lm;uHHiJYEZygv2xbbbLaa|Db=pG}ugZUyF4Gl(k3=qREf%SbyqiyLCu-M>*jZ>GceZU)G~oR0TH10vU3C-_w&Y}*+{&#y zb-g!LsF;^UGjHKL+5ct4oimnb43tw)Xc@oF2z48s70KLI)oHZXk!H97>mYmqolOg%TQ{)l%SnAxa>WxNb2>A`1|?) z&@Le)q-33~?>c`=|H0w^$Zv_i6aVJO|5g87R{u0ta{qPiSIYnQeBE_NeQX^o+RZzpTO>MdcClo{!NbEeP2PuyC0b2)V*Q zdzFQRY%?&pW=8b@qw8jR!?1c^;q`$*{?NQWGOt^zNL{j1!pg_yb(_ITa>roaHLrUv zUZ0rP{RpoIK3)&a>rol6A5`%AVU<(nHt8gBTXc%J$xMMVxf_PW-J7MP(4=#u(4zCC zketFwVQ+yF_MB4Ur!ckjf-VxVUxQeA02=PW^lE#xK#A_0@rb(RLBsHnp98|zKqz(< zBVq465M&>7IlwD?dCAOQnc+8EK&3}DNT_~$1$=`)!7%)p!3h8KQjL=6&tO{l=e*7w z?)*9BOC^cCS9#QDRM3Dh;WOq2f(6Q_Za`H5GXnygx`0vY zP#sc_2n+X_kZu4TmJw!#*6?(MR0Q*E26UgPvZ|=6nxLvoRh25waaGk-We>?|KozPc z0Ge=B#eynAO;V~Rp~WP10b)!|s!0yI2sd}1aJI@c7#d?won~0k9gEG>L$I;pxaF1Mzh%&wELxAztJ@-LxAq}oAF-KPI_r?){OhzM!VN& z_R~%~e%aVhTMaXmIlc3&*;Dw72mN$kHJ>-YDQy*+-K5b^;$FJfPP(F%JR9uEq_uVR z>ZR)<>2^C^k-SXWeYFd;0d!Kk-OfP_K74PGw)pc#?|I>1u-{MPoXYJS8nJH1(e3rS zX?w5KJL>h5gSgRZfk!XtiGJhRe&Y3y4wE=-?{?gmNweSS%AL&E;_b#^<5{|&_KzO# z?k3&nHVpqP*-OEtd)FwWA0n8LZg=`|@(qG8 z{RYCI-F%)jUnH&30)%zC>9AnO)E|h=r#e+LKM>EMa zm5<-7gmHKl;!`<(mU;236!tbpdE{BedvT*bIrIk7C~evdGJcsgU?VqfC*SmA%gmHg zdvH)QOCtv#^Nc$tIpf_9?+xQA=L({=zrXbE<+P11)Nbr=y&J_QpItU7bnN5vgG03COdXSSwmMNL!)`Uq zj@b6ciI+(?-95@e)rt?$IvaaQdEA!b8>tuBJU*GiRl9YJLSaMNs~8PNT4u1!VXteQ z<@wZ@b2GSu{C6MQuCG2vLw|sNKH1qvVUPKI(xlTkSm*mfe9$-)pPQW_>L$(fFg4kq zuZ6?yFe`R{=(J9^)EsoX7Bf%&&`3EPJljv3#>dq!+WB^vw4PY#qvXhYio&!Fa@AlD zj!{lf#@S|f)K7ZT2Fo}gYpTZ!GsnPTw6Nth`*FXNW=!KocW+<{dGj4oOdlR|mF{=Z zRZXs3+V+n-wfod=sC>}ht&2nKt^KgEk3GC~ly&BwLTM)lhy5crYlpnuX(yiP+`IUU zX!%1|cXm~?)9&Llpcfq`-Gj8(GeK`9?KEixok1VLjqydXmq>6lObSDL@Fmhuc&~Gi zC@A*KxW{cA9wzOU>OF5FE8ybV)KI`Bk;?+#PRgJ!3M%#b`zdC4zLGM-LFz%q4 zru+NSeiw9h{p29Uj$`(FiJsiW$4zn2KH;mR<)TM+UM3FAS~%#m2K!0gt`5?@Zr0nA zw#ld#H_UJ%Jo!*Yf8!{eXYAvs(rAPuQ4Yf)%04(gIjWjZ9OaKjI3(G}Q8?}8Bb)~F z5zasP2Y@z^44!fW`&KZ$i^Vf7=({O#2CaKgUB(68iROa5Z`C#H%E58b8mqkP!A>yK6`L~ zyrOR0_%2e@D{Z&Qb{~8`i?g|q4D5a^6ypkmKN3F{9^;RlpNLreu{l5jMQ11hb20?FPB%M!nr2Vh3F!~Jq0;^Mb1X=1vI2}Tn*J7pPVC$JP<`mqpdY) zG`Ga3@iV^^Ffr=|Ofz1~=8jnQ0!KUij5sGbq-b($Y1kVg@Q|m#nTNPf(Zbwrk>#>n z7z)b;K@~>jX+T-X>df3nk(CXfM3(~roj6x=#%Q;*bGb(VzDa@B@ z)?rHu5j=zWa?M1AZ{R9IT*Q2(hQJGcMFp;?W4>BLY+e4L3Z&S<{7fy7TJn1;P~sux zYqdaW#UHD{6HhTeTMInx@h`^XNT4Gf>xy;LALb}lhYuaJhFDZHNW=0S)_`nNXT+%4GZp~M4827nxRo&xNF{3$^ z6=aa+C8s(HLX9tqWyzwCK!FH5V#8P3MXn%?OtQWBBTec$a0*bf9uyo&?ks61`q{ zxcM7RS(V||n3Ahivl>vJmfUN!Uf`Yx(F$b22HwKLDl49#bgHamM4+r7kVS8BF)n$N zi-Cbl*@3`q1Yw;N9V4=ORZcB)ElNgW6^;kU1#kOIYC6FxNINc3A9vw}Vp*IQtZH?U zxlwYa#wIMpwGe9rn>+!r3b82*F|9z>OKh6rLiGAiZFF6qBc@XL(lNE*ns7v)_yU2{ zSSushd}cb;4Y++Z@IxORNn%}8wXC5VY-mB{glPyAJuC==(AQo);#b6VvtqiKXd(sC zzkUK1>wyk6`jg67s2YDHo}6H@5fs8gsKKJlzXD;-!u*=vhAeTnDN4IS*^DvcgN3)6 z5fy!-eSq9TzeGErTGU|?e2*;4=x0qpI9v&!tWT6#eUi-?o*dt2(RDx}sy;>8{A)na z8{jDmoITl1tOqTn$s9B^g_=UZsSHg%k!X%Bd?yuxb&|@q9}>;8)08tJcD|P9&^l2$ z=&`0R1g*VF|$secuEttnp=WR%3l4`oWsGg8@Qv6Nu|U z6h;V1F+(gO*5b|((fk_6%XNsxrc-AYE4mO=!b*KwSE7qS0U)P}MpJ;xy&!N~Im`?4_r zI}kCK@5a9n=4%x#vt>f4xbvypgfR|w3?}E-MG?Ily(DL*eCeb4UqHIe@D-o59n%4QQlE>S@DDVxJbko~I<~K(H=OeNDQHMx zyu1KnH+13C6;taEADXmA_SwA z5425@J0M;+@j{Boj2MM~Rn&*X8>XZ~55%YWj(CuLi{$mni0NpIPN_!QeJ@z6!8Ka zIP(ZR2~WTiATEp(r%-(GelzpU?6=x)zwG}s3IKWtme~Ox9gEjW#!vKDe9ygaVpDw= zqu__wH@^h4zr|DAhm`R&aNhz1fGEH)L=BeHUk*^95L-$B zyQhh@?Gf4`gu?)t*0{?pEqsr(aOwHJ&y@8zC}m~9I7cQqO7sDhMUKkj%m-^sr^+V0}X!exJ1s#r9$G}|kdDw61ODJyDL zBBQIL`&Dyxnb!Xo3YxOfk==A!CRJsNmFj5js=2;O$|}t>9=pOzvh%!*lWDJRUdEEhZr+JuM*QJZ=XcfCfL;-F6pi{m+ODj2g zo7VG)X3)vVF8_YWy-&DGaPQ_8ee4i0-jf>v>(i~{Cfzg>T^u4xvKffMm>e5GC=5Fg zp6nSwjiEd=VDJ$f138Z@h&y9=3=bhx0p8Le)JvLSh8sCxMvRfMmTpFE`8Up@!-vnwjvN12VgY< zCUrsvz@Y{3LsgtXz~DVlbU^_ha|9MAUdVZ1ZBdVi+AfSt5;Bks(2%epy_^CD^%Tn$ zr?zcc*`#IPwC4Ke&J<-iD!MMU{bJeFeNok&-vyl3PyMU3Y29p+T~%E_uIf#(s>(&t zK0dEg-TSI8)61fHP%`_5#_v+&mDaxzW`Va71&nl0#$8<*svfKTPtl$vD7A2>BixPv2_YTQ8>BU2Eo-TjKKe_)Rm0tW zxl#H~xWBptwvyk+c8MNyH4@J-g+2`6kkE2qnKuR^2g8iVkOc`On6WVu``RZkbk)Nr DnyF-U diff --git a/vm/stdlib/compiled/latest/stdlib/026_aggregator.mv b/vm/stdlib/compiled/latest/stdlib/026_aggregator.mv new file mode 100644 index 0000000000000000000000000000000000000000..642e9b770d88a281883f0d408fb2fc87da7b5ced GIT binary patch literal 234 zcmYk0OA5k35JdYo9}~qa+z6sK@C0r=%E%1y6BS}y=tAfCue*rOm8RMFiu)az%j z(gHw%Kt#fJY8GR+T={)v@AKk;gJF-e(Gy9ZPyh%JfJsAGSChl)jhqJo^ng|^MX2jG z)uB7L#rijLh|$G#>Du$nG`r)jlQxCOm+QuE!znh259y{&|3dcK_7VGxk;R_BgA%bb V-iVefn>w?hlu*HhSa-?n1aI}e96100 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/027_TransactionPublishOption.mv b/vm/stdlib/compiled/latest/stdlib/027_TransactionPublishOption.mv deleted file mode 100644 index 814bd5aed1d0f277e72e9a44e803e9f1e1da2edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmY*XyN=U96uozze#L7?DL?`Q6+NQZcD0Fs1`ytkV&qL`%}9 zFlQ=@0b{sx;p;Bc>%sNi>-}Zx!n;?y5vcRNyK>F!y!ZBOv+*_r8`R4C-Un5=rn5f2 za9bOOdb>+p=LT1|?xQVTFx!5!Z>_1@w!gNUkqK+>cEiLx=C$Fg}KbXdLHn@<~hdNDvb@FWWa#g*k%-M4JW>r;%x9|6knlMMre6k!% zS>LppH+C?WA0`Ej|NnzL`bk3{50B=DfTACNxg$l~!zpAeLE1KLO)g52Kq*W0NNAa* tfSQ;3af&G`dB#&n`6O}_yDM(Q2XG(Kb8~MGy*H60B6jBs_y%2c)0Yzj z-@v(|-UA&-n0)iimyb#Q9^bbG0JI1VHN86e#NSDuek{j3svfB?Zq;$~N7dawb$;-m z7zh+FXegkp04oOGXHp0VwJZ^ltrZ@08bKXwJNlvk9=ImOMMXu&SRpbN9gt`+Dy)Ds zV@p&+jqk!`o`Sb)V^^!_RyK#&raYRJ^Da&4a0i>E9i@8H>>%x846#o)DZ7oai$!!P zxumoGv3A4ho8s9^=MEXh=xlbgTaW%j%;d9+;_buar##v9^n2d$>Sy1(>zU5p+A3voN!;^FJ(n z0(L_s>c#ioy}M_>w~OzD13-cxNd`<^2E!n{Iv4j}C|{|^-zkniC{&*`?EDZpDFOil z5CDOzA@m$)t`d$W>Dedk(P0dnO~1Zrlsc~y+p<)dBj z_Ueq+l^GR9W$N10(VbnHy2)1?y)aEy?e*Eiejv7`ZEU`@FGiPUd)!oi(!wnB-O2Uz zcADO#*=RDEP1CgNcg=TM-r96?XH_-X!jz`A_1Q5zsQR1d`O?-;nfGd6;6D2QAd~$A qCKrT{378HBK diff --git a/vm/stdlib/compiled/latest/stdlib/028_aggregator_v2.mv b/vm/stdlib/compiled/latest/stdlib/028_aggregator_v2.mv new file mode 100644 index 0000000000000000000000000000000000000000..edb34430d77871edc952574665083da2af7d8202 GIT binary patch literal 1073 zcmaJ=y^hpC47NQ#nf&el!T}3Za6JvzA|YPj=tpy#+}=ui$tuYnT*rgZ&>=crfoGuL z0q7_Z9R;2wd$$M)Oa9`qJ>xGk_J_rfSOY+UV93nG;vLHOn5d8VI{1y>g!!sQ`n!4+ zebPtC7yTL2p8*Yi1;l$02n0xtY^xTv1`!7U0U$dK2^0`Y#TaRiNnij{>D>eLj$s=d zg@)6|QOr1Lahgbu&KLpaDW7bfj7Q;s@m^cwKKM-!JmRC_5a=<+Fp(sgmyG08 zQV;`%5HejIBU{*^H++D642?i$Yebh~1nGVkB5(6~s15n8oGDVbT2=YVHDzV5o~gX5 z%F3MQuGv+2t?Q;*7pv&SP0r-jJT2U|z9^gd%e-1&<=JVQyY~v0W$CiqUfa6Q8!sz9 zHn+D07yo$dn{{(xuiR#r>+ZaHpObY(Y{zKWd-rEQ=-0dAtlSk@o*h(q`k&ZAy;)bG zFJPBtv2;zmuB~hACU^z_J`@zjkA@dv zxPe*`zEyk64}lk9xUE|eM%`H4wVe_bj9kPyC$3EUsQY|InDNQ&sWo5z={s57L&hY>M literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/029_OnChainConfigDao.mv b/vm/stdlib/compiled/latest/stdlib/029_OnChainConfigDao.mv deleted file mode 100644 index cccbe130384cbc36043fd111f7e10f698a26349b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmY+CJ8l#~5QeL&U-Mk=vIY{6OvDY)7+G?#5F!FVh-lR8^sZYhGs8Tvz7pFz(!~`_Acl*Kd6}tDCB>T9@}Dt3KLY@5I{HcP4Ob+(;&JIlG!ba6DD<<(~1xDUN&@su3q|l5rvzcl4@{U04~Za==Lv|C2Nh!mkNLY~c!G~0ri=&~i*9F_Py`Dd(*qf( el*eRXVID@1iDOJ~AWxCa{B`sojt5u{I)K0L+JTP% diff --git a/vm/stdlib/compiled/latest/stdlib/029_any.mv b/vm/stdlib/compiled/latest/stdlib/029_any.mv new file mode 100644 index 0000000000000000000000000000000000000000..f19e4d15629fed1e8b674f352a5094b00c57f883 GIT binary patch literal 372 zcmYjNJ5Iwu5PdWI^~Q+}N(T)U93enbZI`r;ua?;{0P9F(N|CrfX%3azYQq3^IjLyN7pctV9b83sEl$c&g SqnyE+x{i>hvv@e9D1HFJ6FcVs literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/030_ModifyDaoConfigProposal.mv b/vm/stdlib/compiled/latest/stdlib/030_ModifyDaoConfigProposal.mv deleted file mode 100644 index 390caae299f5035c47e016690518a9c920348d45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmYjQ&2G~`5T4oDAKSZ0leQ#OaDYmvXD-M{NE`~{goFf~I9N;UMk^Ap>)2KM82mi| zufh``9)b%u?g%!qUGQOdXTJHq@pwOfx&2d102m<{W@dE!j5{ORH|iVyV$oMVk>B}Y z@`KOyZ_dmg{s~7PB^!U1ERYZw5O5G6BUA`V0UC}9*hp>T2rvXO+pY72-5dukItmGvOfXcF;7X{-#6}Ay2v8bnh!_#4u(22-#2^&| z3ZXPZP2s#N2%<3z8G+P67&4()c3XrbO^h^u?sIo`^~Cy9U!J+;i`rLyV^^{ZDFE_m zUHf_?U%F*k)Z&$YSCmKBgpPk|EBn^1TywQ|jl8aM+Z3v}EEa83$ZFLtU8$;FgMt>e zn)TdW<9`bAwSu|ujVqT~UaaiZs1K^5c0S+lqx06+?K-PNr^(utnO!u_mmOnXTsCz` zWL;0Y>d{fN9U-%MUKg9qbiMlmS#Eu{*u6^9Bbh&&)Wv!0LfKG#XVC0f9U}|V4D;K? z!nb8J5GJm?uq&5mwqCaDqHKbL{(q37_t+&U`p};sT<36s$oQD{Xu_rh!D$?UPc>*v z;Q)hqh2e%$d;||bljd4zma^bIfaEwuLkUb}LU(y2M!^>frs^btlnfiQl>(K3ia&;+!C~(pq5JtgE<~honw;ohqHULbG;$1DYLSZVFQMQs9fGGz diff --git a/vm/stdlib/compiled/latest/stdlib/030_table_with_length.mv b/vm/stdlib/compiled/latest/stdlib/030_table_with_length.mv new file mode 100644 index 0000000000000000000000000000000000000000..3ffb95afe86545d9c4039351c00675114cb6b448 GIT binary patch literal 923 zcmZuvJ9E=O5Z>K;=y7`3Ax;{e75^X+{02&9C_M_g5YO0hMm{H#nwCjVK|x8+f1swI zprqzU!0k!0%?vjq-F~~@e!F{jpCA4<8US(xO?o0u-lP186ZHjM^ohP={9R1+FY!42 zBXaXWQg$!DQT{{A;-{8A4}m~P5(r3>eh2Ao0ia0mrlmIkqJSYL%_xZiC5;0zal+0F zBN7sFnKCL^g-B-1B$cxm>4L>5&N&aKNdk0K2116VPo})!WMeXuo5D=Y)EpTwA~HY; zB*>pv*&);k(mse$f_@EQ9C;|v(>T`)^#%j4GXk$MnmAZfS6?jc{C454=1beYb63iC z-MUl3U%uw(8y|cXVxn#ueX;h0+qB>2tF1fTo4rtDFYE2n#c$WGs~7DiZ|uf(>$|yK zUAsFK{<^OwT6?QIyIS8^y}jPp&Z$M)+D?Va`J%n4my2e;akaD2AmcCeaG{8s0gL!@ zXW5ZMR1U)$f9C!z02V2nfk8tRq;QVM+B?HKF>r=6LMAB#=bls{(EvH8B7R1op7=ya zu@chwoDj%_dc?x%|Ac)2XM3g*BoB)SQVh!?v@^E;Ohzh=a9Tb$@Di|+#GUeubJIH( zMeLQqOL4F(wF|%SkIMVfvLCwA8T~u-X&BlNrJkma$HAWRWMP&_Jviu`jF^$HjeLUe E7j@8Nt^fc4 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/031_ConsensusConfig.mv b/vm/stdlib/compiled/latest/stdlib/031_ConsensusConfig.mv deleted file mode 100644 index 0baf06dc640e118ec2c510fd1e157f6535aeac2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1292 zcmZ`(y>8q_5Z-^1J4+r(EiY0m11TKaje#J50JVlK1PKrqQMwcab+xT-r| z)SGSJx%|_xd&@fiKU?Cq_2On<%%bkAPGe%|KJ-MFRoRury8PW`LzZL72L)uCvih90 zmAf5Q7~8vF%Wu1;=-lcq8IvBAeH*+@zs5$soPBrk;^OlA%lzr{=RaLsUPePES9f_a z9!FH*ku+Vta+Pb#cK%;=@=CY;)w*nN@_iCmMqE}ev4~}kP473@DZI{ygK|HebOsss zxfZ}9u6W859&nFaHr!bufW*Wyyo)2Imaz#l%lL%RUrbn7CMPT{Q;4NX0z)GTB=MLx z7(tU*SfFRP0kdaG%={@vSr!bKC&@WsdVpziq)B1{pD=Kcpn!n@4}1tf10>-&W%#6QX%gTj1!a!FGZuW4L0}AM69Pa4Ge{wZ j1dhN$1_r{EuxKhZuxvJAjmIZK`!Ly diff --git a/vm/stdlib/compiled/latest/stdlib/031_big_vector.mv b/vm/stdlib/compiled/latest/stdlib/031_big_vector.mv new file mode 100644 index 0000000000000000000000000000000000000000..d89b4b684f2e7629ecc1d6ad6932694c7c1c4179 GIT binary patch literal 2815 zcmZWrOK%%h6u!@S+{ZYM6FYWZO%s~ZN)=K?JLMs@C2clrK&UKOSWYrctt572I|=14 z@GB5o!~#`9;xF(kSoa^mhVR^Q#%?>Z?mctvdEf7x@h@v{ZNwPMI7>v5$>!f&{lo9* zpT%z?{!_gX$=hfl`Y*a|evNDPk65@j@xR{xz8qz5mZREV%Ytzxm}H7+#TgTAB_szg zVw@`$(+f+K#+pVkR+Dfpn8nJNOB2ZW$bil)oz`rMb-{V8^^7bmDxw>XXF~{H@t`~<0%UZ z6H(YDk0`h)9fL0U;3D$C=2CEom2@cyD^nd1h*M4tNN(s&N+ChO6vt@_X?Wq#s9xig zYe;}Wf>7Woyp_jrRT3h?83K_p$&eA+XI4_4&`CHA3uGuTl1ijBw3B)KpiFE_@r749 zqDKX362J>if;M(HKI@Gp-OJ)|G8~zM{_&L5#b`7f)hE4!)1rITpS&=zZt!hOiSD@nQ?bw=T=q`;N8R4&_~NV> zOyr=r^4HAqq&F#K@8}49I{$E)pb^4@>!>JEQEEytAy=kI=*U&cJo=L@-pzQWjOEJ!Hgw$d@{~wrB`Y?WbM{(paUVd!!O;H&b~qQvsAqm9KmlH5}3A zu}W>(Tfzd8dBO$FrjDY?g z2pVeKXXFp8SRkF?fa5H}eQ<9u2B*)C(mIJHWb!a@1KYAkXb6~DyhDY^ol}*969$oN zt8HyVkwmTy&%Kjs1IZ;8si9OWRyKtdbI}QnnuNhpnG%E(t}TjR@wNm_TCQM4ED4&x z>-VYF@r~>2;q^|q9z-P!L(OMiT6yHS;m;6_;rH@P?ZPF=%tg}5)93y=d;M_`fU7Ff zmSqpbvX#QZcY1f4KRiJQnTO=IRHyX(xU!VjNQ6?ls;|;!!DpTUvSC04qH$_Zi3%7%Ea618~vy> z0Y&sxbqUZ+EoS-$=54y?-^1Mf+d(X@;-VK ziHfm{%SMa6)IWsUaxb6N^P1&Vl1;~hhLz8&iir%pog|nmi%xj7A;z8%HPmJ2yqZ^@ zAWV}BW3rZFfJn8d0r~0FE0NOyZc3zgoVi955K;2l&YHxSE%kZ0+60JCt=-3bBDf?d ze~C*2N_%C}yx}6Rjl~{&W#c{XH45%Cg~C^Z6JkBMBLVe4(RGXlt${?p{mhEy6P{Ai<+Fxx%snJ6UKu0H)LwxT0 z(%Sb{i#ojCTAxFVoFa6FI2uIsp=xXI!zreuUdor=yTydUlJupcf2^K+K_lgVKtSev literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/032_STC.mv b/vm/stdlib/compiled/latest/stdlib/032_STC.mv deleted file mode 100644 index b462ed908f1f2910168bbd9515060d11ca25c6e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcmZux&u`>36n=J`*omF_)tOGaJ7pJk_q0L?PPxKxt+rwZI7V*cPNPnek(0DLTsUy# ze?a2IKf{gx0{#FH5)#kJln#iI{N>s2^Y^{6?Dym1HyHqcB(R{1#9MvKejzXY-^ove z|KR=1#IJl5{K>uOFFsJ;i$6>||*jfPx1MdkVdkpI3qMf~8@?R`Of%9uc5!sttM7O%*Hut0Dj zL?|MmL_CVe@gzQqrvot*BQX|}Cr4r?h@?aS_<`~~>IH#f?n|VHtAwB~u3$(5$w&xD z4uN7QK)4hofg)XobaMpE1P-_Z;UIJnv2IuACj4H$R|{14b(SF>u5=FW>}kjCnaq2; zS`L?0S(~zMYYeXQb-b*s`83O{scTbvpX+LVUS;|94x^rNVXJLb>&@s*xxCSN*{@=H ze4(#y_1di7mFK#|z^X6Iy|!7;@K@EXDNj~bm$klX@~XUOFE@F8^JeQNhly2Qn5u31 zePU&eu3Ni1`Et9qIx|>LyD@0^P>J~Jyr)jz-e_yG&stk9^;Tczo4nbvOPoe|nK!xK zkzj3kA2UQNNS?6_QEDEFTu{A|?XVOmKac{8QwClWl zX5KXx&oHgq%OY>mhuXF%>6}=Rm(AcDVfl~kgQ80vR5Q;^-PmfE{%1XQhoB3yFGu5T zuuZx)rKvHqKa{A@_SSTA_|gx5q`TAPm|!sPE-5}*y!yeIy(S}U014ou1c+Wl*ai|3 zK|+;}oxz`w4{;{(2}w_~#KR1WU@TRDt3iUC1fzuG5I91Vil}P_vyUF6BuS(~g5-%( zA(G-`fJl3Zy+J20{R0D(lj8pkWQflfdl^lJ6uXrRM%2gP=@@I9x_XoG99=1f6kRD*GEoCI%b; diff --git a/vm/stdlib/compiled/latest/stdlib/032_bit_vector.mv b/vm/stdlib/compiled/latest/stdlib/032_bit_vector.mv new file mode 100644 index 0000000000000000000000000000000000000000..ded27fe2859eb6165f14ee8a450a01c7cab473f9 GIT binary patch literal 807 zcmah`&2AGh5S|%(>|NU-O_fj%AVn-Rsf2pxf=J7STTckVVO82qx>DGRt_!>l55gnx zB%CX8L1Mflu&R(4X}$CFdB)#2U+#bR1^^ra5ou)#KA72)_t{t6G2d|RZZHc!@rN4R zuofIz00IP1qyRL?!Ac5-rHf5RCI^`e6e7wG6=pzIVjw4hMWZY#rL05uu8!r$>MUMf z?m2Et|igmLpPorw8PfCie zy{MP5TvyA;*Nr6dG-6p->vMU0-%w?VNivlQ`Hd%(HlA?&ZA41tqK_oZNFEJ4u)soF z_CCom^OEp*gk!=4(J5XaQ4;B(!{fLIcNl2yNZO?IK2IDt8o^XQkaqmgli5zb8;A#< zJnm6fQc|#w9i)AA_DC~Zi!%q73LW^4_S+aV&4oJWYrNm%rVR+t-DMAq4w(HamN`z+fCZlctWHbu714?$yL|k0SHX zTjVz)i*|aW$}v9?Rdk?3FVg6zDR8(q()?`e8n1g@G>a}GsA$z|^O{c*d~_T8QsnGp M{twkWQB8Y?Uk-#w2><{9 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/033_TransactionFee.mv b/vm/stdlib/compiled/latest/stdlib/033_TransactionFee.mv deleted file mode 100644 index f209ddeb58683e9556d9604d30f086f9323857a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmY+C&2H2%5XWac<9yiJ?d}02C`X=v0|cpns&+wKIFLPXi(F#BqD@w@OQBp4FM@a* z-h=}WzzM-594J;i8vo|68G9yQZ~d?t08|J@nHAl9$S;gOd60j>Z&-X+EAvy8_7kb< zGkskABDMTYO7sW{2pFJ1KxP)JR1Tm4ks$*mHWw8XN&p)afEFcO3FSqW3tdW(X%7Xg z%p{|n3WCxQW+JnQCCJCKqjNhSP-FHt!YZE~#zJb(?rfIZ(e=^2OkwCBd%rjuMt|6K zqmR)?YPLt^Hk|pG+}TcVhqu08yRK`~`@VhUeVZn---VdQaB`jm{L3~8q6vLS!JURn zpYPmrn&B<=9t>ozV|W2Rtinm(C^&oxi2n4dee>W zV)?%+@BD6vAxWFBE@?TI^8=;xvQS&7;XXVPF6{^2U+YR)SZ7upKt+b`L5&p~zH>Fr t-Md z7x>`({j(j}-d=qb8URKJTIfXPH)@il4Pv10xdyBM>tIF*6V|002-4 B5HtV) diff --git a/vm/stdlib/compiled/latest/stdlib/034_timestamp.mv b/vm/stdlib/compiled/latest/stdlib/034_timestamp.mv new file mode 100644 index 0000000000000000000000000000000000000000..cbaf3f3fdc131432ae3e77439132f61fea7d705e GIT binary patch literal 773 zcmah{&5G1O5U#HN%Ou&E%rGLZf&sym6}>58PK&xnPkIm8N$(h(Btv(PtKfrp^#Q#2 z6e3=I1VQlT!L!w4To(4Q)lgks^;LJ(*Y)w%uS5Yr${@x#;{zdx0g(j6V9%ZLWq7xIRk@NL zx8BsV?WV50DOcBSpwR8)ZVJNUA1y7JUktvT!MYxQDRtl0X~LT;#TpEcc^ zYTeXjWmnsl>LtQ13ggiq;x7n~h|!(!=;+C0uzn6vnGM1J8;&RdX`~0}` z#+o|D$B(Xp4t(bSy3PZ9k;iy&_o~F>w+)d7$Wl%}Pd!L2?n4H1q#2;2n1bf}i022~ zM;^M;F-&CwVK8?xg9m^jz{H`JQyQBwFJO!XO9-gNA*4zx@{6%3AXXU^Ea-WRcf?JZ YCyHs9Mh6KdY691^Ca4_Cf~GjgUn^v#vH$=8 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/035_Authenticator.mv b/vm/stdlib/compiled/latest/stdlib/035_Authenticator.mv deleted file mode 100644 index 87df0d3581c6cdb78bc887f2c3782437a1dfe7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmZuw!EVz)5S^Lbowe6?;*@{{szhj2A&xB+nIoV|NT?DBiL2!#OC2?hBikv;2XNrZ z7r-xY=E5iN9sC625K58oVfEg;nR#RH_{;9khyfr%aOAY=z1DeZs#E(7KTz;prTjx> z?xPOlPx><@Us+2s0)YYz#saV~u%rM2B7jiK;k1#CnnA~bmE^=)(7jMRbU#kyOnV^$ z4x~!$NR_^kc6^u+Y9{7@Lv|ce!aXMEh%f+jga%mvO9Tm(fDk~5tWXejRDy!6pb(5B zC2E(xiAXScx@t?mXlIk6t!nk``5Qi|>#A<_i=rv{t)EEv=ILtQ&Q7LB$H#|HUaiLS z+2o~P4=1%RTAyEZV(x#d{i&~KmwuWT(`oIS=FT>r7k_(M`j|4E3J8>=q2 z3ENWImDPO8bH6xi%XGH5Eao#Ys?Syz@&?9VEZa4YD;fWNxLh@5J}xHbuC4ye5;SG; zFh4qe%*Ar)7t=tb@w)YmT;TNwRWRCeLQuikmZ+e-LjDT9yGoUNmAi2i(PjfiJ;)#? zhljAI0~1*@u=gE4a&({vW@t%hL>3P8ZL@1t$7JbtfKc|w?MXFSxTo2KR*RTXjGS)G zV&xQ%wq#%5H9I|UDpSLl5{xL*kz(nxd2YqZBoPiG*&10#PQaohz#x`20q8$)kV0&n zk!jV&Wn0({PfqRYUDJ26JDC~ATH5Q3Bf8d}jEfA404ZiR;{+{>0g8d{9F+(_rh{Ue L;!u7F`9i+{!nb(t diff --git a/vm/stdlib/compiled/latest/stdlib/035_stc_util.mv b/vm/stdlib/compiled/latest/stdlib/035_stc_util.mv new file mode 100644 index 0000000000000000000000000000000000000000..1059aa58a5d32b5446068a80612d683d9398d28e GIT binary patch literal 539 zcmaKpJ5s|i5QcYGwxl?38X6kkAT*Fk%TQ2JBotI0VJnG;#Liesh8%)JZ~>0Mg*XDw zHA!YtvBf{%YWAhwm$Ub#1b_yDCap#9I=BnM`%|@gL;XrU`9`;`XJI)6fk04Of#@lK zfPDySk+rB=bS;fqB0$zA5CXP9fapNT`CS=;=z~HKCz_xUG`S37h=iQR=@Fqulp3}3 zX|neDLZ@?+7fGH;=c~M!HT-sElf0Ogo!ljb^~r;&3R7j#-p%Z$y~nv(EbO+q_m*7e zz}`B4;EkOb$uZoq<;zFQ&751?O3bX6J0FdlH&t5l4r&>V#*?dh!w~eff|v{L t8DrvY@7^gUabOWsaNsZ|KEp0X#w2SFhoDqHiixiRDjf2?I?!(s`~qnwW=H@4 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/036_Account.mv b/vm/stdlib/compiled/latest/stdlib/036_Account.mv deleted file mode 100644 index efeae909ae78f9956245f845668443212bc9fe20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5260 zcma)AS#ul55uTZyJutgi?1BJEk(79d$C46tQ(9T~Y02^-TZ)}Hj*%5HBw^v80Z^7) zmHdTNB@cN@rSg=jJfCTc52gq{S|Rx1D#4G|0M*adkt5^lxjAMxkVskjIp@qu zPFS3&<&!YwJPQO<+e<)IlatEFe3MJ5PjhY=J5aQC&qbVhdl%+7Gg=_XZvxnO9&K?Z z+rdR{S)CYGjV^dzk6%F%>_fu%md5=HaAgh*gSkU;VjO_VUl?%u{&l#kMMe}y??tr@ zC$gf2=&FCU8b;Tm*~pJJqe@hdZbUbuThZ-Px6j-@d)L2Por&(9e^7nkKRo;J%)?Vl z(Z%Re^nw3D^~3Y0qfgGCk3Nk=^fa1`xW~B3mEfo#*We{8AJ0@m8XgMAax7uG3S?oY z+zhw8^lfA;C_5&1EN*#*DQVKJ63UJ=2&4|kGs3qrImZX)Wr0)tIo0J3O{EM9WF5(!61P)1 zF1V#Y%Lb{0a7+`zWCaY{;li{X!67ASlx0K;gE)5T0Q59X5KQ0pt?ljJL3dcbbuir1 z-C=7x8TR_+JH5WX)ok|lV4w%qy?(#fADH)EKtMi727A^g`@>eRYdm>+$9mG*?dpE% zX{)0L!=$rsKJ7i%UH@r6=?;=@61%Up^|{`L-2mS7{xFqDtySQ*H%7E?C+(!Wt-ZT? zzc*+NQ=$4J{pz#cFda5Xth0Q@wb>sR)(EEqR`H+Fjc`gYQ7K(yBwSN6C28ZL=O$(((C*!T{C zG?FZxOK;<~x~*X=X*ZG%sjvKRk;aR2leyHc?&?8nQ1~wAKEa#xbtl%$BE`zmdX5o}|hcX`tIX^F1iJRen+v!A?b z?DTt`i2@m0k;xJ5wLDMuvCzptH;O9BBAD*$PVa>-;yIkxJUSkIs^6KDg8!DB97)Rv z;l9yG>+j@@Dl#v-%0Pd6ps@iox(A(Sx8~ZWje(iXA5L3-^B{mM?6}Yq6sEP)K;5zqjpvl(<3q= zW7byQ#b_kmW}|4DL#wHJL00Mh)!6Pebt&Ch?*JRc1>c9uJN1rwtBm}oJu-09{qX^u zx3<YYisGliA3`E!|C?wY8ZBVr83{Q-oK^H^m}jl2*pedSj=h+fDOD(mv1%Zu%Nu zAKkR5Q-<4qf{#ysSd^{}YPZ+bDqq<~Z^tWkiSKp4Ckd#u^V6uxtu73=nlJ^UcHYcZ zTX%PddqKfW`nv}mY#HJH!LxR2u$Ox4(>G8KdL12f^>^7M8+&Ossm@A!ig(c;25;Vt<8Bf|`*m8%-g-U!3NIDHHU$J`v77-4FJ?T)aW5tbvcjLSg! z7`Q7G7#-m0F&x|g(#LSln?%8IQES%Ntch#FMgQYva#4Xo=_t87Nl~KRnv2E$Q6(( zi!hUtb;V*I^Anz-jJM37s@PSsTfwXi%p@>t7=?naW|ZU!lZ%N0x45WLxSKw#Rxh&~ zES^A~5yu9vST3)!xF&EV!-TLFpxLlB;fkt^>tb?@j$%vcrFc?Ik#)mm>s(BeaS@O~ zk1HNxVvgzBPIza{PcZF}%;zdt_ zDN&G0Ed7wVG{!tmF>|p@`MCt=S#g9%DL-Y3Hbja*o=(f3g^|m{s>@1Md(%e1mRKQ8 z?)WSy)hOA>(Q&alA}S)H4C7_7MxE@Jd@?3{6da6+a7Eyn%=zUyGD;S}dOd5d8Mq?L z8qK%D>S8@L4_7C6xFI%>BPzPUt%(!hi1$#w**wtRs0(Oqppv0&R74%6io~Ut_-=1Q%~N%N>%;x2BCcKGp{i~mCMb)HmC#jPvnR5&M3`bNCA z;MwM>l4rZNyyzO?V;A3tx*0=Ny}8dV%Uf>ARdE!rn|I(qoJnK4_RB1$a0(SzvQ_xm z8oC54?3J_zD$wj}8ejBZ#G=ZZd5;yl$xu?wCM7f>F?jp-~O zw9ZakMImCH@CU;i``n70PzHT3JmDJHM@4)>;NKfs|H9d#xR?@dR1^zTjSQijR867g z;*%&29!KI*DspoHZm-jZ3Mr|K5PJ~SHvS@@ZAkGq{4dIBa4A9~w}+;NJ@hj^5EgAo R_!^?C3={tn;(w}${TH=~z>WX_ diff --git a/vm/stdlib/compiled/latest/stdlib/036_fixed_point64.mv b/vm/stdlib/compiled/latest/stdlib/036_fixed_point64.mv new file mode 100644 index 0000000000000000000000000000000000000000..e1c23d8d14a9de7d1651b327e822dfe0e4de9b93 GIT binary patch literal 1331 zcmZWo&2G~`5Z;}cwVho%PSUg~RS~4=4@gMRiXx6ZaX_lX6JUkLMMh3soTL;^Q86ZLP+N(5jIYb;%;OyM`4_8>(f+ znmyLG&g-l~AOax+fp+Dclmx^-BQcRc8OJh4B8twlt8|cD6xnF<;(7SWYHun9`-4H) z&xgf$lB6G}{hZFyEN`EcX@8O?=VdWW%KjuPM*V#KHux#I?B~<8aTA>$9=$Y!>@pjq ziQOv~Qk~~TQAY363CEfp^WVE0%EoL>in6-j&&J7@v@9r3$K%L~g$alKD;#E{XgJL$ z*+u@jx}z+nqXCYm@03f3`M>!|45X!wKMa7|QtfDg;R5p(n3`en!+$HEJAPAu+;Fk{ zjuFjTh(@v`gQtd0H$u?hdwbMWYrZ-#aNH!2oDBBr+}d_sve>2drP8SbLwg~rt}{Bz z0yGG~r>UbwGdMhX8cJu^vP-d%hbPa#$kW&J?5d*Y+H&1s$74V?*Pdu`YU7ZWM@xrl zw?kTmzBn+%LAOHGxQM*!I@fn-GYCO#8*wLEHv|LpKy{f1jh2&r^~iF9$1MTwNuc2& z2m4NR!&G@mEv>6fgk7a|^{oBABj?T~JLIdH4+qt0=fj!Lda$Xsd}(_CK8FZ`CFxz@ z5#cB45X)lCs^nDQSAWZSmpQ(T>_fObekZ3cL@WM1sIMS<5Hlj`k`oHrHJhy~$O~>yA~^M^|@?oy@)Y>~KTp$zIPJ$OG$gFwmp6K^sLXJJ?*J fk+8-ARLjjdvtXxPgT{R_D)Nc1FxcS%=V1Q;?5z6KOvKaupJ}LA7 diff --git a/vm/stdlib/compiled/latest/stdlib/037_fixed_point32.mv b/vm/stdlib/compiled/latest/stdlib/037_fixed_point32.mv new file mode 100644 index 0000000000000000000000000000000000000000..16b48bdb3885d09d4d292fa2c5290f020a797a46 GIT binary patch literal 888 zcmZuwU2YRW4EA_tb~ZDUKNQ*$6_GSlkq}awlJLX>LWpN>uv#@6w9+P9ElDXn@xT$d z0OBxQffp_ShX8vv4W+_LEZg5_kH_Qva`?+d0AK|mqLR@w{o;X1zl!)1cB0St(tbzn zf8bBq{1zb*g#kbi0FpgL25451ByAXoSv5dWQB8njt*OSAZt}OuhpZ~)GQE<^eC3y$Vx3e6j) zijXngDnw+AG#VBet6fa)VtQ+-&hM=RGAk4<$r)nbLRU`)CtkFm13fE-s_n#NaEeaM z&X`)C#TLLG0aFwdGN%@1ljkR16OZ$iRe@d;Ykj2Jx@%zUv{QXAt^5z;F!rbi4tObo z3_UtjBYkYt*h-_1)g%3wY$vC8XlLl`NID>spE&L~YJ=Oif~i(}rV6I=uEh6Sg08hI zex!_U7#!DG0h{$bTIA#d-8W+FaEiQPQ4}V^qlnm5!A0{I+EpDQy$L`&FhbFX$~mBm zHJ#w=VB;1(x`or{0CA7Hs#`jsQ?I+?5z5e&BU0nu^@Gtkxq**7v^|gEY=V+bM$W4O%4eIVFOhs^;FG|W{Yy2~>PrqvUYdM5DA z2Y&@8K7$Y7zz^^P9QgpQWJx_6;fjzdmzVjnvX=K(z8VPt1|ee6nBSav$6EZ0uheJ! z!u<~-k)Omp{hxdoe3YMg_)d=rjlh6|2LdE0AHb)tM`^SKzU84rFoc1CU=R`#BKM0u z3QYw4Qb*ZWl;|?yN&p3N)QrhM zGn9dJv*4Vo6M=j}FfJI`k)iGZ`V5VSBuJkWj#M^Nt%YpLNAdVzHGdQSv8wE&#iFux zZEHELs#R5s>5(lPIV<)`TlHQROItVj@=)&Dd9$j*Ht?Bk@y^!IF&&DT{$`Llf8?60b=^QPCXrmS2qU)w5nj>Ei#?&tM>a;DdrGw7l$nj$|a z{;`+O#H`J++?1Cc?Tinr)tr{sIkFSa_WzqHKz97*9JlOhmFseTVC$r`$D3@{b*eV) zV*kp^#eogFu&%^jbJD!{&*}5&?CC6f^yJBl>1-zK^00Xu<<$17$@Xk%>!KcCRI|L> zn3k_)qIEltq$rPQ-HR-*_SQ?PK-*=}WGzH*g0j`$biU3Hsf&V6?(-QfPcP9P~g zm4>I%U?Tw&13uJjB*y#_9V0qkOrBb{HEWHWF>k;};wL`l+(mREx!Ws*en0gC)c7lU z#^7(5z%T%jkO&EqXn>)+YuNh{$j*Sg1F{y#lhmhdz0{{{o&!ZB(yi-2905_sKd?%N z3nz46iO{2q3t_4?q(;;I-VB4Of2P0$`*4?;HR5-Ah*JMH28uGNgk9hnifyA#c~s0CkBY(ZsMvEnD(;Q6 pq)Cp9iuDPdk$pb##C<~#XIFp`siZSN8%E2ZO+)nD6G;!1fbV)i+3YBu&mZC5lLK3`g80H@C1kh zTzEKMf|(``A+9(uhxN|SH}m=1-S1C-xc~qngovU@)sM`(o$%uijJ{Ak_(s; zBt?3YaQZ4^F;)!~|H8s}gDuNS?CA{)4jr@xR3;bScGHvDvYd1HaMrON+$jhgNsESQ z1RMbfdog&jFj(sdyE-&BghuTkKJjQVhJC$n8eF+#wt!gd_w|i#;Ul}Vz_ziAnsVz>U)qYbZ?$ydnbEgvW)NQp?SuVz;@hW z?4tLoHa*=h34st|dFH&fof^g+PBt5sG}Ezv6D;S+%#z^olHl>2U_~=eW#~?TVnVnK z&Lh085I_DyT+*d5|04b>KDj6E$Z$D2xf?wlIzC5JbI9To1_y>acRO z-0^ues2E)m71Cn+x@$H$zN)^&pHwQln#H%U?Uk#Rw^=VaP`(K@r(`34BaZ>!Ja9?7 gI;eWab6n<}h9nUz8)6zDyRCIxmH~*5o=#%~~ee#}t#6JIo6Zso|(BL~C zh@X5f{KJRpvmpA5xW?$KB>iuacp3r$3Jf?1kP;vW5Kx5L-#KS(JZxj=0ipy&5E*FN z#u4Ml$a>HtQnHOu0llX+@J&?6#8!XJ-?s-IPDU7`r1yQ3>PP*Go?OtJPsdJq8NzJw?=a_pM2BQc5{s1<3!$h>F| zDOt344xKes#Vb?1bwycJW)>Y3&b~}jXRFFq)OW;d=L%PeciA+zjvp4M zHV>8x(Ndx-kB*!vOPel>2c|T~*(|HCM)uN9n%X883(KTj7!L1(MLBDxSw6Ud+;T=M z@=4*6<5@8|O`N?jE)ATW*zDXoVdh1X*P^s8D^fZ!<@TE_x5nLd*|L|lGn0CClEf!j zk%#7H`lL7+ID6J){#7K4T2!~wFSCbPRW&x5bq2SSdDF$zd!F{6wmxeL*UXdiqPEo_ z%g@a$OB3U!&D`d-T#UbI{FiWbGPSv_vei+xS1+Rtl3P>1(EnaYgOf#01G|c*OAMiX zzQzU=3C7*_VB}ZbFV&7hMaHlWnrj+D%=ek%0|kEVWAS*5&*3R3s`!{_ra-YV^*;uH z8jewu7O%)Y3wYEr&@(&+pTP?t#G~SkG1ELGia%nK>lQ;|)nOD-blB=~LfeC2&x?7L Nn0Jmi7Og-8e*rXK)=>Ze diff --git a/vm/stdlib/compiled/latest/stdlib/039_transaction_context.mv b/vm/stdlib/compiled/latest/stdlib/039_transaction_context.mv new file mode 100644 index 0000000000000000000000000000000000000000..53629c342f3af8e702e8a64934501545e3ee3889 GIT binary patch literal 1526 zcmZux&2G~`5T0GHe`3c@oVrPyrcI%g@^j_^kN}AT0ts=pmUx?5N;bhisCfk50?u4{ z0K}aO55a{qcV?W#ZAg3=?|$>m&(7}5m%$&;0sxnR%iXSV`k9&E*%SLO`)N8q?6&pG zj@;k&S@VS2O^6gdLDL6fQuY#1V-BWqM4!6B0x6a_S-Pj%WhhC2=NvfO{m) z$-#XR7Z3n{BwD~8JD8m1FlI8><+#GLaON2dAxAL$1FP^Q$eD{oRIt4wlRB59BAw}Y zG}DE;E=-kWv&^|vvM4i^TeCT7t-Q!mJr+;jy?hou*G0B?QR>R>ja*D-GHJakCqQ!wK5LD{4i04^4QoYS>P4mY}t4tOurgQ9X?AE91 z)hPP=P$G4C{?=F(aX!k@c@ba9{3@dT?eY`YtiWqsF$Sr|Xz}jD22*(*Q<`#0RqkzW z>x{kWEGZ`{rV6yDs~cLUbOWpkdss78K3G0w2!|IQv?1bb zw}wTWlSUwmN1TR(a4LJNG7be7I5x~J+~OAE)qvTKXGEN`-t^SqG=OlX{fB$pL%d12 z5e6OLJ}r3|a2yfPVjS8_Amkwe9olS%6cOJe%|`MOkI-U&w}lz;?rx10@!poN1Ac(M h4!7_=?<0P+g%9`u@#EbQY`hR)f<_(Q3?7jg@DHI#J1PJG literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/040_BlockReward.mv b/vm/stdlib/compiled/latest/stdlib/040_BlockReward.mv deleted file mode 100644 index 533de2359e99cadbee5359e8418a3d24c7ac3322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 zcmZ`(&u`pB6rMMp@r-B2yY}v8lhU*_G_`pdTcJ0Xa zCQYvhaY0;>xFIBjdf<-uOOW^vxFB)i$g{n>q!P@*^X9$xeecJ3-uIh-XqOP8fo#x? zP3PUOfc*+L`ET$oh(GB|CchJb`%*kozl(e3OZk`M|E(1QfKcKPMmTYaAd+}Q5lswo z`HYZ`BvLXU;JSja*BH1!x`-hG1tP8kqBk8Nyw>R(z=5!vjsRD_t^gRl1)AtB;{$Qt z@O`3hce+62c7QhiCZOU@Cq%{FULTnE7T{Oi8z^9~y@oFA{tz(W1HDe*ZH)@~5YVXK z*}%A*VM?CIG&5d@b-lm~y`I;1*Sw*(&Zuh~;^K#KMYRK1gKIznD35?7pgDM?i;PHD zTOEflb|FE?7Q$*6su9A$t&t8DxH%v^LPcX~&1iC4sgBHOP1d;7VbBN-&LjH$X+AoA zW-pRrEOthte4bVQZeG}(@wl*MX-jv%DDtA@`{y>ROzXLuXUFNpIXK+)4%3+}t7LY@ z5A#!-$-}}X<-EAOz7#%9tCMk&TyEtwm0fGCsDpB^W3(#G%oy;TF5Ww{;K40tgzayQ&^E?b>1wY7+if z^|}Q0OU!!2Oo&`zKnE)&61~UwYNBw(rNgd+3_SErpo|LcupdDiqg68)n;_flGybvC zXfrPV+%v9r*$D(2S)sl zmm*3;p6U2~-HCXoAN?2E*Pwjej}-p~aHE(L(_JmJr~Mv@bkoXz%SSV;X}wac8_l0$ oQ~6JIJCqX+Zn2+nkBkP5(=76PV5G)EwTwD=mlSUu#~CI607?7>zW@LL diff --git a/vm/stdlib/compiled/latest/stdlib/040_object.mv b/vm/stdlib/compiled/latest/stdlib/040_object.mv new file mode 100644 index 0000000000000000000000000000000000000000..8571e5a2b66f62939d44553784e19c3895faa012 GIT binary patch literal 4669 zcmai2Np~B^5$^8k?pb=U3<)lxNJ#`mQztQ+UJkkElAn>^kVD?fAIL4Igw9Ms-}rwFaODC##oiJ zWwE^DeEv&E{>3?~ekFe)+~4TmR=hvX*7aX!f6jxyH$F4Jo0H-1=YCeL{9$dW`sX!S z``emif;mhw#WZu7$9xtr!$MYJRaRql!B_+XGk9k4G(gX}oN+eqF}489i}*f)l_fkU z@hn5dS-gItkHM#Z}SAZOk z!;RuT6FRitjC0GtQpmlEP!3iCftZC>fe^~8I7)G$lu+6OpL7^bn8Q8EvB?OlNpVw! zVy-Ral=>AAMZj_iaN$YC9f;D3>uIR>eC`FpwF;mDGPD5Th(LHXjz0}P{1U<*K3{vb;Ro$OV6Z=CKYyZyL5%7B;Av(Q{ph&*oVt9d){SGECduVVcKZ<@yCo4YTTlVLHmQG2tJ_d;U(`kMp>| zvgC!u9)6X_X%D>U!z7J6*)!6%7n8jH$hsU9Uk?z3DbUB+aD3oD8xD3q$%kp|P4-kK z$V2koOem-0AfY)TnKvg3}W(+gZG~@Y-U}`uuf1qJ-bXk0$c@uw5is z?vAr`q1#E@`!NzqsXbKV!rY5E%jM%wpYE74^OV%3BY3H(U8TNUx&Z5_zl)^%s9?SRRuaZ$d zg1@uJ9N}tOt?a2;+EAM=7G1RR2HoBpX6-^(lJ3tpDj4PTX277oX#guOPZazCyo>5ERE>}31n0p>OCX-7X?)&KLxNAQ0*o+^bL z4>uM2aXdN2oGFG&p#3-=Zd@gXYha1_Qw*1>l2?4=u1U9me+vFD!T-&Kc&0w(T<~W~ z5O4@c;y%IKn15GkAwP4TsPFOb+jq4q_z!6R50x+Q!v2x^F<#>(VrXwj0;;KQF!-gV zVRc+s`2^<;SSk6UA?PluqkwH{DV6K$=*C8XOQJNY>INVTE{nM3;TpU4j$zTwPzOBF zEiOG}Tp8WksPbE^5z0VDtx!~j(KFtbXQazQH*^B$JgzE%s>?>;Hszh@w!9cPB|YP} zM4)QQOc_DTF|JWHIj8R8!XwngQQZ)@)-kQBxWzVFQqbjFpEK4Y9&lI@h8t0Hqq~BR z<9y99!=raXr|Ptjk&1AuJC}@z-i_Xi?h9NrSrppc$H z_sGr~c3xcx_@+K1mGWFSdbkmARH@|@v+oqC>sSkoJD-R6^MC?csoE*`VE{K_YJQFb7H}= z=L2GIhG(R!a5~)eQD9S1T%JjE5jIc2SzUv)ZXiR@#$8c}vc?P-OSFuTQTQ`LoIFA~ zVwo)Q#p5hl-fiA8bQW;L@EIvq4tGZ_acV+|2B_0Sp?P5E>rTVA5ofHtt=dgbtP+Jo z+ti{-Zjg_y(C}5Uc0?`|XYC?7H*#AQu}*6sQ2F95;4Y32?TT}1v5+g@r__oKtHH+H zs)}3bq@V5g$$R@yjLG?Z6a zh$abSQ*NteBd+p!(83MZaOKvL;m@`aJ*9<|_!3uJ>+AB7=$Hd>XTa#0j@ zO1N?m!$p#~RV4JVIFN=F8ZG`zxD|>mnnfDH+rfj5zAP?TmMw8hUnVuJ3)G1)vrU~5 zs&W`%P|+|_O?eK(XbGVfv>is$4x^Gm!$=uP!|1$`TwIwLHoPisA+HfaN9lXp4^ZQ# ztboAQY{Bs4oJB5rvmP~sp^8VU-~gzwu`1WpIgD&ON8!zND`VFKZXFUeOg!wH@W>|` zb8=2x;}W)S-!JAb&TP}eOs-HXc+m$NfkRel_EH*F<$_wWW-v2UXuW_hWioVA-h=ro zfhdxpr^%Qy$gnPw@g61PI;B|u&x#5fVjFWt-+62}B_3roDLN`6`$`BJGE(yx^RA-S zrFTSGTa0S!ky?GNw$7`qX>G}?YP*OA^@TT*u0z>fb>HYx8P#+s)iPeu9KY+}R~@b$ V_=C}57~ZG&^}=a78usgpcD+&4 z!Fkwl02Y*Ik`PO-u6p(Ab*uY*-Tmz~0AvV`+)V7Y@(Vsz-|&OErax%^imASqPuzDo z_dldef61SiebPGrtj93~0s(T90VsDKwiX1Tl96xWlM)Q%3Q@m_D3o1ZguS(4#p=YlU^0&vHApWD7gX&`PT< zX%CoyK%D?8+!V+gC46!uotiC@0O!omDQP#-1@eN%6Ekre4I{+A!jVGT9w!@x1l;Rx zwF-;abgh2V_gz2ex9d%H*t~B;uitUA>nHzdhg=4I)G_&@*e=!LP9$4~A@6;9Xj zDhZd(5QnOccHOP3qk3^7)@QNkLpFq z!*eJFiLnqKUI58ar|?ju4i9MOskAENS2kE=dmi_pl*A@swxMFO$KF9K<}8CLrI=%> tWajA=lO^fO6uwE`MP`N8}tqN! z9RcuJHil{pP@iYaq;5Pz^2IoV;|)Xd2rwQaR=(^3D_>0k8=8?B$;6zPGnvSVoSB)q zkP9=DE4emT=2}z`GIkw=Bpfn_#KJxlh9o7-nCDQlZxmzy!G4Hbh!)lwj&LWCzz4zy zxC2F`Lyf$u3yMhY>gBqBzg;hux2visH=C**)ooP093 zPiB{!;%(WKt5vmHekidWZ?$|_wt8JX8hnT3(p2RS{ULY=yi2cG|OndLj)wc3GZsH>~!GRL&VpBg<@of!GAB%@= zo1kt{-xp1}UQ~YPPYx_N?31ys*VWk_w$|b(pIF~*tHF7S1B(L%)sJn1vy=PfYK5kJ z{;&?w2)jpz>M*0!xun8Mb${2T`^V6Oc+;3t%1L5F1IpR3&Ab70&J}ca{Y88lGhix% z(Ao4xjF%exx@5<1b}qvcgy^wya5jCiz66G>u!p?XV}<@DMu&}vS)q@~qR5C7m2jVP zZKsJgoQpj*D))?5=;P-QmHRdTMCE~Xzz`7M)e^H?zQRq>87fmDifL zkT=K;>?p?_kSL>6vOVAlM0{v4q zUp-^9r+O}6ykk>mHxhV>Q18gXX^n{hWeZj4dDH#6r@QCaANT*VMhMX&5p&#?`+t-Afj`r4 z`A-UdR=>&cpP*yD4>63l_efgnsm zCQKsfWvn!$H39TV7y-9p&q*6*+j`tdT9B@h-LwtPR?>#1*KxpE6K%WenLArv?uK69 z4?Nxzj+DG95<$1xZJ}dw% zcf;MxZn@jp9e39$N3QGG9lLv3%aKV02UbudqIVz$GL1@-@i@`cOxHw7K_sL}hzLE4 z1Zkj^1Hsl%p$0>*qz|Zr71!ecqFDq&8aQ9s5Qlxppcxvbq!k7k0FsP%mTM;;tl=Tn zN(F^Rsy+^MdR?6Ts+`S=Nj)v+pPH|$s;rjgn}wg6$J6t9QJHUHEvxv7*S>;}VJXab zGAS0d87~&a{48D#qw#EJo|Fjq%B_acWV2Gd)?8fHZc-KFy0~WSo)ycwD&JgFwce?U zi$(n=Dqc^Q^>Q?>qbcNS@mVoHub)M$VN^a17v*B~WITBhEiRYO8YCB&b%1}9T2)+> zFAG-{^<_1`wv?*JFA6=ai;JZ$U!neBGM zST2!Drz*a?oMJLs>!Rg!em*Pea^9NGUyf(fv(d6f69SYoN64UfU035tt($Vyvb<)4Kzf@#k-15N828upZX^aY(TmMtBCS4E4Pt8&WpQ(?v~1OVV*g4udFf5& zbd`C)#@jP91q!kbG)HMNZ3_MgOVk%`d^;FN0I&#_S;M!lGNg{7<+hSdFpoir6*148zb5rU~VE z8bVSj?z=FkG!C)bXRjCP4Kbfpx1oAl++9?R=VK_UzNKs9E*|1|e(_&M5!>To9a9nO z(2cQ)Vb~t}vYsklY9hkpIn?&`Y3gO@+xxV7GuP$2@cuqFw{i7X}wR?!ci(8XFpjd9)aaiA@R5nIu`E$Xz*f%qym*++~j5 ZdM2dQ8n1IUgG}ZGCOOBpqy#jNKLA|+rg#7V literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/043_Compare.mv b/vm/stdlib/compiled/latest/stdlib/043_Compare.mv deleted file mode 100644 index f089e1a6d5b3b694352c3a514ec522db6b55adbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcma)(y-or_5XWbBXLj#qR|F+!jD-q?otmJ*SXk&YXi0<+EyN>$F+PixwXJVu=My-4 zAZTIYWN$upcJKe2yVvcH-~b>)AWJ*cBHlmn*O%D~R^1!s@f|;n_7RLeV3Q-Gjx7Q@ zcIthW>uqE-PSQeStTo2yhDLOf16t5d4i;SwKJ9DAUlha9&3NFh2K{L`^-)2Ebqq%RF_7 z1?0RWaV3ctCtgXig>GCTm7K0go4hV8zNti8GosVKR1X)bKbRZ8m>ZF~GC!7?^h0f3 fUx&NoJw(fE0RlFu;*IK6J*H0(ta7|LGzbt}C4v%3ag(*HDVw$=Q=2Wx)?&*$3=&NWHVM!GC|S-V zGs#Sr$uij{>r7_JB)Q4=ioy4P#NDyJSh`7|S-0Cmj>uOD;&KJdjQ+AN?~{0qxmh`vE6qq|xnD(w!2ly84;O%LwaPJtJ`^V9JFhjyToCVW6 zdg6EIfPJLF_f7!&{ydrw7tnmPNUR_0J$y0@M5BV$KeZUJO}*B-9=5SWe63~76Q3k- z^CfB@pTdy#X&2yUde@&%LWu1%MB6z_=#GU}ee3*$VgBX?lNru$4UZe*+fo|Nci8Yn zL;W_3q#=HX0b_land650J$7jv7X4jjzRXPb)mK*0`8~FZj`RC$*kX?J2kf;9bHw*) z5c@-R863_ZF>8%Gjzhb!{+K3Wf5L8HBJl%abN`f?Z(yQ7V>cj${ByQyGE4l0p5ZU` zi#u*3#c=+SZNQ+`FGxD)pV%p&{+XS+Xs~}_F}8PY z;@bG_l{+hUSKeBAyMAx=fmHQ}uTQVuk#Apnv{GEXSAYN32lB()AIrwAPgfc%&6Rbz zvGV>(Yh|+Dn7BL9DBLZ?w?4ae@7m`deg4VkjSH)1S3msp!OE+v{_54$((2CY)au78 zU#whNeI!5JvMr~ohM90`PK{H;6qM?lmSafMV3y-DlTfa~fpT0T=q`-wf=uYDM(BZx zac(7au7ALU>75ZS9XG)+Oi{{clG~UQ^Hkv_%t3?&%qcNAUX4pL8G!X6ATeSx$H#&N zO@WjcSip3JWJSwz0$Qw=H9P~bEzq>6B#cNl?TipTX+R&%1!KbU^_0oHpp`Hr5jsKf zlmVnMGlk6z*x#Y)IW?bjI!;qMHO=YxjCq_{uEBhauQB8#2!bxy(Ar7IH7sVDQeu;O zP5cmsN3Cu0hceFbXKp8S{agr6A99HI5dGRC$6hESQZ=Ic4xfR z?(a4S8;_go+i_!aud~%ApxN)ogW=s?d#BlZwvX-)y1ls6A2fS3w$a?!=clWdR(Jigcw=C7cL`-Bqpkj+*Y0fDSND3I`|;-J>)p=AUayB)uBU=uZEiO^8*yo$ z@?dXwcl(*W7VmcZ?SY^EUZbVa>9wE42}gA;RRpHeVmzR|TGxBsui}nMe)On9w$>HW z(a@ouX6WY}dJ5-GJZQF>gQk6_-5Ega@Xp=<8p+VWScwSgVXxWgZ^k{Kf_FNDv`3b4 z9<>LLTfOGfLI&uithcn50&Ewm+1r4~G~HW?(jI7S6`QSAYQgq)d+;noAL{Nm)}h75 zX0N+rHFvZbwb2_pnYinTE(P(qIdefn*h$>$G`B&2V-Fh8?5sn2P}8*riReh~ot zpbtMt?9oc?k!kxDY(API8<|g%*xDAQjFPQe$q@Z!2YYI4JdQU$&$*sLSq%tPZ)pR! z8tGPEoOmkZNW^-P!EeRTZ1-8?tGL%)iaUL{YD0%XV{dn>*KEbD#-Q8S$UPC>o2bT) zzk~%h2H{o=$EOg;bhVG!0W%3Yk@M_m-^jH|#A;5=Jc6*3kDL8QriB+2c7&*;2J)E~ zcjdGpaAU96F19;|>@wc&H*)_-?B8e(8rv}4U-NN$*SFl(V$Ms2dRs`sI~EZ#xz&t4%&Cu;_Y}4-;X!_UcA$# zSttOCND--m8k^hAt&!*Yxwn*wa9C4*qR#kB2-gpiPPPXt@mH(=Y-hc@?PLnBW&n9e zuA(rTG&Z7<2polGPfGbfEP6t=A_JU)f{s$V)yxoOhOBa zGw(`%g4k(-mwNwU=3BYq_h)z^S7eBhEXFhE%?MWFxj`01F&zqhr8DczW~a3s7jvl- zS|J(HNI6@3J3BZX+wpcw>i*jCH!5cs$L#d!2Qpb4pD6 z2XUCv_A%oJLj#Ls=Lbm|q_i{>xScMXnC2A7;Vm27PvYL-WGmim?rjgA%YV6)nYuGE z2dE_ad+UWv4Jac9u^`D!EF|Kc_8{DidpqrZpQ?aX+-b+H*0V4a=y!Kw zn-;-r-g*}$#?uCpf&wW|S4cj|072YV!gZt*Kg}IVS08B-N)F1pK3w*leDG{HM#A4g z+0v*3_2o7<$dXN@F~hY#v~-#Orf$vN{_JD!)#*xeM}r=9+>uXBUv z6kN;3Xen^|Ad1PFlh3&sOxc4lL`E?+@q%X@P%ADM4u0@pIhpoN2T!>AV>*5g9nGO2 zhYC65<sxd642n4o&0`t}FD%bnF}| z<`C{2^v85?X_7+a9Kr*9imT>OC5K8m#B&Hw`1)fyLpenEHT2+x#k5Ft(29-o|e4o~NIUhYB3clDDX<7|l@ z;5cWy^iTxg3%Otl&K69`Suc6o;$~k11KsZF)+Wv;%;D?_b2(3@TQEItKBXry@k~FD zeMK!EFU^F$WIka&m+v^Wb*FZQUvp}YoLV6hCdhyy=ey!ImJy{46>|0)tei+UMAFeM z+_~>F`*^tK+kqY7elWZ~B|KSFcnTf~Z_EL4({}>L4+0+Evh5i$ChIC-M6ZT#%mpT} z){K~wCsXVMu%58%Gvchgl;T|Cl;AuzBQDDuDfTE~tps~VK0JW+0>zc7gp$fC`^&yP z0|DK@jg0V3-wV8mg>Q2jw!8$05_@_ zcg0o45LWYfz&#eZxG16|t9K?U+y#7fQkxqLzUi4@@^S&(vRYP(MM{L=c_(~Vj3_hm z%WRp+FZ^gSo!*8kL4591%!i+NogGUfQwPZ7kJT9?0gi6 zsvNP$;TQ5X(2C-$Zl~lidyG`c7m6fV$*y?p{H!=BFJNi#zc;7pnu2+1$}HMdj_Y!| zx-lKkaH1kf1vLe{05w|b=7hEtW`nJ4=_R%@VJjypX~`^XkuO>$w*otjMIjlA2hb%` zZ>}i@U79evf#GBYGPP$cC|@eXPsyp&v6nH0o0pSoDYOcd73 zE*W231P`WTMF<#`p$%g9%wZ*qyb9+u%Vsphi+U?}7WGyV7tFUJ78Se(=fDs-)hKl1 zRKl?-J^KV=7>X;C=a?n0GKKhEut&p>=6FeawHd<6R3$(c8*!y?Pl7k~DP#g@;nz{2 ze^7;Gq#b#;q-7=#kiv(aWvM_+L8|8=xT7p29t*u6P!tKnAq>aq$kbaSq&FeB);;+K zuSA$A9{^V%g@vDx-y`thu)IosKju+Hdu$fg_bHu)WTymI^YDHIqp*7nartl>D3Mh* zcx}H^;3NB;fRFBXN*rYdv)&%XHcRBQ_T02ka5f8@EF?i+RVKMtRE2$N+Uy(^$*(jh zI5=qHP}mhK990yB-P*4jcEdXChA8Y_*8z7ikF-)$6Bj(QSc*pAeh9ppj=WRyJUNga za!Fn~6n(=<^c~TWa{q*mkZI3IvLJF}ZkoC%rA}W?oPJyxlm(GyMv?uFBKxyh%6z_% zvj=^^7fSG>iK9yLBgFL)J_R+Xhx>k|v|lN>H~E!TIj<8>CE;NnI~e*b3H^DCPir&M zyz?PHhGls1ojL8Ul-W7bf?VV!D;lG$Z%@}nIU2_jRVAVcN)nKL28>04Kwm7DN)_1m z7+7>tM;@nlL$anb2;4S}uz*}J$XrnIVMQ*;XS8kgCKvq*pG`dsgE(F$K{7h3N+H}d zJi+l!i7<9xAa_sF5eDC#&xV8*zJOOQI3{qwc^-3-6X}pJa7@f0FD}wj@1DkV<*2ma z`xdB2L;)x2QO_z4RRfN0wZL_^QVq;#N=z2as1B;E1_IQXg3#1rHIV3@EXe4nvWnHJ zJf$qgm-J?`^I@pM={=S{fXWqq@({6F;V+>ie)KS4KC~WH1#)RL?OXPoeIi_gW!Az? zUj#x~;g+b#QBt1|^~njHIVt4A#}stOasJZz#B3A!4OkR7r{u*HM>UQD=e#dokynVT zs1rFba!TBgw+Us0?Kz~7n`sJ>%aYRzw-0{6Af57*mQF#sAeC-GONT;51^d!XCDJK| z7XS&2&Ivd7<60S zqd|%WJyZppAXIiFdiY3gzy?Itday_jk7YN-X+3}wdKk!O#Fgv8n!uZ^)zf9np-kqFFe?96tkhL88&e6ukXJQVSg+b3(9ao}a}rqbda*x2R0; z$fJs06*9B39WC&4aJ`FV)H1YXDZOmV+RoU5TMm~)ex4lER5;{0UNT}nT}Jp{mpUr^ zq7KOBq+SyKhg4BOilI7NAu28a&qm(+JCFBMk9g2WTg|FaQ0tJkV z$_<+`qa`Fhjx4jxFJ*zFD*R=g2we~F_KE2vm=Mxndx^h-H(Saa_h7tmJ31vS>Do0? zK8sFI2~^}b^KZ=_aGbWR|M1II*^BouZi>=I+C12%SvR$7mLn|dAX#E z19?S{qmtpATmer~GSFNet0|!i4Ud(}(FJ)EWIVx80=}Y)r900G?$Qw$`-=Nw0l!b?xZONPbiuSR^c$mp*{eEjW+PgfpT$1sim2Y|Q;^Z)<= literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/044_ConsensusStrategy.mv b/vm/stdlib/compiled/latest/stdlib/044_ConsensusStrategy.mv deleted file mode 100644 index 911f9d5d7692f703c2fef37fb6df0a788cf301ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435 zcmY+By-ve06ov1#lQ@4ZO@%svgxC--(1oE&E5rZ;VK-^xrk2vAic_jE^CG+qkHEst z!b@=5s{DBIy~m%AuZ~|&z5)jTd<2)dKJQ;zSB@Q@ipNiM-&oIoXLk6(E;=uq5r)8k z0|>ytLIGfr0ydp6v8`RpM!`J-nNO}53Ks=-Tp*P@TyQ|foRA?YHhO?mJ0a}>QWwQl zX;f*}CTZ%lQF-f-GS_)0u4*;PvRWCVjQ60I$~5V6#dFp8y3~zM3;nF@r?gnBqwC4t zB)LiCXgt23BuSSbIc;USzu!&Cqi$rbN@cVe{BIA`;I_*2yxl(^r>k_T3*EHmtM#H#tz7OL4%9C|;rv~cC^~E#BNq`HLI_>x!7)Qpz>6#& PB0GQp`!K{I+y22f=4E0{ diff --git a/vm/stdlib/compiled/latest/stdlib/044_dispatchable_fungible_asset.mv b/vm/stdlib/compiled/latest/stdlib/044_dispatchable_fungible_asset.mv new file mode 100644 index 0000000000000000000000000000000000000000..5dd87ece79a40a8494534b05eedf7a56be32f7f1 GIT binary patch literal 2012 zcmah~O>g5w7@lvBXC`)>CQZ}yyWO@+SyloLz94~CLV$#jSnie^JFTIyE8C&ke}cFn z#EBbMF8m+Fg%cMf-f`^Euppvj`p)xyJ?}H__`AJdwLl1Ij6C9<(YJrW?00<5zaife z=O^~FkiV(E_)}e~AG9z(>OW}jd!Il8Mg&pB5Jv(z5^?EZgqe$wFkm6(2}FGd@gYHM zsu5BMV~I4Ou=WUpwa+aQ2#XAaMYbFX>&S)tZ3W9%+lU=w*GUh2Y_AVC+b02*;$UkC zBo6Tq;Uh|sINlmzL{GLcVy9$`B|n?&Vu_!CkDX5ey|8KQ(o$eg8~Y7QgxQA7Hsn`_ z2Z+6Sc!b!qQ`_jRChGZ_M8@y=-XIuk`NJLR5B;&v{2hPdbAQ*@KJpL!BVYIg2)jrU zgc}1>tSM%!MTKNS@>L8NE10fOEC~@(KsY!$quI5PX^J!p<>K*<(soM)xTPc49hy`Q zj8+J?Y$Uf|+sK6z!2(v`V)?=e!q?USj1w*iRF=HSp|D!=s{#g61js`mL^YYT$%3tf zDOOQ@%?lGwr%6`b$Mx(szP?MN`7*!BtPxjLTJy9li&DHK9~l&ScvarZuK8+>5vJ4t$9R9WpOX_`tZ<8{9@Lm*o zRhP>d3!PgFM8Kc2c$nN3aS|z2wOBd)n>0_$xK5)gy8&yo-al4v)M>h*+U^?d#92=m ztX&;-xNIMPF#M0Tdn)PLVrvU7&eezDUCH30hO7Nuh1?MC;1C<(iIA}8fzJ&09USy8 z0HB5|9t;#Ra4Q+AQOFGONXU(&oTrGL@C(hcLxa(UW}0f}3iXlZq2TX$D0DOqwh4yD zdsFBk4fQDW*oGc1RA_oo=s^?-1{z)hp=&UoKo@1;<{<Fp{nf*EIBCcA{D66J_z^ zu_C}vti4lH*k`9vdy-LS847#QU#kl+PK(Bu6^0)Uk< z08`^C7sSROIx!4z*38X~RvN@U=U3Wo#pWQlZp3!OfsxwQaDb-K&iDy?kH6m#(9#J0 Qk%!?VNN^0Cg?&W+0uT{=+W-In literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/045_DaoVoteScripts.mv b/vm/stdlib/compiled/latest/stdlib/045_DaoVoteScripts.mv deleted file mode 100644 index 1ad7b59e76028e68c1749027dfbe10d92aab6363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmYjOL2leI3?wN^vL#vBZIfFLL0;i&f&L&xPX!jP*U1_U?1k-QFZn~CQ1l7?L*LO4 z^b@7zEwBQlAvwblK>ob_>kR-D2#%aln=kyl(QjYvAN+;IceM#W)Nd340)YaSgA!{% zvK9FC0YuFleY?q##lvU(pM=VyN#)K#VEDS`;-`KZQ)Dny!XLY zUI(p^K?!iWq&;8>XaZ_MrG-Y4_7X~DlhkAaV^-;uulf~OX9?3vtHj5T&G>m-x`%e^ zkIQU7wC(sZEK17ep??~>Nq-u@bwk-U^RjytW%>BrA9LiV?p3%PUth$#@o{$?Pu&z= zhIwhu3fJuSQ#a4T7KdieT{am?!MBHIcv_u`Q@tvX09m3t`~9 z2wRzz(+(Zgz&C!45S_Z`n+U1yR80{)*D4r6^yH0KHIvLA%9t#2J7Q30UftD1GGCDO pT>gME z*uo#M;saPy`~Z6vELgE%$LSu8Vy6-cm@2n!_dWOCb04z$yXD_~NeJ;R(xR=Heewh4 zf6<5HNA@kVe~~}g&No3zejofyy+2w~{n`3WG=A+;SXhJ-MmP~f5}P;<;jV2Fi@_ah zVArHXv~WV~&?c-+2#cUumV{r#bH^tfd*Ttxa)_dgkbrQAa{^*VV(Hpg=FQ=P-uE0A z`bDDGB@YKHK9*GjI7bvt*Nkqxf#Z#U;b60=*R2)~&WCdlx7%}sd0oV0m*y7;+g${} zzP!9btShU`BK+z(IO5k-7wh%4b;56KY!ZHRixGC~JovHOVuA3zjcvmBH!cu%XJ>)X z&LwzZ@h%*8FKh9xatXT!(yVt4blGATD}TqV_pfWjgBt)pya|!NdrJ|vejB2EZ(k9* zaR(yZj5TcQu9gjVwtWv71Rd3hBGsFZdMiEE>n?VddgnSlE_++icGT!BMYOXR?L?QN z-RN?3HM$gVHUX?gfG)ruOCj>lOUoZZUN!57(KDM!!Bd^D8f{AidJ za$FYq@JM}>75SIhXW8J>QC~hbK>Hv)PKSq?{lTOdLcGxmbU&nf1XJhxXXQOdm`kxo+a6HJg?^bn| zJkQIgNs$efvf+4AyhbR=UgYC)+!&0C!z`&x+W9!C5=_!EInL5?>EdiqjK0c-jg$0c za*!pHp-$RGNu-WM$e<%M{kSrMfC^-CgHVr44mnT9?f5t~o*a zCwx*4Vu2KfWiXwYSzck4Us8^esb;b2=LE#7i2X_x9c36WJsvfG#9P3?npwphLD#R9 zs`6xJsEI(;G~~y5`LbF2nvQL|-oMH+FhgJG6P=D)pDN?NnuvOQkZD#7(_=>u1qxHj zY2!oP@H17i%}F`hczfQnVtKP-jRyE4p8nxK)}8&?h}18sVRrA{n_iH$uh%k7G3$GD zfA7CqzQ|E$k6zk&n_=}zoQ|?{@n3)|#}6O84f_voon6u*%7&30E-Mx=B|RCgC?4=|)yJ12_7rY9a3KN#7jEqPF2&t}Y|nY% z>;T@vjX83KP_8LlY}>S^V1=8CBN~tKwTv4!g9cG!L50RviJXsB zok&2X)?8V!`OJ$cO4BgCz+1kITZ)N}DNzVJri3kkMGmp>1;x$EB3D(QV^g50_Kuiy zz7<}i4svnBs?NS~f~?{;TsD1L*Lqz$rmhCR-jt4RiffwTp)brs%Ob98YQ^ugH`xJIMvc~Dwvv`@d e4XcLsXreKAWbim0#ueH@5_NN5P3fw>TmKENYDm-o literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/046_DummyToken.mv b/vm/stdlib/compiled/latest/stdlib/046_DummyToken.mv deleted file mode 100644 index 27c9e6f5a249bebeab991d21662926b3e40f900d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmZ8fJ&)8d5SN*HESAqd}rT&__99?kqOhlaoDkr)&8G`~wOk z_%ZwvYI?@mMYl&JKY3=}ycxys+r!^R0f0eJq#lXKujNoCH*eEl_=EHxQK>Jo$iK=5 z_NTllz9*8o2n3J<2n`@D5J?0iYaqS%3@HkfpkrHx2~e3LN;=9SR+KX?$S^KZ zkd%0@D1cVw5oef=GEqvUN~_EoWfdBMJQI~gBxNNtG>|e9GvHDN#8(Ywm$rm+1v%!D zh75R!nj;ydGRR+U`~K?v=93%Ls}MF}Oy*$q?z|1Id%g|Bi}s>D^=m&}?UQf(Fx@8Q zDRXi^_{q0xf9*;?HeD2Lrl=}=W*76dX}d1CaWuQ~NAK31_|RUIcc+wh^;c29`Ru3j zhPnGq%HYoYIJvMJazD6!bLpCyddvEkjw>8A7rf!v_HNf(`Qefm@0vE8ZF@INtC{}a zKz_Z$4~2I7m{0&=&hLR{{`nLy@d4NZh^Q9wDOO;hW*YlJFLU-pjXBh084WJ+Bu2uL v0YghVA(r57swIhNDJ*k*RvjNM0PsX6iB4gWAM*gJ&|sZJAI83DJa*_`%eI8d diff --git a/vm/stdlib/compiled/latest/stdlib/046_coin.mv b/vm/stdlib/compiled/latest/stdlib/046_coin.mv new file mode 100644 index 0000000000000000000000000000000000000000..16f6f5a7f09a7c471b27565a4ddd7ed55505bd2c GIT binary patch literal 12047 zcmbVS>318~b)WZUpEnp_0B{vWf)Yhi5(SB}mLWx13nfdkEz1^VNw#If5HX}+fdCDF zmZ&)KnmCEGw@I6(&DK3l)1*zeG~Ju7`Pl!U{m^szso!%>`@3%zLbB7k!8v&I<}LT# zckk~mZ)UzR@}I&`6vbo8G@t$Vobjodw_NA5 z!M`%`Z*!jeUvppInfd(lCGUIB7qdTlo-0h@imGUet{94`ScC+g-_Ulv*VBJA^KV&J&Fxc3J|A<9>+hsY5`!R#=OQ?;@SvxRxr>sq2{w}mn zqGbyIY5aGiZI7I>*HGMpCQ}sq5dKFEMV!VRvloS8KV~TQMMKG5GL^zjQ{f#=$=}hq zivG-pHN||LY0O~u&oN68Ut?Tx{*qyx8StU(qfts(V<`9QR30#>WtMT24>4NtumSFs zBR2I0jzBr*qL_E7;TX%HT=1xV+@bQ}ER`p6RGu`bJmq5x${ChNdA30HM~YOQle5nE z(U=PswLIECfb#LdA(T%HZ$tUy$aa)ZxuYmAk5PSz7QZ5!pXMdhuZ~lBZ3mUt8I{k- z_GdW}er_j~HzufjUb6hcE?TOhQu!jAL|K)ymh)4JQe)F-2xY^HELY{ETf|tM_SsQ%+4cj1A7G8m5?Z0JLi1y#HJGkTDA`UX&A~CZc!ANlVd**In^gpl<=N0!K z*+Te2X9vqu<>|6lJ}Iu9fA;)y z<(cx)vRl46yL`TO_42jL*Ds4(=Z}?Z&)vRZme0>^tn4kHxOVc|iR&k?kCrblEGW^*59bCc!ECzeiJ&M)OZ&dQ%)H$K5S?=tZ& zyY?=-Zj=|NKf`8EEM8nZv$$w3lr!bp$Jp)8=h-YbfN-WWl?#>GiXj+ERac`5lZ{La zz!h18Xf_3$m%`*IW(_gS=3I|Qxw6ZnG8s3_tZm$s{VE!139cJLj*OPz){w=SA!r)6 zMyxFA)XlB!R#7)xYt$O$OqDCj4mpxZK8&QB;b+JuuB-8S(P9xJQ5~C-%vqzfBWsLG zK^&@vtE(U&*)v>l$~0BglWy9Ofg8CmdBLW1%(RuFs;a~xNK!!p0_7pJCX?j?DJh*f z*epp<(lI0v$;1S+CRD>3k}WEa2<>3j4rW3arnLha7-NPt#xYeRcF<+ukBA}H;IdQ; zv^H(zKDJ~FSRG9H(zS?HIV zxSXUr#8!DvtU{lI(UoE2qgsAcT&;Fn?fh1?vQk|}%VuV|9ag(xrBh#RhHbqT-rQK#!*;vX z*27oAX4hIl_eMMHcq<#t)%wjwSgCe8VOLw-sMn0v&6mREuF+cW)?3X&bg4EfTg&vX zx9e-w_GTrW-NCA%5iMtQy6t*%HP_kfbi=huwN}GIov@>Kt60eHZmx%wdUK_fI~8w% znisJ*@AO8yxmaDV-mEw3-A#FWIb69ME{FB?u0}(ADi&MKSHgA&%w4Rm3u-wNuD3e% z?f})#(gx30o3%!GCTxVX2aDP-U`d-QOT?>7wQKe6ty;T!$BgH@@l}$@J<<-td*K#8 znTz$+c9rNo(x|R_7wgULR;Rq(V%B}KT5m6s5-{AOo3KVJUcu%EqT5Ge$)6&@V`j%) z+E`z2Y+`pS_0{~9cD31A3ENvVt%Ti7QjvW2RU3`gok~Yeu57G>$6DAiZ&n-C=5nar zgiLKJDl6^QT1M8udDw1N8}2e#N)%*VlKK|1EuxmWkH>!5(`{{OU1DZ*xz%U@FVHFa z5|EHiC2CDlDmGDCmRjpppqWaydONJFOQ}>ON9}NBIL548B^pdBuB=tpy|{~J09jTo zTn7Fc9kUkcJ%yk+8;JMu$zSUwYb>~?{?cTJrQ3k&`D;c)m{!OF^hh}2}xX9OMhxSQj8S{ zkG5V|4Z8{XL^LL04KnQQliPsUL=R8~dgg*3iJuC_7)#P3oqDt0tydfMd*R4d^}U-e z^mHar8SH6`p#~iRsJnVP?!cbFdmFnCv5Le%G`O$csl=WO46WAT8DJ4Z)cT;vE2NJC zdSV1us@+N>taiH8Cc&|_Vy&38Ns$u7?}g2=wd&?gLLa$_E(tajwH&6eh3(aFK$h=a ze`rmbdHCLW8p%8(1)qpTYgX67{s)j;3GZTq9gB>eypD+biTP|?Pmq($P1G6B9gc_f zYB3?3$gjU0!iP5>1j_@>3E|=UNB0soA{`l>&9$4YhLv;`Hk$7Ntrz>3*xl%_R2v(i zMS3Scs*&oP#I3j5qPDTNhA2@F8#OE0@vzikuTmoX!_M_9GD1WHAUvbGMzLjXtZielB$>4s>|3z@~8G*~QAe9hcP+=+%%);79oXXBB(Qj^c!%iU{MKfygpuI`-ij$^T+|jyQu1TUJ zyBZ>4+e+QG#p_V)CWn@6k&vNcWi4E*cl~ryf}*~(r58$D;}Sgi>tTDX-jQ*(7B=f) zZFH?w+d$}!j3{!2WNfjR99l2xbbDbl0~I6=z5`2KsctkP&szmDm!pW65OG@@-AZev zf(W%5diPre!n91~D4UQuN+IzZGJlEE)J!au2(o@G-z1W>+D@z!ECOpGP;JJ}(`bav z)$T2^(X75wtv5*Z+meuezj~w#*UmkC;Y?Q2Z?zLmyYild0-pj$5TzcGcd}t~k%t&W zRu@+*E65kq4P_GlErVH(1lQ}a{6sgEWaHXOz0vR!)uzpTy{b)HeK2r;1U5P_nB`k| z;@bOTs^!J^sx^|oCu zm55>~Y_>L5Z{0`9;ipf1AUY{aU^FA~ zdcD*V273GCw3*VW=rKp>R<%<~x=HopQk3)aNgI)qQy{1|&V-Fkhxhl@sx9bWo`^9Z z#mzwf{T+#r9bOu{zXuZU#s(UZad@(k#O?NOBtb-P-vj$ktu1u`4&OZ;$)=}|8s5ik zIDBgIJ!4m@?>lmO>OCV#L^IM#DNQd$ZfPD~Z`~^4VSg9TsM&^mq@|)w)i`?v&mH4O zojO!dOCw%hp)koNC^rTL_K~Ltaemk9u zXPrbsaJH$sv}A?~kBV%vc#iYC*4Ud&_c?nDPwMhqeOo?>9{H%eZ2y?N3>7$ghp}QZ ztuG?oPo%A~S~klJFAlu2QdaQjzA)nm#ediw+f&FYF2_Sf-be2@xMuAe3lvv#6jycB zV~XYp^|*3WIm(JI({o9vQC#L}0n>(rlF9h@y3<88P|1Ox8Lcl7E`>gPToc;}>&XHL#^VsmTQ0DPCy+_PDw86k%;77R2 z9bOLdTEE~y!C{B}C-gzg6pT|YazYP^E?#^4PjbA-Wagx;NP z@2Z~aYQYZRL-V-*Lea0dI_!r8J`n5-CW2k&q<@#bqv^n$OSV+ z22_)K(j~;zBFDE4D$x4uZF3rfN#?qz1SSNtkN6J^M*&KYl8L*H;~dqBC2dgOPP_K~ z`jr2YHW};?_#6ekGOq_^$2p=$HzL???gmX#tu7om2o{X!A(TxJW7-wCKLJz@lLPb{ z+9iKYyI?_hj|+EqMoP-ipRy&gO#Q0un!?nc(W~Yj5S7?B1$hOcd%$m+d(kX$&+%=H zLJoLdWjveI;f!-hU1!{-&TqMnC81ra0Y z02B_J)I7aFf}^lPBBjOw2$1znoBJ?a=!D2_`%mW34HfnEt7;`rD`I>FQd8oK@d4zQs2zmEeP(d$M3=oo}EKI0Evx9(dht)A%DCVetXU^cG2+p^!!JprSANCz*T(hJnHw_Y@ zbBvd?ybd5S)ATo|U<&ulkzLw$9sUSk0$>ch?mg4rCCv#<88kVnxoxL*P(MmzG@`?h z197-d75dh+v*vba`a{7S;@Y`j9^S_mmN11e$6dq|Ax?06PPOMWdrs$L#IH#K2j8gW z3;PPZL@iF#lI+aF&c@+&wYB}hF-_GCN)DzZeq9S8dmmH!Lod9r0 zp)`G57yvF37JzutjuE^!MzGNM4q6spb&$6@7$=$OWt{IM{aMXD$ZtUy{@fKtl67#s zCxal<01n7z`z;Q>Ol(3!9)Ro;c7?px3^-U^fC0g7keBia(xV#q$2i|5mtn$Dg5xF4 zu#gvF6|Kl8Vbw6&^=Hg7%sq~}h|i|ye|QQqfwf7QAeVwPVRH{l2S1B2OVQ`NP##w1 z5r2^3;IjgV>V*F~lb1IT?}L;68!T@Gr@+{0;RK7G1{ae$k8y1QKt7|NbSzvC1ZN$? zv4Tf-fUE^Kan7-KXG+?Vuo1E0S?zpgU&h>@xFtSCE-5<=KacE^NA64Te(93XVK_sFQLA|ZK*?KW&A_nN$c=}andTY zoV+%O_*Nj|I4>Ob-(mVNY#vKt;7m^}H;a6qG}Fy(&>IEv9@FPAeF{o0g|c4LXM6KG zHOO#$ln3+ij_-SRiW`G`Jr@ZRu27CI<#+VC}pcpaeVd|Q-vTw_0#Fl;jN)AhF<3Q%n>=q8|<+8 z5SWrVN3ev16Gm_zq zUGEoWpLsahD8@en7jqPhC3&M&By`DB&YLW69!Z8mMm%^HvSJ|foOu-OGW+9m^if5qD;nJTr6kjVQ^F>ePq zoc<#=YW>0Uq92KS5yw1J{|du74@tPY%^6HZGNFANMCeQ|27?#efy_2BK*v1&JCgP> zFeGzzZyOF2l%5-68^?FN(9c$WM+r2(LB|KV+*I*7H^-Nwc$+}qpy!cq!yUg1A`~G%uHFdVh^)KOcrQEIFy?VThMGn_ovB z!rSauvBmflirJ6j>Qn0CaTik84})KFm#=4bWBj+P(JwKDT&nyK|YF|N4K(>TmP4+F$cEbfg3bBb*2#i9=jc!DyaO zQLZfYEv-rd4USU&A*YhM2M!@MLMb70U}&8(qyablyfCyW4P9X9L|W8A+IA~QJC-iG z#(v4tWlti%;u@P(OV^Y@e%&{8!#CQ^Y7ObuoQbw=y>@)V@74{yV@i_`={z>`aTBw! zPbw9{AGIl!@M#ANVUJM&`^#wO9?})0-PL&_j{JGTj!{KV{Brl<|X3UJ5Iab3Nl|DFD$-!zY zk7gXjCLpI1wTUS(j`0R`2P1F^T1n(k=1kme@~PScvFRwnC|w7{#LxP0n~E`OAvpdR zaJz7eOh@@RyL6&nFC8ZZ@1=1fbe5%=(64n;$UHtzbmrzoFB})~pi;y`ofpw?R4Fb; zI*gOE)PJT&X&x6}7>CZ+aiXK_o49z@&!UT`(I|Qu58~p|eNpBLuIs8(kqxmH_50z# zh6yjqIAL!VsBP3Y$eowbAWC|gKgAxL{-ma@K31Ehm$$@Qo|@bcQ}xqXs)~LS=S3by z#qPN-ZV4EUbQY)myYI0=6tf~Uc<#K%vPg?)u=gILY4u*5#6=tp;_viIoQHZiDsJq4 z`!;2{XB%;zkM%9BZf1IzzP`<3skE4u_tr)(<|8~9H$``+)~iz{jE3fXhUwYV9uGt? z)4rUx*qMn8^H#F;cNOLFx;j;Il0aCjy{o;Elg*r)x!Y@zD|=GEjFSF9*UGaNma6`E zIJ^wcVm;{lMf$ByLJMOiUPptmt|Vy@o?$b6PYm-IcJJr)X$pP>KMf&$>2f%#gO_{1Y8u)*C&(?ruJDDoK`k}ll`93&JL+FjsG zNQX6+_PXR0e5j$;ryd;OyLmq#U8dlGDAMI%Mh3oS$uSNvO2JGSQ^+y$IQ%Fq-u1|} zj5}Ni*Wr!TJ*Bw1 z1U^G#*%PQ7QNV8loE;uH6itjSo10*U>AR9SlvFyN0buf*^h<0bH-J$Ubqhvg2Q$%Y z1`5$WB2dS@p{A$C=I8hUfh$(7CAQrG1jwamn$(k*Xw{NbFD|Un!Dx8mCJ{s^4NmJx0o|UeGCW5hf(%7+~ z+L+zsXU#i&0iPv^ZJ&yx$x`fF^}f%2h8x4Lp|Qp9i2GQu6oBhDRQBt9Z0gWX=I1qi9Q!1G#|h0Ct1diJ=o> QPXdZpjRiaq_yI%y2MlW8-~a#s literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/048_EVMAddress.mv b/vm/stdlib/compiled/latest/stdlib/048_EVMAddress.mv deleted file mode 100644 index 553e5c0c59c6ab712bd6cf7baf64acf673b63cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmYk2&q@P9491g8CbK&;TZ$G6;-%D+pdeD%n|ko*(OygcELPOEbXQ7G9(@3xz<2Ty zya}Fs0JF7x5f&>VPEZo<^@N%{fs!XhhQ??<;I3!BiUZ<=x`@MM0=_}`SUsO-0t$RJM*iCm$iZMHL5%!@^mm*yF4UTXISArm{!g zf)mA!H-HDAiYvv58xO#NM}Qv1Np_hkwP$*|zpwj~X8hy+-&O&DLr7Ti2|xV~#jiM) zf8y^L{ltG3`mZQa|3qJyU-TXKhyIQCzISTygJXcefP(-D3L?-D3jm`5EIm#G_9X)H zVT1s<73TP!2=+M4hUG{|fH6VBHlf0fMiBeN!tYsy!0%hCGR-GymM24wPdgp~-`18E=voDLXeV(uKvtm)Smv-YPpvG;sUQ)d0FTZ}iHC^Pz zGFwtcHoZydzl(5pT9xzSd|mr2pH8cF**4j{sLRo>jhY)bB*uIuu)15=bmTjY!4jTfO()>g78NfCWrx1Ft*%gbzD_{Gd@ zgvqLTR5V#rExkIcNX`q}T;!{)_RH$E7tcxMy`1!`+w4aFd7Ur)MOA+r&HSorigvt- zn37(U*;MO#>XV{;P1Ve@ygpwqec6h#D!m9y$>+8AZ~SfT>Sg!R#JZhNj&A$NE{gV5 zw#w^#vGCMbezx#gvtF$hm&0q}<{eacEpb`3r1-j=(Vg)2K(5(l%{9N7(ShxTOg5A5 z$9&^<-}R82zFZML1Yo!;k>MVF>5So>?)-3ucj;sbhAciXkm^)8)@KtCS~?3D;W4dn z>@ebwaR3%4Y(#GUgeBzV7AzmKXM{(!B_j)|Q~z!TC343NrrPp}FlbqbwD@W7y5=E1 zLrN8hTOaiy9b9oZX4r>LhTE|lgdsocIbpaFhvGzzj5PeTm$0$HhhkqI(t))MBS@2D z%jvSZ8rzP`ez#?D2rqh!bD;L4P-7&XvJsm|Mpq}|&I$E{3EjoFoXlY0oG4;vf%ixz zhNQgWg#&TlBC$>)VmY+zEmpc>ET=Y69@2$N+7h9D#F!$5_O?l5XCRX4I6NQ6dZHb7 z%%KI-DM^^IMM8*37xrK~WK#|N5fhO#5leTd$)LWImRU&>3knw#dWH1A(2f599HI|$ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/049_FlexiDagConfig.mv b/vm/stdlib/compiled/latest/stdlib/049_FlexiDagConfig.mv deleted file mode 100644 index 50363aad2d38813b79e3db9110a7ffe10a62642e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmYk2J5Iwu5Qb-V*Sm@BSWZCDP*77K%CsniYpgc$c)gP4Ag_7efts2taReF)F2NWJ zi7DpsYvz;wc|ZHkGytRsT4*KHb9JGT%Tu#`#n}gz=_e-n7hWyigy1y<&IUko2TDkQ z1Qnp>VuaBw&x}MPRiZFKDRe$cfOFo-d749U+tO3Gaei~?>frTM7Mnv)*HzV1j1)_% zYuXRtfowy;H$xh_Fa+0z7dq~QpPem)Lo`1a^es{o*nkWlhiJbi=mJsw8C z>*f_n4w6`SST&^p4b-$!f2sUS;8J* zgor@{(qUyxCA>o_VU-D3^maQb{f=g|2MjW68--mj8TU(21S=8e2)ml0NLyfRSXbF> zo|i1^>Z-if`D|9Nt1fa)Q#X-&<*H8AtFEjo)t1+lYt)Nim~NLB^Srut-+QxzAL^pK z+U)Rrm0y;NvfCW}Km4*@6s{TW(q(y3G_GwQY*}RPb=h{=<>nSYE?nC+^(I?}96Pev z>@LfpTbA7&97tt>{IPr8HTkUjsOR9?-On^$tuGg4JI^Y2vy1oWzfg8lcJq7bkC}W| zH}0cZMC-ae{{HQ#SNUd9=SB1?U#y)9lv^9>`7*DHg%f;6^<%hz!EF)vc)Vl6k%NcX zl`pHW(v@qLW!v(FWreFsSLj^@`ensQ$|7sKymKRezTli~!^yT@I(bzt7Gpk4y>4cX zuVJ3A+m2(DZRYpQWzBtYlP%XB57hl1irDS`i})|GQwjIEEs0EYz&+>J2e%z82tVO= z-1fRA9zLOYpg~FtXD}i3y0Gw!{aEdBzkZ7e4+l%*JUx;&f&aXw~UB_#bVa>LA-}p7LSA=>@klC`-TC|CtZl&wB%cseA|+} z?gsJSPa;bEr)iH8?}I+rXFP@d&>DPb$#+2fOJ@Oa?3nqyGmxIXuM!r?)=6)*%DHmJ_>QLXMl=_@me+ohwbrCQiHY{jBJlImsZ5Fr)&&I}}KF&rtFbD{< zC@kxoT+GMk?u&VOTAW3ARC!q~t5yzQ%oq8mlgT2ls=RVf7K{0!a!xMuvhI8~&EFI+ zM`x|2`0=PdcYktG7xOasSuxA2dNjKTn&2--^(g!zziNcWS&t^aTvm0K+uZR=I2%>j zw3roj^m;lU|0=tYO)J-kn$@GlSzep*e0H&{^IMxc*P1eaQ)llu#5v-&>9X9ykMnY} zGAoy}*ZHDfl-YcdP4e*~A609SWl?&fV6ui@hzble8+?sw~8yp4X$PMdmKc z@iec@@?tUq)@HLA*ipR5uSSbWc9Aby4E;4l<7Ah{fVtW3WKx`-7USi#ew$qtfWt0Vn$U?X_K;pPuI9y12}<^Sn4a zuf64m&obbSi}DiXoMbr4aXG)rX2o<`R5=PYsd{T+*D*BewSqKw+IFyEv-73} z@CjcZl>7Ng=KjVFH@V^diSMx;BEIHY8I^a>br=PlePYCOv{b)f$#zOp^mK48X8NOC30WqAT^j_)=1ZP(Sds=X@r){qr?r zUwg_EpF2NCIHlW&E0!K9rW4cC3K4mtqmGghSdqvC562RkNFBS0ada1}U9+h-p!E_L zKdff-WEgp=f^8&HizaeXMLWv$?Fvn07Z09FxJ4|5ehZ9mnE{xG^ai@r zk((ktf{S5K#{dwjNOe_gkOvC@@2U;$`^vZFP=S)Vr;Y5Xo(f|>8TKU~_B}Qn^mMAU zGBQ>8Z%;I-bMHEw9(l|_@7uxAK$5eEcbIcTt!qiC=r3}WDaL1U(1cnSh>l=|L zOd!yZQD2x)%GDpaAiqIRd5_ElwqFbE{z<+^`*L`j`(fA7O4`4luVd z4={HmId;3`2~oG+Pp`vVKi^Sw=@ZK28g4H^H{EW-Ntj*}MZ!XexIm%7D7u|>)|35-Wnvb{?RHI#I0G*g|j<#jSvsi6Fef%hXsh+-o_mxy|Rw Qz7NfXSK`J+afedmzpOUlm;e9( diff --git a/vm/stdlib/compiled/latest/stdlib/050_dao.mv b/vm/stdlib/compiled/latest/stdlib/050_dao.mv new file mode 100644 index 0000000000000000000000000000000000000000..d1ab0c045341b58c68440702688ddbba230e7c60 GIT binary patch literal 5305 zcmbVQNpl;=74CJG?j9@zKuRPyBt%joZCMnxkV8q9VoUOpL|)=}Pl7QkDFQJzyws7L*mu!g7) zeL|{)GO(*L*UfU*%?a0?k)Fk!^}*FA^P#fc0@t>yQv()@6#9_3P(-`rAdM2m_*~h- zS7z*Zl^5-TwMx}?=ec8cq2_j2&-UAZOoTi)>o$0P&aS%X+811V>5PSJo^|NUg?UW2 z+-6r?dzC^{@v1RIyoM%teX&B=x0fIv`wmrUuWeqBuin`3w!NJ=j=g#k7wgh9l53BK@U*aF$|UE$W-KHj zL=(U`G|R?g3>D1FiLm6U1%hTALrOW-1T44&XDWT|=X1`u;ApVF?I`e^3&A}TQtkv1 z*l|pKI%J@boKX>R@T9`m0S&;{$!VLhfZ*p;pq{bHd6`6k1gii5{5`XNyi`EwkcN~& zfAqx72o_p1xyGl={lL}|9 zH|h?>Ua!-Y?eyX3K&JhEuP@WbX?Ixcb(?#SS{<~#?tbUM>m3g}y{G4w8E4EI`tVe>Ii8iE1m#tUui+wYw;hiU() z)3uD6$N3JX-D^%3*~$K4=h&?(V=|^{LhfN&0HmKj?)@}lJC}Ys?6>xYr&O3g|FZ`v z)CYaD3yM>0r>zdsVQ#D7QET9~DM6xUwy@bw4_ha*4|?s+{z+z+yRGBa!_Hx6cv3!c z;3nLXvnX`aCsR}J_;7U4=@ut4r=NBP!$CBecVOAVWac#TvuRrUWR#B5Q&BT{%qOE> ze{|%;9Ox;{s{`oqwA>{Ngz4exOp)>w;5hAfdhOXMNY2~ZDH?SlO>WhJZ{64I?VD*{ zQ9jA|%;d8v9;K&kU7KjS=VGVnLRPy7dac!MAEuT|Y6IBDP=;omc95H-uOL%@*tAg_ zq}{d~g!{dIW{#+JfWXg#ZNSrE%S=1b%O>8NE+h0rmQGtbRb}g-pQh4E&=K}}b5c8_lZuir{0Ctg}8>Qm2wBIvB#A3JE84N~gU!_N#VWx(kN2VDE zez(_6{Lc~AGqqEfQJwc2d0-T~evg1&*{9du|Fna$rPyNKVWu+^n<7H&rpt=e7rqLg+4yVGs1#tnOqkf>SNK)7WKZ*J z{JK3>`HnkW8B+=0l{ffJeoMS4Zu2{QLww5~e3UcxGEjnvU77H^?p(P?C6h1n`*K&_ zqpt{77cq@VjQa&xi-pe=POk*FwubPf!GY)p<)sUX-Xf-;3Ol5#SVPRpMPPJ+`hI!& zf+FRHDXQX4Djoo=inpjS%Ir`_yD7Ips15avr8PUOszgJ)DDUOq2>f+H8O;-r?eK&d zDRGs87+i^6Y9d{TB8x3V4qMVhM|Y?$8L6cyC*l^{7Dj7kJWY+Sizd**gt~m)D6O@p z1C5Jh@hz_Ucxu1N!o?7WI>#0xmglbBu9a&YhA=c%VHG`&FQ9rcWsa)wqzI2Ll zdMm3pKPUFUT_>I~x!57Z77$x%Yei3UC}5yKs0AdKkUX$*%g%(K%`M7SF5)Rb6JmrC zK3t*$!(6o;bXXn>;%;np`pBAGJ*Wifx_yVfJk`T7+<~*8f;=E zTN4dyg^e*pRacxXE?ZhehkO?pUA1pA_iKoo76aqUceLG0W3N{%sBDCM8%mf&i3fhc zaQUWRG#uU$2rV0SxUj-gK0FmL%TO(?TjMEqEzux!_Onu1{pT|C)iKR1KwyD&jr%Ab zX^a*#Px=L$aw_-QEwXJAp9OdX(&vgcSnviRJ5kl(ePf?a?q?kn)ilLb8iYI%iD7uu zQ1LuAyGfUY7s3}WQX3@*T8*Hc)dE4PSp!PV+iRy)i)nC-yd*NDKz0gMW?y>IEk!OR zg#_7}mjVwl4jNR~i49l5kVSI42>(t2V@&}p)fC?%tKu@c_L{gLFIwX&aM2v-a!rY; zHHj7g7HUXunG~6QP8K&6p1%2SRY)25(&pLpR*@`aKxVhXixFGFeG8%Wm55~{!}2LU z=jDb2VkfGZ=DVB~u-m0ZB8+d#nf4nZkdc+vD_^=WS*l19sof}2uWMLJ3rX0MF>Fz%lLOtynb42n~Im!J$2 z9o``>fCIk@zFxsgYC71Sv6XO!CyRa!P`}_OHCC~u4U)Uk<|A6C6T-0amSQ`VDk5%M z*H{%U+r8+|Vl|>RsU@-T{5i~MfhINVvV{L-R|&N}W4r{0NzNhOh30d{PgbrQ>7T&@ zhU!;Csg-B0w8z@z{XDB>C&tbF|94`*g16!F!uV*Imkn4LM}s>T0L~7>b-9^??V+G` zq)>uapFIqmM?5TJRai!4RrQ%eAwx{8-ViOzT-~5JGbx4B)?^#zS2!yTo3$B@GW~2u ze<_>F(p6TQWyo}dcf_)kWJt-mZ_cA+)7tVl^UZk_$2`u0$1RlkuhPX98q^}x0>t}V z=njB+xn$$r79J>t>Kt(t9|*)D5WX!jCSFAOMsl1NrLmh=g_gK#WEUWNI^V_zA5>Di zz9AN54A)*lAwww@EAqU%-e|!VkdWf`imSRdd9$jUC$C)rn5(}o3z5+7dcfgn&7GfF z-CAf|i%V6uI6W^`89q3j;>%UWh@gVwzKsK!2`2IBgEO2;ECeCP#f}hrDYhT*Vixll eH4$Hz{CZFi>#DBnrXIzGxEPn>ay%1P>g0dO+UR5e literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/051_FixedPoint32.mv b/vm/stdlib/compiled/latest/stdlib/051_FixedPoint32.mv deleted file mode 100644 index 2ecc1abb826e4f91bc83f633ac7e73b8f52ffd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmZuuU2YRG5cd3dy?EU;RH+125ot@62P%cM39s}4c;*JHRo6`|ZIWu)lyU~{PzksV zN8kz^qKw0`0;%&b{yg)2pU3vs{a;z4l(L{0nJGQeF9+t$7f63VKlur7?Hy|O9q(c5 z8>0|GDWep|l~59sR5eIS1VM_D9!WwXNEHxLsu-AA0lW9%)|VevVcDFWChzKcReu~@ z)V^qZep#;;d0jMNwJfUL|BIjUo1$8KTZWrZ`h5L*x;6KWu-k@Ptg9wmSD#}`Z@B%i zlr@xjQP0;4zifI{ScE3`w-?@*zLcB%8$hXV_mp0C=&D2W4uuwR|Gtg3Ag=<3;=}Nn zRkO+Y*y#*rli}F0<Qya%-snejIn3R9f` diff --git a/vm/stdlib/compiled/latest/stdlib/051_dao_treasury_withdraw_proposal.mv b/vm/stdlib/compiled/latest/stdlib/051_dao_treasury_withdraw_proposal.mv new file mode 100644 index 0000000000000000000000000000000000000000..afe16bd59ec944cc9ee58e31d945a3ff2a5b8d1b GIT binary patch literal 1028 zcmaJ=y>8S%5T4l||LywXy9AOW;UEQ~p+<*@y;i^KAweP8l`cX zq%s_&G?1JE38Wwx1NRoA)SCQoOMB6&MV`hy2(}Bl#8sssvEOZ zx+t8fYg0$JRO#u4>YY6|)%euu)yfpNmnV9q&&oyFT#e18$=k-h5CLiLY|JEq-R5I$PNMTsgDWu85q;O?hElpqI9-nqXyIX$zX`)xq1cGTPlwwQnvP zr}Jj}63QE;t&&Zv%Fg1-HfrVx3)yr{s_ynep_{g6hp zjZGu7)#kStLNh*OBZ>rf`%%Kw&%K|pLxF-!VHYHqG=U*MW`bwJuLcZ*=Tm$QFF{bj zr$jOVf=y|^C1Ny1NjkhB$1LJ$7lA&)WAGKc0Ydy14fm!@@`MQfjD=iw7%~(+Mi4RCu;E#J z!`V+M&wfb)1OfpP6rcel1E86KVGNctkVpmK#?5O5GzWu*&a6TsQwKm92sC2hJ<$0` zH5p3C6DqWb77$4X%VTsvOvZyZ#hhc2zwg?I*j%>FuCA_!t{h@@AEr>ey}Z)Lynfep zZP)ATx@uy#tm07Y4(&y`*|fLKQ0(h|$R>Pq(4CTM->%EOtDAbL%YFS2)1GBs^pD_J zc9PFdQ%-QWYtH{McRtQt-xuX}+r_?L+}y6&&ZnY@Uy7p-cS;rQZh0g{ykp0cu36oD zW?S2$ANVQ+Tj2+tE)+KYjfn!z_-6UJ$au&w;2cxP37IJ2VFg4llbDkjliEY#aRDnN u$#JrDkl8?vRwRuIe*6rXd+lijfraKG#r#k&Nc~5>NA7@}^~LzZ#`Omiz=Ci9 diff --git a/vm/stdlib/compiled/latest/stdlib/052_block_reward_config.mv b/vm/stdlib/compiled/latest/stdlib/052_block_reward_config.mv new file mode 100644 index 0000000000000000000000000000000000000000..62ac4eb487db599c3af9cef6473759cd37c0a02c GIT binary patch literal 427 zcmZutOHRWu5SD)-Va@xDpY>iYKT{3>DFP=RF?khTNAc`j+m0-s$G(i^y9M2$%qf z`~-1eIP;SL29yML62&M;`e!i}fWjjLOn`XCkYS7yK%RLtfs=XL*Xzpat+Gv3_uaxQ zkNd8wSIYQ%#JStKL2oM6G*&yOU3Nd(Z%4IQ>fvx-n$8SHwdP3|o!%ab*>6;%TeUk2 zyKYdn?tR+As*T?Ec0CRBe76t0P(IZDXDlBc=dE$8D#ZMJ*0=HZAWO!|;1uFRJ{k?+eOV4bqZR?^ zr-Oj^m&k4a3BZ|1C|)K@7)U}f;~)ZT5R0I|2b05aysE|q2>fJ5B5PiP2#NqgC@~Ub zL_lno;YENLK?N^~fKde^BsMh8ce^&*ohdG7o+Cfg>$ZCB`6X;}%Bw=k8mq&((8iB! z=~G;8d$P^uwtGBw51;0CyWAdW>|veNX0upxb6p#pUOy{QxxJQL8rDK~)N}F=mwKDa z;&3{=4r`%fvt7=kiC7999^~4XTWB?M8hu;dt4gN`OccSAhYQVTy)B^kf5AIOUK(KRdP|JTYJwGdWb@mB4!CC9`kp!WLo z2R9H7o1lHTcc`PwT^~A2W zIq+rkvH*mwOJ1`7Qi~FDI1{@tv*~X zwKhyyGJfXTV&eH{ztR^?!2ikxy;mxguHVy>mYi;WN9R!LRW zx{HU8_`f@A&i%gfIB^@oWqaQ@*A*9O8zPP0*WSw8fUuN$MOm}2reco&4XNzci?b2l z+-H9>7&<&PsAciPQ|q^XgK+onX2qnwWgT98EaBg;H#OxV+}AnXsJYf9p1u~7TpYWF z%!c2ew)t_E)SZz-k+EertozB+4Zcy6DtRYYXaLZ&t4XM@T=Ju5cav5Grpm2iQjp1#n$YsdeYUiAC%ABdb+kn{BoBe zaM^3O5ni;u+C2N)KigUT(v-5fw%?OC7~Py>%RhNGs?Bx8)6_kHu(l^`g>LTOTGxfN zr}PyhMIroC(}$Zvvs)Xh(|&t>gZ=6%gjq+(PH^To%);GsUKu?0h)mtqs@k&$w(J+L ztp76fyeIqfii?LlroI+N0i}|5tI`tBPpXOCs9tO zjHaAI8ABOMIhAr6<&P=jDB~%oQ_i5AsmSPv+O!0^OjKkYU=Zo4-bk9P<&cI^m|1|s zFWw$$yPjOuJ{k$?$X!g72ovA`loC;r{{cuIQ3zxjAWNo!Wkhu_g4Mxz5lkHg&Oj$2 a;QuFq3<(Mn7DC{6*I##`z|`(+l7d=cQH~4K8+EAnFoyftZ(j3N?FuG_kJ?03BU*Q1P;}281zZ zofy}QlJpfoJ7!u9E-hC`#T@BMtJ{>8(~@noEBkUFsih2J;fRT!9T>6Obk} z$fj)>wq;wYyp=zw70d=!0Sv>epWFs+FIX4|ik4tCNXdx?D41YSUWwI>a?v2wg0)y@ z7!9K(TZ5os=^jx4O6^b6(W4;KM`0H6a5PHiNzpy63`S`(jwfuC#)&h^bXe#hk0*)F zwxci&3e@ED>^L}zi-RZ&kAlZp`Z&$QsTt}0`NY&&mS(0t)JfswMVOU5$QdVAUSx4H zY30Xxp=UuDMVZcXo!cjr)}bC1Y1VqP4DtOc!UrXdSjg`r<5Vuh_vU)8MV!P%98Tk> zn%zf!#!Km7DNSlg&?|eVyLR*D^Lpuh>^(>-|AOATyPExzxX{s_H=1V|*064_ z7w6tJLH*ZP;#gEX_sSjNO?7h96ZFRQ{{^kORpPF{wi2#Li*Q;W)DpI0q$h_dsJB81 zedEqb9wY2*7Vpms?N!dbMb;(5o!cuh>}%X_+AH@~4fd*2An5H|D-nca?CtaLdzV+j zKd5?5DC^^l8L%}IC|fs%C=BphXfsNU4daZkVH3ZJb~%j*ID)h(4k2h80*6w4-Ni|? zxFqpOhhCu+M*&d&8Rcf%RF-S`P$6N7*=2oMe(Zh9Ei_TC@`1MPOH}QMoff&r)R1#r za9qa+cjy}eP!ByZ99S4hbq#jeRr7}20c7H|-MAozr}%G`-%@S2jZS*6)>$qe z=h(O4bG0jWMei*83dFAJae>f|+d=5AZ~q5K5Yh7+>Wt&bGd|-uhE>x3-SF|!ooLl96eCd zf2157aDjmb4hP(D0PF?e695td1&ka7(sKc@?@*vIvvdqCgCn}g?8!o;-b^;KQyra8 z&)KOKMJ=~7Q`Ty6(N&8UmrIw?z)UxYj z$5O4Ax*Jr|yLd7D53I&Uz6x5gMON$XNk1C=MerK{X+3IH4^Yj1z_x+di z&+Iwpi@z8OA;h3WVM>|LT%gi5YRWh0HdX&%pR3vxJ*|ADU#I%p=8XBNd5$N)NtuYC zgb}V1B4No`3YLncsf49e3Pu7PqBD-{45leTBxO_^5&X24AjATjWQb14r~%X_$ec}% z5Hgm6Ii7~dr7c48Ad$i-QcVzu;wXTU(8@MMB?~b*1~D}baUcgVEwq_D#9al5gD~mg zQi-s;E0bvbo(ae@t;J%|QHMx4%|N0y{BLK)>etS5?NiqIi7NvpSlx%mgG zbF%CEp09YFZqsYqM^{(<1^;-j)om^{SKGC2&v&!Jx!9|>nk!GZo53^9?%JZaXf67l z*H~yQdO_d@0fG}TCmm~jaw1N4poV0Q=Q|ssh7&|ZoQCghIQ7l08ywt^67=e;zSrwG zD{Jn``s9AJuD6>fF9_~xt?N3SUVYu&bRxw1FA@~~=W&|tuIsmJEoEVMG<%G=>7X>s z8Ap~oVnhypop?wC`z#KFqZYGh83T7j+k2xa5A`~y@JdjlGdciAiHZZhh!+o{v=7+! z{Eb@6jyF2cLT=A_=lhu24~XZH*<(cASHk}~@p57mdOJ)0< z@GFbUmWO)dpz%JuyZgOwb8;Vl92j*p?1e@f8tW&Cn{k4*n(tPIyW`Yy_?JjG+u@*` zn!noHaNAue@HSkj?X_K;UV{(inm8cE!!>boiic}Bw!(*NvwclxbF*icc0PQnb8E-_ z^6Vq?S9eZ(FTT3{-K5yq2zOKjxFn~w)|ef-C8*J z!jU8PJ1=Q}ssj9tIK_3q83 zOCP`1eemyf`TJjQ=Wcv<{My9}zn?E`{&=eU?0vTOIK6r4<&k3_ee(6suXAm=-yvc2 z5KgU7vQY9+N}-fPDXxVHbA%i%s>+n4$O)BLr9%decpP_tWP_xMZCQwiC50B_kxp$U zL06Lov1F5()L@b->nasFXofNw7n1@;IR%Dla+4WcG7Od>Rbo;(S*3`f4A&G9!=B)% z%vd7I&upecH%*;bqml-YS5ZaQt2~UuO-V*lI&RD~v#kO$lZ;fAOoq(p$6z4$+vYY) zM!ICP5uuCCNp^;_l(0l?nWZB@7Q434SSAXSZ8i$q7PcBr!oY^DEX%?>CcKHhH%)B- l<7^y2E&^m5ZE^wRSsp+EYvK-25@3-P0rc;5A`zL8e*y8l^5Xyi literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/055_Oracle.mv b/vm/stdlib/compiled/latest/stdlib/055_Oracle.mv deleted file mode 100644 index 7e71bf7c213cd864d4ffb5b54a276fb8c2e8935b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1982 zcmZWqOLN>r5T5RNNgC}#vetGS$4Ll~03p1+Yiw|(5))EIK~)S~Rq|@GR z2Wu)F#>|rUm$aoDUE2o@&=pL)B0vG_FrcFWa>hass5M&yS&>Kq*F<{=jIC>e(QHH4 zs!i=yyGx#_$d(Tkxr{9W+HQAfz0!zwx|K$~ftvB#LNI)ju<#BU@V98I-v$cf9ozur zyn9IibKZk3THn9CP3s3&0GQl`9me})EC$yBRBwG^TnX9kuu$<-I z{iIAD+2JftYxa1y$cNTz{C#3=x?~?tAJ2kD`qey5N?UvDHvBU;y(CTJMQsodFPwLu zk0!L=m6TB#7j>AGX*jZFJgd`;>m+U7SrKLAzne|7GA8FqTr^=;f-D(lKiI9TSk=VO zG^xmKlA3CX^Ey#~g)cg}9c4vn^QH66+)id^_QfPxi|ITWezU|-O_H5uuIE{KT4kZn zY+huusXR-@3+px7G)_v)QoT&8wLD|1eif!JI`|*P+Fybx>+-r=#*z+R2=*(aDT1+qpYm6sPeCm7{Lk zQ;$tI*K+&qBBLl*Zh&Ve)Vdm$M$_sC+&NwDxih-p9$#?wsWtMe{F=+Ib3pzQzrkOo zKS%SQ14MY$(H!As{ihR%H~1}=h7`WW8<9eIU8+EYEaE-rLC8ZH(u`yfcr56&q0gf0 z!jUZkpjp?YQw9zh(trU3O*VlcyW6;i@Ln8yi{W^VI&Y{2%!p`c*I9y@$ayKeX{^iWn= z&`7HY4V`_OzZ3!u8N)tOeVU9BI<-JHf(YGeySYQ?;Nt*&aS@OY9(Z^|Y)PMDfdP*O z!sjhv_&}QKEoi=VAEc(tXa;&D+i`*|AKQ2VV_**s0S)<4no3H!5%4|}T6!9T%Qp>t z%+RkQ_S&p3BU)6o=!l*O8jxJ+PJIkLTs?*d)Ruw5Ha!x+ul5b2zEMeWUsCgo2Ez96 zK>Cs@%?%zXDyr-|ktcTfuG=$EGoojB&3L_9`z$d}?m8sfHAeRR$cR3V_VhqgYV^JU gy?|8-=vL6BU@QQ7nt3Rs3`C#;9ZIRB6S^V$AMt}q{{R30 diff --git a/vm/stdlib/compiled/latest/stdlib/055_capability.mv b/vm/stdlib/compiled/latest/stdlib/055_capability.mv new file mode 100644 index 0000000000000000000000000000000000000000..22e4ba8f87d6e1fb1647ca4076d28bee57ae8d0e GIT binary patch literal 1023 zcmYjQ&2G~`5T2d=vv)U+lcuyq6+}X!hyzEOQc98NksA+SxyiP&NbO>~QG10K;Dp4H zBUg^R05_h1BR5`xSvQGlDW7M*nfYcsnf%JhpaU2#7=i^swvz#S zN)skg;QMi4QWKbgCFG-|PvVv;$-I~YweY|iet(J5ptp;i4e{h#}JJ44zip}Da|y$%ukDX z(cVa3*Hx{W;=J^=TKH*O)%;C6FRJ%GUi;HUJ}+h@ku8ge z;EGpzO*E~_HZRJ?1U26@S#_4=bE-PK$^3QEv`ti$Gk;CIx~nQ0T9`Sku>3<1jijZ=E8QFWEjMHeFF(| z_{`#jjfJyd*@=@0{gp_22_iMLQinJeN?IZ{4BVcD*Lqd{0FM!A{TS*kg9Gch;fGwr zmI_-;U>`;Y{FryfOMFh7H9?d?SrCUK4EJY1RqV10?zret8+;;|?1w&Rp~F`U3?A~a zkZAA~f5F*WGQo+&Fr-crMo2qL38SZ$T6Yvq{X8^y#P|8AYY#q>QKvPct#|ItB<5C8xG literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/056_PriceOracle.mv b/vm/stdlib/compiled/latest/stdlib/056_PriceOracle.mv deleted file mode 100644 index e70a19c6aa9ea7d41682a63b8def70046b69bead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmY*X&5qMB5S|%3c5J6{8de+-kHMjLxNtzAmG(+xQnzcVYN|A=6>wU30v-YJc*`Sj zV4QA6@nPoszWJ5LKVLpN1ppR7k!r;Aukr`B#V`D*ALtRw-=eX9L{UA+Z@Bng5T_y# z2n|$fWV@(PBS=6d9A>M8WUED1j40Szl~Y}rqt%>K8^+Wy)0&E!`?2T3OtqL*Bbv;t zTC&4s%VXU$$WnE3^;KrZ*@g3!U-;TLZs}VOC`nZk3q*8?5|u5`X2dd)c7z5bmOuu0 zC4(aS95lp|%tZ$03WFp>4&YOnLHA)yeSANLei!AtFx{#X_80ow{bp#laq5nJ*rolp z+k}1^#wP94)UCr5y5n#+_VGnJUeYed6IXnRYdOZSwr@E1I`+f3cA0nMjH?TL^kdwn z;}pkkn0Hcl2c8g{o7ue%hwv%w()8J%^zJ@Qw_P6&_5Zv1yzZ$3udx}#VYug8Up_tn zdOkFN7PW#3YG~k!kU2;P4p&H&iEywY5@#q#o}r}T3=2{W(JK2i!r`l>uZSB_3oAwZ Osm^^hmH$YYzu;d;h-<0< diff --git a/vm/stdlib/compiled/latest/stdlib/056_royalty.mv b/vm/stdlib/compiled/latest/stdlib/056_royalty.mv new file mode 100644 index 0000000000000000000000000000000000000000..7547ad4a076547632d13c51035d925911ccdc7da GIT binary patch literal 899 zcmZ8gJ#W-N5S^L*@W=Xm_QfH5BoqjQ5YVSblqga}jb-A!lOeYo*?Us1rQ%1>(DNfw zBK`pqJq3S)vF{WirWnt9-g}AF{2r_5JLs*;-pSZQI*n(3`84 z1y$!*IrE!P`(@oXZe7=KqMNqq=5n|5@Rh4gGlbn1(0H^;;hKw z6f#PQ6*5E5u{vc#sQi>NG;ANnmyv;To>5K)Um}f0pOmqp@lI1s6(ytI!6Jo1l*L{# WHN?a46rwCMk&8)yeab({biu!Nn32o? literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/057_collection.mv b/vm/stdlib/compiled/latest/stdlib/057_collection.mv new file mode 100644 index 0000000000000000000000000000000000000000..73630e3550d6715bec96511a5904929859c2ebbd GIT binary patch literal 5157 zcma)ATXP&o74GXy&vegiwc3?$vTRGTElaj+$M*P^kb43#20ICt5SEp8ByS?^y7uDO zFBHW;peTx>iWhzWJn<9w0Tfj{@lF-+#3Q`G*FCeVm7Tba6}5|LI?t_%r`N{#N{z`~UX;qt!p>Qt!WWf283b=6_Gk-x~i&qd%QJo&5bQ zBa|@0i6D}A#3zabBqY|F!4oM$V!RVPDd-GO4fGtII-Yqv4LnUe3yOG0d`gHsik1e) zeIidX;xB1J*F4L=>=B*|>QQ>z_3uOL7@<^=6O0qGC?p}LJfD!$wmGBFEZb(qHmig~ z@N5tga*k+_=S@V&g*YK(-Ssz83|-97T(Z=rZLZYNT(!gUoq6c9cN+~t-)q(>@!qd5 zp#5fuR(|UUC&34zLD)SA1m6}%3HuHx`CXu(59%iE4@;HJXcOPAxC4EUqptubf?3SYKXWSzleRU%c43)Y!ay<;vBIuQaYTt~WMs zH1ivcD>oPNn-@24UpaNFv3d9ImAf~oPG~@=jwxrJ^i)bEwQa~eE6ho>8j>@Fv zOc}z1s$$ZrO2nE%FQZDcif?V|IcrvFmD-j=qAslb3av5Cju4>V+&) zEMzKES?SzB72#N~N~)$cY#>-_DoG9X3{@f3^QGz7zEFQP>O;lag{>M@O~lf)cAMtQ z99Z)Zu&_NYedYNo0$AodM>c3Y%FYm2))l%g9oCCQefR|n6C)V3s=kw=N-kkrpnAK$vMm`3rDFb<+_yPC(U%k4J)g`O@HgNVtdpY^*=9q;dXy-54~=`7qxeH z2gPoC)E~5-T#?0K&>zU+NzogrouWM&4~n5zs(Ss$R>2?ipSAZ!&%9xGw^t0j;b_q9 z?TR*X@m*N_rsoaQyi3-ZTA9_i527X<@~J zsjRv;9<^Qc6QcC$di}wJV#hozM)%rJOYP*N-d=aVJDOPY?mHyjeU}os-5>Wx-b07u z$o2rJi`GGcTJ25;Nf92pixCq~#v!FU@9gkS$bnVn`Oy<;)VSX=rEeycrf^}j$q zk5vNWNyszG%P$%G5(A?_d;9Z4-hF4FKS(nZh<ʫGD zQ5S<^r}p}^Odj^ykB5)?qqN&QY((_h`$aM=My(lZvF-1-pH_~P?OHkC65~NPc>C$7 z=yi~~`SIi3LAz6+M1gryGaNFq+v^lhr7PX|@t}Cp?T@Q;B`!vkWy{sGNb;ez1P}DkrkcrAX>eJf}U8mqZM6qUXj|JZn4*Kc!EBNC+)p) z5%h{LN=giiy`9(&9GHyl=uEd-mQ|4jz5b}RgL>=;)L};q`}>9H^?Sv9HT8$Zy}hEh zJ9=dL<58=>(;BpUyM^3(HY$etLv)5ag{?_U6awpZTJ6E^*iQOfWz5b)r&XHFD&E0% za8QX`HXukIj3v_=DR+UeiXTy=7NDDq)+09!es|ciI1H*{gw5k{$Aa^Vr?yr{qTB0^ z=BK8?a}aF(Ep)oW_SRm}8uzeQA(qMDF<76OXSar0MbFB1^tji4((dlrPP62_pwEZn zEpMxjZSM!q9pA`Gcg%jnR4)0H5WUB{=O~P$u3~S^+$tecH`i9 z)UaAGNtNPBUyMgPc{a%$s=hQB*y?bV)SQet7f2EoinV@XnxZoMsF*>k9L820Px4%* z9~Z>gALRSt35w@mlr z>VMUbE8IfeFJwl~>>44HZZ`>;up0njg34F;HF;f9#w@{@T$Sfkx~|fzD!pM(ypS_~ z(@6&iTd$?M2=|yv!G0BM$p*YWkFGHVZ^JmeKqOQf7Oi502 zX1Kfvo+lQ;^HN#|i^+AcB5@9^C}oyKlNWijoY`+vSVj8$&S|%Fs|JDxWARj##LKL8Cn^Yoj4owj2R!-e?MC^xUA(Omo;e; zSjQzqb1k&gN$#1{)J$xQ(IzlqY)WSr7w=FA#|5$@%R>bS_9n118 zE67fnNQc>Jt+mm$ILiGRGhQ5NZ-d2YuEeLH(>&OavW0gT$GH|eaS+A1$<9IlyvgD$ zTho{)AX{r@7X+8e;^EmkFe7SK#+`8(_MqU$ezu`e05%m{F#}}Je(?aZpGyZghN3@J zjR80@nTY^5G|B`H3bMN-S9DMT&Pu>G2VgnCVF}pg04xVs0kF{l0Ed8_#l``avC$HM z699eyI&pwM#5+VvwD=@eQRDzC#Gl3~0OMY00XM!1a3+n6CB!Z04K0~nxfeb?40jf0 z9$`k)7eOAAOH+_(3363lcpl_sdHpLurq6+l^H|&i$T&|nJb54Q)Pel?5XdA>97t?T zl<~wZAR5w{1*GW(mhw6axLaf!A8V3lZjoVKg;-Y!u^Do|yrxCW^0~S#;u^{8@*}s_ zu0hT-GL%?vQ{iSP6FQ$=7VDJ~z89R5mdV6Qjpp;tMkHWqEkXr(SfDdDyo6aB_nx=m zC9;ad+FYZ2VgBvSstyU z3F<52E&0CoOQ*=eLwK?Z`SH-Xf_Uf{@T~F^x*UURE`McRN8%TFA*m|F7u>8Lg`|R~ z5A(E5^v@~0*rBNxl^DmUyp&_`!sIV$zBt)GjnINcFQ0{|&SEQZ>vl}bHC^qic1?%G z@Q|l*9kn?pkK#Ml?ml*l*Ot46Z5-iU^ph;t1dRM-$WjmA{Iwuo!ft_2Lwrvs-n?c> zVx?+feu^ddS4Mhw?o}#=p=dJe2s6E=c{$VejJF(PF*{Zl9U$e7iRs8^`fSW|CuKgrHSlIJv&E#iT>XNYOl5qHN z`5H;^)7b<>RRZiLn?&<0o5?TEjVix(8~qxlU4FA!^XUuuP0Rd3%H_9){Cd%=4{=c5 z#t}raJ0=bzBih2;igWy5$Ax=7L*i15XdRCvqqu@aw z!n61s;tTi^)`)_A_|f%!d{yv$KKsQM02Tey+`nJMQoaix0H2U+BbtCC}f8 z!guwvcX^pBvclSI?8B+5?Q`4yDlbvIt@eI=6)LQ+GiTu+_drr6|I#`pc4=eo%@#Wu#B&&^d7UpBfwjIHXXRA$*x57YLF$LU=?$L%z> z^Qs@Oo1t&(CS4wOamy@52)y5{DGSL*X$~oO^r>4mepF{ECQKR vwv6jQO!}5Nb5OYp*6hyp+T3&(h2ZF3*=Z)TdqJ(#H1szykkKSE0UWm=TCW+H_J+lC$+vW z>Q&j8O}6N4ZMGU^FU5pOc2;M_^C~a**mtO_eJTeMTUUZnn8_8V?moAtT8I$;CYYECJX9lvXTI?i) zK&qE;Imz=BoVs$opi|s9)@f%4^2ksZ$ZKzh^2}iLmF64PvLBSP&hSa{BJzS%x8C?< mD6b=V0@8mvo>HGNkB}zHtY2!c9O;G-0PH#4)`RNM5F^= z@(=PelE?gjyk;wvhrHx5|6m`sl7En=bdN3w<5XEx&2;yCeVOi_Il~|4{$o7GScbDa zWU!{NQ%%A3$vVWhSLrup(o5H5j6mhp+pTI6uf1>pF+C24{1{IX>7OUXUX zij1SU1T>ZfjZ;#AFWI!`({v#SX`0b)nl*&DXlcBZp>d998Jo}L8C#GALN3Z8O;==z zrX^XX>8hNf=~|96cAZb7-i^Wq#ws*aX}C$lt(jTjOP}4InI-h{#R2=tMaSN`gr4rs z;jlu(>g9RxeYUo+h}Q0L^yahsyoAgHjDT*SyZW>b+a{muK%@tlnE&U#_p!Z(XU(SMOGfm4(W3^-cvm zYZwn1BSIoUv%#5r#)FWB=p;nn8+?nG8V}anF<=8_WQi=<1 zeCGrGaIQgmHW1F)(1cRHQy)k{$c3d7xT3wE?O((;7c{7A(ui5H)}^dIf*b&on}=5e+E+8&M!|6W1&_|#mf*=j|v z(P^|dj?l^4=w?DTMYtoUJRvo&ySU?b(d%yOWM+bn+DB>hE=k`IR+9OQ^Dz=#XvO`s z*FAaP^H~0#_t_EtTm(99AEqZ!8$KP0OQXIk0mYIzh|}nGvmZMRL)>03 zZek%kqLWtOCd{NmrkGZT)JZ2vljhsx_pwR(Q7=A7`f1$Dlivt~+v_EVY0~XzCrH}O zgE)6eMpVbp@ttNnmb5$HZSi<55i!WCb20M)ne$bkh0cB& zxeX+^o$@&e8lO4?iCjm=y_pY6&%@)dBeGmP3#VNMqx_f=f!fo(xZORD-!FM_DBg43 z>MV|sE*Gb5IWt6_>j87rIc)Cz*6EtzDuq#=pvT=fI~1Oedg=eJjFqn*9Uk^u%=4^o_d^K5uqfZ)4+5+CZ-H)Y8=yb@xlX_;*JMG84x)_jKpQ&hE3_ z=+ToWU+(Pg;$ceC$f+uKuBMxKt@YCAU~rX1LvsNh0k@t{I>&e@T2ZriaMZ>~^3-O| zK=j5%Q>61WQXiZ{dbCXZxCq`1SrH^->NjI*e@w+=>R?DQ;Ey?eDxL@cz7tph@-q!j zHGHn&8GhzyS%G{azED31#1HX82la(|A_mO!ko%L10mv8PM}hcp$bT}r^6|5RtOiw6 zZf(4&$~KIs^jh8ez%k)ARfqaCjR2x5d`H3s

IYF>D9-xn$=_(2SEdrQA3p*9^^;*3JOGWC^`v64J9HmTY0YxH=mkpYkKo5@rz{=#`qw zr&KFgYD}tct+q9+g$<0fq46*Te5RPNflm!%*L|b0 zAuyyyP*(;CtR%5U)+Jn|dfvN5<#V2bvz`L-6qG;GQ}~{zOO!j$FsiWOSm8MmOlMi$ zTa-!#J}cBJSx#I=S0Q8X+to z%QZIG%IO-{2u6jVAz{(gpp-+|?p zD<2+~EG&~!Xz*58hbb%@* z6UxiDsc<8-o|RTv7-YV%f=58%S#gE8K32frmN?3W-qvaX(+eJ+a1T7@aZlin3lJ>8 l=f36||2+ushGbPxoW<`{s*2}m3ROE diff --git a/vm/stdlib/compiled/latest/stdlib/059_consensus_config.mv b/vm/stdlib/compiled/latest/stdlib/059_consensus_config.mv new file mode 100644 index 0000000000000000000000000000000000000000..34460b4fd51f3f5434c1f089578b09d1badc1542 GIT binary patch literal 1344 zcmZux&2HO95T5+d-rML7o z`Y<{65qj>Sr@TRDNfA|(>|yqsZ+3Qm_UDi1|6l|FhC#v;Da?aBNcHOv@jLdrO#W0^ z^q125Z*^&Yi{6Xb`}BPAR&!v$L4X7m14N`j97GaC8iXc0U_gcunh6r~pf02W$RY`l z2Xz_5SxlTIZ&;Da&KU#onWQZ)G_qJ+8VUT_OtN^XtYQ&G5lnKL1+WB6WCRTvgy1+K z!i)Rk3l6^R>^aw(+jk@lSCs2@=e&1*@%`jSfZU$nmfjV&+qQZr*7e<8UG2C1Q*o%9b$hTU#!cyqZN01e z^AobKcdqEmZsYpPf!>ur7yG8#I$u1xZrpb@SUPtoyY+wUix1hsE!Zp9^cPjTd))V~ z_|Wb1bxWmv+LpV=wz@wSQ?>i1*Ob_?6S{8dzAm@*FK!jG97{eaV6~&JeZ<viJ$uI%0BDIb##%CQYu-TXvB)&(_XzoSadLkgaHRJFAKU03ehq3s^#fxdm34(76? z!|6V?aQV2u-PZoTI3_}8Mz{ZTFp(@Lo#RR*LQ52L5s9V9MJi%p!~F*-5i+oxZtIAd z<$S{2axr0AFDEQ5R})s2M}$?Br-scLLLT#&i1Z5$nY75RC;+!tMjBzbmfuZTP4kyB zS2jGQVdU9sPY)yW+_dC$c;ZSmgONa4iVt8uBv)WGGN!gd8Qtm|%(;F`r#C zj+1w6IsFY|g^A@e!t)yPwS8}B;Mx#9Oc%fd7q&gwL zQg22wIw8MN-;QLgqp#(ax*jwHgUHMrxmlnz87h;bFiVWg8OFw9Vpf`NJ3DRU)sR>rY=X`NF5_JAY$- zahZJ6b7ycmymiaaQZ7~-mwJKDxamXh@U3O#$>)qXWndb-`E-PwiT_&7e<4U3Hr z>#BA8yQ^1wAJ^6Lw`5*BdQ3M~+gpdD>Rvz<`E$_UJv;yVpDr%$A36UxcWrdNtLFyK zpZ;I`-bc~`6$KAf=DNTVGRR>H50DX}W*Q2SVU8s;P^gspX$B>hTrQz3nE&7aoRh+z5rBfIv$HqX>vuBakgh$%XR> zSOx>ip$HA3M&-oODPrdo?}3PvvaSRPEsRhKSpbqKN+9GCc3KJl6!ZHsKIfF?_93m> zI!FCjcMG1xrcarhv~KF2KVp8HZ@F&UxPIYfT)*}Uo~4}ArfgR2bhhndS9FW|dU|zx zCx`quIR-$R1MoNo4@#B?JMt>f?l<-pw1Y7Q(&#v7V?E%2Jf11|1qiq*5dZ)H diff --git a/vm/stdlib/compiled/latest/stdlib/061_copyable_any.mv b/vm/stdlib/compiled/latest/stdlib/061_copyable_any.mv new file mode 100644 index 0000000000000000000000000000000000000000..13fdd288b26e6d19497ad39c3337301447c3593f GIT binary patch literal 361 zcmYjM%Syvg5Ir;ZnVYmm$xb(}^b;z$(O+;~!fl(DU~^N_R0#MpeuN+6Cx}b8F1)EA z9T;ZLoHGZ`+tpX90i=YCGb@T)d9T&urJ29l56bl?IrmLT_Ct4*ca~8}UsCC3LGJwWSwEdH!8esYgz+v{zW26o%f--F`@9Y> zep|0f-)#;}6?*sQJaRGEX_2u1kU6oGI*t(_)eKY2=mJb56e)5rkL%gUevArU}qjF5uZwt8mDaVwtbQFl9$ zcliLez&hW-5AY8N);uIuELd`DW^95G;x4*wRh@gzsjI4fbMTu}0MKF3!`?1`=Tf|3 zWBDEXf$4Af_h^2SJ@vahv|p*jeXY=ctA6C2KN6AtnFy+5fWSe31O*z5VVX%PP}7$5 zo(U#9lqZA(i=1h2B7Re;xE30^+Mw3ZODrw+9c}5MB`<8d%b3uko@JnSXaZ_?rw_Q7 zrohLHf!N>WAk*=RMjspyPIeD1k;xl7U9kWDS5;pvvf?(R060e zjWbDH0=ZCv2~@Pg1()kWs!*OQs#F#uGif9!X*U{J%L{JBT4lvZ#1X}nk2WH&rcOsz zrlaTzYH@fH>KEtXvroSGsBGH0oLsb3%|CqlOnqF}Ro#eBi{{L&L7&%Eb;=2^&-%EL#^ufDSTl<(f*YEUG zaYw$pfgnMgC1K_0431=+$}|e{uz#QK?(2<{v6og}&vqT&6{(Zz%Ie6=%ya(#w>B>tx_WgB(2^DuPyb!iOkZdKLBd3LrGOP|F3tCV(<{9 diff --git a/vm/stdlib/compiled/latest/stdlib/062_crypto_algebra.mv b/vm/stdlib/compiled/latest/stdlib/062_crypto_algebra.mv new file mode 100644 index 0000000000000000000000000000000000000000..f7ac6398d46c94856d5fc708d14f41a6badc7cec GIT binary patch literal 2084 zcmZuy%Wm676rC3-iX4feMA4SzM;yno9mk2?rU|`ki*}t)AZUxR1<0gKN-mNwDA2Fy zrker<91tn?R2!)Bb|F!M}16GhCQP8@q`4h``SM3))5YP z9pSL6BOGxZ;h7Vt^v6OE&vm>L9q)zS#Y?@5Q>Uj?XF~gYp)-A{GO@3SOXzDM2!9i< zQNm*a%R&*IvNL9fPUuFby|bPS+hGv(!hYz7{$Oo5h=$=-xD)OU_oDsiAUq0>qmz&@ z+at6|YD@K;aZWk4T}C~+K-5}uONgS`ZVkDdL5v@I9ZV0kFJmruIaOrMDO*z%dD$`r zXHBB;haj>xDZJ4X*<|>&FU$ASS&^iZtL&mot*k7I(s`Gqvw4|Sb}^lei@fpuB)iG- z*;#r~l(S@>PqL~?YR{`OonF6R`X_lh8{cJBlI7{eBpdN`G?M7aIG<%@o=)tyI-)nq zs;nHRlktZvd@wgUJ{sRibOYFtcWnXEo+)woWp>tt4R7Ne2#aegP!?}3~7M4}s@g~e=~Ow(~W&aa}C zl@WDnxVlUyX_;U#_#7}&o@ZAQ{T?XtOrjgWD#}q-wzV~2W3hqGVl;$%pR{*BHFVQF zo35D|l2^B-M1KIxFJv{pFn~Ruswd*tgMr0|tSnl}7|5C9Coz-Mk};R~%9w!2Qlj39zmQz`9@k=K1rRe2 zpDx6@NH-SZ*g_r$XcHmUJ4@6?Dv4AyZXi`Vc62HiI!|r2xss~MBnbS2p!O>wb`i4; z$Op2q<&tlhkR(8oF2KIoxLjKG+Zq<3953f_nU4 zDngJwP)`)4??AmJYiu9bQ-zuQ>rfs5J^U;Pj>1X35k0`^hbIK?8hBgduchAm6}00|`a zNQj@{2M~XN#0Ritu9LK6k@3u&b7sb#`Lz4TYXC?PB8qN^oA2aT+)+R9Bbwjzf$U$| z*YDM}=!;7IH%0Mx^_h~NhSFb#n1?_hKmu4YY=kffK*pc}axqFIlAPgK8az;dWF+W? zu_S^QF^r8@ory^YFIkwLVPz?^P-lP?_+0Zw2uo(j4O5EpWwz3|>#rA-a zxDzl}*8^rZ8gOyvY-D5WdWlVK&-HuYq#M{Zi#i5W=n*}k17W;iqhl}0fy1S*mM(Ii z+^hp;EC3xU&>fKSJUWw5cRmVQ$?8?6D}veqV-^BTM6*n@co5>qGLRgMi>fUrWzjr; z`bs}(n!1^b@c3fZmUX3Hmd91m=+V(pF>8}?F>jmtd{~^!+H=FOgKAR8$3;7=Chf3f zCw*2{?c>pGbXZQy_FNq|qpG#t|FErHIUg>h3_sOp)jWN4+EkZ#-4t)@H-%uiXfz%- z#hhUiS=Ch$7{O+vX;X~G=fm0Q;k2B;F2?bytrcuupA`DA=3&lkXf8A+Loli8_L3(j z<#c*M4td_D|9>d#DkSXjG9&C{g(2*R53qR8;jQx4CJ|&dhwC!(kmDVA2rBlxle{Vj ze#3J%=4IOlx$f}+#FWx)$VsLuGm!Z`Pj?{~L;;@eM6l0NI+x_(K7*qGR!j|6=O$+{ zwZ$JjmoYC1i9kaeVeUM5%&ez8BEAlUwe7B|RD42Nw&(F4#3B-1@t#`ewOrH}w}45W tRG3D1Zh*p7@X9Qkaa}K=58{(V*x0-frcU@`DkXbrV7g$KDh_Au;2)FTiPr!C diff --git a/vm/stdlib/compiled/latest/stdlib/063_dao_modify_config_proposal.mv b/vm/stdlib/compiled/latest/stdlib/063_dao_modify_config_proposal.mv new file mode 100644 index 0000000000000000000000000000000000000000..3c085e5613c1037b821475ded0d0d4d865dccf31 GIT binary patch literal 1163 zcma)6yKdA_5S_Vi`+8pqBqTf(A|WJ1kZ6!W5fsqU@Mxg09Q$Ttv1>10J0w!RfR2cQ zhJubS;3E(npTQ^4Fm}8P>F`Q-eb3CCnK}24zg+oc6#(=QhHSXWZ#@$yefb{W>fiX8 zn@@76zRI8I|5oevRI}it{)WBphV_3KMqvmHI0%rSK!Y(zh^ImH1!};7roFzP0enCN zu&h}FPAgsn#X##dZGf$Ngs4ks3Ev3lU2ZZ9{Bpk!;tCt07FS0WHNQpx2CGPcTuP&S z?fU~e=t(9ypbAvLIpf?I(fqUp^neq@JTQoq#Aj#(Dz7o1l$r{%ymg|m)_s9UsNR?OoGCzDLwUOkqsEQ@kbozl2W<|Qv?cUZ!Sx=*qG7YCxb(~Zg zwa`YW=WVU)?x-pWU-sNNiMrYk<&4^?f~t7q@+h0nYgdjsrAV1h1V2vG(#_{lu|KHu zxULRdUS$d8Ot%)~=jEmD7J9@|z_IJ^EQtZW(Xj)ghOZmIwS+=tK zqEYF^!-qcGx&43a?kFRXfMIWORgsAyAMq8o%9}Y82x8lU#Sm7JM#2kBpfwwbfc063 zA=`yOYEFCJ=OJ2o53IJvdRB#83&Lr7Lu^O2w;i&8`!F&-zb=gI(Tr#qc{hCs&-kPz z!)6l%Bs)rrZ)u5tHx1q)6zg$Zp8}K)(5Ms4CzDAd?Ee-7H7AX*)gx-SK4SaA4RJkuU7Nro?{$NEbRZo46 z+`-|_Ej@dpm&NBj%b zZ~PP2pORtncXF1!SI72)`V)KqYDRbj1{?%PpaqfvfKmWjgOm!%mnl>r4lN24M`Q`X zC=QTPCK$#6EagE@Qt^I_3^XmnGy!}_)NH~GQvx56R~+~Hz)yxFrWEfTB&ft=AkP$~tlB{& zg;Gc{RwGC>`96}^+cS&#$nG+5AI21g+%=cIbhTUi^{XFV_g*xedp@6cZoPKv-sRlY z!7se)C^o)w-OnpW*12DY&cC?{O~>h&{MZKH)ct#!%X-m#cD!<-oZLsRd>vktZTZHp zeAo_``|3r#2!*FaMU;_1FWuge`Pv6xuKceq_3NUdbT=1qJHBa`T{(9}Xm;sg+qxY` zu{ldNuJennncq~^wjd3wxv6#vimqvb4NWLl#rmdgS6k`px%-7*mu>(5%?(~&yt{RJM>?p;w4rg-PW+rn4n(&^4E>GoWg zxvCA@UAPye>@n1VBt>=j`c7Fab}wtuHC3^B7WHn<^3GMw#ue91)t39KvU|}*OA;3} z0iXXcV+Z*xl-+gX>-(pXv7^cBx9)U(8#%pIaY~N?7>*Db%PEyJhGWhdKG?mzGcB~r=0PaPE^<4o{V~yJl}AdBgpswMk=HEF_^P7r-`3(D-F4cLrw*gG3jU&%kGkpl5hZ1Y2un# VMmYAAW*}Bd46(&VrYe3p{sVR{-Y5V7 diff --git a/vm/stdlib/compiled/latest/stdlib/064_stc_version.mv b/vm/stdlib/compiled/latest/stdlib/064_stc_version.mv new file mode 100644 index 0000000000000000000000000000000000000000..767d08e2142d4ebe56a8acc8a060a3e06a811864 GIT binary patch literal 218 zcmYk0K?=e!5JhJuNfVn|i?|TcrFZZOUcharHr5Iz&=$pwYd0Rktyl9Brb@wC%j(fe0w>Oy%J`JTOv~k3xh%TH@f}6-z{T)|6nqFI0a&=e1HcFvN+J}5PRv#p!TyODQhcgU--z1vr%-26BzZL6KV^geOQkG@U=HQTGni=wto6Vm<%nX9*cBPnxF?3Boe{Ul8 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/065_StdlibUpgradeScripts.mv b/vm/stdlib/compiled/latest/stdlib/065_StdlibUpgradeScripts.mv deleted file mode 100644 index 33d6fd410def12b26e1f5d19b64f6772b86f5220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2461 zcmaJ@OK%(36+ZXQo%irDv_$GRH_5hL^&fQSMS;RCP@w3hy9DjIGo-z%_cUCUt*9**A1WelEQv>M!L#=-Su$qVnhb*!pAP_YxWspdbMQ85B@K z104)7!Gav*p#Vj&p#&#j24!dhe72B7D~%M5>%EE z87j8~4-0}{q)3(|Bqs$qCAOypS4AvXmXVwhc4x(QMUZny*m%!R{A=IkZNdE+>i)WReK%z6W5UB1!u08 z3FNM86;N)>VJ+rO6x#1d3t+7;qK)9_y9*fUJuI~F!;_~7tGs`j5GH>hAz!X9pTS%j z#tNvLXd!Q@=TNtH9y2I!ucA)AeGaW>?+^_tI~OhzHn(vJ1%)497F3^6XVtPkKYO|| zKYxB{RliWZs9&kRRlTaORoC^JzOh6t22`;mqFBVD_$EXq62hU75t9%d1l2$?WR0SN z5(Sqb6UETc2nqTkQ7oBJ4K#@!Ezuo6g{Y|fz+01N5;WHj&n`RPu3Ga=K+dSa0AK%+!2D#~l%5LPf`&??a8WygPo12+H$uRYnKj3lV z4Tf?nJm7)Winte#qVeLC`NU85JCS#YSofoF7{*>-d5D#UQE6`!1+I^E_q@KF2=|3f z=#H|Mx!ounxKGyCQG>7A+%eVlRCD9F;zp{tdG(mbMByG{PHunF1NTYRgyT3jQyk}X z;vI0e?+4tAQdd!q+kVx}%KyoD_Pg?0ineh?Iw|6abdu;1=_DW3kKF-Ijp1d};fCE} z#6KPRI4bT$ril_oo=h~k?BNVWiQCI2V``Mg7UTF}X>o!rHhLUi>Cq^C9`urZWiQ0B zJ1kGZzI#}PANYyy_5Ejj@ipu2iMbx|#Orv8=RT<^!~Uq}2U^5?7>7qvzz<8q(H=(K zcaeA7>AWvayM@OcbQ3oj54r0HT|E3+@#p}T_*0zrcH+kAWQ)Tnb#M-&aQud7?rwT! z(+PZI{%>#H+iLDK-TLO{gRN#$iFk+e!6|Is_nfnx!HJ3g$Pbba`Iw2xs7wP-CL}?< zd%(w~<8hCiXExfkxq7p?+t{hMc6RT%4|aE3)3ofY{n()Cf5Qy^x?ZI?4P-|=5x=C@ zW@Zo`x-rMbcH*iZ$D{8XU!{$p3CC;m&4);IsdH`*)-F^o9SI$Nw4_^u~36*p1&^Tl>kNdB6Rn z{ixST?%eSow(4~+de-8jy@TtIHvCVJZfAkm#15>X6C`psbraH zvZ;cdU(JI_9I%U&;6<8SF~GL%k|pIO`-DZs2SWN-%wT!ykh5$_E*Oxf26O04ZK|HW z9my`5OhKgdDO*g|@hgGY6~vu0!C_R~<|Hq|;99`7h-=9Nl`6eSI90Mw;vI!{%mjr_ zz-&gvT~9K=Q;uwaqnKbZ9+BNoV|#)b}G1J>GoyE6peV*1jll6mSU+Evouq3^7h-7oYPIsWEE2} ov7eQSQ?Mxd>rN3VwJ*Q+wW%(`Nf?1rV-oqz;_yQxQ_B?o2abU&mH+?% diff --git a/vm/stdlib/compiled/latest/stdlib/065_stc_transaction_package_validation.mv b/vm/stdlib/compiled/latest/stdlib/065_stc_transaction_package_validation.mv new file mode 100644 index 0000000000000000000000000000000000000000..5a790bef11c39685b6d7301b041c89ed7e142482 GIT binary patch literal 3340 zcmb_f&vP3|74DzYGu_R25RSP*$H8qw-@@!;{ zYBaKAilR7h;*X$;6Q{j$qlzje*OBr@4bHS>z?+Xw*F%r zLWrScovk19pZ2+^=eZ^VizHx&Cwb(EnHXPgVQdMhhO4Fv5u- zk~l;Wmv}@ILwui*nj)m`64C&0fO)8h(@~TVc_=7Mj}#H_3hGerN3d)HiL5YANDFwR zEikM~3~LUCbq0_P3TczW_!b537RPYg4%>Fvu|t=7gzReAy=5@m@iFYxFznYkQ6Dl& z_;(cY_$X{b>{;=gfJRYZm*s4_A?`QK#AqUCHd?b@R&vKcZCzGN9`~GR1 zV$3GPbmU}H>)_1N(Im-@g+5R6S*a@WbTSHNm$M={i{il`PiC`Z<`wB#GArVNWMTyMKZc<|KcM1{4|~|^^eLp;n%d!j{VB-u}!O8O+FvTlSlD1K1s)E zaap^jeRkZaHnmJ;r5{iF$vB!X;zv{XZoNhqU8Kcn)Q_iO|1{}8zbaSpV$ym=6P+Kg z53s#FySxEx{dbZV*kiwlX7iJ?w0LEGWtdLV+35}a<|rwmK{AZz<03jk*=_ZraSH!i zcIm7v;gt&lmqlE)Ys*O#=O-x^^2?PQ>S3NFzfRU}=qAZUg?SUAxX7ZZ?TYjBvf(At z^~z!6ttF9AnJAg2<7_lf)~+k3c~&Z6y!yH#oFDJJPQ7dZ+_vXaP&E0beY?v&*KgL! zS+G^u9-E4wwk4~eU^={9aO@><)UySLYs(#$+&3lFK8q)Vane|BtKzl4oTEmks)`WW z19qN7@vunpvU6@S8D@Du8R*I{%7#HYDNi2SG@74*%qpElv+OLXEf;WFibPDZN#dMj zIExp-Btx6h@i?6&*x6v_O|l{y;>Zq+?O+vuWd;^3i&vcqomlFX``L(b9&^i+IPYiR z)-aFHl8Y>VE^K(`i}C=Ac`@wCDb8}ySrQnmL)EG)z}B$>4=k6;fE8r}n@t%kIxXu~ zUmlLdw6mOk6CyrV*MBI!7r)wj@ZYK6O_E9vY?O0T3ZucYT!()damRuVol3|BN| zjNC(5-vxp(df{3oVq_6|Q^$0U+-oO5Nvm4&N2I3di;V zCJR8;GPEl?a?e6C8;S+I6>jc{L;0?vP?RvHD?XGDj8M8O9w>oV4ik%*Pi?Ng)Y8Tb z44!^n;md~N;jIJt1Zrf^GZYz!xh0eo~-YzT5 z;K3R~(?GVutsck3F$7avE9jcMCzgeGZBSq_&ofCzQ#6*nmFO6b^TC2YG6c)27dw3UG#^C{L zDSZ16RMo<6$u37z%K_i@g$yA3T{sHScJU0|z}$3wX{6Y8eMjzMuDd>-fnrbIHH0b! zs)4>OUuz9Q`I>6~4oG+3E=s$oQQAjP>${|(+VWG4o;1l3QFSDs>Z<1$8&rI$Nl*Fp zI@;26eFHPy6h{L8Pnae})@82T;8t_}K57`RyYkmW7 o;#yCeM$ceHz`*E35lR)n+pBv$hY8#al1Nn+a literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/066_Genesis.mv b/vm/stdlib/compiled/latest/stdlib/066_Genesis.mv deleted file mode 100644 index 72e117fb06885a37786587548cb103d6fb825491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3619 zcmcInO>Eo96@EifB*md--_)xwk0dF^P}$eCyt#TH=EcSX|oAXlwhQ>%#9=p zB;~~Er9HKW0=;j67K@_jrKcVi*xR04^t!hKEl}((5TMvgk45{2k}M~i6m5Z0;NzP& z@Be#*h9Awmpeg_)30#w|U6P~UNXpOUxx^>(?_}+T`XZ@+mQJgmr+-AuFW65F)FdE* z3<@Mb1r2maf&mmvNPz_-kOl^$Fb3l=0U59%3zIMf(=Y?GFbDHwSpjlhf$0^K02v+C zz_u0SrZ0%~{JaL~v_=5z9kI4|1%(B?Atxa@N02PaNS08RS;b{?jU<4qCsfGf&{E0i z1av{99M&|MGYHJ)D1j-ltL4xk&85&Rk7n})YXsDdG$9%*5(epuqhkbEX`Fy8)JGR5 zGC(#{geZnEn%>Gz5@q~S3L{>gLh1CC=^3O~XOW*N&mqkUy}579FJR(trE);tK8M^l zb4b3GS_CV%L}2XOsFTVq6PWl8Mwz&V#9TmGW*Z5)t|E7XEWl`Pg@AqY0>-p&rB;#N zURy`Hm&ZVf?_%1@+#OORF!BzuU~FWOdu;%Ty60frKQ8DXFH6w}dyQ zrkaFUf_o`V6Ls(!RDnt|(N(la0+9$3sv$*V2^m>cP1KZR(u<+Xl7?Io6oQeHASL35 z+!vynaDmQFpF)|a1`>jqOR5eA=1ovVCrX^AA!%3=)v*Rq6&Bd5Dj^b;L_HWxM>nz> zKNO6T>_-t|vBJDWnFQl#w|JX}UZ`!?YJRsJC9XI9+7lYn`~0aJ)U}->*K6<9jUB() zRq0B(>uQe7jx`co_1~*zLAjCsqFmZzpba z{Mym@&A@-o+db=njnU8O-p#7rXDeQ#&4V4c<39G9UUZ_|b)zG7zaw&C2X5_&+u+q_ z?YnLpnLw^ocTBwBtL*LvZmr4Hp8a?wsyDsI?{yl1Tj!Np;B}%fS@l{xjNDcy5hrF< z1GgQzahW$c&z@NxbRRdp@TeE|?1pgRccWezdNtr~*bPpm2h96kbW{)Ar@O9y5cnNG zbesBvyFG370d~|6vN}kyH{?p_xAvCpwwu&#;DCH04e= zO2pmQx>qhaE%zCoD$ZW`hm>1*0C+h0%ESC-1XI ze`^`imCIh|Fnp_6e799Os2$fHHtNys+unof_O=^5uk!BWCzl^?dGDXJ4z~R}*AKn> zH$OPI`$#xH8|_WJ@>{|ZOl6u`w2IVVI?^OdT18`m8OW=QBF#{nnfT1oNjgQR=?tBv zb9A0A&>THS7wHm9;qEH4kWy;W6t(CGO;bik=@=cS6KupPvNU5Dr+~hJjg|o=j zUuD8FXiS)mRHDoDJYAs|Sk~OKiehP*j27(ADh@29q?T$asEtH5UHW?3vtS=}(Kz7l*XkDZ_TcQ`)GP+wd^H!c}xX$Cc z$j+M^Xtu#tkiTFRHBcM<3N*r2t)e=phpic)n*AKlD<2ZwTu=OhP&`fcubjC~*Ogxp z^tZ;=F;*UZ7HE-e&;r}Q^NIrJe@0kQkrN3#D)p|F7%7oc5|PSdrb#Prj3ZKcnn0xT zbb@9OsXVpcgcTx{$HrPnjn`p?Naa}?cLfxAmWwf4!*vg{{HvJd=~53ZcG1csN_jSA zt(EcL{WTaoMmJJ9iKDiLNEH#O*WnqVAH!U?)+wGW$`o6kr|V_YTB94~l%)x*en>FR zB92la2B(1Ftl@gqTE&4~!a-cd{Q`ovfz92J#G!hlRJKgOo1B8AYW=ois{7>KKX2vx zYuJQO)7P&4;j%OoT-*Hg*X~EB@Tu_o58oEMnk0Uue-3vJ`bO$k117!FHl>5xWy*@KYLIwWESs^Qdu2Z1obS(Zy<}@w94;pa|{XFak9j4Q}L}bB}xz*Kte)7u(fLJnjR}Xw&llUBC%&n zvdKC-gv5fsV8Ite{6T(#>z?i*Ai-kFl3jJ`-g6&S$8T@Hw+aAe2n)7Y@_S#2wUcLu z`W^ntqaWo$y^+5$^SfT!cbd6B^&dF_XqWUB1V@Kh~$A>!*xEebjVC zDBaLJ4|QJk{TMp4b;+Bf`B?jLI1cqt6@Cb%`gT*97>A=wwp8RW_eIf+^^k9!(l&G_ z#51+140RPsy{%v`oKgRZ;iA*|c_;5|>-eyM{6#e!=Tt?0dO+9k!+|_{O}A|tJbHC8 z`)NBf?6YV8bGnZn{bxV#{&1J-3|%Mo_-GYK*>F#rIayhi_2yqN0N@aua)z2u{It>EKij|f8{H4u#GmvB#ekrIuwoR%fC?;V zRf<`QrNUfcWAqdR*h&Wn7N^++A!xoToG{^=(v=Ros5E4hDYLz*b($YmZ*F zzz<nbL5@b|f)vJ1Sz9fjuBD2UWa^qK_wfU0mItTv&f1p-h literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/068_IdentifierNFTScripts.mv b/vm/stdlib/compiled/latest/stdlib/068_IdentifierNFTScripts.mv deleted file mode 100644 index d8b0ad3b91e9b5a19d2fc3a21bd1eba2c7eb495b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmZ1|^O~EDfq{XYk%5JoMTSLzg;j-{UEhKuU4W-t3@E|Kz{J4F#LmLN45k>Fm_a;7 zW-!IX#LUFV!@$JJz{$wS#v|gHlA2eNnU kTvC)@8K0V4P*MrB1{p9iFtRW(GV?K5FfcK~n2bye02THb^8f$< diff --git a/vm/stdlib/compiled/latest/stdlib/068_simple_map.mv b/vm/stdlib/compiled/latest/stdlib/068_simple_map.mv new file mode 100644 index 0000000000000000000000000000000000000000..78329e5dea6f96fad9b320276efc04a8c8792b71 GIT binary patch literal 1953 zcmbVN&2A$_5bm!2o9XVEI2n&;lg%cZ&7ws@L>$m&He8Y=2`9vX2e5`@cCoNM)_9VT z8wajD1L8H1ICJL!2atGxeF>_@9y^E|El*chcl~@-)z$uK_np&>v52z(f`Qokk;`BB zGxazB6U@)@2MB)EJ^hF7+jly3-x=w@H@}(a_gKe&#iYm?Fu|k&Tr;K?6e7cs(~N_Z z%s@*5A&Co>CSrvl;&?#B2dzjfLgF^81Jv(XPu%80WGiYV6BW~DKZuB=Y=g+a_5gkD zY@u8J*n1{+2ON<-p$*vEPI2B(cX58oaTW*rxMSj;-%7VK7AL;%ZJhdn=W&*7C25*w zgLIGy<2ZyYXG3N~4tja0L&i1ooiOnx%+7f0u8i02tmF>7Lb@;8tSMZbJ}*h-Ga2q zm;h1|=$1%#+R+w*5~kyY2swE{&eZgkQE|pBFPxTwfdfhQ)ZSzp7B>&MwGsa?|*$YT6W|>3sN2d9SbPvS`Za zx|}z4bw4a8v*uoZ(b|`9M$>DFLUTPXr*E6D#k9N&@Eg9VtBJ15Np)MgrWzuS;j9?d z`ersS>qg%eK+;*So9Sx0kV)i!m0z`?y}Be9%Bcx&CKG`iz6p; z=4C8%E}iN*ydP|H^MzwCvC$m7V&@59U$Fki#CqdZq;hQ5TsY;754?``S?Z;gad4I$ z$W(2k4Gq}iG+tOqE#Hpk@5DW9E;1i_VVM&y%%zjML!Wus8gTkD?etu5nRRQR zE`KyYO^&cdEOI3S6%lNXup^Oc4~`wRCW@W#%VdSg;Og;v7QLP&UaaEvV8Mz*xvw0ZSwaMs zAIKeq>#)}$53rF}u@5{b>;XE;L!g2_!8#l>Z%$Xa@S2job|GzmK9!YL9m+$sX#*=? zBZx?Q?gXX+y&OaTJbjSk0p{4dfIAKNMz!G(a)gGAI9|b9`pO zcNO%X*zXWtG*3@*@>f z0^4Sw8pT+n53mqcb}fJ_<@9HXlPw67N6zFiIJNRV@JfYF;?uisoO~ni!3F|&*41$x X^Z%(M?_ZHU=F%FwNR literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/069_MintDaoProposal.mv b/vm/stdlib/compiled/latest/stdlib/069_MintDaoProposal.mv deleted file mode 100644 index 2f4e07a5c960309a401f7ee55925e2980999340c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmY*XOODhq5Unbg?Id=((=*e}h7D{u0%0*i{B|HAfy6Qji5Vigli*Gd!yd8c0!ZA0 zlW+t^>^J~UCWs*m>(#4zugWQZyLo980Hg?(>_*&v$hDRIQ~e#kQuIS)>ZeGO-y$=g znCxeE=_S+R7gNw65C~w9pfrGv5Ku1ccuEc@M1ZIvCPaor1WZd%q_xa2LYAvILB=B! z(tJ!2h?6u0xuyj&ZI&1cg=8(Y(y>k?Ndc%VD=S$DmPTL<6pu|}3=kzLLjf>erRIu> zlPGWkLfII_@>$akkIU}4@A__EZuNtz>JIH70;isM-}$|I(VVr;%a`3d*T!T0gx0To z+4rs+u?uw3&#tQ99?qI}c@@vep^Ln$TyyTcDtA-Us_Ym4 z``vICgD_4&;-R_ z;l{gNcRmkvO*#)6HhcX;5q-g#ATrW25~kDN4BHKRM$QZv%;9)^LL$dgxC@4IvTTIm wT!aSzVAnZXN?@f8-Qq~527-JQ-AN#4i=)FmxDQ037WEh!IszkdIWijl0EgXzIRF3v diff --git a/vm/stdlib/compiled/latest/stdlib/069_reserved_accounts_signer.mv b/vm/stdlib/compiled/latest/stdlib/069_reserved_accounts_signer.mv new file mode 100644 index 0000000000000000000000000000000000000000..afb6d568fd471b7fbae33ce9347ab3326d56a278 GIT binary patch literal 606 zcmZ8fOO6vU5PfC4ZTBaW?jVf@2_&|FSh0!35_X6M%mFM<$AlJ1x@9*+xx-ungg5|4 z;0&y}0GGi12_vy^xjwI6m8<;a!Jk|LC^uSs5VO*>Eyj8)WNky>nOI1?NAzjj?sz zemeBQgl2niUd?tEntiu(W^cPPoI>yR#%?w-E4Xm)dW61np=%G}rr9<9soJ{UgueBW za$+hc)Jxmh2~v*XIcjR#p$W_Ij tqQnK(s01S#e3u!jB%?|yJjNrj$g!pso*`N0AcZGbB9BX2v*|Yw{sIHof(ift literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/070_ModuleUpgradeScripts.mv b/vm/stdlib/compiled/latest/stdlib/070_ModuleUpgradeScripts.mv deleted file mode 100644 index 4c03908ff01cc3532e9a8c765d87a52cfaaf110e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmZuvOK#La5UuL3KW)!=28DnS0&#<^yoYU+NC9@J1(q0pc3$ zI00qP1cg8^x~txM^-A4cUtjzT6##e$F^dC!{7DQ(e!(;S9e*+Jo0yv);*JCe3^)jo zpp??Um_|Z1;ovbu4L%?DV2VRQu#pH{D+C#ML`mPLokszoF@_*!$^gzyj9MkL2yihc zo-HvUfmtAE?P=5|ilf;K4PlZiBLl`c3PT4n!%!LYff4hEQWJ*^C3=8}oGIf2hDbs( zU=;8tr}cW+xDQRyW@~qmw`J3J>TO+JmW4WN`m(N)^DO_I74H46I?XByT6Iwtm1~a= zReOtfS$*EtP2FW1{n51@RW9?a%H75edw1Jxvg(c7xqRrIy`CEX#o1;uaL*3sW6k#D zc{i-C%l-fud)42ZJVpCb3wLVx324K zefcz>9>}^~+4XjHYY$Xdxf{FPUw+XHt4-Nm*%908MO9ahX64~RKmo{ONE8hWg(Ad| zr8HJ!;>9qgArD0;Q>3pZP=*tjGA71U-D?t`$q`rtm;|pyM4n;FUyT9H-hL%fDn@-O HlR1Om0OO#{ diff --git a/vm/stdlib/compiled/latest/stdlib/070_oracle.mv b/vm/stdlib/compiled/latest/stdlib/070_oracle.mv new file mode 100644 index 0000000000000000000000000000000000000000..a9eb3271a6cd09d24a1da136dcbe532cd60e8e98 GIT binary patch literal 1864 zcmZWqOLN>r5T5RNNi*7qWUZYz;gJMzfDqu~wXwlK0)!J)q&Ta@?$}mkA1+C@6Mh0m zE?l_e#(^q|p99>ua^Nq}Guk+=WDe?{eti9yQP0!s|60Wu>jCRy|0Dk3ClG%@B>#b5 zLI22qmeJE_sQ!pcEHUn}UB4;cGfm*W+q$g_%xF(t-FgDTzquII+stq0c-4$a! zxtf3{o7f|uYyAOzuXmzXhF&AyM$PaYL7BcwSn>`T;Cr-HcR?_CA2&eZ2ejuOUIS30 z^(gCS8=I&St01O2RRWO)4l$4{Mvwqt8Erus2_~>!LsIV$bd2+uanwOVnwVkCV&Gg` z5jY7kdIrJD6^+PBa31hFR3XWp2YYQH(3LqAX1#sP)UqxoGpEbRWO=%1rK{^@E!~-0 zw5q9&7OoyPPny=vi*h=xUDLQGZmYR#+H!tk?w4)(t(z?CX<#2NPwR=>_{uF@Q#B8R z`@Qm{{Jxr1?Gy7&2=%3N(-r&m;&7RE((g{DW$V81afcoM+;K#qi_>6GOfKMtFXCtJ zaZ3@}qRZQxW=F0qx(bU>pQ{I#L>0v!R*R}FD0o>kA${WoRXMAEaGOv`24`zrLAtD9=M zkZ0xW)R|5@Ey@H=y%~BAD5@ptf_HxI*MRK1LE=m9v!dtJUY7I4lg+O%o_Qt{I!_9 z&H?!iev{v#d*1ybfCz6!nj^dw{t7Wl|mfsMO>=A%w>2S+33kQt67$9h}NiEsk!8N2{3jYW!cAS%*P_fC%nNILinq=Kd#6@BW7%+HC zY|4akg3oonL)rI)<@aOjr*pT~6OfuJq|s%3cnWy|VPO{z04>E*n%YYB5$GNhS{jY% z`j&-H7$)A$^x0VE^ilq!a~jx;16O(w+|b}nV-#a729{v*9)J2f zh=1V&`78c~!4L8`9{v#y)t{l(e}|9E_mQ$cM&HT!r$i;cBt8%rGR_2(OtC;g0E}4- z$iPCcaV|(>ObCC%2LS{Ow*@F*5d#ba)5yIrqSLJGM63dDOv1>Ep*CKmnvew>VeCbQ zi5KHR7qBtx0ybGnMtPG+;VrfSO6|Y|nA*L;f$_a}MXvSgfW4$@)DGM=T`XfsR4=?35AGMn%l z>1aGj$9yZ@&L(zj2R5@N+el}r$Us>J5;!VrI7Tc2l6r)yf2xrIih#( zYhDTc#q+N|ou8Z(%M0~vxvZCseDrTwHhtDCaz zyy9=l_IROiIHok6aqO!?XncL;OYL1F!xXxkMo4l?HS)WrKSS|*a*234? zn2!F7d9^qxk~P`>NS1AJ+UWUWu`HT~iW*kMdETAn$6bIdPS4s4by8HX+GFLJl?z>* zmTm79oxN_3^Mm=}x1u5r0g-L$(;_I|64}F6cttIX)A~)J4r+P>=V6CI7Z6udbZfQsBeQ$Q8q9EN*k_{JfNGP8q$)OJNmUR}vI@cGZzgZc2P<|w(Sgv8o1jwjPnh%LvX(QpSA906FdWX%yc z0vq;Rf@(Wa!dOvNz4z+VZCAcL{c9uuXaq?z3s#>{e8b1#Pu!}n^qrz#BGbP`X#a>G zIQuM#a}fvv1r#e}n^{x{0+2ySz*Yv{DiN}cgy*%8Y>kT8+Sscz?QJsVr(=F@n4vjy zN>P~c1oqs-!$^#*7ITk`TCl^#k`H26;HhMC`6G|)Y?fl46lswac`=`YW>I%DU>3|8JH0iymK$AcF-VV-N-mu8{}@gTw=(z$<})bwJ`23JOnQNb(d);td7VSNd`u#|EG0 eg(dDz1+00`&ix~befcywCVf^knX_X2AL1W&35T%& literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/072_NFTGalleryScripts.mv b/vm/stdlib/compiled/latest/stdlib/072_NFTGalleryScripts.mv deleted file mode 100644 index b3b1bc6616d60d18162dd85a73106b62c476bad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmYj~F$%&!6hvqK-_0gw2?|z{!ot=*C(zDDFA%~8gdkxP3y zWd^_zMon$@#vZn=Ip$&QpSv^=0*W(GSwKlnP`f}>l^*KVN`ZpRye8Yt<#ao@!w}-@ o+Qs`gPpe;(wOtp+IiF+unEDXY$-f91P%AVLF40yfSxQ5}7wv@=tN;K2 diff --git a/vm/stdlib/compiled/latest/stdlib/072_easy_gas.mv b/vm/stdlib/compiled/latest/stdlib/072_easy_gas.mv new file mode 100644 index 0000000000000000000000000000000000000000..2f15f91a99a3ee7751417dd68d497a9b498a43a4 GIT binary patch literal 1516 zcmZWpOK;mo5T4lwxg=KE!Ro1Aqu&%*N;Zt6xz3iDUT>mi`~? zom9W7#QR-^;X8G#|5CrP-p`RHdjtj?1W53}2L%Cy;9lq$pywkXKJY+2Q4l`!fqy0l zftdc#M@BM1PBKLfFzA4xKmtaR#DNoI&*_s6J#;d-pxwbE+Tne`75E=gc=k95$?-=N zn14(mK|bXS{qQ-a2;u1BUq^D)bLgo}ENmE>F)aV6(AtR6k zVWe}YTjmcKFEX<)bjj?adEZZ43SyL`5W4-O8*R;8Hdow4JX4AB0ndP$??Q2XEw40U5 z%4%NszRR0$jrn@}#%ZtXH>UcgYVAh7dVSSteAz?wx#S=i1~>qz$R zpe>2sdPULA&P8%twm-~le!CCd(Y;5X7x^lA)m7~(U**^3P1$bxyL#?(jF$CmO;xY* zrHPu>u8VfNzL#e-TQ8TJY+jn1*-=jQwUpYv{&Pz^Z)^Kz+-3YfINidvrCx4(7w+1W z)pOO>+4ZJ1&1BaBYTvH3yE8&9Qu{Ip*97&NTKhe9*6(^;&y%uxOBJM(Vi)VBsagW4 z&iD9x+q#|ZVr*Gtu6!AlXjhmc$Fm@s*?SJ#LnE%}h^c+G{h3+SP1(}Wxc@<}278^c zBY8~MgozV*8nUyHJ(P^$IZXfn|0sksN_E=PGM1V}kj9$sQjAkb6V0`V#S~*1i!_e- z04{;i-9Y@PKD;FevX>OJROBBfzgE+(fWYaIJ(dv$AN|j#5sXu0vUlQ z9|aT(#bf!5Zm$pNh0-B7(H{y{< zePR#HcbrBOT5t36_U{KsIeKaQ6vfazUm(U_BrlPM#GPNC1@9Hb+yn%rJ0>zc(JVcU TS%hCsgK0>WptsD8Su*+;ZI3%U literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/073_OnChainConfigScripts.mv b/vm/stdlib/compiled/latest/stdlib/073_OnChainConfigScripts.mv deleted file mode 100644 index 8d847cdf257fe6e822b0a9ca4710a4573aa7c13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1254 zcmah|&2G~`5T4mxd)MCeUz(%I7e|8#PLB7yg_^j{*%Em_@3{pKqYEV z?W?{zQcsAYKpYw!oQI*e|Ix?u%MZKt7I(&Pr z@A9*3+QR5vR!kS!RA1?;&dVa+%5j#J>Z88Rs&VV47ni5*MLsQb)xWH=qRvK*3Hq@3 zbe-3;^SK2Nh0FX#my4zi7FX}v!->ArqeY|BvPeg^;B>UAIGtDJysWe97ymP)%h%6Z zvrZTDab|Lv6m6U9WUqGgiETR_XVX+qCfby})agv;(^>O!$9Yp4>3ThublJ{juw$xL zQ(52jd`E2Vige!2BrR7%dCbwY!&&F(@8nqCtOY+Ck1Ji*X*uERxpWJCYt^lW!|eon z*0XBb_S_Db8ZNQ?R`pLU)7-z!oznl2x9bjU^rl$zJ3m|q$N-%X5>Mg~%!h0slVAW6 zVu0*Oltfa=q$6F)rI4QVrA(v>LXd$}Lqe!AMnYm@{yRfbNrsd#Lv}0~Zb(KPLv}40 xZAgc>hU}U9B}rn%Oadn9&?Vf^ht`{HyqpL_9(NzFNh%p69Tk}jkqn1|z+VX77Wx1H diff --git a/vm/stdlib/compiled/latest/stdlib/073_easy_gas_script.mv b/vm/stdlib/compiled/latest/stdlib/073_easy_gas_script.mv new file mode 100644 index 0000000000000000000000000000000000000000..992829bbef84a6b78ee21501c15529ed6564105c GIT binary patch literal 327 zcmZ8cL2d#u4743@Hi#{(_Rv!w(F2DbctgJsMT>z*6`&*t@s7TrPwSZzKOh?xQPq-1 zo*9j$`FXocH2~BItoWT5rdoFO=Qo;PY?~`CvWGx`$e?IIE_XE`YDNUCs{u{9Cj+vo zlvcH(hJhNw36O3$FU`fpv)#C8V;}q>nFnwE&L_Ka$=SF+hF(mNjgLu!J|40xuP2|j ztKd#0y%w>uOX1v=+&;MeOUC5C6T>_9S;|NoasV17LKlW71*5eiXgy7NMQER=t5e&KISE@-1K$-1A^GlL+2 zK!O5Ii9rKk0MY1FDg%|AyZ1iREECCF5bNzxd{Bem;zxuJLp{pLVOB zbW^=v&AZ{~`)*tFr{+NZ*zzQ922v9Koe@Ahw@`tT8C2+WC7fBtyN07uW_aHTOIALT vkJas5S5!%tIE7ha#S?j&n@m+IBOcvV+;gOg!c_WHo~dUB%JgYrN-N+mj9+0} diff --git a/vm/stdlib/compiled/latest/stdlib/074_epoch.mv b/vm/stdlib/compiled/latest/stdlib/074_epoch.mv new file mode 100644 index 0000000000000000000000000000000000000000..d64076143b02d351d1bba29b1003781ab6bec658 GIT binary patch literal 3021 zcmZ`*OOG2#9j|wHSC#E|95rO9}fO)6d}Y=60`W2 zKmG?5zhj~NJ^M5D{>K05`F}E@`iuE3)qk}g+5g)A1&#mojSL9x6vg0y%vc6`;hiO;2{wYg&^!3JRno(cD3qmFJIde)V7RsoCR*9jC5=w!G=JE$>b)V zeeO+XvwWSE;VjRJBrDd%1khD_E$7Me^|ee^t9&Js7fDvC{H9FvOcmuS&91}ZRZ%9( z$#gznB}I`GL76U-qMR;o-i#|eKFbMQH?uWlXAMcPD=Hxax0qU%bRtXyb(QmP05m%<>b!3FoF8o zi%AtJejSMX|bbOr&(I2(?$C0MAf2g1ipH0q$cT_-waKw&$X~yXWS(AKrL*;- zd^NdEvw40SFQ+djwfZ+&d=v|Yu3v>&a=ROBVX9*Mc$&=@iLL#sE$-i}k{4-?MyS2p z<*8p(wHNF1YAkQi2IbxqwMXPG*jbK*U9G0e1V^Y8#SRV`C(H#!`<&@dY^48co5Y z@u@fu0I=Bl){}pv8}f-5YwoVWYMh8i@)K+~rq-|l>4jmo9d)gS1|Hi+Q|ksm5$iTS zGR8t^_J`!+SF0sacEbE`0%dAwifGx zJ^U1iM1H@Y!ePx(*TY;N?R~&94Ql7C47jSc;HggbXM@YrbBvmIkhOLq+Jkf`M;q&jE@W76!5sp&8mjp`a=nBkg+jTlm* zDh3m6Bgfp(R--FpLn(tWC0s_G_Xz|UZtE?|V z&;6>dgetrMs)6zvVbs%~{A?@pc3@!qr^C^?)nj2Buyzlift5yzXOR5mS0qh?NrW}LMD|$US|g3< zTi;mi4`EAr9PSKl!{esWGu{B6oO--BM3oy0XA3rI)Wyuch_?qLowPcZj28GCK=5dVbjmOIYfA++g3%Jfd8 zUd-?y-UcpXW_M5#vj$MS>(JB`=Z!UYP!+S5%kjI0ik4x>wC&=Q5FE}sh7D<%u6%&3 s+t{#PB@0BwhC2kunLxe4ajqm8p4l7^?&>G#&S3TQ)_4O_yy^`3Kk?l9!T}yEopiNkKo$#c?lC2+JSkzH;;ku zwR#r{0CEIjS<6;syDC2%XAdm(6F0F!AVAE4DXAonBuP0-D#+A0OqsBhAHeyT%0V9Vjpujyu LtY1K)e;|Sn$x0z& diff --git a/vm/stdlib/compiled/latest/stdlib/075_flexi_dag_config.mv b/vm/stdlib/compiled/latest/stdlib/075_flexi_dag_config.mv new file mode 100644 index 0000000000000000000000000000000000000000..a676959a694d972aeebea878a71e45532d86b47a GIT binary patch literal 358 zcmYjN%}&EG47Qy#+1fI?frOAaaOQwG?#|C^L|L1*5nGFzz!*m^JO>ZJnTO)W6X0z^ z;DcpkBSryL&e<4>dg-3Mscd7)zN>w6*mtIEt!KZ>i?9jN zt&FXz!G++$N_93UHTVy)Va0UE%@V~G%lLO=9ll( zGUpIYh;}G@-dYcK<<|XhKYMswEPZIrmSlemEB-X2Mj$FaTf?ELpG4F7>U6?yuwN)BfTj`J$Dm2n32KMu8XuXkj2C1z@z4 z_#j)WWXu_lfSw#s2m*B+x!94HzyN4bG(>giJ<*Zz1W0JSJIX={aNwTm*QOZvJ^P34 z<6TwtJPc;jjdk0YEtg~4J1%=J+ll*guCCVW)lEJX?{!s-oOk=@H=ffI&wc$eFXUi7 zaemsf^^o(f8)x0L4XcJf^w92D9RGh}NZc+01YD{_r78pMGfXH-gIb!55(*@)2uM=N GXTTo?`ZYHI diff --git a/vm/stdlib/compiled/latest/stdlib/076_managed_coin.mv b/vm/stdlib/compiled/latest/stdlib/076_managed_coin.mv new file mode 100644 index 0000000000000000000000000000000000000000..14017686019a0909d014da2295f44aff16de7528 GIT binary patch literal 723 zcmYjPJ#Q2-5S{V(>ulfUHjt~RXlUrO2q7dQ(I6^*z-g299hQ>alXp)i(((f+B7Oir zhn|L-k{St7G3!JG7tiCFd2dJa_RFK6UIV}!!3p=6p1zTXpgv+YzwjH{ue8+P$+;hN z;(wC}f9NyLKPkDmQIc5*0th51i-73Wg!6(&1&<|Xq4WhCZ z@Bz%YSv$_klQ0J~3(pC=oYJd`(^x3l7&9}@coU4!fk5fNqYHtggCf*HDDAl!P)$JS zCEuc;_Q)|6^nycAQ;!p973)}K73%reTcPPSy2Avs=94;2-aU+vFIp z<5XF`F5!L6P6~zdmV^7eYuYx)VOaN@S=W#2O~3D2dB#K9LmJ<=xjE=}Wk9(fH??Ww zt{>9KM*e@0*v-2m$dz4%vaChf1Q_-dL9HBAGVtb~gET7e$_-TNi5D**kOz-7Z}${x zWYZ=1W5=n=dUo5Bm$e8cuwmS&y!Pf9yae`;g^yN#5++AQ*xjlUt4hx;^(W3>`Iu>iv}`~`OWW_bVr literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/077_SharedEd25519PublicKey.mv b/vm/stdlib/compiled/latest/stdlib/077_SharedEd25519PublicKey.mv deleted file mode 100644 index aa92ddbcab19b8289c18c5d75dd714715d8e0637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 615 zcmZWn!EV$r5S!rq_iL*BrZs(APz;U5XTDj)C-~?5V?uzMl8wVIM9Af4}1XJ zIC14~_zA|#qE^BOYv#?Hc{BEWee~NZ05Aw8m0Ik-%FdqT<9E_GqEg?)j`=By@|XCu z_#q|p5C{ZF$N)58$&g|Ua)v<*c8heGOad-)4cSf(Aa@BtR7C+)69MiSj%J8xh*W6^ zh?$0v3#t+|q9CO?c>jFqg6~edm&eCPuiwrWtG+$+*ZE1?j`I)~Cv#l-A@;3{V^F6d zjA1Iy`^&+_Ie3*U9}0ifPjPBo6dyQuovKVr6UOMGZy2(-W>aqLejJ+Ctq)l1U81r7 z#;x5&zv|=lV}BKcYhy}n?$Wn$RX==vz5B%TGo6m05cS(-bIj!o44br%9Ie+8{ z9{wY`+lf*W%st$8_kX1M(#K`$b1TfBbN8Uoe(Uqo0ubeftj6?PQdl?y!sN)z!gHu# zpAt)zIU1<5J>G@|S*)c6OD}-LhN~>p>KP=Q(l*F@2J2kPtgwJN)cUD`3K=VEW6{Dc J9PnPS${*!1fMfsw diff --git a/vm/stdlib/compiled/latest/stdlib/077_math64.mv b/vm/stdlib/compiled/latest/stdlib/077_math64.mv new file mode 100644 index 0000000000000000000000000000000000000000..d28f34ed1656e9e171c6fb38af291e77bfd168b1 GIT binary patch literal 884 zcmb7C&2rN~43@N7JK5cI>KU4Zzzj|s(qrn-!i5=boH=m!cv>f9CW(tle@+aq!YlCz zy~0BvmBcOF&_R~;X|>-c@Av0FeFOk4goq+GZff85?6vY5W zB483{(E!9KU`uOlbxxf}1PtP+BPbbzMhyvDAXCUnLL9A%&8OF=wyf)_?#vdqtbHo^JTHRbhBku)%miTPs4j{`|ziWwPIGqtywMB=CZosFQ4np{$hPy zEEgAfQO~bd<$7~)UYEtD%x87A%Io4L7x=0aMUM@Q=--+I*mL0Uh&xWic<4p6#RlC# z_P|Na`C{)MF+Y+93BBX^h`FNGR}jupS-ro}A$&Q7&uCtTw(PrY%}4aQq#V?F7I>@&}&Svv8io3x3A3wqt( zm}4(@*tSOzApgBVj{ZUJr5`(N$P77d)*%yKJ|srERIS>Ghjvf$9m%H+GUUEcg}zXI xfCsW}@KOY!WHeA#v9daQ^n->RH9V-9sO!$KD}rUCP6y#Yv;Ro+(G28Sz;7*iOHKd) literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/078_TransactionTimeout.mv b/vm/stdlib/compiled/latest/stdlib/078_TransactionTimeout.mv deleted file mode 100644 index 0e53dcbf46cb6b03668d856e1a523226724812ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmZWkQBK1!47KC5>zaJ52%$|3Bs9b|kl+gYkFqvQ(bfbdDV&2Na0-sVVYmbd(gYIz zu>I`kXZwBqC29bu5gKaFt93iOd&A}f7xEMDa|3|^0WYzl4D0M@Rx(25NJMb94cbNB zC+pqTj>b=^dN}(2FfS-3Jw7l0Qy#s0vioZr)r&sbL8V_2l}>ZQ`BxQ9@7)lWdy`Z@ zg$0vUV*don;N diff --git a/vm/stdlib/compiled/latest/stdlib/078_math_fixed.mv b/vm/stdlib/compiled/latest/stdlib/078_math_fixed.mv new file mode 100644 index 0000000000000000000000000000000000000000..efe13bf2f64e69bd629b0c9533e4711ae6b97bf6 GIT binary patch literal 1091 zcmZuwU2YRW44(g)9nZF1DBBQKqAH?&K%&W(m3V|cAV5^=0gzS^-KLT9*UhHw5s;90 z;RGCkJ8%Myz$+K%8`wz$q14ej9{U@Q{dwlg=1(w;F~^w`PRVej-(~g_|Hj>Sv1WdV zo$x_^)`;LtFe$WUOrgz;5R6%lmLn@7 zV*+lx;)**a9iyK>ODM%9^9lt`6eDNCSMg8zL8m?~PI{N+u`a7>RK+v97>|0xdOx!i zZfDPA=e!$U66$Ckkmcpr;#X9ii?}~5#{KD}*w6aIEc8d+Y_Yb3X}>t`oy+m)!s178 zH94zlIhhXPZdsF~IPdhQ<-PY+*{RFoq#6zWdgI;@qrKx|Qe#k2?zM%hQ+20^@iYOVow-Ag<7o!t zP4-|p8QPCjq=RKi*afp6G$8PPP}!?A`Ue=eR~}OcP=ElRogrXRB_X{?Y>-}p%s#%o zdcC~40iw}<-byL#eWShQ^+qdLZ)b~EaNYsATOk4odJk+0E~CPirI|vM(e+%GW-26g z9M3zBv2DvK6}7G?f*lbTv7lQRZPO}9;HWhS)Rv9}8(c6!dH3glZMCj9jJiH7S=j}Z zgUK7<@+KuWlsuXxN8%GpK70?%KYp_)5D~WulE~Uydx3eL-2`l_9S!Kexp(sxB=YLn zAyJDNd7HOzNbC^it~@YpKp+*lpzCy9E1sLIQmqmCU~_hR@IhWn_`e_=8u#L%YUlvc XW61}69VZE#2$)G4xW*gD0bl%Ywy1LD literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/079_TransactionManager.mv b/vm/stdlib/compiled/latest/stdlib/079_TransactionManager.mv deleted file mode 100644 index 1a770f5255b44bc1b928ac288fb8247c5ab255a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1499 zcmZ8hOLE&r5bgP4fEn;J6h%p~Ba4n49Jy8za{(+qQsx% zcOu`>UxojV?0RqgXW`%eUlf4^C@|n4zyk?B1fW1e2rXzs2fAQdElz+aB>{Sfh8>Dq zpAo`gm%Du+a5sBI5)k`Xmmd&J^^sE0z7vFmhj&|8@T67lev3fnP=$ zsD`4b3I)SO6%|CI>_Gq5Dkmi>0LnEGpAau3%>ANle7?x^A-+(Ut5)jA{q z#N6iRDB(EpgP7V@nH23!^EfTyS(#+%k8v6=Y%Wh{vuu-=;`?PbyV2EtVPD1hT%KLW zN%~~oI?Hluh%Ijq^Oqi~i$0`^BbbS$dT$CS@L%cJanMk7qZSdir`> zgH5Jq-XvM1HV>xB$`)n3T8n9RW7Bqn(PL}(8|w4T?Y~U zc$v(jIA3g5HZAYWlcLO%%S~w`YG0nZle7UVR>}~o$_^x?wUSE^w;%hqo!Tml8v&f&JW|Kt-@1760n2%S!TFl?NnXlg4^m|F%N|X?M z94MjgogkqGO*GX^b1k%|rS?Z)5P?qrqz%S1Qp+KiLP=trWrQ(pP}Hb4hAO;rN+?eU z##uc~CA4qC(0M(rs>Ir~sC$q|tFAVJW<4E@C}qywcl9t!gV2a+DY5>JE2aajOo!rA z2jl{=U1Nsa6M+QNJE?iLg{gQdVs?)BKpaSctWoP9@k23`yz1e<3L~yPGvHr|Z=~md tzAH9X%9#87VO3&}eXp0e>paB|`*-e*xG@AZ-8u diff --git a/vm/stdlib/compiled/latest/stdlib/079_math_fixed64.mv b/vm/stdlib/compiled/latest/stdlib/079_math_fixed64.mv new file mode 100644 index 0000000000000000000000000000000000000000..72eb7c934098c42bd6f9d7b4278274ccf92d8291 GIT binary patch literal 1350 zcmah}J8u&~5Z>3_-tFwgIT9RWMGz%IX^>(&4@IINP*5B=il`BXMJ~pYU!3hEbTm{n z6ckW`C~2tp4OD;-bo>HDP0P&LAulWWtQ*bao1NXAS-+kA4K8EM@lIq5O_AzO+ZmQg_tAxIEhl|iVSMA%lX|2W=h>?hl6D^8N8 zoixa-xZ7#8`)ezj2<6JUtnJqAZQ^YW12Wm~YW(7~wih(pakn|>#mkjuyJDN2dSz%+ z{-7CeH+E&Wv#0SRy6Qbi`?5D^1@)v)j(E4$93&SXrAe)y#5-xHb?6NmZHzXy<6a+w zI$L{fW%9sVOY4JH((dEs9tD@!j3IJ!AD({s_ID=zc$9EVM=JLWyU8sF7W%-80xy3~3~=>kAo&$?C_ zuX1uz^J?0ean;BjPAr0|f?F+sS1nQzmx}n=bOFcyk&pf#mw zat=Vi6=;ny<*h9`c+>s#)ZJ50-yZ#PB!n;^j54qBVy-tA#dr8B%}+I<-|DgdfyGm^?!U`C@emXy&JjLJC=LiuV80!DTspt4NEc*-az-V2z{GGPi^jEuF$ zjGRG3W@OM?ZLPG(_c=rK+Db;IBr2~_4+IySTM4B=R7!&evZVmU19GB(xB^A2!VFf9 z-^O;+FGGCO#q}=r#mlbSe%vH_72`Jc^e%L18)uho>Q>DzgxI9*@V$SRYOc@yv1E2! zG=qM8i@H94aI3yqr&V(mQoCqVd;0$)9z-9)=6zbx<(BunDZ{6ApZcav54#xJ6q`L|f7$Y&VUIyO;lQa{ z3{RnaQ9%vtimqfWpJJ(9AJ*&WCt>&IAP0J^EYN^JGt*-Ult4cWH zp5&17lgn}9QIDiN9$83sm~Ad#>d!Ez&O&ZR7Pwj7OV%WHKB4`Z4r?PR6aJ2r2bNO& E0TGdb)&Kwi diff --git a/vm/stdlib/compiled/latest/stdlib/080_object_property_map.mv b/vm/stdlib/compiled/latest/stdlib/080_object_property_map.mv new file mode 100644 index 0000000000000000000000000000000000000000..cfb8c4413a2d5ec6abe11464acff53b6a50d6b1b GIT binary patch literal 5018 zcmb7I>#HP36|bu9>h9^Pe$LE&Kel&w_PyENyPKPK6O(LWd<0@bf(aocfHP0!atS67*m|3B0Xi@^OmsxBJP)OTEDd1e>?9;?+qP0Z|iRf|0m&$ z{$2R;Oz_8J9%gVRn8j=+nZsP>u^N`~eXQg#N4w09T+X;1d(3V)%$^cVo^}Q1F&1Dh z3kBzbB^J7=jaOYd++$5lV$+_@*h~$*SzlprP6v$5%MjfK8R5NXbeCj|{<2K)J|t7T zGg-&`ux#LcL^kn0Drte1oWlFqG*&!5gV%{!eA~GrPMA2S6tm994zn)AQ_Nb4>&&_s zH<@)QhTzUPW!7rkVAfr6#H^fVd_A|D_~;R4 z-|I!pzRx?tVd z@Q8<8U<$25-$Fw=^euF2ED__!vq%kZ;o}D@dBSp)Cu*z)BWgSvD?$WCyrBjOcWNxf zkg@uM+7Hsg#}-w-=Ls{}>a4BR@V`xqtT~SwQ~a`dus=u# zS4V@MzSi#zJKf$+`*X$3+Cw*n(85QZ!t}xi`#o4VB9k!M*eH6%pfiN&rFrc^v2J&J z-J!Et^frc{3AP8tc4t6ap$`m-&YGrI8|Dp)ot>HiSNr`S%)oSSCO4V7t+ZCRt?l7W=V~7Z@p->&D0+tGcVAp^SKz(?d3fa&z?kL9O2Hz!H;?6k zoU0yPG4vq2$_{$&q(@g4J(lS_f3(u|G;tS=MsdLXLztaz2%d6NU6XCVS%NEWs6F{C;2gorZmeDT4B$M$2VABd`841H!G~R; zrF=@o?jpg*p&Xz&!SJr$@_HBylyiWINKuk)PKq}_N~h*z{5FNJtTyYcc7uV^=3HN-30jhBab zMZ58G5wB=BUJl|F?Z!(YUeRv6Y{V;iuXs^BZWl8Pn-5Djgd!I@(XrM#@PpD3H{^>d zsN6t9#tmA%Go>U9xk)Q(p*h?a0R}!82sjFJHCzb0V@BB0r zSCF@fY`Bv0Fb(+?P8u2phtD5`-DZ?+`YO`5YKi%Wo4l zl(`PdRPq*K!PSU6iQr4W?oa7y-SqLBP-cIht7)Rm|8QW?=G%n9n+Ah7-z5y*G#LH^$xRb)8jRHV z1!3@}!Qjnb69#V@4FCV0FnH5o@aCThgEtKZZ~m3Ks!6>04=(>zk>)f=Gr;Ac65Ik) zVEa0oD~EvC@5fAvJ8}Ss?LJy&u-pd3Zl9tc;&$x; zVzX_NpO)NInl`*9yGm8Tqr9Z>+>S_v5=zBZ0||tE$A(Yyx)ymOGw0siHzLV|J|J)I zlh29ZfP8A7{DKG%$fx(o4~yu495h0CSABn3;Fr~X_Ra2-F9`aTcCY<&`{aj2dO$wE zPrfMX2jmO;LV}!9L;|UqC!x0?AF0@*RJpnu#inJvCDo za8J#&0l24TDggJ?OxFPS)Jz?~JvCDsa8J$jEa0A+=^4O1HPh3mGpd^Dsmk#GyKF)w z0>VTtJg*v*|3Bw|$b~NfBK-|SF1!Mwq4YNx$#9D>(%)cY!|Q~R{sto*-XM(hHyHT< zdTCJl8;pbiy)-EO4Ms-%kh&_RZ1@qEKcljVE)a8)8hb0JCJMcPiql3f&{ljtc^08gUln*w+ey_zY2C(-jv z0X&JGYYN~=^c+(FPogJH0X&JGEuY@4cn?JHcDYZ5FY!ZUim1pGQ7OtOO=WQDlNaPm gs4}_I)jdhWWg!KZ1S(M}ToN>?n8F{{@Y~Y=0Nxc%Gynhq literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/081_TreasuryScripts.mv b/vm/stdlib/compiled/latest/stdlib/081_TreasuryScripts.mv deleted file mode 100644 index 23b7501a57b223bcba74253c5b6edff659f4d604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmaJ9HS=-r7oa9p60RnOK)NT=!NFWi3(lYi&SomVg-f*O&Io^Y}py3gC z5?+F_o#a4Baq)TP``I6RzCZeHv=AZ$VWqX|a*frBzQP>@ck+h{f70CkqHn+!5K<_C zf^cF%fKtdPv;YW1AbSiI0E!41No!^(2pG{s6F{`a0>X64D$ZsxV?62W`J7QM7Ja?E zSTPcjrhr0MpCU+!vScyi0EnTG||x`B>a5*C$K1Ez+*3N}pE#KA30C^OME* zCm6J}Dz`3c|M6uXN>1-DUk}ppSTD2YAUti|P5s%OiC!J{|9|bcaC|d9o3GQ(RhwsJ zm%5wA@6W7uUAWG-^*PJqtSHW`pmY8q-aR>efWA2T`O6$G#>4yf!()pAXeJC8nFtPG##+53@cePP`c|80HWaeiI>j_-akQ?S3B`3vs-SL3ewviZH^ z{*T|Nq6cRNGnvH%vzfzOmSY~1OkptJWh}t&JbnuJ2~jS(%&R!et~#7?qwX@hVKAqO z5_4xIvm=}Fmu-}+*DP*x{yO@VFb69eCSx^AaF@+kHqw@Z;o6kUQ8J%Hvfv?Eq~r({ zmn4#9Dy~qnO0uUE20Q8_IY!0fL7uS_1tcdej!~c1Gn@(y#-0g_jGeYhke<;}*D53b zYy}H>j*{mod4Z~&3$;3D&c)gcXZEEAvX^ID$iBfX?%HqC$o7@0$=s{F&fF{9Wc=D3 z8dz^FnA~=*w-$lojUy(rZ!V#&d8<@nhMqL{ja7{EP0Z`OZBnb-Pa)B3HSeI6_s-E0 zGv7td{)O-uGu}IXg7NoTC%Nf-aH_=({^2vHf%He>H1mEj4;y{Fy1;F>^DO4Ny9)Tb z&$~?AGwaM;qd|HvbLPcIUtx0noQat?!aB3>hgD{8hA2J=p%DM%f?)0zp&_=>)9SaN zg*A8s>0EWbI?orYN7_s6MgCOj==`zLiPqE0r^S)wXP4*1ym+bf^3#jrmD2h7xigDr zmX?o+H_jfbp5~{k$N07OiT3qYxn;DjFWeY09`c+g7eaf2HIu zvfT9`(p3{uXF@b?3SrW9EHQ0iyAJ+YBB?QxB2w-dMpD31JnmZDoXhxa{^bB+kL*^-?>nvOM6eyU~BvCuJ;1;xe zFTqkhtSSAcY?Uq^YGF#Zkf?%T5NApmA#dht*`N9XQ4lt|S`+R`d*R2E)C>onaebr zr%Qt&It$&U@YRl$Zm);c>~z+LgYC{eOw<|1>lS6~+sPtsX&v)>`gHo;?by3G)-Rl> zO0){FQmC*?tH<2-twhPUQzh4i03j|Vzml1|Yionu{-~JBXog+_>&kvnr@Pacobyva zHhVxbte~C_QN8@j9pacap(XI*j(G@?@ct z+Nphzu=DBW=zfP3ou97W4^wlh0l~c2Ih?Aa;T$a)3}r9gSsQL@D~1~};D-Ii-clY* zw#f_O{%|3&+3&@lSu{g_CmwYsMsTT26%J)~hnpsT&>q9)F2!5%D2C5iJMq?f@%8bR zy4~+S+_^s(`5K!Hj-s9sR=_UU>ghpq17sd`w|3)PKmIhy<#jV`kB;7iJ5ukCE8Tu? zE3RCMhntV$UgGW9G|uKuXJ@b-+xG_8yr0&lwn&x6D_GL>`v z!Kky2&C>I-NeAnGYPzJU)gScZ%!Ma5O4>fZ+wbme!Hzw9EADTM?yJG>s54ma z47>e}I6t;&!bpY9{`9Ky>5Q2wzIaD z-1~e4cJ4lW825X%wQj#NMqx2HM8`DqS8W}0)x zIouLbnKjOdaSoTAwD!AuvUETkzsxgCqa#qHOyveH+FG6!S&>k_bi-w7 zNnaW0zlb(GLe%LAT^mRt1FAv1XsEohJv&^njw4<5>=U9SltPTGa?0`Sqqg-Lgm%g1 z$_u>6QKq;cbIOz^LNpb*fg=&KL^+ucj~hS|$P@w=d5U}dsIVO2Id*t*Rr2GaV3Z?i z;HrW)`NP{77Jyj!Dfd`-DtrdBumFHdLzI<+EUSFC5k zpaM~D+1e7{A`wTsUco12UMY$5Rqe@YzMN}`I6v0AN zwf+US1b-o_g|CW#qYHzSh9K~NLg2sl^MwA4c=3s$|KL#Q?}+y^ltr9De^|H1zQ^grH%{$Eq*=`H2C|KtG=%&?>u@iwyh{c0Um>J=r*c}^THSzy%i|>-|PiTcd znzq6pA7+Imc=*!(4X~PSfMkCp8{nsVR``$93iQ79!asq%BB|`a*0yNC77f?}tQ>e# zT+{*&l~qv%;1;QB;RUNLmSv6Z;tmThu7YgpvPNWcLYyX{6@qLe$R@y^EQ6z3stsTr)$atQDYB`I$>yfGEmcZ39co2n^MUAO!XOV3$cFGoJMHo91Z=_|BJJ@C zWK#v%RQHojL9gJqxGV()zoN;;5x@?PSaA`ZJYO-mf zx(TwG0onYBOXbgKviS#Oxx~dDSiktg1ZyX70yD6}qG|%|=049CAUZ;-3cL%1lnT5Y zm^>hGkBFy8H_hZq=CHUj*ll;QketzTeQ`ejiz4@*FwxKYu-N z$8M6n8UWfCH9Xd0l)$qDi#BB_5GzjCKuZW0QUL+zj;!ew)j35c<^=?cYN& zMZ2ic4rC~c8tvLw(Jo+@&cS4KZq5d^G1`B>hxR|FXnW+!KlnPdkzh@<;p>pZCukQ1 z*dcXfVu=LWj3vgtuNAv?D72TvRWguvWNiR~_8a1zOqfASXrtXEOAy)+jai}wmN*nz zu=gIcj`-CCT4IT5XcO$FLK1?uokH6Lv>8kM(7{&zJ&OkwI9MedEUjn; zv8+82;Q>rUc!=&)F(|^a6cM_hgU5t-D%3m@68z7Jm*_mwJQBdOE3zS5azWCGxCr`b zf_^-e$4Qd6J_?#sp4}dM_PgRk1osL28`O&6zb7^_A!t{7_O=+3NW-6=h@Xk?kVwOy z2an9bv*-4Ec1^F~dt3rKznzja&c|j-(sk|GC0Uboc=l3&FnF3rs@Srt!JPK&Bd9(C z9$5sBAQs8{i<(D%LT}xY?g@-Vf0w~OaRiRxpWSx|*2Ua`hv14he&8WEi)j0+hv3aa z55X(qM&`-l{p=8=STObZ>=5jT-q^icfE*F`12LF#@5dg3Am+(K@HY=T1d~&4%Dw3j zY^8@FqITIx55XVox%c0s?oA)KUi$K9;d>xk%!-8r*&=~+nk_CJ$`76fic;+4+o_#*ym^Lnv6r9mb za5^|k91ov|_TmTfOT=t?-_O7=XW*B0?E61K#NgNUzW*}{US-b614`4D_|7biuoPZ0 z3J~OTxSkjYii^q$n6x0q$3_I%dGIj)Cxrcz2O;&8a5t-47}TL$+#o%Y(VD0WzodfOC!8ojvCT5O4Oz4 z@vMuVwkNNY46T&m8;&0}d;^_zC&MWJ%%_{cs677Z#w;6EOnrV9yYEeU!3wWL&1hD? zK^0NDs;sDmL!&)@d%~L(oYuq{ZWftQL+4i=$)Y)hOK>z_vEe)=D(UzNpcUW+Xi(lo{TzPT~>JEjvMY&NB;U+2chcS{A3!)HCzBNx2!V zV9T0$vtrC@{oi~~&x&1;&PtAeS%KT$toUr4%}P?t>fk97i?Xffb>$EVu7Uqw zF$M>Rbh=Ev4ZjXJ1r3h351a{k298%T+K=~UuT1a5TrfP|GJJ65!o>fa5yE2s3q94L AIsgCw literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/082_Arith.mv b/vm/stdlib/compiled/latest/stdlib/082_Arith.mv deleted file mode 100644 index 5a0bdc47ad7b20dd6210dab05a1c9982a9e6343e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmYk2O-=(b422y#nPlc=L8UT-pdc!-Lx>_O_MCzxVhVyv{E3z`a1PGLA;3-%gCiw& ztoQOcpOY_CL{vFq;c;m9Z_=(~elQBsH6)aCbzWa^IxwGStQ+AF;>1C26^F~>%kXP|+Z=?A*nAQ}Jw diff --git a/vm/stdlib/compiled/latest/stdlib/082_on_chain_config_dao.mv b/vm/stdlib/compiled/latest/stdlib/082_on_chain_config_dao.mv new file mode 100644 index 0000000000000000000000000000000000000000..0df49bb88ce8ecfc0b42c3035a58c915af003fa6 GIT binary patch literal 655 zcmZ9KzmC)}5XNW5cAUi7-COp62Bf3n4bUDs>58op6+%>&NxXX&OC047+&#uU0tLJb z6{4i3qNSi@lH1cEEXAYm^ZX{(j6Xg4WfB0GArw>`i<5I{a~00?XZ%9xS8FlmJW$krWvU%#boLz!5V*#eyAeh*bt;#?uTHCr;KX z*0#KGf%jN%!_HPN3jUOD+t@DtJ59Q{l=A%?NKM_El54-amfbx~B2f zjrSr}VSBZ4je8sRp}*4p(w9T;lV(5cLOpNV*u>7;VPe$>w;#MHUGv}oPKEFAhyJo} zUD?|k&h0IW5bL6k?|f}T*A2d1b-uSBLw{kp(BZ$itE$#_osHY9j=kN+p{`DDtG%CY zdE0_JN*}Jrqx^TFNU!l=5E^bXVKKH7K_X8T5G9Yx;2NIuqgmq_J_AE*B4jMTzs7=c lSSE&^$W+aESQ?i4X%1^~iUp43IdU>Tpkx%MBP>Uq!e3Kug&P0> literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/083_U256.mv b/vm/stdlib/compiled/latest/stdlib/083_U256.mv deleted file mode 100644 index 85e94525dd591e31e8b160f5a80db1ec47b75eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1510 zcmbtU&2rpC5bl|t8A&tJ{&{W3@g}k3fPo4Xyk)2M7!EuFT(|Z|*eZ4X<*(iTy^K_*?y*Nq%w?d_j_!C?Hb6q$LcawD-Ua4OA3BS&v)@6-Q8s zkG4Fy?N!ICu2(&;_PpvdDEppw;MJj54}9RrhC~k$1Rd4+3^Dl(-oxlY^iU6?N0AIEBoUGfLNdrFq3{SPtdzz|A(UVNj|$i@vkWYf ziU5gBjSNiY0E5BvF6&W50=Q;Jq&^>Bz0{wUS#@JRE6bu>nJ>~=Rg^rL&mG1%FJ_an zd=t!y$EJ? zG^E6BbtdE*R7`Ww@qeL3p!plScVub!S0hb28eGQg=;GBU zmoa)8aV!$yz1fzw~#^`t&525b~ z5_ES763p!F%ofbOo!N%j$L#;P{g404_T%S6{M_%Y!7r;8Z1LNVbgCkaZUt8J@NfB#sFnZ# diff --git a/vm/stdlib/compiled/latest/stdlib/083_util.mv b/vm/stdlib/compiled/latest/stdlib/083_util.mv new file mode 100644 index 0000000000000000000000000000000000000000..63109cb48b6bf444427d218511859059d554507b GIT binary patch literal 121 zcmZ1|^O~EDfq{XYk%5VsiJOI&iIty|T|$||T7bu!A1J{HgbYj!OhB5Ek&B6um64Ny xfu*!0Ge;;fC8a2}xHvwoC_gtosj?)smRtcR_xjH6I?s#6r-uCQu!XAdwj2bRQ6Bz{}mxZNMIC_@O}E>4>oDnFN|*3CM6YRty8!PlD$)zGKcTRtSx zA%5Dn%HI1@8d)o=%om$dpWS>WxAI$EX?qiVW#xrBI+fLFS4pdib7?MBYYW|!>iY2k zzPM6)eQt|q%4{AT)M$HNNZ)=ZxdO5@@~V*arfY0e>dT`0=*h=3b*)?5_WDBF_;zlO z2GqKZLZ*;qX;j-%1&1AWo9IScEi3&@Wjojx%W8k*VtZ>rRCkr{dFT61nVVw0xh$-+ zZ`hOQY2PpJvE5i%6`l$F7+KRbr{EXwnx3d-V|ClgsWnQr9n|$T=iUIou0ZeF44us7*L_J~q~A7i*!Z^ig+_6|E?WQA93 z<=%soJQ)iNfZzkXdo%Xw=>a`+`aHp}ba==($NBOkL3>h@S2!ZzX*?$Gtx2gspCA(6 zLQMEABm|x-lyZT%$R`5lY>r6mvmE8ClVk_sp@mAGO?S{a$rpR~#G{l1V&6$pA_$x9 k-|}5Db=CJcJUhT=2l#xq%egybI7Jy+a&b%+y9^}$1C#U(mjD0& diff --git a/vm/stdlib/compiled/latest/stdlib/084_vm_config.mv b/vm/stdlib/compiled/latest/stdlib/084_vm_config.mv new file mode 100644 index 0000000000000000000000000000000000000000..82345d23b8d03910bc73b42b69c9ebd0802b1905 GIT binary patch literal 444 zcmYjNOK!q25SdG>~0gI4SwgJ)G^e8<-Z&9g> zUZDoMU>2kIJfru<@8jktivb`-5F{?x@H)DWI}caM>o@XG>WMEJ=D&0sRuBjnM9@h9 z;tU`u0C)nF2cCv$5MaRi9fW8=F#?_^hzW}##u&x9AV5LL8FIon#}vY23h8Dg%eJY^ zyl5L)E|dxVz+>mFY34n*b6&5cn$4_sPP=IBP0gQ`duqJhWdV%Kg`TZz-95pRJ3e`N zJO~NX7;jW<-gURpTUpt5C8u>eWlOz_#|Ia-QFWq&pwX_VwDN1KWMg`jg fM%d#aDu74`=u?Ix$SH%225c0T!vI+ZBO>?%r?g@= literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/085_YieldFarmingV2.mv b/vm/stdlib/compiled/latest/stdlib/085_YieldFarmingV2.mv deleted file mode 100644 index e0e4f01ae5c0088a7710dfd4eb8c9cce6f995249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3429 zcmZ`+TW=f36`t$P?#wK;EAt|WvMI}!?WCz%+lfRus*RvX5fm_5z(IjL5gTzOZ_Qhl zOJDNZ0{tC*Y5Q29KnoP;Tl?6z{(wF=f1=;al5_$(1T^RDxzD-GjDElWjR^=LF(sDS z2mJB>sQ44xmVameX6kqHA3^v}lLY@Uf2R7k@k8^sxMBYl|G~!J?Cvyvvv&whN*Lip z5J>_>h_Vb6O2Q?KmQXLD@sLO4@9q+Dmh2Mx2pIhsi#)$|n+o=mBT3}rL{brU zw+>|Q*5T1%)ZIPMz3T@&u!2(~SVSVqLJ|@h5(Gho6oNZ1SXf|~7w`lsDTNwRX95~g zE=6FtV>1?5Pa>driwr`{B^h=kR3f(K(6>60Ma=6lxg=6f16zAU01OeTmALc6U9iyM zLK*7CR2?8BL4rL93E^!bLZ%!>>Uas`_^sr*T%!V5tqEuKb`_T^L6?V^!|H}daIiV= ztMNsVkA^?X%5gEd`qhKr)3ThFbMZ8*o(Ip0t4Ur)pBLkNUS;E%{CxT%pYTs#&(u=E zF5xHhd0wTTW#vmq{xq9qUlyaHdb9h>tjxxFm6uPa!{YMITaJ8IWiRq58x9AV(^U@3 zU(Z4Z7xy3ZI~UpLVlm39eDJ(BJ18c@{PnHxp$}f=#ntm_@O55J55HHYsGisUcHfG; z0&!SouLjw8x|mequz2Ys*velQ^J-qp53(v+eOH|&hNQg6!5JXvGM~>mHlXo07#3xI zQKfHDx3z3CRLiX-t1UU-gNtmYi%C%x*{JwB569W0D(3Sn8T*_KW~&^A=OPCzG1XQ`1OkXX1&XW}6qda`E{N~|`$-~i_Hd|xG8q3$%S8Hs%#xB>`)f#)g#wKfQy2gIJ#6%J; zu@w*rA;UlZ<*)yZR}{kNb)0te{rV_l!4Jd-;)ncL{D}XUaz^hIA{APPH*1TO!FfV%S0J`Ir|-} zj49UB;GB`gI-rY23>4A&{S-qBREBX7W~Fhe^K<3>WoITmT`gmIG*d0UfH(%kTW zB(8x$n^;&A+ajmDnF`C~;fjo#_}e^g8BXm0{*y!#O>tXd1Kfqo++I67sZF~KZv&E~ z@7VB7p%ii3-AwdN5pTrjZSJwq`9pC&CM;T^jOi81AqD|uh}uf88Ja5O-#QX>fV$>M zkU+=9XM^IBVqD(P23>G2POhB< z9~<6hR%xa6scd2inrUDoAgXDiwl&(g^gl}TDjprJ>bELW8GEfx5VJH$Iv412( z%M*)808C3u7tn#m&1}W75q-x+Waz?^sKu_qs6mTu6c&AeN25e?Hd(I4#MTDg_reZq z;t9&+-F+Vs>WjJrh|4#=WygjgguvA#sB41viK~fdvzFV{y#y-6QcX|eCKm1%g5Jjz zur?&5>y&eT+Gw(lQ}CZ|c-W5nY#EJ=xpu*3@zz5A4 zw8|cu#pS9c_dzy_s-Qk}H0WDsp(Al5KUlItu(V^CW(U2bPLp@d?k~WwO=B?cA>zOZ zvXL|so&`^W4YF3gNB~Jo7Osn}JT?+79o2?(w4vh+`A7_Jdqoq~X0%bR3xhMk_Iwk$ zp6al!!vo(?YHN?}FQ=}BP}3Waamctd_Ct2P9=Z3Q8v01s_&b9aKMo!RR@u;EN>OEv zw!=RczRH-k$b?#8?u=2!wCl++ZgLu^e$v$9jyRSNF@8$9ggTlL9n4OGG6JA~{Xl(Y zB21EQ$)CGX<)(qdo8hKm49{31nWPd&IK!nvyR6G`pJ3Q}su%X6uEwpxd!nbis%v_* GNB$2!=DQC7 diff --git a/vm/stdlib/compiled/latest/stdlib/085_transaction_publish_option.mv b/vm/stdlib/compiled/latest/stdlib/085_transaction_publish_option.mv new file mode 100644 index 0000000000000000000000000000000000000000..ea9e898ce33da7d3e8593cb9ec0c6c394e3e9593 GIT binary patch literal 808 zcmb7C&2AGh5T5bxX1&>FL#O}&3MX!yD2nnDR045bZL&^kk?cmcqqK-)Uj*?k9C!rY z066ggNX)hgr3a9(C42mN=F|7t^WoulqX57l2D`R19v#7`{w%m?ZV|A^^N zp|eZ5?*EX2k`Wki5FkN;)*y2YkPr$z#sSi9F+zeo(u59rh#-oTff^zMcE=dtqYP2= zyR45|COw%-t_T5?hzt=E;0e+MOd0K{dVrL`naU{Y!Gq|lCRFq2+NRuWXDb)Z%68Ko zWo>8MrL^9+{)lepXO*M1Z5D2+f?GD$s}Q|wmViGTqxIVyXcGvp1y{3)jqTM$2@bE63nrr`gS2MdfIHsTc zb0AN?(a&{*C&TN2qOZTPJw(`eAExZZNr>}*n4L~<-fsMUY@2Akt;Z=ldH#Qe=Pptm zFqUDT8U;W-(y|a4&-nyWC{&@J2qOmusIiLVsX@aEo=F2nPEadK6}gxIwHJWY1}4Om W;{ZmC-9~W4I3Xyg6o=I6bbw#fg}med literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/086_stc_transaction_timeout_config.mv b/vm/stdlib/compiled/latest/stdlib/086_stc_transaction_timeout_config.mv new file mode 100644 index 0000000000000000000000000000000000000000..55d6607a9580a65c6ec58d3562da2b0ce0ce5b35 GIT binary patch literal 466 zcmaJ;OHRWu5S!6uYX*0k{X^OdNp?T!L{c z1PfFzM)RKE%sh`@ufH+{04ahZB}IB8Z)GyM&<`)vd#7RgK}r5ecPDRxScX6#G=Ss` z5(c0I(;5k=7umi{P*ch+G1GuLAx(e+dq64|m|!1J<(&6n>_b(C&NSXs!L>~p+}gIA zP*!a-cZ*YIs->bkSuTYowIt(_i9?+?m))0uroZ@ISi|AeEb&1~iTvW#O6&*JU< rJ-lF)B5s#dfjJCd2xo+hK@@TVL^0JV6e@!Z3o$_w``Zjg@ju`j8iaD6 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/087_stc_language_version.mv b/vm/stdlib/compiled/latest/stdlib/087_stc_language_version.mv new file mode 100644 index 0000000000000000000000000000000000000000..c4a397a531869a72b63ef6d4bd55cb8442629f88 GIT binary patch literal 164 zcmZ1|^O~EDfq{XOk%5VciG`Vsi&cP&UCNvzP=G6ul_yP{x0VSg&B)Hcz{J4Fz`zXT zF)}l9Ffg)lFffP|mn6sMB<7`;CZ?yxm!%dJXXfYe`#=T4AbjS$)N*#H9BXc3R(=uC eKx6>4nvsPWY&tVHgAkAhvWSJ7L4ZL7WH|t}P8rky literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/088_on_chain_config_scripts.mv b/vm/stdlib/compiled/latest/stdlib/088_on_chain_config_scripts.mv new file mode 100644 index 0000000000000000000000000000000000000000..599f63c9813f0958fff588dc2e50f880880dfc69 GIT binary patch literal 1367 zcmah}&2rN)5Z;w+OSY8%H2wdh<-nB#lY1FXFfh>R)#D~g>LIl=w$t_jcnmIFIC9_} zcn2PV8D4@_oTiBjgAeQ7Z@*n>S1Wzl`>i|xkO)22JK`@!&Sz}9-|!QP@9e85f6Au* zC4V4s5EyW9zy%KkNbn)>HYBi30enY**b{&U0{kO#J`oU{3IGL&0yINLAvI2E>JEv9 z6-_HzE{V3)Iv#@C6%w4@oX)ni0%yB!L-}sA0b;+|20Uzb!9U*Yfjnt$L-2HO7Xm*B zbWOK(M{npYy`%S;=D=KD)0{iJ{21rf(ukx4jH9Q~Wwr|DgO4att&qtfk$c)lj*=m_ zHbXi86XICgLFqC?tGXyX`}a@^4475LW}1Y9t0*R!CZl*9=7TJr7J27#k`6wGnYoR! z;lkG>N^X*Tmfr)TiMflzVKiO$7-{EracJU=YSCY()&5#_4Z{jB1DXoDGz4DJ2KgjXgWUlpen=5at^9d`1S~h5{`mOVaad=lA`P=!4A6V+Y2Vynu zyquzPiAQnkost)CN?vWg|17-@=^|XxyR!NrpabaEq2(*=16?mN9R*|{V`QkdLd6tU zj&hZ!gp$fvfl@7{YjsdHrTdI7w*w8Sutg65fn2dZXAXgF3)YvQ!(0Np7Hlj*mw5#C hXnn<6P3=$uNAbSL1i{;u+gfr3lLYQsu)PE&gFjYtSO@?B literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/089_oracle_aggregator.mv b/vm/stdlib/compiled/latest/stdlib/089_oracle_aggregator.mv new file mode 100644 index 0000000000000000000000000000000000000000..2a0dc58510bebf325b2c86dd302acb98a4f49d29 GIT binary patch literal 500 zcmYk3UuxVi5XNUT`e#WtSsId;Km(->1OjM75g)G9b<9_kA-0>FMO3l>ks6RIHM8c*d`!Sgq6}{z3iB4&+~E+zU(DgTR1* zg8)fdp#o5VsCXeHDq)lcvc{s4&XovQY7MNaa>WTbGHFE4iio(e8Jdg*7Jym6Jpm-# zDZ8xzqP()09heheOwl((sD0PP(D^h)5n`O88GX8~Z~FVt%2$hfb8ceagd+80n3Eqj zavPf5^?C3qgL<#lejB3iK29~)KKY-anPTf=@NFIU^?b0N?&`50hJMaq-OlCj^~N{9 z-gMp1br?74q3qXNKlE*#FHM2`w##q#F_3h4KO+FUG_WGaEiA#w@0q-YQ@fAZhoc3v zc-%;bqH GW&r?KpB0k; delta 56 zcmX@gbckt!6n81dbw&ZM=Zvg8Zzigy$nyk;IEMzi_!lK6=cKYhDDHrw%;Z!sd*bR@ E0Qrs+CjbBd diff --git a/vm/stdlib/compiled/latest/stdlib/091_pool_u64.mv b/vm/stdlib/compiled/latest/stdlib/091_pool_u64.mv new file mode 100644 index 0000000000000000000000000000000000000000..64e0b575a3e6167597c538edefd2f3abdc3bf884 GIT binary patch literal 2192 zcma)8O>Wyp6rNuWHA7jXM9K2M6(`Q3fPoZg;AIj7MNyzYfF6KgBsvx%i2_AA^%Z)H zZhC%Xy43$C)quK*qmt^(znc z@BC+OK8a7#|HlixAI)3)hlzu~&7Xerw=jSJXM#zl6ca~A;LMl?k9h)%kyw0%r9nKa zG#P-Iz+h<-Z^!c)Yc)WHbP*A+Z5?AB3o0hrE~)B~s$C9?eY)7AWxom8gB_oVlc+6} z;-{Q5KENU##XcC~tfy&n{w_B8c(2Que6oLl2T!6yx;gJ1W7`e)!-McJJn9^GPQuer z8lP#&r2sf7tA$9-IfpR`cPpOc*tpePDH709V3XLTG*ZyfanWE6?!kT2;9Sc!hq!_a zY`v&St+jy$;n@a*pfK1a2SGB5v_l^kTKn@npCro{&vjN5d0`jh>3otU({%3LWWzEq z)LT5T>1dQJuG1o0gy}S2&dQ|BYsTOqBl$QkuW?_dlVq5WXAAQ#ousp2=Dl0qCgYhu z%x7f^zBeqgw9NKb+e&OPOef>n`{XJmAV<$ZwNuIxlbI>2gwz=abu{ zyv}CHXnZpsWpb8%Y!=xl%ciwZP{F>=C!?%bw6_lc2S>cxt<^?ut^650Wc=SPyj?!~ z^3rX&8m#D*Y^yBN+2SfIYAEgHd<1{DLvtU{WIP?0jqj@ze3#C5?gzuZ%aNjw$#hwU z7d$ zNndU#>S+3;Z&m~-G*0zNAKh3}tHz~w|JEN9-l6QvJsG1cwQO5`T&Zn+YnkPNyl^to z>ak-jw!<&c&=zCCGsb$mR-CJzK5&K`9rd3&&xxKjU55u+e`CcO6nm^*TeSVF4ptGL zsb~6yL!)@n-c!q3-10Xa((kwxm)wa!>9285gj0cbTA=Np>ZOkj4h{+sP=`npLt6yQ~Cb>URhqIB-+ zL%LzrO`UOVH3GG3b=PU6-g+BT1N9QnIk2g~a7v{!ml`>$Bt6W**U;uXL1W+V>^#Vp z(bjO(fMXqoiHlFrwD&Et&_)K@ebioi|GB_#6@FddEcWV)j0iv>%RjLa!#NZ%+8{A>&bbA8DA40Vwl=W<{TR|JfnOk( z9(!tUJ@yF-^Z|P6BlOUFAENz+k{sI#iY#DqI2_J=GvAQ%FNgoQKnUTa2q=hE>vyUD zluh%O{7r^Gst-E)DQpJ6hL`q-D2acL{;1XeP9q$Uf`rn74mBx>mBybigdxCMgxUxZ z1(0ew6v9R|#4s3QwyW3RqG2H=ywMaeP927phAxXC<#i1028KNYT}LKDblGGdP(`l^ z2L}K`$9bESkWY*ebg~ygrrLhUQxf$^Y3k>PZ19u~>OF7p?1^E6)BO`n-K>`#WQW;N z_9Q#W`k4wNVYJi~L_#S)uxO<6J4zzkNNA|E))Eu%YBto$Yn7IXW+z4yCWTq+P!lhm zq?)M7nvh{ls*lT>Bt!(-;G@Mx(#C`cRFe`4xPm(+w`MZnlZuRK-puEdVs-JdSj{fy ztJ%nui^Y7AR>R9lS-c-t*Ttlqy{)eGw=lHB(WqEn4;SUKIh?}0DysQL(SNL1pRVTB za8g{&$FpU4Ih+hB4M?x7W3PpoZeKo`E)g@#y6AOqPi|;#c2F)JSx?!d|zLbqq3ZC4z)b&>-l6< zE|$Op?7=3J^~9O1Q|Lcd>}2x47Rzc_Ekk%)ef47C=NGRo+`T%)Yk3_dsTRZ8@=dwe z;#}Q~Pz<2Ct6TCNlkq*c_}Wv^cvu{JIR|C$i|MLrj%V*sw^1=%yj@MpS*1W&uqdbV zcV&IM$N0)%&1$edi;H>xlPc1iwTjf8#221F72#_7Per&?8wq!8Bhg0E&3_+#D%vUp z>8{$>E#I6+K1OR`g_W^7cPcgd)QJSo%Rt1T4f8k%LmPA~o#{Pu;6fRibpN>v9PQb# z?OBq_`-E%T+!HLS#Ru_Rz*{Ro1?kH`gHrCF+dUy!@ULz(au$2%$U)|T1 z?gfm1b0-p^LbR@sjPY1_l)frmbA$sSp(>~p!|Ygnrq9e5tX5EaTdtQ#WZPR<%?oM+ zgtR(EUGUm)Jq*&|+7t0h98u~hWFff2w}Wh;oM;K+C;s38kCCY}0__oiUVZL#+F&9( z=8$)U-$_6{xHi_HSRHHH&VY0q>;&p-Fz7o&OLGASE}$B~9c7J2l!eBIGCh9oL?&b` z`5_z_;$M%*f|(4J&${TftoMre$01Ujt^d-HV#vp@?|0SGqNa=G>Vy zL52*PJNqLmNPo);AV!>Eo#AO_We`vU3z;%9TobpU3O9gEf;c+`Lz59D?BHITH>n9t z|EUju2kmp(eD8iPX!8?)chKJeLV0Rm`Yun|`|&5dYg4ys2VHL9f!|j1<$*vXq z%6=fUg8_GF1E{@Epy_G4aJ;+bbJ%hgKjDF0ZC!t~0!(RLZJpByNKpgIg aVn%RlfeES($20tR;8GF(x8eVAl=u%Qc_B0a literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/093_property_map.mv b/vm/stdlib/compiled/latest/stdlib/093_property_map.mv new file mode 100644 index 0000000000000000000000000000000000000000..3048409a08bef6caba200a224a67af7cd36a90be GIT binary patch literal 2673 zcmbVOOK%)S5U#F%PWSA1XFYc8#E)zo+esiHiJ~wB6mSR-2_YdNab0cVNwA1_t$if; zhWG)Txp3gX4Iv?Z3cr9G5+^R4`FeI7C$UegG}BepRn=crSJmuKD}M(=L_tu-Ss^d{ zE7T9XsDI_3+5VxvSME>OHvhO^g#XbO>2Ll!-}=3X7J`^0Dbi%fS|VpjCzjL&%h)CI z(4fGQD3yw+B{ks)Sk74|1ho@KlnYPP2`SNhXb}||*o8T~7P(DyCTcG+jF&klI?GTw z#~q@T`GROQnyoG1ko85p&WAIk=a*WMkfQ-d|&>nB2hV?dDciQ6LHxlP2(#y2)tk8RR} z(eR)eO%8ke{R8>%(O6fb(QxD*kB0j_uztL^fAF-5yJkEY?G2tJlf#3mw>Nk^44*f) zpY;z~NA#Edr_;)OQLD=S?yh+_gu~}yw)CQL+R)FUYWiq6nDqAsH5_d?g3f^L0GE=X;Z{qRU=?u=|?76o>5gfNfNb z$4SjR91fp`nrecq>FJG|rJGT=Z`m19no+esd{*fg$#{Nxu=@&NAAZ|S&{$zV9?JswU6yS}-O{pqA0A;&L)Drz|CFi7g3bQlc{ zg#px17&r|zn?pp>#d#Hf(*4zJOZROp!JJ~PB1+Gar=@2lfh-CmP;{kjqVZhJU;pOD zojbEo?%bJGmgnG~RgWga(RnqN(|5q)zN37Q0Hg21I=L~2QCFB1Pt4ryvUW(wOv3fDd@DJQ!>XBg#s%ImPa%f zjQK`FH)@hG<7oAhQl-{go8;?VH5*ehr zZ6pWD0=^=-5a60b6WZCzwsYjs44xfo&BzeOaZi#YJbqzmuX zsFYW)pn`)PcZ>=s@F8h_DJH#F8|ods3KSesNSw#_T#=eg&fr|t*Jp5akiq2mjJ|X{ z>!qMM#qn}6pagOeed6}(8$pipz?iR#dwbeD?QA1Pl8j3#k<4t-QNNq)I$rPA>{6gRKL zb|{lnWFoa69E}e`VcPV?l%N!?v4f)aD%Q)EF1+*V9y+0A&=fLF0*3?%zmMvF>0%TP zb^@hQ;Hd3SQ3PnVjCXYEGYLBJHu$c}^nC1d#sxu;bk&kxjRFC|ahagfJ%+*qeG%26 z?h*32ikvc?eQgtmTM19v&Fu~;u`ol;SASvjV&}qGnQ#k%%x|GZYOzF|l d2xx)hKd39OB*(V@S5mmRuTM`3x;xIY{{VJUG`au) literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/094_starcoin_account.mv b/vm/stdlib/compiled/latest/stdlib/094_starcoin_account.mv new file mode 100644 index 0000000000000000000000000000000000000000..d3bea9195a7674a3472455b1c464c623498165e5 GIT binary patch literal 2592 zcmb_eNpIvt6s{`Q)>UP9JNqP=EHi=3!mtcmvoi|_At5A|v*mQVGe#XdvfVTAANUg- z5PyOjKY=3$4qOoY0Zxdo-0g-$NL(nTYkBY0TfX;PFW>C`ZY3eaQL@Fh?gk(JMESRD zPyE2Xqw2TdPpyA-1Nn!0Xuc0O-H+kdGW>a!_kUSsgc3#q!igY~D56P^7-ESdA@oJ~ z^)*pzlCUjK2^H5lmDE11iGEh$teyk+t|jUf7#~0viT$*~Fs(9*c|E|i0sUmtbFK(a z+?JSj6o|VTyQ@7+d!Dv0!KOzL=T8|!*fD`segj*5Ga^LYf;PHI`h?#GE#TO(XEg4x zJ6^GQUPI^wT-Ps>6{>qLt*%k6U)~^8t5?+~QNt}t)N8OTU#FPfz$D%bDV5@_tC;EA zdXGx^4#*4+LGQc!2b2tK7!JbCa4X!2cjK$;oA&z7(e6{b$M#03LMligoe?Goqz*(t zDHE2{o~Md{fgl}|j?#c?DFX~?gcJ~9LQvPU3O7b2H7fI>Bd7&~dtx}M zvb4#PIzKJ4N@P`4Vt$+zjh=upgSKcgD^By1DKyq~*2wbYi)_?voLBi-T78u)xph-k znVc&Mmqxvj{fBvlD-W>!tV)Y|l2s4NVv?VJem;ir@zH zyAC@r9Sl;w}JWZXvC-dw7!qXobn=pKY{oSm0--pq|`ED`K{Ny=jS)h@hVa!%4| zTKJqc$uvvr#&z-dNcNGHB%MynC;#q(?(|08W^Q=9$evuh*YWGUxw^DE$w5PwJsf`r zwKHoIcafU3WmDTWTOXvwc$)R*`GDKKqHKWttQZHMe)eD;u`K}kM`i|j@i?94<0P$4 zXJ<(HwFP!F`#5=nod(WacwCtib;QzH7Uw8U7Bjjg%fKF|GH11y%t?`aB1Y8|9IjjdGlyo zrB9N)Ks6TWbkNm8N7(V$%!5lVr~R2WWApF2Ms$;OHf<94Gf90R;D-j`z;W z@eE&Wo0jA(KdsWngR)@r>@07LpXL$+uX`^0s7>Cj5=gdJE}Kfvn~SD&7Z&=%KL-tT zus8=AeV`qIZw8AUTkgbSCkBg6x8QYVOdR03r3Vz-LwXHQ9&|tp)t1B&=RzqK_mA6F zMA0&0^tK`4QuI{d=?pKuyBpDaBx3i>Ay>j#v^5^b#}ReP_tbVcZqz;Eq~S(h=Xb;w zHp=k(#AzoYX2pH8<^pt1y=H^hS?;@8J2o5_tI&zZngx_o_P?7O;(fnlPElB7+(SGt zY#GHh9$KnIyy5~&Y+zZuD*9eh05rxULvFGIuC${bhTCjF)*Q8zNubo1KorM_#)kRc z&-y#SGlD!8dBcz)?rvf)cwek260aZQu;Ez5hTa?{!;GW3um@01y8f<9S~ukk&L!wMPpY|saUD|BeYt6-C%U15$x;<-*Dre>Yg=pEcA{daAY6na2PR0{J&!4 EFSRfSM*si- literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/095_resource_account.mv b/vm/stdlib/compiled/latest/stdlib/095_resource_account.mv new file mode 100644 index 0000000000000000000000000000000000000000..1d6cb65d9d3064fdf4b30a6561c644650f0b3031 GIT binary patch literal 1157 zcmaJ>y^iEW5U%QfclUVg*}ps3Lwl!_jzb`kfShkkwB(lY^v+q#*rT>*r4305FSs0u zcR-L5^CU#P0oC4FfjFRpuIj30$x$Y*{cN_<7PV$`$GI$;l##r>95)KhOyBLp)8U%kyN?&z=-S`jLGK z(rA8B!ZX-iwiNUfWhH*H=Hq=eq4u^iyM=9E&>t%>> zh-&OMeTa7KcKdCpcg=n=PEAaJI&JDMw9^o?>!F{Tj*u5^49yhke{x^_hrMq4b$xs2 z*Tu~o>AKlB-*nq*g@M3H{Wy&D0Hj{cX6PnMX=4 zB>a(7&W7w}F6XOe&u_lIHZg3vaiS`l^_ub?>*3Z+vFXR#5VL-m>RWo9wQnD4920rb z^>@v-Th~q89Cj2~#jqRhg4%|DGrd`?!#Ks^z7D(nbpPTp*Y|VmdWzdOTlMffoH8)o z_;Brf6Q+NuD>e1s7IH&vJuf~_LsBh!ewF0^E`~X^3UwBsKv2%o;FZD)&mB1KgkvRV zIQv#dpY$RZ6wiB?(kDMfl4~itjwKcJPrQY$1}gS`ZZh$ x@1RmE_zYxD^j1?$l_SMBPA$P1$10uk%7`nc%as@Mh2vg0;bo3amU;Rx{sb4N$gcnZ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/096_ring.mv b/vm/stdlib/compiled/latest/stdlib/096_ring.mv new file mode 100644 index 0000000000000000000000000000000000000000..e668182a88b80b1434dfd9a4d7c20b075832faeb GIT binary patch literal 1303 zcmZ`($#N4h5N)+uvq-XR2ggYutY$kvs^E|eYlW~}sp1D*Lo$IWl5uK0A<2Pn;KT=T z;LMF1#UF6u&Ij-lv}PQ~p$Z*Z>P7EKt!{l@{$m0FXbA`~uyXDleOOeV#AgwH!`~wM zM4jLZY5kR)`A%qm&_~t!83*oH?6(O(kR$+*LYAOF@D!kA8Iocdseol1c(;yXmWDJ- zYpej#Q3|lz<|WPvHscxVSoUn2r4l`s^UizwwRfTK?TdXM<6@_san`k*Q?Y8hj_W$- zFfbrukRmXGXACE5SgUOHULi#@YmR740b4ml3NhKz=qE^$_c3gPBT?6QQcY%As~%1= zHSenRCb(WQsy|N*ROZDSm6heF3`ToZJ}T%HTY{JMI(R)|&w*~H;qHDFZKiwaW?mij zHp?unvf)8qy&WDK!>w#wm7}95FSfG7;b=R|$HVRYogLcSAHSuov`X7~G0sX)G^~SM zc35R)k?u5VCokToJNecyE#K_#W<^ECsK`9bc(j|@3I1utN04{>uv*#9nR0xP?r{;! z4k4rLSV!4vvgKr3g5%alQ@ZfP;GE?lRx6J=mgEyorO(nWQZ z-!O!3bi=?Jzn!6_4Qr)(pm{lRooJZcxDYw)6(bb zlR1fGxRyby{a_YCZ?xqBa3FLqVs@oFJttCeZ(sD}~O5`)AF7QnM zkXj>NOb=@mwKbmdBu)gUg@Jjk6XT1cE-37saCpEc ac8M`?p4TwrGO!BshLC?U|DQSG(7|7hv4))h literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/097_ristretto255.mv b/vm/stdlib/compiled/latest/stdlib/097_ristretto255.mv new file mode 100644 index 0000000000000000000000000000000000000000..f42bc36e6f9926ffa929fb47f94b947f3061b4e4 GIT binary patch literal 4076 zcmai1OKcn06}|7xaAr6&{0v2Xtq*C-mK@u1OiK#w*s)~!7sp?zO`SF^L5X9V0Yxh0 z(1F`UfucY+@h0dpD4GH-YM{ufD7xsb$fiYC0g^>N=nvhr-Lxo*?t1S0IFi+LU_Rb^ z?zx|L-yQ4my~)2?8WCB7OlcOB$)}3?fl^3)to%XfzfAo(W4t?**M2ti18M$d*s(tu z{xF?+e}+8-Nm59qluo2cB3&n?s0&yO*eDG%nF=IJO%d4|q>K(JE8&ncpytz19VQn{ zEJIcbE;Ov$L?e2JXq4$=ERA#A30@8`HmPTcrt}=qG%quGEF}j^Ifdn50m~t#%<^)0 z2yRD;!$fl<@SPupdNc*;xlyD$Hi~MFj{!TOj}t8nO%R>rlAh=KPZ4+(9oXpuz!oPF zWoZi7GDmq~7;1GI>KV>)mUFzwInIqC==m9x@lvTwbm1V>l^H}?MU&`a9?KfH?UIK2 zE;Dw8b6nN1T;t_s_Px%&udwe84eHG@)LTrxO;GQ!beDPS%-dkzmozM2X2YwX$k%9s z#8>yrSV$8-LRbpI_-i0b0dG}g1vng7NZtPu_(C>DguiG8Nd03+v?2IoopnbV|j6{uY5l4~=t+TCW)>$;xTsVps}+-|qi zHSW80uitfhT4%>=cG}t_cgyQ^ht@jVJ3xDGV?FZ8#?qZmv+ZdcTlH4Go8GMV+#Lpr zu~gfNy%S)g)8A~lwe5auYQP+THH2`x?RqOSu!1|XON&Y4gA_GCd(G?AHXnO#&j~~J z{PH;6#4|`7rtq-dd&sUq49=B@hu5qP+{gC@hGRauTa9U9u7(>8>v%vM05R1L zEbg2AdaDpPi8gQ`h}P`Yw(9LpyNOpJ&J?x+Lmid}X?H6a zh$4mTw)-GtL)y(|U=O?3-wfH1cC#6X*x@##7uO6Y28ZMf#L#^xfkgh95DS`iAk_SG z$ADrE<4og88xLb_8QW#So4Gf5v;D~JdLtn%&|=bL1n<}As63nk<|sR$e$(xCqRpb$ z(Pjtd5N$Sj5Rn7g9XSk+B63KcMdX0ohr`_azB}<|A_p8%lwojuQHJFC<-)Mh0Y+)| zeFNh(R_MiDP#blxu05=`8!flE*>AO6Z>QVo-0#)gb{&5#8W}Xa-fA{#J+JP$23qNE z?|6^%5nS&+=x^gKQG1&>5j_i6nDx?8*VC+m$L zf9JC&zxc^(mw*4{#3P08WB#KUxWI&x8cTdJ<3}-+K)`LWTzdPRm7l-*^e>;fzkcgI z^@&&e{tw^&URi`P+y8dVON6aPOmc|NW!S|MPh z#lJVQ!hV1MKYq+%?iW4GiT3qBc~X3ZuNLB-B7KoBe|)KRW<>!oYl=<((nywYdrYt#!Bwv*2m`PPCsi~BWAc&@`&fPgvR7FX3Qez>OVvJUW zDOPi3btZKr#078*_x-9w4huPKgtTpwoTI8?VWU;W7Ado;+QJet17jwarPYGAg3SDs zRm&nLTM*S0h?%P96SIhv19>h7g5EEjU# zFGN;#zYxQZUyK~91u2Ik$D$mG@H4>qR!%947M-)u_*U=dVr3l4yzShyWk%+Rf57<9 zS^?3~jbTel+>t38?6nk{gS}oY1hr(UK`s1SASABrBHq|Toa72H7nVpn)7bD7^ik7< zZp#Hr8qPG5%W3R=hM8HO5S&3c7=)Q{N^mQIP-X%*?jTxq5Wpb@bj*w>2BSI)@UW14 zvqx8*c{tAbqHe)u9@eAyJjW1nVC<-vc8-H}43Lh#`%qZeaW3pQ_$Qc;mZqJPpf0ec zo3vm!Cz){)jOQ5(H(3Ga6!cx2tT3|z=4obP5By3jvYZY^o=b6-aY#!5kLKe3IE%KD zRbVvnb7mMpmJ#FycEkn%`vsR}73dj!&f@bTtXT&$bir>VA6N<#$qCK{hl8O$2jY2r zUgA)}YpdI3c_E=%Wx2v?vcij~a1~&(!j(N0UPRcnK^*5Yd@e!Hp}z~xnvI`8iTzv# x`wFua-3IY0)N8CJvtEbcWq`@7*Y;$+4#!v6k(*0Jc?0^*Ag%>>{@)wge*tUPPe=d& literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/098_ristretto255_pedersen.mv b/vm/stdlib/compiled/latest/stdlib/098_ristretto255_pedersen.mv new file mode 100644 index 0000000000000000000000000000000000000000..b85958e5c9479db3173e466aa542fef4f4e7ca20 GIT binary patch literal 1533 zcmZ8hJCD;q5T04v>t`O$<6hhoj%PuEKuUQM2+@H+qP3FC9z;s)U^_Yx1)`#X2GP(# zNkc_T1r_KTTA-nzq2v!Rv-SnwMb_-hH{UlqyQ|FG)jz%j03SgLxnQimNAn9h);D~O z_8;-fat@rP{ON3aPhA;2b3cmOXJ3#2L4YAZNE?JhYug4~u#qw*<-igKfNfd;u1WPh zlQ17_fWRTI=8~x+WgF-MG+7a{qGfsj9cl);0hvXw2C!5oZ`p7`oM@0)ZH6G$qy=JK zQn=Be1~wh?wm5r|v!@&n#I{f2X|D}s4kJQB*RbX)>a^bK)%y+eg`&(yU;+<0MvL1yB!W{c*NZ zLH5#QQrV{3sZQydn-u|Vn^XivUsahV6x~*2*=$fHQFwR@6%th*Jjzuj@9g%+{j?sd zecr0P)b*obw3npOU^X7Be3~Z7p1i4_WcfIY52&lI9n0*G^83-CpDEq!M%s^u$t0%t z(BSd%mS(xy@|!m2UU`su0Z_mC$^0_pCkP6^xcyQ%RENy6CS6IH`hPiP&BJ>MhskU( zR#B#}Cz{O09X?Z0T|bvTsI4C6X@58G%nuipLQ>eHEXtCJGPQ}RI~p0)AN|L+HlM%T z`Ed8$?;q;Z{#)}!9=&?={QHw@Uk@H%|GRVJS$G))uF%w>!C=@v%?}@&5Vl$bmr$dC z+9(7gCX>RBFgP$c5Im6#OXFP5UvKICVCJUKGtcMaGjD3 tN-l;J=;Xy7nl8nu5I+8jB5B2PoB(ZuqFeU>*;Didf&iU55OPf?0&K}3nV{J_b?n@wOXogA zAEB?&m*`QJT>~v4k$2yH-^Y`1-!6U|2>_aarh3YrzY*`>6+g%qrhf9N{KYTzCn4=; z@s&)zONvYa6c}(21+bC=x0s$301_)uPzInl^0Yu(Q{XmH66iG7YeIm{bP4R#pmILJ z=nN`g=ePl3L{p-GNCi?VJa!K-go)I22WW~pmkQINqFAQk%Y-6>L}dXIFnbo-n1WBK zzr4C~i-+~vr)}u_RTMsiKB$#%(nIjk9uv=w6SwtCAENK{ZPVTPo2;JQ`Q$duM;9{W z7Hx{>yKpdftI%)U;wkw!KZaAk1FPG8S2umzrP-qo?doYX8ysHz3pr%^&^2rQw%=^p zwDDc~A8p^R816qs@)o}@`sLx$`SE{nzH1h1znrw)W3z6TE~X~=YMUE#A4c(*?)!g< z_}GDK;(_ItZjhCWCi)?o-8b>xp=@WDah#yzMVP{|85UFg5aAS!SRT2&n7STL+$gCu z&C>?7;5Zr>FatB7G>6>46y}s+Twc_YGf^2r3?+sU1Ee5z@!CMGtgK{R8mt(G0>h1{ sIpsLr0;TrVAk|s=SEOxG6?JJf6IEg9ln)SBasU=Y!ZOPw!2pmG-5^)U zGTR&>+bmO+MJ|v7c$)*{4G5BmDiS!De%<~0GpL?l#vfdhh#WyS+b8n!Poe%1UE?SI zU08p}zfJpBCvbjq2Hs!J&&vPMbYLuqNs?kB!y+;*;sz7@7Ky$kh+Q+6Davb6AWKUEMGb2#Mhxi_?Vq*J+ZW<2JP$7}PA=HA36HReQ4w||umF{K zgkW3QO4xWyhz>(3@RPzd;DVi5?ljIqTT0NBu6P;R*DF0cxk4aVv(-By3Tx` z%!)K~UM)6nldMR7EV{4K)h0{wJeeQB-~hh9yLp$~H)nf?X*{3z{wq%7JYU?do8RuT zc%3fRMYnF0Pd6INgBmznrt2iE0m=7w@iOlmg6|2>YF2NubTysrv#yAb9$IYU)nUX> zE9-ha`Q1&u9*9*vof;)PZ|;jE@9Y9k56a#=`5&}%n-tUc@$xPylSQfP!u+N@lHoe} zq2@m=D=O*D?`H8b&c+W6*6B2h*Yk9>#zFP8a#J2l&9hY@yF^C^d6!%=-&S8UEt{m4 z$(zE+7PoH;qXZh|st-EY@2Z}-TcA8TZ@b@~TIGZ8RX&G4HY=a%$SQG{s2OiI$$A&* z&`PyN%T$pqR^75-{rS}DwHEm_PgjYBZ#au*h0=n56X(e`+Ujmu1zOC}`9*PmS~m5; zcT-~=KJ3$Umm(%*{STvsPi;BD4A2`ju@$p8vz4BJ(sL-l6b>ltx|ocv2t?S$3=&%D zJJi}Ld%~sGR@(!ORvOw<`!J>)Nn4BIkp@CcJl2EP?Csh6%HQ+%JvKV70HtVn>@pjg zK)K|KwqVS~oq+M81?f_U*w))ax`RF40MYbZucbRYq&pOhONM%bGQW{0nj(DUAsF%; zdE8`3#>@V$W1jS-t0KZ`MC3}=cS2R%XzPR=y&cHmF+dp}BL`oD$Tc9=H^=aKlfLeo zFDvGAWkrI0GA9)fu?ORDf?On4!&g_4R3qQO%M-@9;i2E^(pQo4jYzdAGSIhYktkc% z(!mV)KMtQDb^!4#gm~$(&sUMDe4it$&5;eRR#cL4SUCl%8$RW>mUJUjmpl7?c#Qj% KaQwJSi2en#tAzUi literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/101_secp256k1.mv b/vm/stdlib/compiled/latest/stdlib/101_secp256k1.mv new file mode 100644 index 0000000000000000000000000000000000000000..4f6568b49b0cdb6f117fe752e163649d40ef9d5f GIT binary patch literal 610 zcmZ{i&raMh5XNUbw)4l{u%S^^Rqdg@aI9Jt#Eqh*;=qBb`v6f`42sxIR!$bQ5{I68 z?kiN{*aPpy8*pNhWhGis%d$M*_nR4M?B8$hj0OOMpoLB-`yfYB9qt7`@gBn;G}ON+ zi*Lxi^4B!N1)|t^=J1okxgJf4)C4SDheRgTLw0P$H|s7FoaA9zS|du p|A7%h%u=$-N~7e4ktytgC6(@?B}0Pv_2vJHqEPFinDKw$-~rm&ZgT(t literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/102_starcoin_hash.mv b/vm/stdlib/compiled/latest/stdlib/102_starcoin_hash.mv new file mode 100644 index 0000000000000000000000000000000000000000..08666927d4e1bb0a61d56a9a8543047c2575640f GIT binary patch literal 549 zcmZXROK!q25QfL&Je-68fiA16yKYM=P%qJC)urVmMnr@JIiV64;2u3+dxS1J=A~44 z@#~X5k3IH$-G4_O00;(xi#O*T-H(yKJfQf&vGt! z8QUraR+d0DIsDLBsFwdh>SCjY8hhz#BHZc-juamsdmM)ymhrPjS)+& zx}DK&lvQf2(@duG#a)kOS$EphstVRR&()fAV9KrD6tl(ilZ<=PLHcxXZ-s{*3IA3I6eI#V NF0|5#;1!Yp;SW>5XEp!; literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/103_smart_table.mv b/vm/stdlib/compiled/latest/stdlib/103_smart_table.mv new file mode 100644 index 0000000000000000000000000000000000000000..e19be1989938b164990e83deb2d3395081174808 GIT binary patch literal 4673 zcmZu#OOIPg6|U!fRMqvXZTBN_{OWY)*`1zrIyZ?x>5v2@2BFb_MnWTu6W^q*_|dZ6 zNqVID1t3-|kXVgafRI?tiXXvWV8aG!HV7ove05)TXXYmMJymt;)OX(H{_65K+98Al zlvG${hlgJ?@eMnYU-92d_ix@`r1#ID zMH~BC3ksH{N(ziKQY%6#A@x$3kad?bEN$?LW!PMcM_YJd*CknHt|X0G-M+5KvYl)u zuNGZnt|0C8_|-`!yTOJPybYP)+>x7h-|kjCx^^jkT?cf|&)?q-R)*$ z*C#H7XWM*2G31%>n3*%qDW{aC04M;#1PN4*2V)Hm`{7`wkgr7yCzs1|ihFJbHpO5? zP$!#&^3X5QW~mppv(z*+gU&g?+rtwB!A4dw3}h}WQ`_RQc1nyZa|D?gurBfPl3Jbl%7H6Z2OBiQCfJLuy5js$Mv;tWv+2wk_ZKHehtBkL zF`Q1+d^kQGMZIzVG?*{?vzOE1q<7MvpOoV*y?4XKNpBQQUN27k#rbK}8%|zLoww1; z#dId0O%}6r^{GAKXZ8Tz9}HZ4di~MJc`?Ol?~3ulXOQx7EToW3_g$7n*S!jDkZ~Dq^;N$*# zcZQQ^^GM96<48=PzMjA9pY{@?n8j>31|74Y4Xi$tdm+Fz5DaMtArg+vj)K0Vhq`M9(Fczbw#@7)O!&q>3+E zRZdwMPmv?0y^tEN_}+2HDeWe*uZj)XMAt>>aB2C?~5jGuud##OFT$DOYDLf%qJ zxlcOxd4YC}ul$yHpcR$h*RGSnt{YeGXkQ%5AEi=Bxw)%R!!>(Ai~uB2&4stcuL>e$ z`R;PtNC%gO_|bA}WdRC^nno>o+JOvN&6ny}ku^p3LXHKedblIrX%Y%~ZZ8utKJ;6% zeP|&V*T_JIGH^pjOYIuZI0fgp0bruw9dEQnO>SZzE*y#Zca_M|Zj0OUO5i+e1m3d^ z54tMshAQ^I@X2O1#Pjb860=tW$@k#hB`1*vE;fiJuX?eWm)M=q~sA}(vlJ= z?1~#Zzz&ZvJaU=6l3hFeE{q5wi6FX&5%H9P+?QJxbF7GGLSav8zn^) z;&V^)5Rqlx=fELrJxQXAX~n1Y?V>v|bciX71T{-*V> zrd?6g0-I_p#?l0%mAm@d0g@l4FL%QBu;@9VoMa_ zEX%CX7OqsTgMeB>fgQkP?a+{GL28HRxdA^gh|%OBZgzOWA}iVxeTCl!>5~&cPzuYa zbS1Fd{5r9;sak883Jj0a47^^UF56X@2w@CUQcRb+;go*+D2$0x^ma@%iYI$ zN}4sr^CR2h9@h05;;e#*s~{9i(KlLEO`x=RqKhkLE6S%HmWnFqioa4ID8fZ$RkkQ# z?3!Z;&Z)>nYyXTUwT-osX|x$nFedBtZKHDR-ZOB&*iV%xCu)(E=|xeh zrb}({2YL~hDry+#w^os2SjmNi6%;)O?*1KCLi|gHsD2LWpF$n;QQVdD~90*4WR;#!H=nmr3(mQ6y`zd(v3Jtw!k2&TWrm8ptz^c!P50% zmEl(nxqVO3gTYlHrRQ?QSy;2BI^VEN%&@K{@|hlxwpc&-G4gp64nt?it+*l_1)4pe zwjbt_P&eb>lNO0VTISof#a($zFURYK1P&Sr+83*3%F-&UgWf-0=4)2MZ7GP$Sl|3Ep4r~zOO@zgWsfS z;;GfLgL<;xKnO4AY_Fs>733<{b1GJ6zb&?70!1^fSFuU~Dn7csF}Vp*g-oKBw5{pa zR30g#q@jD7#sw*_Whh8qwXBraX^D^JCm&Rx1MJZk=TP1t@k{x6EHE(?thf{?GJ)bf zShSKq>}Z{xgFvKI+k)}BZW ziYbm1rz^$7d7Sri90%hp1qkKC-7Z?T+eJ9FlpnWj7C4H<$sTCU?z`2e8z1=elE$we z#{xyzd&o`|ZmkrCI>H>eMzzN_fw{7gB#Up;U>kX<<618Yat%yz{@}Vpj+`3XvXNU< z%PihTirN0@3WQJ0C2H&vxDIiPTIs-O21y6TWg_muD5i+S8vZteA`YQc;R23NIdZb&xpT(_y;`jo$B!=VOv)9sZ-~C=US)7e{BETMvSqXvqBUN zx$$?Q{v&>=|0aJc<9|edmdSt9x#)N1q4|qhw*NFD`$w>?Qq%-r>k2H&ZG1J_)X_r z<`!MyV%I8{+;X|%+U07w=BzVLx%G0R+$c7SE!T0|<&I0-p4)c^?yzhZt>VZXHSW1% zci%m5pSXu^!F}o;xySCrJ#iwojHk?`jLpcf7g2ag*uUaS9;b}g;7q~x%oBo_P;6kZaK0F2~TKnMDqRHLwy0v2Jm=EXISV^_-twuUW&02aAg zE0SL|rBW7z2_q0>HxP)HOhJu&07T6WFdwQ&Nx_h_O3u9J!QPbyPU=`@F3NOf^&=b- zg6y@M*alp@v&m&|Jng=zPN&1MdC@hvVq7H+^;TC>oBY{ox>;z8_WH{@~>> zs^#s^N%@RBw~faMXR# zJN-5ty`H=ZR5Y$Ghi|HQT)nBrlPaC`2j>^nbU09xx4n_2rCW=n)8SS0{lP_lP|+@) zB_jH&4*c`}c^##j$(;5^z0>~my?yce^xJCMo%DZG&GiRwdKZ0UVSN7jvKmZd_&OP0 zR&n)iI_{lLv#U@C!$GCO5{@B8oBT?DGVM((^|F6)VF?#ecL6Lfd+#vaZa-Wmm_*@` ziN;W*MKuTLCogMJ;RdYx(C0Pj7`g4qJieNw}u0fs(4 zeC|ir=`fJK14p^{k(7Z#`l=O;D=*|-zu!uNvr^MTN>sT0JH!N1C8}# zN}}O@F^iO|y-aMB=}hUPSy=1gjb!>el;Y1E%7^6a&0@MXNL(w>WKg!sYGKJG4U0FO zu_@?lTr>h?Q^hyRTxYc%UuMV^*|EGS@QVVe^esVO?#=_MUcPbF1Y&*{O>lztHu4w+ z*hh}hY&H|Q@JncR;g{8xr7wbC(K}Y+-L@*@`k0s~9oimECh!GiyFUx9kwtKW+De^r+w%Ac^Qnmc46JSZOkdCLg5$joOViSIvgzM65MZcfjn~r*TTZ#D% z8#n7;F}3LO_3fCyo2dxDg~DUi2M0(nfrcNW<`BaEldBN8jXEmT#Ya7^ z(f|6|f8T-Mj|qcrGSY@AfnL|8-_GJfB6kn0B1%7y23I3&xx0`iIEI2cxWkI85wY8PCxTm_S@CfOYrR zNR!yct;H7~ZNG;yV`yZF5hm%VhAux!YXtddR~=rJ!$c(%qtfr|UqJ_@cvKhPisufj z5Nsxi7dnRf15^Mb6N>&2oflh;eBoz>iLP^2K6gf1<$Yi)Sv-;21^BQ%ad>{F{dVy*s=;KoV LYv8yOPCE8KjyNx$ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/105_starcoin_token.mv b/vm/stdlib/compiled/latest/stdlib/105_starcoin_token.mv new file mode 100644 index 0000000000000000000000000000000000000000..1c049acd14e55db7359943533c18b16af889facd GIT binary patch literal 5561 zcmcgw>2}-36`maf%n$@fXs0AgG9^)~E!#3I+wm4Bj$_Ar*R%{JK@Jm%)B&l+?ytT< zUm<;g_MD#n?>qD%`lpZ3KfN;mDN0uKCqAXE%b9!cd~#9m7&Qn`FQ#PhljUPX`$Bas?yj#mp=cFM~M<@T-e1 zqOYs-2*0T=An^+fO!}+pB68j=))4)5l>*9dCRc&`+ch}<;*yK-?=F`R{e1~U{7rQO z@p`p_*qiDUV&7c3idf?sXm3|n5Zzt7j%X6YcCT7O;_Xcg)_i*l?zNWV^-sW><{j8y zh817G2jr3=mx0jl;6m2C59Ip?;8HbM2w1Q@yb@H$S1aq4joFQb&4rEHX6?oj9baA9 zT3M|X#{KbNd~^1brRvhg#^%OGWwWxma^nVFdbIL5*jm`CRf1BmwNVbD;MFh}S`q9b zNhS3NV*Ra)u@%6rIWG`eQc#l=_g<75C5faFW&b?Df&U(`nR^DC+Y^}fFY2#&&lXBK z*dZhq)&dUZV7?R{{G3rJ?;B4R8lWbg%82_>*J77QXu7m$Pjlo~sB7K#H-|6nOxQ4u>cR$*_jASo&}n!ob0{0kfrtg)v=vK9sOIr3`Te zXl7w!mMJ9FvIy?>!j)e@1P2kEvJuULS|o6-ED|6dmI09g7>GHS5ESZw6&}g`LZAue zP?m?$*k*W+q(G(Q5cymLdu0@@z9|F~R5ck0_mX{)ilpG==E z-b<6@k48RhKZmP=fj;eX>>MIKVb`_yc=5#SWUSuK%Fjg1R}{>9*6C$zH+m>hPC9diRTV*J&T^ z*SFh8t=-D0eO3&4ib5;QqLU{rO%B?B=%@evcqi%pL?)bhBYakfX>`fFLvjBzgsCBBSibsdLrXG8JH&SbW zu^@ouym)NoA*09T(z3XE(M|6pF-a83=0QlPeO<+=*Bxf@->hDeT@_eyYyOp>P-*uDLE_hk)>%c|8GEtbwo!m>?2LRu1AzKvN zZ5ZZ1jP5o&X4KV>T5sV(n5(_n^*o>JPaB70xt+%r*7N9uy(o3ty$0*s(MwR_Fij54 zfNi!8kGibcYIcYEO1zR?nemZ>MyB=&Qcw8TRVQL<7?Tbp*U(x=`d?7F|3J>7fi%Ooa5b>^=PkJXd zRNlZ__$I!EZ{tt!9efv_yVyM=a32_&sj7!kBg_cG#Y;X`NOSFYPK>nlWDPULOUl8D zV~2(F3(ARN*o2ESY@AOzB&;ncxs2g6AIF4U5#Wfb6u(DOA& zMBr&2qtTK=G1J(`G1tT+faG!bqGXT=Akm0$%rKtVvVPFB{Gfw=&=39ac)()8s(i^r zl$$_tb0J#6Wvl^Q6L5d6Kw>AnL^Ix~)*Wj7^LQd_jbN z%;Yro34DV-uS!Hj^!XZ29FoHMDl#Je`5JCSisx%Uk-_)L^Gx+35}vQ2B2qFMx$`Ab z9@v#hG_Z@vkj)!b{aS&JH&qsnVKQufNLc^IL!K?bcnFH7yV*9qJ7VY)~WF6tabclqzhglkP)j%?ebMvyODO4%QmF;_$KVVNPEg-w*mQ1 zJgODH6OU+;ZOrd zY%sh$7@i46JjE^m(C15FfCU79iX1GTwqWDgNL>3_?UGGg=nXp(S%7>JenBRT+qZkO zoO%=*k$DVqVrF^Ph<2#aD86uNmNQ5eG;JUvJELHj+qM&dj%O4Jza;QG$Ik|bRyu|5 z#Iu0@giInZeb&oAI4;B7H?xn&b7blxIHk^Z>M5DF$+)}f;rJqB+*K&^J5LS-4?+kN z4Q5%yCtw)$XBq3yvN=AVeH?O_KZUpo{(MC)90SjPMBry+<`{V4BLY7svljUOGsa(# xIeXj3e(r#2Z=O3|l8YJqM}F=w@bMzS)c&ptzjVT{Z!j3_udVR2D$GoR{s+e3qTT=i literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/106_stc_transaction_fee.mv b/vm/stdlib/compiled/latest/stdlib/106_stc_transaction_fee.mv new file mode 100644 index 0000000000000000000000000000000000000000..057a2492f55947e2b53a837349e9a590157bf5d7 GIT binary patch literal 856 zcmbVL&2G~`5T4mz$LpAwmP!Z?M&g7xlnY%#B@P8{oZ7qP#G7CxaVmR5(~2A73Ai9` zJOGb?cmke;H{gJnHR4AIA;j1k?aX{L^Lcjs_WCEI0APrauw<9#4@H&A_KE(0Uod*l zN9rSghw*1IFfSxaUdmTEe63jeMls4lV8B6u1Qj75MuN0RHSjADfF=*X02t|*uwWQD zaERm(m!twV(&UgCMj$T}0Cxs4>0QDB?hPp>xKabI;+R8XII0BDAP#_D9kKBArqm|5 zIK~VkhKc|Z)i)$(x<7D?z8`ygr}NXow`J3nQ(v!}V&drgwRz+D=t?N41r6)fNJa#UlK;gH2t-`Mtt`SF+eXXiP{$%6b?;X3iZfakb z%lg9U)ABs9;DO17YuDvnOqBr@%vBJx?e+&JyF z^rchJk57)|%C&Pxm-nmC;O^{)flQX`>0&(o3*r2E{;2V;bydvnkN-VqTl@U1_D}Pk z(KwHpJ@}98Fc;dWq`yO2J`$7$EZlb; z*!f;=iW?dU%~EDD)s`D|7mT(d5%QK%s2K%$$}L(*gb^%kGs-yB1S=U29Z_Za5GW69 I|6g$U3TDo>m;e9( literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/107_stc_block.mv b/vm/stdlib/compiled/latest/stdlib/107_stc_block.mv new file mode 100644 index 0000000000000000000000000000000000000000..b1190e5be7bd1d69b235f3c8256e4987e47bfa86 GIT binary patch literal 2019 zcma)7&5j#I5U&28>FycNc?N;sO#%?xR_|*E_@>ujVHk5I5cf z!3FUE2#GsSfH?91NJv}}H>$@Q$4iuu9=oTzy6WqyuWP!#yYi=z0AL7Qqt~vmgOdM1 ztoV_9L)5SIHy(Vi68V$*n(Lpk9aY6CipQ!b@rWI?z)hG!VL(&>)Q>_WFRYtMb~s;79;KCd$`&_!7^MLsXSblbSW z1l?NEk}b}Bkt-y#fg)GC%C?-$U2Rt@E4-w1r)K~iMYZWd_&6`8b0;5mH1PXK6MOjR zK5v_&u{c3$nu|H|Q8n3`%A+b@xYK3zn4!x_Q9eN*r&(Uj+6Bgad0Kc%58KB5m+M-f zYU}hF$=UL#-<}|;E}PAlhxt77oZEc*d0RJGccg>!fv+-P+cWi|H(h*PWJsTnNxMaX zIR2dQE8T2_1%IE-Ss>P-7C+5My`EwtAHF{7su5#1=Q)`}f zS*Pj2d#^%UC*Q%riwtSHcjHyY51tl{_hfgpq4hkO&{<@}J3G>Jbp53|9SW-4+22q( ze;&^gaWnpNfxT3{S&k;hZt{545jk2VvZnXmf1SP1*dOia+^0A~SNCtfj`@lopmK*@ z)bx_L%&us9wY!H16+7&bh*>AY`O+j#=z&V@>5BXZf^~_F^nG8t*_Yv@~HVW572x!USnz{i-xQ z!wfe`nyLWN;y4}y#bSVuNc;Pcz<|!X`#o oV~}IRY-FU34Yxg$7-Ou7kgvE;#zMtt6T|^JiH~=aV}%y*FN`U=r~m)} literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/108_stc_genesis.mv b/vm/stdlib/compiled/latest/stdlib/108_stc_genesis.mv new file mode 100644 index 0000000000000000000000000000000000000000..56c73874f7e8b6768b73f51e34c33bbb77c5fd11 GIT binary patch literal 3750 zcmaJ^OLN=E5$*xN84v@41oa^GhD6B{CHWy)o5jk>##ybMm%a9`A335Razvp_0xSTu ztduL2R4%#alJad2`2+q1Ta{Z%1{9tsxSr9FaxttgF4K?JS@N>EWt9YfCHH}SB%6u~ zu!SL@iJlgBm=2}gB5KGjgM)G#&6e*VDKsnsx+F7=GJ%ywg}|ER$_=!elY}*F0#*aT z^*vI8>fNbnWDjNts8UTnF=m1Oz(n6Q30nQMK1X2QB{=ENkdQ<4HideaZkP)|KSz%K zSiKecL*#!CI&cP?Ml-pH&N?6 zy>%Pu*LRTTM|(&Yo>lju^879#Z1!dK0H{t&)75%yzO-6ft2JutwT;@1+E%UEXs$Om znm3x8&8_X)ZtZ66R_%7}PHlgG|6oN`HBD0uMgA03UfPf$fS1$huF*5+VAi6?m5lBHXb(K(@A)3e=z2k_WugRb)K`hshqE^B}i`v1-c@FgYanz3zzq>3|X)OF?5TAQzL3-Mb{j&@8f>aOs zo!D;+>0!_n7rH`Q91l7L(T`fEm6NV`6L@XElLshAp_k>FB|dd!jL?Wi{WOR|D~kOV z`jsUbB<)g?`mvlHdJ4j#lnx6qExE2Ab_RY&c&|mApzV|t;!MK?3y5RyM2NMkvcBJX zHMH@&LED$G<*Sf1=!s~M=E>_)JxGJ@aM|)u6e}8pol0_^q@w5f?RG4ZL?lINi#hlD z^OK462gltYIrXwR>Z20V*Fvsz@pUhcWdvc62AJ8e#oUZWdYuT94gIhsJim*rG@R_z1Sp?NLZ1yMqYcs%x6sFVrIlwvClv9K-}jG$ zZjhd@wy-Nw;hn^OPn<=uY|BK%uSMI-8+d8L@yES9oe0bxYvY~z2`;W5r=mUELE)%1 zz4R>d`luE3$*>c&B4?qM5@ z%FxH?5>|gcZu+NLt7SFRUp_t>9u;MLWQRjGHoqC3D%oJt{CU>=I}A2H zg~q^T^z=Py_A)yTcqqDepnwKj+@+h zAR9%r3zbO=~q4CnOL$+n=A?>PtC5Q|x_ee7_U4-gIL9|;4yV6IpzE-+#< zVs2a89Bj?nwspLVOhNUkwd#UZbP4K;w!u`Ctyya*+csuwj#6ryNN0J?F5$CoTS%Af zGSVfxf|PTUm$=2tyuxi>3i%`Qha%_6!;ldzKXtux_nO z09W`NpXUpF(N@eIMp3h2ZD8)qu9;1%>8jSY)#N)|;>(uZf+KSV=tPUeAC=2{GJreExx7wK~7P(m(T}8x@|ABB3e6^;{v{80={?OFO5<( z@l`YDDZb|quYG_g$zlqWSx(J8YAq#@oPg~)cGoBMoCZ*e_xWaJRN6x#2Qibanh3Q?i9| zCD1_NrfH(obU8E86|RLF~1OU3?}6J zOgTxJAb9d(*01>LrF;J!{ck*yKX_7qqgsCug-7~|t4BlY zpN5J7fxv+ESnga#3xZV8fhp)Mqcwp9h<#C4B7o}!*h;8?4Iq*P#tP5~vRODRQl7W% zwA;nRF{LR<9`44Ns(IMQJa_vCzFow+>-!XQE~~Olv72KRzYKZKZ8uAbeT;keoDzH8 zO{x92{v6ZZPumYVPM_Nxx6|0?qhb8i-4A`+rMr*&IL@mBQC^&5`QZNtjXzMv?+yx? zs)Cx;lrnHBhZWw!Yd9e+4T&~Z&1tX-ib`tVzzq-;g^a>=!Nub)YJ3M*5L_^!_!|z= o*kEf>v$4lM5TB|jZUQOU7kuWRkxRAeF6@TS9X9S#nMxAFU-`C3qW}N^ literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/110_stc_transaction_timeout.mv b/vm/stdlib/compiled/latest/stdlib/110_stc_transaction_timeout.mv new file mode 100644 index 0000000000000000000000000000000000000000..a695546f786338ed04f29a0da0f6093c3f7a8e79 GIT binary patch literal 308 zcmZ`!OHRWu5S{TjX%c(UNQjRpl~57a;3$^sn98EDk?p{B;4&P6OK=ICzyb+%7V~{? zX5RbeOVj{RBQ(^URhw>g|Ax&6uH`2_lmP+*0$w6jRLZ(Iwwg0Sp zE_jvQXv37-xxYUK^RzvIP$u|CcW7rq%6fd>x};w8(GCChEo0%st4g-8hIDzbS(zzD z>+{bQ<)?9P<9e8)UjFz+78QRDixyxvJxbQIS^HwQyb~bU9qUQ*jtPD)Nw5xf{HpY6 MC$YM2B?@Hl4L=4)T>t<8 literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/111_stc_transaction_validation.mv b/vm/stdlib/compiled/latest/stdlib/111_stc_transaction_validation.mv new file mode 100644 index 0000000000000000000000000000000000000000..df589bf3211662765a6c8409eccdfd80c15e294b GIT binary patch literal 2223 zcma)8O>f*p7@o1`!ybF>bvDUv(j?tY)3i;=7Sb%NDx@B&N}MX8A|dr+Io`>x>8`!l zvrU7LICDkfz>$BzfnUOpKtTDv6u|-Bak6F`id0LUeP-r)pZCMB$NS~RGlwCBY>ak{ z9nU=Y8k2AF68!^z!k-(TG3!&i&c3j}G2LhG=LCot8OTHgQN$2O7P65*4suZqdB{g~ z6nLu~*;g!N-Xs{%_!^4OWe;M%`j3K!Y7--| z-vmFn3oLd^8@;a48yX!jAK}|RL$yN;=D6qA5aot2MSW@6Z7r=WwMAVxE;WT=nx-KP z3c*%WJ?CsbWpiX$P#G)?3?sAQcCn2J>{5&k3{}9ioC$+q*CiOrzy$DIgSofDA)8*4~>gXj-}kbxHgUA$I(zO1kk)lQOQJRGiB-ZnM%g2 zP&0oIuleDaC80Ev+M5byh zDb7-Tq53*QP@POy!R96U;ylMNI}Si#k_~2K8AjuAb|MGOMd$PA!zTxtS;ToVRdc5K z@V$HdC>lp;EM2H5$c4}YL%Eiu@O*WAVIe=9N!Sn5+2ly(Ef6_xi0~tsXJIr`qwujj zwO~U|rs~uxM$zr?p!eo>o+;fTngL2lT(*Lz|%Ry~kRj8Sgjd@6+g7D6op{(P7 z17TWK#f`GcFD42H(c*reA+!L*)N=&uU>UZL+Q^mB!NtkCxr`lUj@R_M11J*&_U z75Yjak8qjRPv>i-{`dKHwu2BHg9e;)7|xAb-HUI|zi;)OJM$)Qf84&WABP+Wqr3mA z7EcqU4Q}o&zGI8>^Tu10-@EZD>~rZ`-Tx!&m+EEm-Tha!C|$s(1JNzs2#D)=P9MH5 z0rQZ6bI~y!;!ub6vBP=2Lt5}@z>e*Rfb(UbyPn(Eg$Dckd}Yx-upHhYF7-JL>}!i^ zeZygaAnSCKd$1)eEqq&uz}Y7I;MxspWRLE1tF!}m!m$I7-gPV72Bx^bLE_p!TE&0OeasLW=pFZLOQitF>t|bg%?UExZxvM1& V$Lf#|=!82k<1I*pdmJ7r`UeIU?UMii literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/112_token_event_store.mv b/vm/stdlib/compiled/latest/stdlib/112_token_event_store.mv new file mode 100644 index 0000000000000000000000000000000000000000..3b88ab99648d4bb8f6c87fdbd47a47926d52a419 GIT binary patch literal 3050 zcmaJ@>vr2j5Z;S+wc6FqavY~gnxt)dg#zU&?v%FB0;N5)^skSIH^ry6oFmDl;V1w3 z!wYaYJOPJi;1AEhfd}9vm|fXej?=`M@yzVZw==UNuYTG5S8;@p!YCn0pFVx){E1Wc z1NjTPf73sd_%({<@6kWR|0(&A1wVI_=(jFG7!gE~gBaq-MFM$90*XQMfdZfqC<2Os zT0jX<8)yZn1GEa%1zH0-1+*>@+JNs(j>Ksfu`@14h@W*4{m8)_lh0sn3-(3Z1lW#| z&QV~y4zTkK*aZ&kq6xcXY?lQ_?&m@x=L@V5y&GW6>6a03d{11$oZZJ)F!KE%^jksV zuLK>x8?5>3!G?c2*z$LRGyb_?*S`>43_D>GhT)m;Vz?G=guCHZblKs)XqykR5~aL0 zNYR#R1&fXp9X9h3?Wss9;Xd|iJEaW%G53kUu81+i7z>0wgasz9S_R2NL{PIP2o{tG zW@QHpMwxJ}!m)5c@vI`S@IX;kkyt1q0xSDi1h5cUCBz~EC9z5iiv-)vu;^k)-9xMz zKhb&1@}7RG^Qu=?<3hXH-rjhUS2W8HnYD|3omG=UmwbFs4aT{DP>c_BQ62V1*#R#H zk8@q{vML7or6aEwlgX+~IEaY%m$saShC-*@m>| zAzv4R+JEgBn|1Eo)ce_FSlyqdU%Rg#YqbHbr5aY3EY>kFiH&9nx0ccj?j2Nj@`pv1 zm;1U%7PK1RtMOqrtPbmxk_D|!<)Jw(D?Tu%^yr$J6%4(O8?yD`5A1PV(xXAu+x!1a zdj0vK^hWkn>Z9L1>Nu(kT5#Gq>NF_^3l1C#gKUCXgCAwXi9Tzi`gQAj^U-PSUc1zj zSZ8Qp7NEB+O6_u7Zr#Q@OlfbB*M&9Xin_-OxEqbQqvdQ4@C_ z#zimd_lu~};yfGaXgusUdmZKayQZ$p`m_vX)~2#+?2v|QZ038qiJap*PxN6ajo(w# z-BKFYT8ySou1!go_Hl(qbd2+?_IxtZg~_|ywDxsA9u0D1Uv1hCvO}#cT*qv)4AQhV zL7MhC$mYBZQ{BQrl*$h7?JVyP^-ja_xYI6o8xGH#=`v^zLfKl{aqGmPEKfZbxHD@+ z^ARdL$7bs3XO+%Nm}h!DKa^%#;Anc|{jJfsKN;%jPw!~(7>>nEz0R|5hPv;V!IXA7 zwfS+3O-rrR`_}fz$;Y{dJH7b_7q)YSy&&2ziuP5}#tRymYA?~3;fAXHjO)}bQQ=7E23zEQp8RvgcXaBa#BpN z0f?Ib^h5xXk{JL707{4fXg2}ai2zRO%m4@gFhUK$>b6PP=aScDNJp~7^<7BalN<^W zP{_LCbs5T0Ea53v@Is;7)FqC=ICa`$Fv(^ZiRW{RzyQGogf+!x2#HAHg(Y$nPhlKP z{N{4JIw4-B65<)eE5c3u_L{^=;FCuCDeT#*+n@NU&)TN-G~$Y+0dY;x+4DAOPkOVY zA$=}gDU!&SHhB+{R{*r5yjk*423M{UNtlL8MXr)*1g~s>cYe8uEOvSTQTv^1R&-obi`2d{0u!z1d`Y2xVAwtE+@Gmc-wMtX2><5#p zODJko)DNIoJBZ@yAxw1bE3zFYrS;6wDJkQdcAf=NN0p`OF1LL@|--X1#VcD z2edO{7@Qj#0)`MkDX0*SW8hD6C&$sr$s61$m~kKOM1D$bI3vD}YY8R3>=aCej&9BhoCmctX^$>S;DiO@MuW1->+ z+XPp@6b9OmP~88Uxg;OBu zGaN!#&X_I?+rj*%w4D(DoPrH9I~|zY87@GIF}cGq6L&b8CjbG?aQC(Y#iI~=G_{jQ zZ;4r`4!$uPStaJ3I~Lc&amV3~XY{Aez=6Pf1PQ>L?uDU@RGHkdIhf^6hC7Pu$w(<= zZIF}IGfaTA^DY3r4v!%pD)r)|>)CN`YrME@l^!%oF=J=1r=GktH+t zlnKF;>7)T)g0?XNce293FaXIN^blA|19ii2$q^>C4V_8lOzNuACAz`mH3$+|cTycdXWCx6x{Po9)(Sz1`ieY*aU` zPUC8`-nKg3cB6S!cB?Dv^-Q<1QSWrC8=IjXw4#Tpbh@o}J#&1k-CU-r{1iGxv-l@k z>+AJZn&4!$TOI9J&u(GV#(JZ>eWKM|Yg~2vO`YIG8_d=FnBs1P9y}Lg^}IBCw5zU( z?34A)R;SVRlD9@?&NiCenBNrA4JBf$Th~n&5`~^s{>~m5tORKu0byyqBi4+HP!i{iLBC zYd%Vg1DI&uCm%USS@zFie_x6 zhSdX(2b7?B&G+zq_WfF;jYU&Q`j76cR%ogUR&Axx%q30TcD31AtG7$L>Xn%5(W~_x zE`lkwBC#w>yP7ttuQoQeHl}u?cN=H^&IALaPv4m;nP}q96kF|vbzTRj;x3}j*5>B= zc77KY^aVog(t$g$kOOM(IX^`@mk@~`4GqB1eY3UEXp*z**%O*db8DmCCTuuJy;n=*7J)WQhdZYW5gU5V1!j zehxPoAH?rA((s&H*o z*+hQe#KJUcPA|wsJzy{rPHt^NutX1ihk{M&?Phh|Pvf&5ZaA&#VA`K^d}l+Qk{HC< zco5O3S@Ftt2dri`s~dF#a$50nuoLx#q>DJkNj9|Hz%ETzkjs=Xy6aAM-N*o$U5ZdIza8Zv{eRzx1o?H0*Yg zLKoNPr84QCu6U0*1gU{_IOjg$pqN&|PSdBXf zW;8+K06O4m3nbA>Pqc4<`CqM;PiZgeUndNB!4 zJ1Jtec6lvMVDToghppZs9BdyOV0*XJLj!F|4Ax`1&DKrwzE-o=DePtpNfB;-2mf#} zF*>q*{)toPD#xF>c<$KoCr?$5U#Xn9cZYS{|v`VA>1V=xUm$%y=;P8 zOd(tpC%6x!5N_=CU*9YjE}p+|>f-X1%Gqa@k1fM^O4wFxF($+tPT@_1CvRL*z2%I2 zfIA}}#PcC;e3%<=)5V}L-lF?WTxyy^euQp=aCspdAPgy z6qi4p42E$rm~|VRExb3JeB4gc{tTBt%Z;Do2JwN}qo1d{#$VvLZTv-ooc|+zCJ_$T zYg$;B-uX8TFL`H${3YCV{xY6lq49r}X8JXP{5!Vf1ThFUf1S%f7<$}KUZ^P`1kaS|Gs|tr9`qJVg3P^H^`!Y$c^Cy3wOY;CV7QlNK9ND+GhC7 zqRS4N0e%xIGt-x$Z2(0-q_AV}!p}Rhw`Q0plsq=!nYiaQXU)UXQ&NfJ6P}@r@Uqn- zTQC=0Bl5V#+teGJXjg3PDJ>#60mj(%-Q5a`AF%E}m0+{Bi$|a@=U>btSH2zL&yu*Qs zt>Ke3s4`%Uuf^8Ty!Na?vfkbrU;bZNCMNNy!>t?E&8)Kz^IYGSZSpq{-eP z(g^%o#?9quN3)_pBxtqMf(kv)q(xQ64=zOf%!<#$%l5*&X-StBm5r6>Blg&f^N0l{ zLd^iB;OCyL>?L!`TvDv8$}UO|Pu68+KX2Y;!l;ZZ8)1Wa8I@7ovktpfnN68x`LLVe zwiRAoL@dm}cLjdkGE(I#({=NLOo|2NlyfwQr(m~dl}&^c9P_dqxGLwnHpDRCZ)V;q zV>3XEjXlSjD-$)+!Th5HGMiBXBm zo)n2uwVh>b=W#im+SyU|yk4MSo)kj?E(yE$%KP<#Rupq{Zq`NG3V#X_#F!t_LSW`8 z`8WcH-tK@FDlGFU^C_%RASYmd1iFOQ(eZdk2zw0+a3F$}lur@NN1VfA^r8i`E4OJN z2Yks}SQ5%ieJBO6fkFmlh2&+1Qp#0c_DKvV!3HPZSB^0TIRslmeeb@M84@c4xC6c;-x7DtjCfD~4z$z&IQ-2qI0E&y2nwFgVl!xKFZ)l3NZ(Z zK|VrQ$k?;AFTw*M2)@?f#Uqe}B7S%g!Gy!}3StE7tQdIlK7du`d$H@=t`!aoeAIz< zL=444e8)i{0+TyIArko1?W4@Y7K zO+}Jb=SLZx7eSF?7N0nn#j6kKDf_W6wyz5TV4;z|-KWh%Kv2>Xhi^qT)4S)SoCPB~ zyKxibcwkYIbsw}-OtP*~AdqFvX-1{b&^LTg%=c6<7Kw!(JRXU~9y}2V`lN-T7`#x> zM=eO!8Q4If5L$!DNYGaau%BV+a^w=^0jW0N0prM}&7B+jylY}B*Ct$Y z&7KMIr42V5`=A-*mGCEIER@gaq*7>|bL>3~Q$(;lK8d017v9dwx(-^Niz;;1p3a8x}8IqG;Y9|?T4@)NUwFEt+ce{^4n#Do8j?u!x51V4e$`y+9L z6o+hNsVL~1CVWlN%T5>H!_6Ia`qGK^%kX(xO9dEX0-?1$iDw_4DcE8={*r#QG+@X%CyVb-&;IXnZW6?wNj;}R1~ zv`6Q?@~q30jqGnDAA|+h7LUeayrMXE3R5DUCp!g?qkc|e^>Q8feWW6&kfh^spH_!P z5%XG1h^rv%VM;2^yAgzN3e_?K4H=O%?v(K|5RlO*>4tgpF?r6#mn&Mpq{X#Kz$-wj zzI#AG2Li6rwyp)F>6cupk$}h?u_KXyC2@>=vo)``VQmHMIwq(Q?QwLXLu!Q00XgLe zq@?hnk{u2$1*ku4l0W1MMRA-)dgXCF5(!HC7b!L#31bf)!e-2&0e)vZLylyScpFe0 z41kT2+gUOr(pjC(9FVvS=%Y<=Rf^09wLy zqL1RFpPRFCfA5Uv#x3xLyvhd)!MV}Lc94Xm~GBEd&{XNa}eK8ZbCiz;x<=J>|3lU~j@0sG2vbJM*u?!K_I zhydbGn`09D3bzTdQ$4tQ($0%py8GR1s-C`0tVdt(ZDpSK=&cl1Sf^ZBJ~)^)Z^;wB zP!_KEY>bD42ONJnfx1z70bfpDDldA{#qO1bnNPm%8z4U!`6l&>!Ywb8RVs7xmhYDL zo3E&Bj!uM`@TR;O!x1X4y4HZ{Ehvo`?kfvAg4=}K;xX+G58cjwu{+HC5ALuSjFVR^ z24nGSBEm`=r(%o>F#MYKmBpfXT+emiZKKwmym2Owi zmyll{M)O_xd_6c!#i2;yZh%I}50wv4w(S{x0?f4R8saP^CHGQNvNL2QNkbl9hDH-Z z&FMT7o;Rf@PTgt_SFf~tBxgWPJEU|LgHa>QgFR22qj`{31%WtE;vIordIvatuhToj zC8suQB-ke}B&W9iO)H(+a8-;`+j;R6hAe)RQ7Z;Oe$P-4&X>vukucq@;oiy7G KLu`l_4ffxAW>CNY literal 0 HcmV?d00001 diff --git a/vm/stdlib/compiled/latest/stdlib/114_token_coin_swap.mv b/vm/stdlib/compiled/latest/stdlib/114_token_coin_swap.mv new file mode 100644 index 0000000000000000000000000000000000000000..0fb0222dc8a07039432fecd40491079b33d0ce61 GIT binary patch literal 1109 zcmZ`&OKub~5G~tnw|jarnMnfq^9v9-0aCUoQX;WHB>PsU+X+^Bx<|H?N!V}-4#0v# zZ~`vD4Op|M>~;na!V9}T?^W4VuFpF^asdDtfe{@Yu%lP}<3akBd{5*jF&1CM+rdxq zZul*&5JZ3ig9JDTNCiP%CP+p8Kzc2g07C(MDFwcq09#2xJW3&Xl2C?z`ZOWP8UY~y zV~X2^CAhD0Z&(w4zlQ+0pL%f}Fx*BafxH|HfQg|LnA{&SWt2ChV z#j8%5uDVopfo|OtR#jH^6kUs+l`UAK(9lJ*&h)CQX{AX;Mhj(i93v7UHf#q7o97=)L8xoz!C2j=WAIanFPB z9NZvy0l46XS3tZ%#hI~_rbw(bv*-6a-+XJ&{*&f8ehC2meI< zD}O7@FJ`QMH`e}TviRrdH$He98)`scz(Ifn1sV)Q6tslo(PCNyT0>eRT4O4hXizf^ zdRH)xfaZ<>epjHPxr7B9jJCPAHodjQ1;8yy);3kZjz*9l$_Vt4ix~&=U@!!8JVFo; zaSZ&?6jAYyHfT4GH|L;FZjGsoJsA!`e~h;o7x;<1L)oWy_d$Pp4=JlZa|a&l^FxHl z4kp9d*bcUbJ5xK`oy}%DbGvB=_lLV&#nKp{U7E;5oRNn{ql!hyaDA2Gf=lBlC7IF2 zG3_jiAi@YR^3)u1regX+H0Yy-QB6#iw~grVrP17XdWZm{-oY4-MquxwQ5d?Z)<@k<3$*j)_$7$F7TV(jHT;EQ=YeS;itu6??dxNL&q!9 zHV6>_(lXyEtFkS#W%+BTD}a*1a5s@5OVFp3BJy%d|A9t zugmwuI>)wkn&mm^zBV1XGFREk|2n!)**;I_R!y<0-xTAsqV12;l@9Xayk3`maBo%T z7t10I6Vg?A)?{s2S7}js#0Whe z0+ghwTVGnFIrN(MbI{L;rRUP~kXFU~#PNiSZMjcnP7de4ci_ zR!n&!oX2C1(1?SWiiC9dUrvnC4GSpfXgJkOddFEv6fI4QI402)9s{Eb7-267iYcp( zVP8b#5Y?W3Cn7a?X(k)7w$hTgCr%`MUmOy3<8)%>18*gcsBe*!PkJe35<8E?dnr{i XU^>u_Z%CG`p@(o zB?v)*1_I`h1u%d}U=_+$rU%SP5S>NP+UB4NC${p1Acs)^8jlCZ1cTsoKxD&~HRr)` z!Q>q~ryPMEG$PMVk@ifO150$Al?)o-h9l+?7@pLhRtRqtQ;(~$A0 zA(t120*9hiv#OSx*jMc)Rq?jzQ`W_`9I?xejhff{`m{@{lDE=IqIP~0P5 zhL{>)09ukVMG<2WA2k-ECX$pZHEI-*qDfNHOcN&ZBx7)rkLBW|AYG(myj+mV)e=DB zdVNYUA}Wk9!4x$b%+ef%K|!mb6he*)1`;L|Rgr|MLNlt&0u+HVFl9WNUXtsvJjH+< zrwr7b16O8tDU&c1d`f1^jKh=^!P(m1x?SZP*A2nTrth{FZQWOg&RrMYx30dc2G)DlZF3uJ^@u5E_@Q%ou+-bO^24SJ)h0ZEO+CCkSVI57 zZl_+g>9)3Z|M}{-9nrh9S5xct{&TPDVc(Efbf)Ld-t?dB5&nGt5sx=W>$Y{)dpd2@ zTDpTSyy$#oZ-%ftvfyQFeQ^CT%LT1`WChjG?+NzV;UdQ1-cL8QKOhbCzYmSFWPmx- zpn1t?oGFdwR0}Oj;G9bFlbn^@$V`%p#?h#pEn=-onadL8l8g#Z36tdr(|~DF##|7( aT2ClsP$q^?7$*z}D>M+c8h0xr&i(@MK*>e` literal 0 HcmV?d00001 diff --git a/vm/stdlib/output.bpl b/vm/stdlib/output.bpl new file mode 100644 index 0000000000..5f7372121c --- /dev/null +++ b/vm/stdlib/output.bpl @@ -0,0 +1,348965 @@ + +// ** 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. + +datatype Vec { + Vec(v: [int]T, l: int) +} + +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 := v->l; + Vec(v->v[l := elem], l + 1)) +} + +function {:inline} ReadVec(v: Vec T, i: int): T { + v->v[i] +} + +function {:inline} LenVec(v: Vec T): int { + v->l +} + +function {:inline} IsEmptyVec(v: Vec T): bool { + v->l == 0 +} + +function {:inline} RemoveVec(v: Vec T): Vec T { + (var l := v->l - 1; + Vec(v->v[l := DefaultVecElem()], l)) +} + +function {:inline} RemoveAtVec(v: Vec T, i: int): Vec T { + (var l := v->l - 1; + Vec( + (lambda j: int :: + if j >= 0 && j < l then + if j < i then v->v[j] else v->v[j+1] + else DefaultVecElem()), + l)) +} + +function {:inline} ConcatVec(v1: Vec T, v2: Vec T): Vec T { + (var l1, m1, l2, m2 := v1->l, v1->v, v2->l, v2->v; + 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 := v->l; + Vec( + (lambda i: int :: if 0 <= i && i < l then v->v[l - i - 1] else DefaultVecElem()), + l)) +} + +function {:inline} SliceVec(v: Vec T, i: int, j: int): Vec T { + (var m := v->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->v[i := elem], v->l) +} + +function {:inline} SwapVec(v: Vec T, i: int, j: int): Vec T { + (var m := v->v; + Vec(m[i := m[j]][j := m[i]], v->l)) +} + +function {:inline} ContainsVec(v: Vec T, e: T): bool { + (var l := v->l; + (exists i: int :: InRangeVec(v, i) && v->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. + +datatype Multiset { + Multiset(v: [T]int, l: int) +} + +function {:builtin "MapConst"} MapConstMultiset(l: int): [T]int; + +function {:inline} EmptyMultiset(): Multiset T { + Multiset(MapConstMultiset(0), 0) +} + +function {:inline} LenMultiset(s: Multiset T): int { + s->l +} + +function {:inline} ExtendMultiset(s: Multiset T, v: T): Multiset T { + (var len := s->l; + (var cnt := s->v[v]; + Multiset(s->v[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 := s1->l; + (var len2 := s2->l; + Multiset((lambda v:T :: s1->v[v]-s2->v[v]), len1-len2))) +} + +function {:inline} IsEmptyMultiset(s: Multiset T): bool { + (s->l == 0) && + (forall v: T :: s->v[v] == 0) +} + +function {:inline} IsSubsetMultiset(s1: Multiset T, s2: Multiset T): bool { + (s1->l <= s2->l) && + (forall v: T :: s1->v[v] <= s2->v[v]) +} + +function {:inline} ContainsMultiset(s: Multiset T, v: T): bool { + s->v[v] > 0 +} + +// Copyright (c) The Diem Core Contributors +// Copyright (c) The Move Contributors +// SPDX-License-Identifier: Apache-2.0 + +// Theory for tables. + +// 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". +datatype Table { + Table(v: [K]V, e: [K]bool, l: int) +} + +// 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. + t->v[k] +} + +function {:inline} LenTable(t: Table K V): int { + t->l +} + + +function {:inline} ContainsTable(t: Table K V, k: K): bool { + t->e[k] +} + +function {:inline} UpdateTable(t: Table K V, k: K, v: V): Table K V { + Table(t->v[k := v], t->e, t->l) +} + +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(t->v[k := v], t->e[k := true], t->l + 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(t->v, t->e[k := false], t->l - 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. + + +// ============================================================================================ +// 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); + +datatype $Range { + $Range(lb: int, ub: int) +} + +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'(r->lb) && $IsValid'u64'(r->ub) +} + +// Intentionally not inlined so it serves as a trigger in quantifiers. +function $InRange(r: $Range, i: int): bool { + r->lb <= i && i < r->ub +} + + +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 + +datatype $Location { + // A global resource location within the statically known resource type's memory, + // where `a` is an address. + $Global(a: int), + // A local location. `i` is the unique index of the local. + $Local(i: int), + // 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. + $Param(i: int), + // 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. + $Uninitialized() +} + +// 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. +datatype $Mutation { + $Mutation(l: $Location, p: Vec int, v: T) +} + +// Representation of memory for a given type. +datatype $Memory { + $Memory(domain: [int]bool, contents: [int]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 { + ref->v +} + +// Update the value of a mutation. +function {:inline} $UpdateMutation(m: $Mutation T, v: T): $Mutation T { + $Mutation(m->l, m->p, v) +} + +function {:inline} $ChildMutation(m: $Mutation T1, offset: int, v: T2): $Mutation T2 { + $Mutation(m->l, ExtendVec(m->p, offset), v) +} + +// Return true if two mutations share the location and path +function {:inline} $IsSameMutation(parent: $Mutation T1, child: $Mutation T2 ): bool { + parent->l == child->l && parent->p == child->p +} + +// 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 { + parent->l == child->l && + (var pp := parent->p; + (var cp := child->p; + (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 { + parent->l == child->l && + (var pp := parent->p; + (var cp := child->p; + (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 { + m1->l == m2->l +} + +function {:inline} $HasGlobalLocation(m: $Mutation T): bool { + (m->l) is $Global +} + +function {:inline} $HasLocalLocation(m: $Mutation T, idx: int): bool { + m->l == $Local(idx) +} + +function {:inline} $GlobalLocationAddress(m: $Mutation T): int { + (m->l)->a +} + + + +// Tests whether resource exists. +function {:inline} $ResourceExists(m: $Memory T, addr: int): bool { + m->domain[addr] +} + +// Obtains Value of given resource. +function {:inline} $ResourceValue(m: $Memory T, addr: int): T { + m->contents[addr] +} + +// Update resource. +function {:inline} $ResourceUpdate(m: $Memory T, a: int, v: T): $Memory T { + $Memory(m->domain[a := true], m->contents[a := v]) +} + +// Remove resource. +function {:inline} $ResourceRemove(m: $Memory T, a: int): $Memory T { + $Memory(m->domain[a := false], m->contents) +} + +// Copies resource from memory s to m. +function {:inline} $ResourceCopy(m: $Memory T, s: $Memory T, a: int): $Memory T { + $Memory(m->domain[a := s->domain[a]], + m->contents[a := s->contents[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, r->lb, r->ub) +} + +// ---------------------------------------------------------------------------------- +// 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(m->l, ExtendVec(m->p, 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` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'#1''(v1: Vec (#1), v2: Vec (#1)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'#1'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'#1''(v: Vec (#1), prefix: Vec (#1)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'#1'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'#1''(v: Vec (#1), suffix: Vec (#1)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'#1'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'#1''(v: Vec (#1)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'#1'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'#1'(v: Vec (#1), e: #1): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#1'(ReadVec(v, i), e)) +} + +function $IndexOfVec'#1'(v: Vec (#1), e: #1): int; +axiom (forall v: Vec (#1), e: #1:: {$IndexOfVec'#1'(v, e)} + (var i := $IndexOfVec'#1'(v, e); + if (!$ContainsVec'#1'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'#1'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'#1'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'#1'(v: Vec (#1)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'#1'(): Vec (#1) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'#1'() returns (v: Vec (#1)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'#1'(): Vec (#1) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'#1'(v: Vec (#1)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'#1'(m: $Mutation (Vec (#1)), val: #1) returns (m': $Mutation (Vec (#1))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'#1'(v: Vec (#1), val: #1): Vec (#1) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'#1'(m: $Mutation (Vec (#1))) returns (e: #1, m': $Mutation (Vec (#1))) { + var v: Vec (#1); + 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'(m: $Mutation (Vec (#1)), other: Vec (#1)) returns (m': $Mutation (Vec (#1))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'#1'(m: $Mutation (Vec (#1))) returns (m': $Mutation (Vec (#1))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'#1'(m: $Mutation (Vec (#1)), other: Vec (#1)) returns (m': $Mutation (Vec (#1))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'#1'(m: $Mutation (Vec (#1)), new_len: int) returns (v: (Vec (#1)), m': $Mutation (Vec (#1))) { + 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'(m: $Mutation (Vec (#1)), new_len: int) returns (v: (Vec (#1)), m': $Mutation (Vec (#1))) { + 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'(m: $Mutation (Vec (#1)), left: int, right: int) returns (m': $Mutation (Vec (#1))) { + var left_vec: Vec (#1); + var mid_vec: Vec (#1); + var right_vec: Vec (#1); + var v: Vec (#1); + 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'(m: $Mutation (Vec (#1)), rot: int) returns (n: int, m': $Mutation (Vec (#1))) { + var v: Vec (#1); + var len: int; + var left_vec: Vec (#1); + var right_vec: Vec (#1); + 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'(m: $Mutation (Vec (#1)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (#1))) { + var left_vec: Vec (#1); + var mid_vec: Vec (#1); + var right_vec: Vec (#1); + var mid_left_vec: Vec (#1); + var mid_right_vec: Vec (#1); + var v: Vec (#1); + 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'(m: $Mutation (Vec (#1)), i: int, e: #1) returns (m': $Mutation (Vec (#1))) { + var left_vec: Vec (#1); + var right_vec: Vec (#1); + var v: Vec (#1); + 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'(v: Vec (#1)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'#1'(v: Vec (#1)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'#1'(v: Vec (#1), i: int) returns (dst: #1) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'#1'(v: Vec (#1), i: int): #1 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'#1'(m: $Mutation (Vec (#1)), index: int) +returns (dst: $Mutation (#1), m': $Mutation (Vec (#1))) +{ + var v: Vec (#1); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'#1'(v: Vec (#1), i: int): #1 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'#1'(v: Vec (#1)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'#1'(m: $Mutation (Vec (#1)), i: int, j: int) returns (m': $Mutation (Vec (#1))) +{ + var v: Vec (#1); + 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'(v: Vec (#1), i: int, j: int): Vec (#1) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'#1'(m: $Mutation (Vec (#1)), i: int) returns (e: #1, m': $Mutation (Vec (#1))) +{ + var v: Vec (#1); + + 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'(m: $Mutation (Vec (#1)), i: int) returns (e: #1, m': $Mutation (Vec (#1))) +{ + var len: int; + var v: Vec (#1); + + 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'(v: Vec (#1), e: #1) returns (res: bool) { + res := $ContainsVec'#1'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'#1'(v: Vec (#1), e: #1) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'#1'(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(m->l, ExtendVec(m->p, 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_aggregator_v2_AggregatorSnapshot'u64'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(v1: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), v2: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), prefix: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), suffix: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), e: $1_aggregator_v2_AggregatorSnapshot'u64'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), e: $1_aggregator_v2_AggregatorSnapshot'u64'): int; +axiom (forall v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), e: $1_aggregator_v2_AggregatorSnapshot'u64':: {$IndexOfVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v, e)} + (var i := $IndexOfVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v, e); + if (!$ContainsVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_aggregator_v2_AggregatorSnapshot'u64''(): Vec ($1_aggregator_v2_AggregatorSnapshot'u64') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_aggregator_v2_AggregatorSnapshot'u64''() returns (v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_aggregator_v2_AggregatorSnapshot'u64''(): Vec ($1_aggregator_v2_AggregatorSnapshot'u64') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), val: $1_aggregator_v2_AggregatorSnapshot'u64') returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), val: $1_aggregator_v2_AggregatorSnapshot'u64'): Vec ($1_aggregator_v2_AggregatorSnapshot'u64') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) returns (e: $1_aggregator_v2_AggregatorSnapshot'u64', m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), other: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), other: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), new_len: int) returns (v: (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), new_len: int) returns (v: (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), left: int, right: int) returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + var left_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var mid_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var right_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), rot: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var len: int; + var left_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var right_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + var left_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var mid_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var right_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var mid_left_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var mid_right_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), i: int, e: $1_aggregator_v2_AggregatorSnapshot'u64') returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) { + var left_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var right_vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), i: int) returns (dst: $1_aggregator_v2_AggregatorSnapshot'u64') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), i: int): $1_aggregator_v2_AggregatorSnapshot'u64' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), index: int) +returns (dst: $Mutation ($1_aggregator_v2_AggregatorSnapshot'u64'), m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) +{ + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), i: int): $1_aggregator_v2_AggregatorSnapshot'u64' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), i: int, j: int) returns (m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) +{ + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + 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_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), i: int, j: int): Vec ($1_aggregator_v2_AggregatorSnapshot'u64') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_aggregator_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), i: int) returns (e: $1_aggregator_v2_AggregatorSnapshot'u64', m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) +{ + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + + 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_v2_AggregatorSnapshot'u64''(m: $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64')), i: int) returns (e: $1_aggregator_v2_AggregatorSnapshot'u64', m': $Mutation (Vec ($1_aggregator_v2_AggregatorSnapshot'u64'))) +{ + var len: int; + var v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); + + 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_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), e: $1_aggregator_v2_AggregatorSnapshot'u64') returns (res: bool) { + res := $ContainsVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_aggregator_v2_AggregatorSnapshot'u64''(v: Vec ($1_aggregator_v2_AggregatorSnapshot'u64'), e: $1_aggregator_v2_AggregatorSnapshot'u64') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_aggregator_v2_AggregatorSnapshot'u64''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_any_Any` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_any_Any''(v1: Vec ($1_any_Any), v2: Vec ($1_any_Any)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_any_Any'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_any_Any''(v: Vec ($1_any_Any), prefix: Vec ($1_any_Any)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_any_Any'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_any_Any''(v: Vec ($1_any_Any), suffix: Vec ($1_any_Any)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_any_Any'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_any_Any''(v: Vec ($1_any_Any)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_any_Any'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_any_Any'(v: Vec ($1_any_Any), e: $1_any_Any): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_any_Any'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_any_Any'(v: Vec ($1_any_Any), e: $1_any_Any): int; +axiom (forall v: Vec ($1_any_Any), e: $1_any_Any:: {$IndexOfVec'$1_any_Any'(v, e)} + (var i := $IndexOfVec'$1_any_Any'(v, e); + if (!$ContainsVec'$1_any_Any'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_any_Any'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_any_Any'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_any_Any'(v: Vec ($1_any_Any)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_any_Any'(): Vec ($1_any_Any) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_any_Any'() returns (v: Vec ($1_any_Any)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_any_Any'(): Vec ($1_any_Any) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_any_Any'(v: Vec ($1_any_Any)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), val: $1_any_Any) returns (m': $Mutation (Vec ($1_any_Any))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_any_Any'(v: Vec ($1_any_Any), val: $1_any_Any): Vec ($1_any_Any) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_any_Any'(m: $Mutation (Vec ($1_any_Any))) returns (e: $1_any_Any, m': $Mutation (Vec ($1_any_Any))) { + var v: Vec ($1_any_Any); + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), other: Vec ($1_any_Any)) returns (m': $Mutation (Vec ($1_any_Any))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_any_Any'(m: $Mutation (Vec ($1_any_Any))) returns (m': $Mutation (Vec ($1_any_Any))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), other: Vec ($1_any_Any)) returns (m': $Mutation (Vec ($1_any_Any))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), new_len: int) returns (v: (Vec ($1_any_Any)), m': $Mutation (Vec ($1_any_Any))) { + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), new_len: int) returns (v: (Vec ($1_any_Any)), m': $Mutation (Vec ($1_any_Any))) { + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), left: int, right: int) returns (m': $Mutation (Vec ($1_any_Any))) { + var left_vec: Vec ($1_any_Any); + var mid_vec: Vec ($1_any_Any); + var right_vec: Vec ($1_any_Any); + var v: Vec ($1_any_Any); + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), rot: int) returns (n: int, m': $Mutation (Vec ($1_any_Any))) { + var v: Vec ($1_any_Any); + var len: int; + var left_vec: Vec ($1_any_Any); + var right_vec: Vec ($1_any_Any); + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_any_Any))) { + var left_vec: Vec ($1_any_Any); + var mid_vec: Vec ($1_any_Any); + var right_vec: Vec ($1_any_Any); + var mid_left_vec: Vec ($1_any_Any); + var mid_right_vec: Vec ($1_any_Any); + var v: Vec ($1_any_Any); + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), i: int, e: $1_any_Any) returns (m': $Mutation (Vec ($1_any_Any))) { + var left_vec: Vec ($1_any_Any); + var right_vec: Vec ($1_any_Any); + var v: Vec ($1_any_Any); + 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_any_Any'(v: Vec ($1_any_Any)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_any_Any'(v: Vec ($1_any_Any)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_any_Any'(v: Vec ($1_any_Any), i: int) returns (dst: $1_any_Any) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_any_Any'(v: Vec ($1_any_Any), i: int): $1_any_Any { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), index: int) +returns (dst: $Mutation ($1_any_Any), m': $Mutation (Vec ($1_any_Any))) +{ + var v: Vec ($1_any_Any); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_any_Any'(v: Vec ($1_any_Any), i: int): $1_any_Any { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_any_Any'(v: Vec ($1_any_Any)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), i: int, j: int) returns (m': $Mutation (Vec ($1_any_Any))) +{ + var v: Vec ($1_any_Any); + 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_any_Any'(v: Vec ($1_any_Any), i: int, j: int): Vec ($1_any_Any) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_any_Any'(m: $Mutation (Vec ($1_any_Any)), i: int) returns (e: $1_any_Any, m': $Mutation (Vec ($1_any_Any))) +{ + var v: Vec ($1_any_Any); + + 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_any_Any'(m: $Mutation (Vec ($1_any_Any)), i: int) returns (e: $1_any_Any, m': $Mutation (Vec ($1_any_Any))) +{ + var len: int; + var v: Vec ($1_any_Any); + + 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_any_Any'(v: Vec ($1_any_Any), e: $1_any_Any) returns (res: bool) { + res := $ContainsVec'$1_any_Any'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_any_Any'(v: Vec ($1_any_Any), e: $1_any_Any) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_any_Any'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_big_vector_BigVector'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_big_vector_BigVector'#0'''(v1: Vec ($1_big_vector_BigVector'#0'), v2: Vec ($1_big_vector_BigVector'#0')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_big_vector_BigVector'#0'''(v: Vec ($1_big_vector_BigVector'#0'), prefix: Vec ($1_big_vector_BigVector'#0')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_big_vector_BigVector'#0'''(v: Vec ($1_big_vector_BigVector'#0'), suffix: Vec ($1_big_vector_BigVector'#0')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_big_vector_BigVector'#0'''(v: Vec ($1_big_vector_BigVector'#0')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_big_vector_BigVector'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), e: $1_big_vector_BigVector'#0'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), e: $1_big_vector_BigVector'#0'): int; +axiom (forall v: Vec ($1_big_vector_BigVector'#0'), e: $1_big_vector_BigVector'#0':: {$IndexOfVec'$1_big_vector_BigVector'#0''(v, e)} + (var i := $IndexOfVec'$1_big_vector_BigVector'#0''(v, e); + if (!$ContainsVec'$1_big_vector_BigVector'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_big_vector_BigVector'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_big_vector_BigVector'#0''(): Vec ($1_big_vector_BigVector'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_big_vector_BigVector'#0''() returns (v: Vec ($1_big_vector_BigVector'#0')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_big_vector_BigVector'#0''(): Vec ($1_big_vector_BigVector'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), val: $1_big_vector_BigVector'#0') returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), val: $1_big_vector_BigVector'#0'): Vec ($1_big_vector_BigVector'#0') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0'))) returns (e: $1_big_vector_BigVector'#0', m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), other: Vec ($1_big_vector_BigVector'#0')) returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0'))) returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), other: Vec ($1_big_vector_BigVector'#0')) returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), new_len: int) returns (v: (Vec ($1_big_vector_BigVector'#0')), m': $Mutation (Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), new_len: int) returns (v: (Vec ($1_big_vector_BigVector'#0')), m': $Mutation (Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), left: int, right: int) returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + var left_vec: Vec ($1_big_vector_BigVector'#0'); + var mid_vec: Vec ($1_big_vector_BigVector'#0'); + var right_vec: Vec ($1_big_vector_BigVector'#0'); + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), rot: int) returns (n: int, m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + var v: Vec ($1_big_vector_BigVector'#0'); + var len: int; + var left_vec: Vec ($1_big_vector_BigVector'#0'); + var right_vec: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + var left_vec: Vec ($1_big_vector_BigVector'#0'); + var mid_vec: Vec ($1_big_vector_BigVector'#0'); + var right_vec: Vec ($1_big_vector_BigVector'#0'); + var mid_left_vec: Vec ($1_big_vector_BigVector'#0'); + var mid_right_vec: Vec ($1_big_vector_BigVector'#0'); + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), i: int, e: $1_big_vector_BigVector'#0') returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) { + var left_vec: Vec ($1_big_vector_BigVector'#0'); + var right_vec: Vec ($1_big_vector_BigVector'#0'); + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), i: int) returns (dst: $1_big_vector_BigVector'#0') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), i: int): $1_big_vector_BigVector'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), index: int) +returns (dst: $Mutation ($1_big_vector_BigVector'#0'), m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) +{ + var v: Vec ($1_big_vector_BigVector'#0'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), i: int): $1_big_vector_BigVector'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), i: int, j: int) returns (m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) +{ + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), i: int, j: int): Vec ($1_big_vector_BigVector'#0') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), i: int) returns (e: $1_big_vector_BigVector'#0', m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) +{ + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(m: $Mutation (Vec ($1_big_vector_BigVector'#0')), i: int) returns (e: $1_big_vector_BigVector'#0', m': $Mutation (Vec ($1_big_vector_BigVector'#0'))) +{ + var len: int; + var v: Vec ($1_big_vector_BigVector'#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'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), e: $1_big_vector_BigVector'#0') returns (res: bool) { + res := $ContainsVec'$1_big_vector_BigVector'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_big_vector_BigVector'#0''(v: Vec ($1_big_vector_BigVector'#0'), e: $1_big_vector_BigVector'#0') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_big_vector_BigVector'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_block_reward_RewardInfo` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_block_reward_RewardInfo''(v1: Vec ($1_block_reward_RewardInfo), v2: Vec ($1_block_reward_RewardInfo)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_block_reward_RewardInfo'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_block_reward_RewardInfo''(v: Vec ($1_block_reward_RewardInfo), prefix: Vec ($1_block_reward_RewardInfo)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_block_reward_RewardInfo'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_block_reward_RewardInfo''(v: Vec ($1_block_reward_RewardInfo), suffix: Vec ($1_block_reward_RewardInfo)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_block_reward_RewardInfo'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_block_reward_RewardInfo''(v: Vec ($1_block_reward_RewardInfo)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_block_reward_RewardInfo'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), e: $1_block_reward_RewardInfo): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_block_reward_RewardInfo'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), e: $1_block_reward_RewardInfo): int; +axiom (forall v: Vec ($1_block_reward_RewardInfo), e: $1_block_reward_RewardInfo:: {$IndexOfVec'$1_block_reward_RewardInfo'(v, e)} + (var i := $IndexOfVec'$1_block_reward_RewardInfo'(v, e); + if (!$ContainsVec'$1_block_reward_RewardInfo'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_block_reward_RewardInfo'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_block_reward_RewardInfo'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_block_reward_RewardInfo'(): Vec ($1_block_reward_RewardInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_block_reward_RewardInfo'() returns (v: Vec ($1_block_reward_RewardInfo)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_block_reward_RewardInfo'(): Vec ($1_block_reward_RewardInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), val: $1_block_reward_RewardInfo) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), val: $1_block_reward_RewardInfo): Vec ($1_block_reward_RewardInfo) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo))) returns (e: $1_block_reward_RewardInfo, m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + var v: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), other: Vec ($1_block_reward_RewardInfo)) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo))) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), other: Vec ($1_block_reward_RewardInfo)) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), new_len: int) returns (v: (Vec ($1_block_reward_RewardInfo)), m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), new_len: int) returns (v: (Vec ($1_block_reward_RewardInfo)), m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), left: int, right: int) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + var left_vec: Vec ($1_block_reward_RewardInfo); + var mid_vec: Vec ($1_block_reward_RewardInfo); + var right_vec: Vec ($1_block_reward_RewardInfo); + var v: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), rot: int) returns (n: int, m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + var v: Vec ($1_block_reward_RewardInfo); + var len: int; + var left_vec: Vec ($1_block_reward_RewardInfo); + var right_vec: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + var left_vec: Vec ($1_block_reward_RewardInfo); + var mid_vec: Vec ($1_block_reward_RewardInfo); + var right_vec: Vec ($1_block_reward_RewardInfo); + var mid_left_vec: Vec ($1_block_reward_RewardInfo); + var mid_right_vec: Vec ($1_block_reward_RewardInfo); + var v: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), i: int, e: $1_block_reward_RewardInfo) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) { + var left_vec: Vec ($1_block_reward_RewardInfo); + var right_vec: Vec ($1_block_reward_RewardInfo); + var v: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), i: int) returns (dst: $1_block_reward_RewardInfo) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), i: int): $1_block_reward_RewardInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), index: int) +returns (dst: $Mutation ($1_block_reward_RewardInfo), m': $Mutation (Vec ($1_block_reward_RewardInfo))) +{ + var v: Vec ($1_block_reward_RewardInfo); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), i: int): $1_block_reward_RewardInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), i: int, j: int) returns (m': $Mutation (Vec ($1_block_reward_RewardInfo))) +{ + var v: Vec ($1_block_reward_RewardInfo); + 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_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), i: int, j: int): Vec ($1_block_reward_RewardInfo) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), i: int) returns (e: $1_block_reward_RewardInfo, m': $Mutation (Vec ($1_block_reward_RewardInfo))) +{ + var v: Vec ($1_block_reward_RewardInfo); + + 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_block_reward_RewardInfo'(m: $Mutation (Vec ($1_block_reward_RewardInfo)), i: int) returns (e: $1_block_reward_RewardInfo, m': $Mutation (Vec ($1_block_reward_RewardInfo))) +{ + var len: int; + var v: Vec ($1_block_reward_RewardInfo); + + 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_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), e: $1_block_reward_RewardInfo) returns (res: bool) { + res := $ContainsVec'$1_block_reward_RewardInfo'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_block_reward_RewardInfo'(v: Vec ($1_block_reward_RewardInfo), e: $1_block_reward_RewardInfo) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_block_reward_RewardInfo'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_bls12381_AggrOrMultiSignature` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_bls12381_AggrOrMultiSignature''(v1: Vec ($1_bls12381_AggrOrMultiSignature), v2: Vec ($1_bls12381_AggrOrMultiSignature)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_bls12381_AggrOrMultiSignature''(v: Vec ($1_bls12381_AggrOrMultiSignature), prefix: Vec ($1_bls12381_AggrOrMultiSignature)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_bls12381_AggrOrMultiSignature''(v: Vec ($1_bls12381_AggrOrMultiSignature), suffix: Vec ($1_bls12381_AggrOrMultiSignature)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_bls12381_AggrOrMultiSignature''(v: Vec ($1_bls12381_AggrOrMultiSignature)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), e: $1_bls12381_AggrOrMultiSignature): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), e: $1_bls12381_AggrOrMultiSignature): int; +axiom (forall v: Vec ($1_bls12381_AggrOrMultiSignature), e: $1_bls12381_AggrOrMultiSignature:: {$IndexOfVec'$1_bls12381_AggrOrMultiSignature'(v, e)} + (var i := $IndexOfVec'$1_bls12381_AggrOrMultiSignature'(v, e); + if (!$ContainsVec'$1_bls12381_AggrOrMultiSignature'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_bls12381_AggrOrMultiSignature'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_bls12381_AggrOrMultiSignature'(): Vec ($1_bls12381_AggrOrMultiSignature) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_bls12381_AggrOrMultiSignature'() returns (v: Vec ($1_bls12381_AggrOrMultiSignature)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_bls12381_AggrOrMultiSignature'(): Vec ($1_bls12381_AggrOrMultiSignature) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), val: $1_bls12381_AggrOrMultiSignature) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), val: $1_bls12381_AggrOrMultiSignature): Vec ($1_bls12381_AggrOrMultiSignature) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) returns (e: $1_bls12381_AggrOrMultiSignature, m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + var v: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), other: Vec ($1_bls12381_AggrOrMultiSignature)) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), other: Vec ($1_bls12381_AggrOrMultiSignature)) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), new_len: int) returns (v: (Vec ($1_bls12381_AggrOrMultiSignature)), m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), new_len: int) returns (v: (Vec ($1_bls12381_AggrOrMultiSignature)), m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), left: int, right: int) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + var left_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var mid_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var right_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var v: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), rot: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + var v: Vec ($1_bls12381_AggrOrMultiSignature); + var len: int; + var left_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var right_vec: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + var left_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var mid_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var right_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var mid_left_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var mid_right_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var v: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), i: int, e: $1_bls12381_AggrOrMultiSignature) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) { + var left_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var right_vec: Vec ($1_bls12381_AggrOrMultiSignature); + var v: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), i: int) returns (dst: $1_bls12381_AggrOrMultiSignature) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), i: int): $1_bls12381_AggrOrMultiSignature { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), index: int) +returns (dst: $Mutation ($1_bls12381_AggrOrMultiSignature), m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) +{ + var v: Vec ($1_bls12381_AggrOrMultiSignature); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), i: int): $1_bls12381_AggrOrMultiSignature { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), i: int, j: int) returns (m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) +{ + var v: Vec ($1_bls12381_AggrOrMultiSignature); + 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_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), i: int, j: int): Vec ($1_bls12381_AggrOrMultiSignature) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), i: int) returns (e: $1_bls12381_AggrOrMultiSignature, m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) +{ + var v: Vec ($1_bls12381_AggrOrMultiSignature); + + 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_bls12381_AggrOrMultiSignature'(m: $Mutation (Vec ($1_bls12381_AggrOrMultiSignature)), i: int) returns (e: $1_bls12381_AggrOrMultiSignature, m': $Mutation (Vec ($1_bls12381_AggrOrMultiSignature))) +{ + var len: int; + var v: Vec ($1_bls12381_AggrOrMultiSignature); + + 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_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), e: $1_bls12381_AggrOrMultiSignature) returns (res: bool) { + res := $ContainsVec'$1_bls12381_AggrOrMultiSignature'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_bls12381_AggrOrMultiSignature'(v: Vec ($1_bls12381_AggrOrMultiSignature), e: $1_bls12381_AggrOrMultiSignature) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_bls12381_AggrOrMultiSignature'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_bls12381_PublicKey` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_bls12381_PublicKey''(v1: Vec ($1_bls12381_PublicKey), v2: Vec ($1_bls12381_PublicKey)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_bls12381_PublicKey'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_bls12381_PublicKey''(v: Vec ($1_bls12381_PublicKey), prefix: Vec ($1_bls12381_PublicKey)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_bls12381_PublicKey'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_bls12381_PublicKey''(v: Vec ($1_bls12381_PublicKey), suffix: Vec ($1_bls12381_PublicKey)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_bls12381_PublicKey'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_bls12381_PublicKey''(v: Vec ($1_bls12381_PublicKey)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_bls12381_PublicKey'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), e: $1_bls12381_PublicKey): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_PublicKey'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), e: $1_bls12381_PublicKey): int; +axiom (forall v: Vec ($1_bls12381_PublicKey), e: $1_bls12381_PublicKey:: {$IndexOfVec'$1_bls12381_PublicKey'(v, e)} + (var i := $IndexOfVec'$1_bls12381_PublicKey'(v, e); + if (!$ContainsVec'$1_bls12381_PublicKey'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_PublicKey'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_bls12381_PublicKey'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_bls12381_PublicKey'(): Vec ($1_bls12381_PublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_bls12381_PublicKey'() returns (v: Vec ($1_bls12381_PublicKey)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_bls12381_PublicKey'(): Vec ($1_bls12381_PublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), val: $1_bls12381_PublicKey) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), val: $1_bls12381_PublicKey): Vec ($1_bls12381_PublicKey) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey))) returns (e: $1_bls12381_PublicKey, m': $Mutation (Vec ($1_bls12381_PublicKey))) { + var v: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), other: Vec ($1_bls12381_PublicKey)) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey))) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), other: Vec ($1_bls12381_PublicKey)) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), new_len: int) returns (v: (Vec ($1_bls12381_PublicKey)), m': $Mutation (Vec ($1_bls12381_PublicKey))) { + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), new_len: int) returns (v: (Vec ($1_bls12381_PublicKey)), m': $Mutation (Vec ($1_bls12381_PublicKey))) { + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), left: int, right: int) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + var left_vec: Vec ($1_bls12381_PublicKey); + var mid_vec: Vec ($1_bls12381_PublicKey); + var right_vec: Vec ($1_bls12381_PublicKey); + var v: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), rot: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_PublicKey))) { + var v: Vec ($1_bls12381_PublicKey); + var len: int; + var left_vec: Vec ($1_bls12381_PublicKey); + var right_vec: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_PublicKey))) { + var left_vec: Vec ($1_bls12381_PublicKey); + var mid_vec: Vec ($1_bls12381_PublicKey); + var right_vec: Vec ($1_bls12381_PublicKey); + var mid_left_vec: Vec ($1_bls12381_PublicKey); + var mid_right_vec: Vec ($1_bls12381_PublicKey); + var v: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), i: int, e: $1_bls12381_PublicKey) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) { + var left_vec: Vec ($1_bls12381_PublicKey); + var right_vec: Vec ($1_bls12381_PublicKey); + var v: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), i: int) returns (dst: $1_bls12381_PublicKey) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), i: int): $1_bls12381_PublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), index: int) +returns (dst: $Mutation ($1_bls12381_PublicKey), m': $Mutation (Vec ($1_bls12381_PublicKey))) +{ + var v: Vec ($1_bls12381_PublicKey); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), i: int): $1_bls12381_PublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), i: int, j: int) returns (m': $Mutation (Vec ($1_bls12381_PublicKey))) +{ + var v: Vec ($1_bls12381_PublicKey); + 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_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), i: int, j: int): Vec ($1_bls12381_PublicKey) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), i: int) returns (e: $1_bls12381_PublicKey, m': $Mutation (Vec ($1_bls12381_PublicKey))) +{ + var v: Vec ($1_bls12381_PublicKey); + + 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_bls12381_PublicKey'(m: $Mutation (Vec ($1_bls12381_PublicKey)), i: int) returns (e: $1_bls12381_PublicKey, m': $Mutation (Vec ($1_bls12381_PublicKey))) +{ + var len: int; + var v: Vec ($1_bls12381_PublicKey); + + 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_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), e: $1_bls12381_PublicKey) returns (res: bool) { + res := $ContainsVec'$1_bls12381_PublicKey'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_bls12381_PublicKey'(v: Vec ($1_bls12381_PublicKey), e: $1_bls12381_PublicKey) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_bls12381_PublicKey'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_bls12381_PublicKeyWithPoP` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_bls12381_PublicKeyWithPoP''(v1: Vec ($1_bls12381_PublicKeyWithPoP), v2: Vec ($1_bls12381_PublicKeyWithPoP)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_bls12381_PublicKeyWithPoP''(v: Vec ($1_bls12381_PublicKeyWithPoP), prefix: Vec ($1_bls12381_PublicKeyWithPoP)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_bls12381_PublicKeyWithPoP''(v: Vec ($1_bls12381_PublicKeyWithPoP), suffix: Vec ($1_bls12381_PublicKeyWithPoP)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_bls12381_PublicKeyWithPoP''(v: Vec ($1_bls12381_PublicKeyWithPoP)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), e: $1_bls12381_PublicKeyWithPoP): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), e: $1_bls12381_PublicKeyWithPoP): int; +axiom (forall v: Vec ($1_bls12381_PublicKeyWithPoP), e: $1_bls12381_PublicKeyWithPoP:: {$IndexOfVec'$1_bls12381_PublicKeyWithPoP'(v, e)} + (var i := $IndexOfVec'$1_bls12381_PublicKeyWithPoP'(v, e); + if (!$ContainsVec'$1_bls12381_PublicKeyWithPoP'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_bls12381_PublicKeyWithPoP'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_bls12381_PublicKeyWithPoP'(): Vec ($1_bls12381_PublicKeyWithPoP) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_bls12381_PublicKeyWithPoP'() returns (v: Vec ($1_bls12381_PublicKeyWithPoP)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_bls12381_PublicKeyWithPoP'(): Vec ($1_bls12381_PublicKeyWithPoP) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), val: $1_bls12381_PublicKeyWithPoP) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), val: $1_bls12381_PublicKeyWithPoP): Vec ($1_bls12381_PublicKeyWithPoP) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) returns (e: $1_bls12381_PublicKeyWithPoP, m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + var v: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), other: Vec ($1_bls12381_PublicKeyWithPoP)) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), other: Vec ($1_bls12381_PublicKeyWithPoP)) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), new_len: int) returns (v: (Vec ($1_bls12381_PublicKeyWithPoP)), m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), new_len: int) returns (v: (Vec ($1_bls12381_PublicKeyWithPoP)), m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), left: int, right: int) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + var left_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var mid_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var right_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var v: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), rot: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + var v: Vec ($1_bls12381_PublicKeyWithPoP); + var len: int; + var left_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var right_vec: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + var left_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var mid_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var right_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var mid_left_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var mid_right_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var v: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), i: int, e: $1_bls12381_PublicKeyWithPoP) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) { + var left_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var right_vec: Vec ($1_bls12381_PublicKeyWithPoP); + var v: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), i: int) returns (dst: $1_bls12381_PublicKeyWithPoP) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), i: int): $1_bls12381_PublicKeyWithPoP { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), index: int) +returns (dst: $Mutation ($1_bls12381_PublicKeyWithPoP), m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) +{ + var v: Vec ($1_bls12381_PublicKeyWithPoP); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), i: int): $1_bls12381_PublicKeyWithPoP { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), i: int, j: int) returns (m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) +{ + var v: Vec ($1_bls12381_PublicKeyWithPoP); + 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_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), i: int, j: int): Vec ($1_bls12381_PublicKeyWithPoP) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), i: int) returns (e: $1_bls12381_PublicKeyWithPoP, m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) +{ + var v: Vec ($1_bls12381_PublicKeyWithPoP); + + 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_bls12381_PublicKeyWithPoP'(m: $Mutation (Vec ($1_bls12381_PublicKeyWithPoP)), i: int) returns (e: $1_bls12381_PublicKeyWithPoP, m': $Mutation (Vec ($1_bls12381_PublicKeyWithPoP))) +{ + var len: int; + var v: Vec ($1_bls12381_PublicKeyWithPoP); + + 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_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), e: $1_bls12381_PublicKeyWithPoP) returns (res: bool) { + res := $ContainsVec'$1_bls12381_PublicKeyWithPoP'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_bls12381_PublicKeyWithPoP'(v: Vec ($1_bls12381_PublicKeyWithPoP), e: $1_bls12381_PublicKeyWithPoP) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_bls12381_PublicKeyWithPoP'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_bls12381_Signature` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_bls12381_Signature''(v1: Vec ($1_bls12381_Signature), v2: Vec ($1_bls12381_Signature)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_bls12381_Signature'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_bls12381_Signature''(v: Vec ($1_bls12381_Signature), prefix: Vec ($1_bls12381_Signature)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_bls12381_Signature'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_bls12381_Signature''(v: Vec ($1_bls12381_Signature), suffix: Vec ($1_bls12381_Signature)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_bls12381_Signature'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_bls12381_Signature''(v: Vec ($1_bls12381_Signature)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_bls12381_Signature'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), e: $1_bls12381_Signature): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_Signature'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), e: $1_bls12381_Signature): int; +axiom (forall v: Vec ($1_bls12381_Signature), e: $1_bls12381_Signature:: {$IndexOfVec'$1_bls12381_Signature'(v, e)} + (var i := $IndexOfVec'$1_bls12381_Signature'(v, e); + if (!$ContainsVec'$1_bls12381_Signature'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_bls12381_Signature'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_bls12381_Signature'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_bls12381_Signature'(): Vec ($1_bls12381_Signature) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_bls12381_Signature'() returns (v: Vec ($1_bls12381_Signature)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_bls12381_Signature'(): Vec ($1_bls12381_Signature) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), val: $1_bls12381_Signature) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), val: $1_bls12381_Signature): Vec ($1_bls12381_Signature) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature))) returns (e: $1_bls12381_Signature, m': $Mutation (Vec ($1_bls12381_Signature))) { + var v: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), other: Vec ($1_bls12381_Signature)) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature))) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), other: Vec ($1_bls12381_Signature)) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), new_len: int) returns (v: (Vec ($1_bls12381_Signature)), m': $Mutation (Vec ($1_bls12381_Signature))) { + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), new_len: int) returns (v: (Vec ($1_bls12381_Signature)), m': $Mutation (Vec ($1_bls12381_Signature))) { + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), left: int, right: int) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + var left_vec: Vec ($1_bls12381_Signature); + var mid_vec: Vec ($1_bls12381_Signature); + var right_vec: Vec ($1_bls12381_Signature); + var v: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), rot: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_Signature))) { + var v: Vec ($1_bls12381_Signature); + var len: int; + var left_vec: Vec ($1_bls12381_Signature); + var right_vec: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_bls12381_Signature))) { + var left_vec: Vec ($1_bls12381_Signature); + var mid_vec: Vec ($1_bls12381_Signature); + var right_vec: Vec ($1_bls12381_Signature); + var mid_left_vec: Vec ($1_bls12381_Signature); + var mid_right_vec: Vec ($1_bls12381_Signature); + var v: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), i: int, e: $1_bls12381_Signature) returns (m': $Mutation (Vec ($1_bls12381_Signature))) { + var left_vec: Vec ($1_bls12381_Signature); + var right_vec: Vec ($1_bls12381_Signature); + var v: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(v: Vec ($1_bls12381_Signature)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), i: int) returns (dst: $1_bls12381_Signature) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), i: int): $1_bls12381_Signature { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), index: int) +returns (dst: $Mutation ($1_bls12381_Signature), m': $Mutation (Vec ($1_bls12381_Signature))) +{ + var v: Vec ($1_bls12381_Signature); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), i: int): $1_bls12381_Signature { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), i: int, j: int) returns (m': $Mutation (Vec ($1_bls12381_Signature))) +{ + var v: Vec ($1_bls12381_Signature); + 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_bls12381_Signature'(v: Vec ($1_bls12381_Signature), i: int, j: int): Vec ($1_bls12381_Signature) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), i: int) returns (e: $1_bls12381_Signature, m': $Mutation (Vec ($1_bls12381_Signature))) +{ + var v: Vec ($1_bls12381_Signature); + + 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_bls12381_Signature'(m: $Mutation (Vec ($1_bls12381_Signature)), i: int) returns (e: $1_bls12381_Signature, m': $Mutation (Vec ($1_bls12381_Signature))) +{ + var len: int; + var v: Vec ($1_bls12381_Signature); + + 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_bls12381_Signature'(v: Vec ($1_bls12381_Signature), e: $1_bls12381_Signature) returns (res: bool) { + res := $ContainsVec'$1_bls12381_Signature'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_bls12381_Signature'(v: Vec ($1_bls12381_Signature), e: $1_bls12381_Signature) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_bls12381_Signature'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_collection_Collection` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_collection_Collection''(v1: Vec ($1_collection_Collection), v2: Vec ($1_collection_Collection)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_collection_Collection'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_collection_Collection''(v: Vec ($1_collection_Collection), prefix: Vec ($1_collection_Collection)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_collection_Collection'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_collection_Collection''(v: Vec ($1_collection_Collection), suffix: Vec ($1_collection_Collection)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_collection_Collection'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_collection_Collection''(v: Vec ($1_collection_Collection)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_collection_Collection'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_collection_Collection'(v: Vec ($1_collection_Collection), e: $1_collection_Collection): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_Collection'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_collection_Collection'(v: Vec ($1_collection_Collection), e: $1_collection_Collection): int; +axiom (forall v: Vec ($1_collection_Collection), e: $1_collection_Collection:: {$IndexOfVec'$1_collection_Collection'(v, e)} + (var i := $IndexOfVec'$1_collection_Collection'(v, e); + if (!$ContainsVec'$1_collection_Collection'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_Collection'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_collection_Collection'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_collection_Collection'(v: Vec ($1_collection_Collection)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_collection_Collection'(): Vec ($1_collection_Collection) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_collection_Collection'() returns (v: Vec ($1_collection_Collection)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_collection_Collection'(): Vec ($1_collection_Collection) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_collection_Collection'(v: Vec ($1_collection_Collection)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), val: $1_collection_Collection) returns (m': $Mutation (Vec ($1_collection_Collection))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_collection_Collection'(v: Vec ($1_collection_Collection), val: $1_collection_Collection): Vec ($1_collection_Collection) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection))) returns (e: $1_collection_Collection, m': $Mutation (Vec ($1_collection_Collection))) { + var v: Vec ($1_collection_Collection); + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), other: Vec ($1_collection_Collection)) returns (m': $Mutation (Vec ($1_collection_Collection))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection))) returns (m': $Mutation (Vec ($1_collection_Collection))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), other: Vec ($1_collection_Collection)) returns (m': $Mutation (Vec ($1_collection_Collection))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), new_len: int) returns (v: (Vec ($1_collection_Collection)), m': $Mutation (Vec ($1_collection_Collection))) { + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), new_len: int) returns (v: (Vec ($1_collection_Collection)), m': $Mutation (Vec ($1_collection_Collection))) { + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), left: int, right: int) returns (m': $Mutation (Vec ($1_collection_Collection))) { + var left_vec: Vec ($1_collection_Collection); + var mid_vec: Vec ($1_collection_Collection); + var right_vec: Vec ($1_collection_Collection); + var v: Vec ($1_collection_Collection); + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), rot: int) returns (n: int, m': $Mutation (Vec ($1_collection_Collection))) { + var v: Vec ($1_collection_Collection); + var len: int; + var left_vec: Vec ($1_collection_Collection); + var right_vec: Vec ($1_collection_Collection); + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_collection_Collection))) { + var left_vec: Vec ($1_collection_Collection); + var mid_vec: Vec ($1_collection_Collection); + var right_vec: Vec ($1_collection_Collection); + var mid_left_vec: Vec ($1_collection_Collection); + var mid_right_vec: Vec ($1_collection_Collection); + var v: Vec ($1_collection_Collection); + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), i: int, e: $1_collection_Collection) returns (m': $Mutation (Vec ($1_collection_Collection))) { + var left_vec: Vec ($1_collection_Collection); + var right_vec: Vec ($1_collection_Collection); + var v: Vec ($1_collection_Collection); + 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_collection_Collection'(v: Vec ($1_collection_Collection)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_collection_Collection'(v: Vec ($1_collection_Collection)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_collection_Collection'(v: Vec ($1_collection_Collection), i: int) returns (dst: $1_collection_Collection) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_collection_Collection'(v: Vec ($1_collection_Collection), i: int): $1_collection_Collection { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), index: int) +returns (dst: $Mutation ($1_collection_Collection), m': $Mutation (Vec ($1_collection_Collection))) +{ + var v: Vec ($1_collection_Collection); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_collection_Collection'(v: Vec ($1_collection_Collection), i: int): $1_collection_Collection { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_collection_Collection'(v: Vec ($1_collection_Collection)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), i: int, j: int) returns (m': $Mutation (Vec ($1_collection_Collection))) +{ + var v: Vec ($1_collection_Collection); + 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_collection_Collection'(v: Vec ($1_collection_Collection), i: int, j: int): Vec ($1_collection_Collection) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), i: int) returns (e: $1_collection_Collection, m': $Mutation (Vec ($1_collection_Collection))) +{ + var v: Vec ($1_collection_Collection); + + 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_collection_Collection'(m: $Mutation (Vec ($1_collection_Collection)), i: int) returns (e: $1_collection_Collection, m': $Mutation (Vec ($1_collection_Collection))) +{ + var len: int; + var v: Vec ($1_collection_Collection); + + 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_collection_Collection'(v: Vec ($1_collection_Collection), e: $1_collection_Collection) returns (res: bool) { + res := $ContainsVec'$1_collection_Collection'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_collection_Collection'(v: Vec ($1_collection_Collection), e: $1_collection_Collection) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_collection_Collection'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_collection_ConcurrentSupply` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_collection_ConcurrentSupply''(v1: Vec ($1_collection_ConcurrentSupply), v2: Vec ($1_collection_ConcurrentSupply)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_collection_ConcurrentSupply''(v: Vec ($1_collection_ConcurrentSupply), prefix: Vec ($1_collection_ConcurrentSupply)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_collection_ConcurrentSupply''(v: Vec ($1_collection_ConcurrentSupply), suffix: Vec ($1_collection_ConcurrentSupply)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_collection_ConcurrentSupply''(v: Vec ($1_collection_ConcurrentSupply)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_collection_ConcurrentSupply'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), e: $1_collection_ConcurrentSupply): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), e: $1_collection_ConcurrentSupply): int; +axiom (forall v: Vec ($1_collection_ConcurrentSupply), e: $1_collection_ConcurrentSupply:: {$IndexOfVec'$1_collection_ConcurrentSupply'(v, e)} + (var i := $IndexOfVec'$1_collection_ConcurrentSupply'(v, e); + if (!$ContainsVec'$1_collection_ConcurrentSupply'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_collection_ConcurrentSupply'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_collection_ConcurrentSupply'(): Vec ($1_collection_ConcurrentSupply) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_collection_ConcurrentSupply'() returns (v: Vec ($1_collection_ConcurrentSupply)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_collection_ConcurrentSupply'(): Vec ($1_collection_ConcurrentSupply) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), val: $1_collection_ConcurrentSupply) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), val: $1_collection_ConcurrentSupply): Vec ($1_collection_ConcurrentSupply) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply))) returns (e: $1_collection_ConcurrentSupply, m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + var v: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), other: Vec ($1_collection_ConcurrentSupply)) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply))) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), other: Vec ($1_collection_ConcurrentSupply)) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), new_len: int) returns (v: (Vec ($1_collection_ConcurrentSupply)), m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), new_len: int) returns (v: (Vec ($1_collection_ConcurrentSupply)), m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), left: int, right: int) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + var left_vec: Vec ($1_collection_ConcurrentSupply); + var mid_vec: Vec ($1_collection_ConcurrentSupply); + var right_vec: Vec ($1_collection_ConcurrentSupply); + var v: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), rot: int) returns (n: int, m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + var v: Vec ($1_collection_ConcurrentSupply); + var len: int; + var left_vec: Vec ($1_collection_ConcurrentSupply); + var right_vec: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + var left_vec: Vec ($1_collection_ConcurrentSupply); + var mid_vec: Vec ($1_collection_ConcurrentSupply); + var right_vec: Vec ($1_collection_ConcurrentSupply); + var mid_left_vec: Vec ($1_collection_ConcurrentSupply); + var mid_right_vec: Vec ($1_collection_ConcurrentSupply); + var v: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), i: int, e: $1_collection_ConcurrentSupply) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) { + var left_vec: Vec ($1_collection_ConcurrentSupply); + var right_vec: Vec ($1_collection_ConcurrentSupply); + var v: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), i: int) returns (dst: $1_collection_ConcurrentSupply) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), i: int): $1_collection_ConcurrentSupply { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), index: int) +returns (dst: $Mutation ($1_collection_ConcurrentSupply), m': $Mutation (Vec ($1_collection_ConcurrentSupply))) +{ + var v: Vec ($1_collection_ConcurrentSupply); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), i: int): $1_collection_ConcurrentSupply { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), i: int, j: int) returns (m': $Mutation (Vec ($1_collection_ConcurrentSupply))) +{ + var v: Vec ($1_collection_ConcurrentSupply); + 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_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), i: int, j: int): Vec ($1_collection_ConcurrentSupply) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), i: int) returns (e: $1_collection_ConcurrentSupply, m': $Mutation (Vec ($1_collection_ConcurrentSupply))) +{ + var v: Vec ($1_collection_ConcurrentSupply); + + 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_collection_ConcurrentSupply'(m: $Mutation (Vec ($1_collection_ConcurrentSupply)), i: int) returns (e: $1_collection_ConcurrentSupply, m': $Mutation (Vec ($1_collection_ConcurrentSupply))) +{ + var len: int; + var v: Vec ($1_collection_ConcurrentSupply); + + 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_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), e: $1_collection_ConcurrentSupply) returns (res: bool) { + res := $ContainsVec'$1_collection_ConcurrentSupply'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_collection_ConcurrentSupply'(v: Vec ($1_collection_ConcurrentSupply), e: $1_collection_ConcurrentSupply) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_collection_ConcurrentSupply'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_collection_FixedSupply` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_collection_FixedSupply''(v1: Vec ($1_collection_FixedSupply), v2: Vec ($1_collection_FixedSupply)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_collection_FixedSupply'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_collection_FixedSupply''(v: Vec ($1_collection_FixedSupply), prefix: Vec ($1_collection_FixedSupply)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_collection_FixedSupply'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_collection_FixedSupply''(v: Vec ($1_collection_FixedSupply), suffix: Vec ($1_collection_FixedSupply)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_collection_FixedSupply'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_collection_FixedSupply''(v: Vec ($1_collection_FixedSupply)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_collection_FixedSupply'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), e: $1_collection_FixedSupply): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_FixedSupply'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), e: $1_collection_FixedSupply): int; +axiom (forall v: Vec ($1_collection_FixedSupply), e: $1_collection_FixedSupply:: {$IndexOfVec'$1_collection_FixedSupply'(v, e)} + (var i := $IndexOfVec'$1_collection_FixedSupply'(v, e); + if (!$ContainsVec'$1_collection_FixedSupply'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_FixedSupply'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_collection_FixedSupply'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_collection_FixedSupply'(): Vec ($1_collection_FixedSupply) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_collection_FixedSupply'() returns (v: Vec ($1_collection_FixedSupply)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_collection_FixedSupply'(): Vec ($1_collection_FixedSupply) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), val: $1_collection_FixedSupply) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), val: $1_collection_FixedSupply): Vec ($1_collection_FixedSupply) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply))) returns (e: $1_collection_FixedSupply, m': $Mutation (Vec ($1_collection_FixedSupply))) { + var v: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), other: Vec ($1_collection_FixedSupply)) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply))) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), other: Vec ($1_collection_FixedSupply)) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), new_len: int) returns (v: (Vec ($1_collection_FixedSupply)), m': $Mutation (Vec ($1_collection_FixedSupply))) { + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), new_len: int) returns (v: (Vec ($1_collection_FixedSupply)), m': $Mutation (Vec ($1_collection_FixedSupply))) { + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), left: int, right: int) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + var left_vec: Vec ($1_collection_FixedSupply); + var mid_vec: Vec ($1_collection_FixedSupply); + var right_vec: Vec ($1_collection_FixedSupply); + var v: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), rot: int) returns (n: int, m': $Mutation (Vec ($1_collection_FixedSupply))) { + var v: Vec ($1_collection_FixedSupply); + var len: int; + var left_vec: Vec ($1_collection_FixedSupply); + var right_vec: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_collection_FixedSupply))) { + var left_vec: Vec ($1_collection_FixedSupply); + var mid_vec: Vec ($1_collection_FixedSupply); + var right_vec: Vec ($1_collection_FixedSupply); + var mid_left_vec: Vec ($1_collection_FixedSupply); + var mid_right_vec: Vec ($1_collection_FixedSupply); + var v: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), i: int, e: $1_collection_FixedSupply) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) { + var left_vec: Vec ($1_collection_FixedSupply); + var right_vec: Vec ($1_collection_FixedSupply); + var v: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), i: int) returns (dst: $1_collection_FixedSupply) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), i: int): $1_collection_FixedSupply { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), index: int) +returns (dst: $Mutation ($1_collection_FixedSupply), m': $Mutation (Vec ($1_collection_FixedSupply))) +{ + var v: Vec ($1_collection_FixedSupply); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), i: int): $1_collection_FixedSupply { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), i: int, j: int) returns (m': $Mutation (Vec ($1_collection_FixedSupply))) +{ + var v: Vec ($1_collection_FixedSupply); + 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_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), i: int, j: int): Vec ($1_collection_FixedSupply) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), i: int) returns (e: $1_collection_FixedSupply, m': $Mutation (Vec ($1_collection_FixedSupply))) +{ + var v: Vec ($1_collection_FixedSupply); + + 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_collection_FixedSupply'(m: $Mutation (Vec ($1_collection_FixedSupply)), i: int) returns (e: $1_collection_FixedSupply, m': $Mutation (Vec ($1_collection_FixedSupply))) +{ + var len: int; + var v: Vec ($1_collection_FixedSupply); + + 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_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), e: $1_collection_FixedSupply) returns (res: bool) { + res := $ContainsVec'$1_collection_FixedSupply'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_collection_FixedSupply'(v: Vec ($1_collection_FixedSupply), e: $1_collection_FixedSupply) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_collection_FixedSupply'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_collection_MutatorRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_collection_MutatorRef''(v1: Vec ($1_collection_MutatorRef), v2: Vec ($1_collection_MutatorRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_collection_MutatorRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_collection_MutatorRef''(v: Vec ($1_collection_MutatorRef), prefix: Vec ($1_collection_MutatorRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_collection_MutatorRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_collection_MutatorRef''(v: Vec ($1_collection_MutatorRef), suffix: Vec ($1_collection_MutatorRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_collection_MutatorRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_collection_MutatorRef''(v: Vec ($1_collection_MutatorRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_collection_MutatorRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), e: $1_collection_MutatorRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_MutatorRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), e: $1_collection_MutatorRef): int; +axiom (forall v: Vec ($1_collection_MutatorRef), e: $1_collection_MutatorRef:: {$IndexOfVec'$1_collection_MutatorRef'(v, e)} + (var i := $IndexOfVec'$1_collection_MutatorRef'(v, e); + if (!$ContainsVec'$1_collection_MutatorRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_collection_MutatorRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_collection_MutatorRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_collection_MutatorRef'(): Vec ($1_collection_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_collection_MutatorRef'() returns (v: Vec ($1_collection_MutatorRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_collection_MutatorRef'(): Vec ($1_collection_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), val: $1_collection_MutatorRef) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), val: $1_collection_MutatorRef): Vec ($1_collection_MutatorRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef))) returns (e: $1_collection_MutatorRef, m': $Mutation (Vec ($1_collection_MutatorRef))) { + var v: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), other: Vec ($1_collection_MutatorRef)) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef))) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), other: Vec ($1_collection_MutatorRef)) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), new_len: int) returns (v: (Vec ($1_collection_MutatorRef)), m': $Mutation (Vec ($1_collection_MutatorRef))) { + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), new_len: int) returns (v: (Vec ($1_collection_MutatorRef)), m': $Mutation (Vec ($1_collection_MutatorRef))) { + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + var left_vec: Vec ($1_collection_MutatorRef); + var mid_vec: Vec ($1_collection_MutatorRef); + var right_vec: Vec ($1_collection_MutatorRef); + var v: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_collection_MutatorRef))) { + var v: Vec ($1_collection_MutatorRef); + var len: int; + var left_vec: Vec ($1_collection_MutatorRef); + var right_vec: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_collection_MutatorRef))) { + var left_vec: Vec ($1_collection_MutatorRef); + var mid_vec: Vec ($1_collection_MutatorRef); + var right_vec: Vec ($1_collection_MutatorRef); + var mid_left_vec: Vec ($1_collection_MutatorRef); + var mid_right_vec: Vec ($1_collection_MutatorRef); + var v: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), i: int, e: $1_collection_MutatorRef) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) { + var left_vec: Vec ($1_collection_MutatorRef); + var right_vec: Vec ($1_collection_MutatorRef); + var v: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), i: int) returns (dst: $1_collection_MutatorRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), i: int): $1_collection_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), index: int) +returns (dst: $Mutation ($1_collection_MutatorRef), m': $Mutation (Vec ($1_collection_MutatorRef))) +{ + var v: Vec ($1_collection_MutatorRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), i: int): $1_collection_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_collection_MutatorRef))) +{ + var v: Vec ($1_collection_MutatorRef); + 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_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), i: int, j: int): Vec ($1_collection_MutatorRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), i: int) returns (e: $1_collection_MutatorRef, m': $Mutation (Vec ($1_collection_MutatorRef))) +{ + var v: Vec ($1_collection_MutatorRef); + + 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_collection_MutatorRef'(m: $Mutation (Vec ($1_collection_MutatorRef)), i: int) returns (e: $1_collection_MutatorRef, m': $Mutation (Vec ($1_collection_MutatorRef))) +{ + var len: int; + var v: Vec ($1_collection_MutatorRef); + + 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_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), e: $1_collection_MutatorRef) returns (res: bool) { + res := $ContainsVec'$1_collection_MutatorRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_collection_MutatorRef'(v: Vec ($1_collection_MutatorRef), e: $1_collection_MutatorRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_collection_MutatorRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_crypto_algebra_Element'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_crypto_algebra_Element'#0'''(v1: Vec ($1_crypto_algebra_Element'#0'), v2: Vec ($1_crypto_algebra_Element'#0')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_crypto_algebra_Element'#0'''(v: Vec ($1_crypto_algebra_Element'#0'), prefix: Vec ($1_crypto_algebra_Element'#0')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_crypto_algebra_Element'#0'''(v: Vec ($1_crypto_algebra_Element'#0'), suffix: Vec ($1_crypto_algebra_Element'#0')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_crypto_algebra_Element'#0'''(v: Vec ($1_crypto_algebra_Element'#0')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_crypto_algebra_Element'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), e: $1_crypto_algebra_Element'#0'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), e: $1_crypto_algebra_Element'#0'): int; +axiom (forall v: Vec ($1_crypto_algebra_Element'#0'), e: $1_crypto_algebra_Element'#0':: {$IndexOfVec'$1_crypto_algebra_Element'#0''(v, e)} + (var i := $IndexOfVec'$1_crypto_algebra_Element'#0''(v, e); + if (!$ContainsVec'$1_crypto_algebra_Element'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_crypto_algebra_Element'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_crypto_algebra_Element'#0''(): Vec ($1_crypto_algebra_Element'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_crypto_algebra_Element'#0''() returns (v: Vec ($1_crypto_algebra_Element'#0')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_crypto_algebra_Element'#0''(): Vec ($1_crypto_algebra_Element'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), val: $1_crypto_algebra_Element'#0') returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), val: $1_crypto_algebra_Element'#0'): Vec ($1_crypto_algebra_Element'#0') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0'))) returns (e: $1_crypto_algebra_Element'#0', m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), other: Vec ($1_crypto_algebra_Element'#0')) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0'))) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), other: Vec ($1_crypto_algebra_Element'#0')) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), new_len: int) returns (v: (Vec ($1_crypto_algebra_Element'#0')), m': $Mutation (Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), new_len: int) returns (v: (Vec ($1_crypto_algebra_Element'#0')), m': $Mutation (Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), left: int, right: int) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#0'); + var mid_vec: Vec ($1_crypto_algebra_Element'#0'); + var right_vec: Vec ($1_crypto_algebra_Element'#0'); + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), rot: int) returns (n: int, m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + var v: Vec ($1_crypto_algebra_Element'#0'); + var len: int; + var left_vec: Vec ($1_crypto_algebra_Element'#0'); + var right_vec: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#0'); + var mid_vec: Vec ($1_crypto_algebra_Element'#0'); + var right_vec: Vec ($1_crypto_algebra_Element'#0'); + var mid_left_vec: Vec ($1_crypto_algebra_Element'#0'); + var mid_right_vec: Vec ($1_crypto_algebra_Element'#0'); + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), i: int, e: $1_crypto_algebra_Element'#0') returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#0'); + var right_vec: Vec ($1_crypto_algebra_Element'#0'); + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), i: int) returns (dst: $1_crypto_algebra_Element'#0') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), i: int): $1_crypto_algebra_Element'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), index: int) +returns (dst: $Mutation ($1_crypto_algebra_Element'#0'), m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) +{ + var v: Vec ($1_crypto_algebra_Element'#0'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), i: int): $1_crypto_algebra_Element'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), i: int, j: int) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) +{ + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), i: int, j: int): Vec ($1_crypto_algebra_Element'#0') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), i: int) returns (e: $1_crypto_algebra_Element'#0', m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) +{ + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(m: $Mutation (Vec ($1_crypto_algebra_Element'#0')), i: int) returns (e: $1_crypto_algebra_Element'#0', m': $Mutation (Vec ($1_crypto_algebra_Element'#0'))) +{ + var len: int; + var v: Vec ($1_crypto_algebra_Element'#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'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), e: $1_crypto_algebra_Element'#0') returns (res: bool) { + res := $ContainsVec'$1_crypto_algebra_Element'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_crypto_algebra_Element'#0''(v: Vec ($1_crypto_algebra_Element'#0'), e: $1_crypto_algebra_Element'#0') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_crypto_algebra_Element'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_crypto_algebra_Element'#1'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_crypto_algebra_Element'#1'''(v1: Vec ($1_crypto_algebra_Element'#1'), v2: Vec ($1_crypto_algebra_Element'#1')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_crypto_algebra_Element'#1'''(v: Vec ($1_crypto_algebra_Element'#1'), prefix: Vec ($1_crypto_algebra_Element'#1')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_crypto_algebra_Element'#1'''(v: Vec ($1_crypto_algebra_Element'#1'), suffix: Vec ($1_crypto_algebra_Element'#1')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_crypto_algebra_Element'#1'''(v: Vec ($1_crypto_algebra_Element'#1')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_crypto_algebra_Element'#1''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), e: $1_crypto_algebra_Element'#1'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), e: $1_crypto_algebra_Element'#1'): int; +axiom (forall v: Vec ($1_crypto_algebra_Element'#1'), e: $1_crypto_algebra_Element'#1':: {$IndexOfVec'$1_crypto_algebra_Element'#1''(v, e)} + (var i := $IndexOfVec'$1_crypto_algebra_Element'#1''(v, e); + if (!$ContainsVec'$1_crypto_algebra_Element'#1''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_crypto_algebra_Element'#1''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_crypto_algebra_Element'#1''(): Vec ($1_crypto_algebra_Element'#1') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_crypto_algebra_Element'#1''() returns (v: Vec ($1_crypto_algebra_Element'#1')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_crypto_algebra_Element'#1''(): Vec ($1_crypto_algebra_Element'#1') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), val: $1_crypto_algebra_Element'#1') returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), val: $1_crypto_algebra_Element'#1'): Vec ($1_crypto_algebra_Element'#1') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1'))) returns (e: $1_crypto_algebra_Element'#1', m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + var v: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), other: Vec ($1_crypto_algebra_Element'#1')) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1'))) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), other: Vec ($1_crypto_algebra_Element'#1')) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), new_len: int) returns (v: (Vec ($1_crypto_algebra_Element'#1')), m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), new_len: int) returns (v: (Vec ($1_crypto_algebra_Element'#1')), m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), left: int, right: int) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#1'); + var mid_vec: Vec ($1_crypto_algebra_Element'#1'); + var right_vec: Vec ($1_crypto_algebra_Element'#1'); + var v: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), rot: int) returns (n: int, m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + var v: Vec ($1_crypto_algebra_Element'#1'); + var len: int; + var left_vec: Vec ($1_crypto_algebra_Element'#1'); + var right_vec: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#1'); + var mid_vec: Vec ($1_crypto_algebra_Element'#1'); + var right_vec: Vec ($1_crypto_algebra_Element'#1'); + var mid_left_vec: Vec ($1_crypto_algebra_Element'#1'); + var mid_right_vec: Vec ($1_crypto_algebra_Element'#1'); + var v: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), i: int, e: $1_crypto_algebra_Element'#1') returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) { + var left_vec: Vec ($1_crypto_algebra_Element'#1'); + var right_vec: Vec ($1_crypto_algebra_Element'#1'); + var v: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), i: int) returns (dst: $1_crypto_algebra_Element'#1') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), i: int): $1_crypto_algebra_Element'#1' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), index: int) +returns (dst: $Mutation ($1_crypto_algebra_Element'#1'), m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) +{ + var v: Vec ($1_crypto_algebra_Element'#1'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), i: int): $1_crypto_algebra_Element'#1' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), i: int, j: int) returns (m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) +{ + var v: Vec ($1_crypto_algebra_Element'#1'); + 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_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), i: int, j: int): Vec ($1_crypto_algebra_Element'#1') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), i: int) returns (e: $1_crypto_algebra_Element'#1', m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) +{ + var v: Vec ($1_crypto_algebra_Element'#1'); + + 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_crypto_algebra_Element'#1''(m: $Mutation (Vec ($1_crypto_algebra_Element'#1')), i: int) returns (e: $1_crypto_algebra_Element'#1', m': $Mutation (Vec ($1_crypto_algebra_Element'#1'))) +{ + var len: int; + var v: Vec ($1_crypto_algebra_Element'#1'); + + 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_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), e: $1_crypto_algebra_Element'#1') returns (res: bool) { + res := $ContainsVec'$1_crypto_algebra_Element'#1''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_crypto_algebra_Element'#1''(v: Vec ($1_crypto_algebra_Element'#1'), e: $1_crypto_algebra_Element'#1') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_crypto_algebra_Element'#1''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_dao_DaoConfig'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_dao_DaoConfig'#0'''(v1: Vec ($1_dao_DaoConfig'#0'), v2: Vec ($1_dao_DaoConfig'#0')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_dao_DaoConfig'#0'''(v: Vec ($1_dao_DaoConfig'#0'), prefix: Vec ($1_dao_DaoConfig'#0')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_dao_DaoConfig'#0'''(v: Vec ($1_dao_DaoConfig'#0'), suffix: Vec ($1_dao_DaoConfig'#0')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_dao_DaoConfig'#0'''(v: Vec ($1_dao_DaoConfig'#0')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_dao_DaoConfig'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), e: $1_dao_DaoConfig'#0'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), e: $1_dao_DaoConfig'#0'): int; +axiom (forall v: Vec ($1_dao_DaoConfig'#0'), e: $1_dao_DaoConfig'#0':: {$IndexOfVec'$1_dao_DaoConfig'#0''(v, e)} + (var i := $IndexOfVec'$1_dao_DaoConfig'#0''(v, e); + if (!$ContainsVec'$1_dao_DaoConfig'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_dao_DaoConfig'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_dao_DaoConfig'#0''(): Vec ($1_dao_DaoConfig'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_dao_DaoConfig'#0''() returns (v: Vec ($1_dao_DaoConfig'#0')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_dao_DaoConfig'#0''(): Vec ($1_dao_DaoConfig'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), val: $1_dao_DaoConfig'#0') returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), val: $1_dao_DaoConfig'#0'): Vec ($1_dao_DaoConfig'#0') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0'))) returns (e: $1_dao_DaoConfig'#0', m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), other: Vec ($1_dao_DaoConfig'#0')) returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0'))) returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), other: Vec ($1_dao_DaoConfig'#0')) returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), new_len: int) returns (v: (Vec ($1_dao_DaoConfig'#0')), m': $Mutation (Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), new_len: int) returns (v: (Vec ($1_dao_DaoConfig'#0')), m': $Mutation (Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), left: int, right: int) returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + var left_vec: Vec ($1_dao_DaoConfig'#0'); + var mid_vec: Vec ($1_dao_DaoConfig'#0'); + var right_vec: Vec ($1_dao_DaoConfig'#0'); + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), rot: int) returns (n: int, m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + var v: Vec ($1_dao_DaoConfig'#0'); + var len: int; + var left_vec: Vec ($1_dao_DaoConfig'#0'); + var right_vec: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + var left_vec: Vec ($1_dao_DaoConfig'#0'); + var mid_vec: Vec ($1_dao_DaoConfig'#0'); + var right_vec: Vec ($1_dao_DaoConfig'#0'); + var mid_left_vec: Vec ($1_dao_DaoConfig'#0'); + var mid_right_vec: Vec ($1_dao_DaoConfig'#0'); + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), i: int, e: $1_dao_DaoConfig'#0') returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) { + var left_vec: Vec ($1_dao_DaoConfig'#0'); + var right_vec: Vec ($1_dao_DaoConfig'#0'); + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), i: int) returns (dst: $1_dao_DaoConfig'#0') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), i: int): $1_dao_DaoConfig'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), index: int) +returns (dst: $Mutation ($1_dao_DaoConfig'#0'), m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) +{ + var v: Vec ($1_dao_DaoConfig'#0'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), i: int): $1_dao_DaoConfig'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), i: int, j: int) returns (m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) +{ + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), i: int, j: int): Vec ($1_dao_DaoConfig'#0') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), i: int) returns (e: $1_dao_DaoConfig'#0', m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) +{ + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(m: $Mutation (Vec ($1_dao_DaoConfig'#0')), i: int) returns (e: $1_dao_DaoConfig'#0', m': $Mutation (Vec ($1_dao_DaoConfig'#0'))) +{ + var len: int; + var v: Vec ($1_dao_DaoConfig'#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'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), e: $1_dao_DaoConfig'#0') returns (res: bool) { + res := $ContainsVec'$1_dao_DaoConfig'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_dao_DaoConfig'#0''(v: Vec ($1_dao_DaoConfig'#0'), e: $1_dao_DaoConfig'#0') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_dao_DaoConfig'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ed25519_ValidatedPublicKey` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ed25519_ValidatedPublicKey''(v1: Vec ($1_ed25519_ValidatedPublicKey), v2: Vec ($1_ed25519_ValidatedPublicKey)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ed25519_ValidatedPublicKey''(v: Vec ($1_ed25519_ValidatedPublicKey), prefix: Vec ($1_ed25519_ValidatedPublicKey)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ed25519_ValidatedPublicKey''(v: Vec ($1_ed25519_ValidatedPublicKey), suffix: Vec ($1_ed25519_ValidatedPublicKey)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ed25519_ValidatedPublicKey''(v: Vec ($1_ed25519_ValidatedPublicKey)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ed25519_ValidatedPublicKey'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), e: $1_ed25519_ValidatedPublicKey): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), e: $1_ed25519_ValidatedPublicKey): int; +axiom (forall v: Vec ($1_ed25519_ValidatedPublicKey), e: $1_ed25519_ValidatedPublicKey:: {$IndexOfVec'$1_ed25519_ValidatedPublicKey'(v, e)} + (var i := $IndexOfVec'$1_ed25519_ValidatedPublicKey'(v, e); + if (!$ContainsVec'$1_ed25519_ValidatedPublicKey'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ed25519_ValidatedPublicKey'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ed25519_ValidatedPublicKey'(): Vec ($1_ed25519_ValidatedPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ed25519_ValidatedPublicKey'() returns (v: Vec ($1_ed25519_ValidatedPublicKey)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ed25519_ValidatedPublicKey'(): Vec ($1_ed25519_ValidatedPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), val: $1_ed25519_ValidatedPublicKey) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), val: $1_ed25519_ValidatedPublicKey): Vec ($1_ed25519_ValidatedPublicKey) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) returns (e: $1_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + var v: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), other: Vec ($1_ed25519_ValidatedPublicKey)) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), other: Vec ($1_ed25519_ValidatedPublicKey)) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), new_len: int) returns (v: (Vec ($1_ed25519_ValidatedPublicKey)), m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), new_len: int) returns (v: (Vec ($1_ed25519_ValidatedPublicKey)), m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), left: int, right: int) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_ed25519_ValidatedPublicKey); + var mid_vec: Vec ($1_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_ed25519_ValidatedPublicKey); + var v: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + var v: Vec ($1_ed25519_ValidatedPublicKey); + var len: int; + var left_vec: Vec ($1_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_ed25519_ValidatedPublicKey); + var mid_vec: Vec ($1_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_ed25519_ValidatedPublicKey); + var mid_left_vec: Vec ($1_ed25519_ValidatedPublicKey); + var mid_right_vec: Vec ($1_ed25519_ValidatedPublicKey); + var v: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), i: int, e: $1_ed25519_ValidatedPublicKey) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_ed25519_ValidatedPublicKey); + var v: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), i: int) returns (dst: $1_ed25519_ValidatedPublicKey) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), i: int): $1_ed25519_ValidatedPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), index: int) +returns (dst: $Mutation ($1_ed25519_ValidatedPublicKey), m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_ed25519_ValidatedPublicKey); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), i: int): $1_ed25519_ValidatedPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), i: int, j: int) returns (m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_ed25519_ValidatedPublicKey); + 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_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), i: int, j: int): Vec ($1_ed25519_ValidatedPublicKey) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), i: int) returns (e: $1_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_ed25519_ValidatedPublicKey); + + 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_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_ed25519_ValidatedPublicKey)), i: int) returns (e: $1_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_ed25519_ValidatedPublicKey))) +{ + var len: int; + var v: Vec ($1_ed25519_ValidatedPublicKey); + + 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_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), e: $1_ed25519_ValidatedPublicKey) returns (res: bool) { + res := $ContainsVec'$1_ed25519_ValidatedPublicKey'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ed25519_ValidatedPublicKey'(v: Vec ($1_ed25519_ValidatedPublicKey), e: $1_ed25519_ValidatedPublicKey) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ed25519_ValidatedPublicKey'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_function_info_FunctionInfo` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_function_info_FunctionInfo''(v1: Vec ($1_function_info_FunctionInfo), v2: Vec ($1_function_info_FunctionInfo)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_function_info_FunctionInfo'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_function_info_FunctionInfo''(v: Vec ($1_function_info_FunctionInfo), prefix: Vec ($1_function_info_FunctionInfo)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_function_info_FunctionInfo'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_function_info_FunctionInfo''(v: Vec ($1_function_info_FunctionInfo), suffix: Vec ($1_function_info_FunctionInfo)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_function_info_FunctionInfo'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_function_info_FunctionInfo''(v: Vec ($1_function_info_FunctionInfo)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_function_info_FunctionInfo'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), e: $1_function_info_FunctionInfo): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_function_info_FunctionInfo'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), e: $1_function_info_FunctionInfo): int; +axiom (forall v: Vec ($1_function_info_FunctionInfo), e: $1_function_info_FunctionInfo:: {$IndexOfVec'$1_function_info_FunctionInfo'(v, e)} + (var i := $IndexOfVec'$1_function_info_FunctionInfo'(v, e); + if (!$ContainsVec'$1_function_info_FunctionInfo'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_function_info_FunctionInfo'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_function_info_FunctionInfo'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_function_info_FunctionInfo'(): Vec ($1_function_info_FunctionInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_function_info_FunctionInfo'() returns (v: Vec ($1_function_info_FunctionInfo)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_function_info_FunctionInfo'(): Vec ($1_function_info_FunctionInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), val: $1_function_info_FunctionInfo) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), val: $1_function_info_FunctionInfo): Vec ($1_function_info_FunctionInfo) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo))) returns (e: $1_function_info_FunctionInfo, m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + var v: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), other: Vec ($1_function_info_FunctionInfo)) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo))) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), other: Vec ($1_function_info_FunctionInfo)) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), new_len: int) returns (v: (Vec ($1_function_info_FunctionInfo)), m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), new_len: int) returns (v: (Vec ($1_function_info_FunctionInfo)), m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), left: int, right: int) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + var left_vec: Vec ($1_function_info_FunctionInfo); + var mid_vec: Vec ($1_function_info_FunctionInfo); + var right_vec: Vec ($1_function_info_FunctionInfo); + var v: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), rot: int) returns (n: int, m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + var v: Vec ($1_function_info_FunctionInfo); + var len: int; + var left_vec: Vec ($1_function_info_FunctionInfo); + var right_vec: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + var left_vec: Vec ($1_function_info_FunctionInfo); + var mid_vec: Vec ($1_function_info_FunctionInfo); + var right_vec: Vec ($1_function_info_FunctionInfo); + var mid_left_vec: Vec ($1_function_info_FunctionInfo); + var mid_right_vec: Vec ($1_function_info_FunctionInfo); + var v: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), i: int, e: $1_function_info_FunctionInfo) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) { + var left_vec: Vec ($1_function_info_FunctionInfo); + var right_vec: Vec ($1_function_info_FunctionInfo); + var v: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), i: int) returns (dst: $1_function_info_FunctionInfo) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), i: int): $1_function_info_FunctionInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), index: int) +returns (dst: $Mutation ($1_function_info_FunctionInfo), m': $Mutation (Vec ($1_function_info_FunctionInfo))) +{ + var v: Vec ($1_function_info_FunctionInfo); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), i: int): $1_function_info_FunctionInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), i: int, j: int) returns (m': $Mutation (Vec ($1_function_info_FunctionInfo))) +{ + var v: Vec ($1_function_info_FunctionInfo); + 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_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), i: int, j: int): Vec ($1_function_info_FunctionInfo) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), i: int) returns (e: $1_function_info_FunctionInfo, m': $Mutation (Vec ($1_function_info_FunctionInfo))) +{ + var v: Vec ($1_function_info_FunctionInfo); + + 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_function_info_FunctionInfo'(m: $Mutation (Vec ($1_function_info_FunctionInfo)), i: int) returns (e: $1_function_info_FunctionInfo, m': $Mutation (Vec ($1_function_info_FunctionInfo))) +{ + var len: int; + var v: Vec ($1_function_info_FunctionInfo); + + 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_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), e: $1_function_info_FunctionInfo) returns (res: bool) { + res := $ContainsVec'$1_function_info_FunctionInfo'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_function_info_FunctionInfo'(v: Vec ($1_function_info_FunctionInfo), e: $1_function_info_FunctionInfo) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_function_info_FunctionInfo'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_fungible_asset_BurnRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_fungible_asset_BurnRef''(v1: Vec ($1_fungible_asset_BurnRef), v2: Vec ($1_fungible_asset_BurnRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_fungible_asset_BurnRef''(v: Vec ($1_fungible_asset_BurnRef), prefix: Vec ($1_fungible_asset_BurnRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_fungible_asset_BurnRef''(v: Vec ($1_fungible_asset_BurnRef), suffix: Vec ($1_fungible_asset_BurnRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_fungible_asset_BurnRef''(v: Vec ($1_fungible_asset_BurnRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fungible_asset_BurnRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), e: $1_fungible_asset_BurnRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), e: $1_fungible_asset_BurnRef): int; +axiom (forall v: Vec ($1_fungible_asset_BurnRef), e: $1_fungible_asset_BurnRef:: {$IndexOfVec'$1_fungible_asset_BurnRef'(v, e)} + (var i := $IndexOfVec'$1_fungible_asset_BurnRef'(v, e); + if (!$ContainsVec'$1_fungible_asset_BurnRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fungible_asset_BurnRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_fungible_asset_BurnRef'(): Vec ($1_fungible_asset_BurnRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_fungible_asset_BurnRef'() returns (v: Vec ($1_fungible_asset_BurnRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_fungible_asset_BurnRef'(): Vec ($1_fungible_asset_BurnRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), val: $1_fungible_asset_BurnRef) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), val: $1_fungible_asset_BurnRef): Vec ($1_fungible_asset_BurnRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef))) returns (e: $1_fungible_asset_BurnRef, m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + var v: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), other: Vec ($1_fungible_asset_BurnRef)) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef))) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), other: Vec ($1_fungible_asset_BurnRef)) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_BurnRef)), m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_BurnRef)), m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + var left_vec: Vec ($1_fungible_asset_BurnRef); + var mid_vec: Vec ($1_fungible_asset_BurnRef); + var right_vec: Vec ($1_fungible_asset_BurnRef); + var v: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + var v: Vec ($1_fungible_asset_BurnRef); + var len: int; + var left_vec: Vec ($1_fungible_asset_BurnRef); + var right_vec: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + var left_vec: Vec ($1_fungible_asset_BurnRef); + var mid_vec: Vec ($1_fungible_asset_BurnRef); + var right_vec: Vec ($1_fungible_asset_BurnRef); + var mid_left_vec: Vec ($1_fungible_asset_BurnRef); + var mid_right_vec: Vec ($1_fungible_asset_BurnRef); + var v: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), i: int, e: $1_fungible_asset_BurnRef) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) { + var left_vec: Vec ($1_fungible_asset_BurnRef); + var right_vec: Vec ($1_fungible_asset_BurnRef); + var v: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), i: int) returns (dst: $1_fungible_asset_BurnRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), i: int): $1_fungible_asset_BurnRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), index: int) +returns (dst: $Mutation ($1_fungible_asset_BurnRef), m': $Mutation (Vec ($1_fungible_asset_BurnRef))) +{ + var v: Vec ($1_fungible_asset_BurnRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), i: int): $1_fungible_asset_BurnRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_fungible_asset_BurnRef))) +{ + var v: Vec ($1_fungible_asset_BurnRef); + 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_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), i: int, j: int): Vec ($1_fungible_asset_BurnRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), i: int) returns (e: $1_fungible_asset_BurnRef, m': $Mutation (Vec ($1_fungible_asset_BurnRef))) +{ + var v: Vec ($1_fungible_asset_BurnRef); + + 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_fungible_asset_BurnRef'(m: $Mutation (Vec ($1_fungible_asset_BurnRef)), i: int) returns (e: $1_fungible_asset_BurnRef, m': $Mutation (Vec ($1_fungible_asset_BurnRef))) +{ + var len: int; + var v: Vec ($1_fungible_asset_BurnRef); + + 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_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), e: $1_fungible_asset_BurnRef) returns (res: bool) { + res := $ContainsVec'$1_fungible_asset_BurnRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_fungible_asset_BurnRef'(v: Vec ($1_fungible_asset_BurnRef), e: $1_fungible_asset_BurnRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_fungible_asset_BurnRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_fungible_asset_FungibleStore` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_fungible_asset_FungibleStore''(v1: Vec ($1_fungible_asset_FungibleStore), v2: Vec ($1_fungible_asset_FungibleStore)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_fungible_asset_FungibleStore''(v: Vec ($1_fungible_asset_FungibleStore), prefix: Vec ($1_fungible_asset_FungibleStore)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_fungible_asset_FungibleStore''(v: Vec ($1_fungible_asset_FungibleStore), suffix: Vec ($1_fungible_asset_FungibleStore)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_fungible_asset_FungibleStore''(v: Vec ($1_fungible_asset_FungibleStore)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fungible_asset_FungibleStore'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), e: $1_fungible_asset_FungibleStore): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), e: $1_fungible_asset_FungibleStore): int; +axiom (forall v: Vec ($1_fungible_asset_FungibleStore), e: $1_fungible_asset_FungibleStore:: {$IndexOfVec'$1_fungible_asset_FungibleStore'(v, e)} + (var i := $IndexOfVec'$1_fungible_asset_FungibleStore'(v, e); + if (!$ContainsVec'$1_fungible_asset_FungibleStore'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fungible_asset_FungibleStore'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_fungible_asset_FungibleStore'(): Vec ($1_fungible_asset_FungibleStore) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_fungible_asset_FungibleStore'() returns (v: Vec ($1_fungible_asset_FungibleStore)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_fungible_asset_FungibleStore'(): Vec ($1_fungible_asset_FungibleStore) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), val: $1_fungible_asset_FungibleStore) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), val: $1_fungible_asset_FungibleStore): Vec ($1_fungible_asset_FungibleStore) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore))) returns (e: $1_fungible_asset_FungibleStore, m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + var v: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), other: Vec ($1_fungible_asset_FungibleStore)) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore))) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), other: Vec ($1_fungible_asset_FungibleStore)) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), new_len: int) returns (v: (Vec ($1_fungible_asset_FungibleStore)), m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), new_len: int) returns (v: (Vec ($1_fungible_asset_FungibleStore)), m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), left: int, right: int) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + var left_vec: Vec ($1_fungible_asset_FungibleStore); + var mid_vec: Vec ($1_fungible_asset_FungibleStore); + var right_vec: Vec ($1_fungible_asset_FungibleStore); + var v: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + var v: Vec ($1_fungible_asset_FungibleStore); + var len: int; + var left_vec: Vec ($1_fungible_asset_FungibleStore); + var right_vec: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + var left_vec: Vec ($1_fungible_asset_FungibleStore); + var mid_vec: Vec ($1_fungible_asset_FungibleStore); + var right_vec: Vec ($1_fungible_asset_FungibleStore); + var mid_left_vec: Vec ($1_fungible_asset_FungibleStore); + var mid_right_vec: Vec ($1_fungible_asset_FungibleStore); + var v: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), i: int, e: $1_fungible_asset_FungibleStore) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) { + var left_vec: Vec ($1_fungible_asset_FungibleStore); + var right_vec: Vec ($1_fungible_asset_FungibleStore); + var v: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), i: int) returns (dst: $1_fungible_asset_FungibleStore) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), i: int): $1_fungible_asset_FungibleStore { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), index: int) +returns (dst: $Mutation ($1_fungible_asset_FungibleStore), m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) +{ + var v: Vec ($1_fungible_asset_FungibleStore); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), i: int): $1_fungible_asset_FungibleStore { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), i: int, j: int) returns (m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) +{ + var v: Vec ($1_fungible_asset_FungibleStore); + 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_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), i: int, j: int): Vec ($1_fungible_asset_FungibleStore) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), i: int) returns (e: $1_fungible_asset_FungibleStore, m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) +{ + var v: Vec ($1_fungible_asset_FungibleStore); + + 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_fungible_asset_FungibleStore'(m: $Mutation (Vec ($1_fungible_asset_FungibleStore)), i: int) returns (e: $1_fungible_asset_FungibleStore, m': $Mutation (Vec ($1_fungible_asset_FungibleStore))) +{ + var len: int; + var v: Vec ($1_fungible_asset_FungibleStore); + + 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_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), e: $1_fungible_asset_FungibleStore) returns (res: bool) { + res := $ContainsVec'$1_fungible_asset_FungibleStore'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_fungible_asset_FungibleStore'(v: Vec ($1_fungible_asset_FungibleStore), e: $1_fungible_asset_FungibleStore) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_fungible_asset_FungibleStore'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_fungible_asset_MintRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_fungible_asset_MintRef''(v1: Vec ($1_fungible_asset_MintRef), v2: Vec ($1_fungible_asset_MintRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fungible_asset_MintRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_fungible_asset_MintRef''(v: Vec ($1_fungible_asset_MintRef), prefix: Vec ($1_fungible_asset_MintRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fungible_asset_MintRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_fungible_asset_MintRef''(v: Vec ($1_fungible_asset_MintRef), suffix: Vec ($1_fungible_asset_MintRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fungible_asset_MintRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_fungible_asset_MintRef''(v: Vec ($1_fungible_asset_MintRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fungible_asset_MintRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), e: $1_fungible_asset_MintRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_MintRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), e: $1_fungible_asset_MintRef): int; +axiom (forall v: Vec ($1_fungible_asset_MintRef), e: $1_fungible_asset_MintRef:: {$IndexOfVec'$1_fungible_asset_MintRef'(v, e)} + (var i := $IndexOfVec'$1_fungible_asset_MintRef'(v, e); + if (!$ContainsVec'$1_fungible_asset_MintRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_MintRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fungible_asset_MintRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_fungible_asset_MintRef'(): Vec ($1_fungible_asset_MintRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_fungible_asset_MintRef'() returns (v: Vec ($1_fungible_asset_MintRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_fungible_asset_MintRef'(): Vec ($1_fungible_asset_MintRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), val: $1_fungible_asset_MintRef) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), val: $1_fungible_asset_MintRef): Vec ($1_fungible_asset_MintRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef))) returns (e: $1_fungible_asset_MintRef, m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + var v: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), other: Vec ($1_fungible_asset_MintRef)) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef))) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), other: Vec ($1_fungible_asset_MintRef)) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_MintRef)), m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_MintRef)), m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + var left_vec: Vec ($1_fungible_asset_MintRef); + var mid_vec: Vec ($1_fungible_asset_MintRef); + var right_vec: Vec ($1_fungible_asset_MintRef); + var v: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + var v: Vec ($1_fungible_asset_MintRef); + var len: int; + var left_vec: Vec ($1_fungible_asset_MintRef); + var right_vec: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + var left_vec: Vec ($1_fungible_asset_MintRef); + var mid_vec: Vec ($1_fungible_asset_MintRef); + var right_vec: Vec ($1_fungible_asset_MintRef); + var mid_left_vec: Vec ($1_fungible_asset_MintRef); + var mid_right_vec: Vec ($1_fungible_asset_MintRef); + var v: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), i: int, e: $1_fungible_asset_MintRef) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) { + var left_vec: Vec ($1_fungible_asset_MintRef); + var right_vec: Vec ($1_fungible_asset_MintRef); + var v: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), i: int) returns (dst: $1_fungible_asset_MintRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), i: int): $1_fungible_asset_MintRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), index: int) +returns (dst: $Mutation ($1_fungible_asset_MintRef), m': $Mutation (Vec ($1_fungible_asset_MintRef))) +{ + var v: Vec ($1_fungible_asset_MintRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), i: int): $1_fungible_asset_MintRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_fungible_asset_MintRef))) +{ + var v: Vec ($1_fungible_asset_MintRef); + 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_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), i: int, j: int): Vec ($1_fungible_asset_MintRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), i: int) returns (e: $1_fungible_asset_MintRef, m': $Mutation (Vec ($1_fungible_asset_MintRef))) +{ + var v: Vec ($1_fungible_asset_MintRef); + + 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_fungible_asset_MintRef'(m: $Mutation (Vec ($1_fungible_asset_MintRef)), i: int) returns (e: $1_fungible_asset_MintRef, m': $Mutation (Vec ($1_fungible_asset_MintRef))) +{ + var len: int; + var v: Vec ($1_fungible_asset_MintRef); + + 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_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), e: $1_fungible_asset_MintRef) returns (res: bool) { + res := $ContainsVec'$1_fungible_asset_MintRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_fungible_asset_MintRef'(v: Vec ($1_fungible_asset_MintRef), e: $1_fungible_asset_MintRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_fungible_asset_MintRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_fungible_asset_TransferRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_fungible_asset_TransferRef''(v1: Vec ($1_fungible_asset_TransferRef), v2: Vec ($1_fungible_asset_TransferRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_fungible_asset_TransferRef''(v: Vec ($1_fungible_asset_TransferRef), prefix: Vec ($1_fungible_asset_TransferRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_fungible_asset_TransferRef''(v: Vec ($1_fungible_asset_TransferRef), suffix: Vec ($1_fungible_asset_TransferRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_fungible_asset_TransferRef''(v: Vec ($1_fungible_asset_TransferRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_fungible_asset_TransferRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), e: $1_fungible_asset_TransferRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), e: $1_fungible_asset_TransferRef): int; +axiom (forall v: Vec ($1_fungible_asset_TransferRef), e: $1_fungible_asset_TransferRef:: {$IndexOfVec'$1_fungible_asset_TransferRef'(v, e)} + (var i := $IndexOfVec'$1_fungible_asset_TransferRef'(v, e); + if (!$ContainsVec'$1_fungible_asset_TransferRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_fungible_asset_TransferRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_fungible_asset_TransferRef'(): Vec ($1_fungible_asset_TransferRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_fungible_asset_TransferRef'() returns (v: Vec ($1_fungible_asset_TransferRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_fungible_asset_TransferRef'(): Vec ($1_fungible_asset_TransferRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), val: $1_fungible_asset_TransferRef) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), val: $1_fungible_asset_TransferRef): Vec ($1_fungible_asset_TransferRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef))) returns (e: $1_fungible_asset_TransferRef, m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + var v: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), other: Vec ($1_fungible_asset_TransferRef)) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef))) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), other: Vec ($1_fungible_asset_TransferRef)) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_TransferRef)), m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), new_len: int) returns (v: (Vec ($1_fungible_asset_TransferRef)), m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + var left_vec: Vec ($1_fungible_asset_TransferRef); + var mid_vec: Vec ($1_fungible_asset_TransferRef); + var right_vec: Vec ($1_fungible_asset_TransferRef); + var v: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + var v: Vec ($1_fungible_asset_TransferRef); + var len: int; + var left_vec: Vec ($1_fungible_asset_TransferRef); + var right_vec: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + var left_vec: Vec ($1_fungible_asset_TransferRef); + var mid_vec: Vec ($1_fungible_asset_TransferRef); + var right_vec: Vec ($1_fungible_asset_TransferRef); + var mid_left_vec: Vec ($1_fungible_asset_TransferRef); + var mid_right_vec: Vec ($1_fungible_asset_TransferRef); + var v: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), i: int, e: $1_fungible_asset_TransferRef) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) { + var left_vec: Vec ($1_fungible_asset_TransferRef); + var right_vec: Vec ($1_fungible_asset_TransferRef); + var v: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), i: int) returns (dst: $1_fungible_asset_TransferRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), i: int): $1_fungible_asset_TransferRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), index: int) +returns (dst: $Mutation ($1_fungible_asset_TransferRef), m': $Mutation (Vec ($1_fungible_asset_TransferRef))) +{ + var v: Vec ($1_fungible_asset_TransferRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), i: int): $1_fungible_asset_TransferRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_fungible_asset_TransferRef))) +{ + var v: Vec ($1_fungible_asset_TransferRef); + 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_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), i: int, j: int): Vec ($1_fungible_asset_TransferRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), i: int) returns (e: $1_fungible_asset_TransferRef, m': $Mutation (Vec ($1_fungible_asset_TransferRef))) +{ + var v: Vec ($1_fungible_asset_TransferRef); + + 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_fungible_asset_TransferRef'(m: $Mutation (Vec ($1_fungible_asset_TransferRef)), i: int) returns (e: $1_fungible_asset_TransferRef, m': $Mutation (Vec ($1_fungible_asset_TransferRef))) +{ + var len: int; + var v: Vec ($1_fungible_asset_TransferRef); + + 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_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), e: $1_fungible_asset_TransferRef) returns (res: bool) { + res := $ContainsVec'$1_fungible_asset_TransferRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_fungible_asset_TransferRef'(v: Vec ($1_fungible_asset_TransferRef), e: $1_fungible_asset_TransferRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_fungible_asset_TransferRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_multi_ed25519_ValidatedPublicKey` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_multi_ed25519_ValidatedPublicKey''(v1: Vec ($1_multi_ed25519_ValidatedPublicKey), v2: Vec ($1_multi_ed25519_ValidatedPublicKey)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_multi_ed25519_ValidatedPublicKey''(v: Vec ($1_multi_ed25519_ValidatedPublicKey), prefix: Vec ($1_multi_ed25519_ValidatedPublicKey)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_multi_ed25519_ValidatedPublicKey''(v: Vec ($1_multi_ed25519_ValidatedPublicKey), suffix: Vec ($1_multi_ed25519_ValidatedPublicKey)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_multi_ed25519_ValidatedPublicKey''(v: Vec ($1_multi_ed25519_ValidatedPublicKey)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), e: $1_multi_ed25519_ValidatedPublicKey): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), e: $1_multi_ed25519_ValidatedPublicKey): int; +axiom (forall v: Vec ($1_multi_ed25519_ValidatedPublicKey), e: $1_multi_ed25519_ValidatedPublicKey:: {$IndexOfVec'$1_multi_ed25519_ValidatedPublicKey'(v, e)} + (var i := $IndexOfVec'$1_multi_ed25519_ValidatedPublicKey'(v, e); + if (!$ContainsVec'$1_multi_ed25519_ValidatedPublicKey'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_multi_ed25519_ValidatedPublicKey'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_multi_ed25519_ValidatedPublicKey'(): Vec ($1_multi_ed25519_ValidatedPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_multi_ed25519_ValidatedPublicKey'() returns (v: Vec ($1_multi_ed25519_ValidatedPublicKey)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_multi_ed25519_ValidatedPublicKey'(): Vec ($1_multi_ed25519_ValidatedPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), val: $1_multi_ed25519_ValidatedPublicKey) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), val: $1_multi_ed25519_ValidatedPublicKey): Vec ($1_multi_ed25519_ValidatedPublicKey) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) returns (e: $1_multi_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), other: Vec ($1_multi_ed25519_ValidatedPublicKey)) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), other: Vec ($1_multi_ed25519_ValidatedPublicKey)) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), new_len: int) returns (v: (Vec ($1_multi_ed25519_ValidatedPublicKey)), m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), new_len: int) returns (v: (Vec ($1_multi_ed25519_ValidatedPublicKey)), m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), left: int, right: int) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var mid_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), rot: int) returns (n: int, m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + var len: int; + var left_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var mid_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var mid_left_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var mid_right_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), i: int, e: $1_multi_ed25519_ValidatedPublicKey) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) { + var left_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var right_vec: Vec ($1_multi_ed25519_ValidatedPublicKey); + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), i: int) returns (dst: $1_multi_ed25519_ValidatedPublicKey) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), i: int): $1_multi_ed25519_ValidatedPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), index: int) +returns (dst: $Mutation ($1_multi_ed25519_ValidatedPublicKey), m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), i: int): $1_multi_ed25519_ValidatedPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), i: int, j: int) returns (m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + 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_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), i: int, j: int): Vec ($1_multi_ed25519_ValidatedPublicKey) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), i: int) returns (e: $1_multi_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) +{ + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + + 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_multi_ed25519_ValidatedPublicKey'(m: $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey)), i: int) returns (e: $1_multi_ed25519_ValidatedPublicKey, m': $Mutation (Vec ($1_multi_ed25519_ValidatedPublicKey))) +{ + var len: int; + var v: Vec ($1_multi_ed25519_ValidatedPublicKey); + + 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_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), e: $1_multi_ed25519_ValidatedPublicKey) returns (res: bool) { + res := $ContainsVec'$1_multi_ed25519_ValidatedPublicKey'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_multi_ed25519_ValidatedPublicKey'(v: Vec ($1_multi_ed25519_ValidatedPublicKey), e: $1_multi_ed25519_ValidatedPublicKey) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_multi_ed25519_ValidatedPublicKey'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_object_DeleteRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_object_DeleteRef''(v1: Vec ($1_object_DeleteRef), v2: Vec ($1_object_DeleteRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_object_DeleteRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_object_DeleteRef''(v: Vec ($1_object_DeleteRef), prefix: Vec ($1_object_DeleteRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_object_DeleteRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_object_DeleteRef''(v: Vec ($1_object_DeleteRef), suffix: Vec ($1_object_DeleteRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_object_DeleteRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_object_DeleteRef''(v: Vec ($1_object_DeleteRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_object_DeleteRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), e: $1_object_DeleteRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_DeleteRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), e: $1_object_DeleteRef): int; +axiom (forall v: Vec ($1_object_DeleteRef), e: $1_object_DeleteRef:: {$IndexOfVec'$1_object_DeleteRef'(v, e)} + (var i := $IndexOfVec'$1_object_DeleteRef'(v, e); + if (!$ContainsVec'$1_object_DeleteRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_DeleteRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_object_DeleteRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_object_DeleteRef'(): Vec ($1_object_DeleteRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_object_DeleteRef'() returns (v: Vec ($1_object_DeleteRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_object_DeleteRef'(): Vec ($1_object_DeleteRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), val: $1_object_DeleteRef) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), val: $1_object_DeleteRef): Vec ($1_object_DeleteRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef))) returns (e: $1_object_DeleteRef, m': $Mutation (Vec ($1_object_DeleteRef))) { + var v: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), other: Vec ($1_object_DeleteRef)) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef))) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), other: Vec ($1_object_DeleteRef)) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), new_len: int) returns (v: (Vec ($1_object_DeleteRef)), m': $Mutation (Vec ($1_object_DeleteRef))) { + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), new_len: int) returns (v: (Vec ($1_object_DeleteRef)), m': $Mutation (Vec ($1_object_DeleteRef))) { + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + var left_vec: Vec ($1_object_DeleteRef); + var mid_vec: Vec ($1_object_DeleteRef); + var right_vec: Vec ($1_object_DeleteRef); + var v: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_object_DeleteRef))) { + var v: Vec ($1_object_DeleteRef); + var len: int; + var left_vec: Vec ($1_object_DeleteRef); + var right_vec: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_object_DeleteRef))) { + var left_vec: Vec ($1_object_DeleteRef); + var mid_vec: Vec ($1_object_DeleteRef); + var right_vec: Vec ($1_object_DeleteRef); + var mid_left_vec: Vec ($1_object_DeleteRef); + var mid_right_vec: Vec ($1_object_DeleteRef); + var v: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), i: int, e: $1_object_DeleteRef) returns (m': $Mutation (Vec ($1_object_DeleteRef))) { + var left_vec: Vec ($1_object_DeleteRef); + var right_vec: Vec ($1_object_DeleteRef); + var v: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(v: Vec ($1_object_DeleteRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), i: int) returns (dst: $1_object_DeleteRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), i: int): $1_object_DeleteRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), index: int) +returns (dst: $Mutation ($1_object_DeleteRef), m': $Mutation (Vec ($1_object_DeleteRef))) +{ + var v: Vec ($1_object_DeleteRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), i: int): $1_object_DeleteRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_object_DeleteRef))) +{ + var v: Vec ($1_object_DeleteRef); + 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_object_DeleteRef'(v: Vec ($1_object_DeleteRef), i: int, j: int): Vec ($1_object_DeleteRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), i: int) returns (e: $1_object_DeleteRef, m': $Mutation (Vec ($1_object_DeleteRef))) +{ + var v: Vec ($1_object_DeleteRef); + + 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_object_DeleteRef'(m: $Mutation (Vec ($1_object_DeleteRef)), i: int) returns (e: $1_object_DeleteRef, m': $Mutation (Vec ($1_object_DeleteRef))) +{ + var len: int; + var v: Vec ($1_object_DeleteRef); + + 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_object_DeleteRef'(v: Vec ($1_object_DeleteRef), e: $1_object_DeleteRef) returns (res: bool) { + res := $ContainsVec'$1_object_DeleteRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_object_DeleteRef'(v: Vec ($1_object_DeleteRef), e: $1_object_DeleteRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_object_DeleteRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_object_Object'$1_fungible_asset_Metadata'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_object_Object'$1_fungible_asset_Metadata'''(v1: Vec ($1_object_Object'$1_fungible_asset_Metadata'), v2: Vec ($1_object_Object'$1_fungible_asset_Metadata')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_object_Object'$1_fungible_asset_Metadata'''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), prefix: Vec ($1_object_Object'$1_fungible_asset_Metadata')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_object_Object'$1_fungible_asset_Metadata'''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), suffix: Vec ($1_object_Object'$1_fungible_asset_Metadata')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_object_Object'$1_fungible_asset_Metadata'''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), e: $1_object_Object'$1_fungible_asset_Metadata'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), e: $1_object_Object'$1_fungible_asset_Metadata'): int; +axiom (forall v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), e: $1_object_Object'$1_fungible_asset_Metadata':: {$IndexOfVec'$1_object_Object'$1_fungible_asset_Metadata''(v, e)} + (var i := $IndexOfVec'$1_object_Object'$1_fungible_asset_Metadata''(v, e); + if (!$ContainsVec'$1_object_Object'$1_fungible_asset_Metadata''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_object_Object'$1_fungible_asset_Metadata''(): Vec ($1_object_Object'$1_fungible_asset_Metadata') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_object_Object'$1_fungible_asset_Metadata''() returns (v: Vec ($1_object_Object'$1_fungible_asset_Metadata')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_object_Object'$1_fungible_asset_Metadata''(): Vec ($1_object_Object'$1_fungible_asset_Metadata') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), val: $1_object_Object'$1_fungible_asset_Metadata') returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), val: $1_object_Object'$1_fungible_asset_Metadata'): Vec ($1_object_Object'$1_fungible_asset_Metadata') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) returns (e: $1_object_Object'$1_fungible_asset_Metadata', m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), other: Vec ($1_object_Object'$1_fungible_asset_Metadata')) returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), other: Vec ($1_object_Object'$1_fungible_asset_Metadata')) returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), new_len: int) returns (v: (Vec ($1_object_Object'$1_fungible_asset_Metadata')), m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), new_len: int) returns (v: (Vec ($1_object_Object'$1_fungible_asset_Metadata')), m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), left: int, right: int) returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + var left_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var mid_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var right_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), rot: int) returns (n: int, m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var len: int; + var left_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var right_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + var left_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var mid_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var right_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var mid_left_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var mid_right_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), i: int, e: $1_object_Object'$1_fungible_asset_Metadata') returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) { + var left_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var right_vec: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), i: int) returns (dst: $1_object_Object'$1_fungible_asset_Metadata') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), i: int): $1_object_Object'$1_fungible_asset_Metadata' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), index: int) +returns (dst: $Mutation ($1_object_Object'$1_fungible_asset_Metadata'), m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) +{ + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), i: int): $1_object_Object'$1_fungible_asset_Metadata' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), i: int, j: int) returns (m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) +{ + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + 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_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), i: int, j: int): Vec ($1_object_Object'$1_fungible_asset_Metadata') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), i: int) returns (e: $1_object_Object'$1_fungible_asset_Metadata', m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) +{ + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + + 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_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata')), i: int) returns (e: $1_object_Object'$1_fungible_asset_Metadata', m': $Mutation (Vec ($1_object_Object'$1_fungible_asset_Metadata'))) +{ + var len: int; + var v: Vec ($1_object_Object'$1_fungible_asset_Metadata'); + + 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_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), e: $1_object_Object'$1_fungible_asset_Metadata') returns (res: bool) { + res := $ContainsVec'$1_object_Object'$1_fungible_asset_Metadata''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_object_Object'$1_fungible_asset_Metadata''(v: Vec ($1_object_Object'$1_fungible_asset_Metadata'), e: $1_object_Object'$1_fungible_asset_Metadata') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_object_Object'$1_fungible_asset_Metadata''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_object_TransferRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_object_TransferRef''(v1: Vec ($1_object_TransferRef), v2: Vec ($1_object_TransferRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_object_TransferRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_object_TransferRef''(v: Vec ($1_object_TransferRef), prefix: Vec ($1_object_TransferRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_object_TransferRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_object_TransferRef''(v: Vec ($1_object_TransferRef), suffix: Vec ($1_object_TransferRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_object_TransferRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_object_TransferRef''(v: Vec ($1_object_TransferRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_object_TransferRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), e: $1_object_TransferRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_TransferRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), e: $1_object_TransferRef): int; +axiom (forall v: Vec ($1_object_TransferRef), e: $1_object_TransferRef:: {$IndexOfVec'$1_object_TransferRef'(v, e)} + (var i := $IndexOfVec'$1_object_TransferRef'(v, e); + if (!$ContainsVec'$1_object_TransferRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_TransferRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_object_TransferRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_object_TransferRef'(v: Vec ($1_object_TransferRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_object_TransferRef'(): Vec ($1_object_TransferRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_object_TransferRef'() returns (v: Vec ($1_object_TransferRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_object_TransferRef'(): Vec ($1_object_TransferRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_object_TransferRef'(v: Vec ($1_object_TransferRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), val: $1_object_TransferRef) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), val: $1_object_TransferRef): Vec ($1_object_TransferRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef))) returns (e: $1_object_TransferRef, m': $Mutation (Vec ($1_object_TransferRef))) { + var v: Vec ($1_object_TransferRef); + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), other: Vec ($1_object_TransferRef)) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef))) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), other: Vec ($1_object_TransferRef)) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), new_len: int) returns (v: (Vec ($1_object_TransferRef)), m': $Mutation (Vec ($1_object_TransferRef))) { + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), new_len: int) returns (v: (Vec ($1_object_TransferRef)), m': $Mutation (Vec ($1_object_TransferRef))) { + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + var left_vec: Vec ($1_object_TransferRef); + var mid_vec: Vec ($1_object_TransferRef); + var right_vec: Vec ($1_object_TransferRef); + var v: Vec ($1_object_TransferRef); + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_object_TransferRef))) { + var v: Vec ($1_object_TransferRef); + var len: int; + var left_vec: Vec ($1_object_TransferRef); + var right_vec: Vec ($1_object_TransferRef); + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_object_TransferRef))) { + var left_vec: Vec ($1_object_TransferRef); + var mid_vec: Vec ($1_object_TransferRef); + var right_vec: Vec ($1_object_TransferRef); + var mid_left_vec: Vec ($1_object_TransferRef); + var mid_right_vec: Vec ($1_object_TransferRef); + var v: Vec ($1_object_TransferRef); + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), i: int, e: $1_object_TransferRef) returns (m': $Mutation (Vec ($1_object_TransferRef))) { + var left_vec: Vec ($1_object_TransferRef); + var right_vec: Vec ($1_object_TransferRef); + var v: Vec ($1_object_TransferRef); + 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_object_TransferRef'(v: Vec ($1_object_TransferRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_object_TransferRef'(v: Vec ($1_object_TransferRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), i: int) returns (dst: $1_object_TransferRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), i: int): $1_object_TransferRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), index: int) +returns (dst: $Mutation ($1_object_TransferRef), m': $Mutation (Vec ($1_object_TransferRef))) +{ + var v: Vec ($1_object_TransferRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), i: int): $1_object_TransferRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_object_TransferRef'(v: Vec ($1_object_TransferRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_object_TransferRef))) +{ + var v: Vec ($1_object_TransferRef); + 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_object_TransferRef'(v: Vec ($1_object_TransferRef), i: int, j: int): Vec ($1_object_TransferRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), i: int) returns (e: $1_object_TransferRef, m': $Mutation (Vec ($1_object_TransferRef))) +{ + var v: Vec ($1_object_TransferRef); + + 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_object_TransferRef'(m: $Mutation (Vec ($1_object_TransferRef)), i: int) returns (e: $1_object_TransferRef, m': $Mutation (Vec ($1_object_TransferRef))) +{ + var len: int; + var v: Vec ($1_object_TransferRef); + + 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_object_TransferRef'(v: Vec ($1_object_TransferRef), e: $1_object_TransferRef) returns (res: bool) { + res := $ContainsVec'$1_object_TransferRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_object_TransferRef'(v: Vec ($1_object_TransferRef), e: $1_object_TransferRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_object_TransferRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_object_token_BurnRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_object_token_BurnRef''(v1: Vec ($1_object_token_BurnRef), v2: Vec ($1_object_token_BurnRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_object_token_BurnRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_object_token_BurnRef''(v: Vec ($1_object_token_BurnRef), prefix: Vec ($1_object_token_BurnRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_object_token_BurnRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_object_token_BurnRef''(v: Vec ($1_object_token_BurnRef), suffix: Vec ($1_object_token_BurnRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_object_token_BurnRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_object_token_BurnRef''(v: Vec ($1_object_token_BurnRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_object_token_BurnRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), e: $1_object_token_BurnRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_token_BurnRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), e: $1_object_token_BurnRef): int; +axiom (forall v: Vec ($1_object_token_BurnRef), e: $1_object_token_BurnRef:: {$IndexOfVec'$1_object_token_BurnRef'(v, e)} + (var i := $IndexOfVec'$1_object_token_BurnRef'(v, e); + if (!$ContainsVec'$1_object_token_BurnRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_token_BurnRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_object_token_BurnRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_object_token_BurnRef'(): Vec ($1_object_token_BurnRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_object_token_BurnRef'() returns (v: Vec ($1_object_token_BurnRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_object_token_BurnRef'(): Vec ($1_object_token_BurnRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), val: $1_object_token_BurnRef) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), val: $1_object_token_BurnRef): Vec ($1_object_token_BurnRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef))) returns (e: $1_object_token_BurnRef, m': $Mutation (Vec ($1_object_token_BurnRef))) { + var v: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), other: Vec ($1_object_token_BurnRef)) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef))) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), other: Vec ($1_object_token_BurnRef)) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), new_len: int) returns (v: (Vec ($1_object_token_BurnRef)), m': $Mutation (Vec ($1_object_token_BurnRef))) { + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), new_len: int) returns (v: (Vec ($1_object_token_BurnRef)), m': $Mutation (Vec ($1_object_token_BurnRef))) { + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + var left_vec: Vec ($1_object_token_BurnRef); + var mid_vec: Vec ($1_object_token_BurnRef); + var right_vec: Vec ($1_object_token_BurnRef); + var v: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_object_token_BurnRef))) { + var v: Vec ($1_object_token_BurnRef); + var len: int; + var left_vec: Vec ($1_object_token_BurnRef); + var right_vec: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_object_token_BurnRef))) { + var left_vec: Vec ($1_object_token_BurnRef); + var mid_vec: Vec ($1_object_token_BurnRef); + var right_vec: Vec ($1_object_token_BurnRef); + var mid_left_vec: Vec ($1_object_token_BurnRef); + var mid_right_vec: Vec ($1_object_token_BurnRef); + var v: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), i: int, e: $1_object_token_BurnRef) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) { + var left_vec: Vec ($1_object_token_BurnRef); + var right_vec: Vec ($1_object_token_BurnRef); + var v: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), i: int) returns (dst: $1_object_token_BurnRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), i: int): $1_object_token_BurnRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), index: int) +returns (dst: $Mutation ($1_object_token_BurnRef), m': $Mutation (Vec ($1_object_token_BurnRef))) +{ + var v: Vec ($1_object_token_BurnRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), i: int): $1_object_token_BurnRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_object_token_BurnRef))) +{ + var v: Vec ($1_object_token_BurnRef); + 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_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), i: int, j: int): Vec ($1_object_token_BurnRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), i: int) returns (e: $1_object_token_BurnRef, m': $Mutation (Vec ($1_object_token_BurnRef))) +{ + var v: Vec ($1_object_token_BurnRef); + + 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_object_token_BurnRef'(m: $Mutation (Vec ($1_object_token_BurnRef)), i: int) returns (e: $1_object_token_BurnRef, m': $Mutation (Vec ($1_object_token_BurnRef))) +{ + var len: int; + var v: Vec ($1_object_token_BurnRef); + + 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_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), e: $1_object_token_BurnRef) returns (res: bool) { + res := $ContainsVec'$1_object_token_BurnRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_object_token_BurnRef'(v: Vec ($1_object_token_BurnRef), e: $1_object_token_BurnRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_object_token_BurnRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_object_token_MutatorRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_object_token_MutatorRef''(v1: Vec ($1_object_token_MutatorRef), v2: Vec ($1_object_token_MutatorRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_object_token_MutatorRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_object_token_MutatorRef''(v: Vec ($1_object_token_MutatorRef), prefix: Vec ($1_object_token_MutatorRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_object_token_MutatorRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_object_token_MutatorRef''(v: Vec ($1_object_token_MutatorRef), suffix: Vec ($1_object_token_MutatorRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_object_token_MutatorRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_object_token_MutatorRef''(v: Vec ($1_object_token_MutatorRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_object_token_MutatorRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), e: $1_object_token_MutatorRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_token_MutatorRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), e: $1_object_token_MutatorRef): int; +axiom (forall v: Vec ($1_object_token_MutatorRef), e: $1_object_token_MutatorRef:: {$IndexOfVec'$1_object_token_MutatorRef'(v, e)} + (var i := $IndexOfVec'$1_object_token_MutatorRef'(v, e); + if (!$ContainsVec'$1_object_token_MutatorRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_object_token_MutatorRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_object_token_MutatorRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_object_token_MutatorRef'(): Vec ($1_object_token_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_object_token_MutatorRef'() returns (v: Vec ($1_object_token_MutatorRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_object_token_MutatorRef'(): Vec ($1_object_token_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), val: $1_object_token_MutatorRef) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), val: $1_object_token_MutatorRef): Vec ($1_object_token_MutatorRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef))) returns (e: $1_object_token_MutatorRef, m': $Mutation (Vec ($1_object_token_MutatorRef))) { + var v: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), other: Vec ($1_object_token_MutatorRef)) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef))) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), other: Vec ($1_object_token_MutatorRef)) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), new_len: int) returns (v: (Vec ($1_object_token_MutatorRef)), m': $Mutation (Vec ($1_object_token_MutatorRef))) { + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), new_len: int) returns (v: (Vec ($1_object_token_MutatorRef)), m': $Mutation (Vec ($1_object_token_MutatorRef))) { + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + var left_vec: Vec ($1_object_token_MutatorRef); + var mid_vec: Vec ($1_object_token_MutatorRef); + var right_vec: Vec ($1_object_token_MutatorRef); + var v: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_object_token_MutatorRef))) { + var v: Vec ($1_object_token_MutatorRef); + var len: int; + var left_vec: Vec ($1_object_token_MutatorRef); + var right_vec: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_object_token_MutatorRef))) { + var left_vec: Vec ($1_object_token_MutatorRef); + var mid_vec: Vec ($1_object_token_MutatorRef); + var right_vec: Vec ($1_object_token_MutatorRef); + var mid_left_vec: Vec ($1_object_token_MutatorRef); + var mid_right_vec: Vec ($1_object_token_MutatorRef); + var v: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), i: int, e: $1_object_token_MutatorRef) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) { + var left_vec: Vec ($1_object_token_MutatorRef); + var right_vec: Vec ($1_object_token_MutatorRef); + var v: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), i: int) returns (dst: $1_object_token_MutatorRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), i: int): $1_object_token_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), index: int) +returns (dst: $Mutation ($1_object_token_MutatorRef), m': $Mutation (Vec ($1_object_token_MutatorRef))) +{ + var v: Vec ($1_object_token_MutatorRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), i: int): $1_object_token_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_object_token_MutatorRef))) +{ + var v: Vec ($1_object_token_MutatorRef); + 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_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), i: int, j: int): Vec ($1_object_token_MutatorRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), i: int) returns (e: $1_object_token_MutatorRef, m': $Mutation (Vec ($1_object_token_MutatorRef))) +{ + var v: Vec ($1_object_token_MutatorRef); + + 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_object_token_MutatorRef'(m: $Mutation (Vec ($1_object_token_MutatorRef)), i: int) returns (e: $1_object_token_MutatorRef, m': $Mutation (Vec ($1_object_token_MutatorRef))) +{ + var len: int; + var v: Vec ($1_object_token_MutatorRef); + + 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_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), e: $1_object_token_MutatorRef) returns (res: bool) { + res := $ContainsVec'$1_object_token_MutatorRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_object_token_MutatorRef'(v: Vec ($1_object_token_MutatorRef), e: $1_object_token_MutatorRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_object_token_MutatorRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_on_chain_config_ModifyConfigCapability'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(v1: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), v2: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), prefix: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), suffix: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), e: $1_on_chain_config_ModifyConfigCapability'#0'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), e: $1_on_chain_config_ModifyConfigCapability'#0'): int; +axiom (forall v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), e: $1_on_chain_config_ModifyConfigCapability'#0':: {$IndexOfVec'$1_on_chain_config_ModifyConfigCapability'#0''(v, e)} + (var i := $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'#0''(v, e); + if (!$ContainsVec'$1_on_chain_config_ModifyConfigCapability'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_on_chain_config_ModifyConfigCapability'#0''(): Vec ($1_on_chain_config_ModifyConfigCapability'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_on_chain_config_ModifyConfigCapability'#0''() returns (v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_on_chain_config_ModifyConfigCapability'#0''(): Vec ($1_on_chain_config_ModifyConfigCapability'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), val: $1_on_chain_config_ModifyConfigCapability'#0') returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), val: $1_on_chain_config_ModifyConfigCapability'#0'): Vec ($1_on_chain_config_ModifyConfigCapability'#0') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) returns (e: $1_on_chain_config_ModifyConfigCapability'#0', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), other: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), other: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), new_len: int) returns (v: (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), new_len: int) returns (v: (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), left: int, right: int) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var mid_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), rot: int) returns (n: int, m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var len: int; + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var mid_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var mid_left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var mid_right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), i: int, e: $1_on_chain_config_ModifyConfigCapability'#0') returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), i: int) returns (dst: $1_on_chain_config_ModifyConfigCapability'#0') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), i: int): $1_on_chain_config_ModifyConfigCapability'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), index: int) +returns (dst: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), i: int): $1_on_chain_config_ModifyConfigCapability'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), i: int, j: int) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), i: int, j: int): Vec ($1_on_chain_config_ModifyConfigCapability'#0') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), i: int) returns (e: $1_on_chain_config_ModifyConfigCapability'#0', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')), i: int) returns (e: $1_on_chain_config_ModifyConfigCapability'#0', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0'))) +{ + var len: int; + var v: Vec ($1_on_chain_config_ModifyConfigCapability'#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'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), e: $1_on_chain_config_ModifyConfigCapability'#0') returns (res: bool) { + res := $ContainsVec'$1_on_chain_config_ModifyConfigCapability'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_on_chain_config_ModifyConfigCapability'#0''(v: Vec ($1_on_chain_config_ModifyConfigCapability'#0'), e: $1_on_chain_config_ModifyConfigCapability'#0') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(v1: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), v2: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), prefix: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), suffix: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): int; +axiom (forall v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'':: {$IndexOfVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v, e)} + (var i := $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v, e); + if (!$ContainsVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(): Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''() returns (v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(): Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), val: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), val: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) returns (e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), other: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), other: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), new_len: int) returns (v: (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), new_len: int) returns (v: (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), left: int, right: int) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var mid_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), rot: int) returns (n: int, m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var len: int; + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var mid_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var mid_left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var mid_right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), i: int, e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) { + var left_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var right_vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), i: int) returns (dst: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), i: int): $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), index: int) +returns (dst: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), i: int): $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), i: int, j: int) returns (m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), i: int, j: int): Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), i: int) returns (e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) +{ + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(m: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')), i: int) returns (e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', m': $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''))) +{ + var len: int; + var v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#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'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') returns (res: bool) { + res := $ContainsVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_option_Option'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_option_Option'#0'''(v1: Vec ($1_option_Option'#0'), v2: Vec ($1_option_Option'#0')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_option_Option'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_option_Option'#0'''(v: Vec ($1_option_Option'#0'), prefix: Vec ($1_option_Option'#0')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_option_Option'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_option_Option'#0'''(v: Vec ($1_option_Option'#0'), suffix: Vec ($1_option_Option'#0')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_option_Option'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_option_Option'#0'''(v: Vec ($1_option_Option'#0')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_option_Option'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), e: $1_option_Option'#0'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_option_Option'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), e: $1_option_Option'#0'): int; +axiom (forall v: Vec ($1_option_Option'#0'), e: $1_option_Option'#0':: {$IndexOfVec'$1_option_Option'#0''(v, e)} + (var i := $IndexOfVec'$1_option_Option'#0''(v, e); + if (!$ContainsVec'$1_option_Option'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_option_Option'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_option_Option'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_option_Option'#0''(v: Vec ($1_option_Option'#0')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_option_Option'#0''(): Vec ($1_option_Option'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_option_Option'#0''() returns (v: Vec ($1_option_Option'#0')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_option_Option'#0''(): Vec ($1_option_Option'#0') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_option_Option'#0''(v: Vec ($1_option_Option'#0')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), val: $1_option_Option'#0') returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), val: $1_option_Option'#0'): Vec ($1_option_Option'#0') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0'))) returns (e: $1_option_Option'#0', m': $Mutation (Vec ($1_option_Option'#0'))) { + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), other: Vec ($1_option_Option'#0')) returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0'))) returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), other: Vec ($1_option_Option'#0')) returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), new_len: int) returns (v: (Vec ($1_option_Option'#0')), m': $Mutation (Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), new_len: int) returns (v: (Vec ($1_option_Option'#0')), m': $Mutation (Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), left: int, right: int) returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + var left_vec: Vec ($1_option_Option'#0'); + var mid_vec: Vec ($1_option_Option'#0'); + var right_vec: Vec ($1_option_Option'#0'); + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), rot: int) returns (n: int, m': $Mutation (Vec ($1_option_Option'#0'))) { + var v: Vec ($1_option_Option'#0'); + var len: int; + var left_vec: Vec ($1_option_Option'#0'); + var right_vec: Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_option_Option'#0'))) { + var left_vec: Vec ($1_option_Option'#0'); + var mid_vec: Vec ($1_option_Option'#0'); + var right_vec: Vec ($1_option_Option'#0'); + var mid_left_vec: Vec ($1_option_Option'#0'); + var mid_right_vec: Vec ($1_option_Option'#0'); + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), i: int, e: $1_option_Option'#0') returns (m': $Mutation (Vec ($1_option_Option'#0'))) { + var left_vec: Vec ($1_option_Option'#0'); + var right_vec: Vec ($1_option_Option'#0'); + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(v: Vec ($1_option_Option'#0')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_option_Option'#0''(v: Vec ($1_option_Option'#0')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), i: int) returns (dst: $1_option_Option'#0') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), i: int): $1_option_Option'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), index: int) +returns (dst: $Mutation ($1_option_Option'#0'), m': $Mutation (Vec ($1_option_Option'#0'))) +{ + var v: Vec ($1_option_Option'#0'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), i: int): $1_option_Option'#0' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_option_Option'#0''(v: Vec ($1_option_Option'#0')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), i: int, j: int) returns (m': $Mutation (Vec ($1_option_Option'#0'))) +{ + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), i: int, j: int): Vec ($1_option_Option'#0') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), i: int) returns (e: $1_option_Option'#0', m': $Mutation (Vec ($1_option_Option'#0'))) +{ + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(m: $Mutation (Vec ($1_option_Option'#0')), i: int) returns (e: $1_option_Option'#0', m': $Mutation (Vec ($1_option_Option'#0'))) +{ + var len: int; + var v: Vec ($1_option_Option'#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'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), e: $1_option_Option'#0') returns (res: bool) { + res := $ContainsVec'$1_option_Option'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_option_Option'#0''(v: Vec ($1_option_Option'#0'), e: $1_option_Option'#0') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_option_Option'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_option_Option'$1_property_map_PropertyValue'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_option_Option'$1_property_map_PropertyValue'''(v1: Vec ($1_option_Option'$1_property_map_PropertyValue'), v2: Vec ($1_option_Option'$1_property_map_PropertyValue')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_option_Option'$1_property_map_PropertyValue'''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), prefix: Vec ($1_option_Option'$1_property_map_PropertyValue')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_option_Option'$1_property_map_PropertyValue'''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), suffix: Vec ($1_option_Option'$1_property_map_PropertyValue')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), e: $1_option_Option'$1_property_map_PropertyValue'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), e: $1_option_Option'$1_property_map_PropertyValue'): int; +axiom (forall v: Vec ($1_option_Option'$1_property_map_PropertyValue'), e: $1_option_Option'$1_property_map_PropertyValue':: {$IndexOfVec'$1_option_Option'$1_property_map_PropertyValue''(v, e)} + (var i := $IndexOfVec'$1_option_Option'$1_property_map_PropertyValue''(v, e); + if (!$ContainsVec'$1_option_Option'$1_property_map_PropertyValue''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_option_Option'$1_property_map_PropertyValue''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_option_Option'$1_property_map_PropertyValue''(): Vec ($1_option_Option'$1_property_map_PropertyValue') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_option_Option'$1_property_map_PropertyValue''() returns (v: Vec ($1_option_Option'$1_property_map_PropertyValue')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_option_Option'$1_property_map_PropertyValue''(): Vec ($1_option_Option'$1_property_map_PropertyValue') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), val: $1_option_Option'$1_property_map_PropertyValue') returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), val: $1_option_Option'$1_property_map_PropertyValue'): Vec ($1_option_Option'$1_property_map_PropertyValue') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) returns (e: $1_option_Option'$1_property_map_PropertyValue', m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), other: Vec ($1_option_Option'$1_property_map_PropertyValue')) returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), other: Vec ($1_option_Option'$1_property_map_PropertyValue')) returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), new_len: int) returns (v: (Vec ($1_option_Option'$1_property_map_PropertyValue')), m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), new_len: int) returns (v: (Vec ($1_option_Option'$1_property_map_PropertyValue')), m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), left: int, right: int) returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + var left_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var mid_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var right_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), rot: int) returns (n: int, m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var len: int; + var left_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var right_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + var left_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var mid_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var right_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var mid_left_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var mid_right_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), i: int, e: $1_option_Option'$1_property_map_PropertyValue') returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) { + var left_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var right_vec: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), i: int) returns (dst: $1_option_Option'$1_property_map_PropertyValue') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), i: int): $1_option_Option'$1_property_map_PropertyValue' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), index: int) +returns (dst: $Mutation ($1_option_Option'$1_property_map_PropertyValue'), m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) +{ + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), i: int): $1_option_Option'$1_property_map_PropertyValue' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), i: int, j: int) returns (m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) +{ + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + 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_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), i: int, j: int): Vec ($1_option_Option'$1_property_map_PropertyValue') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), i: int) returns (e: $1_option_Option'$1_property_map_PropertyValue', m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) +{ + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + + 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_option_Option'$1_property_map_PropertyValue''(m: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')), i: int) returns (e: $1_option_Option'$1_property_map_PropertyValue', m': $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue'))) +{ + var len: int; + var v: Vec ($1_option_Option'$1_property_map_PropertyValue'); + + 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_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), e: $1_option_Option'$1_property_map_PropertyValue') returns (res: bool) { + res := $ContainsVec'$1_option_Option'$1_property_map_PropertyValue''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_option_Option'$1_property_map_PropertyValue''(v: Vec ($1_option_Option'$1_property_map_PropertyValue'), e: $1_option_Option'$1_property_map_PropertyValue') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_option_Option'$1_property_map_PropertyValue''(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(m->l, ExtendVec(m->p, 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(m->l, ExtendVec(m->p, 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_oracle_DataRecord'#1'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_oracle_DataRecord'#1'''(v1: Vec ($1_oracle_DataRecord'#1'), v2: Vec ($1_oracle_DataRecord'#1')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_oracle_DataRecord'#1'''(v: Vec ($1_oracle_DataRecord'#1'), prefix: Vec ($1_oracle_DataRecord'#1')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_oracle_DataRecord'#1'''(v: Vec ($1_oracle_DataRecord'#1'), suffix: Vec ($1_oracle_DataRecord'#1')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_oracle_DataRecord'#1'''(v: Vec ($1_oracle_DataRecord'#1')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_oracle_DataRecord'#1''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), e: $1_oracle_DataRecord'#1'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), e: $1_oracle_DataRecord'#1'): int; +axiom (forall v: Vec ($1_oracle_DataRecord'#1'), e: $1_oracle_DataRecord'#1':: {$IndexOfVec'$1_oracle_DataRecord'#1''(v, e)} + (var i := $IndexOfVec'$1_oracle_DataRecord'#1''(v, e); + if (!$ContainsVec'$1_oracle_DataRecord'#1''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_oracle_DataRecord'#1''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_oracle_DataRecord'#1''(): Vec ($1_oracle_DataRecord'#1') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_oracle_DataRecord'#1''() returns (v: Vec ($1_oracle_DataRecord'#1')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_oracle_DataRecord'#1''(): Vec ($1_oracle_DataRecord'#1') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), val: $1_oracle_DataRecord'#1') returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), val: $1_oracle_DataRecord'#1'): Vec ($1_oracle_DataRecord'#1') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1'))) returns (e: $1_oracle_DataRecord'#1', m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + var v: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), other: Vec ($1_oracle_DataRecord'#1')) returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1'))) returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), other: Vec ($1_oracle_DataRecord'#1')) returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), new_len: int) returns (v: (Vec ($1_oracle_DataRecord'#1')), m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), new_len: int) returns (v: (Vec ($1_oracle_DataRecord'#1')), m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), left: int, right: int) returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + var left_vec: Vec ($1_oracle_DataRecord'#1'); + var mid_vec: Vec ($1_oracle_DataRecord'#1'); + var right_vec: Vec ($1_oracle_DataRecord'#1'); + var v: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), rot: int) returns (n: int, m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + var v: Vec ($1_oracle_DataRecord'#1'); + var len: int; + var left_vec: Vec ($1_oracle_DataRecord'#1'); + var right_vec: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + var left_vec: Vec ($1_oracle_DataRecord'#1'); + var mid_vec: Vec ($1_oracle_DataRecord'#1'); + var right_vec: Vec ($1_oracle_DataRecord'#1'); + var mid_left_vec: Vec ($1_oracle_DataRecord'#1'); + var mid_right_vec: Vec ($1_oracle_DataRecord'#1'); + var v: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), i: int, e: $1_oracle_DataRecord'#1') returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) { + var left_vec: Vec ($1_oracle_DataRecord'#1'); + var right_vec: Vec ($1_oracle_DataRecord'#1'); + var v: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), i: int) returns (dst: $1_oracle_DataRecord'#1') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), i: int): $1_oracle_DataRecord'#1' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), index: int) +returns (dst: $Mutation ($1_oracle_DataRecord'#1'), m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) +{ + var v: Vec ($1_oracle_DataRecord'#1'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), i: int): $1_oracle_DataRecord'#1' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), i: int, j: int) returns (m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) +{ + var v: Vec ($1_oracle_DataRecord'#1'); + 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_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), i: int, j: int): Vec ($1_oracle_DataRecord'#1') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), i: int) returns (e: $1_oracle_DataRecord'#1', m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) +{ + var v: Vec ($1_oracle_DataRecord'#1'); + + 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_oracle_DataRecord'#1''(m: $Mutation (Vec ($1_oracle_DataRecord'#1')), i: int) returns (e: $1_oracle_DataRecord'#1', m': $Mutation (Vec ($1_oracle_DataRecord'#1'))) +{ + var len: int; + var v: Vec ($1_oracle_DataRecord'#1'); + + 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_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), e: $1_oracle_DataRecord'#1') returns (res: bool) { + res := $ContainsVec'$1_oracle_DataRecord'#1''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_oracle_DataRecord'#1''(v: Vec ($1_oracle_DataRecord'#1'), e: $1_oracle_DataRecord'#1') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_oracle_DataRecord'#1''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_oracle_DataRecord'u128'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_oracle_DataRecord'u128'''(v1: Vec ($1_oracle_DataRecord'u128'), v2: Vec ($1_oracle_DataRecord'u128')): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_oracle_DataRecord'u128'''(v: Vec ($1_oracle_DataRecord'u128'), prefix: Vec ($1_oracle_DataRecord'u128')): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_oracle_DataRecord'u128'''(v: Vec ($1_oracle_DataRecord'u128'), suffix: Vec ($1_oracle_DataRecord'u128')): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_oracle_DataRecord'u128'''(v: Vec ($1_oracle_DataRecord'u128')): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_oracle_DataRecord'u128''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), e: $1_oracle_DataRecord'u128'): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), e: $1_oracle_DataRecord'u128'): int; +axiom (forall v: Vec ($1_oracle_DataRecord'u128'), e: $1_oracle_DataRecord'u128':: {$IndexOfVec'$1_oracle_DataRecord'u128''(v, e)} + (var i := $IndexOfVec'$1_oracle_DataRecord'u128''(v, e); + if (!$ContainsVec'$1_oracle_DataRecord'u128''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_oracle_DataRecord'u128''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128')): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_oracle_DataRecord'u128''(): Vec ($1_oracle_DataRecord'u128') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_oracle_DataRecord'u128''() returns (v: Vec ($1_oracle_DataRecord'u128')) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_oracle_DataRecord'u128''(): Vec ($1_oracle_DataRecord'u128') { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128')) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), val: $1_oracle_DataRecord'u128') returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), val: $1_oracle_DataRecord'u128'): Vec ($1_oracle_DataRecord'u128') { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128'))) returns (e: $1_oracle_DataRecord'u128', m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + var v: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), other: Vec ($1_oracle_DataRecord'u128')) returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128'))) returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), other: Vec ($1_oracle_DataRecord'u128')) returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), new_len: int) returns (v: (Vec ($1_oracle_DataRecord'u128')), m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), new_len: int) returns (v: (Vec ($1_oracle_DataRecord'u128')), m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), left: int, right: int) returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + var left_vec: Vec ($1_oracle_DataRecord'u128'); + var mid_vec: Vec ($1_oracle_DataRecord'u128'); + var right_vec: Vec ($1_oracle_DataRecord'u128'); + var v: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), rot: int) returns (n: int, m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + var v: Vec ($1_oracle_DataRecord'u128'); + var len: int; + var left_vec: Vec ($1_oracle_DataRecord'u128'); + var right_vec: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + var left_vec: Vec ($1_oracle_DataRecord'u128'); + var mid_vec: Vec ($1_oracle_DataRecord'u128'); + var right_vec: Vec ($1_oracle_DataRecord'u128'); + var mid_left_vec: Vec ($1_oracle_DataRecord'u128'); + var mid_right_vec: Vec ($1_oracle_DataRecord'u128'); + var v: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), i: int, e: $1_oracle_DataRecord'u128') returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) { + var left_vec: Vec ($1_oracle_DataRecord'u128'); + var right_vec: Vec ($1_oracle_DataRecord'u128'); + var v: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128')) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128')): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), i: int) returns (dst: $1_oracle_DataRecord'u128') { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), i: int): $1_oracle_DataRecord'u128' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), index: int) +returns (dst: $Mutation ($1_oracle_DataRecord'u128'), m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) +{ + var v: Vec ($1_oracle_DataRecord'u128'); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), i: int): $1_oracle_DataRecord'u128' { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128')) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), i: int, j: int) returns (m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) +{ + var v: Vec ($1_oracle_DataRecord'u128'); + 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_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), i: int, j: int): Vec ($1_oracle_DataRecord'u128') { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), i: int) returns (e: $1_oracle_DataRecord'u128', m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) +{ + var v: Vec ($1_oracle_DataRecord'u128'); + + 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_oracle_DataRecord'u128''(m: $Mutation (Vec ($1_oracle_DataRecord'u128')), i: int) returns (e: $1_oracle_DataRecord'u128', m': $Mutation (Vec ($1_oracle_DataRecord'u128'))) +{ + var len: int; + var v: Vec ($1_oracle_DataRecord'u128'); + + 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_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), e: $1_oracle_DataRecord'u128') returns (res: bool) { + res := $ContainsVec'$1_oracle_DataRecord'u128''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_oracle_DataRecord'u128''(v: Vec ($1_oracle_DataRecord'u128'), e: $1_oracle_DataRecord'u128') returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_oracle_DataRecord'u128''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_property_map_PropertyValue` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_property_map_PropertyValue''(v1: Vec ($1_property_map_PropertyValue), v2: Vec ($1_property_map_PropertyValue)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_property_map_PropertyValue'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_property_map_PropertyValue''(v: Vec ($1_property_map_PropertyValue), prefix: Vec ($1_property_map_PropertyValue)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_property_map_PropertyValue'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_property_map_PropertyValue''(v: Vec ($1_property_map_PropertyValue), suffix: Vec ($1_property_map_PropertyValue)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_property_map_PropertyValue'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_property_map_PropertyValue''(v: Vec ($1_property_map_PropertyValue)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_property_map_PropertyValue'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), e: $1_property_map_PropertyValue): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_property_map_PropertyValue'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), e: $1_property_map_PropertyValue): int; +axiom (forall v: Vec ($1_property_map_PropertyValue), e: $1_property_map_PropertyValue:: {$IndexOfVec'$1_property_map_PropertyValue'(v, e)} + (var i := $IndexOfVec'$1_property_map_PropertyValue'(v, e); + if (!$ContainsVec'$1_property_map_PropertyValue'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_property_map_PropertyValue'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_property_map_PropertyValue'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_property_map_PropertyValue'(): Vec ($1_property_map_PropertyValue) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_property_map_PropertyValue'() returns (v: Vec ($1_property_map_PropertyValue)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_property_map_PropertyValue'(): Vec ($1_property_map_PropertyValue) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), val: $1_property_map_PropertyValue) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), val: $1_property_map_PropertyValue): Vec ($1_property_map_PropertyValue) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue))) returns (e: $1_property_map_PropertyValue, m': $Mutation (Vec ($1_property_map_PropertyValue))) { + var v: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), other: Vec ($1_property_map_PropertyValue)) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue))) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), other: Vec ($1_property_map_PropertyValue)) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), new_len: int) returns (v: (Vec ($1_property_map_PropertyValue)), m': $Mutation (Vec ($1_property_map_PropertyValue))) { + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), new_len: int) returns (v: (Vec ($1_property_map_PropertyValue)), m': $Mutation (Vec ($1_property_map_PropertyValue))) { + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), left: int, right: int) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + var left_vec: Vec ($1_property_map_PropertyValue); + var mid_vec: Vec ($1_property_map_PropertyValue); + var right_vec: Vec ($1_property_map_PropertyValue); + var v: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), rot: int) returns (n: int, m': $Mutation (Vec ($1_property_map_PropertyValue))) { + var v: Vec ($1_property_map_PropertyValue); + var len: int; + var left_vec: Vec ($1_property_map_PropertyValue); + var right_vec: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_property_map_PropertyValue))) { + var left_vec: Vec ($1_property_map_PropertyValue); + var mid_vec: Vec ($1_property_map_PropertyValue); + var right_vec: Vec ($1_property_map_PropertyValue); + var mid_left_vec: Vec ($1_property_map_PropertyValue); + var mid_right_vec: Vec ($1_property_map_PropertyValue); + var v: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), i: int, e: $1_property_map_PropertyValue) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) { + var left_vec: Vec ($1_property_map_PropertyValue); + var right_vec: Vec ($1_property_map_PropertyValue); + var v: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), i: int) returns (dst: $1_property_map_PropertyValue) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), i: int): $1_property_map_PropertyValue { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), index: int) +returns (dst: $Mutation ($1_property_map_PropertyValue), m': $Mutation (Vec ($1_property_map_PropertyValue))) +{ + var v: Vec ($1_property_map_PropertyValue); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), i: int): $1_property_map_PropertyValue { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), i: int, j: int) returns (m': $Mutation (Vec ($1_property_map_PropertyValue))) +{ + var v: Vec ($1_property_map_PropertyValue); + 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_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), i: int, j: int): Vec ($1_property_map_PropertyValue) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), i: int) returns (e: $1_property_map_PropertyValue, m': $Mutation (Vec ($1_property_map_PropertyValue))) +{ + var v: Vec ($1_property_map_PropertyValue); + + 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_property_map_PropertyValue'(m: $Mutation (Vec ($1_property_map_PropertyValue)), i: int) returns (e: $1_property_map_PropertyValue, m': $Mutation (Vec ($1_property_map_PropertyValue))) +{ + var len: int; + var v: Vec ($1_property_map_PropertyValue); + + 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_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), e: $1_property_map_PropertyValue) returns (res: bool) { + res := $ContainsVec'$1_property_map_PropertyValue'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_property_map_PropertyValue'(v: Vec ($1_property_map_PropertyValue), e: $1_property_map_PropertyValue) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_property_map_PropertyValue'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_CompressedRistretto` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_CompressedRistretto''(v1: Vec ($1_ristretto255_CompressedRistretto), v2: Vec ($1_ristretto255_CompressedRistretto)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_CompressedRistretto''(v: Vec ($1_ristretto255_CompressedRistretto), prefix: Vec ($1_ristretto255_CompressedRistretto)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_CompressedRistretto''(v: Vec ($1_ristretto255_CompressedRistretto), suffix: Vec ($1_ristretto255_CompressedRistretto)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_CompressedRistretto''(v: Vec ($1_ristretto255_CompressedRistretto)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_CompressedRistretto'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), e: $1_ristretto255_CompressedRistretto): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), e: $1_ristretto255_CompressedRistretto): int; +axiom (forall v: Vec ($1_ristretto255_CompressedRistretto), e: $1_ristretto255_CompressedRistretto:: {$IndexOfVec'$1_ristretto255_CompressedRistretto'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_CompressedRistretto'(v, e); + if (!$ContainsVec'$1_ristretto255_CompressedRistretto'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_CompressedRistretto'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_CompressedRistretto'(): Vec ($1_ristretto255_CompressedRistretto) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_CompressedRistretto'() returns (v: Vec ($1_ristretto255_CompressedRistretto)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_CompressedRistretto'(): Vec ($1_ristretto255_CompressedRistretto) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), val: $1_ristretto255_CompressedRistretto) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), val: $1_ristretto255_CompressedRistretto): Vec ($1_ristretto255_CompressedRistretto) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto))) returns (e: $1_ristretto255_CompressedRistretto, m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + var v: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), other: Vec ($1_ristretto255_CompressedRistretto)) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto))) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), other: Vec ($1_ristretto255_CompressedRistretto)) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), new_len: int) returns (v: (Vec ($1_ristretto255_CompressedRistretto)), m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), new_len: int) returns (v: (Vec ($1_ristretto255_CompressedRistretto)), m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + var left_vec: Vec ($1_ristretto255_CompressedRistretto); + var mid_vec: Vec ($1_ristretto255_CompressedRistretto); + var right_vec: Vec ($1_ristretto255_CompressedRistretto); + var v: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + var v: Vec ($1_ristretto255_CompressedRistretto); + var len: int; + var left_vec: Vec ($1_ristretto255_CompressedRistretto); + var right_vec: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + var left_vec: Vec ($1_ristretto255_CompressedRistretto); + var mid_vec: Vec ($1_ristretto255_CompressedRistretto); + var right_vec: Vec ($1_ristretto255_CompressedRistretto); + var mid_left_vec: Vec ($1_ristretto255_CompressedRistretto); + var mid_right_vec: Vec ($1_ristretto255_CompressedRistretto); + var v: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), i: int, e: $1_ristretto255_CompressedRistretto) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) { + var left_vec: Vec ($1_ristretto255_CompressedRistretto); + var right_vec: Vec ($1_ristretto255_CompressedRistretto); + var v: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), i: int) returns (dst: $1_ristretto255_CompressedRistretto) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), i: int): $1_ristretto255_CompressedRistretto { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), index: int) +returns (dst: $Mutation ($1_ristretto255_CompressedRistretto), m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) +{ + var v: Vec ($1_ristretto255_CompressedRistretto); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), i: int): $1_ristretto255_CompressedRistretto { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) +{ + var v: Vec ($1_ristretto255_CompressedRistretto); + 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_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), i: int, j: int): Vec ($1_ristretto255_CompressedRistretto) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), i: int) returns (e: $1_ristretto255_CompressedRistretto, m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) +{ + var v: Vec ($1_ristretto255_CompressedRistretto); + + 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_ristretto255_CompressedRistretto'(m: $Mutation (Vec ($1_ristretto255_CompressedRistretto)), i: int) returns (e: $1_ristretto255_CompressedRistretto, m': $Mutation (Vec ($1_ristretto255_CompressedRistretto))) +{ + var len: int; + var v: Vec ($1_ristretto255_CompressedRistretto); + + 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_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), e: $1_ristretto255_CompressedRistretto) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_CompressedRistretto'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_CompressedRistretto'(v: Vec ($1_ristretto255_CompressedRistretto), e: $1_ristretto255_CompressedRistretto) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_CompressedRistretto'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_RistrettoPoint` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_RistrettoPoint''(v1: Vec ($1_ristretto255_RistrettoPoint), v2: Vec ($1_ristretto255_RistrettoPoint)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_RistrettoPoint''(v: Vec ($1_ristretto255_RistrettoPoint), prefix: Vec ($1_ristretto255_RistrettoPoint)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_RistrettoPoint''(v: Vec ($1_ristretto255_RistrettoPoint), suffix: Vec ($1_ristretto255_RistrettoPoint)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_RistrettoPoint''(v: Vec ($1_ristretto255_RistrettoPoint)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_RistrettoPoint'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), e: $1_ristretto255_RistrettoPoint): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), e: $1_ristretto255_RistrettoPoint): int; +axiom (forall v: Vec ($1_ristretto255_RistrettoPoint), e: $1_ristretto255_RistrettoPoint:: {$IndexOfVec'$1_ristretto255_RistrettoPoint'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_RistrettoPoint'(v, e); + if (!$ContainsVec'$1_ristretto255_RistrettoPoint'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_RistrettoPoint'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_RistrettoPoint'(): Vec ($1_ristretto255_RistrettoPoint) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_RistrettoPoint'() returns (v: Vec ($1_ristretto255_RistrettoPoint)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_RistrettoPoint'(): Vec ($1_ristretto255_RistrettoPoint) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), val: $1_ristretto255_RistrettoPoint) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), val: $1_ristretto255_RistrettoPoint): Vec ($1_ristretto255_RistrettoPoint) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint))) returns (e: $1_ristretto255_RistrettoPoint, m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + var v: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), other: Vec ($1_ristretto255_RistrettoPoint)) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint))) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), other: Vec ($1_ristretto255_RistrettoPoint)) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), new_len: int) returns (v: (Vec ($1_ristretto255_RistrettoPoint)), m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), new_len: int) returns (v: (Vec ($1_ristretto255_RistrettoPoint)), m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + var left_vec: Vec ($1_ristretto255_RistrettoPoint); + var mid_vec: Vec ($1_ristretto255_RistrettoPoint); + var right_vec: Vec ($1_ristretto255_RistrettoPoint); + var v: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + var v: Vec ($1_ristretto255_RistrettoPoint); + var len: int; + var left_vec: Vec ($1_ristretto255_RistrettoPoint); + var right_vec: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + var left_vec: Vec ($1_ristretto255_RistrettoPoint); + var mid_vec: Vec ($1_ristretto255_RistrettoPoint); + var right_vec: Vec ($1_ristretto255_RistrettoPoint); + var mid_left_vec: Vec ($1_ristretto255_RistrettoPoint); + var mid_right_vec: Vec ($1_ristretto255_RistrettoPoint); + var v: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), i: int, e: $1_ristretto255_RistrettoPoint) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) { + var left_vec: Vec ($1_ristretto255_RistrettoPoint); + var right_vec: Vec ($1_ristretto255_RistrettoPoint); + var v: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), i: int) returns (dst: $1_ristretto255_RistrettoPoint) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), i: int): $1_ristretto255_RistrettoPoint { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), index: int) +returns (dst: $Mutation ($1_ristretto255_RistrettoPoint), m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) +{ + var v: Vec ($1_ristretto255_RistrettoPoint); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), i: int): $1_ristretto255_RistrettoPoint { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) +{ + var v: Vec ($1_ristretto255_RistrettoPoint); + 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_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), i: int, j: int): Vec ($1_ristretto255_RistrettoPoint) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), i: int) returns (e: $1_ristretto255_RistrettoPoint, m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) +{ + var v: Vec ($1_ristretto255_RistrettoPoint); + + 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_ristretto255_RistrettoPoint'(m: $Mutation (Vec ($1_ristretto255_RistrettoPoint)), i: int) returns (e: $1_ristretto255_RistrettoPoint, m': $Mutation (Vec ($1_ristretto255_RistrettoPoint))) +{ + var len: int; + var v: Vec ($1_ristretto255_RistrettoPoint); + + 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_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), e: $1_ristretto255_RistrettoPoint) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_RistrettoPoint'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_RistrettoPoint'(v: Vec ($1_ristretto255_RistrettoPoint), e: $1_ristretto255_RistrettoPoint) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_RistrettoPoint'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_Scalar` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_Scalar''(v1: Vec ($1_ristretto255_Scalar), v2: Vec ($1_ristretto255_Scalar)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_Scalar'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_Scalar''(v: Vec ($1_ristretto255_Scalar), prefix: Vec ($1_ristretto255_Scalar)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_Scalar'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_Scalar''(v: Vec ($1_ristretto255_Scalar), suffix: Vec ($1_ristretto255_Scalar)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_Scalar'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_Scalar''(v: Vec ($1_ristretto255_Scalar)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_Scalar'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), e: $1_ristretto255_Scalar): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_Scalar'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), e: $1_ristretto255_Scalar): int; +axiom (forall v: Vec ($1_ristretto255_Scalar), e: $1_ristretto255_Scalar:: {$IndexOfVec'$1_ristretto255_Scalar'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_Scalar'(v, e); + if (!$ContainsVec'$1_ristretto255_Scalar'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_Scalar'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_Scalar'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_Scalar'(): Vec ($1_ristretto255_Scalar) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_Scalar'() returns (v: Vec ($1_ristretto255_Scalar)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_Scalar'(): Vec ($1_ristretto255_Scalar) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), val: $1_ristretto255_Scalar) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), val: $1_ristretto255_Scalar): Vec ($1_ristretto255_Scalar) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar))) returns (e: $1_ristretto255_Scalar, m': $Mutation (Vec ($1_ristretto255_Scalar))) { + var v: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), other: Vec ($1_ristretto255_Scalar)) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar))) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), other: Vec ($1_ristretto255_Scalar)) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), new_len: int) returns (v: (Vec ($1_ristretto255_Scalar)), m': $Mutation (Vec ($1_ristretto255_Scalar))) { + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), new_len: int) returns (v: (Vec ($1_ristretto255_Scalar)), m': $Mutation (Vec ($1_ristretto255_Scalar))) { + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + var left_vec: Vec ($1_ristretto255_Scalar); + var mid_vec: Vec ($1_ristretto255_Scalar); + var right_vec: Vec ($1_ristretto255_Scalar); + var v: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_Scalar))) { + var v: Vec ($1_ristretto255_Scalar); + var len: int; + var left_vec: Vec ($1_ristretto255_Scalar); + var right_vec: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_Scalar))) { + var left_vec: Vec ($1_ristretto255_Scalar); + var mid_vec: Vec ($1_ristretto255_Scalar); + var right_vec: Vec ($1_ristretto255_Scalar); + var mid_left_vec: Vec ($1_ristretto255_Scalar); + var mid_right_vec: Vec ($1_ristretto255_Scalar); + var v: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), i: int, e: $1_ristretto255_Scalar) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) { + var left_vec: Vec ($1_ristretto255_Scalar); + var right_vec: Vec ($1_ristretto255_Scalar); + var v: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), i: int) returns (dst: $1_ristretto255_Scalar) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), i: int): $1_ristretto255_Scalar { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), index: int) +returns (dst: $Mutation ($1_ristretto255_Scalar), m': $Mutation (Vec ($1_ristretto255_Scalar))) +{ + var v: Vec ($1_ristretto255_Scalar); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), i: int): $1_ristretto255_Scalar { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_Scalar))) +{ + var v: Vec ($1_ristretto255_Scalar); + 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_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), i: int, j: int): Vec ($1_ristretto255_Scalar) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), i: int) returns (e: $1_ristretto255_Scalar, m': $Mutation (Vec ($1_ristretto255_Scalar))) +{ + var v: Vec ($1_ristretto255_Scalar); + + 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_ristretto255_Scalar'(m: $Mutation (Vec ($1_ristretto255_Scalar)), i: int) returns (e: $1_ristretto255_Scalar, m': $Mutation (Vec ($1_ristretto255_Scalar))) +{ + var len: int; + var v: Vec ($1_ristretto255_Scalar); + + 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_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), e: $1_ristretto255_Scalar) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_Scalar'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_Scalar'(v: Vec ($1_ristretto255_Scalar), e: $1_ristretto255_Scalar) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_Scalar'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_elgamal_Ciphertext` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_elgamal_Ciphertext''(v1: Vec ($1_ristretto255_elgamal_Ciphertext), v2: Vec ($1_ristretto255_elgamal_Ciphertext)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_elgamal_Ciphertext''(v: Vec ($1_ristretto255_elgamal_Ciphertext), prefix: Vec ($1_ristretto255_elgamal_Ciphertext)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_elgamal_Ciphertext''(v: Vec ($1_ristretto255_elgamal_Ciphertext), suffix: Vec ($1_ristretto255_elgamal_Ciphertext)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_elgamal_Ciphertext''(v: Vec ($1_ristretto255_elgamal_Ciphertext)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), e: $1_ristretto255_elgamal_Ciphertext): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), e: $1_ristretto255_elgamal_Ciphertext): int; +axiom (forall v: Vec ($1_ristretto255_elgamal_Ciphertext), e: $1_ristretto255_elgamal_Ciphertext:: {$IndexOfVec'$1_ristretto255_elgamal_Ciphertext'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_elgamal_Ciphertext'(v, e); + if (!$ContainsVec'$1_ristretto255_elgamal_Ciphertext'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_elgamal_Ciphertext'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_elgamal_Ciphertext'(): Vec ($1_ristretto255_elgamal_Ciphertext) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_elgamal_Ciphertext'() returns (v: Vec ($1_ristretto255_elgamal_Ciphertext)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_elgamal_Ciphertext'(): Vec ($1_ristretto255_elgamal_Ciphertext) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), val: $1_ristretto255_elgamal_Ciphertext) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), val: $1_ristretto255_elgamal_Ciphertext): Vec ($1_ristretto255_elgamal_Ciphertext) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) returns (e: $1_ristretto255_elgamal_Ciphertext, m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), other: Vec ($1_ristretto255_elgamal_Ciphertext)) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), other: Vec ($1_ristretto255_elgamal_Ciphertext)) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), new_len: int) returns (v: (Vec ($1_ristretto255_elgamal_Ciphertext)), m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), new_len: int) returns (v: (Vec ($1_ristretto255_elgamal_Ciphertext)), m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + var left_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var mid_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var right_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + var len: int; + var left_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var right_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + var left_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var mid_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var right_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var mid_left_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var mid_right_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), i: int, e: $1_ristretto255_elgamal_Ciphertext) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) { + var left_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var right_vec: Vec ($1_ristretto255_elgamal_Ciphertext); + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), i: int) returns (dst: $1_ristretto255_elgamal_Ciphertext) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), i: int): $1_ristretto255_elgamal_Ciphertext { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), index: int) +returns (dst: $Mutation ($1_ristretto255_elgamal_Ciphertext), m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) +{ + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), i: int): $1_ristretto255_elgamal_Ciphertext { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) +{ + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + 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_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), i: int, j: int): Vec ($1_ristretto255_elgamal_Ciphertext) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), i: int) returns (e: $1_ristretto255_elgamal_Ciphertext, m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) +{ + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + + 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_ristretto255_elgamal_Ciphertext'(m: $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext)), i: int) returns (e: $1_ristretto255_elgamal_Ciphertext, m': $Mutation (Vec ($1_ristretto255_elgamal_Ciphertext))) +{ + var len: int; + var v: Vec ($1_ristretto255_elgamal_Ciphertext); + + 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_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), e: $1_ristretto255_elgamal_Ciphertext) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_elgamal_Ciphertext'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_elgamal_Ciphertext'(v: Vec ($1_ristretto255_elgamal_Ciphertext), e: $1_ristretto255_elgamal_Ciphertext) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_elgamal_Ciphertext'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_elgamal_CompressedPubkey` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_elgamal_CompressedPubkey''(v1: Vec ($1_ristretto255_elgamal_CompressedPubkey), v2: Vec ($1_ristretto255_elgamal_CompressedPubkey)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_elgamal_CompressedPubkey''(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), prefix: Vec ($1_ristretto255_elgamal_CompressedPubkey)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_elgamal_CompressedPubkey''(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), suffix: Vec ($1_ristretto255_elgamal_CompressedPubkey)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_elgamal_CompressedPubkey''(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), e: $1_ristretto255_elgamal_CompressedPubkey): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), e: $1_ristretto255_elgamal_CompressedPubkey): int; +axiom (forall v: Vec ($1_ristretto255_elgamal_CompressedPubkey), e: $1_ristretto255_elgamal_CompressedPubkey:: {$IndexOfVec'$1_ristretto255_elgamal_CompressedPubkey'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_elgamal_CompressedPubkey'(v, e); + if (!$ContainsVec'$1_ristretto255_elgamal_CompressedPubkey'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_elgamal_CompressedPubkey'(): Vec ($1_ristretto255_elgamal_CompressedPubkey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_elgamal_CompressedPubkey'() returns (v: Vec ($1_ristretto255_elgamal_CompressedPubkey)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_elgamal_CompressedPubkey'(): Vec ($1_ristretto255_elgamal_CompressedPubkey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), val: $1_ristretto255_elgamal_CompressedPubkey) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), val: $1_ristretto255_elgamal_CompressedPubkey): Vec ($1_ristretto255_elgamal_CompressedPubkey) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) returns (e: $1_ristretto255_elgamal_CompressedPubkey, m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), other: Vec ($1_ristretto255_elgamal_CompressedPubkey)) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), other: Vec ($1_ristretto255_elgamal_CompressedPubkey)) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), new_len: int) returns (v: (Vec ($1_ristretto255_elgamal_CompressedPubkey)), m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), new_len: int) returns (v: (Vec ($1_ristretto255_elgamal_CompressedPubkey)), m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + var left_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var mid_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var right_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var len: int; + var left_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var right_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + var left_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var mid_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var right_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var mid_left_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var mid_right_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), i: int, e: $1_ristretto255_elgamal_CompressedPubkey) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) { + var left_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var right_vec: Vec ($1_ristretto255_elgamal_CompressedPubkey); + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), i: int) returns (dst: $1_ristretto255_elgamal_CompressedPubkey) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), i: int): $1_ristretto255_elgamal_CompressedPubkey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), index: int) +returns (dst: $Mutation ($1_ristretto255_elgamal_CompressedPubkey), m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) +{ + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), i: int): $1_ristretto255_elgamal_CompressedPubkey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) +{ + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + 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_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), i: int, j: int): Vec ($1_ristretto255_elgamal_CompressedPubkey) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), i: int) returns (e: $1_ristretto255_elgamal_CompressedPubkey, m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) +{ + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + + 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_ristretto255_elgamal_CompressedPubkey'(m: $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey)), i: int) returns (e: $1_ristretto255_elgamal_CompressedPubkey, m': $Mutation (Vec ($1_ristretto255_elgamal_CompressedPubkey))) +{ + var len: int; + var v: Vec ($1_ristretto255_elgamal_CompressedPubkey); + + 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_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), e: $1_ristretto255_elgamal_CompressedPubkey) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_elgamal_CompressedPubkey'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_elgamal_CompressedPubkey'(v: Vec ($1_ristretto255_elgamal_CompressedPubkey), e: $1_ristretto255_elgamal_CompressedPubkey) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_elgamal_CompressedPubkey'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_ristretto255_pedersen_Commitment` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_ristretto255_pedersen_Commitment''(v1: Vec ($1_ristretto255_pedersen_Commitment), v2: Vec ($1_ristretto255_pedersen_Commitment)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_ristretto255_pedersen_Commitment''(v: Vec ($1_ristretto255_pedersen_Commitment), prefix: Vec ($1_ristretto255_pedersen_Commitment)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_ristretto255_pedersen_Commitment''(v: Vec ($1_ristretto255_pedersen_Commitment), suffix: Vec ($1_ristretto255_pedersen_Commitment)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_ristretto255_pedersen_Commitment''(v: Vec ($1_ristretto255_pedersen_Commitment)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_ristretto255_pedersen_Commitment'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), e: $1_ristretto255_pedersen_Commitment): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), e: $1_ristretto255_pedersen_Commitment): int; +axiom (forall v: Vec ($1_ristretto255_pedersen_Commitment), e: $1_ristretto255_pedersen_Commitment:: {$IndexOfVec'$1_ristretto255_pedersen_Commitment'(v, e)} + (var i := $IndexOfVec'$1_ristretto255_pedersen_Commitment'(v, e); + if (!$ContainsVec'$1_ristretto255_pedersen_Commitment'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_ristretto255_pedersen_Commitment'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_ristretto255_pedersen_Commitment'(): Vec ($1_ristretto255_pedersen_Commitment) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_ristretto255_pedersen_Commitment'() returns (v: Vec ($1_ristretto255_pedersen_Commitment)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_ristretto255_pedersen_Commitment'(): Vec ($1_ristretto255_pedersen_Commitment) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), val: $1_ristretto255_pedersen_Commitment) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), val: $1_ristretto255_pedersen_Commitment): Vec ($1_ristretto255_pedersen_Commitment) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) returns (e: $1_ristretto255_pedersen_Commitment, m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + var v: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), other: Vec ($1_ristretto255_pedersen_Commitment)) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), other: Vec ($1_ristretto255_pedersen_Commitment)) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), new_len: int) returns (v: (Vec ($1_ristretto255_pedersen_Commitment)), m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), new_len: int) returns (v: (Vec ($1_ristretto255_pedersen_Commitment)), m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), left: int, right: int) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + var left_vec: Vec ($1_ristretto255_pedersen_Commitment); + var mid_vec: Vec ($1_ristretto255_pedersen_Commitment); + var right_vec: Vec ($1_ristretto255_pedersen_Commitment); + var v: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), rot: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + var v: Vec ($1_ristretto255_pedersen_Commitment); + var len: int; + var left_vec: Vec ($1_ristretto255_pedersen_Commitment); + var right_vec: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + var left_vec: Vec ($1_ristretto255_pedersen_Commitment); + var mid_vec: Vec ($1_ristretto255_pedersen_Commitment); + var right_vec: Vec ($1_ristretto255_pedersen_Commitment); + var mid_left_vec: Vec ($1_ristretto255_pedersen_Commitment); + var mid_right_vec: Vec ($1_ristretto255_pedersen_Commitment); + var v: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), i: int, e: $1_ristretto255_pedersen_Commitment) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) { + var left_vec: Vec ($1_ristretto255_pedersen_Commitment); + var right_vec: Vec ($1_ristretto255_pedersen_Commitment); + var v: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), i: int) returns (dst: $1_ristretto255_pedersen_Commitment) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), i: int): $1_ristretto255_pedersen_Commitment { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), index: int) +returns (dst: $Mutation ($1_ristretto255_pedersen_Commitment), m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) +{ + var v: Vec ($1_ristretto255_pedersen_Commitment); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), i: int): $1_ristretto255_pedersen_Commitment { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), i: int, j: int) returns (m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) +{ + var v: Vec ($1_ristretto255_pedersen_Commitment); + 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_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), i: int, j: int): Vec ($1_ristretto255_pedersen_Commitment) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), i: int) returns (e: $1_ristretto255_pedersen_Commitment, m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) +{ + var v: Vec ($1_ristretto255_pedersen_Commitment); + + 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_ristretto255_pedersen_Commitment'(m: $Mutation (Vec ($1_ristretto255_pedersen_Commitment)), i: int) returns (e: $1_ristretto255_pedersen_Commitment, m': $Mutation (Vec ($1_ristretto255_pedersen_Commitment))) +{ + var len: int; + var v: Vec ($1_ristretto255_pedersen_Commitment); + + 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_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), e: $1_ristretto255_pedersen_Commitment) returns (res: bool) { + res := $ContainsVec'$1_ristretto255_pedersen_Commitment'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_ristretto255_pedersen_Commitment'(v: Vec ($1_ristretto255_pedersen_Commitment), e: $1_ristretto255_pedersen_Commitment) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_ristretto255_pedersen_Commitment'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_royalty_MutatorRef` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_royalty_MutatorRef''(v1: Vec ($1_royalty_MutatorRef), v2: Vec ($1_royalty_MutatorRef)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_royalty_MutatorRef'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_royalty_MutatorRef''(v: Vec ($1_royalty_MutatorRef), prefix: Vec ($1_royalty_MutatorRef)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_royalty_MutatorRef'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_royalty_MutatorRef''(v: Vec ($1_royalty_MutatorRef), suffix: Vec ($1_royalty_MutatorRef)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_royalty_MutatorRef'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_royalty_MutatorRef''(v: Vec ($1_royalty_MutatorRef)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_royalty_MutatorRef'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), e: $1_royalty_MutatorRef): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_royalty_MutatorRef'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), e: $1_royalty_MutatorRef): int; +axiom (forall v: Vec ($1_royalty_MutatorRef), e: $1_royalty_MutatorRef:: {$IndexOfVec'$1_royalty_MutatorRef'(v, e)} + (var i := $IndexOfVec'$1_royalty_MutatorRef'(v, e); + if (!$ContainsVec'$1_royalty_MutatorRef'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_royalty_MutatorRef'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_royalty_MutatorRef'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_royalty_MutatorRef'(): Vec ($1_royalty_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_royalty_MutatorRef'() returns (v: Vec ($1_royalty_MutatorRef)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_royalty_MutatorRef'(): Vec ($1_royalty_MutatorRef) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), val: $1_royalty_MutatorRef) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), val: $1_royalty_MutatorRef): Vec ($1_royalty_MutatorRef) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef))) returns (e: $1_royalty_MutatorRef, m': $Mutation (Vec ($1_royalty_MutatorRef))) { + var v: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), other: Vec ($1_royalty_MutatorRef)) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef))) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), other: Vec ($1_royalty_MutatorRef)) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), new_len: int) returns (v: (Vec ($1_royalty_MutatorRef)), m': $Mutation (Vec ($1_royalty_MutatorRef))) { + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), new_len: int) returns (v: (Vec ($1_royalty_MutatorRef)), m': $Mutation (Vec ($1_royalty_MutatorRef))) { + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), left: int, right: int) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + var left_vec: Vec ($1_royalty_MutatorRef); + var mid_vec: Vec ($1_royalty_MutatorRef); + var right_vec: Vec ($1_royalty_MutatorRef); + var v: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), rot: int) returns (n: int, m': $Mutation (Vec ($1_royalty_MutatorRef))) { + var v: Vec ($1_royalty_MutatorRef); + var len: int; + var left_vec: Vec ($1_royalty_MutatorRef); + var right_vec: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_royalty_MutatorRef))) { + var left_vec: Vec ($1_royalty_MutatorRef); + var mid_vec: Vec ($1_royalty_MutatorRef); + var right_vec: Vec ($1_royalty_MutatorRef); + var mid_left_vec: Vec ($1_royalty_MutatorRef); + var mid_right_vec: Vec ($1_royalty_MutatorRef); + var v: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), i: int, e: $1_royalty_MutatorRef) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) { + var left_vec: Vec ($1_royalty_MutatorRef); + var right_vec: Vec ($1_royalty_MutatorRef); + var v: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), i: int) returns (dst: $1_royalty_MutatorRef) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), i: int): $1_royalty_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), index: int) +returns (dst: $Mutation ($1_royalty_MutatorRef), m': $Mutation (Vec ($1_royalty_MutatorRef))) +{ + var v: Vec ($1_royalty_MutatorRef); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), i: int): $1_royalty_MutatorRef { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), i: int, j: int) returns (m': $Mutation (Vec ($1_royalty_MutatorRef))) +{ + var v: Vec ($1_royalty_MutatorRef); + 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_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), i: int, j: int): Vec ($1_royalty_MutatorRef) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), i: int) returns (e: $1_royalty_MutatorRef, m': $Mutation (Vec ($1_royalty_MutatorRef))) +{ + var v: Vec ($1_royalty_MutatorRef); + + 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_royalty_MutatorRef'(m: $Mutation (Vec ($1_royalty_MutatorRef)), i: int) returns (e: $1_royalty_MutatorRef, m': $Mutation (Vec ($1_royalty_MutatorRef))) +{ + var len: int; + var v: Vec ($1_royalty_MutatorRef); + + 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_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), e: $1_royalty_MutatorRef) returns (res: bool) { + res := $ContainsVec'$1_royalty_MutatorRef'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_royalty_MutatorRef'(v: Vec ($1_royalty_MutatorRef), e: $1_royalty_MutatorRef) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_royalty_MutatorRef'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_royalty_Royalty` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_royalty_Royalty''(v1: Vec ($1_royalty_Royalty), v2: Vec ($1_royalty_Royalty)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_royalty_Royalty'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_royalty_Royalty''(v: Vec ($1_royalty_Royalty), prefix: Vec ($1_royalty_Royalty)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_royalty_Royalty'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_royalty_Royalty''(v: Vec ($1_royalty_Royalty), suffix: Vec ($1_royalty_Royalty)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_royalty_Royalty'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_royalty_Royalty''(v: Vec ($1_royalty_Royalty)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_royalty_Royalty'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), e: $1_royalty_Royalty): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_royalty_Royalty'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), e: $1_royalty_Royalty): int; +axiom (forall v: Vec ($1_royalty_Royalty), e: $1_royalty_Royalty:: {$IndexOfVec'$1_royalty_Royalty'(v, e)} + (var i := $IndexOfVec'$1_royalty_Royalty'(v, e); + if (!$ContainsVec'$1_royalty_Royalty'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_royalty_Royalty'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_royalty_Royalty'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_royalty_Royalty'(): Vec ($1_royalty_Royalty) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_royalty_Royalty'() returns (v: Vec ($1_royalty_Royalty)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_royalty_Royalty'(): Vec ($1_royalty_Royalty) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), val: $1_royalty_Royalty) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), val: $1_royalty_Royalty): Vec ($1_royalty_Royalty) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty))) returns (e: $1_royalty_Royalty, m': $Mutation (Vec ($1_royalty_Royalty))) { + var v: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), other: Vec ($1_royalty_Royalty)) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty))) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), other: Vec ($1_royalty_Royalty)) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), new_len: int) returns (v: (Vec ($1_royalty_Royalty)), m': $Mutation (Vec ($1_royalty_Royalty))) { + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), new_len: int) returns (v: (Vec ($1_royalty_Royalty)), m': $Mutation (Vec ($1_royalty_Royalty))) { + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), left: int, right: int) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + var left_vec: Vec ($1_royalty_Royalty); + var mid_vec: Vec ($1_royalty_Royalty); + var right_vec: Vec ($1_royalty_Royalty); + var v: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), rot: int) returns (n: int, m': $Mutation (Vec ($1_royalty_Royalty))) { + var v: Vec ($1_royalty_Royalty); + var len: int; + var left_vec: Vec ($1_royalty_Royalty); + var right_vec: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_royalty_Royalty))) { + var left_vec: Vec ($1_royalty_Royalty); + var mid_vec: Vec ($1_royalty_Royalty); + var right_vec: Vec ($1_royalty_Royalty); + var mid_left_vec: Vec ($1_royalty_Royalty); + var mid_right_vec: Vec ($1_royalty_Royalty); + var v: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), i: int, e: $1_royalty_Royalty) returns (m': $Mutation (Vec ($1_royalty_Royalty))) { + var left_vec: Vec ($1_royalty_Royalty); + var right_vec: Vec ($1_royalty_Royalty); + var v: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(v: Vec ($1_royalty_Royalty)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), i: int) returns (dst: $1_royalty_Royalty) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), i: int): $1_royalty_Royalty { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), index: int) +returns (dst: $Mutation ($1_royalty_Royalty), m': $Mutation (Vec ($1_royalty_Royalty))) +{ + var v: Vec ($1_royalty_Royalty); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), i: int): $1_royalty_Royalty { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), i: int, j: int) returns (m': $Mutation (Vec ($1_royalty_Royalty))) +{ + var v: Vec ($1_royalty_Royalty); + 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_royalty_Royalty'(v: Vec ($1_royalty_Royalty), i: int, j: int): Vec ($1_royalty_Royalty) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), i: int) returns (e: $1_royalty_Royalty, m': $Mutation (Vec ($1_royalty_Royalty))) +{ + var v: Vec ($1_royalty_Royalty); + + 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_royalty_Royalty'(m: $Mutation (Vec ($1_royalty_Royalty)), i: int) returns (e: $1_royalty_Royalty, m': $Mutation (Vec ($1_royalty_Royalty))) +{ + var len: int; + var v: Vec ($1_royalty_Royalty); + + 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_royalty_Royalty'(v: Vec ($1_royalty_Royalty), e: $1_royalty_Royalty) returns (res: bool) { + res := $ContainsVec'$1_royalty_Royalty'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_royalty_Royalty'(v: Vec ($1_royalty_Royalty), e: $1_royalty_Royalty) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_royalty_Royalty'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_secp256k1_ECDSARawPublicKey` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_secp256k1_ECDSARawPublicKey''(v1: Vec ($1_secp256k1_ECDSARawPublicKey), v2: Vec ($1_secp256k1_ECDSARawPublicKey)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_secp256k1_ECDSARawPublicKey''(v: Vec ($1_secp256k1_ECDSARawPublicKey), prefix: Vec ($1_secp256k1_ECDSARawPublicKey)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_secp256k1_ECDSARawPublicKey''(v: Vec ($1_secp256k1_ECDSARawPublicKey), suffix: Vec ($1_secp256k1_ECDSARawPublicKey)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_secp256k1_ECDSARawPublicKey''(v: Vec ($1_secp256k1_ECDSARawPublicKey)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), e: $1_secp256k1_ECDSARawPublicKey): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), e: $1_secp256k1_ECDSARawPublicKey): int; +axiom (forall v: Vec ($1_secp256k1_ECDSARawPublicKey), e: $1_secp256k1_ECDSARawPublicKey:: {$IndexOfVec'$1_secp256k1_ECDSARawPublicKey'(v, e)} + (var i := $IndexOfVec'$1_secp256k1_ECDSARawPublicKey'(v, e); + if (!$ContainsVec'$1_secp256k1_ECDSARawPublicKey'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_secp256k1_ECDSARawPublicKey'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_secp256k1_ECDSARawPublicKey'(): Vec ($1_secp256k1_ECDSARawPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_secp256k1_ECDSARawPublicKey'() returns (v: Vec ($1_secp256k1_ECDSARawPublicKey)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_secp256k1_ECDSARawPublicKey'(): Vec ($1_secp256k1_ECDSARawPublicKey) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), val: $1_secp256k1_ECDSARawPublicKey) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), val: $1_secp256k1_ECDSARawPublicKey): Vec ($1_secp256k1_ECDSARawPublicKey) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) returns (e: $1_secp256k1_ECDSARawPublicKey, m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), other: Vec ($1_secp256k1_ECDSARawPublicKey)) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), other: Vec ($1_secp256k1_ECDSARawPublicKey)) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), new_len: int) returns (v: (Vec ($1_secp256k1_ECDSARawPublicKey)), m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), new_len: int) returns (v: (Vec ($1_secp256k1_ECDSARawPublicKey)), m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), left: int, right: int) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + var left_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var mid_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var right_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), rot: int) returns (n: int, m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + var len: int; + var left_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var right_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + var left_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var mid_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var right_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var mid_left_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var mid_right_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), i: int, e: $1_secp256k1_ECDSARawPublicKey) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) { + var left_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var right_vec: Vec ($1_secp256k1_ECDSARawPublicKey); + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), i: int) returns (dst: $1_secp256k1_ECDSARawPublicKey) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), i: int): $1_secp256k1_ECDSARawPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), index: int) +returns (dst: $Mutation ($1_secp256k1_ECDSARawPublicKey), m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) +{ + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), i: int): $1_secp256k1_ECDSARawPublicKey { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), i: int, j: int) returns (m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) +{ + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + 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_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), i: int, j: int): Vec ($1_secp256k1_ECDSARawPublicKey) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), i: int) returns (e: $1_secp256k1_ECDSARawPublicKey, m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) +{ + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + + 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_secp256k1_ECDSARawPublicKey'(m: $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey)), i: int) returns (e: $1_secp256k1_ECDSARawPublicKey, m': $Mutation (Vec ($1_secp256k1_ECDSARawPublicKey))) +{ + var len: int; + var v: Vec ($1_secp256k1_ECDSARawPublicKey); + + 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_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), e: $1_secp256k1_ECDSARawPublicKey) returns (res: bool) { + res := $ContainsVec'$1_secp256k1_ECDSARawPublicKey'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_secp256k1_ECDSARawPublicKey'(v: Vec ($1_secp256k1_ECDSARawPublicKey), e: $1_secp256k1_ECDSARawPublicKey) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_secp256k1_ECDSARawPublicKey'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_starcoin_coin_DelegatedMintCapability` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_starcoin_coin_DelegatedMintCapability''(v1: Vec ($1_starcoin_coin_DelegatedMintCapability), v2: Vec ($1_starcoin_coin_DelegatedMintCapability)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_starcoin_coin_DelegatedMintCapability''(v: Vec ($1_starcoin_coin_DelegatedMintCapability), prefix: Vec ($1_starcoin_coin_DelegatedMintCapability)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_starcoin_coin_DelegatedMintCapability''(v: Vec ($1_starcoin_coin_DelegatedMintCapability), suffix: Vec ($1_starcoin_coin_DelegatedMintCapability)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_starcoin_coin_DelegatedMintCapability''(v: Vec ($1_starcoin_coin_DelegatedMintCapability)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), e: $1_starcoin_coin_DelegatedMintCapability): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), e: $1_starcoin_coin_DelegatedMintCapability): int; +axiom (forall v: Vec ($1_starcoin_coin_DelegatedMintCapability), e: $1_starcoin_coin_DelegatedMintCapability:: {$IndexOfVec'$1_starcoin_coin_DelegatedMintCapability'(v, e)} + (var i := $IndexOfVec'$1_starcoin_coin_DelegatedMintCapability'(v, e); + if (!$ContainsVec'$1_starcoin_coin_DelegatedMintCapability'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_starcoin_coin_DelegatedMintCapability'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_starcoin_coin_DelegatedMintCapability'(): Vec ($1_starcoin_coin_DelegatedMintCapability) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_starcoin_coin_DelegatedMintCapability'() returns (v: Vec ($1_starcoin_coin_DelegatedMintCapability)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_starcoin_coin_DelegatedMintCapability'(): Vec ($1_starcoin_coin_DelegatedMintCapability) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), val: $1_starcoin_coin_DelegatedMintCapability) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), val: $1_starcoin_coin_DelegatedMintCapability): Vec ($1_starcoin_coin_DelegatedMintCapability) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) returns (e: $1_starcoin_coin_DelegatedMintCapability, m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), other: Vec ($1_starcoin_coin_DelegatedMintCapability)) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), other: Vec ($1_starcoin_coin_DelegatedMintCapability)) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), new_len: int) returns (v: (Vec ($1_starcoin_coin_DelegatedMintCapability)), m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), new_len: int) returns (v: (Vec ($1_starcoin_coin_DelegatedMintCapability)), m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), left: int, right: int) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + var left_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var mid_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var right_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), rot: int) returns (n: int, m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + var len: int; + var left_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var right_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + var left_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var mid_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var right_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var mid_left_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var mid_right_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), i: int, e: $1_starcoin_coin_DelegatedMintCapability) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) { + var left_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var right_vec: Vec ($1_starcoin_coin_DelegatedMintCapability); + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), i: int) returns (dst: $1_starcoin_coin_DelegatedMintCapability) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), i: int): $1_starcoin_coin_DelegatedMintCapability { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), index: int) +returns (dst: $Mutation ($1_starcoin_coin_DelegatedMintCapability), m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) +{ + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), i: int): $1_starcoin_coin_DelegatedMintCapability { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), i: int, j: int) returns (m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) +{ + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + 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_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), i: int, j: int): Vec ($1_starcoin_coin_DelegatedMintCapability) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), i: int) returns (e: $1_starcoin_coin_DelegatedMintCapability, m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) +{ + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + + 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_starcoin_coin_DelegatedMintCapability'(m: $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability)), i: int) returns (e: $1_starcoin_coin_DelegatedMintCapability, m': $Mutation (Vec ($1_starcoin_coin_DelegatedMintCapability))) +{ + var len: int; + var v: Vec ($1_starcoin_coin_DelegatedMintCapability); + + 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_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), e: $1_starcoin_coin_DelegatedMintCapability) returns (res: bool) { + res := $ContainsVec'$1_starcoin_coin_DelegatedMintCapability'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_starcoin_coin_DelegatedMintCapability'(v: Vec ($1_starcoin_coin_DelegatedMintCapability), e: $1_starcoin_coin_DelegatedMintCapability) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_starcoin_coin_DelegatedMintCapability'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_starcoin_coin_STC` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_starcoin_coin_STC''(v1: Vec ($1_starcoin_coin_STC), v2: Vec ($1_starcoin_coin_STC)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_starcoin_coin_STC'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_starcoin_coin_STC''(v: Vec ($1_starcoin_coin_STC), prefix: Vec ($1_starcoin_coin_STC)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_starcoin_coin_STC'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_starcoin_coin_STC''(v: Vec ($1_starcoin_coin_STC), suffix: Vec ($1_starcoin_coin_STC)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_starcoin_coin_STC'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_starcoin_coin_STC''(v: Vec ($1_starcoin_coin_STC)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_starcoin_coin_STC'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), e: $1_starcoin_coin_STC): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_starcoin_coin_STC'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), e: $1_starcoin_coin_STC): int; +axiom (forall v: Vec ($1_starcoin_coin_STC), e: $1_starcoin_coin_STC:: {$IndexOfVec'$1_starcoin_coin_STC'(v, e)} + (var i := $IndexOfVec'$1_starcoin_coin_STC'(v, e); + if (!$ContainsVec'$1_starcoin_coin_STC'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_starcoin_coin_STC'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_starcoin_coin_STC'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_starcoin_coin_STC'(): Vec ($1_starcoin_coin_STC) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_starcoin_coin_STC'() returns (v: Vec ($1_starcoin_coin_STC)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_starcoin_coin_STC'(): Vec ($1_starcoin_coin_STC) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), val: $1_starcoin_coin_STC) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), val: $1_starcoin_coin_STC): Vec ($1_starcoin_coin_STC) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC))) returns (e: $1_starcoin_coin_STC, m': $Mutation (Vec ($1_starcoin_coin_STC))) { + var v: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), other: Vec ($1_starcoin_coin_STC)) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC))) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), other: Vec ($1_starcoin_coin_STC)) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), new_len: int) returns (v: (Vec ($1_starcoin_coin_STC)), m': $Mutation (Vec ($1_starcoin_coin_STC))) { + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), new_len: int) returns (v: (Vec ($1_starcoin_coin_STC)), m': $Mutation (Vec ($1_starcoin_coin_STC))) { + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), left: int, right: int) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + var left_vec: Vec ($1_starcoin_coin_STC); + var mid_vec: Vec ($1_starcoin_coin_STC); + var right_vec: Vec ($1_starcoin_coin_STC); + var v: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), rot: int) returns (n: int, m': $Mutation (Vec ($1_starcoin_coin_STC))) { + var v: Vec ($1_starcoin_coin_STC); + var len: int; + var left_vec: Vec ($1_starcoin_coin_STC); + var right_vec: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_starcoin_coin_STC))) { + var left_vec: Vec ($1_starcoin_coin_STC); + var mid_vec: Vec ($1_starcoin_coin_STC); + var right_vec: Vec ($1_starcoin_coin_STC); + var mid_left_vec: Vec ($1_starcoin_coin_STC); + var mid_right_vec: Vec ($1_starcoin_coin_STC); + var v: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), i: int, e: $1_starcoin_coin_STC) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) { + var left_vec: Vec ($1_starcoin_coin_STC); + var right_vec: Vec ($1_starcoin_coin_STC); + var v: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), i: int) returns (dst: $1_starcoin_coin_STC) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), i: int): $1_starcoin_coin_STC { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), index: int) +returns (dst: $Mutation ($1_starcoin_coin_STC), m': $Mutation (Vec ($1_starcoin_coin_STC))) +{ + var v: Vec ($1_starcoin_coin_STC); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), i: int): $1_starcoin_coin_STC { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), i: int, j: int) returns (m': $Mutation (Vec ($1_starcoin_coin_STC))) +{ + var v: Vec ($1_starcoin_coin_STC); + 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_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), i: int, j: int): Vec ($1_starcoin_coin_STC) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), i: int) returns (e: $1_starcoin_coin_STC, m': $Mutation (Vec ($1_starcoin_coin_STC))) +{ + var v: Vec ($1_starcoin_coin_STC); + + 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_starcoin_coin_STC'(m: $Mutation (Vec ($1_starcoin_coin_STC)), i: int) returns (e: $1_starcoin_coin_STC, m': $Mutation (Vec ($1_starcoin_coin_STC))) +{ + var len: int; + var v: Vec ($1_starcoin_coin_STC); + + 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_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), e: $1_starcoin_coin_STC) returns (res: bool) { + res := $ContainsVec'$1_starcoin_coin_STC'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_starcoin_coin_STC'(v: Vec ($1_starcoin_coin_STC), e: $1_starcoin_coin_STC) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_starcoin_coin_STC'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_string_String` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_string_String''(v1: Vec ($1_string_String), v2: Vec ($1_string_String)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_string_String'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_string_String''(v: Vec ($1_string_String), prefix: Vec ($1_string_String)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_string_String'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_string_String''(v: Vec ($1_string_String), suffix: Vec ($1_string_String)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_string_String'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_string_String''(v: Vec ($1_string_String)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_string_String'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_string_String'(v: Vec ($1_string_String), e: $1_string_String): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_string_String'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_string_String'(v: Vec ($1_string_String), e: $1_string_String): int; +axiom (forall v: Vec ($1_string_String), e: $1_string_String:: {$IndexOfVec'$1_string_String'(v, e)} + (var i := $IndexOfVec'$1_string_String'(v, e); + if (!$ContainsVec'$1_string_String'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_string_String'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_string_String'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_string_String'(v: Vec ($1_string_String)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_string_String'(): Vec ($1_string_String) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_string_String'() returns (v: Vec ($1_string_String)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_string_String'(): Vec ($1_string_String) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_string_String'(v: Vec ($1_string_String)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_string_String'(m: $Mutation (Vec ($1_string_String)), val: $1_string_String) returns (m': $Mutation (Vec ($1_string_String))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_string_String'(v: Vec ($1_string_String), val: $1_string_String): Vec ($1_string_String) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_string_String'(m: $Mutation (Vec ($1_string_String))) returns (e: $1_string_String, m': $Mutation (Vec ($1_string_String))) { + var v: Vec ($1_string_String); + 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_string_String'(m: $Mutation (Vec ($1_string_String)), other: Vec ($1_string_String)) returns (m': $Mutation (Vec ($1_string_String))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_string_String'(m: $Mutation (Vec ($1_string_String))) returns (m': $Mutation (Vec ($1_string_String))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_string_String'(m: $Mutation (Vec ($1_string_String)), other: Vec ($1_string_String)) returns (m': $Mutation (Vec ($1_string_String))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_string_String'(m: $Mutation (Vec ($1_string_String)), new_len: int) returns (v: (Vec ($1_string_String)), m': $Mutation (Vec ($1_string_String))) { + 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_string_String'(m: $Mutation (Vec ($1_string_String)), new_len: int) returns (v: (Vec ($1_string_String)), m': $Mutation (Vec ($1_string_String))) { + 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_string_String'(m: $Mutation (Vec ($1_string_String)), left: int, right: int) returns (m': $Mutation (Vec ($1_string_String))) { + var left_vec: Vec ($1_string_String); + var mid_vec: Vec ($1_string_String); + var right_vec: Vec ($1_string_String); + var v: Vec ($1_string_String); + 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_string_String'(m: $Mutation (Vec ($1_string_String)), rot: int) returns (n: int, m': $Mutation (Vec ($1_string_String))) { + var v: Vec ($1_string_String); + var len: int; + var left_vec: Vec ($1_string_String); + var right_vec: Vec ($1_string_String); + 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_string_String'(m: $Mutation (Vec ($1_string_String)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_string_String))) { + var left_vec: Vec ($1_string_String); + var mid_vec: Vec ($1_string_String); + var right_vec: Vec ($1_string_String); + var mid_left_vec: Vec ($1_string_String); + var mid_right_vec: Vec ($1_string_String); + var v: Vec ($1_string_String); + 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_string_String'(m: $Mutation (Vec ($1_string_String)), i: int, e: $1_string_String) returns (m': $Mutation (Vec ($1_string_String))) { + var left_vec: Vec ($1_string_String); + var right_vec: Vec ($1_string_String); + var v: Vec ($1_string_String); + 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_string_String'(v: Vec ($1_string_String)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_string_String'(v: Vec ($1_string_String)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_string_String'(v: Vec ($1_string_String), i: int) returns (dst: $1_string_String) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_string_String'(v: Vec ($1_string_String), i: int): $1_string_String { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_string_String'(m: $Mutation (Vec ($1_string_String)), index: int) +returns (dst: $Mutation ($1_string_String), m': $Mutation (Vec ($1_string_String))) +{ + var v: Vec ($1_string_String); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_string_String'(v: Vec ($1_string_String), i: int): $1_string_String { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_string_String'(v: Vec ($1_string_String)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_string_String'(m: $Mutation (Vec ($1_string_String)), i: int, j: int) returns (m': $Mutation (Vec ($1_string_String))) +{ + var v: Vec ($1_string_String); + 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_string_String'(v: Vec ($1_string_String), i: int, j: int): Vec ($1_string_String) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_string_String'(m: $Mutation (Vec ($1_string_String)), i: int) returns (e: $1_string_String, m': $Mutation (Vec ($1_string_String))) +{ + var v: Vec ($1_string_String); + + 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_string_String'(m: $Mutation (Vec ($1_string_String)), i: int) returns (e: $1_string_String, m': $Mutation (Vec ($1_string_String))) +{ + var len: int; + var v: Vec ($1_string_String); + + 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_string_String'(v: Vec ($1_string_String), e: $1_string_String) returns (res: bool) { + res := $ContainsVec'$1_string_String'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_string_String'(v: Vec ($1_string_String), e: $1_string_String) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_string_String'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_token_WithdrawCapability` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_token_WithdrawCapability''(v1: Vec ($1_token_WithdrawCapability), v2: Vec ($1_token_WithdrawCapability)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_token_WithdrawCapability'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_token_WithdrawCapability''(v: Vec ($1_token_WithdrawCapability), prefix: Vec ($1_token_WithdrawCapability)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_token_WithdrawCapability'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_token_WithdrawCapability''(v: Vec ($1_token_WithdrawCapability), suffix: Vec ($1_token_WithdrawCapability)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_token_WithdrawCapability'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_token_WithdrawCapability''(v: Vec ($1_token_WithdrawCapability)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_token_WithdrawCapability'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), e: $1_token_WithdrawCapability): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_token_WithdrawCapability'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), e: $1_token_WithdrawCapability): int; +axiom (forall v: Vec ($1_token_WithdrawCapability), e: $1_token_WithdrawCapability:: {$IndexOfVec'$1_token_WithdrawCapability'(v, e)} + (var i := $IndexOfVec'$1_token_WithdrawCapability'(v, e); + if (!$ContainsVec'$1_token_WithdrawCapability'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_token_WithdrawCapability'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_token_WithdrawCapability'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_token_WithdrawCapability'(): Vec ($1_token_WithdrawCapability) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_token_WithdrawCapability'() returns (v: Vec ($1_token_WithdrawCapability)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_token_WithdrawCapability'(): Vec ($1_token_WithdrawCapability) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), val: $1_token_WithdrawCapability) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), val: $1_token_WithdrawCapability): Vec ($1_token_WithdrawCapability) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability))) returns (e: $1_token_WithdrawCapability, m': $Mutation (Vec ($1_token_WithdrawCapability))) { + var v: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), other: Vec ($1_token_WithdrawCapability)) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability))) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), other: Vec ($1_token_WithdrawCapability)) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), new_len: int) returns (v: (Vec ($1_token_WithdrawCapability)), m': $Mutation (Vec ($1_token_WithdrawCapability))) { + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), new_len: int) returns (v: (Vec ($1_token_WithdrawCapability)), m': $Mutation (Vec ($1_token_WithdrawCapability))) { + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), left: int, right: int) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + var left_vec: Vec ($1_token_WithdrawCapability); + var mid_vec: Vec ($1_token_WithdrawCapability); + var right_vec: Vec ($1_token_WithdrawCapability); + var v: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), rot: int) returns (n: int, m': $Mutation (Vec ($1_token_WithdrawCapability))) { + var v: Vec ($1_token_WithdrawCapability); + var len: int; + var left_vec: Vec ($1_token_WithdrawCapability); + var right_vec: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_token_WithdrawCapability))) { + var left_vec: Vec ($1_token_WithdrawCapability); + var mid_vec: Vec ($1_token_WithdrawCapability); + var right_vec: Vec ($1_token_WithdrawCapability); + var mid_left_vec: Vec ($1_token_WithdrawCapability); + var mid_right_vec: Vec ($1_token_WithdrawCapability); + var v: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), i: int, e: $1_token_WithdrawCapability) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) { + var left_vec: Vec ($1_token_WithdrawCapability); + var right_vec: Vec ($1_token_WithdrawCapability); + var v: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), i: int) returns (dst: $1_token_WithdrawCapability) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), i: int): $1_token_WithdrawCapability { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), index: int) +returns (dst: $Mutation ($1_token_WithdrawCapability), m': $Mutation (Vec ($1_token_WithdrawCapability))) +{ + var v: Vec ($1_token_WithdrawCapability); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), i: int): $1_token_WithdrawCapability { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), i: int, j: int) returns (m': $Mutation (Vec ($1_token_WithdrawCapability))) +{ + var v: Vec ($1_token_WithdrawCapability); + 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_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), i: int, j: int): Vec ($1_token_WithdrawCapability) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), i: int) returns (e: $1_token_WithdrawCapability, m': $Mutation (Vec ($1_token_WithdrawCapability))) +{ + var v: Vec ($1_token_WithdrawCapability); + + 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_token_WithdrawCapability'(m: $Mutation (Vec ($1_token_WithdrawCapability)), i: int) returns (e: $1_token_WithdrawCapability, m': $Mutation (Vec ($1_token_WithdrawCapability))) +{ + var len: int; + var v: Vec ($1_token_WithdrawCapability); + + 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_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), e: $1_token_WithdrawCapability) returns (res: bool) { + res := $ContainsVec'$1_token_WithdrawCapability'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_token_WithdrawCapability'(v: Vec ($1_token_WithdrawCapability), e: $1_token_WithdrawCapability) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_token_WithdrawCapability'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_transaction_context_EntryFunctionPayload` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_transaction_context_EntryFunctionPayload''(v1: Vec ($1_transaction_context_EntryFunctionPayload), v2: Vec ($1_transaction_context_EntryFunctionPayload)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_transaction_context_EntryFunctionPayload''(v: Vec ($1_transaction_context_EntryFunctionPayload), prefix: Vec ($1_transaction_context_EntryFunctionPayload)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_transaction_context_EntryFunctionPayload''(v: Vec ($1_transaction_context_EntryFunctionPayload), suffix: Vec ($1_transaction_context_EntryFunctionPayload)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_transaction_context_EntryFunctionPayload''(v: Vec ($1_transaction_context_EntryFunctionPayload)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), e: $1_transaction_context_EntryFunctionPayload): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), e: $1_transaction_context_EntryFunctionPayload): int; +axiom (forall v: Vec ($1_transaction_context_EntryFunctionPayload), e: $1_transaction_context_EntryFunctionPayload:: {$IndexOfVec'$1_transaction_context_EntryFunctionPayload'(v, e)} + (var i := $IndexOfVec'$1_transaction_context_EntryFunctionPayload'(v, e); + if (!$ContainsVec'$1_transaction_context_EntryFunctionPayload'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_transaction_context_EntryFunctionPayload'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_transaction_context_EntryFunctionPayload'(): Vec ($1_transaction_context_EntryFunctionPayload) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_transaction_context_EntryFunctionPayload'() returns (v: Vec ($1_transaction_context_EntryFunctionPayload)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_transaction_context_EntryFunctionPayload'(): Vec ($1_transaction_context_EntryFunctionPayload) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), val: $1_transaction_context_EntryFunctionPayload) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), val: $1_transaction_context_EntryFunctionPayload): Vec ($1_transaction_context_EntryFunctionPayload) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) returns (e: $1_transaction_context_EntryFunctionPayload, m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + var v: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), other: Vec ($1_transaction_context_EntryFunctionPayload)) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), other: Vec ($1_transaction_context_EntryFunctionPayload)) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), new_len: int) returns (v: (Vec ($1_transaction_context_EntryFunctionPayload)), m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), new_len: int) returns (v: (Vec ($1_transaction_context_EntryFunctionPayload)), m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), left: int, right: int) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + var left_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var mid_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var right_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var v: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), rot: int) returns (n: int, m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + var v: Vec ($1_transaction_context_EntryFunctionPayload); + var len: int; + var left_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var right_vec: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + var left_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var mid_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var right_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var mid_left_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var mid_right_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var v: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), i: int, e: $1_transaction_context_EntryFunctionPayload) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) { + var left_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var right_vec: Vec ($1_transaction_context_EntryFunctionPayload); + var v: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), i: int) returns (dst: $1_transaction_context_EntryFunctionPayload) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), i: int): $1_transaction_context_EntryFunctionPayload { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), index: int) +returns (dst: $Mutation ($1_transaction_context_EntryFunctionPayload), m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) +{ + var v: Vec ($1_transaction_context_EntryFunctionPayload); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), i: int): $1_transaction_context_EntryFunctionPayload { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), i: int, j: int) returns (m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) +{ + var v: Vec ($1_transaction_context_EntryFunctionPayload); + 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_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), i: int, j: int): Vec ($1_transaction_context_EntryFunctionPayload) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), i: int) returns (e: $1_transaction_context_EntryFunctionPayload, m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) +{ + var v: Vec ($1_transaction_context_EntryFunctionPayload); + + 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_transaction_context_EntryFunctionPayload'(m: $Mutation (Vec ($1_transaction_context_EntryFunctionPayload)), i: int) returns (e: $1_transaction_context_EntryFunctionPayload, m': $Mutation (Vec ($1_transaction_context_EntryFunctionPayload))) +{ + var len: int; + var v: Vec ($1_transaction_context_EntryFunctionPayload); + + 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_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), e: $1_transaction_context_EntryFunctionPayload) returns (res: bool) { + res := $ContainsVec'$1_transaction_context_EntryFunctionPayload'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_transaction_context_EntryFunctionPayload'(v: Vec ($1_transaction_context_EntryFunctionPayload), e: $1_transaction_context_EntryFunctionPayload) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_transaction_context_EntryFunctionPayload'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_transaction_context_MultisigPayload` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_transaction_context_MultisigPayload''(v1: Vec ($1_transaction_context_MultisigPayload), v2: Vec ($1_transaction_context_MultisigPayload)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_transaction_context_MultisigPayload''(v: Vec ($1_transaction_context_MultisigPayload), prefix: Vec ($1_transaction_context_MultisigPayload)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_transaction_context_MultisigPayload''(v: Vec ($1_transaction_context_MultisigPayload), suffix: Vec ($1_transaction_context_MultisigPayload)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_transaction_context_MultisigPayload''(v: Vec ($1_transaction_context_MultisigPayload)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_transaction_context_MultisigPayload'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), e: $1_transaction_context_MultisigPayload): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), e: $1_transaction_context_MultisigPayload): int; +axiom (forall v: Vec ($1_transaction_context_MultisigPayload), e: $1_transaction_context_MultisigPayload:: {$IndexOfVec'$1_transaction_context_MultisigPayload'(v, e)} + (var i := $IndexOfVec'$1_transaction_context_MultisigPayload'(v, e); + if (!$ContainsVec'$1_transaction_context_MultisigPayload'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_transaction_context_MultisigPayload'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_transaction_context_MultisigPayload'(): Vec ($1_transaction_context_MultisigPayload) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_transaction_context_MultisigPayload'() returns (v: Vec ($1_transaction_context_MultisigPayload)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_transaction_context_MultisigPayload'(): Vec ($1_transaction_context_MultisigPayload) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), val: $1_transaction_context_MultisigPayload) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), val: $1_transaction_context_MultisigPayload): Vec ($1_transaction_context_MultisigPayload) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload))) returns (e: $1_transaction_context_MultisigPayload, m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + var v: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), other: Vec ($1_transaction_context_MultisigPayload)) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload))) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), other: Vec ($1_transaction_context_MultisigPayload)) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), new_len: int) returns (v: (Vec ($1_transaction_context_MultisigPayload)), m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), new_len: int) returns (v: (Vec ($1_transaction_context_MultisigPayload)), m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), left: int, right: int) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + var left_vec: Vec ($1_transaction_context_MultisigPayload); + var mid_vec: Vec ($1_transaction_context_MultisigPayload); + var right_vec: Vec ($1_transaction_context_MultisigPayload); + var v: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), rot: int) returns (n: int, m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + var v: Vec ($1_transaction_context_MultisigPayload); + var len: int; + var left_vec: Vec ($1_transaction_context_MultisigPayload); + var right_vec: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + var left_vec: Vec ($1_transaction_context_MultisigPayload); + var mid_vec: Vec ($1_transaction_context_MultisigPayload); + var right_vec: Vec ($1_transaction_context_MultisigPayload); + var mid_left_vec: Vec ($1_transaction_context_MultisigPayload); + var mid_right_vec: Vec ($1_transaction_context_MultisigPayload); + var v: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), i: int, e: $1_transaction_context_MultisigPayload) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) { + var left_vec: Vec ($1_transaction_context_MultisigPayload); + var right_vec: Vec ($1_transaction_context_MultisigPayload); + var v: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), i: int) returns (dst: $1_transaction_context_MultisigPayload) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), i: int): $1_transaction_context_MultisigPayload { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), index: int) +returns (dst: $Mutation ($1_transaction_context_MultisigPayload), m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) +{ + var v: Vec ($1_transaction_context_MultisigPayload); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), i: int): $1_transaction_context_MultisigPayload { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), i: int, j: int) returns (m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) +{ + var v: Vec ($1_transaction_context_MultisigPayload); + 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_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), i: int, j: int): Vec ($1_transaction_context_MultisigPayload) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), i: int) returns (e: $1_transaction_context_MultisigPayload, m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) +{ + var v: Vec ($1_transaction_context_MultisigPayload); + + 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_transaction_context_MultisigPayload'(m: $Mutation (Vec ($1_transaction_context_MultisigPayload)), i: int) returns (e: $1_transaction_context_MultisigPayload, m': $Mutation (Vec ($1_transaction_context_MultisigPayload))) +{ + var len: int; + var v: Vec ($1_transaction_context_MultisigPayload); + + 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_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), e: $1_transaction_context_MultisigPayload) returns (res: bool) { + res := $ContainsVec'$1_transaction_context_MultisigPayload'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_transaction_context_MultisigPayload'(v: Vec ($1_transaction_context_MultisigPayload), e: $1_transaction_context_MultisigPayload) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_transaction_context_MultisigPayload'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `$1_type_info_TypeInfo` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'$1_type_info_TypeInfo''(v1: Vec ($1_type_info_TypeInfo), v2: Vec ($1_type_info_TypeInfo)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'$1_type_info_TypeInfo'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'$1_type_info_TypeInfo''(v: Vec ($1_type_info_TypeInfo), prefix: Vec ($1_type_info_TypeInfo)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'$1_type_info_TypeInfo'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'$1_type_info_TypeInfo''(v: Vec ($1_type_info_TypeInfo), suffix: Vec ($1_type_info_TypeInfo)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'$1_type_info_TypeInfo'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'$1_type_info_TypeInfo''(v: Vec ($1_type_info_TypeInfo)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'$1_type_info_TypeInfo'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), e: $1_type_info_TypeInfo): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_type_info_TypeInfo'(ReadVec(v, i), e)) +} + +function $IndexOfVec'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), e: $1_type_info_TypeInfo): int; +axiom (forall v: Vec ($1_type_info_TypeInfo), e: $1_type_info_TypeInfo:: {$IndexOfVec'$1_type_info_TypeInfo'(v, e)} + (var i := $IndexOfVec'$1_type_info_TypeInfo'(v, e); + if (!$ContainsVec'$1_type_info_TypeInfo'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'$1_type_info_TypeInfo'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'$1_type_info_TypeInfo'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'$1_type_info_TypeInfo'(): Vec ($1_type_info_TypeInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'$1_type_info_TypeInfo'() returns (v: Vec ($1_type_info_TypeInfo)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'$1_type_info_TypeInfo'(): Vec ($1_type_info_TypeInfo) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), val: $1_type_info_TypeInfo) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), val: $1_type_info_TypeInfo): Vec ($1_type_info_TypeInfo) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo))) returns (e: $1_type_info_TypeInfo, m': $Mutation (Vec ($1_type_info_TypeInfo))) { + var v: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), other: Vec ($1_type_info_TypeInfo)) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo))) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), other: Vec ($1_type_info_TypeInfo)) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), new_len: int) returns (v: (Vec ($1_type_info_TypeInfo)), m': $Mutation (Vec ($1_type_info_TypeInfo))) { + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), new_len: int) returns (v: (Vec ($1_type_info_TypeInfo)), m': $Mutation (Vec ($1_type_info_TypeInfo))) { + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), left: int, right: int) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + var left_vec: Vec ($1_type_info_TypeInfo); + var mid_vec: Vec ($1_type_info_TypeInfo); + var right_vec: Vec ($1_type_info_TypeInfo); + var v: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), rot: int) returns (n: int, m': $Mutation (Vec ($1_type_info_TypeInfo))) { + var v: Vec ($1_type_info_TypeInfo); + var len: int; + var left_vec: Vec ($1_type_info_TypeInfo); + var right_vec: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec ($1_type_info_TypeInfo))) { + var left_vec: Vec ($1_type_info_TypeInfo); + var mid_vec: Vec ($1_type_info_TypeInfo); + var right_vec: Vec ($1_type_info_TypeInfo); + var mid_left_vec: Vec ($1_type_info_TypeInfo); + var mid_right_vec: Vec ($1_type_info_TypeInfo); + var v: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), i: int, e: $1_type_info_TypeInfo) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) { + var left_vec: Vec ($1_type_info_TypeInfo); + var right_vec: Vec ($1_type_info_TypeInfo); + var v: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), i: int) returns (dst: $1_type_info_TypeInfo) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), i: int): $1_type_info_TypeInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), index: int) +returns (dst: $Mutation ($1_type_info_TypeInfo), m': $Mutation (Vec ($1_type_info_TypeInfo))) +{ + var v: Vec ($1_type_info_TypeInfo); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), i: int): $1_type_info_TypeInfo { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), i: int, j: int) returns (m': $Mutation (Vec ($1_type_info_TypeInfo))) +{ + var v: Vec ($1_type_info_TypeInfo); + 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_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), i: int, j: int): Vec ($1_type_info_TypeInfo) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'$1_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), i: int) returns (e: $1_type_info_TypeInfo, m': $Mutation (Vec ($1_type_info_TypeInfo))) +{ + var v: Vec ($1_type_info_TypeInfo); + + 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_type_info_TypeInfo'(m: $Mutation (Vec ($1_type_info_TypeInfo)), i: int) returns (e: $1_type_info_TypeInfo, m': $Mutation (Vec ($1_type_info_TypeInfo))) +{ + var len: int; + var v: Vec ($1_type_info_TypeInfo); + + 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_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), e: $1_type_info_TypeInfo) returns (res: bool) { + res := $ContainsVec'$1_type_info_TypeInfo'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'$1_type_info_TypeInfo'(v: Vec ($1_type_info_TypeInfo), e: $1_type_info_TypeInfo) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'$1_type_info_TypeInfo'(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `vec'#0'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'vec'#0'''(v1: Vec (Vec (#0)), v2: Vec (Vec (#0))): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'vec'#0''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'vec'#0'''(v: Vec (Vec (#0)), prefix: Vec (Vec (#0))): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'vec'#0''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'vec'#0'''(v: Vec (Vec (#0)), suffix: Vec (Vec (#0))): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'vec'#0''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'vec'#0'''(v: Vec (Vec (#0))): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'vec'#0''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'vec'#0''(v: Vec (Vec (#0)), e: Vec (#0)): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'#0''(ReadVec(v, i), e)) +} + +function $IndexOfVec'vec'#0''(v: Vec (Vec (#0)), e: Vec (#0)): int; +axiom (forall v: Vec (Vec (#0)), e: Vec (#0):: {$IndexOfVec'vec'#0''(v, e)} + (var i := $IndexOfVec'vec'#0''(v, e); + if (!$ContainsVec'vec'#0''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'#0''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'vec'#0''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'vec'#0''(v: Vec (Vec (#0))): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'vec'#0''(): Vec (Vec (#0)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'vec'#0''() returns (v: Vec (Vec (#0))) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'vec'#0''(): Vec (Vec (#0)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'vec'#0''(v: Vec (Vec (#0))) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'vec'#0''(m: $Mutation (Vec (Vec (#0))), val: Vec (#0)) returns (m': $Mutation (Vec (Vec (#0)))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'vec'#0''(v: Vec (Vec (#0)), val: Vec (#0)): Vec (Vec (#0)) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'vec'#0''(m: $Mutation (Vec (Vec (#0)))) returns (e: Vec (#0), m': $Mutation (Vec (Vec (#0)))) { + var v: Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), other: Vec (Vec (#0))) returns (m': $Mutation (Vec (Vec (#0)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'vec'#0''(m: $Mutation (Vec (Vec (#0)))) returns (m': $Mutation (Vec (Vec (#0)))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'vec'#0''(m: $Mutation (Vec (Vec (#0))), other: Vec (Vec (#0))) returns (m': $Mutation (Vec (Vec (#0)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'vec'#0''(m: $Mutation (Vec (Vec (#0))), new_len: int) returns (v: (Vec (Vec (#0))), m': $Mutation (Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), new_len: int) returns (v: (Vec (Vec (#0))), m': $Mutation (Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), left: int, right: int) returns (m': $Mutation (Vec (Vec (#0)))) { + var left_vec: Vec (Vec (#0)); + var mid_vec: Vec (Vec (#0)); + var right_vec: Vec (Vec (#0)); + var v: Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), rot: int) returns (n: int, m': $Mutation (Vec (Vec (#0)))) { + var v: Vec (Vec (#0)); + var len: int; + var left_vec: Vec (Vec (#0)); + var right_vec: 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'vec'#0''(m: $Mutation (Vec (Vec (#0))), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (Vec (#0)))) { + var left_vec: Vec (Vec (#0)); + var mid_vec: Vec (Vec (#0)); + var right_vec: Vec (Vec (#0)); + var mid_left_vec: Vec (Vec (#0)); + var mid_right_vec: Vec (Vec (#0)); + var v: Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), i: int, e: Vec (#0)) returns (m': $Mutation (Vec (Vec (#0)))) { + var left_vec: Vec (Vec (#0)); + var right_vec: Vec (Vec (#0)); + var v: Vec (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'vec'#0''(v: Vec (Vec (#0))) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'vec'#0''(v: Vec (Vec (#0))): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'vec'#0''(v: Vec (Vec (#0)), i: int) returns (dst: Vec (#0)) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'vec'#0''(v: Vec (Vec (#0)), i: int): Vec (#0) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'vec'#0''(m: $Mutation (Vec (Vec (#0))), index: int) +returns (dst: $Mutation (Vec (#0)), m': $Mutation (Vec (Vec (#0)))) +{ + var v: Vec (Vec (#0)); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'vec'#0''(v: Vec (Vec (#0)), i: int): Vec (#0) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'vec'#0''(v: Vec (Vec (#0))) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'vec'#0''(m: $Mutation (Vec (Vec (#0))), i: int, j: int) returns (m': $Mutation (Vec (Vec (#0)))) +{ + var v: Vec (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'vec'#0''(v: Vec (Vec (#0)), i: int, j: int): Vec (Vec (#0)) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'vec'#0''(m: $Mutation (Vec (Vec (#0))), i: int) returns (e: Vec (#0), m': $Mutation (Vec (Vec (#0)))) +{ + var v: Vec (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'vec'#0''(m: $Mutation (Vec (Vec (#0))), i: int) returns (e: Vec (#0), m': $Mutation (Vec (Vec (#0)))) +{ + var len: int; + var v: Vec (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'vec'#0''(v: Vec (Vec (#0)), e: Vec (#0)) returns (res: bool) { + res := $ContainsVec'vec'#0''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'vec'#0''(v: Vec (Vec (#0)), e: Vec (#0)) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'vec'#0''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `vec'u8'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'vec'u8'''(v1: Vec (Vec (int)), v2: Vec (Vec (int))): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'vec'u8''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'vec'u8'''(v: Vec (Vec (int)), prefix: Vec (Vec (int))): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'vec'u8''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'vec'u8'''(v: Vec (Vec (int)), suffix: Vec (Vec (int))): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'vec'u8''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'vec'u8'''(v: Vec (Vec (int))): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'vec'u8''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'vec'u8''(v: Vec (Vec (int)), e: Vec (int)): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'u8''(ReadVec(v, i), e)) +} + +function $IndexOfVec'vec'u8''(v: Vec (Vec (int)), e: Vec (int)): int; +axiom (forall v: Vec (Vec (int)), e: Vec (int):: {$IndexOfVec'vec'u8''(v, e)} + (var i := $IndexOfVec'vec'u8''(v, e); + if (!$ContainsVec'vec'u8''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'u8''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'vec'u8''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'vec'u8''(v: Vec (Vec (int))): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'vec'u8''(): Vec (Vec (int)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'vec'u8''() returns (v: Vec (Vec (int))) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'vec'u8''(): Vec (Vec (int)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'vec'u8''(v: Vec (Vec (int))) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'vec'u8''(m: $Mutation (Vec (Vec (int))), val: Vec (int)) returns (m': $Mutation (Vec (Vec (int)))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'vec'u8''(v: Vec (Vec (int)), val: Vec (int)): Vec (Vec (int)) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'vec'u8''(m: $Mutation (Vec (Vec (int)))) returns (e: Vec (int), m': $Mutation (Vec (Vec (int)))) { + var v: Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), other: Vec (Vec (int))) returns (m': $Mutation (Vec (Vec (int)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'vec'u8''(m: $Mutation (Vec (Vec (int)))) returns (m': $Mutation (Vec (Vec (int)))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'vec'u8''(m: $Mutation (Vec (Vec (int))), other: Vec (Vec (int))) returns (m': $Mutation (Vec (Vec (int)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'vec'u8''(m: $Mutation (Vec (Vec (int))), new_len: int) returns (v: (Vec (Vec (int))), m': $Mutation (Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), new_len: int) returns (v: (Vec (Vec (int))), m': $Mutation (Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), left: int, right: int) returns (m': $Mutation (Vec (Vec (int)))) { + var left_vec: Vec (Vec (int)); + var mid_vec: Vec (Vec (int)); + var right_vec: Vec (Vec (int)); + var v: Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), rot: int) returns (n: int, m': $Mutation (Vec (Vec (int)))) { + var v: Vec (Vec (int)); + var len: int; + var left_vec: Vec (Vec (int)); + var right_vec: 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'vec'u8''(m: $Mutation (Vec (Vec (int))), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (Vec (int)))) { + var left_vec: Vec (Vec (int)); + var mid_vec: Vec (Vec (int)); + var right_vec: Vec (Vec (int)); + var mid_left_vec: Vec (Vec (int)); + var mid_right_vec: Vec (Vec (int)); + var v: Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), i: int, e: Vec (int)) returns (m': $Mutation (Vec (Vec (int)))) { + var left_vec: Vec (Vec (int)); + var right_vec: Vec (Vec (int)); + var v: Vec (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'vec'u8''(v: Vec (Vec (int))) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'vec'u8''(v: Vec (Vec (int))): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'vec'u8''(v: Vec (Vec (int)), i: int) returns (dst: Vec (int)) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'vec'u8''(v: Vec (Vec (int)), i: int): Vec (int) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'vec'u8''(m: $Mutation (Vec (Vec (int))), index: int) +returns (dst: $Mutation (Vec (int)), m': $Mutation (Vec (Vec (int)))) +{ + var v: Vec (Vec (int)); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'vec'u8''(v: Vec (Vec (int)), i: int): Vec (int) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'vec'u8''(v: Vec (Vec (int))) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'vec'u8''(m: $Mutation (Vec (Vec (int))), i: int, j: int) returns (m': $Mutation (Vec (Vec (int)))) +{ + var v: Vec (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'vec'u8''(v: Vec (Vec (int)), i: int, j: int): Vec (Vec (int)) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'vec'u8''(m: $Mutation (Vec (Vec (int))), i: int) returns (e: Vec (int), m': $Mutation (Vec (Vec (int)))) +{ + var v: Vec (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'vec'u8''(m: $Mutation (Vec (Vec (int))), i: int) returns (e: Vec (int), m': $Mutation (Vec (Vec (int)))) +{ + var len: int; + var v: Vec (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'vec'u8''(v: Vec (Vec (int)), e: Vec (int)) returns (res: bool) { + res := $ContainsVec'vec'u8''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'vec'u8''(v: Vec (Vec (int)), e: Vec (int)) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'vec'u8''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `bool` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'bool''(v1: Vec (bool), v2: Vec (bool)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bool'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'bool''(v: Vec (bool), prefix: Vec (bool)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bool'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'bool''(v: Vec (bool), suffix: Vec (bool)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bool'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'bool''(v: Vec (bool)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'bool'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'bool'(v: Vec (bool), e: bool): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bool'(ReadVec(v, i), e)) +} + +function $IndexOfVec'bool'(v: Vec (bool), e: bool): int; +axiom (forall v: Vec (bool), e: bool:: {$IndexOfVec'bool'(v, e)} + (var i := $IndexOfVec'bool'(v, e); + if (!$ContainsVec'bool'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bool'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bool'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'bool'(v: Vec (bool)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'bool'(): Vec (bool) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'bool'() returns (v: Vec (bool)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'bool'(): Vec (bool) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'bool'(v: Vec (bool)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'bool'(m: $Mutation (Vec (bool)), val: bool) returns (m': $Mutation (Vec (bool))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'bool'(v: Vec (bool), val: bool): Vec (bool) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'bool'(m: $Mutation (Vec (bool))) returns (e: bool, m': $Mutation (Vec (bool))) { + var v: Vec (bool); + 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'bool'(m: $Mutation (Vec (bool)), other: Vec (bool)) returns (m': $Mutation (Vec (bool))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'bool'(m: $Mutation (Vec (bool))) returns (m': $Mutation (Vec (bool))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'bool'(m: $Mutation (Vec (bool)), other: Vec (bool)) returns (m': $Mutation (Vec (bool))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'bool'(m: $Mutation (Vec (bool)), new_len: int) returns (v: (Vec (bool)), m': $Mutation (Vec (bool))) { + 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'bool'(m: $Mutation (Vec (bool)), new_len: int) returns (v: (Vec (bool)), m': $Mutation (Vec (bool))) { + 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'bool'(m: $Mutation (Vec (bool)), left: int, right: int) returns (m': $Mutation (Vec (bool))) { + var left_vec: Vec (bool); + var mid_vec: Vec (bool); + var right_vec: Vec (bool); + var v: Vec (bool); + 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'bool'(m: $Mutation (Vec (bool)), rot: int) returns (n: int, m': $Mutation (Vec (bool))) { + var v: Vec (bool); + var len: int; + var left_vec: Vec (bool); + var right_vec: Vec (bool); + 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'bool'(m: $Mutation (Vec (bool)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bool))) { + var left_vec: Vec (bool); + var mid_vec: Vec (bool); + var right_vec: Vec (bool); + var mid_left_vec: Vec (bool); + var mid_right_vec: Vec (bool); + var v: Vec (bool); + 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'bool'(m: $Mutation (Vec (bool)), i: int, e: bool) returns (m': $Mutation (Vec (bool))) { + var left_vec: Vec (bool); + var right_vec: Vec (bool); + var v: Vec (bool); + 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'bool'(v: Vec (bool)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'bool'(v: Vec (bool)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'bool'(v: Vec (bool), i: int) returns (dst: bool) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'bool'(v: Vec (bool), i: int): bool { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'bool'(m: $Mutation (Vec (bool)), index: int) +returns (dst: $Mutation (bool), m': $Mutation (Vec (bool))) +{ + var v: Vec (bool); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'bool'(v: Vec (bool), i: int): bool { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'bool'(v: Vec (bool)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'bool'(m: $Mutation (Vec (bool)), i: int, j: int) returns (m': $Mutation (Vec (bool))) +{ + var v: Vec (bool); + 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'bool'(v: Vec (bool), i: int, j: int): Vec (bool) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'bool'(m: $Mutation (Vec (bool)), i: int) returns (e: bool, m': $Mutation (Vec (bool))) +{ + var v: Vec (bool); + + 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'bool'(m: $Mutation (Vec (bool)), i: int) returns (e: bool, m': $Mutation (Vec (bool))) +{ + var len: int; + var v: Vec (bool); + + 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'bool'(v: Vec (bool), e: bool) returns (res: bool) { + res := $ContainsVec'bool'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'bool'(v: Vec (bool), e: bool) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'bool'(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(m->l, ExtendVec(m->p, 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 `u128` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'u128''(v1: Vec (int), v2: Vec (int)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'u128'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'u128''(v: Vec (int), prefix: Vec (int)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'u128'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'u128''(v: Vec (int), suffix: Vec (int)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'u128'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'u128''(v: Vec (int)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'u128'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'u128'(v: Vec (int), e: int): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u128'(ReadVec(v, i), e)) +} + +function $IndexOfVec'u128'(v: Vec (int), e: int): int; +axiom (forall v: Vec (int), e: int:: {$IndexOfVec'u128'(v, e)} + (var i := $IndexOfVec'u128'(v, e); + if (!$ContainsVec'u128'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'u128'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'u128'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'u128'(v: Vec (int)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'u128'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'u128'() returns (v: Vec (int)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'u128'(): Vec (int) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'u128'(v: Vec (int)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'u128'(m: $Mutation (Vec (int)), val: int) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'u128'(v: Vec (int), val: int): Vec (int) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'u128'(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'u128'(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'u128'(m: $Mutation (Vec (int))) returns (m': $Mutation (Vec (int))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'u128'(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'u128'(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'u128'(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'u128'(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'u128'(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'u128'(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'u128'(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'u128'(v: Vec (int)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'u128'(v: Vec (int)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'u128'(v: Vec (int), i: int) returns (dst: int) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'u128'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'u128'(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(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'u128'(v: Vec (int), i: int): int { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'u128'(v: Vec (int)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'u128'(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'u128'(v: Vec (int), i: int, j: int): Vec (int) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'u128'(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'u128'(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'u128'(v: Vec (int), e: int) returns (res: bool) { + res := $ContainsVec'u128'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'u128'(v: Vec (int), e: int) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'u128'(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(m->l, ExtendVec(m->p, 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(m->l, ExtendVec(m->p, 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 `vec'bv8'` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'vec'bv8'''(v1: Vec (Vec (bv8)), v2: Vec (Vec (bv8))): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'vec'bv8''(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'vec'bv8'''(v: Vec (Vec (bv8)), prefix: Vec (Vec (bv8))): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'vec'bv8''(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'vec'bv8'''(v: Vec (Vec (bv8)), suffix: Vec (Vec (bv8))): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'vec'bv8''(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'vec'bv8'''(v: Vec (Vec (bv8))): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'vec'bv8''(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'vec'bv8''(v: Vec (Vec (bv8)), e: Vec (bv8)): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'bv8''(ReadVec(v, i), e)) +} + +function $IndexOfVec'vec'bv8''(v: Vec (Vec (bv8)), e: Vec (bv8)): int; +axiom (forall v: Vec (Vec (bv8)), e: Vec (bv8):: {$IndexOfVec'vec'bv8''(v, e)} + (var i := $IndexOfVec'vec'bv8''(v, e); + if (!$ContainsVec'vec'bv8''(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'vec'bv8''(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'vec'bv8''(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'vec'bv8''(v: Vec (Vec (bv8))): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'vec'bv8''(): Vec (Vec (bv8)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'vec'bv8''() returns (v: Vec (Vec (bv8))) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'vec'bv8''(): Vec (Vec (bv8)) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'vec'bv8''(v: Vec (Vec (bv8))) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), val: Vec (bv8)) returns (m': $Mutation (Vec (Vec (bv8)))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'vec'bv8''(v: Vec (Vec (bv8)), val: Vec (bv8)): Vec (Vec (bv8)) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'vec'bv8''(m: $Mutation (Vec (Vec (bv8)))) returns (e: Vec (bv8), m': $Mutation (Vec (Vec (bv8)))) { + var v: Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), other: Vec (Vec (bv8))) returns (m': $Mutation (Vec (Vec (bv8)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'vec'bv8''(m: $Mutation (Vec (Vec (bv8)))) returns (m': $Mutation (Vec (Vec (bv8)))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), other: Vec (Vec (bv8))) returns (m': $Mutation (Vec (Vec (bv8)))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), new_len: int) returns (v: (Vec (Vec (bv8))), m': $Mutation (Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), new_len: int) returns (v: (Vec (Vec (bv8))), m': $Mutation (Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), left: int, right: int) returns (m': $Mutation (Vec (Vec (bv8)))) { + var left_vec: Vec (Vec (bv8)); + var mid_vec: Vec (Vec (bv8)); + var right_vec: Vec (Vec (bv8)); + var v: Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), rot: int) returns (n: int, m': $Mutation (Vec (Vec (bv8)))) { + var v: Vec (Vec (bv8)); + var len: int; + var left_vec: Vec (Vec (bv8)); + var right_vec: 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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (Vec (bv8)))) { + var left_vec: Vec (Vec (bv8)); + var mid_vec: Vec (Vec (bv8)); + var right_vec: Vec (Vec (bv8)); + var mid_left_vec: Vec (Vec (bv8)); + var mid_right_vec: Vec (Vec (bv8)); + var v: Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), i: int, e: Vec (bv8)) returns (m': $Mutation (Vec (Vec (bv8)))) { + var left_vec: Vec (Vec (bv8)); + var right_vec: Vec (Vec (bv8)); + var v: Vec (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'vec'bv8''(v: Vec (Vec (bv8))) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'vec'bv8''(v: Vec (Vec (bv8))): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'vec'bv8''(v: Vec (Vec (bv8)), i: int) returns (dst: Vec (bv8)) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'vec'bv8''(v: Vec (Vec (bv8)), i: int): Vec (bv8) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), index: int) +returns (dst: $Mutation (Vec (bv8)), m': $Mutation (Vec (Vec (bv8)))) +{ + var v: Vec (Vec (bv8)); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'vec'bv8''(v: Vec (Vec (bv8)), i: int): Vec (bv8) { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'vec'bv8''(v: Vec (Vec (bv8))) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), i: int, j: int) returns (m': $Mutation (Vec (Vec (bv8)))) +{ + var v: Vec (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'vec'bv8''(v: Vec (Vec (bv8)), i: int, j: int): Vec (Vec (bv8)) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), i: int) returns (e: Vec (bv8), m': $Mutation (Vec (Vec (bv8)))) +{ + var v: Vec (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'vec'bv8''(m: $Mutation (Vec (Vec (bv8))), i: int) returns (e: Vec (bv8), m': $Mutation (Vec (Vec (bv8)))) +{ + var len: int; + var v: Vec (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'vec'bv8''(v: Vec (Vec (bv8)), e: Vec (bv8)) returns (res: bool) { + res := $ContainsVec'vec'bv8''(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'vec'bv8''(v: Vec (Vec (bv8)), e: Vec (bv8)) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'vec'bv8''(v, e); + if (res2 >= 0) { + res1 := true; + } else { + res1 := false; + res2 := 0; + } +} + + +// ---------------------------------------------------------------------------------- +// Native Vector implementation for element type `bv128` + +// Not inlined. It appears faster this way. +function $IsEqual'vec'bv128''(v1: Vec (bv128), v2: Vec (bv128)): bool { + LenVec(v1) == LenVec(v2) && + (forall i: int:: InRangeVec(v1, i) ==> $IsEqual'bv128'(ReadVec(v1, i), ReadVec(v2, i))) +} + +// Not inlined. +function $IsPrefix'vec'bv128''(v: Vec (bv128), prefix: Vec (bv128)): bool { + LenVec(v) >= LenVec(prefix) && + (forall i: int:: InRangeVec(prefix, i) ==> $IsEqual'bv128'(ReadVec(v, i), ReadVec(prefix, i))) +} + +// Not inlined. +function $IsSuffix'vec'bv128''(v: Vec (bv128), suffix: Vec (bv128)): bool { + LenVec(v) >= LenVec(suffix) && + (forall i: int:: InRangeVec(suffix, i) ==> $IsEqual'bv128'(ReadVec(v, LenVec(v) - LenVec(suffix) + i), ReadVec(suffix, i))) +} + +// Not inlined. +function $IsValid'vec'bv128''(v: Vec (bv128)): bool { + $IsValid'u64'(LenVec(v)) && + (forall i: int:: InRangeVec(v, i) ==> $IsValid'bv128'(ReadVec(v, i))) +} + + +function {:inline} $ContainsVec'bv128'(v: Vec (bv128), e: bv128): bool { + (exists i: int :: $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv128'(ReadVec(v, i), e)) +} + +function $IndexOfVec'bv128'(v: Vec (bv128), e: bv128): int; +axiom (forall v: Vec (bv128), e: bv128:: {$IndexOfVec'bv128'(v, e)} + (var i := $IndexOfVec'bv128'(v, e); + if (!$ContainsVec'bv128'(v, e)) then i == -1 + else $IsValid'u64'(i) && InRangeVec(v, i) && $IsEqual'bv128'(ReadVec(v, i), e) && + (forall j: int :: $IsValid'u64'(j) && j >= 0 && j < i ==> !$IsEqual'bv128'(ReadVec(v, j), e)))); + + +function {:inline} $RangeVec'bv128'(v: Vec (bv128)): $Range { + $Range(0, LenVec(v)) +} + + +function {:inline} $EmptyVec'bv128'(): Vec (bv128) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_empty'bv128'() returns (v: Vec (bv128)) { + v := EmptyVec(); +} + +function {:inline} $1_vector_$empty'bv128'(): Vec (bv128) { + EmptyVec() +} + +procedure {:inline 1} $1_vector_is_empty'bv128'(v: Vec (bv128)) returns (b: bool) { + b := IsEmptyVec(v); +} + +procedure {:inline 1} $1_vector_push_back'bv128'(m: $Mutation (Vec (bv128)), val: bv128) returns (m': $Mutation (Vec (bv128))) { + m' := $UpdateMutation(m, ExtendVec($Dereference(m), val)); +} + +function {:inline} $1_vector_$push_back'bv128'(v: Vec (bv128), val: bv128): Vec (bv128) { + ExtendVec(v, val) +} + +procedure {:inline 1} $1_vector_pop_back'bv128'(m: $Mutation (Vec (bv128))) returns (e: bv128, m': $Mutation (Vec (bv128))) { + var v: Vec (bv128); + 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'bv128'(m: $Mutation (Vec (bv128)), other: Vec (bv128)) returns (m': $Mutation (Vec (bv128))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), other)); +} + +procedure {:inline 1} $1_vector_reverse'bv128'(m: $Mutation (Vec (bv128))) returns (m': $Mutation (Vec (bv128))) { + m' := $UpdateMutation(m, ReverseVec($Dereference(m))); +} + +procedure {:inline 1} $1_vector_reverse_append'bv128'(m: $Mutation (Vec (bv128)), other: Vec (bv128)) returns (m': $Mutation (Vec (bv128))) { + m' := $UpdateMutation(m, ConcatVec($Dereference(m), ReverseVec(other))); +} + +procedure {:inline 1} $1_vector_trim_reverse'bv128'(m: $Mutation (Vec (bv128)), new_len: int) returns (v: (Vec (bv128)), m': $Mutation (Vec (bv128))) { + 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'bv128'(m: $Mutation (Vec (bv128)), new_len: int) returns (v: (Vec (bv128)), m': $Mutation (Vec (bv128))) { + 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'bv128'(m: $Mutation (Vec (bv128)), left: int, right: int) returns (m': $Mutation (Vec (bv128))) { + var left_vec: Vec (bv128); + var mid_vec: Vec (bv128); + var right_vec: Vec (bv128); + var v: Vec (bv128); + 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'bv128'(m: $Mutation (Vec (bv128)), rot: int) returns (n: int, m': $Mutation (Vec (bv128))) { + var v: Vec (bv128); + var len: int; + var left_vec: Vec (bv128); + var right_vec: Vec (bv128); + 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'bv128'(m: $Mutation (Vec (bv128)), left: int, rot: int, right: int) returns (n: int, m': $Mutation (Vec (bv128))) { + var left_vec: Vec (bv128); + var mid_vec: Vec (bv128); + var right_vec: Vec (bv128); + var mid_left_vec: Vec (bv128); + var mid_right_vec: Vec (bv128); + var v: Vec (bv128); + 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'bv128'(m: $Mutation (Vec (bv128)), i: int, e: bv128) returns (m': $Mutation (Vec (bv128))) { + var left_vec: Vec (bv128); + var right_vec: Vec (bv128); + var v: Vec (bv128); + 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'bv128'(v: Vec (bv128)) returns (l: int) { + l := LenVec(v); +} + +function {:inline} $1_vector_$length'bv128'(v: Vec (bv128)): int { + LenVec(v) +} + +procedure {:inline 1} $1_vector_borrow'bv128'(v: Vec (bv128), i: int) returns (dst: bv128) { + if (!InRangeVec(v, i)) { + call $ExecFailureAbort(); + return; + } + dst := ReadVec(v, i); +} + +function {:inline} $1_vector_$borrow'bv128'(v: Vec (bv128), i: int): bv128 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_borrow_mut'bv128'(m: $Mutation (Vec (bv128)), index: int) +returns (dst: $Mutation (bv128), m': $Mutation (Vec (bv128))) +{ + var v: Vec (bv128); + v := $Dereference(m); + if (!InRangeVec(v, index)) { + call $ExecFailureAbort(); + return; + } + dst := $Mutation(m->l, ExtendVec(m->p, index), ReadVec(v, index)); + m' := m; +} + +function {:inline} $1_vector_$borrow_mut'bv128'(v: Vec (bv128), i: int): bv128 { + ReadVec(v, i) +} + +procedure {:inline 1} $1_vector_destroy_empty'bv128'(v: Vec (bv128)) { + if (!IsEmptyVec(v)) { + call $ExecFailureAbort(); + } +} + +procedure {:inline 1} $1_vector_swap'bv128'(m: $Mutation (Vec (bv128)), i: int, j: int) returns (m': $Mutation (Vec (bv128))) +{ + var v: Vec (bv128); + 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'bv128'(v: Vec (bv128), i: int, j: int): Vec (bv128) { + SwapVec(v, i, j) +} + +procedure {:inline 1} $1_vector_remove'bv128'(m: $Mutation (Vec (bv128)), i: int) returns (e: bv128, m': $Mutation (Vec (bv128))) +{ + var v: Vec (bv128); + + 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'bv128'(m: $Mutation (Vec (bv128)), i: int) returns (e: bv128, m': $Mutation (Vec (bv128))) +{ + var len: int; + var v: Vec (bv128); + + 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'bv128'(v: Vec (bv128), e: bv128) returns (res: bool) { + res := $ContainsVec'bv128'(v, e); +} + +procedure {:inline 1} +$1_vector_index_of'bv128'(v: Vec (bv128), e: bv128) returns (res1: bool, res2: int) { + res2 := $IndexOfVec'bv128'(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(m->l, ExtendVec(m->p, 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(m->l, ExtendVec(m->p, 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 key encoding for type `$1_type_info_TypeInfo` + +function $EncodeKey'$1_type_info_TypeInfo'(k: $1_type_info_TypeInfo): int; +axiom ( + forall k1, k2: $1_type_info_TypeInfo :: {$EncodeKey'$1_type_info_TypeInfo'(k1), $EncodeKey'$1_type_info_TypeInfo'(k2)} + $IsEqual'$1_type_info_TypeInfo'(k1, k2) <==> $EncodeKey'$1_type_info_TypeInfo'(k1) == $EncodeKey'$1_type_info_TypeInfo'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `$1_token_TokenDataId` + +function $EncodeKey'$1_token_TokenDataId'(k: $1_token_TokenDataId): int; +axiom ( + forall k1, k2: $1_token_TokenDataId :: {$EncodeKey'$1_token_TokenDataId'(k1), $EncodeKey'$1_token_TokenDataId'(k2)} + $IsEqual'$1_token_TokenDataId'(k1, k2) <==> $EncodeKey'$1_token_TokenDataId'(k1) == $EncodeKey'$1_token_TokenDataId'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `$1_token_TokenId` + +function $EncodeKey'$1_token_TokenId'(k: $1_token_TokenId): int; +axiom ( + forall k1, k2: $1_token_TokenId :: {$EncodeKey'$1_token_TokenId'(k1), $EncodeKey'$1_token_TokenId'(k2)} + $IsEqual'$1_token_TokenId'(k1, k2) <==> $EncodeKey'$1_token_TokenId'(k1) == $EncodeKey'$1_token_TokenId'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `$1_token_transfers_TokenOfferId` + +function $EncodeKey'$1_token_transfers_TokenOfferId'(k: $1_token_transfers_TokenOfferId): int; +axiom ( + forall k1, k2: $1_token_transfers_TokenOfferId :: {$EncodeKey'$1_token_transfers_TokenOfferId'(k1), $EncodeKey'$1_token_transfers_TokenOfferId'(k2)} + $IsEqual'$1_token_transfers_TokenOfferId'(k1, k2) <==> $EncodeKey'$1_token_transfers_TokenOfferId'(k1) == $EncodeKey'$1_token_transfers_TokenOfferId'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `#0` + +function $EncodeKey'#0'(k: #0): int; +axiom ( + forall k1, k2: #0 :: {$EncodeKey'#0'(k1), $EncodeKey'#0'(k2)} + $IsEqual'#0'(k1, k2) <==> $EncodeKey'#0'(k1) == $EncodeKey'#0'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table key encoding for type `u64` + +function $EncodeKey'u64'(k: int): int; +axiom ( + forall k1, k2: int :: {$EncodeKey'u64'(k1), $EncodeKey'u64'(k2)} + $IsEqual'u64'(k1, k2) <==> $EncodeKey'u64'(k1) == $EncodeKey'u64'(k2) +); + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,u128)` + +function $IsEqual'$1_table_Table'address_u128''(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_table_Table'address_u128''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'u128'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'address_u128'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'address_u128'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'address_u128'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_table_add'address_u128'(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_table_upsert'address_u128'(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)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'address_u128'(m: $Mutation (Table int (int)), k: int) +returns (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 { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'address_u128'(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_table_borrow_mut'address_u128'(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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'address_u128'(m: $Mutation (Table int (int)), k: int, default: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + var t': Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'address_u128'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_spec_set'address_u128'(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_table_spec_remove'address_u128'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_spec_get'address_u128'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,address)` + +function $IsEqual'$1_table_Table'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_table_Table'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_table_new'address_address'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'address_address'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'address_address'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_table_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_table_upsert'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)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'address_address'(m: $Mutation (Table int (int)), k: int) +returns (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 { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_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_table_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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'address_address'(m: $Mutation (Table int (int)), k: int, default: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + var t': Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'address_address'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_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_table_spec_remove'address_address'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_spec_get'address_address'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_string_String,$1_token_CollectionData)` + +function $IsEqual'$1_table_Table'$1_string_String_$1_token_CollectionData''(t1: Table int ($1_token_CollectionData), t2: Table int ($1_token_CollectionData)): 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_table_Table'$1_string_String_$1_token_CollectionData''(t: Table int ($1_token_CollectionData)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_token_CollectionData'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'$1_string_String_$1_token_CollectionData'() returns (v: Table int ($1_token_CollectionData)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'$1_string_String_$1_token_CollectionData'(t: Table int ($1_token_CollectionData)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'$1_string_String_$1_token_CollectionData'(t: (Table int ($1_token_CollectionData)), k: $1_string_String) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_string_String'(k)); +} +procedure {:inline 2} $1_table_add'$1_string_String_$1_token_CollectionData'(m: $Mutation (Table int ($1_token_CollectionData)), k: $1_string_String, v: $1_token_CollectionData) returns (m': $Mutation(Table int ($1_token_CollectionData))) { + var enc_k: int; + var t: Table int ($1_token_CollectionData); + 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_table_upsert'$1_string_String_$1_token_CollectionData'(m: $Mutation (Table int ($1_token_CollectionData)), k: $1_string_String, v: $1_token_CollectionData) returns (m': $Mutation(Table int ($1_token_CollectionData))) { + var enc_k: int; + var t: Table int ($1_token_CollectionData); + enc_k := $EncodeKey'$1_string_String'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'$1_string_String_$1_token_CollectionData'(m: $Mutation (Table int ($1_token_CollectionData)), k: $1_string_String) +returns (v: $1_token_CollectionData, m': $Mutation(Table int ($1_token_CollectionData))) { + var enc_k: int; + var t: Table int ($1_token_CollectionData); + 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 { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'$1_string_String_$1_token_CollectionData'(t: Table int ($1_token_CollectionData), k: $1_string_String) returns (v: $1_token_CollectionData) { + 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_table_borrow_mut'$1_string_String_$1_token_CollectionData'(m: $Mutation (Table int ($1_token_CollectionData)), k: $1_string_String) +returns (dst: $Mutation ($1_token_CollectionData), m': $Mutation (Table int ($1_token_CollectionData))) { + var enc_k: int; + var t: Table int ($1_token_CollectionData); + 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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'$1_string_String_$1_token_CollectionData'(m: $Mutation (Table int ($1_token_CollectionData)), k: $1_string_String, default: $1_token_CollectionData) +returns (dst: $Mutation ($1_token_CollectionData), m': $Mutation (Table int ($1_token_CollectionData))) { + var enc_k: int; + var t: Table int ($1_token_CollectionData); + var t': Table int ($1_token_CollectionData); + enc_k := $EncodeKey'$1_string_String'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'$1_string_String_$1_token_CollectionData'(t: (Table int ($1_token_CollectionData)), k: $1_string_String): bool { + ContainsTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_table_spec_set'$1_string_String_$1_token_CollectionData'(t: Table int ($1_token_CollectionData), k: $1_string_String, v: $1_token_CollectionData): Table int ($1_token_CollectionData) { + (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_table_spec_remove'$1_string_String_$1_token_CollectionData'(t: Table int ($1_token_CollectionData), k: $1_string_String): Table int ($1_token_CollectionData) { + RemoveTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_table_spec_get'$1_string_String_$1_token_CollectionData'(t: Table int ($1_token_CollectionData), k: $1_string_String): $1_token_CollectionData { + GetTable(t, $EncodeKey'$1_string_String'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_type_info_TypeInfo,$1_object_Object'$1_fungible_asset_Metadata')` + +function $IsEqual'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(t1: Table int ($1_object_Object'$1_fungible_asset_Metadata'), t2: Table int ($1_object_Object'$1_fungible_asset_Metadata')): 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_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata')): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''() returns (v: Table int ($1_object_Object'$1_fungible_asset_Metadata')) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata')) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_type_info_TypeInfo'(k)); +} +procedure {:inline 2} $1_table_add'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo, v: $1_object_Object'$1_fungible_asset_Metadata') returns (m': $Mutation(Table int ($1_object_Object'$1_fungible_asset_Metadata'))) { + var enc_k: int; + var t: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + enc_k := $EncodeKey'$1_type_info_TypeInfo'(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_table_upsert'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo, v: $1_object_Object'$1_fungible_asset_Metadata') returns (m': $Mutation(Table int ($1_object_Object'$1_fungible_asset_Metadata'))) { + var enc_k: int; + var t: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo) +returns (v: $1_object_Object'$1_fungible_asset_Metadata', m': $Mutation(Table int ($1_object_Object'$1_fungible_asset_Metadata'))) { + var enc_k: int; + var t: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata'), k: $1_type_info_TypeInfo) returns (v: $1_object_Object'$1_fungible_asset_Metadata') { + var enc_k: int; + enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'$1_type_info_TypeInfo'(k)); + } +} +procedure {:inline 2} $1_table_borrow_mut'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo) +returns (dst: $Mutation ($1_object_Object'$1_fungible_asset_Metadata'), m': $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata'))) { + var enc_k: int; + var t: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(m: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo, default: $1_object_Object'$1_fungible_asset_Metadata') +returns (dst: $Mutation ($1_object_Object'$1_fungible_asset_Metadata'), m': $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata'))) { + var enc_k: int; + var t: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var t': Table int ($1_object_Object'$1_fungible_asset_Metadata'); + enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: (Table int ($1_object_Object'$1_fungible_asset_Metadata')), k: $1_type_info_TypeInfo): bool { + ContainsTable(t, $EncodeKey'$1_type_info_TypeInfo'(k)) +} +function {:inline} $1_table_spec_set'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata'), k: $1_type_info_TypeInfo, v: $1_object_Object'$1_fungible_asset_Metadata'): Table int ($1_object_Object'$1_fungible_asset_Metadata') { + (var enc_k := $EncodeKey'$1_type_info_TypeInfo'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_spec_remove'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata'), k: $1_type_info_TypeInfo): Table int ($1_object_Object'$1_fungible_asset_Metadata') { + RemoveTable(t, $EncodeKey'$1_type_info_TypeInfo'(k)) +} +function {:inline} $1_table_spec_get'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(t: Table int ($1_object_Object'$1_fungible_asset_Metadata'), k: $1_type_info_TypeInfo): $1_object_Object'$1_fungible_asset_Metadata' { + GetTable(t, $EncodeKey'$1_type_info_TypeInfo'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_token_TokenDataId,$1_token_TokenData)` + +function $IsEqual'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(t1: Table int ($1_token_TokenData), t2: Table int ($1_token_TokenData)): 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_table_Table'$1_token_TokenDataId_$1_token_TokenData''(t: Table int ($1_token_TokenData)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_token_TokenData'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'$1_token_TokenDataId_$1_token_TokenData'() returns (v: Table int ($1_token_TokenData)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'$1_token_TokenDataId_$1_token_TokenData'(t: Table int ($1_token_TokenData)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'(t: (Table int ($1_token_TokenData)), k: $1_token_TokenDataId) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_token_TokenDataId'(k)); +} +procedure {:inline 2} $1_table_add'$1_token_TokenDataId_$1_token_TokenData'(m: $Mutation (Table int ($1_token_TokenData)), k: $1_token_TokenDataId, v: $1_token_TokenData) returns (m': $Mutation(Table int ($1_token_TokenData))) { + var enc_k: int; + var t: Table int ($1_token_TokenData); + enc_k := $EncodeKey'$1_token_TokenDataId'(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_table_upsert'$1_token_TokenDataId_$1_token_TokenData'(m: $Mutation (Table int ($1_token_TokenData)), k: $1_token_TokenDataId, v: $1_token_TokenData) returns (m': $Mutation(Table int ($1_token_TokenData))) { + var enc_k: int; + var t: Table int ($1_token_TokenData); + enc_k := $EncodeKey'$1_token_TokenDataId'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'$1_token_TokenDataId_$1_token_TokenData'(m: $Mutation (Table int ($1_token_TokenData)), k: $1_token_TokenDataId) +returns (v: $1_token_TokenData, m': $Mutation(Table int ($1_token_TokenData))) { + var enc_k: int; + var t: Table int ($1_token_TokenData); + enc_k := $EncodeKey'$1_token_TokenDataId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'(t: Table int ($1_token_TokenData), k: $1_token_TokenDataId) returns (v: $1_token_TokenData) { + var enc_k: int; + enc_k := $EncodeKey'$1_token_TokenDataId'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'$1_token_TokenDataId'(k)); + } +} +procedure {:inline 2} $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'(m: $Mutation (Table int ($1_token_TokenData)), k: $1_token_TokenDataId) +returns (dst: $Mutation ($1_token_TokenData), m': $Mutation (Table int ($1_token_TokenData))) { + var enc_k: int; + var t: Table int ($1_token_TokenData); + enc_k := $EncodeKey'$1_token_TokenDataId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'$1_token_TokenDataId_$1_token_TokenData'(m: $Mutation (Table int ($1_token_TokenData)), k: $1_token_TokenDataId, default: $1_token_TokenData) +returns (dst: $Mutation ($1_token_TokenData), m': $Mutation (Table int ($1_token_TokenData))) { + var enc_k: int; + var t: Table int ($1_token_TokenData); + var t': Table int ($1_token_TokenData); + enc_k := $EncodeKey'$1_token_TokenDataId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'(t: (Table int ($1_token_TokenData)), k: $1_token_TokenDataId): bool { + ContainsTable(t, $EncodeKey'$1_token_TokenDataId'(k)) +} +function {:inline} $1_table_spec_set'$1_token_TokenDataId_$1_token_TokenData'(t: Table int ($1_token_TokenData), k: $1_token_TokenDataId, v: $1_token_TokenData): Table int ($1_token_TokenData) { + (var enc_k := $EncodeKey'$1_token_TokenDataId'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_spec_remove'$1_token_TokenDataId_$1_token_TokenData'(t: Table int ($1_token_TokenData), k: $1_token_TokenDataId): Table int ($1_token_TokenData) { + RemoveTable(t, $EncodeKey'$1_token_TokenDataId'(k)) +} +function {:inline} $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'(t: Table int ($1_token_TokenData), k: $1_token_TokenDataId): $1_token_TokenData { + GetTable(t, $EncodeKey'$1_token_TokenDataId'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_token_TokenId,$1_token_Token)` + +function $IsEqual'$1_table_Table'$1_token_TokenId_$1_token_Token''(t1: Table int ($1_token_Token), t2: Table int ($1_token_Token)): 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_table_Table'$1_token_TokenId_$1_token_Token''(t: Table int ($1_token_Token)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_token_Token'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'$1_token_TokenId_$1_token_Token'() returns (v: Table int ($1_token_Token)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'$1_token_TokenId_$1_token_Token'(t: Table int ($1_token_Token)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'$1_token_TokenId_$1_token_Token'(t: (Table int ($1_token_Token)), k: $1_token_TokenId) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_token_TokenId'(k)); +} +procedure {:inline 2} $1_table_add'$1_token_TokenId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_TokenId, v: $1_token_Token) returns (m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_TokenId'(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_table_upsert'$1_token_TokenId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_TokenId, v: $1_token_Token) returns (m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_TokenId'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'$1_token_TokenId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_TokenId) +returns (v: $1_token_Token, m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_TokenId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'$1_token_TokenId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_TokenId) returns (v: $1_token_Token) { + var enc_k: int; + enc_k := $EncodeKey'$1_token_TokenId'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'$1_token_TokenId'(k)); + } +} +procedure {:inline 2} $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_TokenId) +returns (dst: $Mutation ($1_token_Token), m': $Mutation (Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_TokenId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'$1_token_TokenId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_TokenId, default: $1_token_Token) +returns (dst: $Mutation ($1_token_Token), m': $Mutation (Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + var t': Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_TokenId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'$1_token_TokenId_$1_token_Token'(t: (Table int ($1_token_Token)), k: $1_token_TokenId): bool { + ContainsTable(t, $EncodeKey'$1_token_TokenId'(k)) +} +function {:inline} $1_table_spec_set'$1_token_TokenId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_TokenId, v: $1_token_Token): Table int ($1_token_Token) { + (var enc_k := $EncodeKey'$1_token_TokenId'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_spec_remove'$1_token_TokenId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_TokenId): Table int ($1_token_Token) { + RemoveTable(t, $EncodeKey'$1_token_TokenId'(k)) +} +function {:inline} $1_table_spec_get'$1_token_TokenId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_TokenId): $1_token_Token { + GetTable(t, $EncodeKey'$1_token_TokenId'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_token_transfers_TokenOfferId,$1_token_Token)` + +function $IsEqual'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(t1: Table int ($1_token_Token), t2: Table int ($1_token_Token)): 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_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(t: Table int ($1_token_Token)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_token_Token'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'$1_token_transfers_TokenOfferId_$1_token_Token'() returns (v: Table int ($1_token_Token)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'$1_token_transfers_TokenOfferId_$1_token_Token'(t: Table int ($1_token_Token)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'$1_token_transfers_TokenOfferId_$1_token_Token'(t: (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'$1_token_transfers_TokenOfferId'(k)); +} +procedure {:inline 2} $1_table_add'$1_token_transfers_TokenOfferId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId, v: $1_token_Token) returns (m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(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_table_upsert'$1_token_transfers_TokenOfferId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId, v: $1_token_Token) returns (m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'$1_token_transfers_TokenOfferId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId) +returns (v: $1_token_Token, m': $Mutation(Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'$1_token_transfers_TokenOfferId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_transfers_TokenOfferId) returns (v: $1_token_Token) { + var enc_k: int; + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'$1_token_transfers_TokenOfferId'(k)); + } +} +procedure {:inline 2} $1_table_borrow_mut'$1_token_transfers_TokenOfferId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId) +returns (dst: $Mutation ($1_token_Token), m': $Mutation (Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'$1_token_transfers_TokenOfferId_$1_token_Token'(m: $Mutation (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId, default: $1_token_Token) +returns (dst: $Mutation ($1_token_Token), m': $Mutation (Table int ($1_token_Token))) { + var enc_k: int; + var t: Table int ($1_token_Token); + var t': Table int ($1_token_Token); + enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'$1_token_transfers_TokenOfferId_$1_token_Token'(t: (Table int ($1_token_Token)), k: $1_token_transfers_TokenOfferId): bool { + ContainsTable(t, $EncodeKey'$1_token_transfers_TokenOfferId'(k)) +} +function {:inline} $1_table_spec_set'$1_token_transfers_TokenOfferId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_transfers_TokenOfferId, v: $1_token_Token): Table int ($1_token_Token) { + (var enc_k := $EncodeKey'$1_token_transfers_TokenOfferId'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_spec_remove'$1_token_transfers_TokenOfferId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_transfers_TokenOfferId): Table int ($1_token_Token) { + RemoveTable(t, $EncodeKey'$1_token_transfers_TokenOfferId'(k)) +} +function {:inline} $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'(t: Table int ($1_token_Token), k: $1_token_transfers_TokenOfferId): $1_token_Token { + GetTable(t, $EncodeKey'$1_token_transfers_TokenOfferId'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(#0,#1)` + +function $IsEqual'$1_table_Table'#0_#1''(t1: Table int (#1), t2: Table int (#1)): 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_table_Table'#0_#1''(t: Table int (#1)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'#1'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_new'#0_#1'() returns (v: Table int (#1)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_destroy'#0_#1'(t: Table int (#1)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_contains'#0_#1'(t: (Table int (#1)), k: #0) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'#0'(k)); +} +procedure {:inline 2} $1_table_add'#0_#1'(m: $Mutation (Table int (#1)), k: #0, v: #1) returns (m': $Mutation(Table int (#1))) { + var enc_k: int; + var t: Table int (#1); + enc_k := $EncodeKey'#0'(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_table_upsert'#0_#1'(m: $Mutation (Table int (#1)), k: #0, v: #1) returns (m': $Mutation(Table int (#1))) { + var enc_k: int; + var t: Table int (#1); + enc_k := $EncodeKey'#0'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_remove'#0_#1'(m: $Mutation (Table int (#1)), k: #0) +returns (v: #1, m': $Mutation(Table int (#1))) { + var enc_k: int; + var t: Table int (#1); + enc_k := $EncodeKey'#0'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_borrow'#0_#1'(t: Table int (#1), k: #0) returns (v: #1) { + var enc_k: int; + enc_k := $EncodeKey'#0'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'#0'(k)); + } +} +procedure {:inline 2} $1_table_borrow_mut'#0_#1'(m: $Mutation (Table int (#1)), k: #0) +returns (dst: $Mutation (#1), m': $Mutation (Table int (#1))) { + var enc_k: int; + var t: Table int (#1); + enc_k := $EncodeKey'#0'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_borrow_mut_with_default'#0_#1'(m: $Mutation (Table int (#1)), k: #0, default: #1) +returns (dst: $Mutation (#1), m': $Mutation (Table int (#1))) { + var enc_k: int; + var t: Table int (#1); + var t': Table int (#1); + enc_k := $EncodeKey'#0'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_spec_contains'#0_#1'(t: (Table int (#1)), k: #0): bool { + ContainsTable(t, $EncodeKey'#0'(k)) +} +function {:inline} $1_table_spec_set'#0_#1'(t: Table int (#1), k: #0, v: #1): Table int (#1) { + (var enc_k := $EncodeKey'#0'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_spec_remove'#0_#1'(t: Table int (#1), k: #0): Table int (#1) { + RemoveTable(t, $EncodeKey'#0'(k)) +} +function {:inline} $1_table_spec_get'#0_#1'(t: Table int (#1), k: #0): #1 { + GetTable(t, $EncodeKey'#0'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(u64,vec'#0')` + +function $IsEqual'$1_table_with_length_TableWithLength'u64_vec'#0'''(t1: Table int (Vec (#0)), t2: Table int (Vec (#0))): 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_table_with_length_TableWithLength'u64_vec'#0'''(t: Table int (Vec (#0))): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'vec'#0''(GetTable(t, i))) +} +procedure {:inline 2} $1_table_with_length_new'u64_vec'#0''() returns (v: Table int (Vec (#0))) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_with_length_destroy_empty'u64_vec'#0''(t: Table int (Vec (#0))) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_with_length_length'u64_vec'#0''(t: (Table int (Vec (#0)))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_table_with_length_empty'u64_vec'#0''(t: (Table int (Vec (#0)))) returns (r: bool) { + r := LenTable(t) == 0; +} +procedure {:inline 2} $1_table_with_length_contains'u64_vec'#0''(t: (Table int (Vec (#0))), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'u64'(k)); +} +procedure {:inline 2} $1_table_with_length_add'u64_vec'#0''(m: $Mutation (Table int (Vec (#0))), k: int, v: Vec (#0)) returns (m': $Mutation(Table int (Vec (#0)))) { + var enc_k: int; + var t: Table int (Vec (#0)); + enc_k := $EncodeKey'u64'(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_table_with_length_upsert'u64_vec'#0''(m: $Mutation (Table int (Vec (#0))), k: int, v: Vec (#0)) returns (m': $Mutation(Table int (Vec (#0)))) { + var enc_k: int; + var t: Table int (Vec (#0)); + enc_k := $EncodeKey'u64'(k); + t := $Dereference(m); + if (ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_with_length_remove'u64_vec'#0''(m: $Mutation (Table int (Vec (#0))), k: int) +returns (v: Vec (#0), m': $Mutation(Table int (Vec (#0)))) { + var enc_k: int; + var t: Table int (Vec (#0)); + enc_k := $EncodeKey'u64'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_with_length_borrow'u64_vec'#0''(t: Table int (Vec (#0)), k: int) returns (v: Vec (#0)) { + var enc_k: int; + enc_k := $EncodeKey'u64'(k); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + v := GetTable(t, $EncodeKey'u64'(k)); + } +} +procedure {:inline 2} $1_table_with_length_borrow_mut'u64_vec'#0''(m: $Mutation (Table int (Vec (#0))), k: int) +returns (dst: $Mutation (Vec (#0)), m': $Mutation (Table int (Vec (#0)))) { + var enc_k: int; + var t: Table int (Vec (#0)); + enc_k := $EncodeKey'u64'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + call $Abort($StdError(7/*INVALID_ARGUMENTS*/, 101/*ENOT_FOUND*/)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_with_length_borrow_mut_with_default'u64_vec'#0''(m: $Mutation (Table int (Vec (#0))), k: int, default: Vec (#0)) +returns (dst: $Mutation (Vec (#0)), m': $Mutation (Table int (Vec (#0)))) { + var enc_k: int; + var t: Table int (Vec (#0)); + var t': Table int (Vec (#0)); + enc_k := $EncodeKey'u64'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_with_length_spec_len'u64_vec'#0''(t: (Table int (Vec (#0)))): int { + LenTable(t) +} +function {:inline} $1_table_with_length_spec_contains'u64_vec'#0''(t: (Table int (Vec (#0))), k: int): bool { + ContainsTable(t, $EncodeKey'u64'(k)) +} +function {:inline} $1_table_with_length_spec_set'u64_vec'#0''(t: Table int (Vec (#0)), k: int, v: Vec (#0)): Table int (Vec (#0)) { + (var enc_k := $EncodeKey'u64'(k); + if (ContainsTable(t, enc_k)) then + UpdateTable(t, enc_k, v) + else + AddTable(t, enc_k, v)) +} +function {:inline} $1_table_with_length_spec_remove'u64_vec'#0''(t: Table int (Vec (#0)), k: int): Table int (Vec (#0)) { + RemoveTable(t, $EncodeKey'u64'(k)) +} +function {:inline} $1_table_with_length_spec_get'u64_vec'#0''(t: Table int (Vec (#0)), k: int): Vec (#0) { + GetTable(t, $EncodeKey'u64'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,u128)` + +function $IsEqual'$1_table_with_length_TableWithLength'address_u128''(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_table_with_length_TableWithLength'address_u128''(t: Table int (int)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'u128'(GetTable(t, i))) +} +procedure {:inline 2} $1_table_with_length_new'address_u128'() returns (v: Table int (int)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_table_with_length_destroy_empty'address_u128'(t: Table int (int)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_table_with_length_length'address_u128'(t: (Table int (int))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_table_with_length_empty'address_u128'(t: (Table int (int))) returns (r: bool) { + r := LenTable(t) == 0; +} +procedure {:inline 2} $1_table_with_length_contains'address_u128'(t: (Table int (int)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_table_with_length_add'address_u128'(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_table_with_length_upsert'address_u128'(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)) { + m' := $UpdateMutation(m, UpdateTable(t, enc_k, v)); + } else { + m' := $UpdateMutation(m, AddTable(t, enc_k, v)); + } +} +procedure {:inline 2} $1_table_with_length_remove'address_u128'(m: $Mutation (Table int (int)), k: int) +returns (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 { + v := GetTable(t, enc_k); + m' := $UpdateMutation(m, RemoveTable(t, enc_k)); + } +} +procedure {:inline 2} $1_table_with_length_borrow'address_u128'(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_table_with_length_borrow_mut'address_u128'(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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +procedure {:inline 2} $1_table_with_length_borrow_mut_with_default'address_u128'(m: $Mutation (Table int (int)), k: int, default: int) +returns (dst: $Mutation (int), m': $Mutation (Table int (int))) { + var enc_k: int; + var t: Table int (int); + var t': Table int (int); + enc_k := $EncodeKey'address'(k); + t := $Dereference(m); + if (!ContainsTable(t, enc_k)) { + m' := $UpdateMutation(m, AddTable(t, enc_k, default)); + t' := $Dereference(m'); + dst := $Mutation(m'->l, ExtendVec(m'->p, enc_k), GetTable(t', enc_k)); + } else { + dst := $Mutation(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_table_with_length_spec_len'address_u128'(t: (Table int (int))): int { + LenTable(t) +} +function {:inline} $1_table_with_length_spec_contains'address_u128'(t: (Table int (int)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_with_length_spec_set'address_u128'(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_table_with_length_spec_remove'address_u128'(t: Table int (int), k: int): Table int (int) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_table_with_length_spec_get'address_u128'(t: Table int (int), k: int): int { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `(address,$1_account_SignerCapability)` + +function $IsEqual'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(t1: Table int ($1_account_SignerCapability), t2: Table int ($1_account_SignerCapability)): 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_account_SignerCapability''(t: Table int ($1_account_SignerCapability)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_account_SignerCapability'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'address_$1_account_SignerCapability'() returns (v: Table int ($1_account_SignerCapability)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'address_$1_account_SignerCapability'(t: Table int ($1_account_SignerCapability)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'address_$1_account_SignerCapability'(t: (Table int ($1_account_SignerCapability))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'address_$1_account_SignerCapability'(t: (Table int ($1_account_SignerCapability)), k: int) returns (r: bool) { + r := ContainsTable(t, $EncodeKey'address'(k)); +} +procedure {:inline 2} $1_simple_map_add'address_$1_account_SignerCapability'(m: $Mutation (Table int ($1_account_SignerCapability)), k: int, v: $1_account_SignerCapability) returns (m': $Mutation(Table int ($1_account_SignerCapability))) { + var enc_k: int; + var t: Table int ($1_account_SignerCapability); + 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_account_SignerCapability'(m: $Mutation (Table int ($1_account_SignerCapability)), k: int) +returns (k': int, v: $1_account_SignerCapability, m': $Mutation(Table int ($1_account_SignerCapability))) { + var enc_k: int; + var t: Table int ($1_account_SignerCapability); + 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_account_SignerCapability'(t: Table int ($1_account_SignerCapability), k: int) returns (v: $1_account_SignerCapability) { + 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_account_SignerCapability'(m: $Mutation (Table int ($1_account_SignerCapability)), k: int) +returns (dst: $Mutation ($1_account_SignerCapability), m': $Mutation (Table int ($1_account_SignerCapability))) { + var enc_k: int; + var t: Table int ($1_account_SignerCapability); + 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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'address_$1_account_SignerCapability'(t: (Table int ($1_account_SignerCapability))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'(t: (Table int ($1_account_SignerCapability)), k: int): bool { + ContainsTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_set'address_$1_account_SignerCapability'(t: Table int ($1_account_SignerCapability), k: int, v: $1_account_SignerCapability): Table int ($1_account_SignerCapability) { + (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_account_SignerCapability'(t: Table int ($1_account_SignerCapability), k: int): Table int ($1_account_SignerCapability) { + RemoveTable(t, $EncodeKey'address'(k)) +} +function {:inline} $1_simple_map_spec_get'address_$1_account_SignerCapability'(t: Table int ($1_account_SignerCapability), k: int): $1_account_SignerCapability { + GetTable(t, $EncodeKey'address'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_string_String,$1_object_property_map_PropertyValue)` + +function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(t1: Table int ($1_object_property_map_PropertyValue), t2: Table int ($1_object_property_map_PropertyValue)): 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_$1_object_property_map_PropertyValue''(t: Table int ($1_object_property_map_PropertyValue)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_object_property_map_PropertyValue'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'$1_string_String_$1_object_property_map_PropertyValue'() returns (v: Table int ($1_object_property_map_PropertyValue)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_$1_object_property_map_PropertyValue'(t: Table int ($1_object_property_map_PropertyValue)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'$1_string_String_$1_object_property_map_PropertyValue'(t: (Table int ($1_object_property_map_PropertyValue))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_$1_object_property_map_PropertyValue'(t: (Table int ($1_object_property_map_PropertyValue)), 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_$1_object_property_map_PropertyValue'(m: $Mutation (Table int ($1_object_property_map_PropertyValue)), k: $1_string_String, v: $1_object_property_map_PropertyValue) returns (m': $Mutation(Table int ($1_object_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_object_property_map_PropertyValue); + 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_$1_object_property_map_PropertyValue'(m: $Mutation (Table int ($1_object_property_map_PropertyValue)), k: $1_string_String) +returns (k': $1_string_String, v: $1_object_property_map_PropertyValue, m': $Mutation(Table int ($1_object_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_object_property_map_PropertyValue); + 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_$1_object_property_map_PropertyValue'(t: Table int ($1_object_property_map_PropertyValue), k: $1_string_String) returns (v: $1_object_property_map_PropertyValue) { + 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_$1_object_property_map_PropertyValue'(m: $Mutation (Table int ($1_object_property_map_PropertyValue)), k: $1_string_String) +returns (dst: $Mutation ($1_object_property_map_PropertyValue), m': $Mutation (Table int ($1_object_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_object_property_map_PropertyValue); + 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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'$1_string_String_$1_object_property_map_PropertyValue'(t: (Table int ($1_object_property_map_PropertyValue))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'$1_string_String_$1_object_property_map_PropertyValue'(t: (Table int ($1_object_property_map_PropertyValue)), k: $1_string_String): bool { + ContainsTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_set'$1_string_String_$1_object_property_map_PropertyValue'(t: Table int ($1_object_property_map_PropertyValue), k: $1_string_String, v: $1_object_property_map_PropertyValue): Table int ($1_object_property_map_PropertyValue) { + (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_$1_object_property_map_PropertyValue'(t: Table int ($1_object_property_map_PropertyValue), k: $1_string_String): Table int ($1_object_property_map_PropertyValue) { + RemoveTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_get'$1_string_String_$1_object_property_map_PropertyValue'(t: Table int ($1_object_property_map_PropertyValue), k: $1_string_String): $1_object_property_map_PropertyValue { + GetTable(t, $EncodeKey'$1_string_String'(k)) +} + + + +// ---------------------------------------------------------------------------------- +// Native Table implementation for type `($1_string_String,$1_property_map_PropertyValue)` + +function $IsEqual'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(t1: Table int ($1_property_map_PropertyValue), t2: Table int ($1_property_map_PropertyValue)): 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_$1_property_map_PropertyValue''(t: Table int ($1_property_map_PropertyValue)): bool { + $IsValid'u64'(LenTable(t)) && + (forall i: int:: ContainsTable(t, i) ==> $IsValid'$1_property_map_PropertyValue'(GetTable(t, i))) +} +procedure {:inline 2} $1_simple_map_create'$1_string_String_$1_property_map_PropertyValue'() returns (v: Table int ($1_property_map_PropertyValue)) { + v := EmptyTable(); +} +procedure {:inline 2} $1_simple_map_destroy_empty'$1_string_String_$1_property_map_PropertyValue'(t: Table int ($1_property_map_PropertyValue)) { + if (LenTable(t) != 0) { + call $Abort($StdError(1/*INVALID_STATE*/, 102/*ENOT_EMPTY*/)); + } +} +procedure {:inline 2} $1_simple_map_length'$1_string_String_$1_property_map_PropertyValue'(t: (Table int ($1_property_map_PropertyValue))) returns (l: int) { + l := LenTable(t); +} +procedure {:inline 2} $1_simple_map_contains_key'$1_string_String_$1_property_map_PropertyValue'(t: (Table int ($1_property_map_PropertyValue)), 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_$1_property_map_PropertyValue'(m: $Mutation (Table int ($1_property_map_PropertyValue)), k: $1_string_String, v: $1_property_map_PropertyValue) returns (m': $Mutation(Table int ($1_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_property_map_PropertyValue); + 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_$1_property_map_PropertyValue'(m: $Mutation (Table int ($1_property_map_PropertyValue)), k: $1_string_String) +returns (k': $1_string_String, v: $1_property_map_PropertyValue, m': $Mutation(Table int ($1_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_property_map_PropertyValue); + 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_$1_property_map_PropertyValue'(t: Table int ($1_property_map_PropertyValue), k: $1_string_String) returns (v: $1_property_map_PropertyValue) { + 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_$1_property_map_PropertyValue'(m: $Mutation (Table int ($1_property_map_PropertyValue)), k: $1_string_String) +returns (dst: $Mutation ($1_property_map_PropertyValue), m': $Mutation (Table int ($1_property_map_PropertyValue))) { + var enc_k: int; + var t: Table int ($1_property_map_PropertyValue); + 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(m->l, ExtendVec(m->p, enc_k), GetTable(t, enc_k)); + m' := m; + } +} +function {:inline} $1_simple_map_spec_len'$1_string_String_$1_property_map_PropertyValue'(t: (Table int ($1_property_map_PropertyValue))): int { + LenTable(t) +} +function {:inline} $1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'(t: (Table int ($1_property_map_PropertyValue)), k: $1_string_String): bool { + ContainsTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_set'$1_string_String_$1_property_map_PropertyValue'(t: Table int ($1_property_map_PropertyValue), k: $1_string_String, v: $1_property_map_PropertyValue): Table int ($1_property_map_PropertyValue) { + (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_$1_property_map_PropertyValue'(t: Table int ($1_property_map_PropertyValue), k: $1_string_String): Table int ($1_property_map_PropertyValue) { + RemoveTable(t, $EncodeKey'$1_string_String'(k)) +} +function {:inline} $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'(t: Table int ($1_property_map_PropertyValue), k: $1_string_String): $1_property_map_PropertyValue { + 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 + +datatype $signer { + $signer($addr: int) +} +function {:inline} $IsValid'signer'(s: $signer): bool { + $IsValid'address'(s->$addr) +} +function {:inline} $IsEqual'signer'(s1: $signer, s2: $signer): bool { + s1 == s2 +} + +procedure {:inline 1} $1_signer_borrow_address(signer: $signer) returns (res: int) { + res := signer->$addr; +} + +function {:inline} $1_signer_$borrow_address(signer: $signer): int +{ + signer->$addr +} + +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 `#0` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'#0'(v: #0): Vec int; + +axiom (forall v1, v2: #0 :: {$1_bcs_serialize'#0'(v1), $1_bcs_serialize'#0'(v2)} + $IsEqual'#0'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'#0'(v1), $1_bcs_serialize'#0'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: #0 :: {$1_bcs_serialize'#0'(v)} + ( var r := $1_bcs_serialize'#0'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'#0'(v: #0) returns (res: Vec int); +ensures res == $1_bcs_serialize'#0'(v); + +function {:inline} $1_bcs_$to_bytes'#0'(v: #0): Vec int { + $1_bcs_serialize'#0'(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `#1` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'#1'(v: #1): Vec int; + +axiom (forall v1, v2: #1 :: {$1_bcs_serialize'#1'(v1), $1_bcs_serialize'#1'(v2)} + $IsEqual'#1'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'#1'(v1), $1_bcs_serialize'#1'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: #1 :: {$1_bcs_serialize'#1'(v)} + ( var r := $1_bcs_serialize'#1'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'#1'(v: #1) returns (res: Vec int); +ensures res == $1_bcs_serialize'#1'(v); + +function {:inline} $1_bcs_$to_bytes'#1'(v: #1): Vec int { + $1_bcs_serialize'#1'(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_ed25519_SignedMessage'#0'` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v: $1_ed25519_SignedMessage'#0'): Vec int; + +axiom (forall v1, v2: $1_ed25519_SignedMessage'#0' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v2)} + $IsEqual'$1_ed25519_SignedMessage'#0''(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_ed25519_SignedMessage'#0' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v)} + ( var r := $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_ed25519_SignedMessage'#0''(v: $1_ed25519_SignedMessage'#0') returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v); + +function {:inline} $1_bcs_$to_bytes'$1_ed25519_SignedMessage'#0''(v: $1_ed25519_SignedMessage'#0'): Vec int { + $1_bcs_serialize'$1_ed25519_SignedMessage'#0''(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'): Vec int; + +axiom (forall v1, v2: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v2)} + $IsEqual'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v)} + ( var r := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2') returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v); + +function {:inline} $1_bcs_$to_bytes'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'): Vec int { + $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_ed25519_SignedMessage'$1_account_RotationProofChallenge'` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'): Vec int; + +axiom (forall v1, v2: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v2)} + $IsEqual'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v)} + ( var r := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge') returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v); + +function {:inline} $1_bcs_$to_bytes'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'): Vec int { + $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'): Vec int; + +axiom (forall v1, v2: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v2)} + $IsEqual'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v1), $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' :: {$1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v)} + ( var r := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2') returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v); + +function {:inline} $1_bcs_$to_bytes'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'): Vec int { + $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_guid_GUID` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_guid_GUID'(v: $1_guid_GUID): Vec int; + +axiom (forall v1, v2: $1_guid_GUID :: {$1_bcs_serialize'$1_guid_GUID'(v1), $1_bcs_serialize'$1_guid_GUID'(v2)} + $IsEqual'$1_guid_GUID'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_guid_GUID'(v1), $1_bcs_serialize'$1_guid_GUID'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_guid_GUID :: {$1_bcs_serialize'$1_guid_GUID'(v)} + ( var r := $1_bcs_serialize'$1_guid_GUID'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_guid_GUID'(v: $1_guid_GUID) returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_guid_GUID'(v); + +function {:inline} $1_bcs_$to_bytes'$1_guid_GUID'(v: $1_guid_GUID): Vec int { + $1_bcs_serialize'$1_guid_GUID'(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `$1_guid_ID` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'$1_guid_ID'(v: $1_guid_ID): Vec int; + +axiom (forall v1, v2: $1_guid_ID :: {$1_bcs_serialize'$1_guid_ID'(v1), $1_bcs_serialize'$1_guid_ID'(v2)} + $IsEqual'$1_guid_ID'(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'$1_guid_ID'(v1), $1_bcs_serialize'$1_guid_ID'(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: $1_guid_ID :: {$1_bcs_serialize'$1_guid_ID'(v)} + ( var r := $1_bcs_serialize'$1_guid_ID'(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'$1_guid_ID'(v: $1_guid_ID) returns (res: Vec int); +ensures res == $1_bcs_serialize'$1_guid_ID'(v); + +function {:inline} $1_bcs_$to_bytes'$1_guid_ID'(v: $1_guid_ID): Vec int { + $1_bcs_serialize'$1_guid_ID'(v) +} + + + + +// ---------------------------------------------------------------------------------- +// Native BCS implementation for element type `vec'#0'` + +// Serialize is modeled as an uninterpreted function, with an additional +// axiom to say it's an injection. + +function $1_bcs_serialize'vec'#0''(v: Vec (#0)): Vec int; + +axiom (forall v1, v2: Vec (#0) :: {$1_bcs_serialize'vec'#0''(v1), $1_bcs_serialize'vec'#0''(v2)} + $IsEqual'vec'#0''(v1, v2) <==> $IsEqual'vec'u8''($1_bcs_serialize'vec'#0''(v1), $1_bcs_serialize'vec'#0''(v2))); + +// This says that serialize returns a non-empty vec + +axiom (forall v: Vec (#0) :: {$1_bcs_serialize'vec'#0''(v)} + ( var r := $1_bcs_serialize'vec'#0''(v); $IsValid'vec'u8''(r) && LenVec(r) > 0 )); + + +procedure $1_bcs_to_bytes'vec'#0''(v: Vec (#0)) returns (res: Vec int); +ensures res == $1_bcs_serialize'vec'#0''(v); + +function {:inline} $1_bcs_$to_bytes'vec'#0''(v: Vec (#0)): Vec int { + $1_bcs_serialize'vec'#0''(v) +} + + + + +// ---------------------------------------------------------------------------------- +// 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)); + + + +procedure $1_bcs_to_address(v: Vec int) returns (res: int); + +// ---------------------------------------------------------------------------------- +// Native Token and Debug +procedure $1_token_name_of(t_E: T) returns (res1: int, res2: Vec int, res3: Vec int); +procedure $1_debug_print(x: T); +procedure $1_debug_print_stack_trace(); + + +// ================================================================================== +// Native Event module + + + +procedure {:inline 1} $InitEventStore() { +} + +// ============================================================================================ +// Type Reflection on Type Parameters + +datatype $TypeParamInfo { + $TypeParamBool(), + $TypeParamU8(), + $TypeParamU16(), + $TypeParamU32(), + $TypeParamU64(), + $TypeParamU128(), + $TypeParamU256(), + $TypeParamAddress(), + $TypeParamSigner(), + $TypeParamVector(e: $TypeParamInfo), + $TypeParamStruct(a: int, m: Vec int, s: Vec int) +} + + + +//================================== +// Begin Translation + +function $TypeName(t: $TypeParamInfo): Vec int; +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamBool ==> $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)) ==> t is $TypeParamBool); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU8 ==> $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)) ==> t is $TypeParamU8); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU16 ==> $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)) ==> t is $TypeParamU16); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU32 ==> $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)) ==> t is $TypeParamU32); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU64 ==> $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)) ==> t is $TypeParamU64); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU128 ==> $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)) ==> t is $TypeParamU128); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamU256 ==> $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)) ==> t is $TypeParamU256); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamAddress ==> $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)) ==> t is $TypeParamAddress); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamSigner ==> $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)) ==> t is $TypeParamSigner); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamVector ==> $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(t->e)), 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))) ==> t is $TypeParamVector); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} t is $TypeParamStruct ==> $IsEqual'vec'u8''($TypeName(t), ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(Vec(DefaultVecMap()[0 := 48][1 := 120], 2), MakeVec1(t->a)), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), t->m), Vec(DefaultVecMap()[0 := 58][1 := 58], 2)), t->s))); +axiom (forall t: $TypeParamInfo :: {$TypeName(t)} $IsPrefix'vec'u8''($TypeName(t), Vec(DefaultVecMap()[0 := 48][1 := 120], 2)) ==> t is $TypeParamVector); + + +// 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; +type #1; +function {:inline} $IsEqual'#1'(x1: #1, x2: #1): bool { x1 == x2 } +function {:inline} $IsValid'#1'(x: #1): bool { true } +var #1_info: $TypeParamInfo; +var #1_$memory: $Memory #1; +type #2; +function {:inline} $IsEqual'#2'(x1: #2, x2: #2): bool { x1 == x2 } +function {:inline} $IsValid'#2'(x: #2): bool { true } +var #2_info: $TypeParamInfo; +var #2_$memory: $Memory #2; +type #3; +function {:inline} $IsEqual'#3'(x1: #3, x2: #3): bool { x1 == x2 } +function {:inline} $IsValid'#3'(x: #3): bool { true } +var #3_info: $TypeParamInfo; +var #3_$memory: $Memory #3; + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u16'(b1), $1_from_bcs_deserializable'u16'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'u32'(b1), $1_from_bcs_deserializable'u32'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance

+axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'bool''(b1), $1_from_bcs_deserializable'vec'bool''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'u128''(b1), $1_from_bcs_deserializable'vec'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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'vec'u8'''(b1), $1_from_bcs_deserializable'vec'vec'u8'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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'vec'#0'''(b1), $1_from_bcs_deserializable'vec'vec'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_option_Option'$1_property_map_PropertyValue'''(b1), $1_from_bcs_deserializable'vec'$1_option_Option'$1_property_map_PropertyValue'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_option_Option'#0'''(b1), $1_from_bcs_deserializable'vec'$1_option_Option'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_string_String''(b1), $1_from_bcs_deserializable'vec'$1_string_String''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_type_info_TypeInfo''(b1), $1_from_bcs_deserializable'vec'$1_type_info_TypeInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserializable'vec'$1_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_multi_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserializable'vec'$1_multi_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_v2_AggregatorSnapshot'u64'''(b1), $1_from_bcs_deserializable'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_any_Any''(b1), $1_from_bcs_deserializable'vec'$1_any_Any''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_big_vector_BigVector'#0'''(b1), $1_from_bcs_deserializable'vec'$1_big_vector_BigVector'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_transaction_context_EntryFunctionPayload''(b1), $1_from_bcs_deserializable'vec'$1_transaction_context_EntryFunctionPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_transaction_context_MultisigPayload''(b1), $1_from_bcs_deserializable'vec'$1_transaction_context_MultisigPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_DeleteRef''(b1), $1_from_bcs_deserializable'vec'$1_object_DeleteRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserializable'vec'$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_TransferRef''(b1), $1_from_bcs_deserializable'vec'$1_object_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_function_info_FunctionInfo''(b1), $1_from_bcs_deserializable'vec'$1_function_info_FunctionInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_TransferRef''(b1), $1_from_bcs_deserializable'vec'$1_fungible_asset_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_BurnRef''(b1), $1_from_bcs_deserializable'vec'$1_fungible_asset_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_FungibleStore''(b1), $1_from_bcs_deserializable'vec'$1_fungible_asset_FungibleStore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_MintRef''(b1), $1_from_bcs_deserializable'vec'$1_fungible_asset_MintRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_DelegatedMintCapability''(b1), $1_from_bcs_deserializable'vec'$1_starcoin_coin_DelegatedMintCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'vec'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'#0'''(b1), $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserializable'vec'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_block_reward_RewardInfo''(b1), $1_from_bcs_deserializable'vec'$1_block_reward_RewardInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_Signature''(b1), $1_from_bcs_deserializable'vec'$1_bls12381_Signature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_AggrOrMultiSignature''(b1), $1_from_bcs_deserializable'vec'$1_bls12381_AggrOrMultiSignature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_PublicKey''(b1), $1_from_bcs_deserializable'vec'$1_bls12381_PublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_PublicKeyWithPoP''(b1), $1_from_bcs_deserializable'vec'$1_bls12381_PublicKeyWithPoP''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_royalty_MutatorRef''(b1), $1_from_bcs_deserializable'vec'$1_royalty_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_royalty_Royalty''(b1), $1_from_bcs_deserializable'vec'$1_royalty_Royalty''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_ConcurrentSupply''(b1), $1_from_bcs_deserializable'vec'$1_collection_ConcurrentSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_MutatorRef''(b1), $1_from_bcs_deserializable'vec'$1_collection_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_Collection''(b1), $1_from_bcs_deserializable'vec'$1_collection_Collection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_FixedSupply''(b1), $1_from_bcs_deserializable'vec'$1_collection_FixedSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_crypto_algebra_Element'#0'''(b1), $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_crypto_algebra_Element'#1'''(b1), $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_DataRecord'u128'''(b1), $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_DataRecord'#1'''(b1), $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_token_BurnRef''(b1), $1_from_bcs_deserializable'vec'$1_object_token_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_token_MutatorRef''(b1), $1_from_bcs_deserializable'vec'$1_object_token_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_property_map_PropertyValue''(b1), $1_from_bcs_deserializable'vec'$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_CompressedRistretto''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_CompressedRistretto''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_RistrettoPoint''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_RistrettoPoint''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_Scalar''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_Scalar''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_pedersen_Commitment''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_pedersen_Commitment''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_elgamal_Ciphertext''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_Ciphertext''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_elgamal_CompressedPubkey''(b1), $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_CompressedPubkey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_secp256k1_ECDSARawPublicKey''(b1), $1_from_bcs_deserializable'vec'$1_secp256k1_ECDSARawPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_WithdrawCapability''(b1), $1_from_bcs_deserializable'vec'$1_token_WithdrawCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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''(b1), $1_from_bcs_deserializable'vec'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'u8''(b1), $1_from_bcs_deserializable'$1_option_Option'u8''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'u128''(b1), $1_from_bcs_deserializable'$1_option_Option'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_string_String''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_string_String''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_type_info_TypeInfo''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_type_info_TypeInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_multi_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_v2_AggregatorSnapshot'u64'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_any_Any''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_any_Any''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_big_vector_BigVector'#0'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_big_vector_BigVector'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_transaction_context_EntryFunctionPayload''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_transaction_context_MultisigPayload''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_MultisigPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_DeleteRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_object_DeleteRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_TransferRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_object_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_function_info_FunctionInfo''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_function_info_FunctionInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_TransferRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_BurnRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_fungible_asset_MintRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_MintRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'#0'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_AggrOrMultiSignature''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_PublicKey''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_bls12381_PublicKeyWithPoP''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_royalty_MutatorRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_royalty_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_royalty_Royalty''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_royalty_Royalty''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_ConcurrentSupply''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_collection_ConcurrentSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_MutatorRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_collection_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_FixedSupply''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_collection_FixedSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_crypto_algebra_Element'#0'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_crypto_algebra_Element'#1'''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_token_BurnRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_object_token_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_token_MutatorRef''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_object_token_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_property_map_PropertyValue''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_CompressedRistretto''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_CompressedRistretto''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_RistrettoPoint''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_RistrettoPoint''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_Scalar''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_Scalar''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_pedersen_Commitment''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_pedersen_Commitment''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_elgamal_Ciphertext''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ristretto255_elgamal_CompressedPubkey''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_secp256k1_ECDSARawPublicKey''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_WithdrawCapability''(b1), $1_from_bcs_deserializable'$1_option_Option'$1_token_WithdrawCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_option_Option'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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''(b1), $1_from_bcs_deserializable'$1_option_Option'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_features_Features'(b1), $1_from_bcs_deserializable'$1_features_Features'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_features_PendingFeatures'(b1), $1_from_bcs_deserializable'$1_features_PendingFeatures'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'address_u128''(b1), $1_from_bcs_deserializable'$1_table_Table'address_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'address_address''(b1), $1_from_bcs_deserializable'$1_table_Table'address_address''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'$1_string_String_$1_token_CollectionData''(b1), $1_from_bcs_deserializable'$1_table_Table'$1_string_String_$1_token_CollectionData''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserializable'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'$1_token_TokenDataId_$1_token_TokenData''(b1), $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'$1_token_TokenId_$1_token_Token''(b1), $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenId_$1_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(b1), $1_from_bcs_deserializable'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_Table'#0_#1''(b1), $1_from_bcs_deserializable'$1_table_Table'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ed25519_Signature'(b1), $1_from_bcs_deserializable'$1_ed25519_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(b1), $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_SignedMessage'$1_account_RotationProofChallenge''(b1), $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(b1), $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ed25519_SignedMessage'#0''(b1), $1_from_bcs_deserializable'$1_ed25519_SignedMessage'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ed25519_UnvalidatedPublicKey'(b1), $1_from_bcs_deserializable'$1_ed25519_UnvalidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ed25519_ValidatedPublicKey'(b1), $1_from_bcs_deserializable'$1_ed25519_ValidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_multi_ed25519_Signature'(b1), $1_from_bcs_deserializable'$1_multi_ed25519_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_multi_ed25519_UnvalidatedPublicKey'(b1), $1_from_bcs_deserializable'$1_multi_ed25519_UnvalidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_multi_ed25519_ValidatedPublicKey'(b1), $1_from_bcs_deserializable'$1_multi_ed25519_ValidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_TransferEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_TransferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_DepositEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_DepositEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_WithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_WithdrawEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>> +axiom (forall b1: 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_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ConfigChangeEvent'#0'''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_ProposalCreatedEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_VoteChangedEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_VoteChangedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_block_reward_BlockRewardEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_BurnEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_BurnEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_MintEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MintEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_collection_MutationEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance , u128>>> +axiom (forall b1: 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_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_OracleUpdateEvent'#0_u128'''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_OracleUpdateEvent'#0_#1'''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_OracleUpdateEvent'#0_#2'''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_epoch_NewEpochEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_epoch_NewEpochEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_token_MutationEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_token_MutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_stc_block_NewBlockEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_CollectionDescriptionMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_CollectionMaxiumMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_CollectionUriMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_DefaultPropertyMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_DescriptionMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_MaxiumMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_OptInTransferEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_RoyaltyMutateEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_event_store_UriMutationEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_DepositEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_DepositEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_WithdrawEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_WithdrawEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_BurnTokenEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_BurnTokenEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_CreateCollectionEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateCollectionEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_CreateTokenDataEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_MintTokenEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MintTokenEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_MutateTokenPropertyMapEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_transfers_TokenCancelOfferEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_transfers_TokenClaimEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_token_transfers_TokenOfferEvent''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_event_EventHandle'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>>> +axiom (forall b1: 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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>> +axiom (forall b1: 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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_utils_Cons'#0_$1_string_utils_NIL''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_utils_Cons'#0_#1''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >>> +axiom (forall b1: 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_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_utils_Cons'#1_$1_string_utils_NIL''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_utils_Cons'#2_$1_string_utils_NIL''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_utils_Cons'#3_$1_string_utils_NIL''(b1), $1_from_bcs_deserializable'$1_string_utils_Cons'#3_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_utils_NIL'(b1), $1_from_bcs_deserializable'$1_string_utils_NIL'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_id_ChainId'(b1), $1_from_bcs_deserializable'$1_chain_id_ChainId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_KeyRotation'(b1), $1_from_bcs_deserializable'$1_account_KeyRotation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_KeyRotationEvent'(b1), $1_from_bcs_deserializable'$1_account_KeyRotationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_OriginatingAddress'(b1), $1_from_bcs_deserializable'$1_account_OriginatingAddress'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_RotationCapabilityOfferProofChallengeV2'(b1), $1_from_bcs_deserializable'$1_account_RotationCapabilityOfferProofChallengeV2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_RotationProofChallenge'(b1), $1_from_bcs_deserializable'$1_account_RotationProofChallenge'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_SignerCapabilityOfferProofChallengeV2'(b1), $1_from_bcs_deserializable'$1_account_SignerCapabilityOfferProofChallengeV2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_acl_ACL'(b1), $1_from_bcs_deserializable'$1_acl_ACL'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_factory_AggregatorFactory'(b1), $1_from_bcs_deserializable'$1_aggregator_factory_AggregatorFactory'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_v2_Aggregator'u64''(b1), $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u64''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_v2_Aggregator'u128''(b1), $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_v2_Aggregator'#0''(b1), $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_v2_AggregatorSnapshot'u64''(b1), $1_from_bcs_deserializable'$1_aggregator_v2_AggregatorSnapshot'u64''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_v2_DerivedStringSnapshot'(b1), $1_from_bcs_deserializable'$1_aggregator_v2_DerivedStringSnapshot'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_any_Any'(b1), $1_from_bcs_deserializable'$1_any_Any'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_table_with_length_TableWithLength'u64_vec'#0'''(b1), $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'u64_vec'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_table_with_length_TableWithLength'address_u128''(b1), $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'address_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_big_vector_BigVector'#0''(b1), $1_from_bcs_deserializable'$1_big_vector_BigVector'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bit_vector_BitVector'(b1), $1_from_bcs_deserializable'$1_bit_vector_BitVector'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_point64_FixedPoint64'(b1), $1_from_bcs_deserializable'$1_fixed_point64_FixedPoint64'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_transaction_context_AUID'(b1), $1_from_bcs_deserializable'$1_transaction_context_AUID'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_transaction_context_EntryFunctionPayload'(b1), $1_from_bcs_deserializable'$1_transaction_context_EntryFunctionPayload'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_transaction_context_MultisigPayload'(b1), $1_from_bcs_deserializable'$1_transaction_context_MultisigPayload'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_ConstructorRef'(b1), $1_from_bcs_deserializable'$1_object_ConstructorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_DeleteRef'(b1), $1_from_bcs_deserializable'$1_object_DeleteRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_DeriveRef'(b1), $1_from_bcs_deserializable'$1_object_DeriveRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_ExtendRef'(b1), $1_from_bcs_deserializable'$1_object_ExtendRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_LinearTransferRef'(b1), $1_from_bcs_deserializable'$1_object_LinearTransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_object_ObjectCore''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_object_ObjectCore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_fungible_asset_FungibleStore''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_FungibleStore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_fungible_asset_Metadata''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_Metadata''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_collection_Collection''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_collection_Collection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_object_token_Token''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_object_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_starcoin_token_StarcoinCollection''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinCollection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'$1_starcoin_token_StarcoinToken''(b1), $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinToken''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'#0''(b1), $1_from_bcs_deserializable'$1_object_Object'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_object_Object'#1''(b1), $1_from_bcs_deserializable'$1_object_Object'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_ObjectCore'(b1), $1_from_bcs_deserializable'$1_object_ObjectCore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_TombStone'(b1), $1_from_bcs_deserializable'$1_object_TombStone'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_Transfer'(b1), $1_from_bcs_deserializable'$1_object_Transfer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_TransferEvent'(b1), $1_from_bcs_deserializable'$1_object_TransferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_TransferRef'(b1), $1_from_bcs_deserializable'$1_object_TransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_Untransferable'(b1), $1_from_bcs_deserializable'$1_object_Untransferable'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_function_info_FunctionInfo'(b1), $1_from_bcs_deserializable'$1_function_info_FunctionInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_TransferRef'(b1), $1_from_bcs_deserializable'$1_fungible_asset_TransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Untransferable'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Untransferable'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_BurnRef'(b1), $1_from_bcs_deserializable'$1_fungible_asset_BurnRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_ConcurrentFungibleBalance'(b1), $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentFungibleBalance'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_ConcurrentSupply'(b1), $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Deposit'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Deposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_DispatchFunctionStore'(b1), $1_from_bcs_deserializable'$1_fungible_asset_DispatchFunctionStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Frozen'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Frozen'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_FungibleAsset'(b1), $1_from_bcs_deserializable'$1_fungible_asset_FungibleAsset'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_FungibleStore'(b1), $1_from_bcs_deserializable'$1_fungible_asset_FungibleStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Metadata'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Metadata'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_MintRef'(b1), $1_from_bcs_deserializable'$1_fungible_asset_MintRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Supply'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Supply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_fungible_asset_Withdraw'(b1), $1_from_bcs_deserializable'$1_fungible_asset_Withdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_dispatchable_fungible_asset_TransferRefStore'(b1), $1_from_bcs_deserializable'$1_dispatchable_fungible_asset_TransferRefStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_primary_fungible_store_DeriveRefPod'(b1), $1_from_bcs_deserializable'$1_primary_fungible_store_DeriveRefPod'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_Coin'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_coin_Coin'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_AggregatableCoin'#0''(b1), $1_from_bcs_deserializable'$1_coin_AggregatableCoin'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_BurnCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_BurnCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_BurnCapability'#0''(b1), $1_from_bcs_deserializable'$1_coin_BurnCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_BurnRefReceipt'(b1), $1_from_bcs_deserializable'$1_coin_BurnRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_CoinConversionMap'(b1), $1_from_bcs_deserializable'$1_coin_CoinConversionMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_CoinDeposit'(b1), $1_from_bcs_deserializable'$1_coin_CoinDeposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_CoinEventHandleDeletion'(b1), $1_from_bcs_deserializable'$1_coin_CoinEventHandleDeletion'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_coin_CoinInfo'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_CoinStore'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_coin_CoinStore'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_CoinWithdraw'(b1), $1_from_bcs_deserializable'$1_coin_CoinWithdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_FreezeCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_FreezeCapability'#0''(b1), $1_from_bcs_deserializable'$1_coin_FreezeCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_MigrationFlag'(b1), $1_from_bcs_deserializable'$1_coin_MigrationFlag'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_MintCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_MintCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_MintCapability'#0''(b1), $1_from_bcs_deserializable'$1_coin_MintCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_MintRefReceipt'(b1), $1_from_bcs_deserializable'$1_coin_MintRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_PairCreation'(b1), $1_from_bcs_deserializable'$1_coin_PairCreation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_PairedCoinType'(b1), $1_from_bcs_deserializable'$1_coin_PairedCoinType'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_PairedFungibleAssetRefs'(b1), $1_from_bcs_deserializable'$1_coin_PairedFungibleAssetRefs'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_SupplyConfig'(b1), $1_from_bcs_deserializable'$1_coin_SupplyConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_TransferRefReceipt'(b1), $1_from_bcs_deserializable'$1_coin_TransferRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$supply'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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'#0''(b1), $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_treasury_DepositEvent'(b1), $1_from_bcs_deserializable'$1_treasury_DepositEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_treasury_WithdrawEvent'(b1), $1_from_bcs_deserializable'$1_treasury_WithdrawEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_LinearWithdrawCapability'#0''(b1), $1_from_bcs_deserializable'$1_treasury_LinearWithdrawCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_Treasury'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_treasury_Treasury'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_Treasury'#0''(b1), $1_from_bcs_deserializable'$1_treasury_Treasury'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_WithdrawCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_treasury_WithdrawCapability'#0''(b1), $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_coin_DelegatedMintCapability'(b1), $1_from_bcs_deserializable'$1_starcoin_coin_DelegatedMintCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_coin_Delegations'(b1), $1_from_bcs_deserializable'$1_starcoin_coin_Delegations'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_coin_MintCapStore'(b1), $1_from_bcs_deserializable'$1_starcoin_coin_MintCapStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_coin_STC'(b1), $1_from_bcs_deserializable'$1_starcoin_coin_STC'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_Config'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_Config'$1_block_reward_config_RewardConfig''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_Config'$1_stc_version_Version''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_version_Version''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_Config'#0''(b1), $1_from_bcs_deserializable'$1_on_chain_config_Config'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_ConfigChangeEvent'#0''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_ModifyConfigCapability'#0''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_on_chain_config_ModifyConfigCapabilityHolder'#0''(b1), $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_DaoConfig'#0''(b1), $1_from_bcs_deserializable'$1_dao_DaoConfig'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_DaoGlobalInfo'#0''(b1), $1_from_bcs_deserializable'$1_dao_DaoGlobalInfo'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_Proposal'#0_#1''(b1), $1_from_bcs_deserializable'$1_dao_Proposal'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_Vote'#0''(b1), $1_from_bcs_deserializable'$1_dao_Vote'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_dao_VoteChangedEvent'(b1), $1_from_bcs_deserializable'$1_dao_VoteChangedEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_block_reward_config_RewardConfig'(b1), $1_from_bcs_deserializable'$1_block_reward_config_RewardConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_block_reward_BlockRewardEvent'(b1), $1_from_bcs_deserializable'$1_block_reward_BlockRewardEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_block_reward_RewardInfo'(b1), $1_from_bcs_deserializable'$1_block_reward_RewardInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_block_reward_RewardQueue'(b1), $1_from_bcs_deserializable'$1_block_reward_RewardQueue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_Signature'(b1), $1_from_bcs_deserializable'$1_bls12381_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_AggrOrMultiSignature'(b1), $1_from_bcs_deserializable'$1_bls12381_AggrOrMultiSignature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_AggrPublicKeysWithPoP'(b1), $1_from_bcs_deserializable'$1_bls12381_AggrPublicKeysWithPoP'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_ProofOfPossession'(b1), $1_from_bcs_deserializable'$1_bls12381_ProofOfPossession'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_PublicKey'(b1), $1_from_bcs_deserializable'$1_bls12381_PublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_bls12381_PublicKeyWithPoP'(b1), $1_from_bcs_deserializable'$1_bls12381_PublicKeyWithPoP'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_capability_Cap'#0''(b1), $1_from_bcs_deserializable'$1_capability_Cap'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_capability_CapDelegateState'#0''(b1), $1_from_bcs_deserializable'$1_capability_CapDelegateState'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_capability_CapState'#0''(b1), $1_from_bcs_deserializable'$1_capability_CapState'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_capability_LinearCap'#0''(b1), $1_from_bcs_deserializable'$1_capability_LinearCap'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_royalty_MutatorRef'(b1), $1_from_bcs_deserializable'$1_royalty_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_royalty_Royalty'(b1), $1_from_bcs_deserializable'$1_royalty_Royalty'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_ConcurrentSupply'(b1), $1_from_bcs_deserializable'$1_collection_ConcurrentSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_MutatorRef'(b1), $1_from_bcs_deserializable'$1_collection_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_Burn'(b1), $1_from_bcs_deserializable'$1_collection_Burn'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_BurnEvent'(b1), $1_from_bcs_deserializable'$1_collection_BurnEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_Collection'(b1), $1_from_bcs_deserializable'$1_collection_Collection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_FixedSupply'(b1), $1_from_bcs_deserializable'$1_collection_FixedSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_Mint'(b1), $1_from_bcs_deserializable'$1_collection_Mint'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_MintEvent'(b1), $1_from_bcs_deserializable'$1_collection_MintEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_Mutation'(b1), $1_from_bcs_deserializable'$1_collection_Mutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_MutationEvent'(b1), $1_from_bcs_deserializable'$1_collection_MutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_SetMaxSupply'(b1), $1_from_bcs_deserializable'$1_collection_SetMaxSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_collection_UnlimitedSupply'(b1), $1_from_bcs_deserializable'$1_collection_UnlimitedSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_comparator_Result'(b1), $1_from_bcs_deserializable'$1_comparator_Result'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_consensus_config_ConsensusConfig'(b1), $1_from_bcs_deserializable'$1_consensus_config_ConsensusConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_copyable_any_Any'(b1), $1_from_bcs_deserializable'$1_copyable_any_Any'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_crypto_algebra_Element'#0''(b1), $1_from_bcs_deserializable'$1_crypto_algebra_Element'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_crypto_algebra_Element'#1''(b1), $1_from_bcs_deserializable'$1_crypto_algebra_Element'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_crypto_algebra_Element'#2''(b1), $1_from_bcs_deserializable'$1_crypto_algebra_Element'#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_stc_version_Version'(b1), $1_from_bcs_deserializable'$1_stc_version_Version'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_account_SignerCapability''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_$1_object_property_map_PropertyValue''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_$1_property_map_PropertyValue''(b1), $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_reserved_accounts_signer_SignerResponsbility'(b1), $1_from_bcs_deserializable'$1_reserved_accounts_signer_SignerResponsbility'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataRecord'u128''(b1), $1_from_bcs_deserializable'$1_oracle_DataRecord'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataRecord'#0''(b1), $1_from_bcs_deserializable'$1_oracle_DataRecord'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataRecord'#1''(b1), $1_from_bcs_deserializable'$1_oracle_DataRecord'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataRecord'#2''(b1), $1_from_bcs_deserializable'$1_oracle_DataRecord'#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance , u128>> +axiom (forall b1: 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_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserializable'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataSource'#0_u128''(b1), $1_from_bcs_deserializable'$1_oracle_DataSource'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataSource'#0_#1''(b1), $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_DataSource'#0_#2''(b1), $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_oracle_GenesisSignerCapability'(b1), $1_from_bcs_deserializable'$1_oracle_GenesisSignerCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance , u128>> +axiom (forall b1: 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_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(b1), $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleFeed'#0_u128''(b1), $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleFeed'#0_#1''(b1), $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleFeed'#0_#2''(b1), $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance , oracle_price::PriceOracleInfo>> +axiom (forall b1: 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_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleInfo'#0_#1''(b1), $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance , u128>> +axiom (forall b1: 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_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleUpdateEvent'#0_u128''(b1), $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_OracleUpdateEvent'#0_#1''(b1), $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance >> +axiom (forall b1: 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_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(b1), $1_from_bcs_deserializable'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_oracle_UpdateCapability'#0''(b1), $1_from_bcs_deserializable'$1_oracle_UpdateCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_oracle_price_PriceOracleInfo'(b1), $1_from_bcs_deserializable'$1_oracle_price_PriceOracleInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_easy_gas_GasFeeAddress'(b1), $1_from_bcs_deserializable'$1_easy_gas_GasFeeAddress'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_easy_gas_GasTokenEntry'(b1), $1_from_bcs_deserializable'$1_easy_gas_GasTokenEntry'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_epoch_Epoch'(b1), $1_from_bcs_deserializable'$1_epoch_Epoch'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_epoch_EpochData'(b1), $1_from_bcs_deserializable'$1_epoch_EpochData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_epoch_NewEpochEvent'(b1), $1_from_bcs_deserializable'$1_epoch_NewEpochEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_managed_coin_Capabilities'#0''(b1), $1_from_bcs_deserializable'$1_managed_coin_Capabilities'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_property_map_MutatorRef'(b1), $1_from_bcs_deserializable'$1_object_property_map_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_property_map_PropertyMap'(b1), $1_from_bcs_deserializable'$1_object_property_map_PropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_property_map_PropertyValue'(b1), $1_from_bcs_deserializable'$1_object_property_map_PropertyValue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_BurnRef'(b1), $1_from_bcs_deserializable'$1_object_token_BurnRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_Token'(b1), $1_from_bcs_deserializable'$1_object_token_Token'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_MutatorRef'(b1), $1_from_bcs_deserializable'$1_object_token_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_Mutation'(b1), $1_from_bcs_deserializable'$1_object_token_Mutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_MutationEvent'(b1), $1_from_bcs_deserializable'$1_object_token_MutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_object_token_TokenIdentifiers'(b1), $1_from_bcs_deserializable'$1_object_token_TokenIdentifiers'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_stc_transaction_timeout_config_TransactionTimeoutConfig'(b1), $1_from_bcs_deserializable'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_unbound_Pool'(b1), $1_from_bcs_deserializable'$1_pool_u64_unbound_Pool'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_property_map_PropertyMap'(b1), $1_from_bcs_deserializable'$1_property_map_PropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_property_map_PropertyValue'(b1), $1_from_bcs_deserializable'$1_property_map_PropertyValue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_account_DirectTransferConfig'(b1), $1_from_bcs_deserializable'$1_starcoin_account_DirectTransferConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_resource_account_Container'(b1), $1_from_bcs_deserializable'$1_resource_account_Container'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_ring_Ring'#0''(b1), $1_from_bcs_deserializable'$1_ring_Ring'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_CompressedRistretto'(b1), $1_from_bcs_deserializable'$1_ristretto255_CompressedRistretto'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_RistrettoPoint'(b1), $1_from_bcs_deserializable'$1_ristretto255_RistrettoPoint'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_Scalar'(b1), $1_from_bcs_deserializable'$1_ristretto255_Scalar'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_pedersen_Commitment'(b1), $1_from_bcs_deserializable'$1_ristretto255_pedersen_Commitment'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_bulletproofs_RangeProof'(b1), $1_from_bcs_deserializable'$1_ristretto255_bulletproofs_RangeProof'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_elgamal_Ciphertext'(b1), $1_from_bcs_deserializable'$1_ristretto255_elgamal_Ciphertext'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_elgamal_CompressedCiphertext'(b1), $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedCiphertext'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_ristretto255_elgamal_CompressedPubkey'(b1), $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedPubkey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_secp256k1_ECDSARawPublicKey'(b1), $1_from_bcs_deserializable'$1_secp256k1_ECDSARawPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_secp256k1_ECDSASignature'(b1), $1_from_bcs_deserializable'$1_secp256k1_ECDSASignature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_smart_vector_SmartVector'#0''(b1), $1_from_bcs_deserializable'$1_smart_vector_SmartVector'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_token_StarcoinCollection'(b1), $1_from_bcs_deserializable'$1_starcoin_token_StarcoinCollection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_starcoin_token_StarcoinToken'(b1), $1_from_bcs_deserializable'$1_starcoin_token_StarcoinToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_stc_transaction_fee_TransactionFee'#0''(b1), $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_stc_block_BlockMetadata'(b1), $1_from_bcs_deserializable'$1_stc_block_BlockMetadata'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_stc_block_NewBlockEvent'(b1), $1_from_bcs_deserializable'$1_stc_block_NewBlockEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance > +axiom (forall b1: 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_stc_offer_Offer'#0''(b1), $1_from_bcs_deserializable'$1_stc_offer_Offer'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionDescriptionMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionDescriptionMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionMaxiumMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionMaxiumMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionUriMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_CollectionUriMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_DefaultPropertyMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_DefaultPropertyMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_DescriptionMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_DescriptionMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_MaximumMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_MaximumMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_MaxiumMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_MaxiumMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_OptInTransfer'(b1), $1_from_bcs_deserializable'$1_token_event_store_OptInTransfer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_OptInTransferEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_OptInTransferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_RoyaltyMutate'(b1), $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_RoyaltyMutateEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_TokenEventStoreV1'(b1), $1_from_bcs_deserializable'$1_token_event_store_TokenEventStoreV1'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_UriMutation'(b1), $1_from_bcs_deserializable'$1_token_event_store_UriMutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_event_store_UriMutationEvent'(b1), $1_from_bcs_deserializable'$1_token_event_store_UriMutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_Deposit'(b1), $1_from_bcs_deserializable'$1_token_Deposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_DepositEvent'(b1), $1_from_bcs_deserializable'$1_token_DepositEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_Withdraw'(b1), $1_from_bcs_deserializable'$1_token_Withdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_WithdrawEvent'(b1), $1_from_bcs_deserializable'$1_token_WithdrawEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_WithdrawCapability'(b1), $1_from_bcs_deserializable'$1_token_WithdrawCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_Token'(b1), $1_from_bcs_deserializable'$1_token_Token'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_Royalty'(b1), $1_from_bcs_deserializable'$1_token_Royalty'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_BurnToken'(b1), $1_from_bcs_deserializable'$1_token_BurnToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_BurnTokenEvent'(b1), $1_from_bcs_deserializable'$1_token_BurnTokenEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CollectionData'(b1), $1_from_bcs_deserializable'$1_token_CollectionData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CollectionMutabilityConfig'(b1), $1_from_bcs_deserializable'$1_token_CollectionMutabilityConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_Collections'(b1), $1_from_bcs_deserializable'$1_token_Collections'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CreateCollection'(b1), $1_from_bcs_deserializable'$1_token_CreateCollection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CreateCollectionEvent'(b1), $1_from_bcs_deserializable'$1_token_CreateCollectionEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CreateTokenData'(b1), $1_from_bcs_deserializable'$1_token_CreateTokenData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_CreateTokenDataEvent'(b1), $1_from_bcs_deserializable'$1_token_CreateTokenDataEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_MintToken'(b1), $1_from_bcs_deserializable'$1_token_MintToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_MintTokenEvent'(b1), $1_from_bcs_deserializable'$1_token_MintTokenEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_MutateTokenPropertyMap'(b1), $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_MutateTokenPropertyMapEvent'(b1), $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMapEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_TokenData'(b1), $1_from_bcs_deserializable'$1_token_TokenData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_TokenDataId'(b1), $1_from_bcs_deserializable'$1_token_TokenDataId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_TokenId'(b1), $1_from_bcs_deserializable'$1_token_TokenId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_TokenMutabilityConfig'(b1), $1_from_bcs_deserializable'$1_token_TokenMutabilityConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_TokenStore'(b1), $1_from_bcs_deserializable'$1_token_TokenStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_PendingClaims'(b1), $1_from_bcs_deserializable'$1_token_transfers_PendingClaims'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_TokenCancelOffer'(b1), $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOffer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_TokenCancelOfferEvent'(b1), $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOfferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_TokenClaim'(b1), $1_from_bcs_deserializable'$1_token_transfers_TokenClaim'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_TokenClaimEvent'(b1), $1_from_bcs_deserializable'$1_token_transfers_TokenClaimEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance +axiom (forall b1: 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_token_transfers_TokenOfferId'(b1), $1_from_bcs_deserializable'$1_token_transfers_TokenOfferId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance <#1> +axiom (forall b1: 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'(b1), $1_from_bcs_deserializable'#1'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance <#2> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'#2'(b1), $1_from_bcs_deserializable'#2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:18:9+124, instance <#3> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'bool'($1_from_bcs_deserializable'#3'(b1), $1_from_bcs_deserializable'#3'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u16'($1_from_bcs_deserialize'u16'(b1), $1_from_bcs_deserialize'u16'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'u32'($1_from_bcs_deserialize'u32'(b1), $1_from_bcs_deserialize'u32'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'bool''($1_from_bcs_deserialize'vec'bool''(b1), $1_from_bcs_deserialize'vec'bool''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'u128''($1_from_bcs_deserialize'vec'u128''(b1), $1_from_bcs_deserialize'vec'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'vec'u8'''($1_from_bcs_deserialize'vec'vec'u8'''(b1), $1_from_bcs_deserialize'vec'vec'u8'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'vec'#0'''($1_from_bcs_deserialize'vec'vec'#0'''(b1), $1_from_bcs_deserialize'vec'vec'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_option_Option'$1_property_map_PropertyValue'''($1_from_bcs_deserialize'vec'$1_option_Option'$1_property_map_PropertyValue'''(b1), $1_from_bcs_deserialize'vec'$1_option_Option'$1_property_map_PropertyValue'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_option_Option'#0'''($1_from_bcs_deserialize'vec'$1_option_Option'#0'''(b1), $1_from_bcs_deserialize'vec'$1_option_Option'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_string_String''($1_from_bcs_deserialize'vec'$1_string_String''(b1), $1_from_bcs_deserialize'vec'$1_string_String''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_type_info_TypeInfo''($1_from_bcs_deserialize'vec'$1_type_info_TypeInfo''(b1), $1_from_bcs_deserialize'vec'$1_type_info_TypeInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_ValidatedPublicKey''($1_from_bcs_deserialize'vec'$1_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserialize'vec'$1_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_multi_ed25519_ValidatedPublicKey''($1_from_bcs_deserialize'vec'$1_multi_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserialize'vec'$1_multi_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_AggregatorSnapshot'u64'''($1_from_bcs_deserialize'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(b1), $1_from_bcs_deserialize'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_any_Any''($1_from_bcs_deserialize'vec'$1_any_Any''(b1), $1_from_bcs_deserialize'vec'$1_any_Any''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_big_vector_BigVector'#0'''($1_from_bcs_deserialize'vec'$1_big_vector_BigVector'#0'''(b1), $1_from_bcs_deserialize'vec'$1_big_vector_BigVector'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_EntryFunctionPayload''($1_from_bcs_deserialize'vec'$1_transaction_context_EntryFunctionPayload''(b1), $1_from_bcs_deserialize'vec'$1_transaction_context_EntryFunctionPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_MultisigPayload''($1_from_bcs_deserialize'vec'$1_transaction_context_MultisigPayload''(b1), $1_from_bcs_deserialize'vec'$1_transaction_context_MultisigPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_DeleteRef''($1_from_bcs_deserialize'vec'$1_object_DeleteRef''(b1), $1_from_bcs_deserialize'vec'$1_object_DeleteRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_fungible_asset_Metadata'''($1_from_bcs_deserialize'vec'$1_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserialize'vec'$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TransferRef''($1_from_bcs_deserialize'vec'$1_object_TransferRef''(b1), $1_from_bcs_deserialize'vec'$1_object_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_function_info_FunctionInfo''($1_from_bcs_deserialize'vec'$1_function_info_FunctionInfo''(b1), $1_from_bcs_deserialize'vec'$1_function_info_FunctionInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_TransferRef''($1_from_bcs_deserialize'vec'$1_fungible_asset_TransferRef''(b1), $1_from_bcs_deserialize'vec'$1_fungible_asset_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_BurnRef''($1_from_bcs_deserialize'vec'$1_fungible_asset_BurnRef''(b1), $1_from_bcs_deserialize'vec'$1_fungible_asset_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_FungibleStore''($1_from_bcs_deserialize'vec'$1_fungible_asset_FungibleStore''(b1), $1_from_bcs_deserialize'vec'$1_fungible_asset_FungibleStore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_MintRef''($1_from_bcs_deserialize'vec'$1_fungible_asset_MintRef''(b1), $1_from_bcs_deserialize'vec'$1_fungible_asset_MintRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_DelegatedMintCapability''($1_from_bcs_deserialize'vec'$1_starcoin_coin_DelegatedMintCapability''(b1), $1_from_bcs_deserialize'vec'$1_starcoin_coin_DelegatedMintCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'vec'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'vec'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'#0'''($1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(b1), $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_DaoConfig'#0'''($1_from_bcs_deserialize'vec'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserialize'vec'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_RewardInfo''($1_from_bcs_deserialize'vec'$1_block_reward_RewardInfo''(b1), $1_from_bcs_deserialize'vec'$1_block_reward_RewardInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_Signature''($1_from_bcs_deserialize'vec'$1_bls12381_Signature''(b1), $1_from_bcs_deserialize'vec'$1_bls12381_Signature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_AggrOrMultiSignature''($1_from_bcs_deserialize'vec'$1_bls12381_AggrOrMultiSignature''(b1), $1_from_bcs_deserialize'vec'$1_bls12381_AggrOrMultiSignature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKey''($1_from_bcs_deserialize'vec'$1_bls12381_PublicKey''(b1), $1_from_bcs_deserialize'vec'$1_bls12381_PublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKeyWithPoP''($1_from_bcs_deserialize'vec'$1_bls12381_PublicKeyWithPoP''(b1), $1_from_bcs_deserialize'vec'$1_bls12381_PublicKeyWithPoP''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_MutatorRef''($1_from_bcs_deserialize'vec'$1_royalty_MutatorRef''(b1), $1_from_bcs_deserialize'vec'$1_royalty_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_Royalty''($1_from_bcs_deserialize'vec'$1_royalty_Royalty''(b1), $1_from_bcs_deserialize'vec'$1_royalty_Royalty''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_ConcurrentSupply''($1_from_bcs_deserialize'vec'$1_collection_ConcurrentSupply''(b1), $1_from_bcs_deserialize'vec'$1_collection_ConcurrentSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MutatorRef''($1_from_bcs_deserialize'vec'$1_collection_MutatorRef''(b1), $1_from_bcs_deserialize'vec'$1_collection_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_Collection''($1_from_bcs_deserialize'vec'$1_collection_Collection''(b1), $1_from_bcs_deserialize'vec'$1_collection_Collection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_FixedSupply''($1_from_bcs_deserialize'vec'$1_collection_FixedSupply''(b1), $1_from_bcs_deserialize'vec'$1_collection_FixedSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#0'''($1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#0'''(b1), $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#1'''($1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#1'''(b1), $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'u128'''($1_from_bcs_deserialize'vec'$1_oracle_DataRecord'u128'''(b1), $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'#1'''($1_from_bcs_deserialize'vec'$1_oracle_DataRecord'#1'''(b1), $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_BurnRef''($1_from_bcs_deserialize'vec'$1_object_token_BurnRef''(b1), $1_from_bcs_deserialize'vec'$1_object_token_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_MutatorRef''($1_from_bcs_deserialize'vec'$1_object_token_MutatorRef''(b1), $1_from_bcs_deserialize'vec'$1_object_token_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_property_map_PropertyValue''($1_from_bcs_deserialize'vec'$1_property_map_PropertyValue''(b1), $1_from_bcs_deserialize'vec'$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_CompressedRistretto''($1_from_bcs_deserialize'vec'$1_ristretto255_CompressedRistretto''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_CompressedRistretto''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_RistrettoPoint''($1_from_bcs_deserialize'vec'$1_ristretto255_RistrettoPoint''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_RistrettoPoint''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_Scalar''($1_from_bcs_deserialize'vec'$1_ristretto255_Scalar''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_Scalar''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_pedersen_Commitment''($1_from_bcs_deserialize'vec'$1_ristretto255_pedersen_Commitment''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_pedersen_Commitment''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_Ciphertext''($1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_Ciphertext''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_Ciphertext''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_CompressedPubkey''($1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_CompressedPubkey''(b1), $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_CompressedPubkey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_secp256k1_ECDSARawPublicKey''($1_from_bcs_deserialize'vec'$1_secp256k1_ECDSARawPublicKey''(b1), $1_from_bcs_deserialize'vec'$1_secp256k1_ECDSARawPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_WithdrawCapability''($1_from_bcs_deserialize'vec'$1_token_WithdrawCapability''(b1), $1_from_bcs_deserialize'vec'$1_token_WithdrawCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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''($1_from_bcs_deserialize'vec'#1''(b1), $1_from_bcs_deserialize'vec'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'u8''($1_from_bcs_deserialize'$1_option_Option'u8''(b1), $1_from_bcs_deserialize'$1_option_Option'u8''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'u128''($1_from_bcs_deserialize'$1_option_Option'u128''(b1), $1_from_bcs_deserialize'$1_option_Option'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_string_String''($1_from_bcs_deserialize'$1_option_Option'$1_string_String''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_string_String''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_type_info_TypeInfo''($1_from_bcs_deserialize'$1_option_Option'$1_type_info_TypeInfo''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_type_info_TypeInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_ValidatedPublicKey''($1_from_bcs_deserialize'$1_option_Option'$1_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_multi_ed25519_ValidatedPublicKey''($1_from_bcs_deserialize'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_AggregatorSnapshot'u64'''($1_from_bcs_deserialize'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_any_Any''($1_from_bcs_deserialize'$1_option_Option'$1_any_Any''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_any_Any''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_big_vector_BigVector'#0'''($1_from_bcs_deserialize'$1_option_Option'$1_big_vector_BigVector'#0'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_big_vector_BigVector'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_EntryFunctionPayload''($1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_MultisigPayload''($1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_MultisigPayload''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_MultisigPayload''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_DeleteRef''($1_from_bcs_deserialize'$1_option_Option'$1_object_DeleteRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_object_DeleteRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_fungible_asset_Metadata'''($1_from_bcs_deserialize'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TransferRef''($1_from_bcs_deserialize'$1_option_Option'$1_object_TransferRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_object_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_function_info_FunctionInfo''($1_from_bcs_deserialize'$1_option_Option'$1_function_info_FunctionInfo''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_function_info_FunctionInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_TransferRef''($1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_TransferRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_TransferRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_BurnRef''($1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_BurnRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_MintRef''($1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_MintRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_MintRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'#0'''($1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_AggrOrMultiSignature''($1_from_bcs_deserialize'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKey''($1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKey''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKeyWithPoP''($1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_MutatorRef''($1_from_bcs_deserialize'$1_option_Option'$1_royalty_MutatorRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_royalty_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_Royalty''($1_from_bcs_deserialize'$1_option_Option'$1_royalty_Royalty''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_royalty_Royalty''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_ConcurrentSupply''($1_from_bcs_deserialize'$1_option_Option'$1_collection_ConcurrentSupply''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_collection_ConcurrentSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MutatorRef''($1_from_bcs_deserialize'$1_option_Option'$1_collection_MutatorRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_collection_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_FixedSupply''($1_from_bcs_deserialize'$1_option_Option'$1_collection_FixedSupply''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_collection_FixedSupply''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#0'''($1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#0'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#1'''($1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#1'''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_BurnRef''($1_from_bcs_deserialize'$1_option_Option'$1_object_token_BurnRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_object_token_BurnRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_MutatorRef''($1_from_bcs_deserialize'$1_option_Option'$1_object_token_MutatorRef''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_object_token_MutatorRef''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_property_map_PropertyValue''($1_from_bcs_deserialize'$1_option_Option'$1_property_map_PropertyValue''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_CompressedRistretto''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_CompressedRistretto''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_CompressedRistretto''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_RistrettoPoint''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_RistrettoPoint''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_RistrettoPoint''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_Scalar''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_Scalar''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_Scalar''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_pedersen_Commitment''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_pedersen_Commitment''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_pedersen_Commitment''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_Ciphertext''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_CompressedPubkey''($1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_secp256k1_ECDSARawPublicKey''($1_from_bcs_deserialize'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_WithdrawCapability''($1_from_bcs_deserialize'$1_option_Option'$1_token_WithdrawCapability''(b1), $1_from_bcs_deserialize'$1_option_Option'$1_token_WithdrawCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_option_Option'#0''(b1), $1_from_bcs_deserialize'$1_option_Option'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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''($1_from_bcs_deserialize'$1_option_Option'#1''(b1), $1_from_bcs_deserialize'$1_option_Option'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_features_Features'($1_from_bcs_deserialize'$1_features_Features'(b1), $1_from_bcs_deserialize'$1_features_Features'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_features_PendingFeatures'($1_from_bcs_deserialize'$1_features_PendingFeatures'(b1), $1_from_bcs_deserialize'$1_features_PendingFeatures'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'address_u128''($1_from_bcs_deserialize'$1_table_Table'address_u128''(b1), $1_from_bcs_deserialize'$1_table_Table'address_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'address_address''($1_from_bcs_deserialize'$1_table_Table'address_address''(b1), $1_from_bcs_deserialize'$1_table_Table'address_address''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'$1_string_String_$1_token_CollectionData''($1_from_bcs_deserialize'$1_table_Table'$1_string_String_$1_token_CollectionData''(b1), $1_from_bcs_deserialize'$1_table_Table'$1_string_String_$1_token_CollectionData''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''($1_from_bcs_deserialize'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(b1), $1_from_bcs_deserialize'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'$1_token_TokenDataId_$1_token_TokenData''($1_from_bcs_deserialize'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(b1), $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'$1_token_TokenId_$1_token_Token''($1_from_bcs_deserialize'$1_table_Table'$1_token_TokenId_$1_token_Token''(b1), $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenId_$1_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''($1_from_bcs_deserialize'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(b1), $1_from_bcs_deserialize'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_Table'#0_#1''($1_from_bcs_deserialize'$1_table_Table'#0_#1''(b1), $1_from_bcs_deserialize'$1_table_Table'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_Signature'($1_from_bcs_deserialize'$1_ed25519_Signature'(b1), $1_from_bcs_deserialize'$1_ed25519_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''($1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(b1), $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_SignedMessage'$1_account_RotationProofChallenge''($1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(b1), $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''($1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(b1), $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_SignedMessage'#0''($1_from_bcs_deserialize'$1_ed25519_SignedMessage'#0''(b1), $1_from_bcs_deserialize'$1_ed25519_SignedMessage'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_UnvalidatedPublicKey'($1_from_bcs_deserialize'$1_ed25519_UnvalidatedPublicKey'(b1), $1_from_bcs_deserialize'$1_ed25519_UnvalidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ed25519_ValidatedPublicKey'($1_from_bcs_deserialize'$1_ed25519_ValidatedPublicKey'(b1), $1_from_bcs_deserialize'$1_ed25519_ValidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_multi_ed25519_Signature'($1_from_bcs_deserialize'$1_multi_ed25519_Signature'(b1), $1_from_bcs_deserialize'$1_multi_ed25519_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_multi_ed25519_UnvalidatedPublicKey'($1_from_bcs_deserialize'$1_multi_ed25519_UnvalidatedPublicKey'(b1), $1_from_bcs_deserialize'$1_multi_ed25519_UnvalidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_multi_ed25519_ValidatedPublicKey'($1_from_bcs_deserialize'$1_multi_ed25519_ValidatedPublicKey'(b1), $1_from_bcs_deserialize'$1_multi_ed25519_ValidatedPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TransferEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_object_TransferEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_TransferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_DepositEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_WithdrawEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''($1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ConfigChangeEvent'#0'''($1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_ProposalCreatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_VoteChangedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_VoteChangedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_VoteChangedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_BlockRewardEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_BurnEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_BurnEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_BurnEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MintEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MintEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MintEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MutationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MutationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance , u128>>> +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_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''($1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleUpdateEvent'#0_u128'''($1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleUpdateEvent'#0_#1'''($1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleUpdateEvent'#0_#2'''($1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_epoch_NewEpochEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_epoch_NewEpochEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_epoch_NewEpochEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_MutationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_object_token_MutationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_token_MutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_account_DirectCoinTransferConfigUpdatedEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_block_NewBlockEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionDescriptionMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionMaxiumMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionUriMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DefaultPropertyMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DescriptionMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_MaxiumMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_OptInTransferEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_RoyaltyMutateEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_UriMutationEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_DepositEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_DepositEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_DepositEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_WithdrawEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_WithdrawEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_WithdrawEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_BurnTokenEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_BurnTokenEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_BurnTokenEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateCollectionEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateCollectionEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateCollectionEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateTokenDataEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MintTokenEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MintTokenEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MintTokenEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MutateTokenPropertyMapEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenCancelOfferEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenClaimEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenOfferEvent''($1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_event_EventHandle'#0''(b1), $1_from_bcs_deserialize'$1_event_EventHandle'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#0_$1_string_utils_NIL''($1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_NIL''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#0_#1''($1_from_bcs_deserialize'$1_string_utils_Cons'#0_#1''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''($1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''($1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#1_$1_string_utils_NIL''($1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_NIL''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''($1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#2_$1_string_utils_NIL''($1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_NIL''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_Cons'#3_$1_string_utils_NIL''($1_from_bcs_deserialize'$1_string_utils_Cons'#3_$1_string_utils_NIL''(b1), $1_from_bcs_deserialize'$1_string_utils_Cons'#3_$1_string_utils_NIL''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_utils_NIL'($1_from_bcs_deserialize'$1_string_utils_NIL'(b1), $1_from_bcs_deserialize'$1_string_utils_NIL'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_id_ChainId'($1_from_bcs_deserialize'$1_chain_id_ChainId'(b1), $1_from_bcs_deserialize'$1_chain_id_ChainId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_KeyRotation'($1_from_bcs_deserialize'$1_account_KeyRotation'(b1), $1_from_bcs_deserialize'$1_account_KeyRotation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_KeyRotationEvent'($1_from_bcs_deserialize'$1_account_KeyRotationEvent'(b1), $1_from_bcs_deserialize'$1_account_KeyRotationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_OriginatingAddress'($1_from_bcs_deserialize'$1_account_OriginatingAddress'(b1), $1_from_bcs_deserialize'$1_account_OriginatingAddress'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_RotationCapabilityOfferProofChallengeV2'($1_from_bcs_deserialize'$1_account_RotationCapabilityOfferProofChallengeV2'(b1), $1_from_bcs_deserialize'$1_account_RotationCapabilityOfferProofChallengeV2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_RotationProofChallenge'($1_from_bcs_deserialize'$1_account_RotationProofChallenge'(b1), $1_from_bcs_deserialize'$1_account_RotationProofChallenge'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_SignerCapabilityOfferProofChallengeV2'($1_from_bcs_deserialize'$1_account_SignerCapabilityOfferProofChallengeV2'(b1), $1_from_bcs_deserialize'$1_account_SignerCapabilityOfferProofChallengeV2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_acl_ACL'($1_from_bcs_deserialize'$1_acl_ACL'(b1), $1_from_bcs_deserialize'$1_acl_ACL'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_factory_AggregatorFactory'($1_from_bcs_deserialize'$1_aggregator_factory_AggregatorFactory'(b1), $1_from_bcs_deserialize'$1_aggregator_factory_AggregatorFactory'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_Aggregator'u64''($1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u64''(b1), $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u64''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_Aggregator'u128''($1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u128''(b1), $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_Aggregator'#0''($1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'#0''(b1), $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_AggregatorSnapshot'u64''($1_from_bcs_deserialize'$1_aggregator_v2_AggregatorSnapshot'u64''(b1), $1_from_bcs_deserialize'$1_aggregator_v2_AggregatorSnapshot'u64''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_v2_DerivedStringSnapshot'($1_from_bcs_deserialize'$1_aggregator_v2_DerivedStringSnapshot'(b1), $1_from_bcs_deserialize'$1_aggregator_v2_DerivedStringSnapshot'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_any_Any'($1_from_bcs_deserialize'$1_any_Any'(b1), $1_from_bcs_deserialize'$1_any_Any'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_with_length_TableWithLength'u64_vec'#0'''($1_from_bcs_deserialize'$1_table_with_length_TableWithLength'u64_vec'#0'''(b1), $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'u64_vec'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_table_with_length_TableWithLength'address_u128''($1_from_bcs_deserialize'$1_table_with_length_TableWithLength'address_u128''(b1), $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'address_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_big_vector_BigVector'#0''($1_from_bcs_deserialize'$1_big_vector_BigVector'#0''(b1), $1_from_bcs_deserialize'$1_big_vector_BigVector'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bit_vector_BitVector'($1_from_bcs_deserialize'$1_bit_vector_BitVector'(b1), $1_from_bcs_deserialize'$1_bit_vector_BitVector'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_point64_FixedPoint64'($1_from_bcs_deserialize'$1_fixed_point64_FixedPoint64'(b1), $1_from_bcs_deserialize'$1_fixed_point64_FixedPoint64'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_AUID'($1_from_bcs_deserialize'$1_transaction_context_AUID'(b1), $1_from_bcs_deserialize'$1_transaction_context_AUID'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_EntryFunctionPayload'($1_from_bcs_deserialize'$1_transaction_context_EntryFunctionPayload'(b1), $1_from_bcs_deserialize'$1_transaction_context_EntryFunctionPayload'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_transaction_context_MultisigPayload'($1_from_bcs_deserialize'$1_transaction_context_MultisigPayload'(b1), $1_from_bcs_deserialize'$1_transaction_context_MultisigPayload'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_ConstructorRef'($1_from_bcs_deserialize'$1_object_ConstructorRef'(b1), $1_from_bcs_deserialize'$1_object_ConstructorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_DeleteRef'($1_from_bcs_deserialize'$1_object_DeleteRef'(b1), $1_from_bcs_deserialize'$1_object_DeleteRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_DeriveRef'($1_from_bcs_deserialize'$1_object_DeriveRef'(b1), $1_from_bcs_deserialize'$1_object_DeriveRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_ExtendRef'($1_from_bcs_deserialize'$1_object_ExtendRef'(b1), $1_from_bcs_deserialize'$1_object_ExtendRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_LinearTransferRef'($1_from_bcs_deserialize'$1_object_LinearTransferRef'(b1), $1_from_bcs_deserialize'$1_object_LinearTransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_object_ObjectCore''($1_from_bcs_deserialize'$1_object_Object'$1_object_ObjectCore''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_object_ObjectCore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_fungible_asset_FungibleStore''($1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_FungibleStore''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_FungibleStore''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_fungible_asset_Metadata''($1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_Metadata''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_Metadata''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_collection_Collection''($1_from_bcs_deserialize'$1_object_Object'$1_collection_Collection''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_collection_Collection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_object_token_Token''($1_from_bcs_deserialize'$1_object_Object'$1_object_token_Token''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_object_token_Token''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_starcoin_token_StarcoinCollection''($1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinCollection''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinCollection''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'$1_starcoin_token_StarcoinToken''($1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinToken''(b1), $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinToken''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'#0''($1_from_bcs_deserialize'$1_object_Object'#0''(b1), $1_from_bcs_deserialize'$1_object_Object'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Object'#1''($1_from_bcs_deserialize'$1_object_Object'#1''(b1), $1_from_bcs_deserialize'$1_object_Object'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_ObjectCore'($1_from_bcs_deserialize'$1_object_ObjectCore'(b1), $1_from_bcs_deserialize'$1_object_ObjectCore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TombStone'($1_from_bcs_deserialize'$1_object_TombStone'(b1), $1_from_bcs_deserialize'$1_object_TombStone'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Transfer'($1_from_bcs_deserialize'$1_object_Transfer'(b1), $1_from_bcs_deserialize'$1_object_Transfer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TransferEvent'($1_from_bcs_deserialize'$1_object_TransferEvent'(b1), $1_from_bcs_deserialize'$1_object_TransferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_TransferRef'($1_from_bcs_deserialize'$1_object_TransferRef'(b1), $1_from_bcs_deserialize'$1_object_TransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_Untransferable'($1_from_bcs_deserialize'$1_object_Untransferable'(b1), $1_from_bcs_deserialize'$1_object_Untransferable'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_function_info_FunctionInfo'($1_from_bcs_deserialize'$1_function_info_FunctionInfo'(b1), $1_from_bcs_deserialize'$1_function_info_FunctionInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_TransferRef'($1_from_bcs_deserialize'$1_fungible_asset_TransferRef'(b1), $1_from_bcs_deserialize'$1_fungible_asset_TransferRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Untransferable'($1_from_bcs_deserialize'$1_fungible_asset_Untransferable'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Untransferable'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_BurnRef'($1_from_bcs_deserialize'$1_fungible_asset_BurnRef'(b1), $1_from_bcs_deserialize'$1_fungible_asset_BurnRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_ConcurrentFungibleBalance'($1_from_bcs_deserialize'$1_fungible_asset_ConcurrentFungibleBalance'(b1), $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentFungibleBalance'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_ConcurrentSupply'($1_from_bcs_deserialize'$1_fungible_asset_ConcurrentSupply'(b1), $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Deposit'($1_from_bcs_deserialize'$1_fungible_asset_Deposit'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Deposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_DispatchFunctionStore'($1_from_bcs_deserialize'$1_fungible_asset_DispatchFunctionStore'(b1), $1_from_bcs_deserialize'$1_fungible_asset_DispatchFunctionStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Frozen'($1_from_bcs_deserialize'$1_fungible_asset_Frozen'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Frozen'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_FungibleAsset'($1_from_bcs_deserialize'$1_fungible_asset_FungibleAsset'(b1), $1_from_bcs_deserialize'$1_fungible_asset_FungibleAsset'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_FungibleStore'($1_from_bcs_deserialize'$1_fungible_asset_FungibleStore'(b1), $1_from_bcs_deserialize'$1_fungible_asset_FungibleStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Metadata'($1_from_bcs_deserialize'$1_fungible_asset_Metadata'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Metadata'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_MintRef'($1_from_bcs_deserialize'$1_fungible_asset_MintRef'(b1), $1_from_bcs_deserialize'$1_fungible_asset_MintRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Supply'($1_from_bcs_deserialize'$1_fungible_asset_Supply'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Supply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_fungible_asset_Withdraw'($1_from_bcs_deserialize'$1_fungible_asset_Withdraw'(b1), $1_from_bcs_deserialize'$1_fungible_asset_Withdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dispatchable_fungible_asset_TransferRefStore'($1_from_bcs_deserialize'$1_dispatchable_fungible_asset_TransferRefStore'(b1), $1_from_bcs_deserialize'$1_dispatchable_fungible_asset_TransferRefStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_primary_fungible_store_DeriveRefPod'($1_from_bcs_deserialize'$1_primary_fungible_store_DeriveRefPod'(b1), $1_from_bcs_deserialize'$1_primary_fungible_store_DeriveRefPod'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_Coin'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_Coin'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_coin_Coin'#0''(b1), $1_from_bcs_deserialize'$1_coin_Coin'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_AggregatableCoin'#0''($1_from_bcs_deserialize'$1_coin_AggregatableCoin'#0''(b1), $1_from_bcs_deserialize'$1_coin_AggregatableCoin'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_BurnCapability'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_BurnCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_BurnCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_BurnCapability'#0''($1_from_bcs_deserialize'$1_coin_BurnCapability'#0''(b1), $1_from_bcs_deserialize'$1_coin_BurnCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_BurnRefReceipt'($1_from_bcs_deserialize'$1_coin_BurnRefReceipt'(b1), $1_from_bcs_deserialize'$1_coin_BurnRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_CoinConversionMap'($1_from_bcs_deserialize'$1_coin_CoinConversionMap'(b1), $1_from_bcs_deserialize'$1_coin_CoinConversionMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_CoinDeposit'($1_from_bcs_deserialize'$1_coin_CoinDeposit'(b1), $1_from_bcs_deserialize'$1_coin_CoinDeposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_CoinEventHandleDeletion'($1_from_bcs_deserialize'$1_coin_CoinEventHandleDeletion'(b1), $1_from_bcs_deserialize'$1_coin_CoinEventHandleDeletion'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_CoinInfo'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_coin_CoinInfo'#0''(b1), $1_from_bcs_deserialize'$1_coin_CoinInfo'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_CoinStore'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_coin_CoinStore'#0''(b1), $1_from_bcs_deserialize'$1_coin_CoinStore'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_CoinWithdraw'($1_from_bcs_deserialize'$1_coin_CoinWithdraw'(b1), $1_from_bcs_deserialize'$1_coin_CoinWithdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_FreezeCapability'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_FreezeCapability'#0''($1_from_bcs_deserialize'$1_coin_FreezeCapability'#0''(b1), $1_from_bcs_deserialize'$1_coin_FreezeCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_MigrationFlag'($1_from_bcs_deserialize'$1_coin_MigrationFlag'(b1), $1_from_bcs_deserialize'$1_coin_MigrationFlag'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_MintCapability'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_MintCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_MintCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_MintCapability'#0''($1_from_bcs_deserialize'$1_coin_MintCapability'#0''(b1), $1_from_bcs_deserialize'$1_coin_MintCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_MintRefReceipt'($1_from_bcs_deserialize'$1_coin_MintRefReceipt'(b1), $1_from_bcs_deserialize'$1_coin_MintRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_PairCreation'($1_from_bcs_deserialize'$1_coin_PairCreation'(b1), $1_from_bcs_deserialize'$1_coin_PairCreation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_PairedCoinType'($1_from_bcs_deserialize'$1_coin_PairedCoinType'(b1), $1_from_bcs_deserialize'$1_coin_PairedCoinType'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_PairedFungibleAssetRefs'($1_from_bcs_deserialize'$1_coin_PairedFungibleAssetRefs'(b1), $1_from_bcs_deserialize'$1_coin_PairedFungibleAssetRefs'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_SupplyConfig'($1_from_bcs_deserialize'$1_coin_SupplyConfig'(b1), $1_from_bcs_deserialize'$1_coin_SupplyConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_TransferRefReceipt'($1_from_bcs_deserialize'$1_coin_TransferRefReceipt'(b1), $1_from_bcs_deserialize'$1_coin_TransferRefReceipt'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_coin_Ghost$supply'#0''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$supply'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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'#0''($1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'#0''(b1), $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_DepositEvent'($1_from_bcs_deserialize'$1_treasury_DepositEvent'(b1), $1_from_bcs_deserialize'$1_treasury_DepositEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_WithdrawEvent'($1_from_bcs_deserialize'$1_treasury_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_treasury_WithdrawEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_LinearWithdrawCapability'#0''($1_from_bcs_deserialize'$1_treasury_LinearWithdrawCapability'#0''(b1), $1_from_bcs_deserialize'$1_treasury_LinearWithdrawCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_Treasury'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_treasury_Treasury'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_treasury_Treasury'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_Treasury'#0''($1_from_bcs_deserialize'$1_treasury_Treasury'#0''(b1), $1_from_bcs_deserialize'$1_treasury_Treasury'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_WithdrawCapability'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_treasury_WithdrawCapability'#0''($1_from_bcs_deserialize'$1_treasury_WithdrawCapability'#0''(b1), $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_DelegatedMintCapability'($1_from_bcs_deserialize'$1_starcoin_coin_DelegatedMintCapability'(b1), $1_from_bcs_deserialize'$1_starcoin_coin_DelegatedMintCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_Delegations'($1_from_bcs_deserialize'$1_starcoin_coin_Delegations'(b1), $1_from_bcs_deserialize'$1_starcoin_coin_Delegations'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_MintCapStore'($1_from_bcs_deserialize'$1_starcoin_coin_MintCapStore'(b1), $1_from_bcs_deserialize'$1_starcoin_coin_MintCapStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_coin_STC'($1_from_bcs_deserialize'$1_starcoin_coin_STC'(b1), $1_from_bcs_deserialize'$1_starcoin_coin_STC'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'$1_dao_DaoConfig'#0'''($1_from_bcs_deserialize'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'$1_block_reward_config_RewardConfig''($1_from_bcs_deserialize'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'$1_consensus_config_ConsensusConfig''($1_from_bcs_deserialize'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'$1_stc_version_Version''($1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_version_Version''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_version_Version''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''($1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_Config'#0''($1_from_bcs_deserialize'$1_on_chain_config_Config'#0''(b1), $1_from_bcs_deserialize'$1_on_chain_config_Config'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ConfigChangeEvent'#0''($1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'#0''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapability'#0''($1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'#0''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''($1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_on_chain_config_ModifyConfigCapabilityHolder'#0''($1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(b1), $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_DaoConfig'#0''($1_from_bcs_deserialize'$1_dao_DaoConfig'#0''(b1), $1_from_bcs_deserialize'$1_dao_DaoConfig'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_DaoGlobalInfo'#0''($1_from_bcs_deserialize'$1_dao_DaoGlobalInfo'#0''(b1), $1_from_bcs_deserialize'$1_dao_DaoGlobalInfo'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_Proposal'#0_#1''($1_from_bcs_deserialize'$1_dao_Proposal'#0_#1''(b1), $1_from_bcs_deserialize'$1_dao_Proposal'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_Vote'#0''($1_from_bcs_deserialize'$1_dao_Vote'#0''(b1), $1_from_bcs_deserialize'$1_dao_Vote'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_VoteChangedEvent'($1_from_bcs_deserialize'$1_dao_VoteChangedEvent'(b1), $1_from_bcs_deserialize'$1_dao_VoteChangedEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_config_RewardConfig'($1_from_bcs_deserialize'$1_block_reward_config_RewardConfig'(b1), $1_from_bcs_deserialize'$1_block_reward_config_RewardConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_BlockRewardEvent'($1_from_bcs_deserialize'$1_block_reward_BlockRewardEvent'(b1), $1_from_bcs_deserialize'$1_block_reward_BlockRewardEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_RewardInfo'($1_from_bcs_deserialize'$1_block_reward_RewardInfo'(b1), $1_from_bcs_deserialize'$1_block_reward_RewardInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_block_reward_RewardQueue'($1_from_bcs_deserialize'$1_block_reward_RewardQueue'(b1), $1_from_bcs_deserialize'$1_block_reward_RewardQueue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_Signature'($1_from_bcs_deserialize'$1_bls12381_Signature'(b1), $1_from_bcs_deserialize'$1_bls12381_Signature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_AggrOrMultiSignature'($1_from_bcs_deserialize'$1_bls12381_AggrOrMultiSignature'(b1), $1_from_bcs_deserialize'$1_bls12381_AggrOrMultiSignature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_AggrPublicKeysWithPoP'($1_from_bcs_deserialize'$1_bls12381_AggrPublicKeysWithPoP'(b1), $1_from_bcs_deserialize'$1_bls12381_AggrPublicKeysWithPoP'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_ProofOfPossession'($1_from_bcs_deserialize'$1_bls12381_ProofOfPossession'(b1), $1_from_bcs_deserialize'$1_bls12381_ProofOfPossession'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKey'($1_from_bcs_deserialize'$1_bls12381_PublicKey'(b1), $1_from_bcs_deserialize'$1_bls12381_PublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_bls12381_PublicKeyWithPoP'($1_from_bcs_deserialize'$1_bls12381_PublicKeyWithPoP'(b1), $1_from_bcs_deserialize'$1_bls12381_PublicKeyWithPoP'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_capability_Cap'#0''($1_from_bcs_deserialize'$1_capability_Cap'#0''(b1), $1_from_bcs_deserialize'$1_capability_Cap'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_capability_CapDelegateState'#0''($1_from_bcs_deserialize'$1_capability_CapDelegateState'#0''(b1), $1_from_bcs_deserialize'$1_capability_CapDelegateState'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_capability_CapState'#0''($1_from_bcs_deserialize'$1_capability_CapState'#0''(b1), $1_from_bcs_deserialize'$1_capability_CapState'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_capability_LinearCap'#0''($1_from_bcs_deserialize'$1_capability_LinearCap'#0''(b1), $1_from_bcs_deserialize'$1_capability_LinearCap'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_MutatorRef'($1_from_bcs_deserialize'$1_royalty_MutatorRef'(b1), $1_from_bcs_deserialize'$1_royalty_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_royalty_Royalty'($1_from_bcs_deserialize'$1_royalty_Royalty'(b1), $1_from_bcs_deserialize'$1_royalty_Royalty'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_ConcurrentSupply'($1_from_bcs_deserialize'$1_collection_ConcurrentSupply'(b1), $1_from_bcs_deserialize'$1_collection_ConcurrentSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MutatorRef'($1_from_bcs_deserialize'$1_collection_MutatorRef'(b1), $1_from_bcs_deserialize'$1_collection_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_Burn'($1_from_bcs_deserialize'$1_collection_Burn'(b1), $1_from_bcs_deserialize'$1_collection_Burn'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_BurnEvent'($1_from_bcs_deserialize'$1_collection_BurnEvent'(b1), $1_from_bcs_deserialize'$1_collection_BurnEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_Collection'($1_from_bcs_deserialize'$1_collection_Collection'(b1), $1_from_bcs_deserialize'$1_collection_Collection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_FixedSupply'($1_from_bcs_deserialize'$1_collection_FixedSupply'(b1), $1_from_bcs_deserialize'$1_collection_FixedSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_Mint'($1_from_bcs_deserialize'$1_collection_Mint'(b1), $1_from_bcs_deserialize'$1_collection_Mint'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MintEvent'($1_from_bcs_deserialize'$1_collection_MintEvent'(b1), $1_from_bcs_deserialize'$1_collection_MintEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_Mutation'($1_from_bcs_deserialize'$1_collection_Mutation'(b1), $1_from_bcs_deserialize'$1_collection_Mutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_MutationEvent'($1_from_bcs_deserialize'$1_collection_MutationEvent'(b1), $1_from_bcs_deserialize'$1_collection_MutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_SetMaxSupply'($1_from_bcs_deserialize'$1_collection_SetMaxSupply'(b1), $1_from_bcs_deserialize'$1_collection_SetMaxSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_collection_UnlimitedSupply'($1_from_bcs_deserialize'$1_collection_UnlimitedSupply'(b1), $1_from_bcs_deserialize'$1_collection_UnlimitedSupply'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_comparator_Result'($1_from_bcs_deserialize'$1_comparator_Result'(b1), $1_from_bcs_deserialize'$1_comparator_Result'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_consensus_config_ConsensusConfig'($1_from_bcs_deserialize'$1_consensus_config_ConsensusConfig'(b1), $1_from_bcs_deserialize'$1_consensus_config_ConsensusConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_copyable_any_Any'($1_from_bcs_deserialize'$1_copyable_any_Any'(b1), $1_from_bcs_deserialize'$1_copyable_any_Any'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#0''($1_from_bcs_deserialize'$1_crypto_algebra_Element'#0''(b1), $1_from_bcs_deserialize'$1_crypto_algebra_Element'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#1''($1_from_bcs_deserialize'$1_crypto_algebra_Element'#1''(b1), $1_from_bcs_deserialize'$1_crypto_algebra_Element'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_crypto_algebra_Element'#2''($1_from_bcs_deserialize'$1_crypto_algebra_Element'#2''(b1), $1_from_bcs_deserialize'$1_crypto_algebra_Element'#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_version_Version'($1_from_bcs_deserialize'$1_stc_version_Version'(b1), $1_from_bcs_deserialize'$1_stc_version_Version'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_account_SignerCapability''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_$1_object_property_map_PropertyValue''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_$1_property_map_PropertyValue''($1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(b1), $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_reserved_accounts_signer_SignerResponsbility'($1_from_bcs_deserialize'$1_reserved_accounts_signer_SignerResponsbility'(b1), $1_from_bcs_deserialize'$1_reserved_accounts_signer_SignerResponsbility'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'u128''($1_from_bcs_deserialize'$1_oracle_DataRecord'u128''(b1), $1_from_bcs_deserialize'$1_oracle_DataRecord'u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'#0''($1_from_bcs_deserialize'$1_oracle_DataRecord'#0''(b1), $1_from_bcs_deserialize'$1_oracle_DataRecord'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'#1''($1_from_bcs_deserialize'$1_oracle_DataRecord'#1''(b1), $1_from_bcs_deserialize'$1_oracle_DataRecord'#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataRecord'#2''($1_from_bcs_deserialize'$1_oracle_DataRecord'#2''(b1), $1_from_bcs_deserialize'$1_oracle_DataRecord'#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance , u128>> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($1_from_bcs_deserialize'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserialize'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataSource'#0_u128''($1_from_bcs_deserialize'$1_oracle_DataSource'#0_u128''(b1), $1_from_bcs_deserialize'$1_oracle_DataSource'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataSource'#0_#1''($1_from_bcs_deserialize'$1_oracle_DataSource'#0_#1''(b1), $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_DataSource'#0_#2''($1_from_bcs_deserialize'$1_oracle_DataSource'#0_#2''(b1), $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_GenesisSignerCapability'($1_from_bcs_deserialize'$1_oracle_GenesisSignerCapability'(b1), $1_from_bcs_deserialize'$1_oracle_GenesisSignerCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance , u128>> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''($1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(b1), $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleFeed'#0_u128''($1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_u128''(b1), $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleFeed'#0_#1''($1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#1''(b1), $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleFeed'#0_#2''($1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#2''(b1), $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#2''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance , oracle_price::PriceOracleInfo>> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''($1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(b1), $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleInfo'#0_#1''($1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_#1''(b1), $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance , u128>> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(b1), $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleUpdateEvent'#0_u128''($1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_u128''(b1), $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_u128''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_OracleUpdateEvent'#0_#1''($1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_#1''(b1), $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_#1''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($1_from_bcs_deserialize'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(b1), $1_from_bcs_deserialize'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_UpdateCapability'#0''($1_from_bcs_deserialize'$1_oracle_UpdateCapability'#0''(b1), $1_from_bcs_deserialize'$1_oracle_UpdateCapability'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_oracle_price_PriceOracleInfo'($1_from_bcs_deserialize'$1_oracle_price_PriceOracleInfo'(b1), $1_from_bcs_deserialize'$1_oracle_price_PriceOracleInfo'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_easy_gas_GasFeeAddress'($1_from_bcs_deserialize'$1_easy_gas_GasFeeAddress'(b1), $1_from_bcs_deserialize'$1_easy_gas_GasFeeAddress'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_easy_gas_GasTokenEntry'($1_from_bcs_deserialize'$1_easy_gas_GasTokenEntry'(b1), $1_from_bcs_deserialize'$1_easy_gas_GasTokenEntry'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_epoch_Epoch'($1_from_bcs_deserialize'$1_epoch_Epoch'(b1), $1_from_bcs_deserialize'$1_epoch_Epoch'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_epoch_EpochData'($1_from_bcs_deserialize'$1_epoch_EpochData'(b1), $1_from_bcs_deserialize'$1_epoch_EpochData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_epoch_NewEpochEvent'($1_from_bcs_deserialize'$1_epoch_NewEpochEvent'(b1), $1_from_bcs_deserialize'$1_epoch_NewEpochEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_managed_coin_Capabilities'#0''($1_from_bcs_deserialize'$1_managed_coin_Capabilities'#0''(b1), $1_from_bcs_deserialize'$1_managed_coin_Capabilities'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_property_map_MutatorRef'($1_from_bcs_deserialize'$1_object_property_map_MutatorRef'(b1), $1_from_bcs_deserialize'$1_object_property_map_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_property_map_PropertyMap'($1_from_bcs_deserialize'$1_object_property_map_PropertyMap'(b1), $1_from_bcs_deserialize'$1_object_property_map_PropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_property_map_PropertyValue'($1_from_bcs_deserialize'$1_object_property_map_PropertyValue'(b1), $1_from_bcs_deserialize'$1_object_property_map_PropertyValue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_BurnRef'($1_from_bcs_deserialize'$1_object_token_BurnRef'(b1), $1_from_bcs_deserialize'$1_object_token_BurnRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_Token'($1_from_bcs_deserialize'$1_object_token_Token'(b1), $1_from_bcs_deserialize'$1_object_token_Token'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_MutatorRef'($1_from_bcs_deserialize'$1_object_token_MutatorRef'(b1), $1_from_bcs_deserialize'$1_object_token_MutatorRef'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_Mutation'($1_from_bcs_deserialize'$1_object_token_Mutation'(b1), $1_from_bcs_deserialize'$1_object_token_Mutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_MutationEvent'($1_from_bcs_deserialize'$1_object_token_MutationEvent'(b1), $1_from_bcs_deserialize'$1_object_token_MutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_object_token_TokenIdentifiers'($1_from_bcs_deserialize'$1_object_token_TokenIdentifiers'(b1), $1_from_bcs_deserialize'$1_object_token_TokenIdentifiers'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_transaction_timeout_config_TransactionTimeoutConfig'($1_from_bcs_deserialize'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(b1), $1_from_bcs_deserialize'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_unbound_Pool'($1_from_bcs_deserialize'$1_pool_u64_unbound_Pool'(b1), $1_from_bcs_deserialize'$1_pool_u64_unbound_Pool'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_property_map_PropertyMap'($1_from_bcs_deserialize'$1_property_map_PropertyMap'(b1), $1_from_bcs_deserialize'$1_property_map_PropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_property_map_PropertyValue'($1_from_bcs_deserialize'$1_property_map_PropertyValue'(b1), $1_from_bcs_deserialize'$1_property_map_PropertyValue'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_account_DirectTransferConfig'($1_from_bcs_deserialize'$1_starcoin_account_DirectTransferConfig'(b1), $1_from_bcs_deserialize'$1_starcoin_account_DirectTransferConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_resource_account_Container'($1_from_bcs_deserialize'$1_resource_account_Container'(b1), $1_from_bcs_deserialize'$1_resource_account_Container'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ring_Ring'#0''($1_from_bcs_deserialize'$1_ring_Ring'#0''(b1), $1_from_bcs_deserialize'$1_ring_Ring'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_CompressedRistretto'($1_from_bcs_deserialize'$1_ristretto255_CompressedRistretto'(b1), $1_from_bcs_deserialize'$1_ristretto255_CompressedRistretto'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_RistrettoPoint'($1_from_bcs_deserialize'$1_ristretto255_RistrettoPoint'(b1), $1_from_bcs_deserialize'$1_ristretto255_RistrettoPoint'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_Scalar'($1_from_bcs_deserialize'$1_ristretto255_Scalar'(b1), $1_from_bcs_deserialize'$1_ristretto255_Scalar'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_pedersen_Commitment'($1_from_bcs_deserialize'$1_ristretto255_pedersen_Commitment'(b1), $1_from_bcs_deserialize'$1_ristretto255_pedersen_Commitment'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_bulletproofs_RangeProof'($1_from_bcs_deserialize'$1_ristretto255_bulletproofs_RangeProof'(b1), $1_from_bcs_deserialize'$1_ristretto255_bulletproofs_RangeProof'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_Ciphertext'($1_from_bcs_deserialize'$1_ristretto255_elgamal_Ciphertext'(b1), $1_from_bcs_deserialize'$1_ristretto255_elgamal_Ciphertext'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_CompressedCiphertext'($1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedCiphertext'(b1), $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedCiphertext'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_ristretto255_elgamal_CompressedPubkey'($1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedPubkey'(b1), $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedPubkey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_secp256k1_ECDSARawPublicKey'($1_from_bcs_deserialize'$1_secp256k1_ECDSARawPublicKey'(b1), $1_from_bcs_deserialize'$1_secp256k1_ECDSARawPublicKey'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_secp256k1_ECDSASignature'($1_from_bcs_deserialize'$1_secp256k1_ECDSASignature'(b1), $1_from_bcs_deserialize'$1_secp256k1_ECDSASignature'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_smart_vector_SmartVector'#0''($1_from_bcs_deserialize'$1_smart_vector_SmartVector'#0''(b1), $1_from_bcs_deserialize'$1_smart_vector_SmartVector'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_token_StarcoinCollection'($1_from_bcs_deserialize'$1_starcoin_token_StarcoinCollection'(b1), $1_from_bcs_deserialize'$1_starcoin_token_StarcoinCollection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_starcoin_token_StarcoinToken'($1_from_bcs_deserialize'$1_starcoin_token_StarcoinToken'(b1), $1_from_bcs_deserialize'$1_starcoin_token_StarcoinToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''($1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(b1), $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_transaction_fee_TransactionFee'#0''($1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'#0''(b1), $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_block_BlockMetadata'($1_from_bcs_deserialize'$1_stc_block_BlockMetadata'(b1), $1_from_bcs_deserialize'$1_stc_block_BlockMetadata'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_block_NewBlockEvent'($1_from_bcs_deserialize'$1_stc_block_NewBlockEvent'(b1), $1_from_bcs_deserialize'$1_stc_block_NewBlockEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_stc_offer_Offer'#0''($1_from_bcs_deserialize'$1_stc_offer_Offer'#0''(b1), $1_from_bcs_deserialize'$1_stc_offer_Offer'#0''(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionDescriptionMutate'($1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionDescriptionMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionMaxiumMutate'($1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionMaxiumMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionUriMutate'($1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_CollectionUriMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DefaultPropertyMutate'($1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DefaultPropertyMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DescriptionMutate'($1_from_bcs_deserialize'$1_token_event_store_DescriptionMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_DescriptionMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_DescriptionMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_MaximumMutate'($1_from_bcs_deserialize'$1_token_event_store_MaximumMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_MaximumMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_MaxiumMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_MaxiumMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_MaxiumMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_OptInTransfer'($1_from_bcs_deserialize'$1_token_event_store_OptInTransfer'(b1), $1_from_bcs_deserialize'$1_token_event_store_OptInTransfer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_OptInTransferEvent'($1_from_bcs_deserialize'$1_token_event_store_OptInTransferEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_OptInTransferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_RoyaltyMutate'($1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutate'(b1), $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutate'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_RoyaltyMutateEvent'($1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutateEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutateEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_TokenEventStoreV1'($1_from_bcs_deserialize'$1_token_event_store_TokenEventStoreV1'(b1), $1_from_bcs_deserialize'$1_token_event_store_TokenEventStoreV1'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_UriMutation'($1_from_bcs_deserialize'$1_token_event_store_UriMutation'(b1), $1_from_bcs_deserialize'$1_token_event_store_UriMutation'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_event_store_UriMutationEvent'($1_from_bcs_deserialize'$1_token_event_store_UriMutationEvent'(b1), $1_from_bcs_deserialize'$1_token_event_store_UriMutationEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_Deposit'($1_from_bcs_deserialize'$1_token_Deposit'(b1), $1_from_bcs_deserialize'$1_token_Deposit'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_DepositEvent'($1_from_bcs_deserialize'$1_token_DepositEvent'(b1), $1_from_bcs_deserialize'$1_token_DepositEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_Withdraw'($1_from_bcs_deserialize'$1_token_Withdraw'(b1), $1_from_bcs_deserialize'$1_token_Withdraw'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_WithdrawEvent'($1_from_bcs_deserialize'$1_token_WithdrawEvent'(b1), $1_from_bcs_deserialize'$1_token_WithdrawEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_WithdrawCapability'($1_from_bcs_deserialize'$1_token_WithdrawCapability'(b1), $1_from_bcs_deserialize'$1_token_WithdrawCapability'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_Token'($1_from_bcs_deserialize'$1_token_Token'(b1), $1_from_bcs_deserialize'$1_token_Token'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_Royalty'($1_from_bcs_deserialize'$1_token_Royalty'(b1), $1_from_bcs_deserialize'$1_token_Royalty'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_BurnToken'($1_from_bcs_deserialize'$1_token_BurnToken'(b1), $1_from_bcs_deserialize'$1_token_BurnToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_BurnTokenEvent'($1_from_bcs_deserialize'$1_token_BurnTokenEvent'(b1), $1_from_bcs_deserialize'$1_token_BurnTokenEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CollectionData'($1_from_bcs_deserialize'$1_token_CollectionData'(b1), $1_from_bcs_deserialize'$1_token_CollectionData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CollectionMutabilityConfig'($1_from_bcs_deserialize'$1_token_CollectionMutabilityConfig'(b1), $1_from_bcs_deserialize'$1_token_CollectionMutabilityConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_Collections'($1_from_bcs_deserialize'$1_token_Collections'(b1), $1_from_bcs_deserialize'$1_token_Collections'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateCollection'($1_from_bcs_deserialize'$1_token_CreateCollection'(b1), $1_from_bcs_deserialize'$1_token_CreateCollection'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateCollectionEvent'($1_from_bcs_deserialize'$1_token_CreateCollectionEvent'(b1), $1_from_bcs_deserialize'$1_token_CreateCollectionEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateTokenData'($1_from_bcs_deserialize'$1_token_CreateTokenData'(b1), $1_from_bcs_deserialize'$1_token_CreateTokenData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_CreateTokenDataEvent'($1_from_bcs_deserialize'$1_token_CreateTokenDataEvent'(b1), $1_from_bcs_deserialize'$1_token_CreateTokenDataEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MintToken'($1_from_bcs_deserialize'$1_token_MintToken'(b1), $1_from_bcs_deserialize'$1_token_MintToken'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MintTokenEvent'($1_from_bcs_deserialize'$1_token_MintTokenEvent'(b1), $1_from_bcs_deserialize'$1_token_MintTokenEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MutateTokenPropertyMap'($1_from_bcs_deserialize'$1_token_MutateTokenPropertyMap'(b1), $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMap'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_MutateTokenPropertyMapEvent'($1_from_bcs_deserialize'$1_token_MutateTokenPropertyMapEvent'(b1), $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMapEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_TokenData'($1_from_bcs_deserialize'$1_token_TokenData'(b1), $1_from_bcs_deserialize'$1_token_TokenData'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_TokenDataId'($1_from_bcs_deserialize'$1_token_TokenDataId'(b1), $1_from_bcs_deserialize'$1_token_TokenDataId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_TokenId'($1_from_bcs_deserialize'$1_token_TokenId'(b1), $1_from_bcs_deserialize'$1_token_TokenId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_TokenMutabilityConfig'($1_from_bcs_deserialize'$1_token_TokenMutabilityConfig'(b1), $1_from_bcs_deserialize'$1_token_TokenMutabilityConfig'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_TokenStore'($1_from_bcs_deserialize'$1_token_TokenStore'(b1), $1_from_bcs_deserialize'$1_token_TokenStore'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_PendingClaims'($1_from_bcs_deserialize'$1_token_transfers_PendingClaims'(b1), $1_from_bcs_deserialize'$1_token_transfers_PendingClaims'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenCancelOffer'($1_from_bcs_deserialize'$1_token_transfers_TokenCancelOffer'(b1), $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOffer'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenCancelOfferEvent'($1_from_bcs_deserialize'$1_token_transfers_TokenCancelOfferEvent'(b1), $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOfferEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenClaim'($1_from_bcs_deserialize'$1_token_transfers_TokenClaim'(b1), $1_from_bcs_deserialize'$1_token_transfers_TokenClaim'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenClaimEvent'($1_from_bcs_deserialize'$1_token_transfers_TokenClaimEvent'(b1), $1_from_bcs_deserialize'$1_token_transfers_TokenClaimEvent'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+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_token_transfers_TokenOfferId'($1_from_bcs_deserialize'$1_token_transfers_TokenOfferId'(b1), $1_from_bcs_deserialize'$1_token_transfers_TokenOfferId'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#1> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#1'($1_from_bcs_deserialize'#1'(b1), $1_from_bcs_deserialize'#1'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#2> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#2'($1_from_bcs_deserialize'#2'(b1), $1_from_bcs_deserialize'#2'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:21:9+118, instance <#3> +axiom (forall b1: Vec (int), b2: Vec (int) :: $IsValid'vec'u8''(b1) ==> $IsValid'vec'u8''(b2) ==> (($IsEqual'vec'u8''(b1, b2) ==> $IsEqual'#3'($1_from_bcs_deserialize'#3'(b1), $1_from_bcs_deserialize'#3'(b2))))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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_starcoin_hash_spec_keccak256(b1), $1_starcoin_hash_spec_keccak256(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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_starcoin_hash_spec_sha2_512_internal(b1), $1_starcoin_hash_spec_sha2_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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_starcoin_hash_spec_sha3_512_internal(b1), $1_starcoin_hash_spec_sha3_512_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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_starcoin_hash_spec_ripemd160_internal(b1), $1_starcoin_hash_spec_ripemd160_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// axiom at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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_starcoin_hash_spec_blake2b_256_internal(b1), $1_starcoin_hash_spec_blake2b_256_internal(b2)) ==> $IsEqual'vec'u8''(b1, b2)))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:664:9+116 +function {:inline} $1_vector_spec_contains'bool'(self: Vec (bool), e: bool): bool { + (var $range_0 := self; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); + ($IsEqual'bool'(x, e))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:664:9+116 +function {:inline} $1_vector_spec_contains'u64'(self: Vec (int), e: int): bool { + (var $range_0 := self; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); + ($IsEqual'u64'(x, e))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:664:9+116 +function {:inline} $1_vector_spec_contains'address'(self: Vec (int), e: int): bool { + (var $range_0 := self; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); + ($IsEqual'address'(x, e))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:664:9+116 +function {:inline} $1_vector_spec_contains'#0'(self: Vec (#0), e: #0): bool { + (var $range_0 := self; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var x := ReadVec($range_0, $i_1); + ($IsEqual'#0'(x, e))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'u64'(self: Vec (int)): bool { + $IsEqual'u64'($1_vector_$length'u64'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'u128'(self: Vec (int)): bool { + $IsEqual'u64'($1_vector_$length'u128'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'address'(self: Vec (int)): bool { + $IsEqual'u64'($1_vector_$length'address'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_string_String'(self: Vec ($1_string_String)): bool { + $IsEqual'u64'($1_vector_$length'$1_string_String'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_aggregator_Aggregator'(self: Vec ($1_aggregator_Aggregator)): bool { + $IsEqual'u64'($1_vector_$length'$1_aggregator_Aggregator'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_aggregator_v2_AggregatorSnapshot'u64''(self: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): bool { + $IsEqual'u64'($1_vector_$length'$1_aggregator_v2_AggregatorSnapshot'u64''(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_big_vector_BigVector'#0''(self: Vec ($1_big_vector_BigVector'#0')): bool { + $IsEqual'u64'($1_vector_$length'$1_big_vector_BigVector'#0''(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_object_DeleteRef'(self: Vec ($1_object_DeleteRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_object_DeleteRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_object_Object'$1_fungible_asset_Metadata''(self: Vec ($1_object_Object'$1_fungible_asset_Metadata')): bool { + $IsEqual'u64'($1_vector_$length'$1_object_Object'$1_fungible_asset_Metadata''(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_object_TransferRef'(self: Vec ($1_object_TransferRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_object_TransferRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_optional_aggregator_Integer'(self: Vec ($1_optional_aggregator_Integer)): bool { + $IsEqual'u64'($1_vector_$length'$1_optional_aggregator_Integer'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_optional_aggregator_OptionalAggregator'(self: Vec ($1_optional_aggregator_OptionalAggregator)): bool { + $IsEqual'u64'($1_vector_$length'$1_optional_aggregator_OptionalAggregator'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_function_info_FunctionInfo'(self: Vec ($1_function_info_FunctionInfo)): bool { + $IsEqual'u64'($1_vector_$length'$1_function_info_FunctionInfo'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_fungible_asset_TransferRef'(self: Vec ($1_fungible_asset_TransferRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_fungible_asset_TransferRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_fungible_asset_BurnRef'(self: Vec ($1_fungible_asset_BurnRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_fungible_asset_BurnRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_fungible_asset_MintRef'(self: Vec ($1_fungible_asset_MintRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_fungible_asset_MintRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(self: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): bool { + $IsEqual'u64'($1_vector_$length'$1_on_chain_config_ModifyConfigCapability'#0''(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_bls12381_AggrOrMultiSignature'(self: Vec ($1_bls12381_AggrOrMultiSignature)): bool { + $IsEqual'u64'($1_vector_$length'$1_bls12381_AggrOrMultiSignature'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_bls12381_PublicKey'(self: Vec ($1_bls12381_PublicKey)): bool { + $IsEqual'u64'($1_vector_$length'$1_bls12381_PublicKey'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_bls12381_PublicKeyWithPoP'(self: Vec ($1_bls12381_PublicKeyWithPoP)): bool { + $IsEqual'u64'($1_vector_$length'$1_bls12381_PublicKeyWithPoP'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_royalty_MutatorRef'(self: Vec ($1_royalty_MutatorRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_royalty_MutatorRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_royalty_Royalty'(self: Vec ($1_royalty_Royalty)): bool { + $IsEqual'u64'($1_vector_$length'$1_royalty_Royalty'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_collection_ConcurrentSupply'(self: Vec ($1_collection_ConcurrentSupply)): bool { + $IsEqual'u64'($1_vector_$length'$1_collection_ConcurrentSupply'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_collection_MutatorRef'(self: Vec ($1_collection_MutatorRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_collection_MutatorRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_collection_FixedSupply'(self: Vec ($1_collection_FixedSupply)): bool { + $IsEqual'u64'($1_vector_$length'$1_collection_FixedSupply'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_object_token_BurnRef'(self: Vec ($1_object_token_BurnRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_object_token_BurnRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_object_token_MutatorRef'(self: Vec ($1_object_token_MutatorRef)): bool { + $IsEqual'u64'($1_vector_$length'$1_object_token_MutatorRef'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_property_map_PropertyValue'(self: Vec ($1_property_map_PropertyValue)): bool { + $IsEqual'u64'($1_vector_$length'$1_property_map_PropertyValue'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_ristretto255_CompressedRistretto'(self: Vec ($1_ristretto255_CompressedRistretto)): bool { + $IsEqual'u64'($1_vector_$length'$1_ristretto255_CompressedRistretto'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_ristretto255_RistrettoPoint'(self: Vec ($1_ristretto255_RistrettoPoint)): bool { + $IsEqual'u64'($1_vector_$length'$1_ristretto255_RistrettoPoint'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'$1_ristretto255_Scalar'(self: Vec ($1_ristretto255_Scalar)): bool { + $IsEqual'u64'($1_vector_$length'$1_ristretto255_Scalar'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'#0'(self: Vec (#0)): bool { + $IsEqual'u64'($1_vector_$length'#0'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:152:5+92 +function {:inline} $1_vector_$is_empty'#1'(self: Vec (#1)): bool { + $IsEqual'u64'($1_vector_$length'#1'(self), 0) +} + +// fun vector::range [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:598:5+98 +procedure {:timeLimit 80} $1_vector_range$verify(_$t0: int, _$t1: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $t0: int; + var $t1: int; + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:598:5+1 + assume {:print "$at(16,20892,20893)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:598:5+1 + assume $IsValid'u64'($t1); + + // trace_local[start]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:598:5+1 + assume {:print "$track_local(3,12,0):", $t0} $t0 == $t0; + + // trace_local[end]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:598:5+1 + assume {:print "$track_local(3,12,1):", $t1} $t1 == $t1; + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:599:37+1 + assume {:print "$at(16,20982,20983)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := vector::range_with_step($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:599:9+30 + call $t3 := $1_vector_range_with_step($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(16,20954,20984)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(3,12):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:599:9+30 + assume {:print "$track_return(3,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:600:5+1 + assume {:print "$at(16,20989,20990)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:600:5+1 + assume {:print "$at(16,20989,20990)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:600:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:600:5+1 + assume {:print "$at(16,20989,20990)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun vector::range_with_step [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+278 +procedure {:inline 1} $1_vector_range_with_step(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t3: Vec (int); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: Vec (int); + var $t9: bool; + var $t10: int; + var $t11: $Mutation (Vec (int)); + var $t12: Vec (int); + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[start]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$at(16,20996,20997)"} true; + assume {:print "$track_local(3,13,0):", $t0} $t0 == $t0; + + // trace_local[end]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$track_local(3,13,1):", $t1} $t1 == $t1; + + // trace_local[step]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$track_local(3,13,2):", $t2} $t2 == $t2; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:24+1 + assume {:print "$at(16,21094,21095)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := >($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:22+1 + call $t5 := $Gt($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + assume {:print "$at(16,21079,21111)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:27+13 +L0: + + // $t6 := 131075 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:27+13 + assume {:print "$at(16,21097,21110)"} true; + $t6 := 131075; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + assume {:print "$at(16,21079,21111)"} true; + assume {:print "$track_abort(3,13):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + $t7 := $t6; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:19+8 + assume {:print "$at(16,21132,21140)"} true; +L2: + + // $t8 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:19+8 + assume {:print "$at(16,21132,21140)"} true; + $t8 := EmptyVec(); + assume $IsValid'vec'u64''($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:13+3 + $t3 := $t8; + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:13+3 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$at(16,21157,21162)"} true; +L6: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$at(16,21157,21162)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'u64'($t0); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'vec'u64''($t3); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'u64'($t10); + + // $t11 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'vec'u64''($Dereference($t11)); + + // trace_local[start]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$info(): enter loop, variable(s) start, vec havocked and reassigned"} true; + assume {:print "$track_local(3,13,0):", $t0} $t0 == $t0; + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume !$abort_flag; + + // $t9 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:22+1 + call $t9 := $Lt($t0, $t1); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:9+105 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:9+105 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:23+8 + assume {:print "$at(16,21194,21202)"} true; +L5: + + // $t11 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:23+8 + assume {:print "$at(16,21194,21202)"} true; + $t11 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::push_back($t11, $t0) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + call $t11 := $1_vector_push_back'u64'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(16,21184,21210)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,13):", $t7} $t7 == $t7; + goto L9; + } + + // write_back[LocalRoot($t3)@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + $t3 := $Dereference($t11); + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // $t10 := +($t0, $t2) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:27+1 + assume {:print "$at(16,21238,21239)"} true; + call $t10 := $AddU64($t0, $t2); + if ($abort_flag) { + assume {:print "$at(16,21238,21239)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,13):", $t7} $t7 == $t7; + goto L9; + } + + // trace_local[start]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:13+5 + assume {:print "$track_local(3,13,0):", $t10} $t10 == $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:33+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; +L3: + + // $t12 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; + $t12 := $t3; + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$track_return(3,13,0):", $t12} $t12 == $t12; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; +L8: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; + $ret0 := $t12; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 +L9: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vector::range_with_step [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+278 +procedure {:timeLimit 80} $1_vector_range_with_step$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t3: Vec (int); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: Vec (int); + var $t9: bool; + var $t10: int; + var $t11: $Mutation (Vec (int)); + var $t12: Vec (int); + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$at(16,20996,20997)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume $IsValid'u64'($t2); + + // trace_local[start]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$track_local(3,13,0):", $t0} $t0 == $t0; + + // trace_local[end]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$track_local(3,13,1):", $t1} $t1 == $t1; + + // trace_local[step]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:602:5+1 + assume {:print "$track_local(3,13,2):", $t2} $t2 == $t2; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:24+1 + assume {:print "$at(16,21094,21095)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := >($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:22+1 + call $t5 := $Gt($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + assume {:print "$at(16,21079,21111)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:27+13 +L0: + + // $t6 := 131075 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:27+13 + assume {:print "$at(16,21097,21110)"} true; + $t6 := 131075; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + assume {:print "$at(16,21079,21111)"} true; + assume {:print "$track_abort(3,13):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + $t7 := $t6; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:603:9+32 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:19+8 + assume {:print "$at(16,21132,21140)"} true; +L2: + + // $t8 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:19+8 + assume {:print "$at(16,21132,21140)"} true; + $t8 := EmptyVec(); + assume $IsValid'vec'u64''($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:13+3 + $t3 := $t8; + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:605:13+3 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$at(16,21157,21162)"} true; +L6: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$at(16,21157,21162)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'u64'($t0); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'vec'u64''($t3); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'u64'($t10); + + // $t11 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume $IsValid'vec'u64''($Dereference($t11)); + + // trace_local[start]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$info(): enter loop, variable(s) start, vec havocked and reassigned"} true; + assume {:print "$track_local(3,13,0):", $t0} $t0 == $t0; + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:16+5 + assume !$abort_flag; + + // $t9 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:22+1 + call $t9 := $Lt($t0, $t1); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:9+105 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:606:9+105 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:23+8 + assume {:print "$at(16,21194,21202)"} true; +L5: + + // $t11 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:23+8 + assume {:print "$at(16,21194,21202)"} true; + $t11 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::push_back($t11, $t0) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + call $t11 := $1_vector_push_back'u64'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(16,21184,21210)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,13):", $t7} $t7 == $t7; + goto L9; + } + + // write_back[LocalRoot($t3)@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + $t3 := $Dereference($t11); + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:607:13+26 + assume {:print "$track_local(3,13,3):", $t3} $t3 == $t3; + + // $t10 := +($t0, $t2) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:27+1 + assume {:print "$at(16,21238,21239)"} true; + call $t10 := $AddU64($t0, $t2); + if ($abort_flag) { + assume {:print "$at(16,21238,21239)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,13):", $t7} $t7 == $t7; + goto L9; + } + + // trace_local[start]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:13+5 + assume {:print "$track_local(3,13,0):", $t10} $t10 == $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:608:33+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; +L3: + + // $t12 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; + $t12 := $t3; + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$track_return(3,13,0):", $t12} $t12 == $t12; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:610:9+3 + assume {:print "$at(16,21265,21268)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; +L8: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; + $ret0 := $t12; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 +L9: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:611:5+1 + assume {:print "$at(16,21273,21274)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun vector::singleton<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:65:5+131 +procedure {:inline 1} $1_vector_singleton'#0'(_$t0: #0) returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: int; + var $t3: $Mutation (Vec (#0)); + var $t4: Vec (#0); + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[e]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:65:5+1 + assume {:print "$at(16,2742,2743)"} true; + assume {:print "$track_local(3,21,0):", $t0} $t0 == $t0; + + // $t1 := vector::empty<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:66:17+7 + assume {:print "$at(16,2819,2826)"} true; + call $t1 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(16,2819,2826)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(3,21):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:66:13+1 + assume {:print "$track_local(3,21,1):", $t1} $t1 == $t1; + + // $t3 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:19+6 + assume {:print "$at(16,2846,2852)"} true; + $t3 := $Mutation($Local(1), EmptyVec(), $t1); + + // vector::push_back<#0>($t3, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + call $t3 := $1_vector_push_back'#0'($t3, $t0); + if ($abort_flag) { + assume {:print "$at(16,2836,2856)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(3,21):", $t2} $t2 == $t2; + goto L2; + } + + // write_back[LocalRoot($t1)@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + $t1 := $Dereference($t3); + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + assume {:print "$track_local(3,21,1):", $t1} $t1 == $t1; + + // $t4 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:68:9+1 + assume {:print "$at(16,2866,2867)"} true; + $t4 := $t1; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:68:9+1 + assume {:print "$track_return(3,21,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 + assume {:print "$at(16,2872,2873)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 + assume {:print "$at(16,2872,2873)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 + assume {:print "$at(16,2872,2873)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vector::singleton [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:65:5+131 +procedure {:timeLimit 80} $1_vector_singleton$verify(_$t0: #0) returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: int; + var $t3: $Mutation (Vec (#0)); + var $t4: Vec (#0); + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:65:5+1 + assume {:print "$at(16,2742,2743)"} true; + assume $IsValid'#0'($t0); + + // trace_local[e]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:65:5+1 + assume {:print "$track_local(3,21,0):", $t0} $t0 == $t0; + + // $t1 := vector::empty<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:66:17+7 + assume {:print "$at(16,2819,2826)"} true; + call $t1 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(16,2819,2826)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(3,21):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:66:13+1 + assume {:print "$track_local(3,21,1):", $t1} $t1 == $t1; + + // $t3 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:19+6 + assume {:print "$at(16,2846,2852)"} true; + $t3 := $Mutation($Local(1), EmptyVec(), $t1); + + // vector::push_back<#0>($t3, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + call $t3 := $1_vector_push_back'#0'($t3, $t0); + if ($abort_flag) { + assume {:print "$at(16,2836,2856)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(3,21):", $t2} $t2 == $t2; + goto L2; + } + + // write_back[LocalRoot($t1)@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + $t1 := $Dereference($t3); + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:67:9+20 + assume {:print "$track_local(3,21,1):", $t1} $t1 == $t1; + + // $t4 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:68:9+1 + assume {:print "$at(16,2866,2867)"} true; + $t4 := $t1; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:68:9+1 + assume {:print "$track_return(3,21,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 + assume {:print "$at(16,2872,2873)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:71:9+16 + assume {:print "$at(16,2903,2919)"} true; + assert {:msg "assert_failed(16,2903,2919): function does not abort under this condition"} + !false; + + // assert Eq>($t4, SingleVec<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:72:9+25 + assume {:print "$at(16,2928,2953)"} true; + assert {:msg "assert_failed(16,2928,2953): post-condition does not hold"} + $IsEqual'vec'#0''($t4, MakeVec1($t0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:72:9+25 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:69:5+1 + assume {:print "$at(16,2872,2873)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:70:5+81 + assume {:print "$at(16,2878,2959)"} true; + assert {:msg "assert_failed(16,2878,2959): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:70:5+81 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun vector::slice [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+376 +procedure {:timeLimit 80} $1_vector_slice$verify(_$t0: Vec (#0), _$t1: int, _$t2: int) returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t3: bool; + var $t4: Vec (#0); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: bool; + var $t11: #0; + var $t12: int; + var $t13: int; + var $t14: $Mutation (Vec (#0)); + var $t15: Vec (#0); + var $t0: Vec (#0); + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume {:print "$at(16,21280,21281)"} true; + assume $IsValid'vec'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume $IsValid'u64'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume {:print "$track_local(3,22,0):", $t0} $t0 == $t0; + + // trace_local[start]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume {:print "$track_local(3,22,1):", $t1} $t1 == $t1; + + // trace_local[end]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:613:5+1 + assume {:print "$track_local(3,22,2):", $t2} $t2 == $t2; + + // $t5 := <=($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:23+2 + assume {:print "$at(16,21429,21431)"} true; + call $t5 := $Le($t1, $t2); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:33+3 +L1: + + // $t6 := vector::length<#0>($t0) on_abort goto L12 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:40+12 + assume {:print "$at(16,21446,21458)"} true; + call $t6 := $1_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(16,21446,21458)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,22):", $t7} $t7 == $t7; + goto L12; + } + + // $t3 := <=($t2, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:37+2 + call $t3 := $Le($t2, $t6); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 +L0: + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 + assume {:print "$at(16,21423,21458)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 + $t3 := $t8; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:17+35 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 + assume {:print "$at(16,21415,21481)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 + assume {:print "$at(16,21415,21481)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 +L3: + + // $t9 := 131076 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:54+20 + assume {:print "$at(16,21460,21480)"} true; + $t9 := 131076; + assume $IsValid'u64'($t9); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 + assume {:print "$at(16,21415,21481)"} true; + assume {:print "$track_abort(3,22):", $t9} $t9 == $t9; + + // $t7 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 + $t7 := $t9; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:618:9+66 + goto L12; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:620:19+8 + assume {:print "$at(16,21502,21510)"} true; +L5: + + // $t4 := vector::empty<#0>() on_abort goto L12 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:620:19+8 + assume {:print "$at(16,21502,21510)"} true; + call $t4 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(16,21502,21510)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,22):", $t7} $t7 == $t7; + goto L12; + } + + // trace_local[vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:620:13+3 + assume {:print "$track_local(3,22,4):", $t4} $t4 == $t4; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume {:print "$at(16,21527,21532)"} true; +L9: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume {:print "$at(16,21527,21532)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'u64'($t1); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'vec'#0''($t4); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'bool'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'#0'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'u64'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'u64'($t13); + + // $t14 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume $IsValid'vec'#0''($Dereference($t14)); + + // trace_local[start]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume {:print "$info(): enter loop, variable(s) start, vec havocked and reassigned"} true; + assume {:print "$track_local(3,22,1):", $t1} $t1 == $t1; + + // trace_local[vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume {:print "$track_local(3,22,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:16+5 + assume !$abort_flag; + + // $t10 := <($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:22+1 + call $t10 := $Lt($t1, $t2); + + // if ($t10) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:9+117 + if ($t10) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:621:9+117 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:23+8 + assume {:print "$at(16,21564,21572)"} true; +L8: + + // $t14 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:23+8 + assume {:print "$at(16,21564,21572)"} true; + $t14 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t11 := vector::borrow<#0>($t0, $t1) on_abort goto L12 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:34+19 + call $t11 := $1_vector_borrow'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(16,21575,21594)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,22):", $t7} $t7 == $t7; + goto L12; + } + + // vector::push_back<#0>($t14, $t11) on_abort goto L12 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:13+41 + call $t14 := $1_vector_push_back'#0'($t14, $t11); + if ($abort_flag) { + assume {:print "$at(16,21554,21595)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,22):", $t7} $t7 == $t7; + goto L12; + } + + // write_back[LocalRoot($t4)@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:13+41 + $t4 := $Dereference($t14); + + // trace_local[vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:622:13+41 + assume {:print "$track_local(3,22,4):", $t4} $t4 == $t4; + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:623:29+1 + assume {:print "$at(16,21625,21626)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := +($t1, $t12) on_abort goto L12 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:623:27+1 + call $t13 := $AddU64($t1, $t12); + if ($abort_flag) { + assume {:print "$at(16,21623,21624)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(3,22):", $t7} $t7 == $t7; + goto L12; + } + + // trace_local[start]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:623:13+5 + assume {:print "$track_local(3,22,1):", $t13} $t13 == $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:623:30+1 + goto L10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + assume {:print "$at(16,21647,21650)"} true; +L6: + + // $t15 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + assume {:print "$at(16,21647,21650)"} true; + $t15 := $t4; + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + assume {:print "$track_return(3,22,0):", $t15} $t15 == $t15; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + goto L11; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + // Loop invariant checking block for the loop started with header: L9 +L10: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:625:9+3 + assume {:print "$at(16,21647,21650)"} true; + assume false; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:626:5+1 + assume {:print "$at(16,21655,21656)"} true; +L11: + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:626:5+1 + assume {:print "$at(16,21655,21656)"} true; + $ret0 := $t15; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:626:5+1 +L12: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:626:5+1 + assume {:print "$at(16,21655,21656)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'u8'(): $1_option_Option'u8' { + $1_option_Option'u8'($EmptyVec'u8'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'u64'(): $1_option_Option'u64' { + $1_option_Option'u64'($EmptyVec'u64'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'u128'(): $1_option_Option'u128' { + $1_option_Option'u128'($EmptyVec'u128'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_string_String'(): $1_option_Option'$1_string_String' { + $1_option_Option'$1_string_String'($EmptyVec'$1_string_String'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_type_info_TypeInfo'(): $1_option_Option'$1_type_info_TypeInfo' { + $1_option_Option'$1_type_info_TypeInfo'($EmptyVec'$1_type_info_TypeInfo'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ed25519_ValidatedPublicKey'(): $1_option_Option'$1_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_ed25519_ValidatedPublicKey'($EmptyVec'$1_ed25519_ValidatedPublicKey'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'(): $1_option_Option'$1_multi_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'($EmptyVec'$1_multi_ed25519_ValidatedPublicKey'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_aggregator_Aggregator'(): $1_option_Option'$1_aggregator_Aggregator' { + $1_option_Option'$1_aggregator_Aggregator'($EmptyVec'$1_aggregator_Aggregator'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_aggregator_v2_AggregatorSnapshot'u64''(): $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'' { + $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''($EmptyVec'$1_aggregator_v2_AggregatorSnapshot'u64''()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_any_Any'(): $1_option_Option'$1_any_Any' { + $1_option_Option'$1_any_Any'($EmptyVec'$1_any_Any'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_big_vector_BigVector'#0''(): $1_option_Option'$1_big_vector_BigVector'#0'' { + $1_option_Option'$1_big_vector_BigVector'#0''($EmptyVec'$1_big_vector_BigVector'#0''()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_object_DeleteRef'(): $1_option_Option'$1_object_DeleteRef' { + $1_option_Option'$1_object_DeleteRef'($EmptyVec'$1_object_DeleteRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''(): $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'' { + $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''($EmptyVec'$1_object_Object'$1_fungible_asset_Metadata''()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_object_TransferRef'(): $1_option_Option'$1_object_TransferRef' { + $1_option_Option'$1_object_TransferRef'($EmptyVec'$1_object_TransferRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_optional_aggregator_Integer'(): $1_option_Option'$1_optional_aggregator_Integer' { + $1_option_Option'$1_optional_aggregator_Integer'($EmptyVec'$1_optional_aggregator_Integer'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_optional_aggregator_OptionalAggregator'(): $1_option_Option'$1_optional_aggregator_OptionalAggregator' { + $1_option_Option'$1_optional_aggregator_OptionalAggregator'($EmptyVec'$1_optional_aggregator_OptionalAggregator'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_function_info_FunctionInfo'(): $1_option_Option'$1_function_info_FunctionInfo' { + $1_option_Option'$1_function_info_FunctionInfo'($EmptyVec'$1_function_info_FunctionInfo'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_bls12381_AggrOrMultiSignature'(): $1_option_Option'$1_bls12381_AggrOrMultiSignature' { + $1_option_Option'$1_bls12381_AggrOrMultiSignature'($EmptyVec'$1_bls12381_AggrOrMultiSignature'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_bls12381_PublicKey'(): $1_option_Option'$1_bls12381_PublicKey' { + $1_option_Option'$1_bls12381_PublicKey'($EmptyVec'$1_bls12381_PublicKey'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_bls12381_PublicKeyWithPoP'(): $1_option_Option'$1_bls12381_PublicKeyWithPoP' { + $1_option_Option'$1_bls12381_PublicKeyWithPoP'($EmptyVec'$1_bls12381_PublicKeyWithPoP'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_royalty_MutatorRef'(): $1_option_Option'$1_royalty_MutatorRef' { + $1_option_Option'$1_royalty_MutatorRef'($EmptyVec'$1_royalty_MutatorRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_royalty_Royalty'(): $1_option_Option'$1_royalty_Royalty' { + $1_option_Option'$1_royalty_Royalty'($EmptyVec'$1_royalty_Royalty'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_collection_MutatorRef'(): $1_option_Option'$1_collection_MutatorRef' { + $1_option_Option'$1_collection_MutatorRef'($EmptyVec'$1_collection_MutatorRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_collection_FixedSupply'(): $1_option_Option'$1_collection_FixedSupply' { + $1_option_Option'$1_collection_FixedSupply'($EmptyVec'$1_collection_FixedSupply'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_crypto_algebra_Element'#0''(): $1_option_Option'$1_crypto_algebra_Element'#0'' { + $1_option_Option'$1_crypto_algebra_Element'#0''($EmptyVec'$1_crypto_algebra_Element'#0''()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_crypto_algebra_Element'#1''(): $1_option_Option'$1_crypto_algebra_Element'#1'' { + $1_option_Option'$1_crypto_algebra_Element'#1''($EmptyVec'$1_crypto_algebra_Element'#1''()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_object_token_BurnRef'(): $1_option_Option'$1_object_token_BurnRef' { + $1_option_Option'$1_object_token_BurnRef'($EmptyVec'$1_object_token_BurnRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_object_token_MutatorRef'(): $1_option_Option'$1_object_token_MutatorRef' { + $1_option_Option'$1_object_token_MutatorRef'($EmptyVec'$1_object_token_MutatorRef'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_property_map_PropertyValue'(): $1_option_Option'$1_property_map_PropertyValue' { + $1_option_Option'$1_property_map_PropertyValue'($EmptyVec'$1_property_map_PropertyValue'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_CompressedRistretto'(): $1_option_Option'$1_ristretto255_CompressedRistretto' { + $1_option_Option'$1_ristretto255_CompressedRistretto'($EmptyVec'$1_ristretto255_CompressedRistretto'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_RistrettoPoint'(): $1_option_Option'$1_ristretto255_RistrettoPoint' { + $1_option_Option'$1_ristretto255_RistrettoPoint'($EmptyVec'$1_ristretto255_RistrettoPoint'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_Scalar'(): $1_option_Option'$1_ristretto255_Scalar' { + $1_option_Option'$1_ristretto255_Scalar'($EmptyVec'$1_ristretto255_Scalar'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_pedersen_Commitment'(): $1_option_Option'$1_ristretto255_pedersen_Commitment' { + $1_option_Option'$1_ristretto255_pedersen_Commitment'($EmptyVec'$1_ristretto255_pedersen_Commitment'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_elgamal_Ciphertext'(): $1_option_Option'$1_ristretto255_elgamal_Ciphertext' { + $1_option_Option'$1_ristretto255_elgamal_Ciphertext'($EmptyVec'$1_ristretto255_elgamal_Ciphertext'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_ristretto255_elgamal_CompressedPubkey'(): $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey' { + $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'($EmptyVec'$1_ristretto255_elgamal_CompressedPubkey'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_secp256k1_ECDSARawPublicKey'(): $1_option_Option'$1_secp256k1_ECDSARawPublicKey' { + $1_option_Option'$1_secp256k1_ECDSARawPublicKey'($EmptyVec'$1_secp256k1_ECDSARawPublicKey'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'$1_token_WithdrawCapability'(): $1_option_Option'$1_token_WithdrawCapability' { + $1_option_Option'$1_token_WithdrawCapability'($EmptyVec'$1_token_WithdrawCapability'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:34:10+78 +function {:inline} $1_option_spec_none'#0'(): $1_option_Option'#0' { + $1_option_Option'#0'($EmptyVec'#0'()) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'u8'(e: int): $1_option_Option'u8' { + $1_option_Option'u8'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'u64'(e: int): $1_option_Option'u64' { + $1_option_Option'u64'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'u128'(e: int): $1_option_Option'u128' { + $1_option_Option'u128'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_string_String'(e: $1_string_String): $1_option_Option'$1_string_String' { + $1_option_Option'$1_string_String'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_type_info_TypeInfo'(e: $1_type_info_TypeInfo): $1_option_Option'$1_type_info_TypeInfo' { + $1_option_Option'$1_type_info_TypeInfo'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ed25519_ValidatedPublicKey'(e: $1_ed25519_ValidatedPublicKey): $1_option_Option'$1_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_ed25519_ValidatedPublicKey'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'(e: $1_multi_ed25519_ValidatedPublicKey): $1_option_Option'$1_multi_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_aggregator_Aggregator'(e: $1_aggregator_Aggregator): $1_option_Option'$1_aggregator_Aggregator' { + $1_option_Option'$1_aggregator_Aggregator'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''(e: $1_aggregator_v2_AggregatorSnapshot'u64'): $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'' { + $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_object_DeleteRef'(e: $1_object_DeleteRef): $1_option_Option'$1_object_DeleteRef' { + $1_option_Option'$1_object_DeleteRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_object_Object'$1_fungible_asset_Metadata''(e: $1_object_Object'$1_fungible_asset_Metadata'): $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'' { + $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_optional_aggregator_Integer'(e: $1_optional_aggregator_Integer): $1_option_Option'$1_optional_aggregator_Integer' { + $1_option_Option'$1_optional_aggregator_Integer'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_optional_aggregator_OptionalAggregator'(e: $1_optional_aggregator_OptionalAggregator): $1_option_Option'$1_optional_aggregator_OptionalAggregator' { + $1_option_Option'$1_optional_aggregator_OptionalAggregator'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_fungible_asset_TransferRef'(e: $1_fungible_asset_TransferRef): $1_option_Option'$1_fungible_asset_TransferRef' { + $1_option_Option'$1_fungible_asset_TransferRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_fungible_asset_BurnRef'(e: $1_fungible_asset_BurnRef): $1_option_Option'$1_fungible_asset_BurnRef' { + $1_option_Option'$1_fungible_asset_BurnRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_fungible_asset_MintRef'(e: $1_fungible_asset_MintRef): $1_option_Option'$1_fungible_asset_MintRef' { + $1_option_Option'$1_fungible_asset_MintRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(e: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_on_chain_config_ModifyConfigCapability'#0''(e: $1_on_chain_config_ModifyConfigCapability'#0'): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_bls12381_AggrOrMultiSignature'(e: $1_bls12381_AggrOrMultiSignature): $1_option_Option'$1_bls12381_AggrOrMultiSignature' { + $1_option_Option'$1_bls12381_AggrOrMultiSignature'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_bls12381_PublicKey'(e: $1_bls12381_PublicKey): $1_option_Option'$1_bls12381_PublicKey' { + $1_option_Option'$1_bls12381_PublicKey'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_bls12381_PublicKeyWithPoP'(e: $1_bls12381_PublicKeyWithPoP): $1_option_Option'$1_bls12381_PublicKeyWithPoP' { + $1_option_Option'$1_bls12381_PublicKeyWithPoP'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_royalty_MutatorRef'(e: $1_royalty_MutatorRef): $1_option_Option'$1_royalty_MutatorRef' { + $1_option_Option'$1_royalty_MutatorRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_royalty_Royalty'(e: $1_royalty_Royalty): $1_option_Option'$1_royalty_Royalty' { + $1_option_Option'$1_royalty_Royalty'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_collection_ConcurrentSupply'(e: $1_collection_ConcurrentSupply): $1_option_Option'$1_collection_ConcurrentSupply' { + $1_option_Option'$1_collection_ConcurrentSupply'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_collection_MutatorRef'(e: $1_collection_MutatorRef): $1_option_Option'$1_collection_MutatorRef' { + $1_option_Option'$1_collection_MutatorRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_crypto_algebra_Element'#0''(e: $1_crypto_algebra_Element'#0'): $1_option_Option'$1_crypto_algebra_Element'#0'' { + $1_option_Option'$1_crypto_algebra_Element'#0''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_crypto_algebra_Element'#1''(e: $1_crypto_algebra_Element'#1'): $1_option_Option'$1_crypto_algebra_Element'#1'' { + $1_option_Option'$1_crypto_algebra_Element'#1''(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_object_token_BurnRef'(e: $1_object_token_BurnRef): $1_option_Option'$1_object_token_BurnRef' { + $1_option_Option'$1_object_token_BurnRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_object_token_MutatorRef'(e: $1_object_token_MutatorRef): $1_option_Option'$1_object_token_MutatorRef' { + $1_option_Option'$1_object_token_MutatorRef'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_property_map_PropertyValue'(e: $1_property_map_PropertyValue): $1_option_Option'$1_property_map_PropertyValue' { + $1_option_Option'$1_property_map_PropertyValue'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_CompressedRistretto'(e: $1_ristretto255_CompressedRistretto): $1_option_Option'$1_ristretto255_CompressedRistretto' { + $1_option_Option'$1_ristretto255_CompressedRistretto'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_RistrettoPoint'(e: $1_ristretto255_RistrettoPoint): $1_option_Option'$1_ristretto255_RistrettoPoint' { + $1_option_Option'$1_ristretto255_RistrettoPoint'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_Scalar'(e: $1_ristretto255_Scalar): $1_option_Option'$1_ristretto255_Scalar' { + $1_option_Option'$1_ristretto255_Scalar'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_pedersen_Commitment'(e: $1_ristretto255_pedersen_Commitment): $1_option_Option'$1_ristretto255_pedersen_Commitment' { + $1_option_Option'$1_ristretto255_pedersen_Commitment'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_elgamal_Ciphertext'(e: $1_ristretto255_elgamal_Ciphertext): $1_option_Option'$1_ristretto255_elgamal_Ciphertext' { + $1_option_Option'$1_ristretto255_elgamal_Ciphertext'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_ristretto255_elgamal_CompressedPubkey'(e: $1_ristretto255_elgamal_CompressedPubkey): $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey' { + $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_secp256k1_ECDSARawPublicKey'(e: $1_secp256k1_ECDSARawPublicKey): $1_option_Option'$1_secp256k1_ECDSARawPublicKey' { + $1_option_Option'$1_secp256k1_ECDSARawPublicKey'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'$1_token_WithdrawCapability'(e: $1_token_WithdrawCapability): $1_option_Option'$1_token_WithdrawCapability' { + $1_option_Option'$1_token_WithdrawCapability'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:47:10+89 +function {:inline} $1_option_spec_some'#0'(e: #0): $1_option_Option'#0' { + $1_option_Option'#0'(MakeVec1(e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'u64'(self: $1_option_Option'u64'): bool { + $1_vector_$is_empty'u64'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'u128'(self: $1_option_Option'u128'): bool { + $1_vector_$is_empty'u128'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'address'(self: $1_option_Option'address'): bool { + $1_vector_$is_empty'address'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_string_String'(self: $1_option_Option'$1_string_String'): bool { + $1_vector_$is_empty'$1_string_String'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): bool { + $1_vector_$is_empty'$1_aggregator_Aggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + $1_vector_$is_empty'$1_big_vector_BigVector'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_object_DeleteRef'(self: $1_option_Option'$1_object_DeleteRef'): bool { + $1_vector_$is_empty'$1_object_DeleteRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''(self: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''): bool { + $1_vector_$is_empty'$1_object_Object'$1_fungible_asset_Metadata''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_object_TransferRef'(self: $1_option_Option'$1_object_TransferRef'): bool { + $1_vector_$is_empty'$1_object_TransferRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): bool { + $1_vector_$is_empty'$1_optional_aggregator_Integer'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_optional_aggregator_OptionalAggregator'(self: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + $1_vector_$is_empty'$1_optional_aggregator_OptionalAggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_function_info_FunctionInfo'(self: $1_option_Option'$1_function_info_FunctionInfo'): bool { + $1_vector_$is_empty'$1_function_info_FunctionInfo'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_fungible_asset_TransferRef'(self: $1_option_Option'$1_fungible_asset_TransferRef'): bool { + $1_vector_$is_empty'$1_fungible_asset_TransferRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_fungible_asset_BurnRef'(self: $1_option_Option'$1_fungible_asset_BurnRef'): bool { + $1_vector_$is_empty'$1_fungible_asset_BurnRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_fungible_asset_MintRef'(self: $1_option_Option'$1_fungible_asset_MintRef'): bool { + $1_vector_$is_empty'$1_fungible_asset_MintRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + $1_vector_$is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_bls12381_AggrOrMultiSignature'(self: $1_option_Option'$1_bls12381_AggrOrMultiSignature'): bool { + $1_vector_$is_empty'$1_bls12381_AggrOrMultiSignature'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_bls12381_PublicKey'(self: $1_option_Option'$1_bls12381_PublicKey'): bool { + $1_vector_$is_empty'$1_bls12381_PublicKey'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_bls12381_PublicKeyWithPoP'(self: $1_option_Option'$1_bls12381_PublicKeyWithPoP'): bool { + $1_vector_$is_empty'$1_bls12381_PublicKeyWithPoP'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_royalty_MutatorRef'(self: $1_option_Option'$1_royalty_MutatorRef'): bool { + $1_vector_$is_empty'$1_royalty_MutatorRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_royalty_Royalty'(self: $1_option_Option'$1_royalty_Royalty'): bool { + $1_vector_$is_empty'$1_royalty_Royalty'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_collection_ConcurrentSupply'(self: $1_option_Option'$1_collection_ConcurrentSupply'): bool { + $1_vector_$is_empty'$1_collection_ConcurrentSupply'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_collection_MutatorRef'(self: $1_option_Option'$1_collection_MutatorRef'): bool { + $1_vector_$is_empty'$1_collection_MutatorRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_collection_FixedSupply'(self: $1_option_Option'$1_collection_FixedSupply'): bool { + $1_vector_$is_empty'$1_collection_FixedSupply'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_object_token_BurnRef'(self: $1_option_Option'$1_object_token_BurnRef'): bool { + $1_vector_$is_empty'$1_object_token_BurnRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_object_token_MutatorRef'(self: $1_option_Option'$1_object_token_MutatorRef'): bool { + $1_vector_$is_empty'$1_object_token_MutatorRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_ristretto255_CompressedRistretto'(self: $1_option_Option'$1_ristretto255_CompressedRistretto'): bool { + $1_vector_$is_empty'$1_ristretto255_CompressedRistretto'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'(self: $1_option_Option'$1_ristretto255_RistrettoPoint'): bool { + $1_vector_$is_empty'$1_ristretto255_RistrettoPoint'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'$1_ristretto255_Scalar'(self: $1_option_Option'$1_ristretto255_Scalar'): bool { + $1_vector_$is_empty'$1_ristretto255_Scalar'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'#0'(self: $1_option_Option'#0'): bool { + $1_vector_$is_empty'#0'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:69:10+97 +function {:inline} $1_option_spec_is_none'#1'(self: $1_option_Option'#1'): bool { + $1_vector_$is_empty'#1'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'u64'(self: $1_option_Option'u64'): bool { + !$1_vector_$is_empty'u64'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'u128'(self: $1_option_Option'u128'): bool { + !$1_vector_$is_empty'u128'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'address'(self: $1_option_Option'address'): bool { + !$1_vector_$is_empty'address'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_string_String'(self: $1_option_Option'$1_string_String'): bool { + !$1_vector_$is_empty'$1_string_String'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): bool { + !$1_vector_$is_empty'$1_aggregator_Aggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''(self: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''): bool { + !$1_vector_$is_empty'$1_aggregator_v2_AggregatorSnapshot'u64''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + !$1_vector_$is_empty'$1_big_vector_BigVector'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_object_DeleteRef'(self: $1_option_Option'$1_object_DeleteRef'): bool { + !$1_vector_$is_empty'$1_object_DeleteRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''(self: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''): bool { + !$1_vector_$is_empty'$1_object_Object'$1_fungible_asset_Metadata''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_object_TransferRef'(self: $1_option_Option'$1_object_TransferRef'): bool { + !$1_vector_$is_empty'$1_object_TransferRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): bool { + !$1_vector_$is_empty'$1_optional_aggregator_Integer'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'(self: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + !$1_vector_$is_empty'$1_optional_aggregator_OptionalAggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_function_info_FunctionInfo'(self: $1_option_Option'$1_function_info_FunctionInfo'): bool { + !$1_vector_$is_empty'$1_function_info_FunctionInfo'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_fungible_asset_TransferRef'(self: $1_option_Option'$1_fungible_asset_TransferRef'): bool { + !$1_vector_$is_empty'$1_fungible_asset_TransferRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_fungible_asset_BurnRef'(self: $1_option_Option'$1_fungible_asset_BurnRef'): bool { + !$1_vector_$is_empty'$1_fungible_asset_BurnRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_fungible_asset_MintRef'(self: $1_option_Option'$1_fungible_asset_MintRef'): bool { + !$1_vector_$is_empty'$1_fungible_asset_MintRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + !$1_vector_$is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_bls12381_AggrOrMultiSignature'(self: $1_option_Option'$1_bls12381_AggrOrMultiSignature'): bool { + !$1_vector_$is_empty'$1_bls12381_AggrOrMultiSignature'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_bls12381_PublicKey'(self: $1_option_Option'$1_bls12381_PublicKey'): bool { + !$1_vector_$is_empty'$1_bls12381_PublicKey'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_bls12381_PublicKeyWithPoP'(self: $1_option_Option'$1_bls12381_PublicKeyWithPoP'): bool { + !$1_vector_$is_empty'$1_bls12381_PublicKeyWithPoP'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_royalty_MutatorRef'(self: $1_option_Option'$1_royalty_MutatorRef'): bool { + !$1_vector_$is_empty'$1_royalty_MutatorRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_royalty_Royalty'(self: $1_option_Option'$1_royalty_Royalty'): bool { + !$1_vector_$is_empty'$1_royalty_Royalty'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_collection_ConcurrentSupply'(self: $1_option_Option'$1_collection_ConcurrentSupply'): bool { + !$1_vector_$is_empty'$1_collection_ConcurrentSupply'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_collection_FixedSupply'(self: $1_option_Option'$1_collection_FixedSupply'): bool { + !$1_vector_$is_empty'$1_collection_FixedSupply'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_object_token_BurnRef'(self: $1_option_Option'$1_object_token_BurnRef'): bool { + !$1_vector_$is_empty'$1_object_token_BurnRef'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_property_map_PropertyValue'(self: $1_option_Option'$1_property_map_PropertyValue'): bool { + !$1_vector_$is_empty'$1_property_map_PropertyValue'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_ristretto255_CompressedRistretto'(self: $1_option_Option'$1_ristretto255_CompressedRistretto'): bool { + !$1_vector_$is_empty'$1_ristretto255_CompressedRistretto'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_ristretto255_RistrettoPoint'(self: $1_option_Option'$1_ristretto255_RistrettoPoint'): bool { + !$1_vector_$is_empty'$1_ristretto255_RistrettoPoint'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'$1_ristretto255_Scalar'(self: $1_option_Option'$1_ristretto255_Scalar'): bool { + !$1_vector_$is_empty'$1_ristretto255_Scalar'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'#0'(self: $1_option_Option'#0'): bool { + !$1_vector_$is_empty'#0'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:82:10+98 +function {:inline} $1_option_spec_is_some'#1'(self: $1_option_Option'#1'): bool { + !$1_vector_$is_empty'#1'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:96:10+118 +function {:inline} $1_option_spec_contains'address'(self: $1_option_Option'address', e: int): bool { + ($1_option_$is_some'address'(self) && $IsEqual'address'($1_option_$borrow'address'(self), e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:96:10+118 +function {:inline} $1_option_spec_contains'#0'(self: $1_option_Option'#0', e: #0): bool { + ($1_option_$is_some'#0'(self) && $IsEqual'#0'($1_option_$borrow'#0'(self), e)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'u64'(self: $1_option_Option'u64'): int { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'u128'(self: $1_option_Option'u128'): int { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'address'(self: $1_option_Option'address'): int { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_string_String'(self: $1_option_Option'$1_string_String'): $1_string_String { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): $1_aggregator_Aggregator { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''(self: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''): $1_aggregator_v2_AggregatorSnapshot'u64' { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): $1_big_vector_BigVector'#0' { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_object_DeleteRef'(self: $1_option_Option'$1_object_DeleteRef'): $1_object_DeleteRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''(self: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''): $1_object_Object'$1_fungible_asset_Metadata' { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_object_TransferRef'(self: $1_option_Option'$1_object_TransferRef'): $1_object_TransferRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_Integer { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'(self: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_optional_aggregator_OptionalAggregator { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_function_info_FunctionInfo'(self: $1_option_Option'$1_function_info_FunctionInfo'): $1_function_info_FunctionInfo { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_fungible_asset_TransferRef'(self: $1_option_Option'$1_fungible_asset_TransferRef'): $1_fungible_asset_TransferRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_fungible_asset_BurnRef'(self: $1_option_Option'$1_fungible_asset_BurnRef'): $1_fungible_asset_BurnRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_fungible_asset_MintRef'(self: $1_option_Option'$1_fungible_asset_MintRef'): $1_fungible_asset_MintRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): $1_on_chain_config_ModifyConfigCapability'#0' { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_bls12381_AggrOrMultiSignature'(self: $1_option_Option'$1_bls12381_AggrOrMultiSignature'): $1_bls12381_AggrOrMultiSignature { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_bls12381_PublicKey'(self: $1_option_Option'$1_bls12381_PublicKey'): $1_bls12381_PublicKey { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_bls12381_PublicKeyWithPoP'(self: $1_option_Option'$1_bls12381_PublicKeyWithPoP'): $1_bls12381_PublicKeyWithPoP { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_royalty_MutatorRef'(self: $1_option_Option'$1_royalty_MutatorRef'): $1_royalty_MutatorRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_royalty_Royalty'(self: $1_option_Option'$1_royalty_Royalty'): $1_royalty_Royalty { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_collection_ConcurrentSupply'(self: $1_option_Option'$1_collection_ConcurrentSupply'): $1_collection_ConcurrentSupply { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_collection_MutatorRef'(self: $1_option_Option'$1_collection_MutatorRef'): $1_collection_MutatorRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_collection_FixedSupply'(self: $1_option_Option'$1_collection_FixedSupply'): $1_collection_FixedSupply { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_object_token_BurnRef'(self: $1_option_Option'$1_object_token_BurnRef'): $1_object_token_BurnRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_object_token_MutatorRef'(self: $1_option_Option'$1_object_token_MutatorRef'): $1_object_token_MutatorRef { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_ristretto255_CompressedRistretto'(self: $1_option_Option'$1_ristretto255_CompressedRistretto'): $1_ristretto255_CompressedRistretto { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'(self: $1_option_Option'$1_ristretto255_RistrettoPoint'): $1_ristretto255_RistrettoPoint { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'$1_ristretto255_Scalar'(self: $1_option_Option'$1_ristretto255_Scalar'): $1_ristretto255_Scalar { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'#0'(self: $1_option_Option'#0'): #0 { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:111:10+84 +function {:inline} $1_option_spec_borrow'#1'(self: $1_option_Option'#1'): #1 { + ReadVec(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'u64'(self: $1_option_Option'u64'): int { + $1_vector_$borrow'u64'(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'address'(self: $1_option_Option'address'): int { + $1_vector_$borrow'address'(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): $1_aggregator_Aggregator { + $1_vector_$borrow'$1_aggregator_Aggregator'(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): $1_big_vector_BigVector'#0' { + $1_vector_$borrow'$1_big_vector_BigVector'#0''(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): $1_optional_aggregator_Integer { + $1_vector_$borrow'$1_optional_aggregator_Integer'(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): $1_on_chain_config_ModifyConfigCapability'#0' { + $1_vector_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +function {:inline} $1_option_$borrow'#0'(self: $1_option_Option'#0'): #0 { + $1_vector_$borrow'#0'(self->$vec, 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'u64'(self: $1_option_Option'u64'): bool { + $1_vector_$is_empty'u64'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): bool { + $1_vector_$is_empty'$1_aggregator_Aggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + $1_vector_$is_empty'$1_big_vector_BigVector'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): bool { + $1_vector_$is_empty'$1_optional_aggregator_Integer'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + $1_vector_$is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +function {:inline} $1_option_$is_none'#1'(self: $1_option_Option'#1'): bool { + $1_vector_$is_empty'#1'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'u64'(self: $1_option_Option'u64'): bool { + !$1_vector_$is_empty'u64'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'address'(self: $1_option_Option'address'): bool { + !$1_vector_$is_empty'address'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'$1_aggregator_Aggregator'(self: $1_option_Option'$1_aggregator_Aggregator'): bool { + !$1_vector_$is_empty'$1_aggregator_Aggregator'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'$1_big_vector_BigVector'#0''(self: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + !$1_vector_$is_empty'$1_big_vector_BigVector'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'$1_optional_aggregator_Integer'(self: $1_option_Option'$1_optional_aggregator_Integer'): bool { + !$1_vector_$is_empty'$1_optional_aggregator_Integer'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'$1_on_chain_config_ModifyConfigCapability'#0''(self: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + !$1_vector_$is_empty'$1_on_chain_config_ModifyConfigCapability'#0''(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'#0'(self: $1_option_Option'#0'): bool { + !$1_vector_$is_empty'#0'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +function {:inline} $1_option_$is_some'#1'(self: $1_option_Option'#1'): bool { + !$1_vector_$is_empty'#1'(self->$vec) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:26:5+91 +function {:inline} $1_option_$none'u8'(): $1_option_Option'u8' { + $1_option_Option'u8'($1_vector_$empty'u8'()) +} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'u8' { + $1_option_Option'u8'($vec: Vec (int)) +} +function {:inline} $Update'$1_option_Option'u8''_vec(s: $1_option_Option'u8', x: Vec (int)): $1_option_Option'u8' { + $1_option_Option'u8'(x) +} +function $IsValid'$1_option_Option'u8''(s: $1_option_Option'u8'): bool { + $IsValid'vec'u8''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'u8''(s1: $1_option_Option'u8', s2: $1_option_Option'u8'): bool { + $IsEqual'vec'u8''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'u64' { + $1_option_Option'u64'($vec: Vec (int)) +} +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''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'u64''(s1: $1_option_Option'u64', s2: $1_option_Option'u64'): bool { + $IsEqual'vec'u64''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'u128' { + $1_option_Option'u128'($vec: Vec (int)) +} +function {:inline} $Update'$1_option_Option'u128''_vec(s: $1_option_Option'u128', x: Vec (int)): $1_option_Option'u128' { + $1_option_Option'u128'(x) +} +function $IsValid'$1_option_Option'u128''(s: $1_option_Option'u128'): bool { + $IsValid'vec'u128''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'u128''(s1: $1_option_Option'u128', s2: $1_option_Option'u128'): bool { + $IsEqual'vec'u128''(s1->$vec, s2->$vec)} + +// struct option::Option
at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'address' { + $1_option_Option'address'($vec: Vec (int)) +} +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''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'address''(s1: $1_option_Option'address', s2: $1_option_Option'address'): bool { + $IsEqual'vec'address''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_string_String' { + $1_option_Option'$1_string_String'($vec: Vec ($1_string_String)) +} +function {:inline} $Update'$1_option_Option'$1_string_String''_vec(s: $1_option_Option'$1_string_String', x: Vec ($1_string_String)): $1_option_Option'$1_string_String' { + $1_option_Option'$1_string_String'(x) +} +function $IsValid'$1_option_Option'$1_string_String''(s: $1_option_Option'$1_string_String'): bool { + $IsValid'vec'$1_string_String''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_string_String''(s1: $1_option_Option'$1_string_String', s2: $1_option_Option'$1_string_String'): bool { + $IsEqual'vec'$1_string_String''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_type_info_TypeInfo' { + $1_option_Option'$1_type_info_TypeInfo'($vec: Vec ($1_type_info_TypeInfo)) +} +function {:inline} $Update'$1_option_Option'$1_type_info_TypeInfo''_vec(s: $1_option_Option'$1_type_info_TypeInfo', x: Vec ($1_type_info_TypeInfo)): $1_option_Option'$1_type_info_TypeInfo' { + $1_option_Option'$1_type_info_TypeInfo'(x) +} +function $IsValid'$1_option_Option'$1_type_info_TypeInfo''(s: $1_option_Option'$1_type_info_TypeInfo'): bool { + $IsValid'vec'$1_type_info_TypeInfo''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_type_info_TypeInfo''(s1: $1_option_Option'$1_type_info_TypeInfo', s2: $1_option_Option'$1_type_info_TypeInfo'): bool { + $IsEqual'vec'$1_type_info_TypeInfo''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_ed25519_ValidatedPublicKey'($vec: Vec ($1_ed25519_ValidatedPublicKey)) +} +function {:inline} $Update'$1_option_Option'$1_ed25519_ValidatedPublicKey''_vec(s: $1_option_Option'$1_ed25519_ValidatedPublicKey', x: Vec ($1_ed25519_ValidatedPublicKey)): $1_option_Option'$1_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_ed25519_ValidatedPublicKey'(x) +} +function $IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''(s: $1_option_Option'$1_ed25519_ValidatedPublicKey'): bool { + $IsValid'vec'$1_ed25519_ValidatedPublicKey''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''(s1: $1_option_Option'$1_ed25519_ValidatedPublicKey', s2: $1_option_Option'$1_ed25519_ValidatedPublicKey'): bool { + $IsEqual'vec'$1_ed25519_ValidatedPublicKey''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_multi_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'($vec: Vec ($1_multi_ed25519_ValidatedPublicKey)) +} +function {:inline} $Update'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''_vec(s: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey', x: Vec ($1_multi_ed25519_ValidatedPublicKey)): $1_option_Option'$1_multi_ed25519_ValidatedPublicKey' { + $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'(x) +} +function $IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(s: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'): bool { + $IsValid'vec'$1_multi_ed25519_ValidatedPublicKey''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(s1: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey', s2: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'): bool { + $IsEqual'vec'$1_multi_ed25519_ValidatedPublicKey''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_aggregator_Aggregator' { + $1_option_Option'$1_aggregator_Aggregator'($vec: Vec ($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''(s->$vec) +} +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''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'' { + $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''($vec: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')) +} +function {:inline} $Update'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''_vec(s: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'', x: Vec ($1_aggregator_v2_AggregatorSnapshot'u64')): $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'' { + $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''(x) +} +function $IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(s: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''): bool { + $IsValid'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(s1: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'', s2: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''): bool { + $IsEqual'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_any_Any' { + $1_option_Option'$1_any_Any'($vec: Vec ($1_any_Any)) +} +function {:inline} $Update'$1_option_Option'$1_any_Any''_vec(s: $1_option_Option'$1_any_Any', x: Vec ($1_any_Any)): $1_option_Option'$1_any_Any' { + $1_option_Option'$1_any_Any'(x) +} +function $IsValid'$1_option_Option'$1_any_Any''(s: $1_option_Option'$1_any_Any'): bool { + $IsValid'vec'$1_any_Any''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_any_Any''(s1: $1_option_Option'$1_any_Any', s2: $1_option_Option'$1_any_Any'): bool { + $IsEqual'vec'$1_any_Any''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_big_vector_BigVector'#0'' { + $1_option_Option'$1_big_vector_BigVector'#0''($vec: Vec ($1_big_vector_BigVector'#0')) +} +function {:inline} $Update'$1_option_Option'$1_big_vector_BigVector'#0'''_vec(s: $1_option_Option'$1_big_vector_BigVector'#0'', x: Vec ($1_big_vector_BigVector'#0')): $1_option_Option'$1_big_vector_BigVector'#0'' { + $1_option_Option'$1_big_vector_BigVector'#0''(x) +} +function $IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''(s: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + $IsValid'vec'$1_big_vector_BigVector'#0'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_big_vector_BigVector'#0'''(s1: $1_option_Option'$1_big_vector_BigVector'#0'', s2: $1_option_Option'$1_big_vector_BigVector'#0''): bool { + $IsEqual'vec'$1_big_vector_BigVector'#0'''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_transaction_context_EntryFunctionPayload' { + $1_option_Option'$1_transaction_context_EntryFunctionPayload'($vec: Vec ($1_transaction_context_EntryFunctionPayload)) +} +function {:inline} $Update'$1_option_Option'$1_transaction_context_EntryFunctionPayload''_vec(s: $1_option_Option'$1_transaction_context_EntryFunctionPayload', x: Vec ($1_transaction_context_EntryFunctionPayload)): $1_option_Option'$1_transaction_context_EntryFunctionPayload' { + $1_option_Option'$1_transaction_context_EntryFunctionPayload'(x) +} +function $IsValid'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(s: $1_option_Option'$1_transaction_context_EntryFunctionPayload'): bool { + $IsValid'vec'$1_transaction_context_EntryFunctionPayload''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(s1: $1_option_Option'$1_transaction_context_EntryFunctionPayload', s2: $1_option_Option'$1_transaction_context_EntryFunctionPayload'): bool { + $IsEqual'vec'$1_transaction_context_EntryFunctionPayload''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_transaction_context_MultisigPayload' { + $1_option_Option'$1_transaction_context_MultisigPayload'($vec: Vec ($1_transaction_context_MultisigPayload)) +} +function {:inline} $Update'$1_option_Option'$1_transaction_context_MultisigPayload''_vec(s: $1_option_Option'$1_transaction_context_MultisigPayload', x: Vec ($1_transaction_context_MultisigPayload)): $1_option_Option'$1_transaction_context_MultisigPayload' { + $1_option_Option'$1_transaction_context_MultisigPayload'(x) +} +function $IsValid'$1_option_Option'$1_transaction_context_MultisigPayload''(s: $1_option_Option'$1_transaction_context_MultisigPayload'): bool { + $IsValid'vec'$1_transaction_context_MultisigPayload''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_transaction_context_MultisigPayload''(s1: $1_option_Option'$1_transaction_context_MultisigPayload', s2: $1_option_Option'$1_transaction_context_MultisigPayload'): bool { + $IsEqual'vec'$1_transaction_context_MultisigPayload''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_object_DeleteRef' { + $1_option_Option'$1_object_DeleteRef'($vec: Vec ($1_object_DeleteRef)) +} +function {:inline} $Update'$1_option_Option'$1_object_DeleteRef''_vec(s: $1_option_Option'$1_object_DeleteRef', x: Vec ($1_object_DeleteRef)): $1_option_Option'$1_object_DeleteRef' { + $1_option_Option'$1_object_DeleteRef'(x) +} +function $IsValid'$1_option_Option'$1_object_DeleteRef''(s: $1_option_Option'$1_object_DeleteRef'): bool { + $IsValid'vec'$1_object_DeleteRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_object_DeleteRef''(s1: $1_option_Option'$1_object_DeleteRef', s2: $1_option_Option'$1_object_DeleteRef'): bool { + $IsEqual'vec'$1_object_DeleteRef''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'' { + $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''($vec: Vec ($1_object_Object'$1_fungible_asset_Metadata')) +} +function {:inline} $Update'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''_vec(s: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'', x: Vec ($1_object_Object'$1_fungible_asset_Metadata')): $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'' { + $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''(x) +} +function $IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(s: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''): bool { + $IsValid'vec'$1_object_Object'$1_fungible_asset_Metadata'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(s1: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'', s2: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''): bool { + $IsEqual'vec'$1_object_Object'$1_fungible_asset_Metadata'''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_object_TransferRef' { + $1_option_Option'$1_object_TransferRef'($vec: Vec ($1_object_TransferRef)) +} +function {:inline} $Update'$1_option_Option'$1_object_TransferRef''_vec(s: $1_option_Option'$1_object_TransferRef', x: Vec ($1_object_TransferRef)): $1_option_Option'$1_object_TransferRef' { + $1_option_Option'$1_object_TransferRef'(x) +} +function $IsValid'$1_option_Option'$1_object_TransferRef''(s: $1_option_Option'$1_object_TransferRef'): bool { + $IsValid'vec'$1_object_TransferRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_object_TransferRef''(s1: $1_option_Option'$1_object_TransferRef', s2: $1_option_Option'$1_object_TransferRef'): bool { + $IsEqual'vec'$1_object_TransferRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_optional_aggregator_Integer' { + $1_option_Option'$1_optional_aggregator_Integer'($vec: Vec ($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''(s->$vec) +} +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''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_optional_aggregator_OptionalAggregator' { + $1_option_Option'$1_optional_aggregator_OptionalAggregator'($vec: Vec ($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''(s->$vec) +} +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''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_function_info_FunctionInfo' { + $1_option_Option'$1_function_info_FunctionInfo'($vec: Vec ($1_function_info_FunctionInfo)) +} +function {:inline} $Update'$1_option_Option'$1_function_info_FunctionInfo''_vec(s: $1_option_Option'$1_function_info_FunctionInfo', x: Vec ($1_function_info_FunctionInfo)): $1_option_Option'$1_function_info_FunctionInfo' { + $1_option_Option'$1_function_info_FunctionInfo'(x) +} +function $IsValid'$1_option_Option'$1_function_info_FunctionInfo''(s: $1_option_Option'$1_function_info_FunctionInfo'): bool { + $IsValid'vec'$1_function_info_FunctionInfo''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''(s1: $1_option_Option'$1_function_info_FunctionInfo', s2: $1_option_Option'$1_function_info_FunctionInfo'): bool { + $IsEqual'vec'$1_function_info_FunctionInfo''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_fungible_asset_TransferRef' { + $1_option_Option'$1_fungible_asset_TransferRef'($vec: Vec ($1_fungible_asset_TransferRef)) +} +function {:inline} $Update'$1_option_Option'$1_fungible_asset_TransferRef''_vec(s: $1_option_Option'$1_fungible_asset_TransferRef', x: Vec ($1_fungible_asset_TransferRef)): $1_option_Option'$1_fungible_asset_TransferRef' { + $1_option_Option'$1_fungible_asset_TransferRef'(x) +} +function $IsValid'$1_option_Option'$1_fungible_asset_TransferRef''(s: $1_option_Option'$1_fungible_asset_TransferRef'): bool { + $IsValid'vec'$1_fungible_asset_TransferRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''(s1: $1_option_Option'$1_fungible_asset_TransferRef', s2: $1_option_Option'$1_fungible_asset_TransferRef'): bool { + $IsEqual'vec'$1_fungible_asset_TransferRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_fungible_asset_BurnRef' { + $1_option_Option'$1_fungible_asset_BurnRef'($vec: Vec ($1_fungible_asset_BurnRef)) +} +function {:inline} $Update'$1_option_Option'$1_fungible_asset_BurnRef''_vec(s: $1_option_Option'$1_fungible_asset_BurnRef', x: Vec ($1_fungible_asset_BurnRef)): $1_option_Option'$1_fungible_asset_BurnRef' { + $1_option_Option'$1_fungible_asset_BurnRef'(x) +} +function $IsValid'$1_option_Option'$1_fungible_asset_BurnRef''(s: $1_option_Option'$1_fungible_asset_BurnRef'): bool { + $IsValid'vec'$1_fungible_asset_BurnRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''(s1: $1_option_Option'$1_fungible_asset_BurnRef', s2: $1_option_Option'$1_fungible_asset_BurnRef'): bool { + $IsEqual'vec'$1_fungible_asset_BurnRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_fungible_asset_MintRef' { + $1_option_Option'$1_fungible_asset_MintRef'($vec: Vec ($1_fungible_asset_MintRef)) +} +function {:inline} $Update'$1_option_Option'$1_fungible_asset_MintRef''_vec(s: $1_option_Option'$1_fungible_asset_MintRef', x: Vec ($1_fungible_asset_MintRef)): $1_option_Option'$1_fungible_asset_MintRef' { + $1_option_Option'$1_fungible_asset_MintRef'(x) +} +function $IsValid'$1_option_Option'$1_fungible_asset_MintRef''(s: $1_option_Option'$1_fungible_asset_MintRef'): bool { + $IsValid'vec'$1_fungible_asset_MintRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''(s1: $1_option_Option'$1_fungible_asset_MintRef', s2: $1_option_Option'$1_fungible_asset_MintRef'): bool { + $IsEqual'vec'$1_fungible_asset_MintRef''(s1->$vec, s2->$vec)} + +// struct option::Option>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($vec: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +} +function {:inline} $Update'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''_vec(s: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''', x: Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(x) +} +function $IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''): bool { + $IsValid'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s1: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''', s2: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''): bool { + $IsEqual'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''($vec: Vec ($1_on_chain_config_ModifyConfigCapability'#0')) +} +function {:inline} $Update'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''_vec(s: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'', x: Vec ($1_on_chain_config_ModifyConfigCapability'#0')): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'' { + $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''(x) +} +function $IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(s: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + $IsValid'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(s1: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'', s2: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): bool { + $IsEqual'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_bls12381_AggrOrMultiSignature' { + $1_option_Option'$1_bls12381_AggrOrMultiSignature'($vec: Vec ($1_bls12381_AggrOrMultiSignature)) +} +function {:inline} $Update'$1_option_Option'$1_bls12381_AggrOrMultiSignature''_vec(s: $1_option_Option'$1_bls12381_AggrOrMultiSignature', x: Vec ($1_bls12381_AggrOrMultiSignature)): $1_option_Option'$1_bls12381_AggrOrMultiSignature' { + $1_option_Option'$1_bls12381_AggrOrMultiSignature'(x) +} +function $IsValid'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(s: $1_option_Option'$1_bls12381_AggrOrMultiSignature'): bool { + $IsValid'vec'$1_bls12381_AggrOrMultiSignature''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(s1: $1_option_Option'$1_bls12381_AggrOrMultiSignature', s2: $1_option_Option'$1_bls12381_AggrOrMultiSignature'): bool { + $IsEqual'vec'$1_bls12381_AggrOrMultiSignature''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_bls12381_PublicKey' { + $1_option_Option'$1_bls12381_PublicKey'($vec: Vec ($1_bls12381_PublicKey)) +} +function {:inline} $Update'$1_option_Option'$1_bls12381_PublicKey''_vec(s: $1_option_Option'$1_bls12381_PublicKey', x: Vec ($1_bls12381_PublicKey)): $1_option_Option'$1_bls12381_PublicKey' { + $1_option_Option'$1_bls12381_PublicKey'(x) +} +function $IsValid'$1_option_Option'$1_bls12381_PublicKey''(s: $1_option_Option'$1_bls12381_PublicKey'): bool { + $IsValid'vec'$1_bls12381_PublicKey''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_bls12381_PublicKey''(s1: $1_option_Option'$1_bls12381_PublicKey', s2: $1_option_Option'$1_bls12381_PublicKey'): bool { + $IsEqual'vec'$1_bls12381_PublicKey''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_bls12381_PublicKeyWithPoP' { + $1_option_Option'$1_bls12381_PublicKeyWithPoP'($vec: Vec ($1_bls12381_PublicKeyWithPoP)) +} +function {:inline} $Update'$1_option_Option'$1_bls12381_PublicKeyWithPoP''_vec(s: $1_option_Option'$1_bls12381_PublicKeyWithPoP', x: Vec ($1_bls12381_PublicKeyWithPoP)): $1_option_Option'$1_bls12381_PublicKeyWithPoP' { + $1_option_Option'$1_bls12381_PublicKeyWithPoP'(x) +} +function $IsValid'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(s: $1_option_Option'$1_bls12381_PublicKeyWithPoP'): bool { + $IsValid'vec'$1_bls12381_PublicKeyWithPoP''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(s1: $1_option_Option'$1_bls12381_PublicKeyWithPoP', s2: $1_option_Option'$1_bls12381_PublicKeyWithPoP'): bool { + $IsEqual'vec'$1_bls12381_PublicKeyWithPoP''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_royalty_MutatorRef' { + $1_option_Option'$1_royalty_MutatorRef'($vec: Vec ($1_royalty_MutatorRef)) +} +function {:inline} $Update'$1_option_Option'$1_royalty_MutatorRef''_vec(s: $1_option_Option'$1_royalty_MutatorRef', x: Vec ($1_royalty_MutatorRef)): $1_option_Option'$1_royalty_MutatorRef' { + $1_option_Option'$1_royalty_MutatorRef'(x) +} +function $IsValid'$1_option_Option'$1_royalty_MutatorRef''(s: $1_option_Option'$1_royalty_MutatorRef'): bool { + $IsValid'vec'$1_royalty_MutatorRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_royalty_MutatorRef''(s1: $1_option_Option'$1_royalty_MutatorRef', s2: $1_option_Option'$1_royalty_MutatorRef'): bool { + $IsEqual'vec'$1_royalty_MutatorRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_royalty_Royalty' { + $1_option_Option'$1_royalty_Royalty'($vec: Vec ($1_royalty_Royalty)) +} +function {:inline} $Update'$1_option_Option'$1_royalty_Royalty''_vec(s: $1_option_Option'$1_royalty_Royalty', x: Vec ($1_royalty_Royalty)): $1_option_Option'$1_royalty_Royalty' { + $1_option_Option'$1_royalty_Royalty'(x) +} +function $IsValid'$1_option_Option'$1_royalty_Royalty''(s: $1_option_Option'$1_royalty_Royalty'): bool { + $IsValid'vec'$1_royalty_Royalty''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_royalty_Royalty''(s1: $1_option_Option'$1_royalty_Royalty', s2: $1_option_Option'$1_royalty_Royalty'): bool { + $IsEqual'vec'$1_royalty_Royalty''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_collection_ConcurrentSupply' { + $1_option_Option'$1_collection_ConcurrentSupply'($vec: Vec ($1_collection_ConcurrentSupply)) +} +function {:inline} $Update'$1_option_Option'$1_collection_ConcurrentSupply''_vec(s: $1_option_Option'$1_collection_ConcurrentSupply', x: Vec ($1_collection_ConcurrentSupply)): $1_option_Option'$1_collection_ConcurrentSupply' { + $1_option_Option'$1_collection_ConcurrentSupply'(x) +} +function $IsValid'$1_option_Option'$1_collection_ConcurrentSupply''(s: $1_option_Option'$1_collection_ConcurrentSupply'): bool { + $IsValid'vec'$1_collection_ConcurrentSupply''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_collection_ConcurrentSupply''(s1: $1_option_Option'$1_collection_ConcurrentSupply', s2: $1_option_Option'$1_collection_ConcurrentSupply'): bool { + $IsEqual'vec'$1_collection_ConcurrentSupply''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_collection_MutatorRef' { + $1_option_Option'$1_collection_MutatorRef'($vec: Vec ($1_collection_MutatorRef)) +} +function {:inline} $Update'$1_option_Option'$1_collection_MutatorRef''_vec(s: $1_option_Option'$1_collection_MutatorRef', x: Vec ($1_collection_MutatorRef)): $1_option_Option'$1_collection_MutatorRef' { + $1_option_Option'$1_collection_MutatorRef'(x) +} +function $IsValid'$1_option_Option'$1_collection_MutatorRef''(s: $1_option_Option'$1_collection_MutatorRef'): bool { + $IsValid'vec'$1_collection_MutatorRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_collection_MutatorRef''(s1: $1_option_Option'$1_collection_MutatorRef', s2: $1_option_Option'$1_collection_MutatorRef'): bool { + $IsEqual'vec'$1_collection_MutatorRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_collection_FixedSupply' { + $1_option_Option'$1_collection_FixedSupply'($vec: Vec ($1_collection_FixedSupply)) +} +function {:inline} $Update'$1_option_Option'$1_collection_FixedSupply''_vec(s: $1_option_Option'$1_collection_FixedSupply', x: Vec ($1_collection_FixedSupply)): $1_option_Option'$1_collection_FixedSupply' { + $1_option_Option'$1_collection_FixedSupply'(x) +} +function $IsValid'$1_option_Option'$1_collection_FixedSupply''(s: $1_option_Option'$1_collection_FixedSupply'): bool { + $IsValid'vec'$1_collection_FixedSupply''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_collection_FixedSupply''(s1: $1_option_Option'$1_collection_FixedSupply', s2: $1_option_Option'$1_collection_FixedSupply'): bool { + $IsEqual'vec'$1_collection_FixedSupply''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_crypto_algebra_Element'#0'' { + $1_option_Option'$1_crypto_algebra_Element'#0''($vec: Vec ($1_crypto_algebra_Element'#0')) +} +function {:inline} $Update'$1_option_Option'$1_crypto_algebra_Element'#0'''_vec(s: $1_option_Option'$1_crypto_algebra_Element'#0'', x: Vec ($1_crypto_algebra_Element'#0')): $1_option_Option'$1_crypto_algebra_Element'#0'' { + $1_option_Option'$1_crypto_algebra_Element'#0''(x) +} +function $IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''(s: $1_option_Option'$1_crypto_algebra_Element'#0''): bool { + $IsValid'vec'$1_crypto_algebra_Element'#0'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''(s1: $1_option_Option'$1_crypto_algebra_Element'#0'', s2: $1_option_Option'$1_crypto_algebra_Element'#0''): bool { + $IsEqual'vec'$1_crypto_algebra_Element'#0'''(s1->$vec, s2->$vec)} + +// struct option::Option> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_crypto_algebra_Element'#1'' { + $1_option_Option'$1_crypto_algebra_Element'#1''($vec: Vec ($1_crypto_algebra_Element'#1')) +} +function {:inline} $Update'$1_option_Option'$1_crypto_algebra_Element'#1'''_vec(s: $1_option_Option'$1_crypto_algebra_Element'#1'', x: Vec ($1_crypto_algebra_Element'#1')): $1_option_Option'$1_crypto_algebra_Element'#1'' { + $1_option_Option'$1_crypto_algebra_Element'#1''(x) +} +function $IsValid'$1_option_Option'$1_crypto_algebra_Element'#1'''(s: $1_option_Option'$1_crypto_algebra_Element'#1''): bool { + $IsValid'vec'$1_crypto_algebra_Element'#1'''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#1'''(s1: $1_option_Option'$1_crypto_algebra_Element'#1'', s2: $1_option_Option'$1_crypto_algebra_Element'#1''): bool { + $IsEqual'vec'$1_crypto_algebra_Element'#1'''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_object_token_BurnRef' { + $1_option_Option'$1_object_token_BurnRef'($vec: Vec ($1_object_token_BurnRef)) +} +function {:inline} $Update'$1_option_Option'$1_object_token_BurnRef''_vec(s: $1_option_Option'$1_object_token_BurnRef', x: Vec ($1_object_token_BurnRef)): $1_option_Option'$1_object_token_BurnRef' { + $1_option_Option'$1_object_token_BurnRef'(x) +} +function $IsValid'$1_option_Option'$1_object_token_BurnRef''(s: $1_option_Option'$1_object_token_BurnRef'): bool { + $IsValid'vec'$1_object_token_BurnRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_object_token_BurnRef''(s1: $1_option_Option'$1_object_token_BurnRef', s2: $1_option_Option'$1_object_token_BurnRef'): bool { + $IsEqual'vec'$1_object_token_BurnRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_object_token_MutatorRef' { + $1_option_Option'$1_object_token_MutatorRef'($vec: Vec ($1_object_token_MutatorRef)) +} +function {:inline} $Update'$1_option_Option'$1_object_token_MutatorRef''_vec(s: $1_option_Option'$1_object_token_MutatorRef', x: Vec ($1_object_token_MutatorRef)): $1_option_Option'$1_object_token_MutatorRef' { + $1_option_Option'$1_object_token_MutatorRef'(x) +} +function $IsValid'$1_option_Option'$1_object_token_MutatorRef''(s: $1_option_Option'$1_object_token_MutatorRef'): bool { + $IsValid'vec'$1_object_token_MutatorRef''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_object_token_MutatorRef''(s1: $1_option_Option'$1_object_token_MutatorRef', s2: $1_option_Option'$1_object_token_MutatorRef'): bool { + $IsEqual'vec'$1_object_token_MutatorRef''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_property_map_PropertyValue' { + $1_option_Option'$1_property_map_PropertyValue'($vec: Vec ($1_property_map_PropertyValue)) +} +function {:inline} $Update'$1_option_Option'$1_property_map_PropertyValue''_vec(s: $1_option_Option'$1_property_map_PropertyValue', x: Vec ($1_property_map_PropertyValue)): $1_option_Option'$1_property_map_PropertyValue' { + $1_option_Option'$1_property_map_PropertyValue'(x) +} +function $IsValid'$1_option_Option'$1_property_map_PropertyValue''(s: $1_option_Option'$1_property_map_PropertyValue'): bool { + $IsValid'vec'$1_property_map_PropertyValue''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_property_map_PropertyValue''(s1: $1_option_Option'$1_property_map_PropertyValue', s2: $1_option_Option'$1_property_map_PropertyValue'): bool { + $IsEqual'vec'$1_property_map_PropertyValue''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_CompressedRistretto' { + $1_option_Option'$1_ristretto255_CompressedRistretto'($vec: Vec ($1_ristretto255_CompressedRistretto)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_CompressedRistretto''_vec(s: $1_option_Option'$1_ristretto255_CompressedRistretto', x: Vec ($1_ristretto255_CompressedRistretto)): $1_option_Option'$1_ristretto255_CompressedRistretto' { + $1_option_Option'$1_ristretto255_CompressedRistretto'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''(s: $1_option_Option'$1_ristretto255_CompressedRistretto'): bool { + $IsValid'vec'$1_ristretto255_CompressedRistretto''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_CompressedRistretto''(s1: $1_option_Option'$1_ristretto255_CompressedRistretto', s2: $1_option_Option'$1_ristretto255_CompressedRistretto'): bool { + $IsEqual'vec'$1_ristretto255_CompressedRistretto''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_RistrettoPoint' { + $1_option_Option'$1_ristretto255_RistrettoPoint'($vec: Vec ($1_ristretto255_RistrettoPoint)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_RistrettoPoint''_vec(s: $1_option_Option'$1_ristretto255_RistrettoPoint', x: Vec ($1_ristretto255_RistrettoPoint)): $1_option_Option'$1_ristretto255_RistrettoPoint' { + $1_option_Option'$1_ristretto255_RistrettoPoint'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''(s: $1_option_Option'$1_ristretto255_RistrettoPoint'): bool { + $IsValid'vec'$1_ristretto255_RistrettoPoint''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''(s1: $1_option_Option'$1_ristretto255_RistrettoPoint', s2: $1_option_Option'$1_ristretto255_RistrettoPoint'): bool { + $IsEqual'vec'$1_ristretto255_RistrettoPoint''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_Scalar' { + $1_option_Option'$1_ristretto255_Scalar'($vec: Vec ($1_ristretto255_Scalar)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_Scalar''_vec(s: $1_option_Option'$1_ristretto255_Scalar', x: Vec ($1_ristretto255_Scalar)): $1_option_Option'$1_ristretto255_Scalar' { + $1_option_Option'$1_ristretto255_Scalar'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_Scalar''(s: $1_option_Option'$1_ristretto255_Scalar'): bool { + $IsValid'vec'$1_ristretto255_Scalar''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_Scalar''(s1: $1_option_Option'$1_ristretto255_Scalar', s2: $1_option_Option'$1_ristretto255_Scalar'): bool { + $IsEqual'vec'$1_ristretto255_Scalar''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_pedersen_Commitment' { + $1_option_Option'$1_ristretto255_pedersen_Commitment'($vec: Vec ($1_ristretto255_pedersen_Commitment)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_pedersen_Commitment''_vec(s: $1_option_Option'$1_ristretto255_pedersen_Commitment', x: Vec ($1_ristretto255_pedersen_Commitment)): $1_option_Option'$1_ristretto255_pedersen_Commitment' { + $1_option_Option'$1_ristretto255_pedersen_Commitment'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_pedersen_Commitment''(s: $1_option_Option'$1_ristretto255_pedersen_Commitment'): bool { + $IsValid'vec'$1_ristretto255_pedersen_Commitment''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_pedersen_Commitment''(s1: $1_option_Option'$1_ristretto255_pedersen_Commitment', s2: $1_option_Option'$1_ristretto255_pedersen_Commitment'): bool { + $IsEqual'vec'$1_ristretto255_pedersen_Commitment''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_elgamal_Ciphertext' { + $1_option_Option'$1_ristretto255_elgamal_Ciphertext'($vec: Vec ($1_ristretto255_elgamal_Ciphertext)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''_vec(s: $1_option_Option'$1_ristretto255_elgamal_Ciphertext', x: Vec ($1_ristretto255_elgamal_Ciphertext)): $1_option_Option'$1_ristretto255_elgamal_Ciphertext' { + $1_option_Option'$1_ristretto255_elgamal_Ciphertext'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(s: $1_option_Option'$1_ristretto255_elgamal_Ciphertext'): bool { + $IsValid'vec'$1_ristretto255_elgamal_Ciphertext''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(s1: $1_option_Option'$1_ristretto255_elgamal_Ciphertext', s2: $1_option_Option'$1_ristretto255_elgamal_Ciphertext'): bool { + $IsEqual'vec'$1_ristretto255_elgamal_Ciphertext''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey' { + $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'($vec: Vec ($1_ristretto255_elgamal_CompressedPubkey)) +} +function {:inline} $Update'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''_vec(s: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey', x: Vec ($1_ristretto255_elgamal_CompressedPubkey)): $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey' { + $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'(x) +} +function $IsValid'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(s: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'): bool { + $IsValid'vec'$1_ristretto255_elgamal_CompressedPubkey''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(s1: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey', s2: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'): bool { + $IsEqual'vec'$1_ristretto255_elgamal_CompressedPubkey''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_secp256k1_ECDSARawPublicKey' { + $1_option_Option'$1_secp256k1_ECDSARawPublicKey'($vec: Vec ($1_secp256k1_ECDSARawPublicKey)) +} +function {:inline} $Update'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''_vec(s: $1_option_Option'$1_secp256k1_ECDSARawPublicKey', x: Vec ($1_secp256k1_ECDSARawPublicKey)): $1_option_Option'$1_secp256k1_ECDSARawPublicKey' { + $1_option_Option'$1_secp256k1_ECDSARawPublicKey'(x) +} +function $IsValid'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(s: $1_option_Option'$1_secp256k1_ECDSARawPublicKey'): bool { + $IsValid'vec'$1_secp256k1_ECDSARawPublicKey''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(s1: $1_option_Option'$1_secp256k1_ECDSARawPublicKey', s2: $1_option_Option'$1_secp256k1_ECDSARawPublicKey'): bool { + $IsEqual'vec'$1_secp256k1_ECDSARawPublicKey''(s1->$vec, s2->$vec)} + +// struct option::Option at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'$1_token_WithdrawCapability' { + $1_option_Option'$1_token_WithdrawCapability'($vec: Vec ($1_token_WithdrawCapability)) +} +function {:inline} $Update'$1_option_Option'$1_token_WithdrawCapability''_vec(s: $1_option_Option'$1_token_WithdrawCapability', x: Vec ($1_token_WithdrawCapability)): $1_option_Option'$1_token_WithdrawCapability' { + $1_option_Option'$1_token_WithdrawCapability'(x) +} +function $IsValid'$1_option_Option'$1_token_WithdrawCapability''(s: $1_option_Option'$1_token_WithdrawCapability'): bool { + $IsValid'vec'$1_token_WithdrawCapability''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'$1_token_WithdrawCapability''(s1: $1_option_Option'$1_token_WithdrawCapability', s2: $1_option_Option'$1_token_WithdrawCapability'): bool { + $IsEqual'vec'$1_token_WithdrawCapability''(s1->$vec, s2->$vec)} + +// struct option::Option<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'#0' { + $1_option_Option'#0'($vec: Vec (#0)) +} +function {:inline} $Update'$1_option_Option'#0''_vec(s: $1_option_Option'#0', x: Vec (#0)): $1_option_Option'#0' { + $1_option_Option'#0'(x) +} +function $IsValid'$1_option_Option'#0''(s: $1_option_Option'#0'): bool { + $IsValid'vec'#0''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'#0''(s1: $1_option_Option'#0', s2: $1_option_Option'#0'): bool { + $IsEqual'vec'#0''(s1->$vec, s2->$vec)} + +// struct option::Option<#1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:7:5+81 +datatype $1_option_Option'#1' { + $1_option_Option'#1'($vec: Vec (#1)) +} +function {:inline} $Update'$1_option_Option'#1''_vec(s: $1_option_Option'#1', x: Vec (#1)): $1_option_Option'#1' { + $1_option_Option'#1'(x) +} +function $IsValid'$1_option_Option'#1''(s: $1_option_Option'#1'): bool { + $IsValid'vec'#1''(s->$vec) +} +function {:inline} $IsEqual'$1_option_Option'#1''(s1: $1_option_Option'#1', s2: $1_option_Option'#1'): bool { + $IsEqual'vec'#1''(s1->$vec, s2->$vec)} + +// fun option::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:88:5+126 +procedure {:timeLimit 80} $1_option_contains$verify(_$t0: $1_option_Option'#0', _$t1: #0) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (#0); + var $t3: bool; + var $t4: int; + var $t0: $1_option_Option'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:88:5+1 + assume {:print "$at(11,2862,2863)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:88:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:88:5+1 + assume {:print "$track_local(4,3,0):", $t0} $t0 == $t0; + + // trace_local[e_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:88:5+1 + assume {:print "$track_local(4,3,1):", $t1} $t1 == $t1; + + // $t2 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:89:26+9 + assume {:print "$at(11,2965,2974)"} true; + $t2 := $t0->$vec; + + // $t3 := vector::contains<#0>($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:89:9+34 + call $t3 := $1_vector_contains'#0'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(11,2948,2982)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,3):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:89:9+34 + assume {:print "$track_return(4,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:90:5+1 + assume {:print "$at(11,2987,2988)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:93:9+16 + assume {:print "$at(11,3040,3056)"} true; + assert {:msg "assert_failed(11,3040,3056): function does not abort under this condition"} + !false; + + // assert Eq($t3, option::spec_contains<#0>($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:94:9+45 + assume {:print "$at(11,3065,3110)"} true; + assert {:msg "assert_failed(11,3065,3110): post-condition does not hold"} + $IsEqual'bool'($t3, $1_option_spec_contains'#0'($t0, $t1)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:94:9+45 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:90:5+1 + assume {:print "$at(11,2987,2988)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:91:5+123 + assume {:print "$at(11,2993,3116)"} true; + assert {:msg "assert_failed(11,2993,3116): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:91:5+123 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+154 +procedure {:timeLimit 80} $1_option_borrow$verify(_$t0: $1_option_Option'#0') returns ($ret0: #0) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: Vec (#0); + var $t5: int; + var $t6: #0; + var $t0: $1_option_Option'#0'; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+1 + assume {:print "$at(11,3362,3363)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:102:5+1 + assume {:print "$track_local(4,0,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: option::is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:17+13 + assume {:print "$at(11,3441,3454)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:17+13 + assume $IsValid'bool'($t1); + + // assume Eq($t1, option::spec_is_some<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:17+13 + assume $IsEqual'bool'($t1, $1_option_spec_is_some'#0'($t0)); + + // $t1 := opaque end: option::is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:17+13 + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 + assume {:print "$at(11,3433,3472)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 +L0: + + // $t2 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:32+15 + assume {:print "$at(11,3456,3471)"} true; + $t2 := 262145; + assume $IsValid'u64'($t2); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 + assume {:print "$at(11,3433,3472)"} true; + assume {:print "$track_abort(4,0):", $t2} $t2 == $t2; + + // $t3 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 + $t3 := $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:103:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:104:25+4 + assume {:print "$at(11,3498,3502)"} true; +L2: + + // $t4 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:104:24+9 + assume {:print "$at(11,3497,3506)"} true; + $t4 := $t0->$vec; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:104:35+1 + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := vector::borrow<#0>($t4, $t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:104:9+28 + call $t6 := $1_vector_borrow'#0'($t4, $t5); + if ($abort_flag) { + assume {:print "$at(11,3482,3510)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(4,0):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:104:9+28 + assume {:print "$track_return(4,0,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:105:5+1 + assume {:print "$at(11,3515,3516)"} true; +L3: + + // assert Not(option::spec_is_none[]<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:354:9+50 + assume {:print "$at(11,12030,12080)"} true; + assert {:msg "assert_failed(11,12030,12080): function does not abort under this condition"} + !$1_option_spec_is_none'#0'($t0); + + // assert Eq<#0>($t6, option::spec_borrow<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:109:9+36 + assume {:print "$at(11,3605,3641)"} true; + assert {:msg "assert_failed(11,3605,3641): post-condition does not hold"} + $IsEqual'#0'($t6, $1_option_spec_borrow'#0'($t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:109:9+36 + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:105:5+1 + assume {:print "$at(11,3515,3516)"} true; +L4: + + // assert option::spec_is_none[]<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:106:5+126 + assume {:print "$at(11,3521,3647)"} true; + assert {:msg "assert_failed(11,3521,3647): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_none'#0'($t0); + + // assert And(option::spec_is_none[]<#0>($t0), Eq(262145, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:106:5+126 + assert {:msg "assert_failed(11,3521,3647): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_none'#0'($t0) && $IsEqual'num'(262145, $t3)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:106:5+126 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'u128'(_$t0: $Mutation ($1_option_Option'u128')) returns ($ret0: $Mutation (int), $ret1: $Mutation ($1_option_Option'u128')) +{ + // declare local variables + var $t1: $1_option_Option'u128'; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec (int)); + var $t6: int; + var $t7: $Mutation (int); + var $t0: $Mutation ($1_option_Option'u128'); + var $temp_0'$1_option_Option'u128'': $1_option_Option'u128'; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'u128'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'u128''} $temp_0'$1_option_Option'u128'' == $temp_0'$1_option_Option'u128''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'u128'($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'u128'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'u128' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'u128'} $temp_0'u128' == $temp_0'u128'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'u128'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'u128''} $temp_0'$1_option_Option'u128'' == $temp_0'$1_option_Option'u128''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'u128'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'u128''} $temp_0'$1_option_Option'u128'' == $temp_0'$1_option_Option'u128''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'$1_aggregator_Aggregator'(_$t0: $Mutation ($1_option_Option'$1_aggregator_Aggregator')) returns ($ret0: $Mutation ($1_aggregator_Aggregator), $ret1: $Mutation ($1_option_Option'$1_aggregator_Aggregator')) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec ($1_aggregator_Aggregator)); + var $t6: int; + var $t7: $Mutation ($1_aggregator_Aggregator); + var $t0: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'$1_aggregator_Aggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_aggregator_Aggregator''} $temp_0'$1_option_Option'$1_aggregator_Aggregator'' == $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_aggregator_Aggregator'($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'$1_aggregator_Aggregator'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_aggregator_Aggregator' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'$1_aggregator_Aggregator'} $temp_0'$1_aggregator_Aggregator' == $temp_0'$1_aggregator_Aggregator'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_aggregator_Aggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_aggregator_Aggregator''} $temp_0'$1_option_Option'$1_aggregator_Aggregator'' == $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_aggregator_Aggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_aggregator_Aggregator''} $temp_0'$1_option_Option'$1_aggregator_Aggregator'' == $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'$1_big_vector_BigVector'#0''(_$t0: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0'')) returns ($ret0: $Mutation ($1_big_vector_BigVector'#0'), $ret1: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0'')) +{ + // declare local variables + var $t1: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec ($1_big_vector_BigVector'#0')); + var $t6: int; + var $t7: $Mutation ($1_big_vector_BigVector'#0'); + var $t0: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''} $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' == $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'$1_big_vector_BigVector'#0''($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''} $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' == $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''} $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' == $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'$1_optional_aggregator_Integer'(_$t0: $Mutation ($1_option_Option'$1_optional_aggregator_Integer')) returns ($ret0: $Mutation ($1_optional_aggregator_Integer), $ret1: $Mutation ($1_option_Option'$1_optional_aggregator_Integer')) +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_Integer'; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec ($1_optional_aggregator_Integer)); + var $t6: int; + var $t7: $Mutation ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_Integer''} $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' == $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_optional_aggregator_Integer'($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'$1_optional_aggregator_Integer'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_Integer''} $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' == $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_Integer''} $temp_0'$1_option_Option'$1_optional_aggregator_Integer'' == $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'(_$t0: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator')) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator), $ret1: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator')) +{ + // declare local variables + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec ($1_optional_aggregator_OptionalAggregator)); + var $t6: int; + var $t7: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t0: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:inline 1} $1_option_borrow_mut'$1_on_chain_config_ModifyConfigCapability'#0''(_$t0: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'')) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), $ret1: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'')) +{ + // declare local variables + var $t1: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec ($1_on_chain_config_ModifyConfigCapability'#0')); + var $t6: int; + var $t7: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t0: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''); + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''': $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''} $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' == $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t1 := $Dereference($t0); + + // $t2 := opaque begin: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''($t1)); + + // $t2 := opaque end: option::is_some<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + + // $t3 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t3 := 262145; + assume $IsValid'u64'($t3); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t5 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut<#0>($t5, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t7,$t5 := $1_vector_borrow_mut'$1_on_chain_config_ModifyConfigCapability'#0''($t5, $t6); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t7); + assume {:print "$track_return(4,1,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''} $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' == $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''} $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''' == $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun option::borrow_mut [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+174 +procedure {:timeLimit 80} $1_option_borrow_mut$verify(_$t0: $Mutation ($1_option_Option'#0')) returns ($ret0: $Mutation (#0), $ret1: $Mutation ($1_option_Option'#0')) +{ + // declare local variables + var $t1: $1_option_Option'#0'; + var $t2: $1_option_Option'#0'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: $Mutation (Vec (#0)); + var $t7: int; + var $t8: $Mutation (#0); + var $t0: $Mutation ($1_option_Option'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + assume {:print "$at(11,5933,5934)"} true; + assume ($IsValid'$1_option_Option'#0''($Dereference($t0)) && (LenVec($Dereference($t0)->$vec) <= 1)); + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + $t1 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:173:5+1 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:25+4 + assume {:print "$at(11,6032,6036)"} true; + $t2 := $Dereference($t0); + + // $t3 := opaque begin: option::is_some<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some<#0>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'#0'($t2)); + + // $t3 := opaque end: option::is_some<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:17+13 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 +L0: + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + + // $t4 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:32+15 + $t4 := 262145; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + assume {:print "$at(11,6016,6055)"} true; + assume {:print "$track_abort(4,1):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:174:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:33+4 + assume {:print "$at(11,6089,6093)"} true; +L2: + + // $t6 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:28+13 + assume {:print "$at(11,6084,6097)"} true; + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:43+1 + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := vector::borrow_mut<#0>($t6, $t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + call $t8,$t6 := $1_vector_borrow_mut'#0'($t6, $t7); + if ($abort_flag) { + assume {:print "$at(11,6065,6101)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(4,1):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'#0' := $Dereference($t8); + assume {:print "$track_return(4,1,0):", $temp_0'#0'} $temp_0'#0' == $temp_0'#0'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:175:9+36 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,1,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L3: + + // assert Not(option::spec_is_none[]<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:354:9+50 + assume {:print "$at(11,12030,12080)"} true; + assert {:msg "assert_failed(11,12030,12080): function does not abort under this condition"} + !$1_option_spec_is_none'#0'($t1); + + // assert Eq<#0>(Freeze(false)($t8), option::spec_borrow<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:179:9+36 + assume {:print "$at(11,6177,6213)"} true; + assert {:msg "assert_failed(11,6177,6213): post-condition does not hold"} + $IsEqual'#0'($Dereference($t8), $1_option_spec_borrow'#0'($Dereference($t0))); + + // assert Eq>(Freeze(false)($t0), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:180:9+26 + assume {:print "$at(11,6222,6248)"} true; + assert {:msg "assert_failed(11,6222,6248): post-condition does not hold"} + $IsEqual'$1_option_Option'#0''($Dereference($t0), $t1); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:180:9+26 + $ret0 := $t8; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:176:5+1 + assume {:print "$at(11,6106,6107)"} true; +L4: + + // assert option::spec_is_none[]<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:177:5+142 + assume {:print "$at(11,6112,6254)"} true; + assert {:msg "assert_failed(11,6112,6254): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_none'#0'($t1); + + // assert And(option::spec_is_none[]<#0>($t1), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:177:5+142 + assert {:msg "assert_failed(11,6112,6254): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_none'#0'($t1) && $IsEqual'num'(262145, $t5)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:177:5+142 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun option::swap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+275 +procedure {:timeLimit 80} $1_option_swap$verify(_$t0: $Mutation ($1_option_Option'#0'), _$t1: #0) returns ($ret0: #0, $ret1: $Mutation ($1_option_Option'#0')) +{ + // declare local variables + var $t2: #0; + var $t3: $Mutation (Vec (#0)); + var $t4: $1_option_Option'#0'; + var $t5: $1_option_Option'#0'; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $Mutation (Vec (#0)); + var $t10: #0; + var $t0: $Mutation ($1_option_Option'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+1 + assume {:print "$at(11,6382,6383)"} true; + assume ($IsValid'$1_option_Option'#0''($Dereference($t0)) && (LenVec($Dereference($t0)->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+1 + assume $IsValid'#0'($t1); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+1 + $t4 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+1 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,15,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:185:5+1 + assume {:print "$track_local(4,15,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:25+4 + assume {:print "$at(11,6482,6486)"} true; + $t5 := $Dereference($t0); + + // $t6 := opaque begin: option::is_some<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:17+13 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:17+13 + assume $IsValid'bool'($t6); + + // assume Eq($t6, option::spec_is_some<#0>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:17+13 + assume $IsEqual'bool'($t6, $1_option_spec_is_some'#0'($t5)); + + // $t6 := opaque end: option::is_some<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:17+13 + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + assume {:print "$at(11,6466,6505)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 +L0: + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + assume {:print "$at(11,6466,6505)"} true; + + // $t7 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:32+15 + $t7 := 262145; + assume $IsValid'u64'($t7); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + assume {:print "$at(11,6466,6505)"} true; + assume {:print "$track_abort(4,15):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:186:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:187:28+4 + assume {:print "$at(11,6534,6538)"} true; +L2: + + // $t9 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:187:23+13 + assume {:print "$at(11,6529,6542)"} true; + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // trace_local[vec_ref]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:187:13+7 + $temp_0'vec'#0'' := $Dereference($t9); + assume {:print "$track_local(4,15,3):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // $t10 := vector::pop_back<#0>($t9) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:188:25+25 + assume {:print "$at(11,6568,6593)"} true; + call $t10,$t9 := $1_vector_pop_back'#0'($t9); + if ($abort_flag) { + assume {:print "$at(11,6568,6593)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(4,15):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[old_value]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:188:13+9 + assume {:print "$track_local(4,15,2):", $t10} $t10 == $t10; + + // vector::push_back<#0>($t9, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:189:9+29 + assume {:print "$at(11,6603,6632)"} true; + call $t9 := $1_vector_push_back'#0'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(11,6603,6632)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(4,15):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t0).vec (vector<#0>)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:189:9+29 + $t0 := $UpdateMutation($t0, $Update'$1_option_Option'#0''_vec($Dereference($t0), $Dereference($t9))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:189:9+29 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,15,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:190:9+9 + assume {:print "$at(11,6642,6651)"} true; + assume {:print "$track_return(4,15,0):", $t10} $t10 == $t10; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:190:9+9 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,15,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:191:5+1 + assume {:print "$at(11,6656,6657)"} true; +L3: + + // assert Not(option::spec_is_none[]<#0>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:354:9+50 + assume {:print "$at(11,12030,12080)"} true; + assert {:msg "assert_failed(11,12030,12080): function does not abort under this condition"} + !$1_option_spec_is_none'#0'($t4); + + // assert Eq<#0>($t10, option::spec_borrow<#0>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:195:9+41 + assume {:print "$at(11,6744,6785)"} true; + assert {:msg "assert_failed(11,6744,6785): post-condition does not hold"} + $IsEqual'#0'($t10, $1_option_spec_borrow'#0'($t4)); + + // assert option::spec_is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:196:9+27 + assume {:print "$at(11,6794,6821)"} true; + assert {:msg "assert_failed(11,6794,6821): post-condition does not hold"} + $1_option_spec_is_some'#0'($Dereference($t0)); + + // assert Eq<#0>(option::spec_borrow<#0>($t0), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:197:9+31 + assume {:print "$at(11,6830,6861)"} true; + assert {:msg "assert_failed(11,6830,6861): post-condition does not hold"} + $IsEqual'#0'($1_option_spec_borrow'#0'($Dereference($t0)), $t1); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:197:9+31 + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:191:5+1 + assume {:print "$at(11,6656,6657)"} true; +L4: + + // assert option::spec_is_none[]<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:192:5+205 + assume {:print "$at(11,6662,6867)"} true; + assert {:msg "assert_failed(11,6662,6867): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_none'#0'($t4); + + // assert And(option::spec_is_none[]<#0>($t4), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:192:5+205 + assert {:msg "assert_failed(11,6662,6867): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_none'#0'($t4) && $IsEqual'num'(262145, $t8)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:192:5+205 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun option::borrow_with_default [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:117:5+228 +procedure {:timeLimit 80} $1_option_borrow_with_default$verify(_$t0: $1_option_Option'#0', _$t1: #0) returns ($ret0: #0) +{ + // declare local variables + var $t2: #0; + var $t3: Vec (#0); + var $t4: Vec (#0); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $1_option_Option'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:117:5+1 + assume {:print "$at(11,3878,3879)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:117:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:117:5+1 + assume {:print "$track_local(4,2,0):", $t0} $t0 == $t0; + + // trace_local[default_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:117:5+1 + assume {:print "$track_local(4,2,1):", $t1} $t1 == $t1; + + // $t4 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:118:23+9 + assume {:print "$at(11,3999,4008)"} true; + $t4 := $t0->$vec; + + // trace_local[vec_ref]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:118:13+7 + assume {:print "$track_local(4,2,3):", $t4} $t4 == $t4; + + // $t5 := vector::is_empty<#0>($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:13+25 + assume {:print "$at(11,4022,4047)"} true; + call $t5 := $1_vector_is_empty'#0'($t4); + if ($abort_flag) { + assume {:print "$at(11,4022,4047)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(4,2):", $t6} $t6 == $t6; + goto L4; + } + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 +L1: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 + assume {:print "$at(11,4018,4100)"} true; + $t2 := $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 +L0: + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:120:38+1 + assume {:print "$at(11,4098,4099)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t2 := vector::borrow<#0>($t4, $t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:120:14+26 + call $t2 := $1_vector_borrow'#0'($t4, $t7); + if ($abort_flag) { + assume {:print "$at(11,4074,4100)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(4,2):", $t6} $t6 == $t6; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 + assume {:print "$at(11,4018,4100)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:119:9+82 + assume {:print "$at(11,4018,4100)"} true; + assume {:print "$track_return(4,2,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:121:5+1 + assume {:print "$at(11,4105,4106)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:124:9+16 + assume {:print "$at(11,4169,4185)"} true; + assert {:msg "assert_failed(11,4169,4185): function does not abort under this condition"} + !false; + + // assert Eq<#0>($t2, if option::spec_is_some<#0>($t0) { + // option::spec_borrow<#0>($t0) + // } else { + // $t1 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:125:9+79 + assume {:print "$at(11,4194,4273)"} true; + assert {:msg "assert_failed(11,4194,4273): post-condition does not hold"} + $IsEqual'#0'($t2, (if ($1_option_spec_is_some'#0'($t0)) then ($1_option_spec_borrow'#0'($t0)) else ($t1))); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:125:9+79 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:121:5+1 + assume {:print "$at(11,4105,4106)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:122:5+168 + assume {:print "$at(11,4111,4279)"} true; + assert {:msg "assert_failed(11,4111,4279): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:122:5+168 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun option::destroy_none [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:246:5+182 +procedure {:timeLimit 80} $1_option_destroy_none$verify(_$t0: $1_option_Option'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: Vec (#0); + var $t0: $1_option_Option'#0'; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:246:5+1 + assume {:print "$at(11,8595,8596)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:246:5+1 + assume {:print "$track_local(4,4,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: option::is_none<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:17+14 + assume {:print "$at(11,8669,8683)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:17+14 + assume $IsValid'bool'($t1); + + // assume Eq($t1, option::spec_is_none<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:17+14 + assume $IsEqual'bool'($t1, $1_option_spec_is_none'#0'($t0)); + + // $t1 := opaque end: option::is_none<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:17+14 + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 + assume {:print "$at(11,8661,8700)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:33+14 +L0: + + // $t2 := 262144 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:33+14 + assume {:print "$at(11,8685,8699)"} true; + $t2 := 262144; + assume $IsValid'u64'($t2); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 + assume {:print "$at(11,8661,8700)"} true; + assume {:print "$track_abort(4,4):", $t2} $t2 == $t2; + + // $t3 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 + $t3 := $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:247:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:248:30+4 + assume {:print "$at(11,8731,8735)"} true; +L2: + + // $t4 := unpack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:248:13+14 + assume {:print "$at(11,8714,8728)"} true; + $t4 := $t0->$vec; + + // vector::destroy_empty<#0>($t4) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:249:9+26 + assume {:print "$at(11,8745,8771)"} true; + call $1_vector_destroy_empty'#0'($t4); + if ($abort_flag) { + assume {:print "$at(11,8745,8771)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(4,4):", $t3} $t3 == $t3; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:250:5+1 + assume {:print "$at(11,8776,8777)"} true; +L3: + + // assert Not(option::spec_is_some[]<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:253:9+49 + assume {:print "$at(11,8833,8882)"} true; + assert {:msg "assert_failed(11,8833,8882): function does not abort under this condition"} + !$1_option_spec_is_some'#0'($t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:253:9+49 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:250:5+1 + assume {:print "$at(11,8776,8777)"} true; +L4: + + // assert option::spec_is_some[]<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:251:5+106 + assume {:print "$at(11,8782,8888)"} true; + assert {:msg "assert_failed(11,8782,8888): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_some'#0'($t0); + + // assert And(option::spec_is_some[]<#0>($t0), Eq(262144, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:251:5+106 + assert {:msg "assert_failed(11,8782,8888): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_some'#0'($t0) && $IsEqual'num'(262144, $t3)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:251:5+106 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun option::destroy_some [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:231:5+253 +procedure {:timeLimit 80} $1_option_destroy_some$verify(_$t0: $1_option_Option'#0') returns ($ret0: #0) +{ + // declare local variables + var $t1: #0; + var $t2: Vec (#0); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: $Mutation (Vec (#0)); + var $t7: #0; + var $t8: Vec (#0); + var $t0: $1_option_Option'#0'; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:231:5+1 + assume {:print "$at(11,8138,8139)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:231:5+1 + assume {:print "$track_local(4,5,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: option::is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:17+14 + assume {:print "$at(11,8221,8235)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:17+14 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:17+14 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'#0'($t0)); + + // $t3 := opaque end: option::is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:17+14 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 + assume {:print "$at(11,8213,8253)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:33+15 +L0: + + // $t4 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:33+15 + assume {:print "$at(11,8237,8252)"} true; + $t4 := 262145; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 + assume {:print "$at(11,8213,8253)"} true; + assume {:print "$track_abort(4,5):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:232:9+40 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:233:30+4 + assume {:print "$at(11,8284,8288)"} true; +L2: + + // $t2 := unpack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:233:13+14 + assume {:print "$at(11,8267,8281)"} true; + $t2 := $t0->$vec; + + // trace_local[vec]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:233:22+3 + assume {:print "$track_local(4,5,2):", $t2} $t2 == $t2; + + // $t6 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:234:37+8 + assume {:print "$at(11,8326,8334)"} true; + $t6 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t7 := vector::pop_back<#0>($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:234:20+26 + call $t7,$t6 := $1_vector_pop_back'#0'($t6); + if ($abort_flag) { + assume {:print "$at(11,8309,8335)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(4,5):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:234:20+26 + $t2 := $Dereference($t6); + + // trace_local[vec]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:234:20+26 + assume {:print "$track_local(4,5,2):", $t2} $t2 == $t2; + + // trace_local[elem]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:234:13+4 + assume {:print "$track_local(4,5,1):", $t7} $t7 == $t7; + + // $t8 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:235:31+3 + assume {:print "$at(11,8367,8370)"} true; + $t8 := $t2; + + // vector::destroy_empty<#0>($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:235:9+26 + call $1_vector_destroy_empty'#0'($t8); + if ($abort_flag) { + assume {:print "$at(11,8345,8371)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(4,5):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:236:9+4 + assume {:print "$at(11,8381,8385)"} true; + assume {:print "$track_return(4,5,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:237:5+1 + assume {:print "$at(11,8390,8391)"} true; +L3: + + // assert Not(option::spec_is_none[]<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:354:9+50 + assume {:print "$at(11,12030,12080)"} true; + assert {:msg "assert_failed(11,12030,12080): function does not abort under this condition"} + !$1_option_spec_is_none'#0'($t0); + + // assert Eq<#0>($t7, option::spec_borrow<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:241:9+36 + assume {:print "$at(11,8486,8522)"} true; + assert {:msg "assert_failed(11,8486,8522): post-condition does not hold"} + $IsEqual'#0'($t7, $1_option_spec_borrow'#0'($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:241:9+36 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:237:5+1 + assume {:print "$at(11,8390,8391)"} true; +L4: + + // assert option::spec_is_none[]<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:238:5+132 + assume {:print "$at(11,8396,8528)"} true; + assert {:msg "assert_failed(11,8396,8528): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_none'#0'($t0); + + // assert And(option::spec_is_none[]<#0>($t0), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:238:5+132 + assert {:msg "assert_failed(11,8396,8528): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_none'#0'($t0) && $IsEqual'num'(262145, $t5)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:238:5+132 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun option::destroy_with_default [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:218:5+227 +procedure {:timeLimit 80} $1_option_destroy_with_default$verify(_$t0: $1_option_Option'#0', _$t1: #0) returns ($ret0: #0) +{ + // declare local variables + var $t2: #0; + var $t3: Vec (#0); + var $t4: $Mutation (Vec (#0)); + var $t5: Vec (#0); + var $t6: bool; + var $t7: int; + var $t8: $Mutation (Vec (#0)); + var $t0: $1_option_Option'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:218:5+1 + assume {:print "$at(11,7642,7643)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:218:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:218:5+1 + assume {:print "$track_local(4,6,0):", $t0} $t0 == $t0; + + // trace_local[default]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:218:5+1 + assume {:print "$track_local(4,6,1):", $t1} $t1 == $t1; + + // $t3 := unpack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:219:13+14 + assume {:print "$at(11,7753,7767)"} true; + $t3 := $t0->$vec; + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:219:22+3 + assume {:print "$track_local(4,6,3):", $t3} $t3 == $t3; + + // $t4 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:30+8 + assume {:print "$at(11,7805,7813)"} true; + $t4 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t5 := read_ref($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:30+8 + $t5 := $Dereference($t4); + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:30+8 + assume {:print "$track_local(4,6,3):", $t3} $t3 == $t3; + + // $t6 := vector::is_empty<#0>($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:13+26 + call $t6 := $1_vector_is_empty'#0'($t5); + if ($abort_flag) { + assume {:print "$at(11,7788,7814)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(4,6):", $t7} $t7 == $t7; + goto L4; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:9+79 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:41+7 +L1: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:9+79 + assume {:print "$at(11,7784,7863)"} true; + $t2 := $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:9+79 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:221:31+8 + assume {:print "$at(11,7854,7862)"} true; +L0: + + // $t8 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:221:31+8 + assume {:print "$at(11,7854,7862)"} true; + $t8 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t2 := vector::pop_back<#0>($t8) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:221:14+26 + call $t2,$t8 := $1_vector_pop_back'#0'($t8); + if ($abort_flag) { + assume {:print "$at(11,7837,7863)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(4,6):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:221:14+26 + $t3 := $Dereference($t8); + + // trace_local[vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:221:14+26 + assume {:print "$track_local(4,6,3):", $t3} $t3 == $t3; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:9+79 + assume {:print "$at(11,7784,7863)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:220:9+79 + assume {:print "$at(11,7784,7863)"} true; + assume {:print "$track_return(4,6,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:222:5+1 + assume {:print "$at(11,7868,7869)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:225:9+16 + assume {:print "$at(11,7933,7949)"} true; + assert {:msg "assert_failed(11,7933,7949): function does not abort under this condition"} + !false; + + // assert Eq<#0>($t2, if option::spec_is_some<#0>($t0) { + // option::spec_borrow<#0>($t0) + // } else { + // $t1 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:226:9+75 + assume {:print "$at(11,7958,8033)"} true; + assert {:msg "assert_failed(11,7958,8033): post-condition does not hold"} + $IsEqual'#0'($t2, (if ($1_option_spec_is_some'#0'($t0)) then ($1_option_spec_borrow'#0'($t0)) else ($t1))); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:226:9+75 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:222:5+1 + assume {:print "$at(11,7868,7869)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:223:5+165 + assume {:print "$at(11,7874,8039)"} true; + assert {:msg "assert_failed(11,7874,8039): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:223:5+165 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun option::extract [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:160:5+161 +procedure {:timeLimit 80} $1_option_extract$verify(_$t0: $Mutation ($1_option_Option'#0')) returns ($ret0: #0, $ret1: $Mutation ($1_option_Option'#0')) +{ + // declare local variables + var $t1: $1_option_Option'#0'; + var $t2: $1_option_Option'#0'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: $Mutation (Vec (#0)); + var $t7: #0; + var $t0: $Mutation ($1_option_Option'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:160:5+1 + assume {:print "$at(11,5484,5485)"} true; + assume ($IsValid'$1_option_Option'#0''($Dereference($t0)) && (LenVec($Dereference($t0)->$vec) <= 1)); + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:160:5+1 + $t1 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:160:5+1 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,7,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:25+4 + assume {:print "$at(11,5575,5579)"} true; + $t2 := $Dereference($t0); + + // $t3 := opaque begin: option::is_some<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:17+13 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:17+13 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some<#0>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:17+13 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'#0'($t2)); + + // $t3 := opaque end: option::is_some<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:17+13 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + assume {:print "$at(11,5559,5598)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 +L0: + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + assume {:print "$at(11,5559,5598)"} true; + + // $t4 := 262145 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:32+15 + $t4 := 262145; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + assume {:print "$at(11,5559,5598)"} true; + assume {:print "$track_abort(4,7):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:161:9+39 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:31+4 + assume {:print "$at(11,5630,5634)"} true; +L2: + + // $t6 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:26+13 + assume {:print "$at(11,5625,5638)"} true; + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // $t7 := vector::pop_back<#0>($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:9+31 + call $t7,$t6 := $1_vector_pop_back'#0'($t6); + if ($abort_flag) { + assume {:print "$at(11,5608,5639)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(4,7):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[Reference($t0).vec (vector<#0>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:9+31 + $t0 := $UpdateMutation($t0, $Update'$1_option_Option'#0''_vec($Dereference($t0), $Dereference($t6))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:9+31 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,7,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:9+31 + assume {:print "$track_return(4,7,0):", $t7} $t7 == $t7; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:162:9+31 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,7,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:163:5+1 + assume {:print "$at(11,5644,5645)"} true; +L3: + + // assert Not(option::spec_is_none[]<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:354:9+50 + assume {:print "$at(11,12030,12080)"} true; + assert {:msg "assert_failed(11,12030,12080): function does not abort under this condition"} + !$1_option_spec_is_none'#0'($t1); + + // assert Eq<#0>($t7, option::spec_borrow<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:167:9+41 + assume {:print "$at(11,5735,5776)"} true; + assert {:msg "assert_failed(11,5735,5776): post-condition does not hold"} + $IsEqual'#0'($t7, $1_option_spec_borrow'#0'($t1)); + + // assert option::spec_is_none<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:168:9+27 + assume {:print "$at(11,5785,5812)"} true; + assert {:msg "assert_failed(11,5785,5812): post-condition does not hold"} + $1_option_spec_is_none'#0'($Dereference($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:168:9+27 + $ret0 := $t7; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:163:5+1 + assume {:print "$at(11,5644,5645)"} true; +L4: + + // assert option::spec_is_none[]<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:164:5+168 + assume {:print "$at(11,5650,5818)"} true; + assert {:msg "assert_failed(11,5650,5818): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_none'#0'($t1); + + // assert And(option::spec_is_none[]<#0>($t1), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:164:5+168 + assert {:msg "assert_failed(11,5650,5818): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_none'#0'($t1) && $IsEqual'num'(262145, $t5)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:164:5+168 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun option::fill [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+212 +procedure {:timeLimit 80} $1_option_fill$verify(_$t0: $Mutation ($1_option_Option'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_option_Option'#0')) +{ + // declare local variables + var $t2: $Mutation (Vec (#0)); + var $t3: $1_option_Option'#0'; + var $t4: $Mutation (Vec (#0)); + var $t5: Vec (#0); + var $t6: bool; + var $t7: int; + var $t8: int; + var $t0: $Mutation ($1_option_Option'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+1 + assume {:print "$at(11,4939,4940)"} true; + assume ($IsValid'$1_option_Option'#0''($Dereference($t0)) && (LenVec($Dereference($t0)->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+1 + assume $IsValid'#0'($t1); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+1 + $t3 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+1 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,8,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:146:5+1 + assume {:print "$track_local(4,8,1):", $t1} $t1 == $t1; + + // $t4 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:147:23+13 + assume {:print "$at(11,5028,5041)"} true; + $t4 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // trace_local[vec_ref]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:147:13+7 + $temp_0'vec'#0'' := $Dereference($t4); + assume {:print "$track_local(4,8,2):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // $t5 := read_ref($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:30+7 + assume {:print "$at(11,5072,5079)"} true; + $t5 := $Dereference($t4); + + // $t6 := vector::is_empty<#0>($t5) on_abort goto L5 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:13+25 + call $t6 := $1_vector_is_empty'#0'($t5); + if ($abort_flag) { + assume {:print "$at(11,5055,5080)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(4,8):", $t7} $t7 == $t7; + goto L5; + } + + // if ($t6) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:9+94 + if ($t6) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:9+94 + assume {:print "$at(11,5051,5145)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + assume {:print "$at(11,5125,5145)"} true; +L0: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + assume {:print "$at(11,5125,5145)"} true; + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,8,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + + // $t8 := 262144 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:20+14 + $t8 := 262144; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + assume {:print "$at(11,5125,5145)"} true; + assume {:print "$track_abort(4,8):", $t8} $t8 == $t8; + + // $t7 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + $t7 := $t8; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:149:14+20 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:58+7 + assume {:print "$at(11,5100,5107)"} true; +L2: + + // vector::push_back<#0>($t4, $t1) on_abort goto L5 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:40+29 + assume {:print "$at(11,5082,5111)"} true; + call $t4 := $1_vector_push_back'#0'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(11,5082,5111)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(4,8):", $t7} $t7 == $t7; + goto L5; + } + + // write_back[Reference($t0).vec (vector<#0>)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:40+29 + $t0 := $UpdateMutation($t0, $Update'$1_option_Option'#0''_vec($Dereference($t0), $Dereference($t4))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:40+29 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,8,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:9+94 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,8,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:148:9+94 + assume {:print "$at(11,5051,5145)"} true; + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:150:5+1 + assume {:print "$at(11,5150,5151)"} true; +L4: + + // assert Not(option::spec_is_some[]<#0>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:153:9+49 + assume {:print "$at(11,5199,5248)"} true; + assert {:msg "assert_failed(11,5199,5248): function does not abort under this condition"} + !$1_option_spec_is_some'#0'($t3); + + // assert option::spec_is_some<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:154:9+27 + assume {:print "$at(11,5257,5284)"} true; + assert {:msg "assert_failed(11,5257,5284): post-condition does not hold"} + $1_option_spec_is_some'#0'($Dereference($t0)); + + // assert Eq<#0>(option::spec_borrow<#0>($t0), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:155:9+31 + assume {:print "$at(11,5293,5324)"} true; + assert {:msg "assert_failed(11,5293,5324): post-condition does not hold"} + $IsEqual'#0'($1_option_spec_borrow'#0'($Dereference($t0)), $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:155:9+31 + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:150:5+1 + assume {:print "$at(11,5150,5151)"} true; +L5: + + // assert option::spec_is_some[]<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:151:5+174 + assume {:print "$at(11,5156,5330)"} true; + assert {:msg "assert_failed(11,5156,5330): abort not covered by any of the `aborts_if` clauses"} + $1_option_spec_is_some'#0'($t3); + + // assert And(option::spec_is_some[]<#0>($t3), Eq(262144, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:151:5+174 + assert {:msg "assert_failed(11,5156,5330): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_option_spec_is_some'#0'($t3) && $IsEqual'num'(262144, $t7)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:151:5+174 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun option::from_vec [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:51:5+164 +procedure {:timeLimit 80} $1_option_from_vec$verify(_$t0: Vec (#0)) returns ($ret0: $1_option_Option'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: $1_option_Option'#0'; + var $t0: Vec (#0); + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:51:5+1 + assume {:print "$at(11,1732,1733)"} true; + assume $IsValid'vec'#0''($t0); + + // trace_local[vec]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:51:5+1 + assume {:print "$track_local(4,9,0):", $t0} $t0 == $t0; + + // $t1 := vector::length<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:17+20 + assume {:print "$at(11,1818,1838)"} true; + call $t1 := $1_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(11,1818,1838)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(4,9):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:41+1 + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := <=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:38+2 + call $t4 := $Le($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 + assume {:print "$at(11,1810,1866)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:44+20 +L0: + + // $t5 := 262146 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:44+20 + assume {:print "$at(11,1845,1865)"} true; + $t5 := 262146; + assume $IsValid'u64'($t5); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 + assume {:print "$at(11,1810,1866)"} true; + assume {:print "$track_abort(4,9):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 + $t2 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:52:9+56 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:53:18+3 + assume {:print "$at(11,1885,1888)"} true; +L2: + + // $t6 := pack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:53:9+14 + assume {:print "$at(11,1876,1890)"} true; + $t6 := $1_option_Option'#0'($t0); + + // assert Le(Len<#0>(select option::Option.vec($t6)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($t6->$vec) <= 1); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:53:9+14 + assume {:print "$at(11,1876,1890)"} true; + assume {:print "$track_return(4,9,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:54:5+1 + assume {:print "$at(11,1895,1896)"} true; +L3: + + // assert Not(Gt(vector::$length[]<#0>($t0), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:57:9+34 + assume {:print "$at(11,1926,1960)"} true; + assert {:msg "assert_failed(11,1926,1960): function does not abort under this condition"} + !($1_vector_$length'#0'($t0) > 1); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:57:9+34 + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:54:5+1 + assume {:print "$at(11,1895,1896)"} true; +L4: + + // assert Gt(vector::$length[]<#0>($t0), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:56:5+64 + assume {:print "$at(11,1902,1966)"} true; + assert {:msg "assert_failed(11,1902,1966): abort not covered by any of the `aborts_if` clauses"} + ($1_vector_$length'#0'($t0) > 1); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:56:5+64 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun option::get_with_default [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:130:5+252 +procedure {:timeLimit 80} $1_option_get_with_default$verify(_$t0: $1_option_Option'#0', _$t1: #0) returns ($ret0: #0) +{ + // declare local variables + var $t2: #0; + var $t3: Vec (#0); + var $t4: Vec (#0); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t0: $1_option_Option'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:130:5+1 + assume {:print "$at(11,4397,4398)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:130:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:130:5+1 + assume {:print "$track_local(4,10,0):", $t0} $t0 == $t0; + + // trace_local[default]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:130:5+1 + assume {:print "$track_local(4,10,1):", $t1} $t1 == $t1; + + // $t4 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:134:23+9 + assume {:print "$at(11,4545,4554)"} true; + $t4 := $t0->$vec; + + // trace_local[vec_ref]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:134:13+7 + assume {:print "$track_local(4,10,3):", $t4} $t4 == $t4; + + // $t5 := vector::is_empty<#0>($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:13+25 + assume {:print "$at(11,4568,4593)"} true; + call $t5 := $1_vector_is_empty'#0'($t4); + if ($abort_flag) { + assume {:print "$at(11,4568,4593)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(4,10):", $t6} $t6 == $t6; + goto L4; + } + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 +L1: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 + assume {:print "$at(11,4564,4643)"} true; + $t2 := $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:136:30+7 + assume {:print "$at(11,4632,4639)"} true; +L0: + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:136:39+1 + assume {:print "$at(11,4641,4642)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t2 := vector::borrow<#0>($t4, $t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:136:15+26 + call $t2 := $1_vector_borrow'#0'($t4, $t7); + if ($abort_flag) { + assume {:print "$at(11,4617,4643)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(4,10):", $t6} $t6 == $t6; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 + assume {:print "$at(11,4564,4643)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:135:9+79 + assume {:print "$at(11,4564,4643)"} true; + assume {:print "$track_return(4,10,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:137:5+1 + assume {:print "$at(11,4648,4649)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:140:9+16 + assume {:print "$at(11,4709,4725)"} true; + assert {:msg "assert_failed(11,4709,4725): function does not abort under this condition"} + !false; + + // assert Eq<#0>($t2, if option::spec_is_some<#0>($t0) { + // option::spec_borrow<#0>($t0) + // } else { + // $t1 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:141:9+75 + assume {:print "$at(11,4734,4809)"} true; + assert {:msg "assert_failed(11,4734,4809): post-condition does not hold"} + $IsEqual'#0'($t2, (if ($1_option_spec_is_some'#0'($t0)) then ($1_option_spec_borrow'#0'($t0)) else ($t1))); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:141:9+75 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:137:5+1 + assume {:print "$at(11,4648,4649)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:138:5+161 + assume {:print "$at(11,4654,4815)"} true; + assert {:msg "assert_failed(11,4654,4815): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:138:5+161 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun option::is_none [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+101 +procedure {:timeLimit 80} $1_option_is_none$verify(_$t0: $1_option_Option'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: bool; + var $t3: int; + var $t0: $1_option_Option'#0'; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+1 + assume {:print "$at(11,2024,2025)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:61:5+1 + assume {:print "$track_local(4,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:62:26+9 + assume {:print "$at(11,2109,2118)"} true; + $t1 := $t0->$vec; + + // $t2 := vector::is_empty<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:62:9+27 + call $t2 := $1_vector_is_empty'#0'($t1); + if ($abort_flag) { + assume {:print "$at(11,2092,2119)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(4,11):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:62:9+27 + assume {:print "$track_return(4,11,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:63:5+1 + assume {:print "$at(11,2124,2125)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:66:9+16 + assume {:print "$at(11,2176,2192)"} true; + assert {:msg "assert_failed(11,2176,2192): function does not abort under this condition"} + !false; + + // assert Eq($t2, option::spec_is_none<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:67:9+37 + assume {:print "$at(11,2201,2238)"} true; + assert {:msg "assert_failed(11,2201,2238): post-condition does not hold"} + $IsEqual'bool'($t2, $1_option_spec_is_none'#0'($t0)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:67:9+37 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:63:5+1 + assume {:print "$at(11,2124,2125)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:64:5+114 + assume {:print "$at(11,2130,2244)"} true; + assert {:msg "assert_failed(11,2130,2244): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:64:5+114 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun option::is_some [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+102 +procedure {:timeLimit 80} $1_option_is_some$verify(_$t0: $1_option_Option'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t0: $1_option_Option'#0'; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+1 + assume {:print "$at(11,2401,2402)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:74:5+1 + assume {:print "$track_local(4,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:75:27+9 + assume {:print "$at(11,2487,2496)"} true; + $t1 := $t0->$vec; + + // $t2 := vector::is_empty<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:75:10+27 + call $t2 := $1_vector_is_empty'#0'($t1); + if ($abort_flag) { + assume {:print "$at(11,2470,2497)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(4,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:75:9+1 + call $t4 := $Not($t2); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:75:9+28 + assume {:print "$track_return(4,12,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:76:5+1 + assume {:print "$at(11,2502,2503)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:79:9+16 + assume {:print "$at(11,2554,2570)"} true; + assert {:msg "assert_failed(11,2554,2570): function does not abort under this condition"} + !false; + + // assert Eq($t4, option::spec_is_some<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:80:9+37 + assume {:print "$at(11,2579,2616)"} true; + assert {:msg "assert_failed(11,2579,2616): post-condition does not hold"} + $IsEqual'bool'($t4, $1_option_spec_is_some'#0'($t0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:80:9+37 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:76:5+1 + assume {:print "$at(11,2502,2503)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:77:5+114 + assume {:print "$at(11,2508,2622)"} true; + assert {:msg "assert_failed(11,2508,2622): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:77:5+114 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun option::none [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:26:5+91 +procedure {:timeLimit 80} $1_option_none$verify() returns ($ret0: $1_option_Option'#0') +{ + // declare local variables + var $t0: Vec (#0); + var $t1: int; + var $t2: $1_option_Option'#0'; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := vector::empty<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:27:23+15 + assume {:print "$at(11,1134,1149)"} true; + call $t0 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(11,1134,1149)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(4,13):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := pack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:27:9+31 + $t2 := $1_option_Option'#0'($t0); + + // assert Le(Len<#0>(select option::Option.vec($t2)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($t2->$vec) <= 1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:27:9+31 + assume {:print "$at(11,1120,1151)"} true; + assume {:print "$track_return(4,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:28:5+1 + assume {:print "$at(11,1156,1157)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:31:9+16 + assume {:print "$at(11,1205,1221)"} true; + assert {:msg "assert_failed(11,1205,1221): function does not abort under this condition"} + !false; + + // assert Eq>($t2, option::spec_none<#0>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:32:9+39 + assume {:print "$at(11,1230,1269)"} true; + assert {:msg "assert_failed(11,1230,1269): post-condition does not hold"} + $IsEqual'$1_option_Option'#0''($t2, $1_option_spec_none'#0'()); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:32:9+39 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:28:5+1 + assume {:print "$at(11,1156,1157)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:29:5+113 + assume {:print "$at(11,1162,1275)"} true; + assert {:msg "assert_failed(11,1162,1275): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:29:5+113 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun option::some [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:39:5+106 +procedure {:timeLimit 80} $1_option_some$verify(_$t0: #0) returns ($ret0: $1_option_Option'#0') +{ + // declare local variables + var $t1: Vec (#0); + var $t2: int; + var $t3: $1_option_Option'#0'; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:39:5+1 + assume {:print "$at(11,1411,1412)"} true; + assume $IsValid'#0'($t0); + + // trace_local[e]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:39:5+1 + assume {:print "$track_local(4,14,0):", $t0} $t0 == $t0; + + // $t1 := vector::singleton<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:40:23+20 + assume {:print "$at(11,1489,1509)"} true; + call $t1 := $1_vector_singleton'#0'($t0); + if ($abort_flag) { + assume {:print "$at(11,1489,1509)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(4,14):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack option::Option<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:40:9+36 + $t3 := $1_option_Option'#0'($t1); + + // assert Le(Len<#0>(select option::Option.vec($t3)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($t3->$vec) <= 1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:40:9+36 + assume {:print "$at(11,1475,1511)"} true; + assume {:print "$track_return(4,14,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:41:5+1 + assume {:print "$at(11,1516,1517)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:44:9+16 + assume {:print "$at(11,1565,1581)"} true; + assert {:msg "assert_failed(11,1565,1581): function does not abort under this condition"} + !false; + + // assert Eq>($t3, option::spec_some<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:45:9+31 + assume {:print "$at(11,1590,1621)"} true; + assert {:msg "assert_failed(11,1590,1621): post-condition does not hold"} + $IsEqual'$1_option_Option'#0''($t3, $1_option_spec_some'#0'($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:45:9+31 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:41:5+1 + assume {:print "$at(11,1516,1517)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:42:5+105 + assume {:print "$at(11,1522,1627)"} true; + assert {:msg "assert_failed(11,1522,1627): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:42:5+105 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun option::swap_or_fill [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+303 +procedure {:timeLimit 80} $1_option_swap_or_fill$verify(_$t0: $Mutation ($1_option_Option'#0'), _$t1: #0) returns ($ret0: $1_option_Option'#0', $ret1: $Mutation ($1_option_Option'#0')) +{ + // declare local variables + var $t2: $1_option_Option'#0'; + var $t3: $1_option_Option'#0'; + var $t4: $Mutation (Vec (#0)); + var $t5: $1_option_Option'#0'; + var $t6: $Mutation (Vec (#0)); + var $t7: Vec (#0); + var $t8: bool; + var $t9: int; + var $t10: #0; + var $t0: $Mutation ($1_option_Option'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+1 + assume {:print "$at(11,7089,7090)"} true; + assume ($IsValid'$1_option_Option'#0''($Dereference($t0)) && (LenVec($Dereference($t0)->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+1 + assume $IsValid'#0'($t1); + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+1 + $t5 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+1 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,16,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:203:5+1 + assume {:print "$track_local(4,16,1):", $t1} $t1 == $t1; + + // $t6 := borrow_field>.vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:204:23+13 + assume {:print "$at(11,7203,7216)"} true; + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$vec); + + // trace_local[vec_ref]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:204:13+7 + $temp_0'vec'#0'' := $Dereference($t6); + assume {:print "$track_local(4,16,4):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // $t7 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:46+7 + assume {:print "$at(11,7263,7270)"} true; + $t7 := $Dereference($t6); + + // $t8 := vector::is_empty<#0>($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:29+25 + call $t8 := $1_vector_is_empty'#0'($t7); + if ($abort_flag) { + assume {:print "$at(11,7246,7271)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(4,16):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:25+86 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:56+6 +L1: + + // $t2 := opaque begin: option::none<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:56+6 + assume {:print "$at(11,7273,7279)"} true; + + // assume And(WellFormed($t2), Le(Len<#0>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:56+6 + assume ($IsValid'$1_option_Option'#0''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none<#0>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:56+6 + assume $IsEqual'$1_option_Option'#0''($t2, $1_option_spec_none'#0'()); + + // $t2 := opaque end: option::none<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:56+6 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:25+86 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:40+7 + assume {:print "$at(11,7319,7326)"} true; +L0: + + // $t10 := vector::pop_back<#0>($t6) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:23+25 + assume {:print "$at(11,7302,7327)"} true; + call $t10,$t6 := $1_vector_pop_back'#0'($t6); + if ($abort_flag) { + assume {:print "$at(11,7302,7327)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(4,16):", $t9} $t9 == $t9; + goto L4; + } + + // $t2 := opaque begin: option::some<#0>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:18+31 + + // assume And(WellFormed($t2), Le(Len<#0>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:18+31 + assume ($IsValid'$1_option_Option'#0''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some<#0>($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:18+31 + assume $IsEqual'$1_option_Option'#0''($t2, $1_option_spec_some'#0'($t10)); + + // $t2 := opaque end: option::some<#0>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:206:18+31 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:25+86 + assume {:print "$at(11,7242,7328)"} true; +L2: + + // trace_local[old_value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:205:13+9 + assume {:print "$at(11,7230,7239)"} true; + assume {:print "$track_local(4,16,3):", $t2} $t2 == $t2; + + // vector::push_back<#0>($t6, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:207:9+29 + assume {:print "$at(11,7338,7367)"} true; + call $t6 := $1_vector_push_back'#0'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(11,7338,7367)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(4,16):", $t9} $t9 == $t9; + goto L4; + } + + // write_back[Reference($t0).vec (vector<#0>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:207:9+29 + $t0 := $UpdateMutation($t0, $Update'$1_option_Option'#0''_vec($Dereference($t0), $Dereference($t6))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:207:9+29 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,16,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:208:9+9 + assume {:print "$at(11,7377,7386)"} true; + assume {:print "$track_return(4,16,0):", $t2} $t2 == $t2; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:208:9+9 + $temp_0'$1_option_Option'#0'' := $Dereference($t0); + assume {:print "$track_local(4,16,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // assert Le(Len<#0>(select option::Option.vec($t0)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:209:5+1 + assume {:print "$at(11,7391,7392)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:212:9+16 + assume {:print "$at(11,7448,7464)"} true; + assert {:msg "assert_failed(11,7448,7464): function does not abort under this condition"} + !false; + + // assert Eq>($t2, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:213:9+28 + assume {:print "$at(11,7473,7501)"} true; + assert {:msg "assert_failed(11,7473,7501): post-condition does not hold"} + $IsEqual'$1_option_Option'#0''($t2, $t5); + + // assert Eq<#0>(option::spec_borrow<#0>($t0), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:214:9+31 + assume {:print "$at(11,7510,7541)"} true; + assert {:msg "assert_failed(11,7510,7541): post-condition does not hold"} + $IsEqual'#0'($1_option_spec_borrow'#0'($Dereference($t0)), $t1); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:214:9+31 + $ret0 := $t2; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:209:5+1 + assume {:print "$at(11,7391,7392)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:210:5+150 + assume {:print "$at(11,7397,7547)"} true; + assert {:msg "assert_failed(11,7397,7547): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:210:5+150 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun option::to_vec [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:258:5+121 +procedure {:timeLimit 80} $1_option_to_vec$verify(_$t0: $1_option_Option'#0') returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: Vec (#0); + var $t0: $1_option_Option'#0'; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#0>(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:258:5+1 + assume {:print "$at(11,8998,8999)"} true; + assume ($IsValid'$1_option_Option'#0''($t0) && (LenVec($t0->$vec) <= 1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:258:5+1 + assume {:print "$track_local(4,17,0):", $t0} $t0 == $t0; + + // $t1 := unpack option::Option<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:259:13+14 + assume {:print "$at(11,9079,9093)"} true; + $t1 := $t0->$vec; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:260:9+3 + assume {:print "$at(11,9110,9113)"} true; + assume {:print "$track_return(4,17,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:261:5+1 + assume {:print "$at(11,9118,9119)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:264:9+16 + assume {:print "$at(11,9169,9185)"} true; + assert {:msg "assert_failed(11,9169,9185): function does not abort under this condition"} + !false; + + // assert Eq>($t1, select option::Option.vec>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:265:9+27 + assume {:print "$at(11,9194,9221)"} true; + assert {:msg "assert_failed(11,9194,9221): post-condition does not hold"} + $IsEqual'vec'#0''($t1, $t0->$vec); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:265:9+27 + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.spec.move:29:9+64 +function $1_string_spec_internal_is_char_boundary(v: Vec (int), i: int): bool; +axiom (forall v: Vec (int), i: int :: +(var $$res := $1_string_spec_internal_is_char_boundary(v, i); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.spec.move:30:9+72 +function $1_string_spec_internal_sub_string(v: Vec (int), i: int, j: int): Vec (int); +axiom (forall v: Vec (int), i: int, j: int :: +(var $$res := $1_string_spec_internal_sub_string(v, i, j); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.spec.move:31:9+62 +function $1_string_spec_internal_index_of(v: Vec (int), r: Vec (int)): int; +axiom (forall v: Vec (int), r: Vec (int) :: +(var $$res := $1_string_spec_internal_index_of(v, r); +$IsValid'u64'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+81 +function {:inline} $1_string_$length(self: $1_string_String): int { + $1_vector_$length'u8'(self->$bytes) +} + +// struct string::String at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:13:5+70 +datatype $1_string_String { + $1_string_String($bytes: Vec (int)) +} +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''(s->$bytes) +} +function {:inline} $IsEqual'$1_string_String'(s1: $1_string_String, s2: $1_string_String): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun string::index_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:84:5+108 +procedure {:timeLimit 80} $1_string_index_of$verify(_$t0: $1_string_String, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $t0: $1_string_String; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:84:5+1 + assume {:print "$at(13,2996,2997)"} true; + assume $IsValid'$1_string_String'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:84:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:84:5+1 + assume {:print "$track_local(5,3,0):", $t0} $t0 == $t0; + + // trace_local[r]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:84:5+1 + assume {:print "$track_local(5,3,1):", $t1} $t1 == $t1; + + // $t2 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:27+11 + assume {:print "$at(13,3076,3087)"} true; + $t2 := $t0->$bytes; + + // $t3 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:40+8 + $t3 := $t1->$bytes; + + // $t4 := opaque begin: string::internal_index_of($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:9+40 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:9+40 + assume $IsValid'u64'($t4); + + // assume Eq($t4, string::spec_internal_index_of($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:9+40 + assume $IsEqual'u64'($t4, $1_string_spec_internal_index_of($t2, $t3)); + + // $t4 := opaque end: string::internal_index_of($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:9+40 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:85:9+40 + assume {:print "$track_return(5,3,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:86:5+1 + assume {:print "$at(13,3103,3104)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:86:5+1 + assume {:print "$at(13,3103,3104)"} true; + $ret0 := $t4; + return; + +} + +// fun string::append [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+104 +procedure {:inline 1} $1_string_append(_$t0: $Mutation ($1_string_String), _$t1: $1_string_String) returns ($ret0: $Mutation ($1_string_String)) +{ + // declare local variables + var $t2: $Mutation (Vec (int)); + var $t3: Vec (int); + var $t4: int; + var $t0: $Mutation ($1_string_String); + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + assume {:print "$at(13,1420,1421)"} true; + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[r]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + assume {:print "$track_local(5,0,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:24+15 + assume {:print "$at(13,1493,1508)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$bytes); + + // $t3 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:41+7 + $t3 := $t1->$bytes; + + // vector::append($t2, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + call $t2 := $1_vector_append'u8'($t2, $t3); + if ($abort_flag) { + assume {:print "$at(13,1478,1518)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(5,0):", $t4} $t4 == $t4; + goto L2; + } + + // write_back[Reference($t0).bytes (vector)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $t0 := $UpdateMutation($t0, $Update'$1_string_String'_bytes($Dereference($t0), $Dereference($t2))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun string::append [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+104 +procedure {:timeLimit 80} $1_string_append$verify(_$t0: $Mutation ($1_string_String), _$t1: $1_string_String) returns ($ret0: $Mutation ($1_string_String)) +{ + // declare local variables + var $t2: $Mutation (Vec (int)); + var $t3: Vec (int); + var $t4: int; + var $t0: $Mutation ($1_string_String); + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + assume {:print "$at(13,1420,1421)"} true; + assume $IsValid'$1_string_String'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[r]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:48:5+1 + assume {:print "$track_local(5,0,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:24+15 + assume {:print "$at(13,1493,1508)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$bytes); + + // $t3 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:41+7 + $t3 := $t1->$bytes; + + // vector::append($t2, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + call $t2 := $1_vector_append'u8'($t2, $t3); + if ($abort_flag) { + assume {:print "$at(13,1478,1518)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(5,0):", $t4} $t4 == $t4; + goto L2; + } + + // write_back[Reference($t0).bytes (vector)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $t0 := $UpdateMutation($t0, $Update'$1_string_String'_bytes($Dereference($t0), $Dereference($t2))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:49:9+40 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,0,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:50:5+1 + assume {:print "$at(13,1523,1524)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun string::insert [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+404 +procedure {:timeLimit 80} $1_string_insert$verify(_$t0: $Mutation ($1_string_String), _$t1: int, _$t2: $1_string_String) returns ($ret0: $Mutation ($1_string_String)) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: int; + var $t11: Vec (int); + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: bool; + var $t16: int; + var $t17: $1_string_String; + var $t18: int; + var $t19: $1_string_String; + var $t20: int; + var $t21: $1_string_String; + var $t22: $1_string_String; + var $t23: $Mutation ($1_string_String); + var $t24: $Mutation ($1_string_String); + var $t25: $1_string_String; + var $t0: $Mutation ($1_string_String); + var $t1: int; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + assume {:print "$at(13,1820,1821)"} true; + assume $IsValid'$1_string_String'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + assume $IsValid'$1_string_String'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,4,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[at]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + assume {:print "$track_local(5,4,1):", $t1} $t1 == $t1; + + // trace_local[o]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:59:5+1 + assume {:print "$track_local(5,4,2):", $t2} $t2 == $t2; + + // $t11 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:60:21+11 + assume {:print "$at(13,1899,1910)"} true; + $t11 := $Dereference($t0)->$bytes; + + // trace_local[bytes]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:60:13+5 + assume {:print "$track_local(5,4,7):", $t11} $t11 == $t11; + + // $t12 := vector::length($t11) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:23+21 + assume {:print "$at(13,1934,1955)"} true; + call $t12 := $1_vector_length'u8'($t11); + if ($abort_flag) { + assume {:print "$at(13,1934,1955)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // $t14 := <=($t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:20+2 + call $t14 := $Le($t1, $t12); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:74+5 +L1: + + // $t3 := opaque begin: string::internal_is_char_boundary($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:48+36 + assume {:print "$at(13,1959,1995)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:48+36 + assume $IsValid'bool'($t3); + + // assume Eq($t3, string::spec_internal_is_char_boundary($t11, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:48+36 + assume $IsEqual'bool'($t3, $1_string_spec_internal_is_char_boundary($t11, $t1)); + + // $t3 := opaque end: string::internal_is_char_boundary($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:48+36 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 +L0: + + // $t15 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 + assume {:print "$at(13,1928,1995)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // $t3 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 + $t3 := $t15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:17+67 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + assume {:print "$at(13,1920,2012)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + assume {:print "$at(13,1920,2012)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + assume {:print "$at(13,1920,2012)"} true; + + // $t16 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:86+14 + $t16 := 2; + assume $IsValid'u64'($t16); + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + assume {:print "$at(13,1920,2012)"} true; + assume {:print "$track_abort(5,4):", $t16} $t16 == $t16; + + // $t13 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + $t13 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:61:9+92 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:62:24+4 + assume {:print "$at(13,2037,2041)"} true; +L5: + + // $t17 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:62:24+4 + assume {:print "$at(13,2037,2041)"} true; + $t17 := $Dereference($t0); + + // $t18 := string::length($t17) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:62:17+12 + call $t18 := $1_string_length($t17); + if ($abort_flag) { + assume {:print "$at(13,2030,2042)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // trace_local[l]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:62:13+1 + assume {:print "$track_local(5,4,10):", $t18} $t18 == $t18; + + // $t19 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:63:31+13 + assume {:print "$at(13,2074,2087)"} true; + $t19 := $Dereference($t0); + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:63:38+1 + $t20 := 0; + assume $IsValid'u64'($t20); + + // $t9 := string::sub_string($t19, $t20, $t1) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:63:21+23 + call $t9 := $1_string_sub_string($t19, $t20, $t1); + if ($abort_flag) { + assume {:print "$at(13,2064,2087)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // trace_local[front]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:63:13+5 + assume {:print "$track_local(5,4,9):", $t9} $t9 == $t9; + + // $t21 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:64:29+13 + assume {:print "$at(13,2117,2130)"} true; + $t21 := $Dereference($t0); + + // $t22 := string::sub_string($t21, $t1, $t18) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:64:19+23 + call $t22 := $1_string_sub_string($t21, $t1, $t18); + if ($abort_flag) { + assume {:print "$at(13,2107,2130)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // trace_local[end]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:64:13+3 + assume {:print "$track_local(5,4,8):", $t22} $t22 == $t22; + + // $t23 := borrow_local($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:65:16+10 + assume {:print "$at(13,2147,2157)"} true; + $t23 := $Mutation($Local(9), EmptyVec(), $t9); + + // string::append($t23, $t2) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:65:9+21 + call $t23 := $1_string_append($t23, $t2); + if ($abort_flag) { + assume {:print "$at(13,2140,2161)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // write_back[LocalRoot($t9)@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:65:9+21 + $t9 := $Dereference($t23); + + // trace_local[front]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:65:9+21 + assume {:print "$track_local(5,4,9):", $t9} $t9 == $t9; + + // $t24 := borrow_local($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:66:16+10 + assume {:print "$at(13,2178,2188)"} true; + $t24 := $Mutation($Local(9), EmptyVec(), $t9); + + // string::append($t24, $t22) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:66:9+23 + call $t24 := $1_string_append($t24, $t22); + if ($abort_flag) { + assume {:print "$at(13,2171,2194)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(5,4):", $t13} $t13 == $t13; + goto L7; + } + + // write_back[LocalRoot($t9)@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:66:9+23 + $t9 := $Dereference($t24); + + // trace_local[front]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:66:9+23 + assume {:print "$track_local(5,4,9):", $t9} $t9 == $t9; + + // $t25 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:67:17+5 + assume {:print "$at(13,2212,2217)"} true; + $t25 := $t9; + + // write_ref($t0, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:67:9+13 + $t0 := $UpdateMutation($t0, $t25); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:67:22+1 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,4,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:68:5+1 + assume {:print "$at(13,2223,2224)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:68:5+1 + assume {:print "$at(13,2223,2224)"} true; + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:68:5+1 +L7: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:68:5+1 + assume {:print "$at(13,2223,2224)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun string::is_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:38:5+86 +procedure {:timeLimit 80} $1_string_is_empty$verify(_$t0: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: int; + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:38:5+1 + assume {:print "$at(13,1162,1163)"} true; + assume $IsValid'$1_string_String'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:38:5+1 + assume {:print "$track_local(5,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:39:26+11 + assume {:print "$at(13,1230,1241)"} true; + $t1 := $t0->$bytes; + + // $t2 := vector::is_empty($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:39:9+29 + call $t2 := $1_vector_is_empty'u8'($t1); + if ($abort_flag) { + assume {:print "$at(13,1213,1242)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(5,9):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:39:9+29 + assume {:print "$track_return(5,9,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:40:5+1 + assume {:print "$at(13,1247,1248)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:40:5+1 + assume {:print "$at(13,1247,1248)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:40:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:40:5+1 + assume {:print "$at(13,1247,1248)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun string::length [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+81 +procedure {:inline 1} $1_string_length(_$t0: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+1 + assume {:print "$at(13,1307,1308)"} true; + assume {:print "$track_local(5,10,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:24+11 + assume {:print "$at(13,1370,1381)"} true; + $t1 := $t0->$bytes; + + // $t2 := vector::length($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:9+27 + call $t2 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(13,1355,1382)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(5,10):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:9+27 + assume {:print "$track_return(5,10,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun string::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+81 +procedure {:timeLimit 80} $1_string_length$verify(_$t0: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+1 + assume {:print "$at(13,1307,1308)"} true; + assume $IsValid'$1_string_String'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:43:5+1 + assume {:print "$track_local(5,10,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:24+11 + assume {:print "$at(13,1370,1381)"} true; + $t1 := $t0->$bytes; + + // $t2 := vector::length($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:9+27 + call $t2 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(13,1355,1382)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(5,10):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:44:9+27 + assume {:print "$track_return(5,10,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:45:5+1 + assume {:print "$at(13,1387,1388)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun string::append_utf8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:53:5+102 +procedure {:timeLimit 80} $1_string_append_utf8$verify(_$t0: $Mutation ($1_string_String), _$t1: Vec (int)) returns ($ret0: $Mutation ($1_string_String)) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: int; + var $t0: $Mutation ($1_string_String); + var $t1: Vec (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:53:5+1 + assume {:print "$at(13,1588,1589)"} true; + assume $IsValid'$1_string_String'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:53:5+1 + assume $IsValid'vec'u8''($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:53:5+1 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,1,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // trace_local[bytes]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:53:5+1 + assume {:print "$track_local(5,1,1):", $t1} $t1 == $t1; + + // $t2 := string::utf8($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:54:22+11 + assume {:print "$at(13,1672,1683)"} true; + call $t2 := $1_string_utf8($t1); + if ($abort_flag) { + assume {:print "$at(13,1672,1683)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(5,1):", $t3} $t3 == $t3; + goto L2; + } + + // string::append($t0, $t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:54:9+25 + call $t0 := $1_string_append($t0, $t2); + if ($abort_flag) { + assume {:print "$at(13,1659,1684)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(5,1):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:54:9+25 + $temp_0'$1_string_String' := $Dereference($t0); + assume {:print "$track_local(5,1,0):", $temp_0'$1_string_String'} $temp_0'$1_string_String' == $temp_0'$1_string_String'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:55:5+1 + assume {:print "$at(13,1689,1690)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:55:5+1 + assume {:print "$at(13,1689,1690)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:55:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:55:5+1 + assume {:print "$at(13,1689,1690)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun string::bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:33:5+72 +procedure {:inline 1} $1_string_bytes(_$t0: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:33:5+1 + assume {:print "$at(13,1039,1040)"} true; + assume {:print "$track_local(5,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:34:9+11 + assume {:print "$at(13,1094,1105)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:34:9+11 + assume {:print "$track_return(5,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:35:5+1 + assume {:print "$at(13,1110,1111)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:35:5+1 + assume {:print "$at(13,1110,1111)"} true; + $ret0 := $t1; + return; + +} + +// fun string::bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:33:5+72 +procedure {:timeLimit 80} $1_string_bytes$verify(_$t0: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:33:5+1 + assume {:print "$at(13,1039,1040)"} true; + assume $IsValid'$1_string_String'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:33:5+1 + assume {:print "$track_local(5,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:34:9+11 + assume {:print "$at(13,1094,1105)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:34:9+11 + assume {:print "$track_return(5,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:35:5+1 + assume {:print "$at(13,1110,1111)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:35:5+1 + assume {:print "$at(13,1110,1111)"} true; + $ret0 := $t1; + return; + +} + +// fun string::sub_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+362 +procedure {:inline 1} $1_string_sub_string(_$t0: $1_string_String, _$t1: int, _$t2: int) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: Vec (int); + var $t7: int; + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: bool; + var $t15: int; + var $t16: Vec (int); + var $t17: $1_string_String; + var $t0: $1_string_String; + var $t1: int; + var $t2: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$at(13,2520,2521)"} true; + assume {:print "$track_local(5,11,0):", $t0} $t0 == $t0; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$track_local(5,11,1):", $t1} $t1 == $t1; + + // trace_local[j]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$track_local(5,11,2):", $t2} $t2 == $t2; + + // $t8 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:74:21+11 + assume {:print "$at(13,2603,2614)"} true; + $t8 := $t0->$bytes; + + // trace_local[bytes]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:74:13+5 + assume {:print "$track_local(5,11,6):", $t8} $t8 == $t8; + + // $t9 := vector::length($t8) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:75:17+21 + assume {:print "$at(13,2632,2653)"} true; + call $t9 := $1_vector_length'u8'($t8); + if ($abort_flag) { + assume {:print "$at(13,2632,2653)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(5,11):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[l]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:75:13+1 + assume {:print "$track_local(5,11,7):", $t9} $t9 == $t9; + + // $t11 := <=($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:15+2 + assume {:print "$at(13,2686,2688)"} true; + call $t11 := $Le($t2, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:23+1 +L1: + + // $t3 := <=($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:25+2 + assume {:print "$at(13,2696,2698)"} true; + call $t3 := $Le($t1, $t2); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 +L0: + + // $t12 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + assume {:print "$at(13,2684,2700)"} true; + $t12 := false; + assume $IsValid'bool'($t12); + + // $t3 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + $t3 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + assume {:print "$at(13,2684,2739)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:59+5 +L4: + + // $t4 := opaque begin: string::internal_is_char_boundary($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume {:print "$at(13,2704,2739)"} true; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume $IsValid'bool'($t4); + + // assume Eq($t4, string::spec_internal_is_char_boundary($t8, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume $IsEqual'bool'($t4, $1_string_spec_internal_is_char_boundary($t8, $t1)); + + // $t4 := opaque end: string::internal_is_char_boundary($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 +L3: + + // $t13 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + assume {:print "$at(13,2684,2739)"} true; + $t13 := false; + assume $IsValid'bool'($t13); + + // $t4 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + $t4 := $t13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 +L5: + + // if ($t4) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + assume {:print "$at(13,2684,2778)"} true; + if ($t4) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:98+5 +L7: + + // $t5 := opaque begin: string::internal_is_char_boundary($t8, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume {:print "$at(13,2743,2778)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume $IsValid'bool'($t5); + + // assume Eq($t5, string::spec_internal_is_char_boundary($t8, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume $IsEqual'bool'($t5, $1_string_spec_internal_is_char_boundary($t8, $t2)); + + // $t5 := opaque end: string::internal_is_char_boundary($t8, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 +L6: + + // $t14 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + assume {:print "$at(13,2684,2778)"} true; + $t14 := false; + assume $IsValid'bool'($t14); + + // $t5 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + $t5 := $t14; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 +L8: + + // if ($t5) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + if ($t5) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 +L9: + + // $t15 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:78:13+14 + assume {:print "$at(13,2792,2806)"} true; + $t15 := 2; + assume $IsValid'u64'($t15); + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + assume {:print "$track_abort(5,11):", $t15} $t15 == $t15; + + // $t10 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + $t10 := $t15; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:45+5 + assume {:print "$at(13,2862,2867)"} true; +L11: + + // $t16 := opaque begin: string::internal_sub_string($t8, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume {:print "$at(13,2842,2874)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume $IsValid'vec'u8''($t16); + + // assume Eq>($t16, string::spec_internal_sub_string($t8, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume $IsEqual'vec'u8''($t16, $1_string_spec_internal_sub_string($t8, $t1, $t2)); + + // $t16 := opaque end: string::internal_sub_string($t8, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + + // $t17 := pack string::String($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:9+50 + $t17 := $1_string_String($t16); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:9+50 + assume {:print "$track_return(5,11,0):", $t17} $t17 == $t17; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; +L12: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; + $ret0 := $t17; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 +L13: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun string::sub_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+362 +procedure {:timeLimit 80} $1_string_sub_string$verify(_$t0: $1_string_String, _$t1: int, _$t2: int) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: Vec (int); + var $t7: int; + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: bool; + var $t15: int; + var $t16: Vec (int); + var $t17: $1_string_String; + var $t0: $1_string_String; + var $t1: int; + var $t2: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$at(13,2520,2521)"} true; + assume $IsValid'$1_string_String'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume $IsValid'u64'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$track_local(5,11,0):", $t0} $t0 == $t0; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$track_local(5,11,1):", $t1} $t1 == $t1; + + // trace_local[j]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:73:5+1 + assume {:print "$track_local(5,11,2):", $t2} $t2 == $t2; + + // $t8 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:74:21+11 + assume {:print "$at(13,2603,2614)"} true; + $t8 := $t0->$bytes; + + // trace_local[bytes]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:74:13+5 + assume {:print "$track_local(5,11,6):", $t8} $t8 == $t8; + + // $t9 := vector::length($t8) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:75:17+21 + assume {:print "$at(13,2632,2653)"} true; + call $t9 := $1_vector_length'u8'($t8); + if ($abort_flag) { + assume {:print "$at(13,2632,2653)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(5,11):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[l]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:75:13+1 + assume {:print "$track_local(5,11,7):", $t9} $t9 == $t9; + + // $t11 := <=($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:15+2 + assume {:print "$at(13,2686,2688)"} true; + call $t11 := $Le($t2, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:23+1 +L1: + + // $t3 := <=($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:25+2 + assume {:print "$at(13,2696,2698)"} true; + call $t3 := $Le($t1, $t2); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 +L0: + + // $t12 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + assume {:print "$at(13,2684,2700)"} true; + $t12 := false; + assume $IsValid'bool'($t12); + + // $t3 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 + $t3 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+16 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + assume {:print "$at(13,2684,2739)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:59+5 +L4: + + // $t4 := opaque begin: string::internal_is_char_boundary($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume {:print "$at(13,2704,2739)"} true; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume $IsValid'bool'($t4); + + // assume Eq($t4, string::spec_internal_is_char_boundary($t8, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + assume $IsEqual'bool'($t4, $1_string_spec_internal_is_char_boundary($t8, $t1)); + + // $t4 := opaque end: string::internal_is_char_boundary($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:33+35 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 +L3: + + // $t13 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + assume {:print "$at(13,2684,2739)"} true; + $t13 := false; + assume $IsValid'bool'($t13); + + // $t4 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 + $t4 := $t13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+55 +L5: + + // if ($t4) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + assume {:print "$at(13,2684,2778)"} true; + if ($t4) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:98+5 +L7: + + // $t5 := opaque begin: string::internal_is_char_boundary($t8, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume {:print "$at(13,2743,2778)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume $IsValid'bool'($t5); + + // assume Eq($t5, string::spec_internal_is_char_boundary($t8, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + assume $IsEqual'bool'($t5, $1_string_spec_internal_is_char_boundary($t8, $t2)); + + // $t5 := opaque end: string::internal_is_char_boundary($t8, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:72+35 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 +L6: + + // $t14 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + assume {:print "$at(13,2684,2778)"} true; + $t14 := false; + assume $IsValid'bool'($t14); + + // $t5 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 + $t5 := $t14; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:77:13+94 +L8: + + // if ($t5) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + if ($t5) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 +L9: + + // $t15 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:78:13+14 + assume {:print "$at(13,2792,2806)"} true; + $t15 := 2; + assume $IsValid'u64'($t15); + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + assume {:print "$at(13,2663,2816)"} true; + assume {:print "$track_abort(5,11):", $t15} $t15 == $t15; + + // $t10 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + $t10 := $t15; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:76:9+153 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:45+5 + assume {:print "$at(13,2862,2867)"} true; +L11: + + // $t16 := opaque begin: string::internal_sub_string($t8, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume {:print "$at(13,2842,2874)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume $IsValid'vec'u8''($t16); + + // assume Eq>($t16, string::spec_internal_sub_string($t8, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + assume $IsEqual'vec'u8''($t16, $1_string_spec_internal_sub_string($t8, $t1, $t2)); + + // $t16 := opaque end: string::internal_sub_string($t8, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:25+32 + + // $t17 := pack string::String($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:9+50 + $t17 := $1_string_String($t16); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:80:9+50 + assume {:print "$track_return(5,11,0):", $t17} $t17 == $t17; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; +L12: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; + $ret0 := $t17; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 +L13: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:81:5+1 + assume {:print "$at(13,2881,2882)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun string::try_utf8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:24:5+199 +procedure {:timeLimit 80} $1_string_try_utf8$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_string_String') +{ + // declare local variables + var $t1: $1_option_Option'$1_string_String'; + var $t2: bool; + var $t3: $1_string_String; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:24:5+1 + assume {:print "$at(13,775,776)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:24:5+1 + assume {:print "$track_local(5,12,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: string::internal_check_utf8($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:13+27 + assume {:print "$at(13,844,871)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:13+27 + assume $IsValid'bool'($t2); + + // assume Eq($t2, string::spec_internal_check_utf8($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:13+27 + assume $IsEqual'bool'($t2, $1_string_spec_internal_check_utf8($t0)); + + // $t2 := opaque end: string::internal_check_utf8($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:13+27 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:9+128 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:33+5 + assume {:print "$at(13,907,912)"} true; +L1: + + // $t3 := pack string::String($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:26+13 + assume {:print "$at(13,900,913)"} true; + $t3 := $1_string_String($t0); + + // $t1 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:13+27 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:13+27 + assume ($IsValid'$1_option_Option'$1_string_String''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:13+27 + assume $IsEqual'$1_option_Option'$1_string_String''($t1, $1_option_spec_some'$1_string_String'($t3)); + + // $t1 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:26:13+27 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:9+128 + assume {:print "$at(13,840,968)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:28:13+14 + assume {:print "$at(13,944,958)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:28:13+14 + assume {:print "$at(13,944,958)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:28:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:28:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t1, $1_option_spec_none'$1_string_String'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:28:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:9+128 + assume {:print "$at(13,840,968)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:25:9+128 + assume {:print "$at(13,840,968)"} true; + assume {:print "$track_return(5,12,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:30:5+1 + assume {:print "$at(13,973,974)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:30:5+1 + assume {:print "$at(13,973,974)"} true; + $ret0 := $t1; + return; + +} + +// fun string::utf8 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:18:5+1 + assume {:print "$at(13,573,574)"} true; + assume {:print "$track_local(5,13,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: string::internal_check_utf8($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + assume {:print "$at(13,634,661)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + assume $IsValid'bool'($t1); + + // assume Eq($t1, string::spec_internal_check_utf8($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(13,626,677)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:46+13 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:46+13 + assume {:print "$at(13,663,676)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(13,626,677)"} true; + assume {:print "$track_abort(5,13):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:16+5 + assume {:print "$at(13,694,699)"} true; +L2: + + // $t3 := pack string::String($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:9+13 + assume {:print "$at(13,687,700)"} true; + $t3 := $1_string_String($t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:9+13 + assume {:print "$track_return(5,13,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; +L3: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun string::utf8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:18:5+133 +procedure {:timeLimit 80} $1_string_utf8$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:18:5+1 + assume {:print "$at(13,573,574)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:18:5+1 + assume {:print "$track_local(5,13,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: string::internal_check_utf8($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + assume {:print "$at(13,634,661)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + assume $IsValid'bool'($t1); + + // assume Eq($t1, string::spec_internal_check_utf8($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:17+27 + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(13,626,677)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:46+13 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:46+13 + assume {:print "$at(13,663,676)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + assume {:print "$at(13,626,677)"} true; + assume {:print "$track_abort(5,13):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:19:9+51 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:16+5 + assume {:print "$at(13,694,699)"} true; +L2: + + // $t3 := pack string::String($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:9+13 + assume {:print "$at(13,687,700)"} true; + $t3 := $1_string_String($t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:20:9+13 + assume {:print "$track_return(5,13,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; +L3: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/string.move:21:5+1 + assume {:print "$at(13,705,706)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:12:5+1 + assume {:print "$at(12,395,396)"} true; + assume {:print "$track_local(6,0,0):", $t0} $t0 == $t0; + + // $t1 := signer::borrow_address($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:13:10+17 + assume {:print "$at(12,449,466)"} true; + call $t1 := $1_signer_borrow_address($t0); + if ($abort_flag) { + assume {:print "$at(12,449,466)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(6,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:13:9+18 + assume {:print "$track_return(6,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun signer::address_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:12:5+77 +procedure {:timeLimit 80} $1_signer_address_of$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:12:5+1 + assume {:print "$at(12,395,396)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:12:5+1 + assume {:print "$track_local(6,0,0):", $t0} $t0 == $t0; + + // $t1 := signer::borrow_address($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:13:10+17 + assume {:print "$at(12,449,466)"} true; + call $t1 := $1_signer_borrow_address($t0); + if ($abort_flag) { + assume {:print "$at(12,449,466)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(6,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:13:9+18 + assume {:print "$track_return(6,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/signer.move:14:5+1 + assume {:print "$at(12,471,472)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun error::aborted [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:3+57 +procedure {:inline 1} $1_error_aborted(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:3+1 + assume {:print "$at(8,3525,3526)"} true; + assume {:print "$track_local(7,0,0):", $t0} $t0 == $t0; + + // $t1 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:47+7 + $t1 := 7; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume {:print "$at(8,3559,3580)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume {:print "$track_return(7,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:59+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:59+1 + assume {:print "$at(8,3581,3582)"} true; + $ret0 := $t3; + return; + +} + +// fun error::aborted [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:3+57 +procedure {:timeLimit 80} $1_error_aborted$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:3+1 + assume {:print "$at(8,3525,3526)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:3+1 + assume {:print "$track_local(7,0,0):", $t0} $t0 == $t0; + + // $t1 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:47+7 + $t1 := 7; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume {:print "$at(8,3559,3580)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:37+21 + assume {:print "$track_return(7,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:59+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:82:59+1 + assume {:print "$at(8,3581,3582)"} true; + $ret0 := $t3; + return; + +} + +// fun error::already_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:3+1 + assume {:print "$at(8,3585,3586)"} true; + assume {:print "$track_local(7,1,0):", $t0} $t0 == $t0; + + // $t1 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:54+14 + $t1 := 8; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume {:print "$at(8,3626,3654)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume {:print "$track_return(7,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:73+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:73+1 + assume {:print "$at(8,3655,3656)"} true; + $ret0 := $t3; + return; + +} + +// fun error::already_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:3+71 +procedure {:timeLimit 80} $1_error_already_exists$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:3+1 + assume {:print "$at(8,3585,3586)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:3+1 + assume {:print "$track_local(7,1,0):", $t0} $t0 == $t0; + + // $t1 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:54+14 + $t1 := 8; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume {:print "$at(8,3626,3654)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:44+28 + assume {:print "$track_return(7,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:73+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:83:73+1 + assume {:print "$at(8,3655,3656)"} true; + $ret0 := $t3; + return; + +} + +// fun error::canonical [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:64:3+89 +procedure {:timeLimit 80} $1_error_canonical$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: int; + var $t1: int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:64:3+1 + assume {:print "$at(8,2705,2706)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:64:3+1 + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t0, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t0, 16)); + + // trace_local[category]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:64:3+1 + assume {:print "$at(8,2705,2706)"} true; + assume {:print "$track_local(7,2,0):", $t0} $t0 == $t0; + + // trace_local[reason]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:64:3+1 + assume {:print "$track_local(7,2,1):", $t1} $t1 == $t1; + + // $t3 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:65:18+2 + assume {:print "$at(8,2778,2780)"} true; + $t3 := 16; + assume $IsValid'u8'($t3); + + // $t4 := <<($t0, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:65:15+2 + call $t4 := $ShlU64($t0, $t3); + if ($abort_flag) { + assume {:print "$at(8,2775,2777)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(7,2):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := +($t4, $t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:65:22+1 + call $t6 := $AddU64($t4, $t1); + if ($abort_flag) { + assume {:print "$at(8,2782,2783)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(7,2):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:65:5+25 + assume {:print "$track_return(7,2,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:66:3+1 + assume {:print "$at(8,2793,2794)"} true; +L1: + + // assert Eq($t6, Add($t2, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:70:5+46 + assume {:print "$at(8,2878,2924)"} true; + assert {:msg "assert_failed(8,2878,2924): post-condition does not hold"} + $IsEqual'u64'($t6, ($t2 + $t1)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:70:5+46 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:66:3+1 + assume {:print "$at(8,2793,2794)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:66:3+1 + assume {:print "$at(8,2793,2794)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun error::internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:3+60 +procedure {:inline 1} $1_error_internal(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:3+1 + assume {:print "$at(8,3742,3743)"} true; + assume {:print "$track_local(7,3,0):", $t0} $t0 == $t0; + + // $t1 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:49+8 + $t1 := 11; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume {:print "$at(8,3778,3800)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume {:print "$track_return(7,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:62+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:62+1 + assume {:print "$at(8,3801,3802)"} true; + $ret0 := $t3; + return; + +} + +// fun error::internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:3+60 +procedure {:timeLimit 80} $1_error_internal$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:3+1 + assume {:print "$at(8,3742,3743)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:3+1 + assume {:print "$track_local(7,3,0):", $t0} $t0 == $t0; + + // $t1 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:49+8 + $t1 := 11; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume {:print "$at(8,3778,3800)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:39+22 + assume {:print "$track_return(7,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:62+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:85:62+1 + assume {:print "$at(8,3801,3802)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_argument [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:3+1 + assume {:print "$at(8,3082,3083)"} true; + assume {:print "$track_local(7,4,0):", $t0} $t0 == $t0; + + // $t1 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:57+16 + $t1 := 1; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume {:print "$at(8,3126,3156)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume {:print "$track_return(7,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:78+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:78+1 + assume {:print "$at(8,3157,3158)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_argument [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:3+76 +procedure {:timeLimit 80} $1_error_invalid_argument$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:3+1 + assume {:print "$at(8,3082,3083)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:3+1 + assume {:print "$track_local(7,4,0):", $t0} $t0 == $t0; + + // $t1 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:57+16 + $t1 := 1; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume {:print "$at(8,3126,3156)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:47+30 + assume {:print "$track_return(7,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:78+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:76:78+1 + assume {:print "$at(8,3157,3158)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_state [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:3+1 + assume {:print "$at(8,3232,3233)"} true; + assume {:print "$track_local(7,5,0):", $t0} $t0 == $t0; + + // $t1 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:54+13 + $t1 := 3; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume {:print "$at(8,3273,3300)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume {:print "$track_return(7,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:72+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:72+1 + assume {:print "$at(8,3301,3302)"} true; + $ret0 := $t3; + return; + +} + +// fun error::invalid_state [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:3+70 +procedure {:timeLimit 80} $1_error_invalid_state$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:3+1 + assume {:print "$at(8,3232,3233)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:3+1 + assume {:print "$track_local(7,5,0):", $t0} $t0 == $t0; + + // $t1 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:54+13 + $t1 := 3; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume {:print "$at(8,3273,3300)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:44+27 + assume {:print "$track_return(7,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:72+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:78:72+1 + assume {:print "$at(8,3301,3302)"} true; + $ret0 := $t3; + return; + +} + +// fun error::not_found [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:3+1 + assume {:print "$at(8,3461,3462)"} true; + assume {:print "$track_local(7,6,0):", $t0} $t0 == $t0; + + // $t1 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:49+9 + $t1 := 6; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume {:print "$at(8,3497,3520)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume {:print "$track_return(7,6,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:63+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:63+1 + assume {:print "$at(8,3521,3522)"} true; + $ret0 := $t3; + return; + +} + +// fun error::not_found [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:3+61 +procedure {:timeLimit 80} $1_error_not_found$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:3+1 + assume {:print "$at(8,3461,3462)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:3+1 + assume {:print "$track_local(7,6,0):", $t0} $t0 == $t0; + + // $t1 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:49+9 + $t1 := 6; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume {:print "$at(8,3497,3520)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:39+23 + assume {:print "$track_return(7,6,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:63+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:81:63+1 + assume {:print "$at(8,3521,3522)"} true; + $ret0 := $t3; + return; + +} + +// fun error::not_implemented [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:3+74 +procedure {:inline 1} $1_error_not_implemented(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:3+1 + assume {:print "$at(8,3805,3806)"} true; + assume {:print "$track_local(7,7,0):", $t0} $t0 == $t0; + + // $t1 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:56+15 + $t1 := 12; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume {:print "$at(8,3848,3877)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume {:print "$track_return(7,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:76+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:76+1 + assume {:print "$at(8,3878,3879)"} true; + $ret0 := $t3; + return; + +} + +// fun error::not_implemented [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:3+74 +procedure {:timeLimit 80} $1_error_not_implemented$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:3+1 + assume {:print "$at(8,3805,3806)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:3+1 + assume {:print "$track_local(7,7,0):", $t0} $t0 == $t0; + + // $t1 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:56+15 + $t1 := 12; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume {:print "$at(8,3848,3877)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:46+29 + assume {:print "$track_return(7,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:76+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:86:76+1 + assume {:print "$at(8,3878,3879)"} true; + $ret0 := $t3; + return; + +} + +// fun error::out_of_range [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:3+1 + assume {:print "$at(8,3161,3162)"} true; + assume {:print "$track_local(7,8,0):", $t0} $t0 == $t0; + + // $t1 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:53+12 + $t1 := 2; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume {:print "$at(8,3201,3227)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume {:print "$track_return(7,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:70+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:70+1 + assume {:print "$at(8,3228,3229)"} true; + $ret0 := $t3; + return; + +} + +// fun error::out_of_range [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:3+68 +procedure {:timeLimit 80} $1_error_out_of_range$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:3+1 + assume {:print "$at(8,3161,3162)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:3+1 + assume {:print "$track_local(7,8,0):", $t0} $t0 == $t0; + + // $t1 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:53+12 + $t1 := 2; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume {:print "$at(8,3201,3227)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:43+26 + assume {:print "$track_return(7,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:70+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:77:70+1 + assume {:print "$at(8,3228,3229)"} true; + $ret0 := $t3; + return; + +} + +// fun error::permission_denied [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:3+1 + assume {:print "$at(8,3381,3382)"} true; + assume {:print "$track_local(7,9,0):", $t0} $t0 == $t0; + + // $t1 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:57+17 + $t1 := 5; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume {:print "$at(8,3425,3456)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume {:print "$track_return(7,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:79+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:79+1 + assume {:print "$at(8,3457,3458)"} true; + $ret0 := $t3; + return; + +} + +// fun error::permission_denied [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:3+77 +procedure {:timeLimit 80} $1_error_permission_denied$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:3+1 + assume {:print "$at(8,3381,3382)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:3+1 + assume {:print "$track_local(7,9,0):", $t0} $t0 == $t0; + + // $t1 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:57+17 + $t1 := 5; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume {:print "$at(8,3425,3456)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:47+31 + assume {:print "$track_return(7,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:79+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:80:79+1 + assume {:print "$at(8,3457,3458)"} true; + $ret0 := $t3; + return; + +} + +// fun error::resource_exhausted [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:3+80 +procedure {:inline 1} $1_error_resource_exhausted(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:3+1 + assume {:print "$at(8,3659,3660)"} true; + assume {:print "$track_local(7,10,0):", $t0} $t0 == $t0; + + // $t1 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:59+18 + $t1 := 9; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume {:print "$at(8,3705,3737)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume {:print "$track_return(7,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:82+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:82+1 + assume {:print "$at(8,3738,3739)"} true; + $ret0 := $t3; + return; + +} + +// fun error::resource_exhausted [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:3+80 +procedure {:timeLimit 80} $1_error_resource_exhausted$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:3+1 + assume {:print "$at(8,3659,3660)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:3+1 + assume {:print "$track_local(7,10,0):", $t0} $t0 == $t0; + + // $t1 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:59+18 + $t1 := 9; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume {:print "$at(8,3705,3737)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:49+32 + assume {:print "$track_return(7,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:82+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:84:82+1 + assume {:print "$at(8,3738,3739)"} true; + $ret0 := $t3; + return; + +} + +// fun error::unauthenticated [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:3+1 + assume {:print "$at(8,3305,3306)"} true; + assume {:print "$track_local(7,11,0):", $t0} $t0 == $t0; + + // $t1 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:55+15 + $t1 := 4; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume {:print "$at(8,3347,3376)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume {:print "$track_return(7,11,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:75+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:75+1 + assume {:print "$at(8,3377,3378)"} true; + $ret0 := $t3; + return; + +} + +// fun error::unauthenticated [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:3+73 +procedure {:timeLimit 80} $1_error_unauthenticated$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:3+1 + assume {:print "$at(8,3305,3306)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:3+1 + assume {:print "$track_local(7,11,0):", $t0} $t0 == $t0; + + // $t1 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:55+15 + $t1 := 4; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume {:print "$at(8,3347,3376)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:45+29 + assume {:print "$track_return(7,11,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:75+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:79:75+1 + assume {:print "$at(8,3377,3378)"} true; + $ret0 := $t3; + return; + +} + +// fun error::unavailable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:3+65 +procedure {:inline 1} $1_error_unavailable(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:3+1 + assume {:print "$at(8,3882,3883)"} true; + assume {:print "$track_local(7,12,0):", $t0} $t0 == $t0; + + // $t1 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:51+11 + $t1 := 13; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume {:print "$at(8,3920,3945)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume {:print "$track_return(7,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:67+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:67+1 + assume {:print "$at(8,3946,3947)"} true; + $ret0 := $t3; + return; + +} + +// fun error::unavailable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:3+65 +procedure {:timeLimit 80} $1_error_unavailable$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:3+1 + assume {:print "$at(8,3882,3883)"} true; + assume $IsValid'u64'($t0); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:3+1 + assume {:print "$track_local(7,12,0):", $t0} $t0 == $t0; + + // $t1 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:51+11 + $t1 := 13; + assume $IsValid'u64'($t1); + + // assume Identical($t2, Shl($t1, 16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:69:5+29 + assume {:print "$at(8,2844,2873)"} true; + assume ($t2 == $shlU64($t1, 16)); + + // $t3 := opaque begin: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume {:print "$at(8,3920,3945)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume $IsValid'u64'($t3); + + // assume Eq($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume $IsEqual'u64'($t3, $t1); + + // $t3 := opaque end: error::canonical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:41+25 + assume {:print "$track_return(7,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:67+1 +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/error.move:87:67+1 + assume {:print "$at(8,3946,3947)"} true; + $ret0 := $t3; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:42:10+233 +function {:inline} $1_features_spec_contains(features: Vec (bv8), feature: int): bool { + ($Gt'Bv8'($And'Bv8'($int2bv.8($shlU8(1, (feature mod 8))), ReadVec(features, (feature div 8))), 0bv8) && ((feature div 8) < LenVec(features))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:59:10+40 +function $1_features_spec_is_enabled(feature: int): bool; +axiom (forall feature: int :: +(var $$res := $1_features_spec_is_enabled(feature); +$IsValid'bool'($$res))); + +// struct features::Features at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:624:5+61 +datatype $1_features_Features { + $1_features_Features($features: Vec (bv8)) +} +function {:inline} $Update'$1_features_Features'_features(s: $1_features_Features, x: Vec (bv8)): $1_features_Features { + $1_features_Features(x) +} +function $IsValid'$1_features_Features'(s: $1_features_Features): bool { + $IsValid'vec'bv8''(s->$features) +} +function {:inline} $IsEqual'$1_features_Features'(s1: $1_features_Features, s2: $1_features_Features): bool { + $IsEqual'vec'bv8''(s1->$features, s2->$features)} +var $1_features_Features_$memory: $Memory $1_features_Features; + +// struct features::PendingFeatures at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:630:5+68 +datatype $1_features_PendingFeatures { + $1_features_PendingFeatures($features: Vec (bv8)) +} +function {:inline} $Update'$1_features_PendingFeatures'_features(s: $1_features_PendingFeatures, x: Vec (bv8)): $1_features_PendingFeatures { + $1_features_PendingFeatures(x) +} +function $IsValid'$1_features_PendingFeatures'(s: $1_features_PendingFeatures): bool { + $IsValid'vec'bv8''(s->$features) +} +function {:inline} $IsEqual'$1_features_PendingFeatures'(s1: $1_features_PendingFeatures, s2: $1_features_PendingFeatures): bool { + $IsEqual'vec'bv8''(s1->$features, s2->$features)} +var $1_features_PendingFeatures_$memory: $Memory $1_features_PendingFeatures; + +// fun features::contains [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+257 +procedure {:inline 1} $1_features_contains(_$t0: Vec (bv8), _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: 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: bool; + var $t15: bv8; + var $t16: bv8; + var $t17: bv8; + var $t18: bool; + var $t0: Vec (bv8); + var $t1: int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume {:print "$at(6,27479,27480)"} true; + assume {:print "$track_local(8,23,0):", $t0} $t0 == $t0; + + // trace_local[feature]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume {:print "$track_local(8,23,1):", $t1} $t1 == $t1; + + // $t5 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:36+1 + assume {:print "$at(6,27572,27573)"} true; + $t5 := 8; + assume $IsValid'u64'($t5); + + // $t6 := /($t1, $t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:34+1 + call $t6 := $Div($t1, $t5); + if ($abort_flag) { + assume {:print "$at(6,27570,27571)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[byte_index]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:13+10 + assume {:print "$track_local(8,23,4):", $t6} $t6 == $t6; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:24+1 + assume {:print "$at(6,27598,27599)"} true; + $t8 := 1; + assume $IsValid'u8'($t8); + + // $t9 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:41+1 + $t9 := 8; + assume $IsValid'u64'($t9); + + // $t10 := %($t1, $t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:39+1 + call $t10 := $Mod($t1, $t9); + if ($abort_flag) { + assume {:print "$at(6,27613,27614)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t11 := (u8)($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:29+21 + call $t11 := $CastU8($t10); + if ($abort_flag) { + assume {:print "$at(6,27603,27624)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t12 := <<($t8, $t11) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:26+2 + call $t12 := $ShlU8($t8, $t11); + if ($abort_flag) { + assume {:print "$at(6,27600,27602)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[bit_mask]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:13+8 + assume {:print "$track_local(8,23,3):", $t12} $t12 == $t12; + + // $t13 := vector::length($t0) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:22+24 + assume {:print "$at(6,27647,27671)"} true; + call $t13 := $1_vector_length'bv8'($t0); + if ($abort_flag) { + assume {:print "$at(6,27647,27671)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t14 := <($t6, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:20+1 + call $t14 := $Lt($t6, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:67+8 +L1: + + // $t15 := vector::borrow($t0, $t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:52+36 + assume {:print "$at(6,27677,27713)"} true; + call $t15 := $1_vector_borrow'bv8'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(6,27677,27713)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t16 := &($t15, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:89+1 + call $t16 := $AndBv8($t15, $int2bv.8($t12)); + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:104+1 + $t17 := 0bv8; + assume $IsValid'bv8'($t17); + + // $t2 := !=($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:101+2 + $t2 := !$IsEqual'bv8'($t16, $t17); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 +L0: + + // $t18 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + assume {:print "$at(6,27634,27730)"} true; + $t18 := false; + assume $IsValid'bool'($t18); + + // $t2 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + $t2 := $t18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + assume {:print "$at(6,27634,27730)"} true; + assume {:print "$track_return(8,23,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 + assume {:print "$at(6,27735,27736)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 + assume {:print "$at(6,27735,27736)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 + assume {:print "$at(6,27735,27736)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun features::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+257 +procedure {:timeLimit 80} $1_features_contains$verify(_$t0: Vec (bv8), _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: 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: bool; + var $t15: bv8; + var $t16: bv8; + var $t17: bv8; + var $t18: bool; + var $t0: Vec (bv8); + var $t1: int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume {:print "$at(6,27479,27480)"} true; + assume $IsValid'vec'bv8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume $IsValid'u64'($t1); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume {:print "$track_local(8,23,0):", $t0} $t0 == $t0; + + // trace_local[feature]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:722:5+1 + assume {:print "$track_local(8,23,1):", $t1} $t1 == $t1; + + // $t5 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:36+1 + assume {:print "$at(6,27572,27573)"} true; + $t5 := 8; + assume $IsValid'u64'($t5); + + // $t6 := /($t1, $t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:34+1 + call $t6 := $Div($t1, $t5); + if ($abort_flag) { + assume {:print "$at(6,27570,27571)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[byte_index]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:723:13+10 + assume {:print "$track_local(8,23,4):", $t6} $t6 == $t6; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:24+1 + assume {:print "$at(6,27598,27599)"} true; + $t8 := 1; + assume $IsValid'u8'($t8); + + // $t9 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:41+1 + $t9 := 8; + assume $IsValid'u64'($t9); + + // $t10 := %($t1, $t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:39+1 + call $t10 := $Mod($t1, $t9); + if ($abort_flag) { + assume {:print "$at(6,27613,27614)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t11 := (u8)($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:29+21 + call $t11 := $CastU8($t10); + if ($abort_flag) { + assume {:print "$at(6,27603,27624)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t12 := <<($t8, $t11) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:26+2 + call $t12 := $ShlU8($t8, $t11); + if ($abort_flag) { + assume {:print "$at(6,27600,27602)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[bit_mask]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:724:13+8 + assume {:print "$track_local(8,23,3):", $t12} $t12 == $t12; + + // $t13 := vector::length($t0) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:22+24 + assume {:print "$at(6,27647,27671)"} true; + call $t13 := $1_vector_length'bv8'($t0); + if ($abort_flag) { + assume {:print "$at(6,27647,27671)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t14 := <($t6, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:20+1 + call $t14 := $Lt($t6, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:67+8 +L1: + + // $t15 := vector::borrow($t0, $t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:52+36 + assume {:print "$at(6,27677,27713)"} true; + call $t15 := $1_vector_borrow'bv8'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(6,27677,27713)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,23):", $t7} $t7 == $t7; + goto L4; + } + + // $t16 := &($t15, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:89+1 + call $t16 := $AndBv8($t15, $int2bv.8($t12)); + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:104+1 + $t17 := 0bv8; + assume $IsValid'bv8'($t17); + + // $t2 := !=($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:101+2 + $t2 := !$IsEqual'bv8'($t16, $t17); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 +L0: + + // $t18 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + assume {:print "$at(6,27634,27730)"} true; + $t18 := false; + assume $IsValid'bool'($t18); + + // $t2 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + $t2 := $t18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:725:9+96 + assume {:print "$at(6,27634,27730)"} true; + assume {:print "$track_return(8,23,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 + assume {:print "$at(6,27735,27736)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:29:9+16 + assume {:print "$at(7,865,881)"} true; + assert {:msg "assert_failed(7,865,881): function does not abort under this condition"} + !false; + + // assert Eq($t2, features::spec_contains($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:30:9+51 + assume {:print "$at(7,890,941)"} true; + assert {:msg "assert_failed(7,890,941): post-condition does not hold"} + $IsEqual'bool'($t2, $1_features_spec_contains($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:30:9+51 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:726:5+1 + assume {:print "$at(6,27735,27736)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:27:5+173 + assume {:print "$at(7,774,947)"} true; + assert {:msg "assert_failed(7,774,947): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:27:5+173 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun features::abort_if_multisig_payload_mismatch_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:592:5+142 +procedure {:timeLimit 80} $1_features_abort_if_multisig_payload_mismatch_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:592:5+1 + assume {:print "$at(6,21935,21936)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:20+34 + assume {:print "$at(6,22036,22070)"} true; + $t0 := 70; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:9+46 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:9+46 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:9+46 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:9+46 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:593:9+46 + assume {:print "$track_return(8,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:594:5+1 + assume {:print "$at(6,22076,22077)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:594:5+1 + assume {:print "$at(6,22076,22077)"} true; + $ret0 := $t1; + return; + +} + +// fun features::aggregator_snapshots_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:289:5+111 +procedure {:timeLimit 80} $1_features_aggregator_snapshots_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:290:39+16 + assume {:print "$at(6,11031,11047)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:290:15+41 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,11007,11048)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,1):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:290:9+47 + assume {:print "$at(6,11001,11048)"} true; + assume {:print "$track_abort(8,1):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:290:9+47 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:291:5+1 + assume {:print "$at(6,11053,11054)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:291:5+1 + assume {:print "$at(6,11053,11054)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::aggregator_v2_api_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:279:5+65 +procedure {:timeLimit 80} $1_features_aggregator_v2_api_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:280:9+4 + assume {:print "$at(6,10771,10775)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:280:9+4 + assume {:print "$track_return(8,2,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:281:5+1 + assume {:print "$at(6,10780,10781)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:281:5+1 + assume {:print "$at(6,10780,10781)"} true; + $ret0 := $t0; + return; + +} + +// fun features::aggregator_v2_is_at_least_api_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:518:5+132 +procedure {:inline 1} $1_features_aggregator_v2_is_at_least_api_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:20+29 + assume {:print "$at(6,18988,19017)"} true; + $t0 := 66; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume {:print "$track_return(8,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:520:5+1 + assume {:print "$at(6,19023,19024)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:520:5+1 + assume {:print "$at(6,19023,19024)"} true; + $ret0 := $t1; + return; + +} + +// fun features::aggregator_v2_is_at_least_api_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:518:5+132 +procedure {:timeLimit 80} $1_features_aggregator_v2_is_at_least_api_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:518:5+1 + assume {:print "$at(6,18892,18893)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:20+29 + assume {:print "$at(6,18988,19017)"} true; + $t0 := 66; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:519:9+41 + assume {:print "$track_return(8,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:520:5+1 + assume {:print "$at(6,19023,19024)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:520:5+1 + assume {:print "$at(6,19023,19024)"} true; + $ret0 := $t1; + return; + +} + +// fun features::allow_vm_binary_format_v6 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:86:5+110 +procedure {:timeLimit 80} $1_features_allow_vm_binary_format_v6$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:86:5+1 + assume {:print "$at(6,3836,3837)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:20+19 + assume {:print "$at(6,3920,3939)"} true; + $t0 := 5; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:9+31 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:9+31 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:9+31 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:9+31 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:87:9+31 + assume {:print "$track_return(8,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:88:5+1 + assume {:print "$at(6,3945,3946)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:88:5+1 + assume {:print "$at(6,3945,3946)"} true; + $ret0 := $t1; + return; + +} + +// fun features::apply_diff [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+292 +procedure {:timeLimit 80} $1_features_apply_diff$verify(_$t0: $Mutation (Vec (bv8)), _$t1: Vec (int), _$t2: Vec (int)) returns ($ret0: $Mutation (Vec (bv8))) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: Vec (int); + var $t11: $Mutation (Vec (int)); + var $t12: int; + var $t13: Vec (int); + var $t14: Vec (int); + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation (Vec (int)); + var $t23: Vec (int); + var $t24: $Mutation (Vec (int)); + var $t25: Vec (int); + var $t26: Vec (int); + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: $Mutation (Vec (int)); + var $t35: Vec (int); + var $t0: $Mutation (Vec (bv8)); + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + assume {:print "$at(6,27742,27743)"} true; + assume $IsValid'vec'bv8''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + assume $IsValid'vec'u64''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + assume $IsValid'vec'u64''($t2); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,5,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[enable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + assume {:print "$track_local(8,5,1):", $t1} $t1 == $t1; + + // trace_local[disable]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:728:5+1 + assume {:print "$track_local(8,5,2):", $t2} $t2 == $t2; + + // $t7 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$at(16,9729,9733)"} true; + $t7 := $t1; + + // trace_local[self#136]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$track_local(8,5,7):", $t7} $t7 == $t7; + + // $t11 := borrow_local($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:17+9 + assume {:print "$at(16,9784,9793)"} true; + $t11 := $Mutation($Local(7), EmptyVec(), $t7); + + // vector::reverse($t11) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + call $t11 := $1_vector_reverse'u64'($t11); + if ($abort_flag) { + assume {:print "$at(16,9776,9794)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // write_back[LocalRoot($t7)@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + $t7 := $Dereference($t11); + + // trace_local[self#136]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + assume {:print "$track_local(8,5,7):", $t7} $t7 == $t7; + + // $t13 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:26+4 + assume {:print "$at(16,9880,9884)"} true; + $t13 := $t7; + + // $t8 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$at(16,10024,10028)"} true; + $t8 := $t13; + + // trace_local[self#139]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$track_local(8,5,8):", $t8} $t8 == $t8; + + // $t14 := copy($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:26+5 + assume {:print "$at(16,10088,10093)"} true; + $t14 := $t8; + + // $t15 := vector::length($t14) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:19+13 + call $t15 := $1_vector_length'u64'($t14); + if ($abort_flag) { + assume {:print "$at(16,10081,10094)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // trace_local[len#141]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:13+3 + assume {:print "$track_local(8,5,5):", $t15} $t15 == $t15; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; +L3: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t5); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'u64''($t8); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t21); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $temp_0'vec'bv8''; + $t0 := $UpdateMutation($t0, $temp_0'vec'bv8''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'bv8''($Dereference($t0)); + + // $t22 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'u64''($Dereference($t22)); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$info(): enter loop, variable(s) features, len#141, self#139 havocked and reassigned"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,5,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[len#141]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(8,5,5):", $t5} $t5 == $t5; + + // trace_local[self#139]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(8,5,8):", $t8} $t8 == $t8; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume !$abort_flag; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:22+1 + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t17 := >($t5, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:20+1 + call $t17 := $Gt($t5, $t16); + + // if ($t17) goto L1 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 + if ($t17) { goto L1; } else { goto L12; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; +L2: + + // $t22 := borrow_local($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; + $t22 := $Mutation($Local(8), EmptyVec(), $t8); + + // $t18 := vector::pop_back($t22) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + call $t18,$t22 := $1_vector_pop_back'u64'($t22); + if ($abort_flag) { + assume {:print "$at(16,10136,10155)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // write_back[LocalRoot($t8)@]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + $t8 := $Dereference($t22); + + // trace_local[self#139]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + assume {:print "$track_local(8,5,8):", $t8} $t8 == $t8; + + // trace_local[feature#143]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:38+1 + assume {:print "$at(16,9892,9893)"} true; + assume {:print "$track_local(8,5,3):", $t18} $t18 == $t18; + + // $t19 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:730:36+4 + assume {:print "$at(6,27909,27913)"} true; + $t19 := true; + assume $IsValid'bool'($t19); + + // features::set($t0, $t18, $t19) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:730:13+28 + call $t0 := $1_features_set($t0, $t18, $t19); + if ($abort_flag) { + assume {:print "$at(6,27886,27914)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:25+1 + assume {:print "$at(16,10182,10183)"} true; + $t20 := 1; + assume $IsValid'u64'($t20); + + // $t21 := -($t5, $t20) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:23+1 + call $t21 := $Sub($t5, $t20); + if ($abort_flag) { + assume {:print "$at(16,10180,10181)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // trace_local[len#141]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:13+3 + assume {:print "$track_local(8,5,5):", $t21} $t21 == $t21; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:26+1 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + assume {:print "$at(16,10218,10222)"} true; +L0: + + // $t23 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + assume {:print "$at(16,10218,10222)"} true; + $t23 := $t8; + + // vector::destroy_empty($t23) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + call $1_vector_destroy_empty'u64'($t23); + if ($abort_flag) { + assume {:print "$at(16,10204,10223)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // $t9 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$at(16,9729,9733)"} true; + $t9 := $t2; + + // trace_local[self#144]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$track_local(8,5,9):", $t9} $t9 == $t9; + + // $t24 := borrow_local($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:17+9 + assume {:print "$at(16,9784,9793)"} true; + $t24 := $Mutation($Local(9), EmptyVec(), $t9); + + // vector::reverse($t24) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + call $t24 := $1_vector_reverse'u64'($t24); + if ($abort_flag) { + assume {:print "$at(16,9776,9794)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // write_back[LocalRoot($t9)@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + $t9 := $Dereference($t24); + + // trace_local[self#144]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + assume {:print "$track_local(8,5,9):", $t9} $t9 == $t9; + + // $t25 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:26+4 + assume {:print "$at(16,9880,9884)"} true; + $t25 := $t9; + + // $t10 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$at(16,10024,10028)"} true; + $t10 := $t25; + + // trace_local[self#147]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$track_local(8,5,10):", $t10} $t10 == $t10; + + // $t26 := copy($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:26+5 + assume {:print "$at(16,10088,10093)"} true; + $t26 := $t10; + + // $t27 := vector::length($t26) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:19+13 + call $t27 := $1_vector_length'u64'($t26); + if ($abort_flag) { + assume {:print "$at(16,10081,10094)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // trace_local[len#149]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:13+3 + assume {:print "$track_local(8,5,6):", $t27} $t27 == $t27; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; +L7: + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t6); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'u64''($t10); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t32); + + // $t33 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t33); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $temp_0'vec'bv8''; + $t0 := $UpdateMutation($t0, $temp_0'vec'bv8''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'bv8''($Dereference($t0)); + + // $t34 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'u64''($Dereference($t34)); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$info(): enter loop, variable(s) features, len#149, self#147 havocked and reassigned"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,5,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[len#149]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(8,5,6):", $t6} $t6 == $t6; + + // trace_local[self#147]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(8,5,10):", $t10} $t10 == $t10; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume !$abort_flag; + + // $t28 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:22+1 + $t28 := 0; + assume $IsValid'u64'($t28); + + // $t29 := >($t6, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:20+1 + call $t29 := $Gt($t6, $t28); + + // if ($t29) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 + if ($t29) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 +L5: + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; +L6: + + // $t34 := borrow_local($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; + $t34 := $Mutation($Local(10), EmptyVec(), $t10); + + // $t30 := vector::pop_back($t34) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + call $t30,$t34 := $1_vector_pop_back'u64'($t34); + if ($abort_flag) { + assume {:print "$at(16,10136,10155)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // write_back[LocalRoot($t10)@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + $t10 := $Dereference($t34); + + // trace_local[self#147]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + assume {:print "$track_local(8,5,10):", $t10} $t10 == $t10; + + // trace_local[feature#151]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:38+1 + assume {:print "$at(16,9892,9893)"} true; + assume {:print "$track_local(8,5,4):", $t30} $t30 == $t30; + + // $t31 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:733:36+5 + assume {:print "$at(6,28009,28014)"} true; + $t31 := false; + assume $IsValid'bool'($t31); + + // features::set($t0, $t30, $t31) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:733:13+29 + call $t0 := $1_features_set($t0, $t30, $t31); + if ($abort_flag) { + assume {:print "$at(6,27986,28015)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // $t32 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:25+1 + assume {:print "$at(16,10182,10183)"} true; + $t32 := 1; + assume $IsValid'u64'($t32); + + // $t33 := -($t6, $t32) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:23+1 + call $t33 := $Sub($t6, $t32); + if ($abort_flag) { + assume {:print "$at(16,10180,10181)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // trace_local[len#149]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:13+3 + assume {:print "$track_local(8,5,6):", $t33} $t33 == $t33; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:26+1 + goto L9; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; +L4: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; + + // $t35 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + $t35 := $t10; + + // vector::destroy_empty($t35) on_abort goto L11 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + call $1_vector_destroy_empty'u64'($t35); + if ($abort_flag) { + assume {:print "$at(16,10204,10223)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(8,5):", $t12} $t12 == $t12; + goto L11; + } + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:734:11+1 + assume {:print "$at(6,28027,28028)"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,5,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:734:11+1 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + // Loop invariant checking block for the loop started with header: L3 + assume {:print "$at(16,10204,10223)"} true; +L8: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; + assume false; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + // Loop invariant checking block for the loop started with header: L7 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:735:5+1 + assume {:print "$at(6,28033,28034)"} true; +L10: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:735:5+1 + assume {:print "$at(6,28033,28034)"} true; + $ret0 := $t0; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:735:5+1 +L11: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:735:5+1 + assume {:print "$at(6,28033,28034)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun features::auids_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:235:5+53 +procedure {:timeLimit 80} $1_features_auids_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:236:9+4 + assume {:print "$at(6,9274,9278)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:236:9+4 + assume {:print "$track_return(8,6,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:237:5+1 + assume {:print "$at(6,9283,9284)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:237:5+1 + assume {:print "$at(6,9283,9284)"} true; + $ret0 := $t0; + return; + +} + +// fun features::blake2b_256_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:118:5+196 +procedure {:inline 1} $1_features_blake2b_256_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:121:9+4 + assume {:print "$at(6,5339,5343)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:121:9+4 + assume {:print "$track_return(8,7,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:122:5+1 + assume {:print "$at(6,5348,5349)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:122:5+1 + assume {:print "$at(6,5348,5349)"} true; + $ret0 := $t0; + return; + +} + +// fun features::blake2b_256_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:118:5+196 +procedure {:timeLimit 80} $1_features_blake2b_256_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:121:9+4 + assume {:print "$at(6,5339,5343)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:121:9+4 + assume {:print "$track_return(8,7,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:122:5+1 + assume {:print "$at(6,5348,5349)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:122:5+1 + assume {:print "$at(6,5348,5349)"} true; + $ret0 := $t0; + return; + +} + +// fun features::bls12_381_structures_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:171:5+114 +procedure {:timeLimit 80} $1_features_bls12_381_structures_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:171:5+1 + assume {:print "$at(6,7001,7002)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:20+20 + assume {:print "$at(6,7088,7108)"} true; + $t0 := 13; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:9+32 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:9+32 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:9+32 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:9+32 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:172:9+32 + assume {:print "$track_return(8,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:173:5+1 + assume {:print "$at(6,7114,7115)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:173:5+1 + assume {:print "$at(6,7114,7115)"} true; + $ret0 := $t1; + return; + +} + +// fun features::bn254_structures_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:362:5+106 +procedure {:timeLimit 80} $1_features_bn254_structures_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:362:5+1 + assume {:print "$at(6,13332,13333)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:20+16 + assume {:print "$at(6,13415,13431)"} true; + $t0 := 43; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:9+28 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:9+28 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:9+28 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:9+28 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:363:9+28 + assume {:print "$track_return(8,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:364:5+1 + assume {:print "$at(6,13437,13438)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:364:5+1 + assume {:print "$at(6,13437,13438)"} true; + $ret0 := $t1; + return; + +} + +// fun features::bulletproofs_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:246:5+106 +procedure {:inline 1} $1_features_bulletproofs_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:20+20 + assume {:print "$at(6,9715,9735)"} true; + $t0 := 24; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume {:print "$track_return(8,10,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:248:5+1 + assume {:print "$at(6,9741,9742)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:248:5+1 + assume {:print "$at(6,9741,9742)"} true; + $ret0 := $t1; + return; + +} + +// fun features::bulletproofs_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:246:5+106 +procedure {:timeLimit 80} $1_features_bulletproofs_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:246:5+1 + assume {:print "$at(6,9636,9637)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:20+20 + assume {:print "$at(6,9715,9735)"} true; + $t0 := 24; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:247:9+32 + assume {:print "$track_return(8,10,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:248:5+1 + assume {:print "$at(6,9741,9742)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:248:5+1 + assume {:print "$at(6,9741,9742)"} true; + $ret0 := $t1; + return; + +} + +// fun features::change_feature_flags [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+157 +procedure {:timeLimit 80} $1_features_change_feature_flags$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'signer': $signer; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume {:print "$at(6,23832,23833)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume $IsValid'vec'u64''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume $IsValid'vec'u64''($t2); + + // trace_local[_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume {:print "$track_local(8,11,0):", $t0} $t0 == $t0; + + // trace_local[_enable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume {:print "$track_local(8,11,1):", $t1} $t1 == $t1; + + // trace_local[_disable]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:639:5+1 + assume {:print "$track_local(8,11,2):", $t2} $t2 == $t2; + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:640:37+13 + assume {:print "$at(6,23968,23981)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:640:15+37 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(6,23946,23983)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(8,11):", $t5} $t5 == $t5; + goto L2; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:640:9+43 + assume {:print "$at(6,23940,23983)"} true; + assume {:print "$track_abort(8,11):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:640:9+43 + $t5 := $t4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:641:5+1 + assume {:print "$at(6,23988,23989)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:641:5+1 + assume {:print "$at(6,23988,23989)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun features::change_feature_flags_for_next_epoch [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1103 +procedure {:timeLimit 80} $1_features_change_feature_flags_for_next_epoch$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: Vec (bv8); + var $t4: Vec (bv8); + var $t5: Vec (bv8); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: $1_features_PendingFeatures; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: $1_features_Features; + var $t20: Vec (bv8); + var $t21: $Mutation (Vec (bv8)); + var $t22: Vec (bv8); + var $t23: $1_features_PendingFeatures; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $1_features_Features_$modifies: [int]bool; + var $1_features_PendingFeatures_$modifies: [int]bool; + var $temp_0'signer': $signer; + var $temp_0'vec'u64'': Vec (int); + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume {:print "$at(6,24762,24763)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume $IsValid'vec'u64''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume $IsValid'vec'u64''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: features::PendingFeatures: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_PendingFeatures_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_PendingFeatures_$memory, $a_0); + ($IsValid'$1_features_PendingFeatures'($rsc)))); + + // assume CanModify(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:38:9+32 + assume {:print "$at(7,1253,1285)"} true; + assume $1_features_Features_$modifies[1]; + + // assume CanModify(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:39:9+39 + assume {:print "$at(7,1294,1333)"} true; + assume $1_features_PendingFeatures_$modifies[1]; + + // trace_local[framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume {:print "$at(6,24762,24763)"} true; + assume {:print "$track_local(8,12,0):", $t0} $t0 == $t0; + + // trace_local[enable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume {:print "$track_local(8,12,1):", $t1} $t1 == $t1; + + // trace_local[disable]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:659:5+1 + assume {:print "$track_local(8,12,2):", $t2} $t2 == $t2; + + // $t6 := signer::address_of($t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:17+29 + assume {:print "$at(6,24955,24984)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(6,24955,24984)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,12):", $t7} $t7 == $t7; + goto L10; + } + + // $t8 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:50+4 + $t8 := 1; + assume $IsValid'address'($t8); + + // $t9 := ==($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:47+2 + $t9 := $IsEqual'address'($t6, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 + assume {:print "$at(6,24947,25045)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:81+24 + assume {:print "$at(6,25019,25043)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::permission_denied($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:56+50 + call $t11 := $1_error_permission_denied($t10); + if ($abort_flag) { + assume {:print "$at(6,24994,25044)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,12):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 + assume {:print "$at(6,24947,25045)"} true; + assume {:print "$track_abort(8,12):", $t11} $t11 == $t11; + + // $t7 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 + $t7 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:664:9+98 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:59+4 + assume {:print "$at(6,25187,25191)"} true; +L2: + + // $t12 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:59+4 + assume {:print "$at(6,25187,25191)"} true; + $t12 := 1; + assume $IsValid'address'($t12); + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:35+6 + $t13 := $ResourceExists($1_features_PendingFeatures_$memory, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:31+511 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:669:75+4 + assume {:print "$at(6,25345,25349)"} true; +L4: + + // $t14 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:669:75+4 + assume {:print "$at(6,25345,25349)"} true; + $t14 := 1; + assume $IsValid'address'($t14); + + // assert CanModify($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:669:48+9 + assert {:msg "assert_failed(6,25318,25327): caller does not have permission to modify `features::PendingFeatures` at given address"} + $1_features_PendingFeatures_$modifies[$t14]; + + // $t15 := move_from($t14) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:669:48+9 + if (!$ResourceExists($1_features_PendingFeatures_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $ResourceValue($1_features_PendingFeatures_$memory, $t14); + $1_features_PendingFeatures_$memory := $ResourceRemove($1_features_PendingFeatures_$memory, $t14); + } + if ($abort_flag) { + assume {:print "$at(6,25318,25327)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,12):", $t7} $t7 == $t7; + goto L10; + } + + // $t4 := unpack features::PendingFeatures($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:669:17+28 + $t4 := $t15->$features; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:31+511 + assume {:print "$at(6,25159,25670)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:37+4 + assume {:print "$at(6,25409,25413)"} true; +L3: + + // $t16 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:37+4 + assume {:print "$at(6,25409,25413)"} true; + $t16 := 1; + assume $IsValid'address'($t16); + + // $t17 := exists($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:20+6 + $t17 := $ResourceExists($1_features_Features_$memory, $t16); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:16+282 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:673:37+4 + assume {:print "$at(6,25556,25560)"} true; +L7: + + // $t18 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:673:37+4 + assume {:print "$at(6,25556,25560)"} true; + $t18 := 1; + assume $IsValid'address'($t18); + + // $t19 := get_global($t18) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:673:13+13 + if (!$ResourceExists($1_features_Features_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_features_Features_$memory, $t18); + } + if ($abort_flag) { + assume {:print "$at(6,25532,25545)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,12):", $t7} $t7 == $t7; + goto L10; + } + + // $t3 := get_field.features($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:673:13+38 + $t3 := $t19->$features; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:16+282 + assume {:print "$at(6,25388,25670)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:676:13+8 + assume {:print "$at(6,25652,25660)"} true; +L6: + + // $t20 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:676:13+8 + assume {:print "$at(6,25652,25660)"} true; + $t20 := $EmptyVec'bv8'(); + assume $IsValid'vec'bv8''($t20); + + // $t3 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:16+282 + assume {:print "$at(6,25388,25670)"} true; + $t3 := $t20; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:671:16+282 +L8: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:31+511 + assume {:print "$at(6,25159,25670)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:31+511 +L5: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:13+15 + assume {:print "$at(6,25141,25156)"} true; + $t5 := $t4; + + // trace_local[new_feature_vec]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:667:13+15 + assume {:print "$track_local(8,12,5):", $t5} $t5 == $t5; + + // $t21 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:20+20 + assume {:print "$at(6,25745,25765)"} true; + $t21 := $Mutation($Local(5), EmptyVec(), $t5); + + // opaque begin: features::apply_diff($t21, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + + // $t21 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + havoc $temp_0'vec'bv8''; + $t21 := $UpdateMutation($t21, $temp_0'vec'bv8''); + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + assume $IsValid'vec'bv8''($Dereference($t21)); + + // assume forall i: u64: $t2: Not(features::spec_contains($t21, i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + assume (var $range_0 := $t2; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var i := ReadVec($range_0, $i_1); + (!$1_features_spec_contains($Dereference($t21), i))))); + + // assume forall i: u64: $t1: Implies(Not(vector::spec_contains($t2, i)), features::spec_contains($t21, i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + assume (var $range_0 := $t1; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var i := ReadVec($range_0, $i_1); + ((!$1_vector_spec_contains'u64'($t2, i) ==> $1_features_spec_contains($Dereference($t21), i)))))); + + // opaque end: features::apply_diff($t21, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + + // write_back[LocalRoot($t5)@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + $t5 := $Dereference($t21); + + // trace_local[new_feature_vec]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:680:9+49 + assume {:print "$track_local(8,12,5):", $t5} $t5 == $t5; + + // $t22 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:681:56+15 + assume {:print "$at(6,25840,25855)"} true; + $t22 := $t5; + + // $t23 := pack features::PendingFeatures($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:681:28+45 + $t23 := $1_features_PendingFeatures($t22); + + // assert CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:681:9+7 + assert {:msg "assert_failed(6,25793,25800): caller does not have permission to modify `features::PendingFeatures` at given address"} + $1_features_PendingFeatures_$modifies[$t0->$addr]; + + // move_to($t23, $t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:681:9+7 + if ($ResourceExists($1_features_PendingFeatures_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_features_PendingFeatures_$memory := $ResourceUpdate($1_features_PendingFeatures_$memory, $t0->$addr, $t23); + } + if ($abort_flag) { + assume {:print "$at(6,25793,25800)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(8,12):", $t7} $t7 == $t7; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:682:5+1 + assume {:print "$at(6,25864,25865)"} true; +L9: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:34:9+48 + assume {:print "$at(7,1067,1115)"} true; + assert {:msg "assert_failed(7,1067,1115): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:34:9+48 + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:682:5+1 + assume {:print "$at(6,25864,25865)"} true; +L10: + + // assert Neq
(signer::$address_of[]($t0), 0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:33:5+386 + assume {:print "$at(7,953,1339)"} true; + assert {:msg "assert_failed(7,953,1339): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), 1); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:33:5+386 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun features::change_feature_flags_for_verification [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+233 +procedure {:timeLimit 80} $1_features_change_feature_flags_for_verification$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'$1_features_Features': $1_features_Features; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume {:print "$at(6,28249,28250)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume $IsValid'vec'u64''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume $IsValid'vec'u64''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume {:print "$track_local(8,13,0):", $t0} $t0 == $t0; + + // trace_local[enable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume {:print "$track_local(8,13,1):", $t1} $t1 == $t1; + + // trace_local[disable]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:743:5+1 + assume {:print "$track_local(8,13,2):", $t2} $t2 == $t2; + + // opaque begin: features::change_feature_flags_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + assume {:print "$at(6,28419,28476)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + assume {:print "$at(6,28419,28476)"} true; + assume {:print "$track_abort(8,13):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 +L3: + + // modifies global(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + assume {:print "$at(6,28419,28476)"} true; + havoc $temp_0'bool'; + if ($temp_0'bool') { + havoc $temp_0'$1_features_Features'; + $1_features_Features_$memory := $ResourceUpdate($1_features_Features_$memory, 1, $temp_0'$1_features_Features'); + } else { + $1_features_Features_$memory := $ResourceRemove($1_features_Features_$memory, 1); + } + + // opaque end: features::change_feature_flags_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:748:9+57 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:749:5+1 + assume {:print "$at(6,28481,28482)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:749:5+1 + assume {:print "$at(6,28481,28482)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:749:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:749:5+1 + assume {:print "$at(6,28481,28482)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun features::change_feature_flags_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+638 +procedure {:timeLimit 80} $1_features_change_feature_flags_internal$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: $Mutation (Vec (int)); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: Vec (int); + var $t11: Vec (int); + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: bool; + var $t21: Vec (bv8); + var $t22: $1_features_Features; + var $t23: int; + var $t24: $Mutation ($1_features_Features); + var $t25: $Mutation (Vec (bv8)); + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: bool; + var $t38: int; + var $t39: int; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $1_features_Features_$modifies: [int]bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume {:print "$at(6,24062,24063)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume $IsValid'vec'u64''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume $IsValid'vec'u64''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume CanModify(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:49:9+32 + assume {:print "$at(7,1720,1752)"} true; + assume $1_features_Features_$modifies[1]; + + // trace_local[framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume {:print "$at(6,24062,24063)"} true; + assume {:print "$track_local(8,14,0):", $t0} $t0 == $t0; + + // trace_local[enable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume {:print "$track_local(8,14,1):", $t1} $t1 == $t1; + + // trace_local[disable]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:644:5+1 + assume {:print "$track_local(8,14,2):", $t2} $t2 == $t2; + + // $t12 := signer::address_of($t0) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:17+29 + assume {:print "$at(6,24195,24224)"} true; + call $t12 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(6,24195,24224)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // $t14 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:50+4 + $t14 := 1; + assume $IsValid'address'($t14); + + // $t15 := ==($t12, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:47+2 + $t15 := $IsEqual'address'($t12, $t14); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 + assume {:print "$at(6,24187,24285)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:81+24 + assume {:print "$at(6,24259,24283)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::permission_denied($t16) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:56+50 + call $t17 := $1_error_permission_denied($t16); + if ($abort_flag) { + assume {:print "$at(6,24234,24284)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 + assume {:print "$at(6,24187,24285)"} true; + assume {:print "$track_abort(8,14):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 + $t13 := $t17; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:645:9+98 + goto L17; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:31+4 + assume {:print "$at(6,24317,24321)"} true; +L2: + + // $t18 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:31+4 + assume {:print "$at(6,24317,24321)"} true; + $t18 := 1; + assume $IsValid'address'($t18); + + // $t19 := exists($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:14+6 + $t19 := $ResourceExists($1_features_Features_$memory, $t18); + + // $t20 := !($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:13+1 + call $t20 := $Not($t19); + + // if ($t20) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:9+114 + if ($t20) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:31+9 + assume {:print "$at(6,24356,24365)"} true; +L4: + + // $t21 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:63+8 + assume {:print "$at(6,24388,24396)"} true; + $t21 := $EmptyVec'bv8'(); + assume $IsValid'vec'bv8''($t21); + + // $t22 := pack features::Features($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:42+31 + $t22 := $1_features_Features($t21); + + // assert CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:13+7 + assert {:msg "assert_failed(6,24338,24345): caller does not have permission to modify `features::Features` at given address"} + $1_features_Features_$modifies[$t0->$addr]; + + // move_to($t22, $t0) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:13+7 + if ($ResourceExists($1_features_Features_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_features_Features_$memory := $ResourceUpdate($1_features_Features_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(6,24338,24345)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:647:13+61 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:646:9+114 + assume {:print "$at(6,24295,24409)"} true; +L3: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:57+4 + assume {:print "$at(6,24467,24471)"} true; +L5: + + // $t23 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:57+4 + assume {:print "$at(6,24467,24471)"} true; + $t23 := 1; + assume $IsValid'address'($t23); + + // assert CanModify($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:29+17 + assert {:msg "assert_failed(6,24439,24456): caller does not have permission to modify `features::Features` at given address"} + $1_features_Features_$modifies[$t23]; + + // $t24 := borrow_global($t23) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:29+17 + if (!$ResourceExists($1_features_Features_$memory, $t23)) { + call $ExecFailureAbort(); + } else { + $t24 := $Mutation($Global($t23), EmptyVec(), $ResourceValue($1_features_Features_$memory, $t23)); + } + if ($abort_flag) { + assume {:print "$at(6,24439,24456)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // $t25 := borrow_field.features($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:24+47 + $t25 := $ChildMutation($t24, 0, $Dereference($t24)->$features); + + // trace_local[features]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:649:13+8 + $temp_0'vec'bv8'' := $Dereference($t25); + assume {:print "$track_local(8,14,5):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[self#152]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:286:45+4 + assume {:print "$at(16,10348,10352)"} true; + assume {:print "$track_local(8,14,10):", $t1} $t1 == $t1; + + // $t26 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:17+1 + assume {:print "$at(16,10405,10406)"} true; + $t26 := 0; + assume $IsValid'u64'($t26); + + // trace_local[i#154]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:13+1 + assume {:print "$track_local(8,14,6):", $t26} $t26 == $t26; + + // $t27 := vector::length($t1) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:19+12 + assume {:print "$at(16,10426,10438)"} true; + call $t27 := $1_vector_length'u64'($t1); + if ($abort_flag) { + assume {:print "$at(16,10426,10438)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[len#155]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:13+3 + assume {:print "$track_local(8,14,8):", $t27} $t27 == $t27; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; +L9: + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t6); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t32); + + // $t25 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $temp_0'vec'bv8''; + $t25 := $UpdateMutation($t25, $temp_0'vec'bv8''); + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'vec'bv8''($Dereference($t25)); + + // trace_local[i#154]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$info(): enter loop, variable(s) i#154 havocked and reassigned"} true; + assume {:print "$track_local(8,14,6):", $t6} $t6 == $t6; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume !$abort_flag; + + // $t28 := <($t6, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:18+1 + call $t28 := $Lt($t6, $t27); + + // if ($t28) goto L18 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 + if ($t28) { goto L18; } else { goto L19; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:22+4 + assume {:print "$at(16,10487,10491)"} true; +L8: + + // $t29 := vector::borrow($t1, $t6) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:15+15 + assume {:print "$at(16,10480,10495)"} true; + call $t29 := $1_vector_borrow'u64'($t1, $t6); + if ($abort_flag) { + assume {:print "$at(16,10480,10495)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[feature#156]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:15+15 + assume {:print "$track_local(8,14,3):", $t29} $t29 == $t29; + + // $t30 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:651:37+4 + assume {:print "$at(6,24569,24573)"} true; + $t30 := true; + assume $IsValid'bool'($t30); + + // features::set($t25, $t29, $t30) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:651:13+29 + call $t25 := $1_features_set($t25, $t29, $t30); + if ($abort_flag) { + assume {:print "$at(6,24545,24574)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:21+1 + assume {:print "$at(16,10518,10519)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t6, $t31) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:19+1 + call $t32 := $AddU64($t6, $t31); + if ($abort_flag) { + assume {:print "$at(16,10516,10517)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[i#154]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+1 + assume {:print "$track_local(8,14,6):", $t32} $t32 == $t32; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+9 + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:653:9+97 + assume {:print "$at(6,24596,24693)"} true; +L6: + + // trace_local[self#157]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:286:45+4 + assume {:print "$at(16,10348,10352)"} true; + assume {:print "$track_local(8,14,11):", $t2} $t2 == $t2; + + // $t33 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:17+1 + assume {:print "$at(16,10405,10406)"} true; + $t33 := 0; + assume $IsValid'u64'($t33); + + // trace_local[i#159]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:13+1 + assume {:print "$track_local(8,14,7):", $t33} $t33 == $t33; + + // $t34 := vector::length($t2) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:19+12 + assume {:print "$at(16,10426,10438)"} true; + call $t34 := $1_vector_length'u64'($t2); + if ($abort_flag) { + assume {:print "$at(16,10426,10438)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[len#160]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:13+3 + assume {:print "$track_local(8,14,9):", $t34} $t34 == $t34; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; +L13: + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t7); + + // $t35 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t35; + + // assume WellFormed($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t35); + + // $t36 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t36; + + // assume WellFormed($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t36); + + // $t37 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t37; + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t37); + + // $t38 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t38; + + // assume WellFormed($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t38); + + // $t39 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t39; + + // assume WellFormed($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t39); + + // $t25 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $temp_0'vec'bv8''; + $t25 := $UpdateMutation($t25, $temp_0'vec'bv8''); + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'vec'bv8''($Dereference($t25)); + + // trace_local[i#159]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$info(): enter loop, variable(s) i#159 havocked and reassigned"} true; + assume {:print "$track_local(8,14,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume !$abort_flag; + + // $t35 := <($t7, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:18+1 + call $t35 := $Lt($t7, $t34); + + // if ($t35) goto L20 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 + if ($t35) { goto L20; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 +L11: + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:22+4 + assume {:print "$at(16,10487,10491)"} true; +L12: + + // $t36 := vector::borrow($t2, $t7) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:15+15 + assume {:print "$at(16,10480,10495)"} true; + call $t36 := $1_vector_borrow'u64'($t2, $t7); + if ($abort_flag) { + assume {:print "$at(16,10480,10495)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[feature#161]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:15+15 + assume {:print "$track_local(8,14,4):", $t36} $t36 == $t36; + + // $t37 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:654:37+5 + assume {:print "$at(6,24675,24680)"} true; + $t37 := false; + assume $IsValid'bool'($t37); + + // features::set($t25, $t36, $t37) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:654:13+30 + call $t25 := $1_features_set($t25, $t36, $t37); + if ($abort_flag) { + assume {:print "$at(6,24651,24681)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // $t38 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:21+1 + assume {:print "$at(16,10518,10519)"} true; + $t38 := 1; + assume $IsValid'u64'($t38); + + // $t39 := +($t7, $t38) on_abort goto L17 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:19+1 + call $t39 := $AddU64($t7, $t38); + if ($abort_flag) { + assume {:print "$at(16,10516,10517)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(8,14):", $t13} $t13 == $t13; + goto L17; + } + + // trace_local[i#159]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+1 + assume {:print "$track_local(8,14,7):", $t39} $t39 == $t39; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+9 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + assume {:print "$at(6,24693,24694)"} true; +L10: + + // write_back[Reference($t24).features (vector)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + assume {:print "$at(6,24693,24694)"} true; + $t24 := $UpdateMutation($t24, $Update'$1_features_Features'_features($Dereference($t24), $Dereference($t25))); + + // write_back[features::Features@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + $1_features_Features_$memory := $ResourceUpdate($1_features_Features_$memory, $GlobalLocationAddress($t24), + $Dereference($t24)); + + // drop($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + // Loop invariant checking block for the loop started with header: L9 +L14: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + assume {:print "$at(6,24693,24694)"} true; + assume false; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + // Loop invariant checking block for the loop started with header: L13 +L15: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:655:11+1 + assume {:print "$at(6,24693,24694)"} true; + assume false; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:656:5+1 + assume {:print "$at(6,24699,24700)"} true; +L16: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:50:9+48 + assume {:print "$at(7,1761,1809)"} true; + assert {:msg "assert_failed(7,1761,1809): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:50:9+48 + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:656:5+1 + assume {:print "$at(6,24699,24700)"} true; +L17: + + // assert Neq
(signer::$address_of[]($t0), 0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:47:5+226 + assume {:print "$at(7,1589,1815)"} true; + assert {:msg "assert_failed(7,1589,1815): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), 1); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:47:5+226 + $abort_code := $t13; + $abort_flag := true; + return; + + // label L18 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L18: + + // drop($t24) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L7 at :1:1+10 + goto L7; + + // label L19 at :1:1+10 +L19: + + // drop($t25) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L20 at :1:1+10 +L20: + + // drop($t24) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + +} + +// fun features::code_dependency_check_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:43:5+116 +procedure {:timeLimit 80} $1_features_code_dependency_check_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:43:5+1 + assume {:print "$at(6,2131,2132)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:20+21 + assume {:print "$at(6,2219,2240)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:9+33 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:9+33 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:9+33 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:9+33 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:44:9+33 + assume {:print "$track_return(8,15,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:45:5+1 + assume {:print "$at(6,2246,2247)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:45:5+1 + assume {:print "$at(6,2246,2247)"} true; + $ret0 := $t1; + return; + +} + +// fun features::coin_to_fungible_asset_migration_feature_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:497:5+239 +procedure {:inline 1} $1_features_coin_to_fungible_asset_migration_feature_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:500:9+4 + assume {:print "$at(6,18412,18416)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:500:9+4 + assume {:print "$track_return(8,16,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:501:5+1 + assume {:print "$at(6,18421,18422)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:501:5+1 + assume {:print "$at(6,18421,18422)"} true; + $ret0 := $t0; + return; + +} + +// fun features::coin_to_fungible_asset_migration_feature_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:497:5+239 +procedure {:timeLimit 80} $1_features_coin_to_fungible_asset_migration_feature_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:500:9+4 + assume {:print "$at(6,18412,18416)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:500:9+4 + assume {:print "$track_return(8,16,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:501:5+1 + assume {:print "$at(6,18421,18422)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:501:5+1 + assume {:print "$at(6,18421,18422)"} true; + $ret0 := $t0; + return; + +} + +// fun features::collect_and_distribute_gas_fees [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:96:5+128 +procedure {:timeLimit 80} $1_features_collect_and_distribute_gas_fees$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:96:5+1 + assume {:print "$at(6,4215,4216)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:20+31 + assume {:print "$at(6,4305,4336)"} true; + $t0 := 6; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:9+43 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:9+43 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:9+43 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:9+43 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:97:9+43 + assume {:print "$track_return(8,17,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:98:5+1 + assume {:print "$at(6,4342,4343)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:98:5+1 + assume {:print "$at(6,4342,4343)"} true; + $ret0 := $t1; + return; + +} + +// fun features::commission_change_delegation_pool_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:351:5+140 +procedure {:timeLimit 80} $1_features_commission_change_delegation_pool_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:351:5+1 + assume {:print "$at(6,12954,12955)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:20+33 + assume {:print "$at(6,13054,13087)"} true; + $t0 := 42; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:9+45 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:9+45 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:9+45 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:9+45 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:352:9+45 + assume {:print "$track_return(8,18,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:353:5+1 + assume {:print "$at(6,13093,13094)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:353:5+1 + assume {:print "$at(6,13093,13094)"} true; + $ret0 := $t1; + return; + +} + +// fun features::concurrent_assets_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:325:5+119 +procedure {:timeLimit 80} $1_features_concurrent_assets_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:326:39+27 + assume {:print "$at(6,12120,12147)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:326:15+52 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,12096,12148)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,19):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:326:9+58 + assume {:print "$at(6,12090,12148)"} true; + assume {:print "$track_abort(8,19):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:326:9+58 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:327:5+1 + assume {:print "$at(6,12153,12154)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:327:5+1 + assume {:print "$at(6,12153,12154)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::concurrent_fungible_assets_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:413:5+126 +procedure {:inline 1} $1_features_concurrent_fungible_assets_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:20+26 + assume {:print "$at(6,15181,15207)"} true; + $t0 := 50; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume {:print "$track_return(8,20,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:415:5+1 + assume {:print "$at(6,15213,15214)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:415:5+1 + assume {:print "$at(6,15213,15214)"} true; + $ret0 := $t1; + return; + +} + +// fun features::concurrent_fungible_assets_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:413:5+126 +procedure {:timeLimit 80} $1_features_concurrent_fungible_assets_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:413:5+1 + assume {:print "$at(6,15088,15089)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:20+26 + assume {:print "$at(6,15181,15207)"} true; + $t0 := 50; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:414:9+38 + assume {:print "$track_return(8,20,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:415:5+1 + assume {:print "$at(6,15213,15214)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:415:5+1 + assume {:print "$at(6,15213,15214)"} true; + $ret0 := $t1; + return; + +} + +// fun features::concurrent_fungible_balance_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:570:5+128 +procedure {:timeLimit 80} $1_features_concurrent_fungible_balance_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:570:5+1 + assume {:print "$at(6,20969,20970)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 67 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:20+27 + assume {:print "$at(6,21063,21090)"} true; + $t0 := 67; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:9+39 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:9+39 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:9+39 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:9+39 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:571:9+39 + assume {:print "$track_return(8,21,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:572:5+1 + assume {:print "$at(6,21096,21097)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:572:5+1 + assume {:print "$at(6,21096,21097)"} true; + $ret0 := $t1; + return; + +} + +// fun features::concurrent_token_v2_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:315:5+67 +procedure {:timeLimit 80} $1_features_concurrent_token_v2_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:316:9+4 + assume {:print "$at(6,11855,11859)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:316:9+4 + assume {:print "$track_return(8,22,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:317:5+1 + assume {:print "$at(6,11864,11865)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:317:5+1 + assume {:print "$at(6,11864,11865)"} true; + $ret0 := $t0; + return; + +} + +// fun features::cryptography_algebra_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:160:5+122 +procedure {:inline 1} $1_features_cryptography_algebra_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:20+28 + assume {:print "$at(6,6713,6741)"} true; + $t0 := 12; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume {:print "$track_return(8,24,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:162:5+1 + assume {:print "$at(6,6747,6748)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:162:5+1 + assume {:print "$at(6,6747,6748)"} true; + $ret0 := $t1; + return; + +} + +// fun features::cryptography_algebra_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:160:5+122 +procedure {:timeLimit 80} $1_features_cryptography_algebra_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:160:5+1 + assume {:print "$at(6,6626,6627)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:20+28 + assume {:print "$at(6,6713,6741)"} true; + $t0 := 12; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:161:9+40 + assume {:print "$track_return(8,24,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:162:5+1 + assume {:print "$at(6,6747,6748)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:162:5+1 + assume {:print "$at(6,6747,6748)"} true; + $ret0 := $t1; + return; + +} + +// fun features::default_to_concurrent_fungible_balance_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:580:5+150 +procedure {:inline 1} $1_features_default_to_concurrent_fungible_balance_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:20+38 + assume {:print "$at(6,21487,21525)"} true; + $t0 := 68; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume {:print "$track_return(8,25,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:582:5+1 + assume {:print "$at(6,21531,21532)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:582:5+1 + assume {:print "$at(6,21531,21532)"} true; + $ret0 := $t1; + return; + +} + +// fun features::default_to_concurrent_fungible_balance_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:580:5+150 +procedure {:timeLimit 80} $1_features_default_to_concurrent_fungible_balance_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:580:5+1 + assume {:print "$at(6,21382,21383)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:20+38 + assume {:print "$at(6,21487,21525)"} true; + $t0 := 68; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:581:9+50 + assume {:print "$track_return(8,25,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:582:5+1 + assume {:print "$at(6,21531,21532)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:582:5+1 + assume {:print "$at(6,21531,21532)"} true; + $ret0 := $t1; + return; + +} + +// fun features::delegation_pool_allowlisting_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:461:5+130 +procedure {:timeLimit 80} $1_features_delegation_pool_allowlisting_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:461:5+1 + assume {:print "$at(6,16802,16803)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:20+28 + assume {:print "$at(6,16897,16925)"} true; + $t0 := 56; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:9+40 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:9+40 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:9+40 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:9+40 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:462:9+40 + assume {:print "$track_return(8,26,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:463:5+1 + assume {:print "$at(6,16931,16932)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:463:5+1 + assume {:print "$at(6,16931,16932)"} true; + $ret0 := $t1; + return; + +} + +// fun features::delegation_pool_partial_governance_voting_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:215:5+156 +procedure {:timeLimit 80} $1_features_delegation_pool_partial_governance_voting_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:215:5+1 + assume {:print "$at(6,8583,8584)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:20+41 + assume {:print "$at(6,8691,8732)"} true; + $t0 := 21; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:9+53 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:9+53 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:9+53 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:9+53 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:216:9+53 + assume {:print "$track_return(8,27,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:217:5+1 + assume {:print "$at(6,8738,8739)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:217:5+1 + assume {:print "$at(6,8738,8739)"} true; + $ret0 := $t1; + return; + +} + +// fun features::delegation_pools_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:149:5+106 +procedure {:timeLimit 80} $1_features_delegation_pools_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:149:5+1 + assume {:print "$at(6,6236,6237)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:20+16 + assume {:print "$at(6,6319,6335)"} true; + $t0 := 11; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:9+28 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:9+28 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:9+28 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:9+28 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:150:9+28 + assume {:print "$track_return(8,28,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:151:5+1 + assume {:print "$at(6,6341,6342)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:151:5+1 + assume {:print "$at(6,6341,6342)"} true; + $ret0 := $t1; + return; + +} + +// fun features::dispatchable_fungible_asset_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:538:5+221 +procedure {:inline 1} $1_features_dispatchable_fungible_asset_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:541:9+4 + assume {:print "$at(6,19884,19888)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:541:9+4 + assume {:print "$track_return(8,29,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:542:5+1 + assume {:print "$at(6,19893,19894)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:542:5+1 + assume {:print "$at(6,19893,19894)"} true; + $ret0 := $t0; + return; + +} + +// fun features::dispatchable_fungible_asset_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:538:5+221 +procedure {:timeLimit 80} $1_features_dispatchable_fungible_asset_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:541:9+4 + assume {:print "$at(6,19884,19888)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:541:9+4 + assume {:print "$track_return(8,29,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:542:5+1 + assume {:print "$at(6,19893,19894)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:542:5+1 + assume {:print "$at(6,19893,19894)"} true; + $ret0 := $t0; + return; + +} + +// fun features::ensure_framework_signer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:737:5+184 +procedure {:inline 1} $1_features_ensure_framework_signer(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:737:5+1 + assume {:print "$at(6,28040,28041)"} true; + assume {:print "$track_local(8,30,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:738:20+27 + assume {:print "$at(6,28107,28134)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(6,28107,28134)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,30):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:25+4 + assume {:print "$at(6,28160,28164)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:22+2 + $t4 := $IsEqual'address'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + assume {:print "$at(6,28144,28217)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:56+24 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:56+24 + assume {:print "$at(6,28191,28215)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::permission_denied($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:31+50 + call $t6 := $1_error_permission_denied($t5); + if ($abort_flag) { + assume {:print "$at(6,28166,28216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,30):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + assume {:print "$at(6,28144,28217)"} true; + assume {:print "$track_abort(8,30):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:82+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::ensure_framework_signer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:737:5+184 +procedure {:timeLimit 80} $1_features_ensure_framework_signer$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:737:5+1 + assume {:print "$at(6,28040,28041)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:737:5+1 + assume {:print "$track_local(8,30,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:738:20+27 + assume {:print "$at(6,28107,28134)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(6,28107,28134)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,30):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:25+4 + assume {:print "$at(6,28160,28164)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:22+2 + $t4 := $IsEqual'address'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + assume {:print "$at(6,28144,28217)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:56+24 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:56+24 + assume {:print "$at(6,28191,28215)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::permission_denied($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:31+50 + call $t6 := $1_error_permission_denied($t5); + if ($abort_flag) { + assume {:print "$at(6,28166,28216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,30):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + assume {:print "$at(6,28144,28217)"} true; + assume {:print "$track_abort(8,30):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:9+73 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:739:82+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:740:5+1 + assume {:print "$at(6,28223,28224)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::fee_payer_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:223:5+100 +procedure {:timeLimit 80} $1_features_fee_payer_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:223:5+1 + assume {:print "$at(6,8862,8863)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:20+17 + assume {:print "$at(6,8938,8955)"} true; + $t0 := 22; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:9+29 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:9+29 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:9+29 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:9+29 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:224:9+29 + assume {:print "$track_return(8,31,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:225:5+1 + assume {:print "$at(6,8961,8962)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:225:5+1 + assume {:print "$at(6,8961,8962)"} true; + $ret0 := $t1; + return; + +} + +// fun features::get_abort_if_multisig_payload_mismatch_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:590:5+103 +procedure {:timeLimit 80} $1_features_get_abort_if_multisig_payload_mismatch_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:590:72+34 + assume {:print "$at(6,21893,21927)"} true; + $t0 := 70; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:590:72+34 + assume {:print "$track_return(8,32,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:590:107+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:590:107+1 + assume {:print "$at(6,21928,21929)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_aggregator_snapshots_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:284:5+114 +procedure {:timeLimit 80} $1_features_get_aggregator_snapshots_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:285:39+16 + assume {:print "$at(6,10896,10912)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:285:15+41 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,10872,10913)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,33):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:285:9+47 + assume {:print "$at(6,10866,10913)"} true; + assume {:print "$track_abort(8,33):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:285:9+47 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:286:5+1 + assume {:print "$at(6,10918,10919)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:286:5+1 + assume {:print "$at(6,10918,10919)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_aggregator_v2_api_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:275:5+122 +procedure {:timeLimit 80} $1_features_get_aggregator_v2_api_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:276:39+27 + assume {:print "$at(6,10676,10703)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:276:15+52 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,10652,10704)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,34):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:276:9+58 + assume {:print "$at(6,10646,10704)"} true; + assume {:print "$track_abort(8,34):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:276:9+58 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:277:5+1 + assume {:print "$at(6,10709,10710)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:277:5+1 + assume {:print "$at(6,10709,10710)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_auids [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:231:5+97 +procedure {:timeLimit 80} $1_features_get_auids$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:232:33+27 + assume {:print "$at(6,9190,9217)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:232:9+52 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,9166,9218)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,35):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:232:9+52 + assume {:print "$track_return(8,35,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:233:6+1 + assume {:print "$at(6,9224,9225)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:233:6+1 + assume {:print "$at(6,9224,9225)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:233:6+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:233:6+1 + assume {:print "$at(6,9224,9225)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_blake2b_256_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:116:5+64 +procedure {:timeLimit 80} $1_features_get_blake2b_256_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:116:49+18 + assume {:print "$at(6,5127,5145)"} true; + $t0 := 8; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:116:49+18 + assume {:print "$track_return(8,36,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:116:68+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:116:68+1 + assume {:print "$at(6,5146,5147)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_bls12_381_strutures_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:169:5+74 +procedure {:timeLimit 80} $1_features_get_bls12_381_strutures_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:169:57+20 + assume {:print "$at(6,6973,6993)"} true; + $t0 := 13; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:169:57+20 + assume {:print "$track_return(8,37,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:169:78+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:169:78+1 + assume {:print "$at(6,6994,6995)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_bn254_strutures_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:360:5+66 +procedure {:timeLimit 80} $1_features_get_bn254_strutures_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:360:53+16 + assume {:print "$at(6,13308,13324)"} true; + $t0 := 43; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:360:53+16 + assume {:print "$track_return(8,38,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:360:70+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:360:70+1 + assume {:print "$at(6,13325,13326)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_bulletproofs_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:244:5+67 +procedure {:timeLimit 80} $1_features_get_bulletproofs_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:244:50+20 + assume {:print "$at(6,9608,9628)"} true; + $t0 := 24; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:244:50+20 + assume {:print "$track_return(8,39,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:244:71+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:244:71+1 + assume {:print "$at(6,9629,9630)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_coin_to_fungible_asset_migration_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:495:5+99 +procedure {:timeLimit 80} $1_features_get_coin_to_fungible_asset_migration_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 60 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:495:70+32 + assume {:print "$at(6,18143,18175)"} true; + $t0 := 60; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:495:70+32 + assume {:print "$track_return(8,40,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:495:103+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:495:103+1 + assume {:print "$at(6,18176,18177)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_collect_and_distribute_gas_fees_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:94:5+97 +procedure {:timeLimit 80} $1_features_get_collect_and_distribute_gas_fees_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:94:69+31 + assume {:print "$at(6,4176,4207)"} true; + $t0 := 6; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:94:69+31 + assume {:print "$track_return(8,41,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:94:101+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:94:101+1 + assume {:print "$at(6,4208,4209)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_collection_owner_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:611:5+67 +procedure {:timeLimit 80} $1_features_get_collection_owner_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 79 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:611:54+16 + assume {:print "$at(6,22795,22811)"} true; + $t0 := 79; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:611:54+16 + assume {:print "$track_return(8,42,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:611:71+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:611:71+1 + assume {:print "$at(6,22812,22813)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_commission_change_delegation_pool_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:349:5+101 +procedure {:timeLimit 80} $1_features_get_commission_change_delegation_pool_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:349:71+33 + assume {:print "$at(6,12913,12946)"} true; + $t0 := 42; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:349:71+33 + assume {:print "$track_return(8,43,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:349:105+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:349:105+1 + assume {:print "$at(6,12947,12948)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_concurrent_assets_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:320:5+122 +procedure {:timeLimit 80} $1_features_get_concurrent_assets_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:321:39+27 + assume {:print "$at(6,11977,12004)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:321:15+52 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,11953,12005)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,44):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:321:9+58 + assume {:print "$at(6,11947,12005)"} true; + assume {:print "$track_abort(8,44):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:321:9+58 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:322:5+1 + assume {:print "$at(6,12010,12011)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:322:5+1 + assume {:print "$at(6,12010,12011)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_concurrent_fungible_assets_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:411:5+87 +procedure {:timeLimit 80} $1_features_get_concurrent_fungible_assets_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:411:64+26 + assume {:print "$at(6,15054,15080)"} true; + $t0 := 50; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:411:64+26 + assume {:print "$track_return(8,45,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:411:91+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:411:91+1 + assume {:print "$at(6,15081,15082)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_concurrent_fungible_balance_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:568:5+89 +procedure {:timeLimit 80} $1_features_get_concurrent_fungible_balance_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 67 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:568:65+27 + assume {:print "$at(6,20934,20961)"} true; + $t0 := 67; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:568:65+27 + assume {:print "$track_return(8,46,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:568:93+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:568:93+1 + assume {:print "$at(6,20962,20963)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_concurrent_token_v2_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:311:5+118 +procedure {:timeLimit 80} $1_features_get_concurrent_token_v2_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:312:33+27 + assume {:print "$at(6,11758,11785)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:312:9+52 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,11734,11786)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,47):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:312:9+52 + assume {:print "$track_return(8,47,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:313:5+1 + assume {:print "$at(6,11791,11792)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:313:5+1 + assume {:print "$at(6,11791,11792)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:313:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:313:5+1 + assume {:print "$at(6,11791,11792)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_cryptography_algebra_natives_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:158:5+91 +procedure {:timeLimit 80} $1_features_get_cryptography_algebra_natives_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:158:66+28 + assume {:print "$at(6,6590,6618)"} true; + $t0 := 12; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:158:66+28 + assume {:print "$track_return(8,48,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:158:95+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:158:95+1 + assume {:print "$at(6,6619,6620)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_default_to_concurrent_fungible_balance_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:578:5+111 +procedure {:timeLimit 80} $1_features_get_default_to_concurrent_fungible_balance_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:578:76+38 + assume {:print "$at(6,21336,21374)"} true; + $t0 := 68; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:578:76+38 + assume {:print "$track_return(8,49,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:578:115+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:578:115+1 + assume {:print "$at(6,21375,21376)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_delegation_pool_allowlisting_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:459:5+91 +procedure {:timeLimit 80} $1_features_get_delegation_pool_allowlisting_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:459:66+28 + assume {:print "$at(6,16766,16794)"} true; + $t0 := 56; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:459:66+28 + assume {:print "$track_return(8,50,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:459:95+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:459:95+1 + assume {:print "$at(6,16795,16796)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_delegation_pool_partial_governance_voting [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:213:5+109 +procedure {:timeLimit 80} $1_features_get_delegation_pool_partial_governance_voting$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:213:71+41 + assume {:print "$at(6,8534,8575)"} true; + $t0 := 21; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:213:71+41 + assume {:print "$track_return(8,51,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:213:113+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:213:113+1 + assume {:print "$at(6,8576,8577)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_delegation_pools_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:147:5+67 +procedure {:timeLimit 80} $1_features_get_delegation_pools_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:147:54+16 + assume {:print "$at(6,6212,6228)"} true; + $t0 := 11; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:147:54+16 + assume {:print "$track_return(8,52,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:147:71+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:147:71+1 + assume {:print "$at(6,6229,6230)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_dispatchable_fungible_asset_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:536:5+89 +procedure {:timeLimit 80} $1_features_get_dispatchable_fungible_asset_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:536:65+27 + assume {:print "$at(6,19638,19665)"} true; + $t0 := 63; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:536:65+27 + assume {:print "$track_return(8,53,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:536:93+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:536:93+1 + assume {:print "$at(6,19666,19667)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_jwk_consensus_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:400:5+61 +procedure {:timeLimit 80} $1_features_get_jwk_consensus_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:400:51+13 + assume {:print "$at(6,14687,14700)"} true; + $t0 := 49; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:400:51+13 + assume {:print "$track_return(8,54,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:400:65+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:400:65+1 + assume {:print "$at(6,14701,14702)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_keyless_accounts_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:380:5+67 +procedure {:timeLimit 80} $1_features_get_keyless_accounts_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:380:54+16 + assume {:print "$at(6,13983,13999)"} true; + $t0 := 46; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:380:54+16 + assume {:print "$track_return(8,55,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:380:71+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:380:71+1 + assume {:print "$at(6,14000,14001)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_keyless_accounts_with_passkeys_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:438:5+95 +procedure {:timeLimit 80} $1_features_get_keyless_accounts_with_passkeys_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:438:68+30 + assume {:print "$at(6,15998,16028)"} true; + $t0 := 54; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:438:68+30 + assume {:print "$track_return(8,56,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:438:99+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:438:99+1 + assume {:print "$at(6,16029,16030)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_keyless_but_zkless_accounts_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:391:5+89 +procedure {:timeLimit 80} $1_features_get_keyless_but_zkless_accounts_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:391:65+27 + assume {:print "$at(6,14342,14369)"} true; + $t0 := 47; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:391:65+27 + assume {:print "$track_return(8,57,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:391:93+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:391:93+1 + assume {:print "$at(6,14370,14371)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_max_object_nesting_check_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:427:5+83 +procedure {:timeLimit 80} $1_features_get_max_object_nesting_check_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:427:62+24 + assume {:print "$at(6,15609,15633)"} true; + $t0 := 53; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:427:62+24 + assume {:print "$track_return(8,58,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:427:87+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:427:87+1 + assume {:print "$at(6,15634,15635)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_module_event_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:265:5+59 +procedure {:timeLimit 80} $1_features_get_module_event_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:265:50+12 + assume {:print "$at(6,10278,10290)"} true; + $t0 := 26; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:265:50+12 + assume {:print "$track_return(8,59,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:265:63+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:265:63+1 + assume {:print "$at(6,10291,10292)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_module_event_migration_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:470:5+79 +procedure {:timeLimit 80} $1_features_get_module_event_migration_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:470:60+22 + assume {:print "$at(6,17156,17178)"} true; + $t0 := 57; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:470:60+22 + assume {:print "$track_return(8,60,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:470:83+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:470:83+1 + assume {:print "$at(6,17179,17180)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_multisig_accounts_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:137:5+69 +procedure {:timeLimit 80} $1_features_get_multisig_accounts_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:137:55+17 + assume {:print "$at(6,5911,5928)"} true; + $t0 := 10; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:137:55+17 + assume {:print "$track_return(8,61,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:137:73+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:137:73+1 + assume {:print "$at(6,5929,5930)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_multisig_v2_enhancement_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:449:5+81 +procedure {:timeLimit 80} $1_features_get_multisig_v2_enhancement_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:449:61+23 + assume {:print "$at(6,16386,16409)"} true; + $t0 := 55; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:449:61+23 + assume {:print "$track_return(8,62,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:449:85+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:449:85+1 + assume {:print "$at(6,16410,16411)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_new_accounts_default_to_fa_apt_store_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:547:5+107 +procedure {:timeLimit 80} $1_features_get_new_accounts_default_to_fa_apt_store_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:547:74+36 + assume {:print "$at(6,20056,20092)"} true; + $t0 := 64; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:547:74+36 + assume {:print "$track_return(8,63,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:547:111+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:547:111+1 + assume {:print "$at(6,20093,20094)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_object_native_derived_address_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:525:5+93 +procedure {:timeLimit 80} $1_features_get_object_native_derived_address_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:525:67+29 + assume {:print "$at(6,19240,19269)"} true; + $t0 := 62; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:525:67+29 + assume {:print "$track_return(8,64,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:525:97+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:525:97+1 + assume {:print "$at(6,19270,19271)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_operations_default_to_fa_apt_store_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:557:5+103 +procedure {:timeLimit 80} $1_features_get_operations_default_to_fa_apt_store_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:557:72+34 + assume {:print "$at(6,20499,20533)"} true; + $t0 := 65; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:557:72+34 + assume {:print "$track_return(8,65,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:557:107+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:557:107+1 + assume {:print "$at(6,20534,20535)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_operator_beneficiary_change_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:335:5+89 +procedure {:timeLimit 80} $1_features_get_operator_beneficiary_change_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:335:65+27 + assume {:print "$at(6,12408,12435)"} true; + $t0 := 39; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:335:65+27 + assume {:print "$track_return(8,66,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:335:93+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:335:93+1 + assume {:print "$at(6,12436,12437)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_partial_governance_voting [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:199:5+77 +procedure {:timeLimit 80} $1_features_get_partial_governance_voting$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:199:55+25 + assume {:print "$at(6,8024,8049)"} true; + $t0 := 17; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:199:55+25 + assume {:print "$track_return(8,67,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:199:81+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:199:81+1 + assume {:print "$at(6,8050,8051)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_periodical_reward_rate_decrease_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:189:5+97 +procedure {:timeLimit 80} $1_features_get_periodical_reward_rate_decrease_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:189:69+31 + assume {:print "$at(6,7643,7674)"} true; + $t0 := 16; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:189:69+31 + assume {:print "$track_return(8,68,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:189:101+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:189:101+1 + assume {:print "$at(6,7675,7676)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_primary_apt_fungible_store_at_user_address_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:506:5+141 +procedure {:timeLimit 80} $1_features_get_primary_apt_fungible_store_at_user_address_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:508:39+16 + assume {:print "$at(6,18629,18645)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := error::invalid_argument($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:508:15+41 + call $t1 := $1_error_invalid_argument($t0); + if ($abort_flag) { + assume {:print "$at(6,18605,18646)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(8,69):", $t2} $t2 == $t2; + goto L2; + } + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:508:9+47 + assume {:print "$at(6,18599,18646)"} true; + assume {:print "$track_abort(8,69):", $t1} $t1 == $t1; + + // $t2 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:508:9+47 + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:509:5+1 + assume {:print "$at(6,18651,18652)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:509:5+1 + assume {:print "$at(6,18651,18652)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun features::get_reconfigure_with_dkg_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:369:5+75 +procedure {:timeLimit 80} $1_features_get_reconfigure_with_dkg_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:369:58+20 + assume {:print "$at(6,13621,13641)"} true; + $t0 := 45; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:369:58+20 + assume {:print "$track_return(8,70,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:369:79+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:369:79+1 + assume {:print "$at(6,13642,13643)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_resource_groups_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:128:5+65 +procedure {:timeLimit 80} $1_features_get_resource_groups_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:128:53+15 + assume {:print "$at(6,5586,5601)"} true; + $t0 := 9; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:128:53+15 + assume {:print "$track_return(8,71,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:128:69+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:128:69+1 + assume {:print "$at(6,5602,5603)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_sha_512_and_ripemd_160_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:61:5+87 +procedure {:timeLimit 80} $1_features_get_sha_512_and_ripemd_160_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:61:60+30 + assume {:print "$at(6,2878,2908)"} true; + $t0 := 3; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:61:60+30 + assume {:print "$track_return(8,72,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:61:91+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:61:91+1 + assume {:print "$at(6,2909,2910)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_signer_native_format_fix_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:254:5+83 +procedure {:timeLimit 80} $1_features_get_signer_native_format_fix_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:254:62+24 + assume {:print "$at(6,9925,9949)"} true; + $t0 := 25; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:254:62+24 + assume {:print "$track_return(8,73,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:254:87+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:254:87+1 + assume {:print "$at(6,9950,9951)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_sponsored_automatic_account_creation [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:303:5+99 +procedure {:timeLimit 80} $1_features_get_sponsored_automatic_account_creation$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:303:66+36 + assume {:print "$at(6,11429,11465)"} true; + $t0 := 34; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:303:66+36 + assume {:print "$track_return(8,74,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:303:103+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:303:103+1 + assume {:print "$at(6,11466,11467)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_starcoin_stdlib_chain_id_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:74:5+88 +procedure {:timeLimit 80} $1_features_get_starcoin_stdlib_chain_id_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:74:62+29 + assume {:print "$at(6,3464,3493)"} true; + $t0 := 4; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:74:62+29 + assume {:print "$track_return(8,75,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:74:92+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:74:92+1 + assume {:print "$at(6,3494,3495)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_transaction_context_extension_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:482:5+93 +procedure {:timeLimit 80} $1_features_get_transaction_context_extension_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 59 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:482:67+29 + assume {:print "$at(6,17645,17674)"} true; + $t0 := 59; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:482:67+29 + assume {:print "$track_return(8,76,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:482:97+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:482:97+1 + assume {:print "$at(6,17675,17676)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_transaction_simulation_enhancement_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:603:5+103 +procedure {:timeLimit 80} $1_features_get_transaction_simulation_enhancement_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 78 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:603:72+34 + assume {:print "$at(6,22517,22551)"} true; + $t0 := 78; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:603:72+34 + assume {:print "$track_return(8,77,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:603:107+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:603:107+1 + assume {:print "$at(6,22552,22553)"} true; + $ret0 := $t0; + return; + +} + +// fun features::get_vm_binary_format_v6 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:84:5+65 +procedure {:timeLimit 80} $1_features_get_vm_binary_format_v6$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:84:49+19 + assume {:print "$at(6,3809,3828)"} true; + $t0 := 5; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:84:49+19 + assume {:print "$track_return(8,78,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:84:69+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:84:69+1 + assume {:print "$at(6,3829,3830)"} true; + $ret0 := $t0; + return; + +} + +// fun features::is_collection_owner_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:613:5+109 +procedure {:inline 1} $1_features_is_collection_owner_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 79 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:20+16 + assume {:print "$at(6,22905,22921)"} true; + $t0 := 79; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume {:print "$track_return(8,79,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:615:5+1 + assume {:print "$at(6,22927,22928)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:615:5+1 + assume {:print "$at(6,22927,22928)"} true; + $ret0 := $t1; + return; + +} + +// fun features::is_collection_owner_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:613:5+109 +procedure {:timeLimit 80} $1_features_is_collection_owner_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:613:5+1 + assume {:print "$at(6,22819,22820)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 79 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:20+16 + assume {:print "$at(6,22905,22921)"} true; + $t0 := 79; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:614:9+28 + assume {:print "$track_return(8,79,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:615:5+1 + assume {:print "$at(6,22927,22928)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:615:5+1 + assume {:print "$at(6,22927,22928)"} true; + $ret0 := $t1; + return; + +} + +// fun features::is_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:702:5+172 +procedure {:timeLimit 80} $1_features_is_enabled$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_features_Features; + var $t6: int; + var $t7: Vec (bv8); + var $t8: bool; + var $t0: int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:702:5+1 + assume {:print "$at(6,26729,26730)"} true; + assume $IsValid'u64'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:702:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[feature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:702:5+1 + assume {:print "$track_local(8,80,0):", $t0} $t0 == $t0; + + // $t2 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:26+4 + assume {:print "$at(6,26816,26820)"} true; + $t2 := 1; + assume $IsValid'address'($t2); + + // $t3 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+6 + $t3 := $ResourceExists($1_features_Features_$memory, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:704:47+4 + assume {:print "$at(6,26871,26875)"} true; +L1: + + // $t4 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:704:47+4 + assume {:print "$at(6,26871,26875)"} true; + $t4 := 1; + assume $IsValid'address'($t4); + + // $t5 := get_global($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:704:23+13 + if (!$ResourceExists($1_features_Features_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_features_Features_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(6,26847,26860)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(8,80):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := get_field.features($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:704:22+39 + $t7 := $t5->$features; + + // $t1 := features::contains($t7, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:704:13+58 + call $t1 := $1_features_contains($t7, $t0); + if ($abort_flag) { + assume {:print "$at(6,26837,26895)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(8,80):", $t6} $t6 == $t6; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 + assume {:print "$at(6,26799,26895)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 +L0: + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 + assume {:print "$at(6,26799,26895)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // $t1 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 + $t1 := $t8; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:703:9+96 + assume {:print "$at(6,26799,26895)"} true; + assume {:print "$track_return(8,80,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:705:5+1 + assume {:print "$at(6,26900,26901)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:705:5+1 + assume {:print "$at(6,26900,26901)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:705:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:705:5+1 + assume {:print "$at(6,26900,26901)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun features::is_object_code_deployment_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:420:5+121 +procedure {:timeLimit 80} $1_features_is_object_code_deployment_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:420:5+1 + assume {:print "$at(6,15314,15315)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:20+22 + assume {:print "$at(6,15406,15428)"} true; + $t0 := 52; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:9+34 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:9+34 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:9+34 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:9+34 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:421:9+34 + assume {:print "$track_return(8,81,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:422:5+1 + assume {:print "$at(6,15434,15435)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:422:5+1 + assume {:print "$at(6,15434,15435)"} true; + $ret0 := $t1; + return; + +} + +// fun features::jwk_consensus_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:402:5+100 +procedure {:timeLimit 80} $1_features_jwk_consensus_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:402:5+1 + assume {:print "$at(6,14708,14709)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:20+13 + assume {:print "$at(6,14788,14801)"} true; + $t0 := 49; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:9+25 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:9+25 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:9+25 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:9+25 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:403:9+25 + assume {:print "$track_return(8,82,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:404:5+1 + assume {:print "$at(6,14807,14808)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:404:5+1 + assume {:print "$at(6,14807,14808)"} true; + $ret0 := $t1; + return; + +} + +// fun features::keyless_accounts_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:382:5+106 +procedure {:timeLimit 80} $1_features_keyless_accounts_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:382:5+1 + assume {:print "$at(6,14007,14008)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:20+16 + assume {:print "$at(6,14090,14106)"} true; + $t0 := 46; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:9+28 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:9+28 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:9+28 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:9+28 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:383:9+28 + assume {:print "$track_return(8,83,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:384:5+1 + assume {:print "$at(6,14112,14113)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:384:5+1 + assume {:print "$at(6,14112,14113)"} true; + $ret0 := $t1; + return; + +} + +// fun features::keyless_accounts_with_passkeys_feature_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:440:5+142 +procedure {:timeLimit 80} $1_features_keyless_accounts_with_passkeys_feature_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:440:5+1 + assume {:print "$at(6,16036,16037)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:20+30 + assume {:print "$at(6,16141,16171)"} true; + $t0 := 54; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:9+42 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:9+42 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:9+42 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:9+42 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:441:9+42 + assume {:print "$track_return(8,84,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:442:5+1 + assume {:print "$at(6,16177,16178)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:442:5+1 + assume {:print "$at(6,16177,16178)"} true; + $ret0 := $t1; + return; + +} + +// fun features::keyless_but_zkless_accounts_feature_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:393:5+136 +procedure {:timeLimit 80} $1_features_keyless_but_zkless_accounts_feature_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:393:5+1 + assume {:print "$at(6,14377,14378)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:20+27 + assume {:print "$at(6,14479,14506)"} true; + $t0 := 47; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:9+39 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:9+39 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:9+39 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:9+39 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:394:9+39 + assume {:print "$track_return(8,85,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:395:5+1 + assume {:print "$at(6,14512,14513)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:395:5+1 + assume {:print "$at(6,14512,14513)"} true; + $ret0 := $t1; + return; + +} + +// fun features::max_object_nesting_check_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:429:5+122 +procedure {:timeLimit 80} $1_features_max_object_nesting_check_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:429:5+1 + assume {:print "$at(6,15641,15642)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:20+24 + assume {:print "$at(6,15732,15756)"} true; + $t0 := 53; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:9+36 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:9+36 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:9+36 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:9+36 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:430:9+36 + assume {:print "$track_return(8,86,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:431:5+1 + assume {:print "$at(6,15762,15763)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:431:5+1 + assume {:print "$at(6,15762,15763)"} true; + $ret0 := $t1; + return; + +} + +// fun features::module_event_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:267:5+98 +procedure {:timeLimit 80} $1_features_module_event_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:267:5+1 + assume {:print "$at(6,10298,10299)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:20+12 + assume {:print "$at(6,10377,10389)"} true; + $t0 := 26; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:9+24 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:9+24 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:9+24 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:9+24 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:268:9+24 + assume {:print "$track_return(8,87,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:269:5+1 + assume {:print "$at(6,10395,10396)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:269:5+1 + assume {:print "$at(6,10395,10396)"} true; + $ret0 := $t1; + return; + +} + +// fun features::module_event_migration_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:472:5+118 +procedure {:inline 1} $1_features_module_event_migration_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:20+22 + assume {:print "$at(6,17275,17297)"} true; + $t0 := 57; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume {:print "$track_return(8,88,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:474:5+1 + assume {:print "$at(6,17303,17304)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:474:5+1 + assume {:print "$at(6,17303,17304)"} true; + $ret0 := $t1; + return; + +} + +// fun features::module_event_migration_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:472:5+118 +procedure {:timeLimit 80} $1_features_module_event_migration_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:472:5+1 + assume {:print "$at(6,17186,17187)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:20+22 + assume {:print "$at(6,17275,17297)"} true; + $t0 := 57; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:473:9+34 + assume {:print "$track_return(8,88,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:474:5+1 + assume {:print "$at(6,17303,17304)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:474:5+1 + assume {:print "$at(6,17303,17304)"} true; + $ret0 := $t1; + return; + +} + +// fun features::multi_ed25519_pk_validate_v2_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:107:5+138 +procedure {:inline 1} $1_features_multi_ed25519_pk_validate_v2_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:20+36 + assume {:print "$at(6,4819,4855)"} true; + $t0 := 7; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume {:print "$track_return(8,89,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:109:5+1 + assume {:print "$at(6,4861,4862)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:109:5+1 + assume {:print "$at(6,4861,4862)"} true; + $ret0 := $t1; + return; + +} + +// fun features::multi_ed25519_pk_validate_v2_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:107:5+138 +procedure {:timeLimit 80} $1_features_multi_ed25519_pk_validate_v2_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:107:5+1 + assume {:print "$at(6,4724,4725)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:20+36 + assume {:print "$at(6,4819,4855)"} true; + $t0 := 7; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:108:9+48 + assume {:print "$track_return(8,89,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:109:5+1 + assume {:print "$at(6,4861,4862)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:109:5+1 + assume {:print "$at(6,4861,4862)"} true; + $ret0 := $t1; + return; + +} + +// fun features::multi_ed25519_pk_validate_v2_feature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:105:5+95 +procedure {:timeLimit 80} $1_features_multi_ed25519_pk_validate_v2_feature$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:105:62+36 + assume {:print "$at(6,4680,4716)"} true; + $t0 := 7; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:105:62+36 + assume {:print "$track_return(8,90,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:105:99+1 +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:105:99+1 + assume {:print "$at(6,4717,4718)"} true; + $ret0 := $t0; + return; + +} + +// fun features::multisig_accounts_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:139:5+108 +procedure {:timeLimit 80} $1_features_multisig_accounts_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:139:5+1 + assume {:print "$at(6,5936,5937)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:20+17 + assume {:print "$at(6,6020,6037)"} true; + $t0 := 10; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:9+29 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:9+29 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:9+29 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:9+29 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:140:9+29 + assume {:print "$track_return(8,91,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:141:5+1 + assume {:print "$at(6,6043,6044)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:141:5+1 + assume {:print "$at(6,6043,6044)"} true; + $ret0 := $t1; + return; + +} + +// fun features::multisig_v2_enhancement_feature_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:451:5+128 +procedure {:timeLimit 80} $1_features_multisig_v2_enhancement_feature_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:451:5+1 + assume {:print "$at(6,16417,16418)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:20+23 + assume {:print "$at(6,16515,16538)"} true; + $t0 := 55; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:9+35 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:9+35 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:9+35 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:9+35 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:452:9+35 + assume {:print "$track_return(8,92,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:453:5+1 + assume {:print "$at(6,16544,16545)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:453:5+1 + assume {:print "$at(6,16544,16545)"} true; + $ret0 := $t1; + return; + +} + +// fun features::new_accounts_default_to_fa_stc_store_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:549:5+241 +procedure {:inline 1} $1_features_new_accounts_default_to_fa_stc_store_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:20+36 + assume {:print "$at(6,20298,20334)"} true; + $t0 := 64; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume {:print "$track_return(8,93,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:552:5+1 + assume {:print "$at(6,20340,20341)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:552:5+1 + assume {:print "$at(6,20340,20341)"} true; + $ret0 := $t1; + return; + +} + +// fun features::new_accounts_default_to_fa_stc_store_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:549:5+241 +procedure {:timeLimit 80} $1_features_new_accounts_default_to_fa_stc_store_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:549:5+1 + assume {:print "$at(6,20100,20101)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:20+36 + assume {:print "$at(6,20298,20334)"} true; + $t0 := 64; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:551:9+48 + assume {:print "$track_return(8,93,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:552:5+1 + assume {:print "$at(6,20340,20341)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:552:5+1 + assume {:print "$at(6,20340,20341)"} true; + $ret0 := $t1; + return; + +} + +// fun features::object_native_derived_address_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:527:5+132 +procedure {:inline 1} $1_features_object_native_derived_address_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:20+29 + assume {:print "$at(6,19373,19402)"} true; + $t0 := 62; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume {:print "$track_return(8,94,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:529:5+1 + assume {:print "$at(6,19408,19409)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:529:5+1 + assume {:print "$at(6,19408,19409)"} true; + $ret0 := $t1; + return; + +} + +// fun features::object_native_derived_address_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:527:5+132 +procedure {:timeLimit 80} $1_features_object_native_derived_address_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:527:5+1 + assume {:print "$at(6,19277,19278)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:20+29 + assume {:print "$at(6,19373,19402)"} true; + $t0 := 62; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:528:9+41 + assume {:print "$track_return(8,94,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:529:5+1 + assume {:print "$at(6,19408,19409)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:529:5+1 + assume {:print "$at(6,19408,19409)"} true; + $ret0 := $t1; + return; + +} + +// fun features::on_new_epoch [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:688:5+472 +procedure {:timeLimit 80} $1_features_on_new_epoch$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (bv8); + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: $1_features_PendingFeatures; + var $t8: Vec (bv8); + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $Mutation ($1_features_Features); + var $t13: $Mutation (Vec (bv8)); + var $t14: $1_features_Features; + var $t15: Vec (bv8); + var $t0: $signer; + var $temp_0'signer': $signer; + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:688:5+1 + assume {:print "$at(6,26193,26194)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:688:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: features::PendingFeatures: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:688:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_PendingFeatures_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_PendingFeatures_$memory, $a_0); + ($IsValid'$1_features_PendingFeatures'($rsc)))); + + // assume Identical($t2, select features::PendingFeatures.features(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:115:9+62 + assume {:print "$at(7,3749,3811)"} true; + assume ($t2 == $ResourceValue($1_features_PendingFeatures_$memory, 1)->$features); + + // assume Eq
(0x1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:114:9+47 + assume {:print "$at(7,3693,3740)"} true; + assume $IsEqual'address'(1, $1_signer_$address_of($t0)); + + // trace_local[framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:688:5+1 + assume {:print "$at(6,26193,26194)"} true; + assume {:print "$track_local(8,95,0):", $t0} $t0 == $t0; + + // features::ensure_framework_signer($t0) on_abort goto L7 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:689:9+34 + assume {:print "$at(6,26282,26316)"} true; + call $1_features_ensure_framework_signer($t0); + if ($abort_flag) { + assume {:print "$at(6,26282,26316)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(8,95):", $t3} $t3 == $t3; + goto L7; + } + + // $t4 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:37+4 + assume {:print "$at(6,26354,26358)"} true; + $t4 := 1; + assume $IsValid'address'($t4); + + // $t5 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:13+6 + $t5 := $ResourceExists($1_features_PendingFeatures_$memory, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:9+333 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:691:75+4 + assume {:print "$at(6,26437,26441)"} true; +L1: + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:691:75+4 + assume {:print "$at(6,26437,26441)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // $t7 := move_from($t6) on_abort goto L7 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:691:48+9 + if (!$ResourceExists($1_features_PendingFeatures_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_features_PendingFeatures_$memory, $t6); + $1_features_PendingFeatures_$memory := $ResourceRemove($1_features_PendingFeatures_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(6,26410,26419)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(8,95):", $t3} $t3 == $t3; + goto L7; + } + + // $t8 := unpack features::PendingFeatures($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:691:17+28 + $t8 := $t7->$features; + + // trace_local[features]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:691:35+8 + assume {:print "$track_local(8,95,1):", $t8} $t8 == $t8; + + // $t9 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:692:34+4 + assume {:print "$at(6,26477,26481)"} true; + $t9 := 1; + assume $IsValid'address'($t9); + + // $t10 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:692:17+6 + $t10 := $ResourceExists($1_features_Features_$memory, $t9); + + // if ($t10) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:692:13+193 + if ($t10) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+53 + assume {:print "$at(6,26502,26555)"} true; +L3: + + // $t11 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:45+4 + assume {:print "$at(6,26530,26534)"} true; + $t11 := 1; + assume $IsValid'address'($t11); + + // $t12 := borrow_global($t11) on_abort goto L7 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+17 + if (!$ResourceExists($1_features_Features_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_features_Features_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(6,26502,26519)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(8,95):", $t3} $t3 == $t3; + goto L7; + } + + // $t13 := borrow_field.features($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+42 + $t13 := $ChildMutation($t12, 0, $Dereference($t12)->$features); + + // write_ref($t13, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+53 + $t13 := $UpdateMutation($t13, $t8); + + // write_back[Reference($t12).features (vector)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+53 + $t12 := $UpdateMutation($t12, $Update'$1_features_Features'_features($Dereference($t12), $Dereference($t13))); + + // write_back[features::Features@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:693:17+53 + $1_features_Features_$memory := $ResourceUpdate($1_features_Features_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:692:13+193 + assume {:print "$at(6,26456,26649)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:695:25+9 + assume {:print "$at(6,26602,26611)"} true; +L2: + + // $t14 := pack features::Features($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:695:36+21 + assume {:print "$at(6,26613,26634)"} true; + $t14 := $1_features_Features($t8); + + // move_to($t14, $t0) on_abort goto L7 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:695:17+7 + if ($ResourceExists($1_features_Features_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_features_Features_$memory := $ResourceUpdate($1_features_Features_$memory, $t0->$addr, $t14); + } + if ($abort_flag) { + assume {:print "$at(6,26594,26601)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(8,95):", $t3} $t3 == $t3; + goto L7; + } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:9+333 + assume {:print "$at(6,26326,26659)"} true; +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:9+333 + assume {:print "$at(6,26326,26659)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:9+333 +L0: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:690:9+333 + assume {:print "$at(6,26326,26659)"} true; +L5: + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:698:5+1 + assume {:print "$at(6,26664,26665)"} true; +L6: + + // assume Identical($t15, select features::Features.features(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:116:9+56 + assume {:print "$at(7,3820,3876)"} true; + assume ($t15 == $ResourceValue($1_features_Features_$memory, 1)->$features); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:118:9+16 + assume {:print "$at(7,3969,3985)"} true; + assert {:msg "assert_failed(7,3969,3985): function does not abort under this condition"} + !false; + + // assert Implies(exists(0x1), Eq>($t15, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:117:9+75 + assume {:print "$at(7,3885,3960)"} true; + assert {:msg "assert_failed(7,3885,3960): post-condition does not hold"} + ($ResourceExists($1_features_PendingFeatures_$memory, 1) ==> $IsEqual'vec'bv8''($t15, $t2)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:117:9+75 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:698:5+1 + assume {:print "$at(6,26664,26665)"} true; +L7: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:113:5+346 + assume {:print "$at(7,3645,3991)"} true; + assert {:msg "assert_failed(7,3645,3991): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:113:5+346 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun features::operations_default_to_fa_apt_store_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:559:5+142 +procedure {:timeLimit 80} $1_features_operations_default_to_fa_apt_store_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:559:5+1 + assume {:print "$at(6,20541,20542)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:20+34 + assume {:print "$at(6,20642,20676)"} true; + $t0 := 65; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:9+46 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:9+46 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:9+46 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:9+46 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:560:9+46 + assume {:print "$track_return(8,96,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:561:5+1 + assume {:print "$at(6,20682,20683)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:561:5+1 + assume {:print "$at(6,20682,20683)"} true; + $ret0 := $t1; + return; + +} + +// fun features::operator_beneficiary_change_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:337:5+128 +procedure {:timeLimit 80} $1_features_operator_beneficiary_change_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:337:5+1 + assume {:print "$at(6,12443,12444)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:20+27 + assume {:print "$at(6,12537,12564)"} true; + $t0 := 39; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:9+39 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:9+39 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:9+39 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:9+39 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:338:9+39 + assume {:print "$track_return(8,97,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:339:5+1 + assume {:print "$at(6,12570,12571)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:339:5+1 + assume {:print "$at(6,12570,12571)"} true; + $ret0 := $t1; + return; + +} + +// fun features::partial_governance_voting_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:201:5+124 +procedure {:timeLimit 80} $1_features_partial_governance_voting_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:201:5+1 + assume {:print "$at(6,8057,8058)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:20+25 + assume {:print "$at(6,8149,8174)"} true; + $t0 := 17; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:9+37 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:9+37 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:9+37 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:9+37 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:202:9+37 + assume {:print "$track_return(8,98,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:203:5+1 + assume {:print "$at(6,8180,8181)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:203:5+1 + assume {:print "$at(6,8180,8181)"} true; + $ret0 := $t1; + return; + +} + +// fun features::periodical_reward_rate_decrease_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:191:5+136 +procedure {:timeLimit 80} $1_features_periodical_reward_rate_decrease_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:191:5+1 + assume {:print "$at(6,7682,7683)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:20+31 + assume {:print "$at(6,7780,7811)"} true; + $t0 := 16; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:9+43 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:9+43 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:9+43 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:9+43 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:192:9+43 + assume {:print "$track_return(8,99,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:193:5+1 + assume {:print "$at(6,7817,7818)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:193:5+1 + assume {:print "$at(6,7817,7818)"} true; + $ret0 := $t1; + return; + +} + +// fun features::primary_apt_fungible_store_at_user_address_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:512:5+158 +procedure {:timeLimit 80} $1_features_primary_apt_fungible_store_at_user_address_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:512:5+1 + assume {:print "$at(6,18676,18677)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:20+42 + assume {:print "$at(6,18785,18827)"} true; + $t0 := 61; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:9+54 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:9+54 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:9+54 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:9+54 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:513:9+54 + assume {:print "$track_return(8,100,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:514:5+1 + assume {:print "$at(6,18833,18834)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:514:5+1 + assume {:print "$at(6,18833,18834)"} true; + $ret0 := $t1; + return; + +} + +// fun features::reconfigure_with_dkg_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:371:5+114 +procedure {:timeLimit 80} $1_features_reconfigure_with_dkg_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:371:5+1 + assume {:print "$at(6,13649,13650)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:20+20 + assume {:print "$at(6,13736,13756)"} true; + $t0 := 45; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:9+32 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:9+32 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:9+32 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:9+32 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:372:9+32 + assume {:print "$track_return(8,101,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:373:5+1 + assume {:print "$at(6,13762,13763)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:373:5+1 + assume {:print "$at(6,13762,13763)"} true; + $ret0 := $t1; + return; + +} + +// fun features::resource_groups_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:130:5+104 +procedure {:timeLimit 80} $1_features_resource_groups_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:130:5+1 + assume {:print "$at(6,5609,5610)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:20+15 + assume {:print "$at(6,5691,5706)"} true; + $t0 := 9; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:9+27 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:9+27 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:9+27 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:9+27 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:131:9+27 + assume {:print "$track_return(8,102,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:132:5+1 + assume {:print "$at(6,5712,5713)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:132:5+1 + assume {:print "$at(6,5712,5713)"} true; + $ret0 := $t1; + return; + +} + +// fun features::set [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+454 +procedure {:inline 1} $1_features_set(_$t0: $Mutation (Vec (bv8)), _$t1: int, _$t2: bool) returns ($ret0: $Mutation (Vec (bv8))) +{ + // 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: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Vec (bv8); + var $t15: int; + var $t16: bool; + var $t17: bv8; + var $t18: $Mutation (bv8); + var $t19: bv8; + var $t20: bv8; + var $t21: bv8; + var $t22: int; + var $t23: bv8; + var $t24: bv8; + var $t0: $Mutation (Vec (bv8)); + var $t1: int; + var $t2: bool; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'bv8': bv8; + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$at(6,26960,26961)"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[feature]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$track_local(8,103,1):", $t1} $t1 == $t1; + + // trace_local[include]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$track_local(8,103,2):", $t2} $t2 == $t2; + + // $t6 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:36+1 + assume {:print "$at(6,27061,27062)"} true; + $t6 := 8; + assume $IsValid'u64'($t6); + + // $t7 := /($t1, $t6) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:34+1 + call $t7 := $Div($t1, $t6); + if ($abort_flag) { + assume {:print "$at(6,27059,27060)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[byte_index]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:13+10 + assume {:print "$track_local(8,103,4):", $t7} $t7 == $t7; + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:24+1 + assume {:print "$at(6,27087,27088)"} true; + $t9 := 1; + assume $IsValid'u8'($t9); + + // $t10 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:41+1 + $t10 := 8; + assume $IsValid'u64'($t10); + + // $t11 := %($t1, $t10) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:39+1 + call $t11 := $Mod($t1, $t10); + if ($abort_flag) { + assume {:print "$at(6,27102,27103)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t12 := (u8)($t11) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:29+21 + call $t12 := $CastU8($t11); + if ($abort_flag) { + assume {:print "$at(6,27092,27113)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t13 := <<($t9, $t12) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:26+2 + call $t13 := $ShlU8($t9, $t12); + if ($abort_flag) { + assume {:print "$at(6,27089,27091)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[bit_mask]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:13+8 + assume {:print "$track_local(8,103,3):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$at(6,27145,27153)"} true; +L3: + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$at(6,27145,27153)"} true; + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'vec'bv8''($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'bool'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'bv8'($t17); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $temp_0'vec'bv8''; + $t0 := $UpdateMutation($t0, $temp_0'vec'bv8''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'vec'bv8''($Dereference($t0)); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$info(): enter loop, variable(s) features havocked and reassigned"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume !$abort_flag; + + // $t14 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + $t14 := $Dereference($t0); + + // $t15 := vector::length($t14) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:16+24 + call $t15 := $1_vector_length'bv8'($t14); + if ($abort_flag) { + assume {:print "$at(6,27130,27154)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t16 := <=($t15, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:41+2 + call $t16 := $Le($t15, $t7); + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:9+101 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:9+101 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:31+8 + assume {:print "$at(6,27202,27210)"} true; +L2: + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:41+1 + assume {:print "$at(6,27212,27213)"} true; + $t17 := 0bv8; + assume $IsValid'bv8'($t17); + + // vector::push_back($t0, $t17) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:13+30 + call $t0 := $1_vector_push_back'bv8'($t0, $t17); + if ($abort_flag) { + assume {:print "$at(6,27184,27214)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:13+30 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:40+8 + assume {:print "$at(6,27265,27273)"} true; +L0: + + // $t18 := vector::borrow_mut($t0, $t7) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:21+40 + assume {:print "$at(6,27246,27286)"} true; + call $t18,$t0 := $1_vector_borrow_mut'bv8'($t0, $t7); + if ($abort_flag) { + assume {:print "$at(6,27246,27286)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[entry]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:13+5 + $temp_0'bv8' := $Dereference($t18); + assume {:print "$track_local(8,103,5):", $temp_0'bv8'} $temp_0'bv8' == $temp_0'bv8'; + + // if ($t2) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + if ($t2) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:23+5 + assume {:print "$at(6,27331,27336)"} true; +L5: + + // $t19 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:22+6 + assume {:print "$at(6,27330,27336)"} true; + $t19 := $Dereference($t18); + + // $t20 := |($t19, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:29+1 + call $t20 := $OrBv8($t19, $int2bv.8($t13)); + + // write_ref($t18, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $t18 := $UpdateMutation($t18, $t20); + + // write_back[Reference($t0)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $t0 := $UpdateMutation($t0, UpdateVec($Dereference($t0), ReadVec($t18->p, LenVec($t0->p)), $Dereference($t18))); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:23+5 + assume {:print "$at(6,27383,27388)"} true; +L4: + + // $t21 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:22+6 + assume {:print "$at(6,27382,27388)"} true; + $t21 := $Dereference($t18); + + // $t22 := 255 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:32+4 + $t22 := 255; + assume $IsValid'u8'($t22); + + // $t23 := ^($t22, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:37+1 + call $t23 := $XorBv8($int2bv.8($t22), $int2bv.8($t13)); + + // $t24 := &($t21, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:29+1 + call $t24 := $AndBv8($t21, $t23); + + // write_ref($t18, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $t18 := $UpdateMutation($t18, $t24); + + // write_back[Reference($t0)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $t0 := $UpdateMutation($t0, UpdateVec($Dereference($t0), ReadVec($t18->p, LenVec($t0->p)), $Dereference($t18))); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; +L6: + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + // Loop invariant checking block for the loop started with header: L3 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 + assume {:print "$at(6,27413,27414)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 + assume {:print "$at(6,27413,27414)"} true; + $ret0 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 +L9: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 + assume {:print "$at(6,27413,27414)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun features::set [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+454 +procedure {:timeLimit 80} $1_features_set$verify(_$t0: $Mutation (Vec (bv8)), _$t1: int, _$t2: bool) returns ($ret0: $Mutation (Vec (bv8))) +{ + // 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: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Vec (bv8); + var $t15: int; + var $t16: bool; + var $t17: bv8; + var $t18: $Mutation (bv8); + var $t19: bv8; + var $t20: bv8; + var $t21: bv8; + var $t22: int; + var $t23: bv8; + var $t24: bv8; + var $t0: $Mutation (Vec (bv8)); + var $t1: int; + var $t2: bool; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'bv8': bv8; + var $temp_0'vec'bv8'': Vec (bv8); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$at(6,26960,26961)"} true; + assume $IsValid'vec'bv8''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume $IsValid'bool'($t2); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // trace_local[feature]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$track_local(8,103,1):", $t1} $t1 == $t1; + + // trace_local[include]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:708:5+1 + assume {:print "$track_local(8,103,2):", $t2} $t2 == $t2; + + // $t6 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:36+1 + assume {:print "$at(6,27061,27062)"} true; + $t6 := 8; + assume $IsValid'u64'($t6); + + // $t7 := /($t1, $t6) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:34+1 + call $t7 := $Div($t1, $t6); + if ($abort_flag) { + assume {:print "$at(6,27059,27060)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[byte_index]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:709:13+10 + assume {:print "$track_local(8,103,4):", $t7} $t7 == $t7; + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:24+1 + assume {:print "$at(6,27087,27088)"} true; + $t9 := 1; + assume $IsValid'u8'($t9); + + // $t10 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:41+1 + $t10 := 8; + assume $IsValid'u64'($t10); + + // $t11 := %($t1, $t10) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:39+1 + call $t11 := $Mod($t1, $t10); + if ($abort_flag) { + assume {:print "$at(6,27102,27103)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t12 := (u8)($t11) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:29+21 + call $t12 := $CastU8($t11); + if ($abort_flag) { + assume {:print "$at(6,27092,27113)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t13 := <<($t9, $t12) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:26+2 + call $t13 := $ShlU8($t9, $t12); + if ($abort_flag) { + assume {:print "$at(6,27089,27091)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[bit_mask]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:710:13+8 + assume {:print "$track_local(8,103,3):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$at(6,27145,27153)"} true; +L3: + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$at(6,27145,27153)"} true; + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'vec'bv8''($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'bool'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'bv8'($t17); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + havoc $temp_0'vec'bv8''; + $t0 := $UpdateMutation($t0, $temp_0'vec'bv8''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume $IsValid'vec'bv8''($Dereference($t0)); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume {:print "$info(): enter loop, variable(s) features havocked and reassigned"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + assume !$abort_flag; + + // $t14 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:31+8 + $t14 := $Dereference($t0); + + // $t15 := vector::length($t14) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:16+24 + call $t15 := $1_vector_length'bv8'($t14); + if ($abort_flag) { + assume {:print "$at(6,27130,27154)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // $t16 := <=($t15, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:41+2 + call $t16 := $Le($t15, $t7); + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:9+101 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:711:9+101 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:31+8 + assume {:print "$at(6,27202,27210)"} true; +L2: + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:41+1 + assume {:print "$at(6,27212,27213)"} true; + $t17 := 0bv8; + assume $IsValid'bv8'($t17); + + // vector::push_back($t0, $t17) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:13+30 + call $t0 := $1_vector_push_back'bv8'($t0, $t17); + if ($abort_flag) { + assume {:print "$at(6,27184,27214)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:712:13+30 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:40+8 + assume {:print "$at(6,27265,27273)"} true; +L0: + + // $t18 := vector::borrow_mut($t0, $t7) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:21+40 + assume {:print "$at(6,27246,27286)"} true; + call $t18,$t0 := $1_vector_borrow_mut'bv8'($t0, $t7); + if ($abort_flag) { + assume {:print "$at(6,27246,27286)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(8,103):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[entry]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:714:13+5 + $temp_0'bv8' := $Dereference($t18); + assume {:print "$track_local(8,103,5):", $temp_0'bv8'} $temp_0'bv8' == $temp_0'bv8'; + + // if ($t2) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + if ($t2) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:23+5 + assume {:print "$at(6,27331,27336)"} true; +L5: + + // $t19 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:22+6 + assume {:print "$at(6,27330,27336)"} true; + $t19 := $Dereference($t18); + + // $t20 := |($t19, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:29+1 + call $t20 := $OrBv8($t19, $int2bv.8($t13)); + + // write_ref($t18, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $t18 := $UpdateMutation($t18, $t20); + + // write_back[Reference($t0)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $t0 := $UpdateMutation($t0, UpdateVec($Dereference($t0), ReadVec($t18->p, LenVec($t0->p)), $Dereference($t18))); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:716:13+26 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:23+5 + assume {:print "$at(6,27383,27388)"} true; +L4: + + // $t21 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:22+6 + assume {:print "$at(6,27382,27388)"} true; + $t21 := $Dereference($t18); + + // $t22 := 255 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:32+4 + $t22 := 255; + assume $IsValid'u8'($t22); + + // $t23 := ^($t22, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:37+1 + call $t23 := $XorBv8($int2bv.8($t22), $int2bv.8($t13)); + + // $t24 := &($t21, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:29+1 + call $t24 := $AndBv8($t21, $t23); + + // write_ref($t18, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $t18 := $UpdateMutation($t18, $t24); + + // write_back[Reference($t0)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $t0 := $UpdateMutation($t0, UpdateVec($Dereference($t0), ReadVec($t18->p, LenVec($t0->p)), $Dereference($t18))); + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:718:13+35 + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; +L6: + + // trace_local[features]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + $temp_0'vec'bv8'' := $Dereference($t0); + assume {:print "$track_local(8,103,0):", $temp_0'vec'bv8''} $temp_0'vec'bv8'' == $temp_0'vec'bv8''; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + // Loop invariant checking block for the loop started with header: L3 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:715:9+112 + assume {:print "$at(6,27296,27408)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 + assume {:print "$at(6,27413,27414)"} true; +L8: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:13:9+16 + assume {:print "$at(7,262,278)"} true; + assert {:msg "assert_failed(7,262,278): function does not abort under this condition"} + !false; + + // assert Lt(Div($t1, 8), Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:14:9+36 + assume {:print "$at(7,287,323)"} true; + assert {:msg "assert_failed(7,287,323): post-condition does not hold"} + (($t1 div 8) < LenVec($Dereference($t0))); + + // assert Eq($t2, features::spec_contains($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:15:9+52 + assume {:print "$at(7,332,384)"} true; + assert {:msg "assert_failed(7,332,384): post-condition does not hold"} + $IsEqual'bool'($t2, $1_features_spec_contains($Dereference($t0), $t1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:15:9+52 + $ret0 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:719:5+1 + assume {:print "$at(6,27413,27414)"} true; +L9: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:11:5+227 + assume {:print "$at(7,163,390)"} true; + assert {:msg "assert_failed(7,163,390): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.spec.move:11:5+227 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun features::sha_512_and_ripemd_160_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:63:5+219 +procedure {:inline 1} $1_features_sha_512_and_ripemd_160_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:66:9+4 + assume {:print "$at(6,3125,3129)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:66:9+4 + assume {:print "$track_return(8,104,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:67:5+1 + assume {:print "$at(6,3134,3135)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:67:5+1 + assume {:print "$at(6,3134,3135)"} true; + $ret0 := $t0; + return; + +} + +// fun features::sha_512_and_ripemd_160_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:63:5+219 +procedure {:timeLimit 80} $1_features_sha_512_and_ripemd_160_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:66:9+4 + assume {:print "$at(6,3125,3129)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:66:9+4 + assume {:print "$track_return(8,104,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:67:5+1 + assume {:print "$at(6,3134,3135)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:67:5+1 + assume {:print "$at(6,3134,3135)"} true; + $ret0 := $t0; + return; + +} + +// fun features::signer_native_format_fix_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:256:5+122 +procedure {:timeLimit 80} $1_features_signer_native_format_fix_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:256:5+1 + assume {:print "$at(6,9957,9958)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:20+24 + assume {:print "$at(6,10048,10072)"} true; + $t0 := 25; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:9+36 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:9+36 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:9+36 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:9+36 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:257:9+36 + assume {:print "$track_return(8,105,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:258:5+1 + assume {:print "$at(6,10078,10079)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:258:5+1 + assume {:print "$at(6,10078,10079)"} true; + $ret0 := $t1; + return; + +} + +// fun features::sponsored_automatic_account_creation_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:305:5+146 +procedure {:timeLimit 80} $1_features_sponsored_automatic_account_creation_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:305:5+1 + assume {:print "$at(6,11473,11474)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:20+36 + assume {:print "$at(6,11576,11612)"} true; + $t0 := 34; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:9+48 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:9+48 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:9+48 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:9+48 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:306:9+48 + assume {:print "$track_return(8,106,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:307:5+1 + assume {:print "$at(6,11618,11619)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:307:5+1 + assume {:print "$at(6,11618,11619)"} true; + $ret0 := $t1; + return; + +} + +// fun features::starcoin_stdlib_chain_id_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:76:5+127 +procedure {:inline 1} $1_features_starcoin_stdlib_chain_id_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:20+29 + assume {:print "$at(6,3592,3621)"} true; + $t0 := 4; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume {:print "$track_return(8,107,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:78:5+1 + assume {:print "$at(6,3627,3628)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:78:5+1 + assume {:print "$at(6,3627,3628)"} true; + $ret0 := $t1; + return; + +} + +// fun features::starcoin_stdlib_chain_id_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:76:5+127 +procedure {:timeLimit 80} $1_features_starcoin_stdlib_chain_id_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:76:5+1 + assume {:print "$at(6,3501,3502)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:20+29 + assume {:print "$at(6,3592,3621)"} true; + $t0 := 4; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:77:9+41 + assume {:print "$track_return(8,107,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:78:5+1 + assume {:print "$at(6,3627,3628)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:78:5+1 + assume {:print "$at(6,3627,3628)"} true; + $ret0 := $t1; + return; + +} + +// fun features::transaction_context_extension_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:484:5+225 +procedure {:inline 1} $1_features_transaction_context_extension_enabled() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:487:9+4 + assume {:print "$at(6,17897,17901)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:487:9+4 + assume {:print "$track_return(8,108,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:488:5+1 + assume {:print "$at(6,17906,17907)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:488:5+1 + assume {:print "$at(6,17906,17907)"} true; + $ret0 := $t0; + return; + +} + +// fun features::transaction_context_extension_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:484:5+225 +procedure {:timeLimit 80} $1_features_transaction_context_extension_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:487:9+4 + assume {:print "$at(6,17897,17901)"} true; + $t0 := true; + assume $IsValid'bool'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:487:9+4 + assume {:print "$track_return(8,108,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:488:5+1 + assume {:print "$at(6,17906,17907)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:488:5+1 + assume {:print "$at(6,17906,17907)"} true; + $ret0 := $t0; + return; + +} + +// fun features::transaction_simulation_enhancement_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:605:5+142 +procedure {:timeLimit 80} $1_features_transaction_simulation_enhancement_enabled$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:605:5+1 + assume {:print "$at(6,22559,22560)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 78 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:20+34 + assume {:print "$at(6,22660,22694)"} true; + $t0 := 78; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:9+46 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:9+46 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:9+46 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:9+46 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:606:9+46 + assume {:print "$track_return(8,109,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:607:5+1 + assume {:print "$at(6,22700,22701)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:607:5+1 + assume {:print "$at(6,22700,22701)"} true; + $ret0 := $t1; + return; + +} + +// fun features::treat_friend_as_private [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:52:5+112 +procedure {:timeLimit 80} $1_features_treat_friend_as_private$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:52:5+1 + assume {:print "$at(6,2456,2457)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:20+23 + assume {:print "$at(6,2538,2561)"} true; + $t0 := 2; + assume $IsValid'u64'($t0); + + // $t1 := opaque begin: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:9+35 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:9+35 + assume $IsValid'bool'($t1); + + // assume Eq($t1, features::spec_is_enabled($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:9+35 + assume $IsEqual'bool'($t1, $1_features_spec_is_enabled($t0)); + + // $t1 := opaque end: features::is_enabled($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:9+35 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:53:9+35 + assume {:print "$track_return(8,110,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:54:5+1 + assume {:print "$at(6,2567,2568)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/configs/features.move:54:5+1 + assume {:print "$at(6,2567,2568)"} true; + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:26:10+33 +function $1_type_info_spec_chain_id_internal(): int; +axiom (var $$res := $1_type_info_spec_chain_id_internal(); +$IsValid'u8'($$res)); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:28:10+90 +function {:inline} $1_type_info_spec_size_of_val'#0'(val_ref: #0): int { + LenVec($1_bcs_serialize'#0'(val_ref)) +} + +// struct type_info::TypeInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:17:5+145 +datatype $1_type_info_TypeInfo { + $1_type_info_TypeInfo($account_address: int, $module_name: Vec (int), $struct_name: Vec (int)) +} +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, s->$module_name, s->$struct_name) +} +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(s->$account_address, x, s->$struct_name) +} +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(s->$account_address, s->$module_name, x) +} +function $IsValid'$1_type_info_TypeInfo'(s: $1_type_info_TypeInfo): bool { + $IsValid'address'(s->$account_address) + && $IsValid'vec'u8''(s->$module_name) + && $IsValid'vec'u8''(s->$struct_name) +} +function {:inline} $IsEqual'$1_type_info_TypeInfo'(s1: $1_type_info_TypeInfo, s2: $1_type_info_TypeInfo): bool { + $IsEqual'address'(s1->$account_address, s2->$account_address) + && $IsEqual'vec'u8''(s1->$module_name, s2->$module_name) + && $IsEqual'vec'u8''(s1->$struct_name, s2->$struct_name)} + +// fun type_info::account_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:27:5+99 +procedure {:inline 1} $1_type_info_account_address(_$t0: $1_type_info_TypeInfo) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:27:5+1 + assume {:print "$at(177,439,440)"} true; + assume {:print "$track_local(10,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:28:9+25 + assume {:print "$at(177,507,532)"} true; + $t1 := $t0->$account_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:28:9+25 + assume {:print "$track_return(10,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:29:5+1 + assume {:print "$at(177,537,538)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:29:5+1 + assume {:print "$at(177,537,538)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::account_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:27:5+99 +procedure {:timeLimit 80} $1_type_info_account_address$verify(_$t0: $1_type_info_TypeInfo) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:27:5+1 + assume {:print "$at(177,439,440)"} true; + assume $IsValid'$1_type_info_TypeInfo'($t0); + + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:27:5+1 + assume {:print "$track_local(10,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:28:9+25 + assume {:print "$at(177,507,532)"} true; + $t1 := $t0->$account_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:28:9+25 + assume {:print "$track_return(10,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:29:5+1 + assume {:print "$at(177,537,538)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:29:5+1 + assume {:print "$at(177,537,538)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::chain_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:42:5+207 +procedure {:timeLimit 80} $1_type_info_chain_id$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $temp_0'u8': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:42:5+1 + assume {:print "$at(177,1080,1081)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := features::starcoin_stdlib_chain_id_enabled() on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:43:14+44 + assume {:print "$at(177,1121,1165)"} true; + call $t0 := $1_features_starcoin_stdlib_chain_id_enabled(); + if ($abort_flag) { + assume {:print "$at(177,1121,1165)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(10,1):", $t1} $t1 == $t1; + goto L3; + } + + // $t2 := !($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:43:13+1 + call $t2 := $Not($t0); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:43:9+135 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:45+26 + assume {:print "$at(177,1213,1239)"} true; +L1: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:45+26 + assume {:print "$at(177,1213,1239)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:18+55 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(177,1186,1241)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(10,1):", $t1} $t1 == $t1; + goto L3; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:13+60 + assume {:print "$at(177,1181,1241)"} true; + assume {:print "$track_abort(10,1):", $t4} $t4 == $t4; + + // $t1 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:13+60 + $t1 := $t4; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:44:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + assume {:print "$at(177,1262,1281)"} true; +L0: + + // $t5 := opaque begin: type_info::chain_id_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + assume {:print "$at(177,1262,1281)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + assume $IsValid'u8'($t5); + + // assume Eq($t5, type_info::spec_chain_id_internal()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + assume $IsEqual'u8'($t5, $1_type_info_spec_chain_id_internal()); + + // $t5 := opaque end: type_info::chain_id_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:47:9+19 + assume {:print "$track_return(10,1,0):", $t5} $t5 == $t5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:48:5+1 + assume {:print "$at(177,1286,1287)"} true; +L2: + + // assert Not(Not(features::spec_is_enabled[](4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:15:9+78 + assume {:print "$at(178,381,459)"} true; + assert {:msg "assert_failed(178,381,459): function does not abort under this condition"} + !!$1_features_spec_is_enabled(4); + + // assert Eq($t5, type_info::spec_chain_id_internal()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:16:9+43 + assume {:print "$at(178,468,511)"} true; + assert {:msg "assert_failed(178,468,511): post-condition does not hold"} + $IsEqual'u8'($t5, $1_type_info_spec_chain_id_internal()); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:16:9+43 + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:48:5+1 + assume {:print "$at(177,1286,1287)"} true; +L3: + + // assert Not(features::spec_is_enabled[](4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:14:5+166 + assume {:print "$at(178,351,517)"} true; + assert {:msg "assert_failed(178,351,517): abort not covered by any of the `aborts_if` clauses"} + !$1_features_spec_is_enabled(4); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:14:5+166 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun type_info::module_name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:31:5+94 +procedure {:inline 1} $1_type_info_module_name(_$t0: $1_type_info_TypeInfo) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:31:5+1 + assume {:print "$at(177,544,545)"} true; + assume {:print "$track_local(10,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.module_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:32:9+21 + assume {:print "$at(177,611,632)"} true; + $t1 := $t0->$module_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:32:9+21 + assume {:print "$track_return(10,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:33:5+1 + assume {:print "$at(177,637,638)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:33:5+1 + assume {:print "$at(177,637,638)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::module_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:31:5+94 +procedure {:timeLimit 80} $1_type_info_module_name$verify(_$t0: $1_type_info_TypeInfo) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:31:5+1 + assume {:print "$at(177,544,545)"} true; + assume $IsValid'$1_type_info_TypeInfo'($t0); + + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:31:5+1 + assume {:print "$track_local(10,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.module_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:32:9+21 + assume {:print "$at(177,611,632)"} true; + $t1 := $t0->$module_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:32:9+21 + assume {:print "$track_return(10,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:33:5+1 + assume {:print "$at(177,637,638)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:33:5+1 + assume {:print "$at(177,637,638)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::size_of_val> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+165 +procedure {:inline 1} $1_type_info_size_of_val'vec'#0''(_$t0: Vec (#0)) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t0: Vec (#0); + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[val_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+1 + assume {:print "$at(177,2221,2222)"} true; + assume {:print "$track_local(10,4,0):", $t0} $t0 == $t0; + + // $t2 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:25+22 + assume {:print "$at(177,2357,2379)"} true; + call $t2 := $1_bcs_to_bytes'vec'#0''($t0); + if ($abort_flag) { + assume {:print "$at(177,2357,2379)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := vector::length($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + call $t4 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(177,2341,2380)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + assume {:print "$track_return(10,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun type_info::size_of_val<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+165 +procedure {:inline 1} $1_type_info_size_of_val'#0'(_$t0: #0) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[val_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+1 + assume {:print "$at(177,2221,2222)"} true; + assume {:print "$track_local(10,4,0):", $t0} $t0 == $t0; + + // $t2 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:25+22 + assume {:print "$at(177,2357,2379)"} true; + call $t2 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(177,2357,2379)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := vector::length($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + call $t4 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(177,2341,2380)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + assume {:print "$track_return(10,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun type_info::size_of_val [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+165 +procedure {:timeLimit 80} $1_type_info_size_of_val$verify(_$t0: #0) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+1 + assume {:print "$at(177,2221,2222)"} true; + assume $IsValid'#0'($t0); + + // trace_local[val_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:67:5+1 + assume {:print "$track_local(10,4,0):", $t0} $t0 == $t0; + + // $t2 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:25+22 + assume {:print "$at(177,2357,2379)"} true; + call $t2 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(177,2357,2379)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := vector::length($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + call $t4 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(177,2341,2380)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(10,4):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:69:9+39 + assume {:print "$track_return(10,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; +L1: + + // assert Eq($t4, type_info::spec_size_of_val<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:33:9+47 + assume {:print "$at(178,919,966)"} true; + assert {:msg "assert_failed(178,919,966): post-condition does not hold"} + $IsEqual'u64'($t4, $1_type_info_spec_size_of_val'#0'($t0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.spec.move:33:9+47 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:70:5+1 + assume {:print "$at(177,2385,2386)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun type_info::struct_name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:35:5+94 +procedure {:inline 1} $1_type_info_struct_name(_$t0: $1_type_info_TypeInfo) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:35:5+1 + assume {:print "$at(177,644,645)"} true; + assume {:print "$track_local(10,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.struct_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:36:9+21 + assume {:print "$at(177,711,732)"} true; + $t1 := $t0->$struct_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:36:9+21 + assume {:print "$track_return(10,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:37:5+1 + assume {:print "$at(177,737,738)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:37:5+1 + assume {:print "$at(177,737,738)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::struct_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:35:5+94 +procedure {:timeLimit 80} $1_type_info_struct_name$verify(_$t0: $1_type_info_TypeInfo) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_type_info_TypeInfo; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:35:5+1 + assume {:print "$at(177,644,645)"} true; + assume $IsValid'$1_type_info_TypeInfo'($t0); + + // trace_local[type_info]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:35:5+1 + assume {:print "$track_local(10,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.struct_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:36:9+21 + assume {:print "$at(177,711,732)"} true; + $t1 := $t0->$struct_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:36:9+21 + assume {:print "$track_return(10,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:37:5+1 + assume {:print "$at(177,737,738)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:37:5+1 + assume {:print "$at(177,737,738)"} true; + $ret0 := $t1; + return; + +} + +// fun type_info::verify_type_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:131:5+408 +procedure {:timeLimit 80} $1_type_info_verify_type_of$verify() returns () +{ + // declare local variables + var $t0: int; + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: $1_type_info_TypeInfo; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: Vec (int); + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t4 := type_info::type_of() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:132:25+19 + assume {:print "$at(177,4955,4974)"} true; + call $t4 := $1_type_info_type_of'$1_type_info_TypeInfo'(); + if ($abort_flag) { + assume {:print "$at(177,4955,4974)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[type_info]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:132:13+9 + assume {:print "$track_local(10,8,3):", $t4} $t4 == $t4; + + // $t6 := type_info::account_address($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:133:31+27 + assume {:print "$at(177,5006,5033)"} true; + call $t6 := $1_type_info_account_address($t4); + if ($abort_flag) { + assume {:print "$at(177,5006,5033)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[account_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:133:13+15 + assume {:print "$track_local(10,8,0):", $t6} $t6 == $t6; + + // $t7 := type_info::module_name($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:134:27+23 + assume {:print "$at(177,5061,5084)"} true; + call $t7 := $1_type_info_module_name($t4); + if ($abort_flag) { + assume {:print "$at(177,5061,5084)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[module_name]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:134:13+11 + assume {:print "$track_local(10,8,1):", $t7} $t7 == $t7; + + // $t8 := type_info::struct_name($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:135:27+23 + assume {:print "$at(177,5112,5135)"} true; + call $t8 := $1_type_info_struct_name($t4); + if ($abort_flag) { + assume {:print "$at(177,5112,5135)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[struct_name]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:135:13+11 + assume {:print "$track_local(10,8,2):", $t8} $t8 == $t8; + + // assert Eq
($t6, 0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:137:13+40 + assume {:print "$at(177,5164,5204)"} true; + assert {:msg "assert_failed(177,5164,5204): unknown assertion failed"} + $IsEqual'address'($t6, 1); + + // assert Eq>($t7, [116, 121, 112, 101, 95, 105, 110, 102, 111]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:138:13+35 + assume {:print "$at(177,5217,5252)"} true; + assert {:msg "assert_failed(177,5217,5252): unknown assertion failed"} + $IsEqual'vec'u8''($t7, ConcatVec(ConcatVec(MakeVec4(116, 121, 112, 101), MakeVec4(95, 105, 110, 102)), MakeVec1(111))); + + // assert Eq>($t8, [84, 121, 112, 101, 73, 110, 102, 111]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:139:13+34 + assume {:print "$at(177,5265,5299)"} true; + assert {:msg "assert_failed(177,5265,5299): unknown assertion failed"} + $IsEqual'vec'u8''($t8, ConcatVec(MakeVec4(84, 121, 112, 101), MakeVec4(73, 110, 102, 111))); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:141:5+1 + assume {:print "$at(177,5315,5316)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:141:5+1 + assume {:print "$at(177,5315,5316)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:141:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:141:5+1 + assume {:print "$at(177,5315,5316)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun type_info::verify_type_of_generic [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:144:5+452 +procedure {:timeLimit 80} $1_type_info_verify_type_of_generic$verify() returns () +{ + // declare local variables + var $t0: int; + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: $1_type_info_TypeInfo; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: Vec (int); + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:145:25+12 + assume {:print "$at(177,5399,5411)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(177,5399,5411)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,9):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[type_info]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:145:13+9 + assume {:print "$track_local(10,9,3):", $t4} $t4 == $t4; + + // $t6 := type_info::account_address($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:146:31+27 + assume {:print "$at(177,5443,5470)"} true; + call $t6 := $1_type_info_account_address($t4); + if ($abort_flag) { + assume {:print "$at(177,5443,5470)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,9):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[account_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:146:13+15 + assume {:print "$track_local(10,9,0):", $t6} $t6 == $t6; + + // $t7 := type_info::module_name($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:147:27+23 + assume {:print "$at(177,5498,5521)"} true; + call $t7 := $1_type_info_module_name($t4); + if ($abort_flag) { + assume {:print "$at(177,5498,5521)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,9):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[module_name]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:147:13+11 + assume {:print "$track_local(10,9,1):", $t7} $t7 == $t7; + + // $t8 := type_info::struct_name($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:148:27+23 + assume {:print "$at(177,5549,5572)"} true; + call $t8 := $1_type_info_struct_name($t4); + if ($abort_flag) { + assume {:print "$at(177,5549,5572)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(10,9):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[struct_name]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:148:13+11 + assume {:print "$track_local(10,9,2):", $t8} $t8 == $t8; + + // assert Eq
($t6, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:150:13+55 + assume {:print "$at(177,5601,5656)"} true; + assert {:msg "assert_failed(177,5601,5656): unknown assertion failed"} + $IsEqual'address'($t6, $1_type_info_$type_of'#0'()->$account_address); + + // assert Eq>($t7, select type_info::TypeInfo.module_name(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:151:13+47 + assume {:print "$at(177,5669,5716)"} true; + assert {:msg "assert_failed(177,5669,5716): unknown assertion failed"} + $IsEqual'vec'u8''($t7, $1_type_info_$type_of'#0'()->$module_name); + + // assert Eq>($t8, select type_info::TypeInfo.struct_name(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:152:13+47 + assume {:print "$at(177,5729,5776)"} true; + assert {:msg "assert_failed(177,5729,5776): unknown assertion failed"} + $IsEqual'vec'u8''($t8, $1_type_info_$type_of'#0'()->$struct_name); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:154:5+1 + assume {:print "$at(177,5792,5793)"} true; +L1: + + // assert Not(Not(type_info::spec_is_struct[]<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:156:9+31 + assume {:print "$at(177,5836,5867)"} true; + assert {:msg "assert_failed(177,5836,5867): function does not abort under this condition"} + !!$1_type_info_spec_is_struct'#0'(); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:156:9+31 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:154:5+1 + assume {:print "$at(177,5792,5793)"} true; +L2: + + // assert Not(type_info::spec_is_struct[]<#0>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:155:5+75 + assume {:print "$at(177,5798,5873)"} true; + assert {:msg "assert_failed(177,5798,5873): abort not covered by any of the `aborts_if` clauses"} + !$1_type_info_spec_is_struct'#0'(); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/type_info.move:155:5+75 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun table::borrow_with_default [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+225 +procedure {:timeLimit 80} $1_table_borrow_with_default$verify(_$t0: Table int (#1), _$t1: #0, _$t2: #1) returns ($ret0: #1) +{ + // declare local variables + var $t3: #1; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t0: Table int (#1); + var $t1: #0; + var $t2: #1; + var $temp_0'#0': #0; + var $temp_0'#1': #1; + var $temp_0'$1_table_Table'#0_#1'': Table int (#1); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume {:print "$at(173,1581,1582)"} true; + assume $IsValid'$1_table_Table'#0_#1''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume $IsValid'#1'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume {:print "$track_local(11,7,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume {:print "$track_local(11,7,1):", $t1} $t1 == $t1; + + // trace_local[default]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:38:5+1 + assume {:print "$track_local(11,7,2):", $t2} $t2 == $t2; + + // $t4 := table::contains<#0, #1>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:14+24 + assume {:print "$at(173,1691,1715)"} true; + call $t4 := $1_table_contains'#0_#1'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(173,1691,1715)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(11,7):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:13+1 + call $t6 := $Not($t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 +L1: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 + assume {:print "$at(173,1686,1800)"} true; + $t3 := $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 +L0: + + // $t3 := table::borrow<#0, #1>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:42:13+22 + assume {:print "$at(173,1768,1790)"} true; + call $t3 := $1_table_borrow'#0_#1'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(173,1768,1790)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(11,7):", $t5} $t5 == $t5; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 + assume {:print "$at(173,1686,1800)"} true; +L2: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:39:9+114 + assume {:print "$at(173,1686,1800)"} true; + assume {:print "$track_return(11,7,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:44:5+1 + assume {:print "$at(173,1805,1806)"} true; +L3: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:44:5+1 + assume {:print "$at(173,1805,1806)"} true; + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:44:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/table.move:44:5+1 + assume {:print "$at(173,1805,1806)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:83:5+80 +function {:inline} $1_system_addresses_$get_starcoin_framework(): int { + 1 +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+365 +function {:inline} $1_system_addresses_$is_framework_reserved_address(addr: int): bool { + ((((((((($1_system_addresses_$is_starcoin_framework_address(addr) || $IsEqual'address'(addr, 2)) || $IsEqual'address'(addr, 3)) || $IsEqual'address'(addr, 4)) || $IsEqual'address'(addr, 5)) || $IsEqual'address'(addr, 6)) || $IsEqual'address'(addr, 7)) || $IsEqual'address'(addr, 8)) || $IsEqual'address'(addr, 9)) || $IsEqual'address'(addr, 10)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+105 +function {:inline} $1_system_addresses_$is_starcoin_framework_address(addr: int): bool { + $IsEqual'address'(addr, 1) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+99 +function {:inline} $1_system_addresses_$is_vm(account: $signer): bool { + $1_system_addresses_$is_vm_address($1_signer_$address_of(account)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+82 +function {:inline} $1_system_addresses_$is_vm_address(addr: int): bool { + $IsEqual'address'(addr, 0) +} + +// fun system_addresses::assert_core_resource [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:14:5+123 +procedure {:timeLimit 80} $1_system_addresses_assert_core_resource$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:14:5+1 + assume {:print "$at(108,529,530)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:14:5+1 + assume {:print "$track_local(12,0,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:38+27 + assume {:print "$at(108,618,645)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(108,618,645)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,0):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: system_addresses::assert_core_resource_address($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + + // assume Identical($t3, Neq
($t1, 0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + assume ($t3 == !$IsEqual'address'($t1, 173345816)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 +L4: + + // assume And(Neq
($t1, 0xa550c18), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + assume {:print "$at(108,589,646)"} true; + assume (!$IsEqual'address'($t1, 173345816) && $IsEqual'num'(5, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + assume {:print "$at(108,589,646)"} true; + assume {:print "$track_abort(12,0):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 +L3: + + // opaque end: system_addresses::assert_core_resource_address($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:15:9+57 + assume {:print "$at(108,589,646)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:16:5+1 + assume {:print "$at(108,651,652)"} true; +L1: + + // assert Not(Neq
(signer::$address_of[]($t0), 0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:52:9+64 + assume {:print "$at(109,2140,2204)"} true; + assert {:msg "assert_failed(109,2140,2204): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 173345816); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:52:9+64 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:16:5+1 + assume {:print "$at(108,651,652)"} true; +L2: + + // assert Neq
(signer::$address_of[]($t0), 0xa550c18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:32:5+153 + assume {:print "$at(109,1502,1655)"} true; + assert {:msg "assert_failed(109,1502,1655): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), 173345816); + + // assert And(Neq
(signer::$address_of[]($t0), 0xa550c18), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:32:5+153 + assert {:msg "assert_failed(109,1502,1655): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), 173345816) && $IsEqual'num'(5, $t2)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:32:5+153 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_core_resource_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:18:5+164 +procedure {:timeLimit 80} $1_system_addresses_assert_core_resource_address$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; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:18:5+1 + assume {:print "$at(108,658,659)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:18:5+1 + assume {:print "$track_local(12,1,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: system_addresses::is_core_resource_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:17+30 + assume {:print "$at(108,731,761)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:17+30 + assume $IsValid'bool'($t1); + + // assume Eq($t1, Eq
($t0, 0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:17+30 + assume $IsEqual'bool'($t1, $IsEqual'address'($t0, 173345816)); + + // $t1 := opaque end: system_addresses::is_core_resource_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:17+30 + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 + assume {:print "$at(108,723,816)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:74+26 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:74+26 + assume {:print "$at(108,788,814)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := error::permission_denied($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:49+52 + call $t3 := $1_error_permission_denied($t2); + if ($abort_flag) { + assume {:print "$at(108,763,815)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(12,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 + assume {:print "$at(108,723,816)"} true; + assume {:print "$track_abort(12,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:19:9+93 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:20:5+1 + assume {:print "$at(108,821,822)"} true; +L3: + + // assert Not(Neq
($t0, 0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:52:9+64 + assume {:print "$at(109,2140,2204)"} true; + assert {:msg "assert_failed(109,2140,2204): function does not abort under this condition"} + !!$IsEqual'address'($t0, 173345816); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:52:9+64 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:20:5+1 + assume {:print "$at(108,821,822)"} true; +L4: + + // assert Neq
($t0, 0xa550c18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:37:5+120 + assume {:print "$at(109,1661,1781)"} true; + assert {:msg "assert_failed(109,1661,1781): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($t0, 173345816); + + // assert And(Neq
($t0, 0xa550c18), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:37:5+120 + assert {:msg "assert_failed(109,1661,1781): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$IsEqual'address'($t0, 173345816) && $IsEqual'num'(5, $t4)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:37:5+120 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_framework_reserved [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:37:5+206 +procedure {:inline 1} $1_system_addresses_assert_framework_reserved(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:37:5+1 + assume {:print "$at(108,1308,1309)"} true; + assume {:print "$track_local(12,2,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::is_framework_reserved_address($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:39:13+35 + assume {:print "$at(108,1391,1426)"} true; + call $t1 := $1_system_addresses_is_framework_reserved_address($t0); + if ($abort_flag) { + assume {:print "$at(108,1391,1426)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,2):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:38+31 + assume {:print "$at(108,1465,1496)"} true; +L0: + + // $t3 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:38+31 + assume {:print "$at(108,1465,1496)"} true; + $t3 := 4; + assume $IsValid'u64'($t3); + + // $t4 := error::permission_denied($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:13+57 + call $t4 := $1_error_permission_denied($t3); + if ($abort_flag) { + assume {:print "$at(108,1440,1497)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + assume {:print "$track_abort(12,2):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 + assume {:print "$at(108,1513,1514)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 + assume {:print "$at(108,1513,1514)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 + assume {:print "$at(108,1513,1514)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_framework_reserved [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:37:5+206 +procedure {:timeLimit 80} $1_system_addresses_assert_framework_reserved$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; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:37:5+1 + assume {:print "$at(108,1308,1309)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:37:5+1 + assume {:print "$track_local(12,2,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::is_framework_reserved_address($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:39:13+35 + assume {:print "$at(108,1391,1426)"} true; + call $t1 := $1_system_addresses_is_framework_reserved_address($t0); + if ($abort_flag) { + assume {:print "$at(108,1391,1426)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,2):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:38+31 + assume {:print "$at(108,1465,1496)"} true; +L0: + + // $t3 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:38+31 + assume {:print "$at(108,1465,1496)"} true; + $t3 := 4; + assume $IsValid'u64'($t3); + + // $t4 := error::permission_denied($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:40:13+57 + call $t4 := $1_error_permission_denied($t3); + if ($abort_flag) { + assume {:print "$at(108,1440,1497)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + assume {:print "$at(108,1370,1508)"} true; + assume {:print "$track_abort(12,2):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:38:9+138 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 + assume {:print "$at(108,1513,1514)"} true; +L3: + + // assert Not(Not(system_addresses::$is_framework_reserved_address[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:65:9+47 + assume {:print "$at(109,2552,2599)"} true; + assert {:msg "assert_failed(109,2552,2599): function does not abort under this condition"} + !!$1_system_addresses_$is_framework_reserved_address($t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:65:9+47 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:42:5+1 + assume {:print "$at(108,1513,1514)"} true; +L4: + + // assert Not(system_addresses::$is_framework_reserved_address[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:64:5+109 + assume {:print "$at(109,2496,2605)"} true; + assert {:msg "assert_failed(109,2496,2605): abort not covered by any of the `aborts_if` clauses"} + !$1_system_addresses_$is_framework_reserved_address($t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:64:5+109 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_framework_reserved_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:33:5+134 +procedure {:timeLimit 80} $1_system_addresses_assert_framework_reserved_address$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:33:5+1 + assume {:print "$at(108,1168,1169)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:33:5+1 + assume {:print "$track_local(12,3,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:34:35+27 + assume {:print "$at(108,1267,1294)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(108,1267,1294)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,3):", $t2} $t2 == $t2; + goto L2; + } + + // system_addresses::assert_framework_reserved($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:34:9+54 + call $1_system_addresses_assert_framework_reserved($t1); + if ($abort_flag) { + assume {:print "$at(108,1241,1295)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,3):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:35:5+1 + assume {:print "$at(108,1301,1302)"} true; +L1: + + // assert Not(Not(system_addresses::$is_framework_reserved_address[](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:61:9+70 + assume {:print "$at(109,2414,2484)"} true; + assert {:msg "assert_failed(109,2414,2484): function does not abort under this condition"} + !!$1_system_addresses_$is_framework_reserved_address($1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:61:9+70 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:35:5+1 + assume {:print "$at(108,1301,1302)"} true; +L2: + + // assert Not(system_addresses::$is_framework_reserved_address[](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:60:5+143 + assume {:print "$at(109,2347,2490)"} true; + assert {:msg "assert_failed(109,2347,2490): abort not covered by any of the `aborts_if` clauses"} + !$1_system_addresses_$is_framework_reserved_address($1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:60:5+143 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_starcoin_framework [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:26:5+232 +procedure {:timeLimit 80} $1_system_addresses_assert_starcoin_framework$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:26:5+1 + assume {:print "$at(108,930,931)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:26:5+1 + assume {:print "$track_local(12,4,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:28:43+27 + assume {:print "$at(108,1046,1073)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(108,1046,1073)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,4):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := system_addresses::is_starcoin_framework_address($t1) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:28:13+58 + call $t3 := $1_system_addresses_is_starcoin_framework_address($t1); + if ($abort_flag) { + assume {:print "$at(108,1016,1074)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,4):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 + assume {:print "$at(108,995,1156)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 + assume {:print "$at(108,995,1156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:29:38+31 + assume {:print "$at(108,1113,1144)"} true; +L0: + + // $t4 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:29:38+31 + assume {:print "$at(108,1113,1144)"} true; + $t4 := 3; + assume $IsValid'u64'($t4); + + // $t5 := error::permission_denied($t4) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:29:13+57 + call $t5 := $1_error_permission_denied($t4); + if ($abort_flag) { + assume {:print "$at(108,1088,1145)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,4):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 + assume {:print "$at(108,995,1156)"} true; + assume {:print "$track_abort(12,4):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 + $t2 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:27:9+161 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:31:5+1 + assume {:print "$at(108,1161,1162)"} true; +L3: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:71:9+91 + assume {:print "$at(109,2819,2910)"} true; + assert {:msg "assert_failed(109,2819,2910): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:71:9+91 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:31:5+1 + assume {:print "$at(108,1161,1162)"} true; +L4: + + // assert Neq
(signer::$address_of[]($t0), 0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:55:5+125 + assume {:print "$at(109,2216,2341)"} true; + assert {:msg "assert_failed(109,2216,2341): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), 1); + + // assert And(Neq
(signer::$address_of[]($t0), 0x1), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:55:5+125 + assert {:msg "assert_failed(109,2216,2341): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t2)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:55:5+125 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::assert_vm [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:64:5+109 +procedure {:timeLimit 80} $1_system_addresses_assert_vm$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:64:5+1 + assume {:print "$at(108,2181,2182)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:64:5+1 + assume {:print "$track_local(12,5,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::is_vm($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:17+14 + assume {:print "$at(108,2238,2252)"} true; + call $t1 := $1_system_addresses_is_vm($t0); + if ($abort_flag) { + assume {:print "$at(108,2238,2252)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,5):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 + assume {:print "$at(108,2230,2284)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:58+3 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:58+3 + assume {:print "$at(108,2279,2282)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::permission_denied($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:33+29 + call $t4 := $1_error_permission_denied($t3); + if ($abort_flag) { + assume {:print "$at(108,2254,2283)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,5):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 + assume {:print "$at(108,2230,2284)"} true; + assume {:print "$track_abort(12,5):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:65:9+54 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:66:5+1 + assume {:print "$at(108,2289,2290)"} true; +L3: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:83:9+84 + assume {:print "$at(109,3209,3293)"} true; + assert {:msg "assert_failed(109,3209,3293): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:83:9+84 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:66:5+1 + assume {:print "$at(108,2289,2290)"} true; +L4: + + // assert Neq
(signer::$address_of[]($t0), 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:74:5+94 + assume {:print "$at(109,2922,3016)"} true; + assert {:msg "assert_failed(109,2922,3016): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'address'($1_signer_$address_of($t0), 0); + + // assert And(Neq
(signer::$address_of[]($t0), 0x0), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:74:5+94 + assert {:msg "assert_failed(109,2922,3016): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), 0) && $IsEqual'num'(5, $t2)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:74:5+94 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::get_core_resource_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:87:5+79 +procedure {:inline 1} $1_system_addresses_get_core_resource_address() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'address': int; + + // bytecode translation starts here + // $t0 := 0xa550c18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:88:9+15 + assume {:print "$at(108,3028,3043)"} true; + $t0 := 173345816; + assume $IsValid'address'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:88:9+15 + assume {:print "$track_return(12,6,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:89:5+1 + assume {:print "$at(108,3048,3049)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:89:5+1 + assume {:print "$at(108,3048,3049)"} true; + $ret0 := $t0; + return; + +} + +// fun system_addresses::get_core_resource_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:87:5+79 +procedure {:timeLimit 80} $1_system_addresses_get_core_resource_address$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 0xa550c18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:88:9+15 + assume {:print "$at(108,3028,3043)"} true; + $t0 := 173345816; + assume $IsValid'address'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:88:9+15 + assume {:print "$track_return(12,6,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:89:5+1 + assume {:print "$at(108,3048,3049)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:89:5+1 + assume {:print "$at(108,3048,3049)"} true; + assert {:msg "assert_failed(108,3048,3049): function does not abort under this condition"} + !false; + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:89:5+1 + $ret0 := $t0; + return; + +} + +// fun system_addresses::get_starcoin_framework [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:83:5+80 +procedure {:inline 1} $1_system_addresses_get_starcoin_framework() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'address': int; + + // bytecode translation starts here + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:84:9+19 + assume {:print "$at(108,2939,2958)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:84:9+19 + assume {:print "$track_return(12,7,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:85:5+1 + assume {:print "$at(108,2963,2964)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:85:5+1 + assume {:print "$at(108,2963,2964)"} true; + $ret0 := $t0; + return; + +} + +// fun system_addresses::get_starcoin_framework [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:83:5+80 +procedure {:timeLimit 80} $1_system_addresses_get_starcoin_framework$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:84:9+19 + assume {:print "$at(108,2939,2958)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:84:9+19 + assume {:print "$track_return(12,7,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:85:5+1 + assume {:print "$at(108,2963,2964)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:85:5+1 + assume {:print "$at(108,2963,2964)"} true; + assert {:msg "assert_failed(108,2963,2964): function does not abort under this condition"} + !false; + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:85:5+1 + $ret0 := $t0; + return; + +} + +// fun system_addresses::is_core_resource_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:22:5+96 +procedure {:timeLimit 80} $1_system_addresses_is_core_resource_address$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:22:5+1 + assume {:print "$at(108,828,829)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:22:5+1 + assume {:print "$track_local(12,8,0):", $t0} $t0 == $t0; + + // $t1 := 0xa550c18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:23:17+15 + assume {:print "$at(108,903,918)"} true; + $t1 := 173345816; + assume $IsValid'address'($t1); + + // $t2 := ==($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:23:14+2 + $t2 := $IsEqual'address'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:23:9+23 + assume {:print "$track_return(12,8,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:24:5+1 + assume {:print "$at(108,923,924)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:44:9+16 + assume {:print "$at(109,1871,1887)"} true; + assert {:msg "assert_failed(109,1871,1887): function does not abort under this condition"} + !false; + + // assert Eq($t2, Eq
($t0, 0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:45:9+44 + assume {:print "$at(109,1896,1940)"} true; + assert {:msg "assert_failed(109,1896,1940): post-condition does not hold"} + $IsEqual'bool'($t2, $IsEqual'address'($t0, 173345816)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:45:9+44 + $ret0 := $t2; + return; + +} + +// fun system_addresses::is_framework_reserved_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+365 +procedure {:inline 1} $1_system_addresses_is_framework_reserved_address(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+1 + assume {:print "$at(108,1601,1602)"} true; + assume {:print "$track_local(12,9,0):", $t0} $t0 == $t0; + + // $t10 := system_addresses::is_starcoin_framework_address($t0) on_abort goto L28 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+35 + assume {:print "$at(108,1673,1708)"} true; + call $t10 := $1_system_addresses_is_starcoin_framework_address($t0); + if ($abort_flag) { + assume {:print "$at(108,1673,1708)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(12,9):", $t11} $t11 == $t11; + goto L28; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 +L1: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + assume {:print "$at(108,1673,1736)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t1 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + $t1 := $t12; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:13+4 + assume {:print "$at(108,1724,1728)"} true; +L0: + + // $t13 := 0x2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:21+4 + assume {:print "$at(108,1732,1736)"} true; + $t13 := 2; + assume $IsValid'address'($t13); + + // $t1 := ==($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:18+2 + $t1 := $IsEqual'address'($t0, $t13); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + assume {:print "$at(108,1673,1736)"} true; +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 +L4: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // $t2 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + $t2 := $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:13+4 + assume {:print "$at(108,1752,1756)"} true; +L3: + + // $t15 := 0x3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:21+4 + assume {:print "$at(108,1760,1764)"} true; + $t15 := 3; + assume $IsValid'address'($t15); + + // $t2 := ==($t0, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:18+2 + $t2 := $IsEqual'address'($t0, $t15); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 +L7: + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t3 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + $t3 := $t16; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:13+4 + assume {:print "$at(108,1780,1784)"} true; +L6: + + // $t17 := 0x4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:21+4 + assume {:print "$at(108,1788,1792)"} true; + $t17 := 4; + assume $IsValid'address'($t17); + + // $t3 := ==($t0, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:18+2 + $t3 := $IsEqual'address'($t0, $t17); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 +L10: + + // $t18 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; + $t18 := true; + assume $IsValid'bool'($t18); + + // $t4 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + $t4 := $t18; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:13+4 + assume {:print "$at(108,1808,1812)"} true; +L9: + + // $t19 := 0x5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:21+4 + assume {:print "$at(108,1816,1820)"} true; + $t19 := 5; + assume $IsValid'address'($t19); + + // $t4 := ==($t0, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:18+2 + $t4 := $IsEqual'address'($t0, $t19); + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; +L11: + + // if ($t4) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; + if ($t4) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 +L13: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t5 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + $t5 := $t20; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:13+4 + assume {:print "$at(108,1836,1840)"} true; +L12: + + // $t21 := 0x6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:21+4 + assume {:print "$at(108,1844,1848)"} true; + $t21 := 6; + assume $IsValid'address'($t21); + + // $t5 := ==($t0, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:18+2 + $t5 := $IsEqual'address'($t0, $t21); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; +L14: + + // if ($t5) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; + if ($t5) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 +L16: + + // $t22 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; + $t22 := true; + assume $IsValid'bool'($t22); + + // $t6 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + $t6 := $t22; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:13+4 + assume {:print "$at(108,1864,1868)"} true; +L15: + + // $t23 := 0x7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:21+4 + assume {:print "$at(108,1872,1876)"} true; + $t23 := 7; + assume $IsValid'address'($t23); + + // $t6 := ==($t0, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:18+2 + $t6 := $IsEqual'address'($t0, $t23); + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; +L17: + + // if ($t6) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; + if ($t6) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 +L19: + + // $t24 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; + $t24 := true; + assume $IsValid'bool'($t24); + + // $t7 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + $t7 := $t24; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:13+4 + assume {:print "$at(108,1892,1896)"} true; +L18: + + // $t25 := 0x8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:21+4 + assume {:print "$at(108,1900,1904)"} true; + $t25 := 8; + assume $IsValid'address'($t25); + + // $t7 := ==($t0, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:18+2 + $t7 := $IsEqual'address'($t0, $t25); + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; +L20: + + // if ($t7) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; + if ($t7) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 +L22: + + // $t26 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; + $t26 := true; + assume $IsValid'bool'($t26); + + // $t8 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + $t8 := $t26; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:13+4 + assume {:print "$at(108,1920,1924)"} true; +L21: + + // $t27 := 0x9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:21+4 + assume {:print "$at(108,1928,1932)"} true; + $t27 := 9; + assume $IsValid'address'($t27); + + // $t8 := ==($t0, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:18+2 + $t8 := $IsEqual'address'($t0, $t27); + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; +L23: + + // if ($t8) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + if ($t8) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 +L25: + + // $t28 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + $t28 := true; + assume $IsValid'bool'($t28); + + // $t9 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + $t9 := $t28; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:13+4 + assume {:print "$at(108,1948,1952)"} true; +L24: + + // $t29 := 0xa at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:21+4 + assume {:print "$at(108,1956,1960)"} true; + $t29 := 10; + assume $IsValid'address'($t29); + + // $t9 := ==($t0, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:18+2 + $t9 := $IsEqual'address'($t0, $t29); + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; +L26: + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + assume {:print "$track_return(12,9,0):", $t9} $t9 == $t9; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + assume {:print "$at(108,1965,1966)"} true; +L27: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + assume {:print "$at(108,1965,1966)"} true; + $ret0 := $t9; + return; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 +L28: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + assume {:print "$at(108,1965,1966)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun system_addresses::is_framework_reserved_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+365 +procedure {:timeLimit 80} $1_system_addresses_is_framework_reserved_address$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+1 + assume {:print "$at(108,1601,1602)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+1 + assume {:print "$track_local(12,9,0):", $t0} $t0 == $t0; + + // $t10 := system_addresses::is_starcoin_framework_address($t0) on_abort goto L28 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+35 + assume {:print "$at(108,1673,1708)"} true; + call $t10 := $1_system_addresses_is_starcoin_framework_address($t0); + if ($abort_flag) { + assume {:print "$at(108,1673,1708)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(12,9):", $t11} $t11 == $t11; + goto L28; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 +L1: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + assume {:print "$at(108,1673,1736)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t1 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + $t1 := $t12; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:13+4 + assume {:print "$at(108,1724,1728)"} true; +L0: + + // $t13 := 0x2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:21+4 + assume {:print "$at(108,1732,1736)"} true; + $t13 := 2; + assume $IsValid'address'($t13); + + // $t1 := ==($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:47:18+2 + $t1 := $IsEqual'address'($t0, $t13); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+63 + assume {:print "$at(108,1673,1736)"} true; +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 +L4: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // $t2 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + $t2 := $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:13+4 + assume {:print "$at(108,1752,1756)"} true; +L3: + + // $t15 := 0x3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:21+4 + assume {:print "$at(108,1760,1764)"} true; + $t15 := 3; + assume $IsValid'address'($t15); + + // $t2 := ==($t0, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:48:18+2 + $t2 := $IsEqual'address'($t0, $t15); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+91 + assume {:print "$at(108,1673,1764)"} true; +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 +L7: + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t3 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + $t3 := $t16; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:13+4 + assume {:print "$at(108,1780,1784)"} true; +L6: + + // $t17 := 0x4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:21+4 + assume {:print "$at(108,1788,1792)"} true; + $t17 := 4; + assume $IsValid'address'($t17); + + // $t3 := ==($t0, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:49:18+2 + $t3 := $IsEqual'address'($t0, $t17); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+119 + assume {:print "$at(108,1673,1792)"} true; +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 +L10: + + // $t18 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; + $t18 := true; + assume $IsValid'bool'($t18); + + // $t4 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + $t4 := $t18; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:13+4 + assume {:print "$at(108,1808,1812)"} true; +L9: + + // $t19 := 0x5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:21+4 + assume {:print "$at(108,1816,1820)"} true; + $t19 := 5; + assume $IsValid'address'($t19); + + // $t4 := ==($t0, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:50:18+2 + $t4 := $IsEqual'address'($t0, $t19); + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+147 + assume {:print "$at(108,1673,1820)"} true; +L11: + + // if ($t4) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; + if ($t4) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 +L13: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t5 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + $t5 := $t20; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:13+4 + assume {:print "$at(108,1836,1840)"} true; +L12: + + // $t21 := 0x6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:21+4 + assume {:print "$at(108,1844,1848)"} true; + $t21 := 6; + assume $IsValid'address'($t21); + + // $t5 := ==($t0, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:51:18+2 + $t5 := $IsEqual'address'($t0, $t21); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+175 + assume {:print "$at(108,1673,1848)"} true; +L14: + + // if ($t5) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; + if ($t5) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 +L16: + + // $t22 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; + $t22 := true; + assume $IsValid'bool'($t22); + + // $t6 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + $t6 := $t22; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:13+4 + assume {:print "$at(108,1864,1868)"} true; +L15: + + // $t23 := 0x7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:21+4 + assume {:print "$at(108,1872,1876)"} true; + $t23 := 7; + assume $IsValid'address'($t23); + + // $t6 := ==($t0, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:52:18+2 + $t6 := $IsEqual'address'($t0, $t23); + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+203 + assume {:print "$at(108,1673,1876)"} true; +L17: + + // if ($t6) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; + if ($t6) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 +L19: + + // $t24 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; + $t24 := true; + assume $IsValid'bool'($t24); + + // $t7 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + $t7 := $t24; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:13+4 + assume {:print "$at(108,1892,1896)"} true; +L18: + + // $t25 := 0x8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:21+4 + assume {:print "$at(108,1900,1904)"} true; + $t25 := 8; + assume $IsValid'address'($t25); + + // $t7 := ==($t0, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:53:18+2 + $t7 := $IsEqual'address'($t0, $t25); + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+231 + assume {:print "$at(108,1673,1904)"} true; +L20: + + // if ($t7) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; + if ($t7) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 +L22: + + // $t26 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; + $t26 := true; + assume $IsValid'bool'($t26); + + // $t8 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + $t8 := $t26; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:13+4 + assume {:print "$at(108,1920,1924)"} true; +L21: + + // $t27 := 0x9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:21+4 + assume {:print "$at(108,1928,1932)"} true; + $t27 := 9; + assume $IsValid'address'($t27); + + // $t8 := ==($t0, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:54:18+2 + $t8 := $IsEqual'address'($t0, $t27); + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+259 + assume {:print "$at(108,1673,1932)"} true; +L23: + + // if ($t8) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + if ($t8) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 +L25: + + // $t28 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + $t28 := true; + assume $IsValid'bool'($t28); + + // $t9 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + $t9 := $t28; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:13+4 + assume {:print "$at(108,1948,1952)"} true; +L24: + + // $t29 := 0xa at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:21+4 + assume {:print "$at(108,1956,1960)"} true; + $t29 := 10; + assume $IsValid'address'($t29); + + // $t9 := ==($t0, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:55:18+2 + $t9 := $IsEqual'address'($t0, $t29); + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; +L26: + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:46:9+287 + assume {:print "$at(108,1673,1960)"} true; + assume {:print "$track_return(12,9,0):", $t9} $t9 == $t9; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + assume {:print "$at(108,1965,1966)"} true; +L27: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + assume {:print "$at(108,1965,1966)"} true; + assert {:msg "assert_failed(108,1965,1966): function does not abort under this condition"} + !false; + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 + $ret0 := $t9; + return; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:56:5+1 +L28: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+365 + assume {:print "$at(108,1601,1966)"} true; + assert {:msg "assert_failed(108,1601,1966): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:45:5+365 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun system_addresses::is_reserved_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:79:5+126 +procedure {:timeLimit 80} $1_system_addresses_is_reserved_address$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:79:5+1 + assume {:print "$at(108,2752,2753)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:79:5+1 + assume {:print "$track_local(12,10,0):", $t0} $t0 == $t0; + + // $t2 := system_addresses::is_starcoin_framework_address($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+35 + assume {:print "$at(108,2814,2849)"} true; + call $t2 := $1_system_addresses_is_starcoin_framework_address($t0); + if ($abort_flag) { + assume {:print "$at(108,2814,2849)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(12,10):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 +L1: + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 + assume {:print "$at(108,2814,2872)"} true; + $t4 := true; + assume $IsValid'bool'($t4); + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 + $t1 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:62+4 +L0: + + // $t1 := system_addresses::is_vm_address($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:48+19 + assume {:print "$at(108,2853,2872)"} true; + call $t1 := $1_system_addresses_is_vm_address($t0); + if ($abort_flag) { + assume {:print "$at(108,2853,2872)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(12,10):", $t3} $t3 == $t3; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:80:9+58 + assume {:print "$at(108,2814,2872)"} true; + assume {:print "$track_return(12,10,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:81:5+1 + assume {:print "$at(108,2877,2878)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:81:5+1 + assume {:print "$at(108,2877,2878)"} true; + assert {:msg "assert_failed(108,2877,2878): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:81:5+1 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:81:5+1 +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:79:5+126 + assume {:print "$at(108,2752,2878)"} true; + assert {:msg "assert_failed(108,2752,2878): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:79:5+126 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun system_addresses::is_starcoin_framework_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+105 +procedure {:inline 1} $1_system_addresses_is_starcoin_framework_address(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+1 + assume {:print "$at(108,2010,2011)"} true; + assume {:print "$track_local(12,11,0):", $t0} $t0 == $t0; + + // $t1 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:17+19 + assume {:print "$at(108,2090,2109)"} true; + $t1 := 1; + assume $IsValid'address'($t1); + + // $t2 := ==($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:14+2 + $t2 := $IsEqual'address'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:9+27 + assume {:print "$track_return(12,11,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:61:5+1 + assume {:print "$at(108,2114,2115)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:61:5+1 + assume {:print "$at(108,2114,2115)"} true; + $ret0 := $t2; + return; + +} + +// fun system_addresses::is_starcoin_framework_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+105 +procedure {:timeLimit 80} $1_system_addresses_is_starcoin_framework_address$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+1 + assume {:print "$at(108,2010,2011)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:59:5+1 + assume {:print "$track_local(12,11,0):", $t0} $t0 == $t0; + + // $t1 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:17+19 + assume {:print "$at(108,2090,2109)"} true; + $t1 := 1; + assume $IsValid'address'($t1); + + // $t2 := ==($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:14+2 + $t2 := $IsEqual'address'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:60:9+27 + assume {:print "$track_return(12,11,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:61:5+1 + assume {:print "$at(108,2114,2115)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:61:5+1 + assume {:print "$at(108,2114,2115)"} true; + assert {:msg "assert_failed(108,2114,2115): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:61:5+1 + $ret0 := $t2; + return; + +} + +// fun system_addresses::is_vm [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+99 +procedure {:inline 1} $1_system_addresses_is_vm(_$t0: $signer) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $signer; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+1 + assume {:print "$at(108,2383,2384)"} true; + assume {:print "$track_local(12,12,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:23+27 + assume {:print "$at(108,2448,2475)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(108,2448,2475)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,12):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := system_addresses::is_vm_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:9+42 + call $t3 := $1_system_addresses_is_vm_address($t1); + if ($abort_flag) { + assume {:print "$at(108,2434,2476)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,12):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:9+42 + assume {:print "$track_return(12,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + assume {:print "$at(108,2481,2482)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + assume {:print "$at(108,2481,2482)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + assume {:print "$at(108,2481,2482)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::is_vm [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+99 +procedure {:timeLimit 80} $1_system_addresses_is_vm$verify(_$t0: $signer) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $signer; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+1 + assume {:print "$at(108,2383,2384)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+1 + assume {:print "$track_local(12,12,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:23+27 + assume {:print "$at(108,2448,2475)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(108,2448,2475)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,12):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := system_addresses::is_vm_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:9+42 + call $t3 := $1_system_addresses_is_vm_address($t1); + if ($abort_flag) { + assume {:print "$at(108,2434,2476)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(12,12):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:70:9+42 + assume {:print "$track_return(12,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + assume {:print "$at(108,2481,2482)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + assume {:print "$at(108,2481,2482)"} true; + assert {:msg "assert_failed(108,2481,2482): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:71:5+1 +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+99 + assume {:print "$at(108,2383,2482)"} true; + assert {:msg "assert_failed(108,2383,2482): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:69:5+99 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun system_addresses::is_vm_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+82 +procedure {:inline 1} $1_system_addresses_is_vm_address(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+1 + assume {:print "$at(108,2575,2576)"} true; + assume {:print "$track_local(12,13,0):", $t0} $t0 == $t0; + + // $t1 := 0x0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:17+12 + assume {:print "$at(108,2639,2651)"} true; + $t1 := 0; + assume $IsValid'address'($t1); + + // $t2 := ==($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:14+2 + $t2 := $IsEqual'address'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:9+20 + assume {:print "$track_return(12,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:76:5+1 + assume {:print "$at(108,2656,2657)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:76:5+1 + assume {:print "$at(108,2656,2657)"} true; + $ret0 := $t2; + return; + +} + +// fun system_addresses::is_vm_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+82 +procedure {:timeLimit 80} $1_system_addresses_is_vm_address$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+1 + assume {:print "$at(108,2575,2576)"} true; + assume $IsValid'address'($t0); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:74:5+1 + assume {:print "$track_local(12,13,0):", $t0} $t0 == $t0; + + // $t1 := 0x0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:17+12 + assume {:print "$at(108,2639,2651)"} true; + $t1 := 0; + assume $IsValid'address'($t1); + + // $t2 := ==($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:14+2 + $t2 := $IsEqual'address'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:75:9+20 + assume {:print "$track_return(12,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:76:5+1 + assume {:print "$at(108,2656,2657)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:76:5+1 + assume {:print "$at(108,2656,2657)"} true; + assert {:msg "assert_failed(108,2656,2657): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.move:76:5+1 + $ret0 := $t2; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:61:10+146 +function $1_ed25519_spec_signature_verify_strict_internal(signature: Vec (int), public_key: Vec (int), message: Vec (int)): bool; +axiom (forall signature: Vec (int), public_key: Vec (int), message: Vec (int) :: +(var $$res := $1_ed25519_spec_signature_verify_strict_internal(signature, public_key, message); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:67:10+63 +function $1_ed25519_spec_public_key_validate_internal(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_ed25519_spec_public_key_validate_internal(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:69:10+82 +function $1_ed25519_spec_public_key_bytes_to_authentication_key(pk_bytes: Vec (int)): Vec (int); +axiom (forall pk_bytes: Vec (int) :: +(var $$res := $1_ed25519_spec_public_key_bytes_to_authentication_key(pk_bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:71:10+378 +function {:inline} $1_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'(signature: $1_ed25519_Signature, public_key: $1_ed25519_UnvalidatedPublicKey, data: $1_account_RotationCapabilityOfferProofChallengeV2): bool { + (var encoded := $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'($1_type_info_$type_of'$1_account_RotationCapabilityOfferProofChallengeV2'(), data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(encoded); $1_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:71:10+378 +function {:inline} $1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'(signature: $1_ed25519_Signature, public_key: $1_ed25519_UnvalidatedPublicKey, data: $1_account_RotationProofChallenge): bool { + (var encoded := $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'($1_type_info_$type_of'$1_account_RotationProofChallenge'(), data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(encoded); $1_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:71:10+378 +function {:inline} $1_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'(signature: $1_ed25519_Signature, public_key: $1_ed25519_UnvalidatedPublicKey, data: $1_account_SignerCapabilityOfferProofChallengeV2): bool { + (var encoded := $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'($1_type_info_$type_of'$1_account_SignerCapabilityOfferProofChallengeV2'(), data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(encoded); $1_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +function {:inline} $1_ed25519_$new_signed_message'$1_account_RotationCapabilityOfferProofChallengeV2'(data: $1_account_RotationCapabilityOfferProofChallengeV2): $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'($1_type_info_$type_of'$1_account_RotationCapabilityOfferProofChallengeV2'(), data) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +function {:inline} $1_ed25519_$new_signed_message'$1_account_RotationProofChallenge'(data: $1_account_RotationProofChallenge): $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' { + $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'($1_type_info_$type_of'$1_account_RotationProofChallenge'(), data) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +function {:inline} $1_ed25519_$new_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'(data: $1_account_SignerCapabilityOfferProofChallengeV2): $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'($1_type_info_$type_of'$1_account_SignerCapabilityOfferProofChallengeV2'(), data) +} + +// struct ed25519::Signature at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:64:5+72 +datatype $1_ed25519_Signature { + $1_ed25519_Signature($bytes: Vec (int)) +} +function {:inline} $Update'$1_ed25519_Signature'_bytes(s: $1_ed25519_Signature, x: Vec (int)): $1_ed25519_Signature { + $1_ed25519_Signature(x) +} +function $IsValid'$1_ed25519_Signature'(s: $1_ed25519_Signature): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_ed25519_Signature'(s1: $1_ed25519_Signature, s2: $1_ed25519_Signature): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct ed25519::SignedMessage at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:45:5+107 +datatype $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'($type_info: $1_type_info_TypeInfo, $inner: $1_account_RotationCapabilityOfferProofChallengeV2) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''_type_info(s: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2', x: $1_type_info_TypeInfo): $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'(x, s->$inner) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''_inner(s: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2', x: $1_account_RotationCapabilityOfferProofChallengeV2): $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'(s->$type_info, x) +} +function $IsValid'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(s: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'): bool { + $IsValid'$1_type_info_TypeInfo'(s->$type_info) + && $IsValid'$1_account_RotationCapabilityOfferProofChallengeV2'(s->$inner) +} +function {:inline} $IsEqual'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(s1: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2', s2: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type_info, s2->$type_info) + && $IsEqual'$1_account_RotationCapabilityOfferProofChallengeV2'(s1->$inner, s2->$inner)} + +// struct ed25519::SignedMessage at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:45:5+107 +datatype $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' { + $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'($type_info: $1_type_info_TypeInfo, $inner: $1_account_RotationProofChallenge) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''_type_info(s: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge', x: $1_type_info_TypeInfo): $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' { + $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'(x, s->$inner) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''_inner(s: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge', x: $1_account_RotationProofChallenge): $1_ed25519_SignedMessage'$1_account_RotationProofChallenge' { + $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'(s->$type_info, x) +} +function $IsValid'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(s: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'): bool { + $IsValid'$1_type_info_TypeInfo'(s->$type_info) + && $IsValid'$1_account_RotationProofChallenge'(s->$inner) +} +function {:inline} $IsEqual'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(s1: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge', s2: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type_info, s2->$type_info) + && $IsEqual'$1_account_RotationProofChallenge'(s1->$inner, s2->$inner)} + +// struct ed25519::SignedMessage at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:45:5+107 +datatype $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'($type_info: $1_type_info_TypeInfo, $inner: $1_account_SignerCapabilityOfferProofChallengeV2) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''_type_info(s: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2', x: $1_type_info_TypeInfo): $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'(x, s->$inner) +} +function {:inline} $Update'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''_inner(s: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2', x: $1_account_SignerCapabilityOfferProofChallengeV2): $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2' { + $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'(s->$type_info, x) +} +function $IsValid'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(s: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'): bool { + $IsValid'$1_type_info_TypeInfo'(s->$type_info) + && $IsValid'$1_account_SignerCapabilityOfferProofChallengeV2'(s->$inner) +} +function {:inline} $IsEqual'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(s1: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2', s2: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type_info, s2->$type_info) + && $IsEqual'$1_account_SignerCapabilityOfferProofChallengeV2'(s1->$inner, s2->$inner)} + +// struct ed25519::SignedMessage<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:45:5+107 +datatype $1_ed25519_SignedMessage'#0' { + $1_ed25519_SignedMessage'#0'($type_info: $1_type_info_TypeInfo, $inner: #0) +} +function {:inline} $Update'$1_ed25519_SignedMessage'#0''_type_info(s: $1_ed25519_SignedMessage'#0', x: $1_type_info_TypeInfo): $1_ed25519_SignedMessage'#0' { + $1_ed25519_SignedMessage'#0'(x, s->$inner) +} +function {:inline} $Update'$1_ed25519_SignedMessage'#0''_inner(s: $1_ed25519_SignedMessage'#0', x: #0): $1_ed25519_SignedMessage'#0' { + $1_ed25519_SignedMessage'#0'(s->$type_info, x) +} +function $IsValid'$1_ed25519_SignedMessage'#0''(s: $1_ed25519_SignedMessage'#0'): bool { + $IsValid'$1_type_info_TypeInfo'(s->$type_info) + && $IsValid'#0'(s->$inner) +} +function {:inline} $IsEqual'$1_ed25519_SignedMessage'#0''(s1: $1_ed25519_SignedMessage'#0', s2: $1_ed25519_SignedMessage'#0'): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type_info, s2->$type_info) + && $IsEqual'#0'(s1->$inner, s2->$inner)} + +// struct ed25519::UnvalidatedPublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:51:5+83 +datatype $1_ed25519_UnvalidatedPublicKey { + $1_ed25519_UnvalidatedPublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_ed25519_UnvalidatedPublicKey'_bytes(s: $1_ed25519_UnvalidatedPublicKey, x: Vec (int)): $1_ed25519_UnvalidatedPublicKey { + $1_ed25519_UnvalidatedPublicKey(x) +} +function $IsValid'$1_ed25519_UnvalidatedPublicKey'(s: $1_ed25519_UnvalidatedPublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_ed25519_UnvalidatedPublicKey'(s1: $1_ed25519_UnvalidatedPublicKey, s2: $1_ed25519_UnvalidatedPublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct ed25519::ValidatedPublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:59:5+81 +datatype $1_ed25519_ValidatedPublicKey { + $1_ed25519_ValidatedPublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_ed25519_ValidatedPublicKey'_bytes(s: $1_ed25519_ValidatedPublicKey, x: Vec (int)): $1_ed25519_ValidatedPublicKey { + $1_ed25519_ValidatedPublicKey(x) +} +function $IsValid'$1_ed25519_ValidatedPublicKey'(s: $1_ed25519_ValidatedPublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_ed25519_ValidatedPublicKey'(s1: $1_ed25519_ValidatedPublicKey, s2: $1_ed25519_ValidatedPublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun ed25519::new_signature_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:90:5+224 +procedure {:inline 1} $1_ed25519_new_signature_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_ed25519_Signature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_ed25519_Signature; + var $t0: Vec (int); + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:90:5+1 + assume {:print "$at(130,3077,3078)"} true; + assume {:print "$track_local(14,0,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:17+27 + assume {:print "$at(130,3161,3188)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(130,3161,3188)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,0):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:48+19 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + assume {:print "$at(130,3153,3266)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:98+22 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:98+22 + assume {:print "$at(130,3242,3264)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:69+52 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(130,3213,3265)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + assume {:print "$at(130,3153,3266)"} true; + assume {:print "$track_abort(14,0):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:21+5 + assume {:print "$at(130,3288,3293)"} true; +L2: + + // $t7 := pack ed25519::Signature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:9+19 + assume {:print "$at(130,3276,3295)"} true; + $t7 := $1_ed25519_Signature($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:9+19 + assume {:print "$track_return(14,0,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 + assume {:print "$at(130,3300,3301)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 + assume {:print "$at(130,3300,3301)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 + assume {:print "$at(130,3300,3301)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signature_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:90:5+224 +procedure {:timeLimit 80} $1_ed25519_new_signature_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_ed25519_Signature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_ed25519_Signature; + var $t0: Vec (int); + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:90:5+1 + assume {:print "$at(130,3077,3078)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:90:5+1 + assume {:print "$track_local(14,0,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:17+27 + assume {:print "$at(130,3161,3188)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(130,3161,3188)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,0):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:48+19 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + assume {:print "$at(130,3153,3266)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:98+22 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:98+22 + assume {:print "$at(130,3242,3264)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:69+52 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(130,3213,3265)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + assume {:print "$at(130,3153,3266)"} true; + assume {:print "$track_abort(14,0):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:91:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:21+5 + assume {:print "$at(130,3288,3293)"} true; +L2: + + // $t7 := pack ed25519::Signature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:9+19 + assume {:print "$at(130,3276,3295)"} true; + $t7 := $1_ed25519_Signature($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:92:9+19 + assume {:print "$track_return(14,0,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 + assume {:print "$at(130,3300,3301)"} true; +L3: + + // assert Not(Neq(Len($t0), 64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), 64); + + // assert Eq($t7, pack ed25519::Signature($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:25:9+38 + assume {:print "$at(131,949,987)"} true; + assert {:msg "assert_failed(131,949,987): post-condition does not hold"} + $IsEqual'$1_ed25519_Signature'($t7, $1_ed25519_Signature($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:25:9+38 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:93:5+1 + assume {:print "$at(130,3300,3301)"} true; +L4: + + // assert Neq(Len($t0), 64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:23:5+161 + assume {:print "$at(131,832,993)"} true; + assert {:msg "assert_failed(131,832,993): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'(LenVec($t0), 64); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:23:5+161 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signed_message [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +procedure {:inline 1} $1_ed25519_new_signed_message'$1_account_RotationCapabilityOfferProofChallengeV2'(_$t0: $1_account_RotationCapabilityOfferProofChallengeV2) returns ($ret0: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2') +{ + // declare local variables + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $t0: $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_RotationCapabilityOfferProofChallengeV2': $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$at(130,5724,5725)"} true; + assume {:print "$track_local(14,1,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:154:24+23 + assume {:print "$at(130,5839,5862)"} true; + call $t1 := $1_type_info_type_of'$1_account_RotationCapabilityOfferProofChallengeV2'(); + if ($abort_flag) { + assume {:print "$at(130,5839,5862)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ed25519::SignedMessage<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$at(130,5800,5898)"} true; + $t3 := $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'($t1, $t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$track_return(14,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signed_message [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +procedure {:inline 1} $1_ed25519_new_signed_message'$1_account_RotationProofChallenge'(_$t0: $1_account_RotationProofChallenge) returns ($ret0: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge') +{ + // declare local variables + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $t0: $1_account_RotationProofChallenge; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge'': $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$at(130,5724,5725)"} true; + assume {:print "$track_local(14,1,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:154:24+23 + assume {:print "$at(130,5839,5862)"} true; + call $t1 := $1_type_info_type_of'$1_account_RotationProofChallenge'(); + if ($abort_flag) { + assume {:print "$at(130,5839,5862)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ed25519::SignedMessage<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$at(130,5800,5898)"} true; + $t3 := $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'($t1, $t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$track_return(14,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signed_message [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +procedure {:inline 1} $1_ed25519_new_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'(_$t0: $1_account_SignerCapabilityOfferProofChallengeV2) returns ($ret0: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2') +{ + // declare local variables + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $t0: $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_SignerCapabilityOfferProofChallengeV2': $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$at(130,5724,5725)"} true; + assume {:print "$track_local(14,1,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:154:24+23 + assume {:print "$at(130,5839,5862)"} true; + call $t1 := $1_type_info_type_of'$1_account_SignerCapabilityOfferProofChallengeV2'(); + if ($abort_flag) { + assume {:print "$at(130,5839,5862)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ed25519::SignedMessage<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$at(130,5800,5898)"} true; + $t3 := $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'($t1, $t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$track_return(14,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signed_message<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +procedure {:inline 1} $1_ed25519_new_signed_message'#0'(_$t0: #0) returns ($ret0: $1_ed25519_SignedMessage'#0') +{ + // declare local variables + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: $1_ed25519_SignedMessage'#0'; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$at(130,5724,5725)"} true; + assume {:print "$track_local(14,1,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:154:24+23 + assume {:print "$at(130,5839,5862)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(130,5839,5862)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ed25519::SignedMessage<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$at(130,5800,5898)"} true; + $t3 := $1_ed25519_SignedMessage'#0'($t1, $t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$track_return(14,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_signed_message [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+180 +procedure {:timeLimit 80} $1_ed25519_new_signed_message$verify(_$t0: #0) returns ($ret0: $1_ed25519_SignedMessage'#0') +{ + // declare local variables + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: $1_ed25519_SignedMessage'#0'; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$at(130,5724,5725)"} true; + assume $IsValid'#0'($t0); + + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:152:5+1 + assume {:print "$track_local(14,1,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:154:24+23 + assume {:print "$at(130,5839,5862)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(130,5839,5862)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ed25519::SignedMessage<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$at(130,5800,5898)"} true; + $t3 := $1_ed25519_SignedMessage'#0'($t1, $t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:153:9+98 + assume {:print "$track_return(14,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:157:5+1 + assume {:print "$at(130,5903,5904)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_unvalidated_public_key_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:73:5+257 +procedure {:inline 1} $1_ed25519_new_unvalidated_public_key_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_ed25519_UnvalidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:73:5+1 + assume {:print "$at(130,2360,2361)"} true; + assume {:print "$track_local(14,2,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:17+27 + assume {:print "$at(130,2468,2495)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(130,2468,2495)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:48+20 + $t3 := 32; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + assume {:print "$at(130,2460,2571)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:99+19 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:99+19 + assume {:print "$at(130,2550,2569)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:70+49 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(130,2521,2570)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + assume {:print "$at(130,2460,2571)"} true; + assume {:print "$track_abort(14,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:32+5 + assume {:print "$at(130,2604,2609)"} true; +L2: + + // $t7 := pack ed25519::UnvalidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:9+30 + assume {:print "$at(130,2581,2611)"} true; + $t7 := $1_ed25519_UnvalidatedPublicKey($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:9+30 + assume {:print "$track_return(14,2,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 + assume {:print "$at(130,2616,2617)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 + assume {:print "$at(130,2616,2617)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 + assume {:print "$at(130,2616,2617)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_unvalidated_public_key_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:73:5+257 +procedure {:timeLimit 80} $1_ed25519_new_unvalidated_public_key_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_ed25519_UnvalidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:73:5+1 + assume {:print "$at(130,2360,2361)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:73:5+1 + assume {:print "$track_local(14,2,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:17+27 + assume {:print "$at(130,2468,2495)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(130,2468,2495)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:48+20 + $t3 := 32; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + assume {:print "$at(130,2460,2571)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:99+19 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:99+19 + assume {:print "$at(130,2550,2569)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:70+49 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(130,2521,2570)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(14,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + assume {:print "$at(130,2460,2571)"} true; + assume {:print "$track_abort(14,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:74:9+111 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:32+5 + assume {:print "$at(130,2604,2609)"} true; +L2: + + // $t7 := pack ed25519::UnvalidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:9+30 + assume {:print "$at(130,2581,2611)"} true; + $t7 := $1_ed25519_UnvalidatedPublicKey($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:75:9+30 + assume {:print "$track_return(14,2,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 + assume {:print "$at(130,2616,2617)"} true; +L3: + + // assert Not(Neq(Len($t0), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), 32); + + // assert Eq($t7, pack ed25519::UnvalidatedPublicKey($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:9:9+49 + assume {:print "$at(131,280,329)"} true; + assert {:msg "assert_failed(131,280,329): post-condition does not hold"} + $IsEqual'$1_ed25519_UnvalidatedPublicKey'($t7, $1_ed25519_UnvalidatedPublicKey($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:9:9+49 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:76:5+1 + assume {:print "$at(130,2616,2617)"} true; +L4: + + // assert Neq(Len($t0), 32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:7:5+207 + assume {:print "$at(131,128,335)"} true; + assert {:msg "assert_failed(131,128,335): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'(LenVec($t0), 32); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:7:5+207 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ed25519::new_validated_public_key_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:79:5+309 +procedure {:inline 1} $1_ed25519_new_validated_public_key_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: $1_option_Option'$1_ed25519_ValidatedPublicKey'; + var $t2: bool; + var $t3: bool; + var $t4: $1_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ed25519_ValidatedPublicKey'': $1_option_Option'$1_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:18:9+52 + assume {:print "$at(131,610,662)"} true; + assume ($t2 == $1_ed25519_spec_public_key_validate_internal($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:79:5+1 + assume {:print "$at(130,2694,2695)"} true; + assume {:print "$track_local(14,3,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume {:print "$at(130,2802,2837)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume $IsValid'bool'($t3); + + // assume Eq($t3, ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume $IsEqual'bool'($t3, $1_ed25519_spec_public_key_validate_internal($t0)); + + // $t3 := opaque end: ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:82:17+5 + assume {:print "$at(130,2903,2908)"} true; +L1: + + // $t4 := pack ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:26+56 + assume {:print "$at(130,2866,2922)"} true; + $t4 := $1_ed25519_ValidatedPublicKey($t0); + + // $t1 := opaque begin: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + assume ($IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + assume $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_ed25519_ValidatedPublicKey'($t4)); + + // $t1 := opaque end: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume {:print "$at(130,2953,2987)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume {:print "$at(130,2953,2987)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume ($IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_ed25519_ValidatedPublicKey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; + assume {:print "$track_return(14,3,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:87:5+1 + assume {:print "$at(130,3002,3003)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:87:5+1 + assume {:print "$at(130,3002,3003)"} true; + $ret0 := $t1; + return; + +} + +// fun ed25519::new_validated_public_key_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:79:5+309 +procedure {:timeLimit 80} $1_ed25519_new_validated_public_key_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: $1_option_Option'$1_ed25519_ValidatedPublicKey'; + var $t2: bool; + var $t3: bool; + var $t4: $1_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ed25519_ValidatedPublicKey'': $1_option_Option'$1_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:79:5+1 + assume {:print "$at(130,2694,2695)"} true; + assume $IsValid'vec'u8''($t0); + + // assume Identical($t2, ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:18:9+52 + assume {:print "$at(131,610,662)"} true; + assume ($t2 == $1_ed25519_spec_public_key_validate_internal($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:79:5+1 + assume {:print "$at(130,2694,2695)"} true; + assume {:print "$track_local(14,3,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume {:print "$at(130,2802,2837)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume $IsValid'bool'($t3); + + // assume Eq($t3, ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + assume $IsEqual'bool'($t3, $1_ed25519_spec_public_key_validate_internal($t0)); + + // $t3 := opaque end: ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:13+35 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:82:17+5 + assume {:print "$at(130,2903,2908)"} true; +L1: + + // $t4 := pack ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:26+56 + assume {:print "$at(130,2866,2922)"} true; + $t4 := $1_ed25519_ValidatedPublicKey($t0); + + // $t1 := opaque begin: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + assume ($IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + assume $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_ed25519_ValidatedPublicKey'($t4)); + + // $t1 := opaque end: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:81:13+70 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume {:print "$at(130,2953,2987)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume {:print "$at(130,2953,2987)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume ($IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + assume $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_ed25519_ValidatedPublicKey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:85:13+34 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:80:9+199 + assume {:print "$at(130,2798,2997)"} true; + assume {:print "$track_return(14,3,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:87:5+1 + assume {:print "$at(130,3002,3003)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:17:9+16 + assume {:print "$at(131,585,601)"} true; + assert {:msg "assert_failed(131,585,601): function does not abort under this condition"} + !false; + + // assert Implies($t2, Eq>($t1, option::spec_some(pack ed25519::ValidatedPublicKey($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:19:9+72 + assume {:print "$at(131,671,743)"} true; + assert {:msg "assert_failed(131,671,743): post-condition does not hold"} + ($t2 ==> $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_ed25519_ValidatedPublicKey'($1_ed25519_ValidatedPublicKey($t0)))); + + // assert Implies(Not($t2), Eq>($t1, option::spec_none())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:20:9+68 + assume {:print "$at(131,752,820)"} true; + assert {:msg "assert_failed(131,752,820): post-condition does not hold"} + (!$t2 ==> $IsEqual'$1_option_Option'$1_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_ed25519_ValidatedPublicKey'())); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:20:9+68 + $ret0 := $t1; + return; + +} + +// fun ed25519::public_key_bytes_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:170:5+190 +procedure {:timeLimit 80} $1_ed25519_public_key_bytes_to_authentication_key$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $Mutation (Vec (int)); + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:170:5+1 + assume {:print "$at(130,6506,6507)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[pk_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:170:5+1 + assume {:print "$track_local(14,4,0):", $t0} $t0 == $t0; + + // $t1 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:171:32+13 + assume {:print "$at(130,6616,6629)"} true; + $t1 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:171:47+19 + $t2 := 0; + assume $IsValid'u8'($t2); + + // vector::push_back($t1, $t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:171:9+58 + call $t1 := $1_vector_push_back'u8'($t1, $t2); + if ($abort_flag) { + assume {:print "$at(130,6593,6651)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(14,4):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[LocalRoot($t0)@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:171:9+58 + $t0 := $Dereference($t1); + + // trace_local[pk_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:171:9+58 + assume {:print "$track_local(14,4,0):", $t0} $t0 == $t0; + + // $t4 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:172:29+8 + assume {:print "$at(130,6681,6689)"} true; + $t4 := $t0; + + // $t5 := hash::sha3_256($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:172:9+29 + call $t5 := $1_hash_sha3_256($t4); + if ($abort_flag) { + assume {:print "$at(130,6661,6690)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(14,4):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:172:9+29 + assume {:print "$track_return(14,4,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:173:5+1 + assume {:print "$at(130,6695,6696)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:34:9+16 + assume {:print "$at(131,1244,1260)"} true; + assert {:msg "assert_failed(131,1244,1260): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:34:9+16 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:173:5+1 + assume {:print "$at(130,6695,6696)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:32:5+225 + assume {:print "$at(131,1133,1358)"} true; + assert {:msg "assert_failed(131,1133,1358): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:32:5+225 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ed25519::public_key_into_unvalidated [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:103:5+161 +procedure {:timeLimit 80} $1_ed25519_public_key_into_unvalidated$verify(_$t0: $1_ed25519_ValidatedPublicKey) returns ($ret0: $1_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ed25519_UnvalidatedPublicKey; + var $t0: $1_ed25519_ValidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_ValidatedPublicKey': $1_ed25519_ValidatedPublicKey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:103:5+1 + assume {:print "$at(130,3706,3707)"} true; + assume $IsValid'$1_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:103:5+1 + assume {:print "$track_local(14,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:105:20+8 + assume {:print "$at(130,3843,3851)"} true; + $t1 := $t0->$bytes; + + // $t2 := pack ed25519::UnvalidatedPublicKey($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:104:9+60 + assume {:print "$at(130,3801,3861)"} true; + $t2 := $1_ed25519_UnvalidatedPublicKey($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:104:9+60 + assume {:print "$track_return(14,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:107:5+1 + assume {:print "$at(130,3866,3867)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:107:5+1 + assume {:print "$at(130,3866,3867)"} true; + $ret0 := $t2; + return; + +} + +// fun ed25519::public_key_to_unvalidated [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:96:5+160 +procedure {:timeLimit 80} $1_ed25519_public_key_to_unvalidated$verify(_$t0: $1_ed25519_ValidatedPublicKey) returns ($ret0: $1_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ed25519_UnvalidatedPublicKey; + var $t0: $1_ed25519_ValidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_ValidatedPublicKey': $1_ed25519_ValidatedPublicKey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:96:5+1 + assume {:print "$at(130,3424,3425)"} true; + assume $IsValid'$1_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:96:5+1 + assume {:print "$track_local(14,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:98:20+8 + assume {:print "$at(130,3560,3568)"} true; + $t1 := $t0->$bytes; + + // $t2 := pack ed25519::UnvalidatedPublicKey($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:97:9+60 + assume {:print "$at(130,3518,3578)"} true; + $t2 := $1_ed25519_UnvalidatedPublicKey($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:97:9+60 + assume {:print "$track_return(14,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:100:5+1 + assume {:print "$at(130,3583,3584)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:100:5+1 + assume {:print "$at(130,3583,3584)"} true; + $ret0 := $t2; + return; + +} + +// fun ed25519::public_key_validate [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:126:5+147 +procedure {:timeLimit 80} $1_ed25519_public_key_validate$verify(_$t0: $1_ed25519_UnvalidatedPublicKey) returns ($ret0: $1_option_Option'$1_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: $1_option_Option'$1_ed25519_ValidatedPublicKey'; + var $t4: int; + var $t0: $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_option_Option'$1_ed25519_ValidatedPublicKey'': $1_option_Option'$1_ed25519_ValidatedPublicKey'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:126:5+1 + assume {:print "$at(130,4511,4512)"} true; + assume $IsValid'$1_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:126:5+1 + assume {:print "$track_local(14,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:127:45+8 + assume {:print "$at(130,4643,4651)"} true; + $t1 := $t0->$bytes; + + // assume Identical($t2, ed25519::spec_public_key_validate_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:18:9+52 + assume {:print "$at(131,610,662)"} true; + assume ($t2 == $1_ed25519_spec_public_key_validate_internal($t1)); + + // $t3 := ed25519::new_validated_public_key_from_bytes($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:127:9+45 + assume {:print "$at(130,4607,4652)"} true; + call $t3 := $1_ed25519_new_validated_public_key_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(130,4607,4652)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(14,7):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:127:9+45 + assume {:print "$track_return(14,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:128:5+1 + assume {:print "$at(130,4657,4658)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:128:5+1 + assume {:print "$at(130,4657,4658)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:128:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:128:5+1 + assume {:print "$at(130,4657,4658)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ed25519::signature_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:120:5+84 +procedure {:timeLimit 80} $1_ed25519_signature_to_bytes$verify(_$t0: $1_ed25519_Signature) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ed25519_Signature; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:120:5+1 + assume {:print "$at(130,4268,4269)"} true; + assume $IsValid'$1_ed25519_Signature'($t0); + + // trace_local[sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:120:5+1 + assume {:print "$track_local(14,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:121:9+9 + assume {:print "$at(130,4337,4346)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:121:9+9 + assume {:print "$track_return(14,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:122:5+1 + assume {:print "$at(130,4351,4352)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:122:5+1 + assume {:print "$at(130,4351,4352)"} true; + $ret0 := $t1; + return; + +} + +// fun ed25519::signature_verify_strict [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+242 +procedure {:timeLimit 80} $1_ed25519_signature_verify_strict$verify(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: Vec (int); + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume {:print "$at(130,4869,4870)"} true; + assume $IsValid'$1_ed25519_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume $IsValid'$1_ed25519_UnvalidatedPublicKey'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume $IsValid'vec'u8''($t2); + + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume {:print "$track_local(14,10,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume {:print "$track_local(14,10,1):", $t1} $t1 == $t1; + + // trace_local[message]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:132:5+1 + assume {:print "$track_local(14,10,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:42+15 + assume {:print "$at(130,5062,5077)"} true; + $t3 := $t0->$bytes; + + // $t4 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:59+16 + $t4 := $t1->$bytes; + + // $t5 := opaque begin: ed25519::signature_verify_strict_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:9+76 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:9+76 + assume $IsValid'bool'($t5); + + // assume Eq($t5, ed25519::spec_signature_verify_strict_internal($t3, $t4, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:9+76 + assume $IsEqual'bool'($t5, $1_ed25519_spec_signature_verify_strict_internal($t3, $t4, $t2)); + + // $t5 := opaque end: ed25519::signature_verify_strict_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:9+76 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:137:9+76 + assume {:print "$track_return(14,10,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:138:5+1 + assume {:print "$at(130,5110,5111)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:138:5+1 + assume {:print "$at(130,5110,5111)"} true; + $ret0 := $t5; + return; + +} + +// fun ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+350 +procedure {:inline 1} $1_ed25519_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: $1_account_RotationCapabilityOfferProofChallengeV2) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_RotationCapabilityOfferProofChallengeV2': $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$at(130,5309,5310)"} true; + assume {:print "$track_local(14,12,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,2):", $t2} $t2 == $t2; + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:144:24+23 + assume {:print "$at(130,5491,5514)"} true; + call $t4 := $1_type_info_type_of'$1_account_RotationCapabilityOfferProofChallengeV2'(); + if ($abort_flag) { + assume {:print "$at(130,5491,5514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ed25519::SignedMessage<#0>($t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:23+98 + assume {:print "$at(130,5452,5550)"} true; + $t6 := $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'($t4, $t2); + + // trace_local[encoded]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:13+7 + assume {:print "$track_local(14,12,3):", $t6} $t6 == $t6; + + // $t7 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:42+15 + assume {:print "$at(130,5594,5609)"} true; + $t7 := $t0->$bytes; + + // $t8 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:59+16 + $t8 := $t1->$bytes; + + // $t9 := bcs::to_bytes>($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:77+23 + call $t9 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''($t6); + if ($abort_flag) { + assume {:print "$at(130,5629,5652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := opaque begin: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsValid'bool'($t10); + + // assume Eq($t10, ed25519::spec_signature_verify_strict_internal($t7, $t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsEqual'bool'($t10, $1_ed25519_spec_signature_verify_strict_internal($t7, $t8, $t9)); + + // $t10 := opaque end: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume {:print "$track_return(14,12,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+350 +procedure {:inline 1} $1_ed25519_signature_verify_strict_t'$1_account_RotationProofChallenge'(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: $1_account_RotationProofChallenge) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_RotationProofChallenge; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge'': $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$at(130,5309,5310)"} true; + assume {:print "$track_local(14,12,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,2):", $t2} $t2 == $t2; + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:144:24+23 + assume {:print "$at(130,5491,5514)"} true; + call $t4 := $1_type_info_type_of'$1_account_RotationProofChallenge'(); + if ($abort_flag) { + assume {:print "$at(130,5491,5514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ed25519::SignedMessage<#0>($t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:23+98 + assume {:print "$at(130,5452,5550)"} true; + $t6 := $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'($t4, $t2); + + // trace_local[encoded]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:13+7 + assume {:print "$track_local(14,12,3):", $t6} $t6 == $t6; + + // $t7 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:42+15 + assume {:print "$at(130,5594,5609)"} true; + $t7 := $t0->$bytes; + + // $t8 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:59+16 + $t8 := $t1->$bytes; + + // $t9 := bcs::to_bytes>($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:77+23 + call $t9 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''($t6); + if ($abort_flag) { + assume {:print "$at(130,5629,5652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := opaque begin: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsValid'bool'($t10); + + // assume Eq($t10, ed25519::spec_signature_verify_strict_internal($t7, $t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsEqual'bool'($t10, $1_ed25519_spec_signature_verify_strict_internal($t7, $t8, $t9)); + + // $t10 := opaque end: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume {:print "$track_return(14,12,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+350 +procedure {:inline 1} $1_ed25519_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: $1_account_SignerCapabilityOfferProofChallengeV2) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_SignerCapabilityOfferProofChallengeV2': $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$at(130,5309,5310)"} true; + assume {:print "$track_local(14,12,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,2):", $t2} $t2 == $t2; + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:144:24+23 + assume {:print "$at(130,5491,5514)"} true; + call $t4 := $1_type_info_type_of'$1_account_SignerCapabilityOfferProofChallengeV2'(); + if ($abort_flag) { + assume {:print "$at(130,5491,5514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ed25519::SignedMessage<#0>($t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:23+98 + assume {:print "$at(130,5452,5550)"} true; + $t6 := $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'($t4, $t2); + + // trace_local[encoded]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:13+7 + assume {:print "$track_local(14,12,3):", $t6} $t6 == $t6; + + // $t7 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:42+15 + assume {:print "$at(130,5594,5609)"} true; + $t7 := $t0->$bytes; + + // $t8 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:59+16 + $t8 := $t1->$bytes; + + // $t9 := bcs::to_bytes>($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:77+23 + call $t9 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''($t6); + if ($abort_flag) { + assume {:print "$at(130,5629,5652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := opaque begin: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsValid'bool'($t10); + + // assume Eq($t10, ed25519::spec_signature_verify_strict_internal($t7, $t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsEqual'bool'($t10, $1_ed25519_spec_signature_verify_strict_internal($t7, $t8, $t9)); + + // $t10 := opaque end: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume {:print "$track_return(14,12,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ed25519::signature_verify_strict_t<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+350 +procedure {:inline 1} $1_ed25519_signature_verify_strict_t'#0'(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: #0) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'#0'; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: $1_ed25519_SignedMessage'#0'; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$at(130,5309,5310)"} true; + assume {:print "$track_local(14,12,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,2):", $t2} $t2 == $t2; + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:144:24+23 + assume {:print "$at(130,5491,5514)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(130,5491,5514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ed25519::SignedMessage<#0>($t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:23+98 + assume {:print "$at(130,5452,5550)"} true; + $t6 := $1_ed25519_SignedMessage'#0'($t4, $t2); + + // trace_local[encoded]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:13+7 + assume {:print "$track_local(14,12,3):", $t6} $t6 == $t6; + + // $t7 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:42+15 + assume {:print "$at(130,5594,5609)"} true; + $t7 := $t0->$bytes; + + // $t8 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:59+16 + $t8 := $t1->$bytes; + + // $t9 := bcs::to_bytes>($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:77+23 + call $t9 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'#0''($t6); + if ($abort_flag) { + assume {:print "$at(130,5629,5652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := opaque begin: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsValid'bool'($t10); + + // assume Eq($t10, ed25519::spec_signature_verify_strict_internal($t7, $t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsEqual'bool'($t10, $1_ed25519_spec_signature_verify_strict_internal($t7, $t8, $t9)); + + // $t10 := opaque end: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume {:print "$track_return(14,12,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ed25519::signature_verify_strict_t [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+350 +procedure {:timeLimit 80} $1_ed25519_signature_verify_strict_t$verify(_$t0: $1_ed25519_Signature, _$t1: $1_ed25519_UnvalidatedPublicKey, _$t2: #0) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'#0'; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: $1_ed25519_SignedMessage'#0'; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t0: $1_ed25519_Signature; + var $t1: $1_ed25519_UnvalidatedPublicKey; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$at(130,5309,5310)"} true; + assume $IsValid'$1_ed25519_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume $IsValid'$1_ed25519_UnvalidatedPublicKey'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume $IsValid'#0'($t2); + + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:142:5+1 + assume {:print "$track_local(14,12,2):", $t2} $t2 == $t2; + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:144:24+23 + assume {:print "$at(130,5491,5514)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(130,5491,5514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ed25519::SignedMessage<#0>($t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:23+98 + assume {:print "$at(130,5452,5550)"} true; + $t6 := $1_ed25519_SignedMessage'#0'($t4, $t2); + + // trace_local[encoded]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:143:13+7 + assume {:print "$track_local(14,12,3):", $t6} $t6 == $t6; + + // $t7 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:42+15 + assume {:print "$at(130,5594,5609)"} true; + $t7 := $t0->$bytes; + + // $t8 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:59+16 + $t8 := $t1->$bytes; + + // $t9 := bcs::to_bytes>($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:77+23 + call $t9 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'#0''($t6); + if ($abort_flag) { + assume {:print "$at(130,5629,5652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(14,12):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := opaque begin: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsValid'bool'($t10); + + // assume Eq($t10, ed25519::spec_signature_verify_strict_internal($t7, $t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume $IsEqual'bool'($t10, $1_ed25519_spec_signature_verify_strict_internal($t7, $t8, $t9)); + + // $t10 := opaque end: ed25519::signature_verify_strict_internal($t7, $t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:148:9+92 + assume {:print "$track_return(14,12,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:149:5+1 + assume {:print "$at(130,5658,5659)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ed25519::unvalidated_public_key_to_authentication_key [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:160:5+159 +procedure {:inline 1} $1_ed25519_unvalidated_public_key_to_authentication_key(_$t0: $1_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:160:5+1 + assume {:print "$at(130,6000,6001)"} true; + assume {:print "$track_local(14,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:48+8 + assume {:print "$at(130,6144,6152)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume $IsEqual'vec'u8''($t2, $1_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume {:print "$track_return(14,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:162:5+1 + assume {:print "$at(130,6158,6159)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:162:5+1 + assume {:print "$at(130,6158,6159)"} true; + $ret0 := $t2; + return; + +} + +// fun ed25519::unvalidated_public_key_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:160:5+159 +procedure {:timeLimit 80} $1_ed25519_unvalidated_public_key_to_authentication_key$verify(_$t0: $1_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:160:5+1 + assume {:print "$at(130,6000,6001)"} true; + assume $IsValid'$1_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:160:5+1 + assume {:print "$track_local(14,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:48+8 + assume {:print "$at(130,6144,6152)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume $IsEqual'vec'u8''($t2, $1_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:161:9+48 + assume {:print "$track_return(14,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:162:5+1 + assume {:print "$at(130,6158,6159)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:162:5+1 + assume {:print "$at(130,6158,6159)"} true; + $ret0 := $t2; + return; + +} + +// fun ed25519::unvalidated_public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:110:5+106 +procedure {:timeLimit 80} $1_ed25519_unvalidated_public_key_to_bytes$verify(_$t0: $1_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:110:5+1 + assume {:print "$at(130,3936,3937)"} true; + assume $IsValid'$1_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:110:5+1 + assume {:print "$track_local(14,14,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:111:9+8 + assume {:print "$at(130,4028,4036)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:111:9+8 + assume {:print "$track_return(14,14,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:112:5+1 + assume {:print "$at(130,4041,4042)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:112:5+1 + assume {:print "$at(130,4041,4042)"} true; + $ret0 := $t1; + return; + +} + +// fun ed25519::validated_public_key_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:165:5+155 +procedure {:timeLimit 80} $1_ed25519_validated_public_key_to_authentication_key$verify(_$t0: $1_ed25519_ValidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_ed25519_ValidatedPublicKey; + var $temp_0'$1_ed25519_ValidatedPublicKey': $1_ed25519_ValidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:165:5+1 + assume {:print "$at(130,6255,6256)"} true; + assume $IsValid'$1_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:165:5+1 + assume {:print "$track_local(14,15,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:48+8 + assume {:print "$at(130,6395,6403)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:9+48 + assume $IsEqual'vec'u8''($t2, $1_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:166:9+48 + assume {:print "$track_return(14,15,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:167:5+1 + assume {:print "$at(130,6409,6410)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:167:5+1 + assume {:print "$at(130,6409,6410)"} true; + $ret0 := $t2; + return; + +} + +// fun ed25519::validated_public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:115:5+102 +procedure {:timeLimit 80} $1_ed25519_validated_public_key_to_bytes$verify(_$t0: $1_ed25519_ValidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ed25519_ValidatedPublicKey; + var $temp_0'$1_ed25519_ValidatedPublicKey': $1_ed25519_ValidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:115:5+1 + assume {:print "$at(130,4109,4110)"} true; + assume $IsValid'$1_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:115:5+1 + assume {:print "$track_local(14,16,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:116:9+8 + assume {:print "$at(130,4197,4205)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:116:9+8 + assume {:print "$track_return(14,16,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:117:5+1 + assume {:print "$at(130,4210,4211)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.move:117:5+1 + assume {:print "$at(130,4210,4211)"} true; + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:107:10+747 +function {:inline} $1_multi_ed25519_spec_check_and_get_threshold(bytes: Vec (int)): $1_option_Option'u8' { + (var len := LenVec(bytes); (if ($IsEqual'num'(len, 0)) then ($1_option_$none'u8'()) else ((var threshold_num_of_bytes := (len mod 32); (var num_of_keys := (len div 32); (var threshold_byte := ReadVec(bytes, (len - 1)); (if ((($IsEqual'num'(num_of_keys, 0) || (num_of_keys > 32)) || !$IsEqual'num'((len mod 32), 1))) then ($1_option_$none'u8'()) else ((if (($IsEqual'u8'(threshold_byte, 0) || (threshold_byte > num_of_keys))) then ($1_option_$none'u8'()) else ($1_option_spec_some'u8'(threshold_byte))))))))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:125:10+151 +function $1_multi_ed25519_spec_signature_verify_strict_internal(multisignature: Vec (int), public_key: Vec (int), message: Vec (int)): bool; +axiom (forall multisignature: Vec (int), public_key: Vec (int), message: Vec (int) :: +(var $$res := $1_multi_ed25519_spec_signature_verify_strict_internal(multisignature, public_key, message); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:131:10+63 +function $1_multi_ed25519_spec_public_key_validate_internal(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_multi_ed25519_spec_public_key_validate_internal(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:133:10+66 +function $1_multi_ed25519_spec_public_key_validate_v2_internal(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_multi_ed25519_spec_public_key_validate_v2_internal(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:135:10+82 +function $1_multi_ed25519_spec_public_key_bytes_to_authentication_key(pk_bytes: Vec (int)): Vec (int); +axiom (forall pk_bytes: Vec (int) :: +(var $$res := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key(pk_bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:137:10+313 +function {:inline} $1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'(signature: $1_multi_ed25519_Signature, public_key: $1_multi_ed25519_UnvalidatedPublicKey, data: $1_account_RotationCapabilityOfferProofChallengeV2): bool { + (var encoded := $1_ed25519_$new_signed_message'$1_account_RotationCapabilityOfferProofChallengeV2'(data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(encoded); $1_multi_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:137:10+313 +function {:inline} $1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'(signature: $1_multi_ed25519_Signature, public_key: $1_multi_ed25519_UnvalidatedPublicKey, data: $1_account_RotationProofChallenge): bool { + (var encoded := $1_ed25519_$new_signed_message'$1_account_RotationProofChallenge'(data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(encoded); $1_multi_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:137:10+313 +function {:inline} $1_multi_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'(signature: $1_multi_ed25519_Signature, public_key: $1_multi_ed25519_UnvalidatedPublicKey, data: $1_account_SignerCapabilityOfferProofChallengeV2): bool { + (var encoded := $1_ed25519_$new_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'(data); (var message := $1_bcs_serialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(encoded); $1_multi_ed25519_spec_signature_verify_strict_internal(signature->$bytes, public_key->$bytes, message))) +} + +// struct multi_ed25519::Signature at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:83:5+72 +datatype $1_multi_ed25519_Signature { + $1_multi_ed25519_Signature($bytes: Vec (int)) +} +function {:inline} $Update'$1_multi_ed25519_Signature'_bytes(s: $1_multi_ed25519_Signature, x: Vec (int)): $1_multi_ed25519_Signature { + $1_multi_ed25519_Signature(x) +} +function $IsValid'$1_multi_ed25519_Signature'(s: $1_multi_ed25519_Signature): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_multi_ed25519_Signature'(s1: $1_multi_ed25519_Signature, s2: $1_multi_ed25519_Signature): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct multi_ed25519::UnvalidatedPublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:66:5+83 +datatype $1_multi_ed25519_UnvalidatedPublicKey { + $1_multi_ed25519_UnvalidatedPublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_multi_ed25519_UnvalidatedPublicKey'_bytes(s: $1_multi_ed25519_UnvalidatedPublicKey, x: Vec (int)): $1_multi_ed25519_UnvalidatedPublicKey { + $1_multi_ed25519_UnvalidatedPublicKey(x) +} +function $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'(s: $1_multi_ed25519_UnvalidatedPublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_multi_ed25519_UnvalidatedPublicKey'(s1: $1_multi_ed25519_UnvalidatedPublicKey, s2: $1_multi_ed25519_UnvalidatedPublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct multi_ed25519::ValidatedPublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:75:5+81 +datatype $1_multi_ed25519_ValidatedPublicKey { + $1_multi_ed25519_ValidatedPublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_multi_ed25519_ValidatedPublicKey'_bytes(s: $1_multi_ed25519_ValidatedPublicKey, x: Vec (int)): $1_multi_ed25519_ValidatedPublicKey { + $1_multi_ed25519_ValidatedPublicKey(x) +} +function $IsValid'$1_multi_ed25519_ValidatedPublicKey'(s: $1_multi_ed25519_ValidatedPublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_multi_ed25519_ValidatedPublicKey'(s1: $1_multi_ed25519_ValidatedPublicKey, s2: $1_multi_ed25519_ValidatedPublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun multi_ed25519::new_signature_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:169:5+247 +procedure {:inline 1} $1_multi_ed25519_new_signature_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_multi_ed25519_Signature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_multi_ed25519_Signature; + var $t0: Vec (int); + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:169:5+1 + assume {:print "$at(132,7113,7114)"} true; + assume {:print "$track_local(15,1,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:17+22 + assume {:print "$at(132,7197,7219)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,7197,7219)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:42+30 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := %($t1, $t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:40+1 + call $t4 := $Mod($t1, $t3); + if ($abort_flag) { + assume {:print "$at(132,7220,7221)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // $t5 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:76+19 + $t5 := 4; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:73+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + assume {:print "$at(132,7189,7325)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:121+22 +L0: + + // $t7 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:121+22 + assume {:print "$at(132,7301,7323)"} true; + $t7 := 2; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:97+47 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(132,7277,7324)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + assume {:print "$at(132,7189,7325)"} true; + assume {:print "$track_abort(15,1):", $t8} $t8 == $t8; + + // $t2 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + $t2 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:21+5 + assume {:print "$at(132,7347,7352)"} true; +L2: + + // $t9 := pack multi_ed25519::Signature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:9+19 + assume {:print "$at(132,7335,7354)"} true; + $t9 := $1_multi_ed25519_Signature($t0); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:9+19 + assume {:print "$track_return(15,1,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 + assume {:print "$at(132,7359,7360)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 + assume {:print "$at(132,7359,7360)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 + assume {:print "$at(132,7359,7360)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_signature_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:169:5+247 +procedure {:timeLimit 80} $1_multi_ed25519_new_signature_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_multi_ed25519_Signature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_multi_ed25519_Signature; + var $t0: Vec (int); + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:169:5+1 + assume {:print "$at(132,7113,7114)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:169:5+1 + assume {:print "$track_local(15,1,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:17+22 + assume {:print "$at(132,7197,7219)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,7197,7219)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:42+30 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := %($t1, $t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:40+1 + call $t4 := $Mod($t1, $t3); + if ($abort_flag) { + assume {:print "$at(132,7220,7221)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // $t5 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:76+19 + $t5 := 4; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:73+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + assume {:print "$at(132,7189,7325)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:121+22 +L0: + + // $t7 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:121+22 + assume {:print "$at(132,7301,7323)"} true; + $t7 := 2; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:97+47 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(132,7277,7324)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(15,1):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + assume {:print "$at(132,7189,7325)"} true; + assume {:print "$track_abort(15,1):", $t8} $t8 == $t8; + + // $t2 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + $t2 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:170:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:21+5 + assume {:print "$at(132,7347,7352)"} true; +L2: + + // $t9 := pack multi_ed25519::Signature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:9+19 + assume {:print "$at(132,7335,7354)"} true; + $t9 := $1_multi_ed25519_Signature($t0); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:171:9+19 + assume {:print "$track_return(15,1,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 + assume {:print "$at(132,7359,7360)"} true; +L3: + + // assert Not(Neq(Mod(Len($t0), 64), 4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !!$IsEqual'num'((LenVec($t0) mod 64), 4); + + // assert Eq($t9, pack multi_ed25519::Signature($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:34:9+38 + assume {:print "$at(133,1516,1554)"} true; + assert {:msg "assert_failed(133,1516,1554): post-condition does not hold"} + $IsEqual'$1_multi_ed25519_Signature'($t9, $1_multi_ed25519_Signature($t0)); + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:34:9+38 + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:172:5+1 + assume {:print "$at(132,7359,7360)"} true; +L4: + + // assert Neq(Mod(Len($t0), 64), 4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:32:5+161 + assume {:print "$at(133,1399,1560)"} true; + assert {:msg "assert_failed(133,1399,1560): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'((LenVec($t0) mod 64), 4); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:32:5+161 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_unvalidated_public_key_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:129:5+475 +procedure {:inline 1} $1_multi_ed25519_new_unvalidated_public_key_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_multi_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_multi_ed25519_UnvalidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t2 == LenVec($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:129:5+1 + assume {:print "$at(132,5195,5196)"} true; + assume {:print "$track_local(15,2,0):", $t0} $t0 == $t0; + + // $t3 := vector::length($t0) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:130:19+22 + assume {:print "$at(132,5305,5327)"} true; + call $t3 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,5305,5327)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[len]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:130:13+3 + assume {:print "$track_local(15,2,1):", $t3} $t3 == $t3; + + // $t5 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:131:33+31 + assume {:print "$at(132,5361,5392)"} true; + $t5 := 32; + assume $IsValid'u64'($t5); + + // $t6 := /($t3, $t5) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:131:31+1 + call $t6 := $Div($t3, $t5); + if ($abort_flag) { + assume {:print "$at(132,5359,5360)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // $t7 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:32+25 + assume {:print "$at(132,5426,5451)"} true; + $t7 := 32; + assume $IsValid'u64'($t7); + + // $t8 := <=($t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:29+2 + call $t8 := $Le($t6, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + assume {:print "$at(132,5403,5498)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:83+19 +L0: + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:83+19 + assume {:print "$at(132,5477,5496)"} true; + $t9 := 1; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:59+44 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(132,5453,5497)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + assume {:print "$at(132,5403,5498)"} true; + assume {:print "$track_abort(15,2):", $t10} $t10 == $t10; + + // $t4 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + $t4 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:17+3 + assume {:print "$at(132,5516,5519)"} true; +L2: + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:23+31 + assume {:print "$at(132,5522,5553)"} true; + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := %($t3, $t11) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:21+1 + call $t12 := $Mod($t3, $t11); + if ($abort_flag) { + assume {:print "$at(132,5520,5521)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:58+20 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:55+2 + $t14 := $IsEqual'u64'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + assume {:print "$at(132,5508,5624)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:104+19 +L3: + + // $t15 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:104+19 + assume {:print "$at(132,5603,5622)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:80+44 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(132,5579,5623)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + assume {:print "$at(132,5508,5624)"} true; + assume {:print "$track_abort(15,2):", $t16} $t16 == $t16; + + // $t4 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + $t4 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:32+5 + assume {:print "$at(132,5657,5662)"} true; +L5: + + // $t17 := pack multi_ed25519::UnvalidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:9+30 + assume {:print "$at(132,5634,5664)"} true; + $t17 := $1_multi_ed25519_UnvalidatedPublicKey($t0); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:9+30 + assume {:print "$track_return(15,2,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 + assume {:print "$at(132,5669,5670)"} true; +L6: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 + assume {:print "$at(132,5669,5670)"} true; + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 + assume {:print "$at(132,5669,5670)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_unvalidated_public_key_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:129:5+475 +procedure {:timeLimit 80} $1_multi_ed25519_new_unvalidated_public_key_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_multi_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_multi_ed25519_UnvalidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:129:5+1 + assume {:print "$at(132,5195,5196)"} true; + assume $IsValid'vec'u8''($t0); + + // assume Identical($t2, Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t2 == LenVec($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:129:5+1 + assume {:print "$at(132,5195,5196)"} true; + assume {:print "$track_local(15,2,0):", $t0} $t0 == $t0; + + // $t3 := vector::length($t0) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:130:19+22 + assume {:print "$at(132,5305,5327)"} true; + call $t3 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,5305,5327)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[len]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:130:13+3 + assume {:print "$track_local(15,2,1):", $t3} $t3 == $t3; + + // $t5 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:131:33+31 + assume {:print "$at(132,5361,5392)"} true; + $t5 := 32; + assume $IsValid'u64'($t5); + + // $t6 := /($t3, $t5) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:131:31+1 + call $t6 := $Div($t3, $t5); + if ($abort_flag) { + assume {:print "$at(132,5359,5360)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // $t7 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:32+25 + assume {:print "$at(132,5426,5451)"} true; + $t7 := 32; + assume $IsValid'u64'($t7); + + // $t8 := <=($t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:29+2 + call $t8 := $Le($t6, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + assume {:print "$at(132,5403,5498)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:83+19 +L0: + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:83+19 + assume {:print "$at(132,5477,5496)"} true; + $t9 := 1; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:59+44 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(132,5453,5497)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + assume {:print "$at(132,5403,5498)"} true; + assume {:print "$track_abort(15,2):", $t10} $t10 == $t10; + + // $t4 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + $t4 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:133:9+95 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:17+3 + assume {:print "$at(132,5516,5519)"} true; +L2: + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:23+31 + assume {:print "$at(132,5522,5553)"} true; + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := %($t3, $t11) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:21+1 + call $t12 := $Mod($t3, $t11); + if ($abort_flag) { + assume {:print "$at(132,5520,5521)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:58+20 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:55+2 + $t14 := $IsEqual'u64'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + assume {:print "$at(132,5508,5624)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:104+19 +L3: + + // $t15 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:104+19 + assume {:print "$at(132,5603,5622)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:80+44 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(132,5579,5623)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,2):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + assume {:print "$at(132,5508,5624)"} true; + assume {:print "$track_abort(15,2):", $t16} $t16 == $t16; + + // $t4 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + $t4 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:134:9+116 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:32+5 + assume {:print "$at(132,5657,5662)"} true; +L5: + + // $t17 := pack multi_ed25519::UnvalidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:9+30 + assume {:print "$at(132,5634,5664)"} true; + $t17 := $1_multi_ed25519_UnvalidatedPublicKey($t0); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:135:9+30 + assume {:print "$track_return(15,2,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 + assume {:print "$at(132,5669,5670)"} true; +L6: + + // assert Not(Gt(Div($t2, 32), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !(($t2 div 32) > 32); + + // assert Not(Neq(Mod($t2, 32), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !!$IsEqual'num'(($t2 mod 32), 1); + + // assert Eq($t17, pack multi_ed25519::UnvalidatedPublicKey($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:9:9+49 + assume {:print "$at(133,286,335)"} true; + assert {:msg "assert_failed(133,286,335): post-condition does not hold"} + $IsEqual'$1_multi_ed25519_UnvalidatedPublicKey'($t17, $1_multi_ed25519_UnvalidatedPublicKey($t0)); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:9:9+49 + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:136:5+1 + assume {:print "$at(132,5669,5670)"} true; +L7: + + // assert Or(Gt(Div($t2, 32), 32), Neq(Mod($t2, 32), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:7:5+207 + assume {:print "$at(133,134,341)"} true; + assert {:msg "assert_failed(133,134,341): abort not covered by any of the `aborts_if` clauses"} + ((($t2 div 32) > 32) || !$IsEqual'num'(($t2 mod 32), 1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:7:5+207 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_validated_public_key_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:141:5+562 +procedure {:inline 1} $1_multi_ed25519_new_validated_public_key_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: bool; + var $t2: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: $1_multi_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, And(Eq(Mod(Len($t0), 32), 1), multi_ed25519::spec_public_key_validate_internal($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:20:9+136 + assume {:print "$at(133,767,903)"} true; + assume ($t3 == ($IsEqual'num'((LenVec($t0) mod 32), 1) && $1_multi_ed25519_spec_public_key_validate_internal($t0))); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:141:5+1 + assume {:print "$at(132,5890,5891)"} true; + assume {:print "$track_local(15,3,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+22 + assume {:print "$at(132,6155,6177)"} true; + call $t4 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,6155,6177)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,3):", $t5} $t5 == $t5; + goto L7; + } + + // $t6 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:38+31 + $t6 := 32; + assume $IsValid'u64'($t6); + + // $t7 := %($t4, $t6) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:36+1 + call $t7 := $Mod($t4, $t6); + if ($abort_flag) { + assume {:print "$at(132,6178,6179)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,3):", $t5} $t5 == $t5; + goto L7; + } + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:73+20 + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := ==($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:70+2 + $t9 := $IsEqual'u64'($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:42+5 + assume {:print "$at(132,6280,6285)"} true; +L1: + + // $t1 := opaque begin: multi_ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume {:print "$at(132,6251,6286)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume $IsValid'bool'($t1); + + // assume Implies(Gt(Div(Len($t0), 32), 32), Eq($t1, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume (((LenVec($t0) div 32) > 32) ==> $IsEqual'bool'($t1, false)); + + // assume Eq($t1, multi_ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume $IsEqual'bool'($t1, $1_multi_ed25519_spec_public_key_validate_internal($t0)); + + // $t1 := opaque end: multi_ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + assume {:print "$at(132,6155,6286)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 +L0: + + // $t10 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + assume {:print "$at(132,6155,6286)"} true; + $t10 := false; + assume $IsValid'bool'($t10); + + // $t1 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + $t1 := $t10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:146:17+5 + assume {:print "$at(132,6352,6357)"} true; +L4: + + // $t11 := pack multi_ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:26+56 + assume {:print "$at(132,6315,6371)"} true; + $t11 := $1_multi_ed25519_ValidatedPublicKey($t0); + + // $t2 := opaque begin: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($t11)); + + // $t2 := opaque end: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume {:print "$at(132,6402,6436)"} true; +L3: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume {:print "$at(132,6402,6436)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + assume {:print "$track_return(15,3,0):", $t2} $t2 == $t2; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 + assume {:print "$at(132,6451,6452)"} true; +L6: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 + assume {:print "$at(132,6451,6452)"} true; + $ret0 := $t2; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 + assume {:print "$at(132,6451,6452)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_validated_public_key_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:141:5+562 +procedure {:timeLimit 80} $1_multi_ed25519_new_validated_public_key_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: bool; + var $t2: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: $1_multi_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:141:5+1 + assume {:print "$at(132,5890,5891)"} true; + assume $IsValid'vec'u8''($t0); + + // assume Identical($t3, And(Eq(Mod(Len($t0), 32), 1), multi_ed25519::spec_public_key_validate_internal($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:20:9+136 + assume {:print "$at(133,767,903)"} true; + assume ($t3 == ($IsEqual'num'((LenVec($t0) mod 32), 1) && $1_multi_ed25519_spec_public_key_validate_internal($t0))); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:141:5+1 + assume {:print "$at(132,5890,5891)"} true; + assume {:print "$track_local(15,3,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+22 + assume {:print "$at(132,6155,6177)"} true; + call $t4 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,6155,6177)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,3):", $t5} $t5 == $t5; + goto L7; + } + + // $t6 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:38+31 + $t6 := 32; + assume $IsValid'u64'($t6); + + // $t7 := %($t4, $t6) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:36+1 + call $t7 := $Mod($t4, $t6); + if ($abort_flag) { + assume {:print "$at(132,6178,6179)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,3):", $t5} $t5 == $t5; + goto L7; + } + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:73+20 + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := ==($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:70+2 + $t9 := $IsEqual'u64'($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:42+5 + assume {:print "$at(132,6280,6285)"} true; +L1: + + // $t1 := opaque begin: multi_ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume {:print "$at(132,6251,6286)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume $IsValid'bool'($t1); + + // assume Implies(Gt(Div(Len($t0), 32), 32), Eq($t1, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume (((LenVec($t0) div 32) > 32) ==> $IsEqual'bool'($t1, false)); + + // assume Eq($t1, multi_ed25519::spec_public_key_validate_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + assume $IsEqual'bool'($t1, $1_multi_ed25519_spec_public_key_validate_internal($t0)); + + // $t1 := opaque end: multi_ed25519::public_key_validate_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:144:13+35 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + assume {:print "$at(132,6155,6286)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 +L0: + + // $t10 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + assume {:print "$at(132,6155,6286)"} true; + $t10 := false; + assume $IsValid'bool'($t10); + + // $t1 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 + $t1 := $t10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:13+131 +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:146:17+5 + assume {:print "$at(132,6352,6357)"} true; +L4: + + // $t11 := pack multi_ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:26+56 + assume {:print "$at(132,6315,6371)"} true; + $t11 := $1_multi_ed25519_ValidatedPublicKey($t0); + + // $t2 := opaque begin: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($t11)); + + // $t2 := opaque end: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:145:13+70 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume {:print "$at(132,6402,6436)"} true; +L3: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume {:print "$at(132,6402,6436)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:149:13+34 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:143:9+295 + assume {:print "$at(132,6151,6446)"} true; + assume {:print "$track_return(15,3,0):", $t2} $t2 == $t2; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 + assume {:print "$at(132,6451,6452)"} true; +L6: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:19:9+16 + assume {:print "$at(133,742,758)"} true; + assert {:msg "assert_failed(133,742,758): function does not abort under this condition"} + !false; + + // assert Implies($t3, Eq>($t2, option::spec_some(pack multi_ed25519::ValidatedPublicKey($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:22:9+72 + assume {:print "$at(133,912,984)"} true; + assert {:msg "assert_failed(133,912,984): post-condition does not hold"} + ($t3 ==> $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($1_multi_ed25519_ValidatedPublicKey($t0)))); + + // assert Implies(Not($t3), Eq>($t2, option::spec_none())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:23:9+68 + assume {:print "$at(133,993,1061)"} true; + assert {:msg "assert_failed(133,993,1061): post-condition does not hold"} + (!$t3 ==> $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t2, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'())); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:23:9+68 + $ret0 := $t2; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:151:5+1 + assume {:print "$at(132,6451,6452)"} true; +L7: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:18:5+423 + assume {:print "$at(133,644,1067)"} true; + assert {:msg "assert_failed(133,644,1067): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:18:5+423 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::public_key_bytes_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:302:5+185 +procedure {:timeLimit 80} $1_multi_ed25519_public_key_bytes_to_authentication_key$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $Mutation (Vec (int)); + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:302:5+1 + assume {:print "$at(132,13332,13333)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[pk_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:302:5+1 + assume {:print "$track_local(15,5,0):", $t0} $t0 == $t0; + + // $t1 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:303:27+13 + assume {:print "$at(132,13437,13450)"} true; + $t1 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:303:42+19 + $t2 := 1; + assume $IsValid'u8'($t2); + + // vector::push_back($t1, $t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:303:9+53 + call $t1 := $1_vector_push_back'u8'($t1, $t2); + if ($abort_flag) { + assume {:print "$at(132,13419,13472)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(15,5):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[LocalRoot($t0)@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:303:9+53 + $t0 := $Dereference($t1); + + // trace_local[pk_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:303:9+53 + assume {:print "$track_local(15,5,0):", $t0} $t0 == $t0; + + // $t4 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:304:29+8 + assume {:print "$at(132,13502,13510)"} true; + $t4 := $t0; + + // $t5 := hash::sha3_256($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:304:9+29 + call $t5 := $1_hash_sha3_256($t4); + if ($abort_flag) { + assume {:print "$at(132,13482,13511)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(15,5):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:304:9+29 + assume {:print "$track_return(15,5,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:305:5+1 + assume {:print "$at(132,13516,13517)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:75:9+16 + assume {:print "$at(133,2865,2881)"} true; + assert {:msg "assert_failed(133,2865,2881): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:75:9+16 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:305:5+1 + assume {:print "$at(132,13516,13517)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:73:5+225 + assume {:print "$at(133,2754,2979)"} true; + assert {:msg "assert_failed(133,2754,2979): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:73:5+225 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::public_key_into_unvalidated [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:182:5+161 +procedure {:timeLimit 80} $1_multi_ed25519_public_key_into_unvalidated$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: $1_multi_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_multi_ed25519_UnvalidatedPublicKey; + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:182:5+1 + assume {:print "$at(132,7765,7766)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:182:5+1 + assume {:print "$track_local(15,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:184:20+8 + assume {:print "$at(132,7902,7910)"} true; + $t1 := $t0->$bytes; + + // $t2 := pack multi_ed25519::UnvalidatedPublicKey($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:183:9+60 + assume {:print "$at(132,7860,7920)"} true; + $t2 := $1_multi_ed25519_UnvalidatedPublicKey($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:183:9+60 + assume {:print "$track_return(15,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:186:5+1 + assume {:print "$at(132,7925,7926)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:186:5+1 + assume {:print "$at(132,7925,7926)"} true; + $ret0 := $t2; + return; + +} + +// fun multi_ed25519::public_key_to_unvalidated [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:175:5+160 +procedure {:timeLimit 80} $1_multi_ed25519_public_key_to_unvalidated$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: $1_multi_ed25519_UnvalidatedPublicKey) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_multi_ed25519_UnvalidatedPublicKey; + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:175:5+1 + assume {:print "$at(132,7483,7484)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:175:5+1 + assume {:print "$track_local(15,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:177:20+8 + assume {:print "$at(132,7619,7627)"} true; + $t1 := $t0->$bytes; + + // $t2 := pack multi_ed25519::UnvalidatedPublicKey($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:176:9+60 + assume {:print "$at(132,7577,7637)"} true; + $t2 := $1_multi_ed25519_UnvalidatedPublicKey($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:176:9+60 + assume {:print "$track_return(15,7,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:179:5+1 + assume {:print "$at(132,7642,7643)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:179:5+1 + assume {:print "$at(132,7642,7643)"} true; + $ret0 := $t2; + return; + +} + +// fun multi_ed25519::public_key_validate [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:207:5+147 +procedure {:timeLimit 80} $1_multi_ed25519_public_key_validate$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t4: int; + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:207:5+1 + assume {:print "$at(132,8680,8681)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:207:5+1 + assume {:print "$track_local(15,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:208:45+8 + assume {:print "$at(132,8812,8820)"} true; + $t1 := $t0->$bytes; + + // assume Identical($t2, And(Eq(Mod(Len($t1), 32), 1), multi_ed25519::spec_public_key_validate_internal($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:20:9+136 + assume {:print "$at(133,767,903)"} true; + assume ($t2 == ($IsEqual'num'((LenVec($t1) mod 32), 1) && $1_multi_ed25519_spec_public_key_validate_internal($t1))); + + // $t3 := multi_ed25519::new_validated_public_key_from_bytes($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:208:9+45 + assume {:print "$at(132,8776,8821)"} true; + call $t3 := $1_multi_ed25519_new_validated_public_key_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(132,8776,8821)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,8):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:208:9+45 + assume {:print "$track_return(15,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:209:5+1 + assume {:print "$at(132,8826,8827)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:209:5+1 + assume {:print "$at(132,8826,8827)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:209:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:209:5+1 + assume {:print "$at(132,8826,8827)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::signature_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:199:5+84 +procedure {:timeLimit 80} $1_multi_ed25519_signature_to_bytes$verify(_$t0: $1_multi_ed25519_Signature) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:199:5+1 + assume {:print "$at(132,8326,8327)"} true; + assume $IsValid'$1_multi_ed25519_Signature'($t0); + + // trace_local[sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:199:5+1 + assume {:print "$track_local(15,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:200:9+9 + assume {:print "$at(132,8395,8404)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:200:9+9 + assume {:print "$track_return(15,12,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:201:5+1 + assume {:print "$at(132,8409,8410)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:201:5+1 + assume {:print "$at(132,8409,8410)"} true; + $ret0 := $t1; + return; + +} + +// fun multi_ed25519::signature_verify_strict [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+252 +procedure {:timeLimit 80} $1_multi_ed25519_signature_verify_strict$verify(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: Vec (int); + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume {:print "$at(132,9360,9361)"} true; + assume $IsValid'$1_multi_ed25519_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume $IsValid'vec'u8''($t2); + + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume {:print "$track_local(15,13,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume {:print "$track_local(15,13,1):", $t1} $t1 == $t1; + + // trace_local[message]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:219:5+1 + assume {:print "$track_local(15,13,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:42+20 + assume {:print "$at(132,9558,9578)"} true; + $t3 := $t0->$bytes; + + // $t4 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:64+16 + $t4 := $t1->$bytes; + + // $t5 := opaque begin: multi_ed25519::signature_verify_strict_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:9+81 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:9+81 + assume $IsValid'bool'($t5); + + // assume Eq($t5, multi_ed25519::spec_signature_verify_strict_internal($t3, $t4, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:9+81 + assume $IsEqual'bool'($t5, $1_multi_ed25519_spec_signature_verify_strict_internal($t3, $t4, $t2)); + + // $t5 := opaque end: multi_ed25519::signature_verify_strict_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:9+81 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:224:9+81 + assume {:print "$track_return(15,13,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:225:5+1 + assume {:print "$at(132,9611,9612)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:225:5+1 + assume {:print "$at(132,9611,9612)"} true; + $ret0 := $t5; + return; + +} + +// fun multi_ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+295 +procedure {:inline 1} $1_multi_ed25519_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: $1_account_RotationCapabilityOfferProofChallengeV2) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $t4: $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $t5: int; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_RotationCapabilityOfferProofChallengeV2': $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$at(132,9816,9817)"} true; + assume {:print "$track_local(15,15,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,2):", $t2} $t2 == $t2; + + // $t4 := ed25519::new_signed_message<#0>($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:23+33 + assume {:print "$at(132,9964,9997)"} true; + call $t4 := $1_ed25519_new_signed_message'$1_account_RotationCapabilityOfferProofChallengeV2'($t2); + if ($abort_flag) { + assume {:print "$at(132,9964,9997)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[encoded]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:13+7 + assume {:print "$track_local(15,15,3):", $t4} $t4 == $t4; + + // $t6 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:42+20 + assume {:print "$at(132,10041,10061)"} true; + $t6 := $t0->$bytes; + + // $t7 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:64+16 + $t7 := $t1->$bytes; + + // $t8 := bcs::to_bytes>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:82+23 + call $t8 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''($t4); + if ($abort_flag) { + assume {:print "$at(132,10081,10104)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := opaque begin: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsValid'bool'($t9); + + // assume Eq($t9, multi_ed25519::spec_signature_verify_strict_internal($t6, $t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsEqual'bool'($t9, $1_multi_ed25519_spec_signature_verify_strict_internal($t6, $t7, $t8)); + + // $t9 := opaque end: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume {:print "$track_return(15,15,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+295 +procedure {:inline 1} $1_multi_ed25519_signature_verify_strict_t'$1_account_RotationProofChallenge'(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: $1_account_RotationProofChallenge) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $t4: $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $t5: int; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_RotationProofChallenge; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge'': $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$at(132,9816,9817)"} true; + assume {:print "$track_local(15,15,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,2):", $t2} $t2 == $t2; + + // $t4 := ed25519::new_signed_message<#0>($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:23+33 + assume {:print "$at(132,9964,9997)"} true; + call $t4 := $1_ed25519_new_signed_message'$1_account_RotationProofChallenge'($t2); + if ($abort_flag) { + assume {:print "$at(132,9964,9997)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[encoded]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:13+7 + assume {:print "$track_local(15,15,3):", $t4} $t4 == $t4; + + // $t6 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:42+20 + assume {:print "$at(132,10041,10061)"} true; + $t6 := $t0->$bytes; + + // $t7 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:64+16 + $t7 := $t1->$bytes; + + // $t8 := bcs::to_bytes>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:82+23 + call $t8 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''($t4); + if ($abort_flag) { + assume {:print "$at(132,10081,10104)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := opaque begin: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsValid'bool'($t9); + + // assume Eq($t9, multi_ed25519::spec_signature_verify_strict_internal($t6, $t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsEqual'bool'($t9, $1_multi_ed25519_spec_signature_verify_strict_internal($t6, $t7, $t8)); + + // $t9 := opaque end: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume {:print "$track_return(15,15,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::signature_verify_strict_t [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+295 +procedure {:inline 1} $1_multi_ed25519_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: $1_account_SignerCapabilityOfferProofChallengeV2) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $t4: $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $t5: int; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_account_SignerCapabilityOfferProofChallengeV2': $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'': $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$at(132,9816,9817)"} true; + assume {:print "$track_local(15,15,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,2):", $t2} $t2 == $t2; + + // $t4 := ed25519::new_signed_message<#0>($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:23+33 + assume {:print "$at(132,9964,9997)"} true; + call $t4 := $1_ed25519_new_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'($t2); + if ($abort_flag) { + assume {:print "$at(132,9964,9997)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[encoded]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:13+7 + assume {:print "$track_local(15,15,3):", $t4} $t4 == $t4; + + // $t6 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:42+20 + assume {:print "$at(132,10041,10061)"} true; + $t6 := $t0->$bytes; + + // $t7 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:64+16 + $t7 := $t1->$bytes; + + // $t8 := bcs::to_bytes>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:82+23 + call $t8 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''($t4); + if ($abort_flag) { + assume {:print "$at(132,10081,10104)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := opaque begin: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsValid'bool'($t9); + + // assume Eq($t9, multi_ed25519::spec_signature_verify_strict_internal($t6, $t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsEqual'bool'($t9, $1_multi_ed25519_spec_signature_verify_strict_internal($t6, $t7, $t8)); + + // $t9 := opaque end: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume {:print "$track_return(15,15,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::signature_verify_strict_t<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+295 +procedure {:inline 1} $1_multi_ed25519_signature_verify_strict_t'#0'(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: #0) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'#0'; + var $t4: $1_ed25519_SignedMessage'#0'; + var $t5: int; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$at(132,9816,9817)"} true; + assume {:print "$track_local(15,15,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,2):", $t2} $t2 == $t2; + + // $t4 := ed25519::new_signed_message<#0>($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:23+33 + assume {:print "$at(132,9964,9997)"} true; + call $t4 := $1_ed25519_new_signed_message'#0'($t2); + if ($abort_flag) { + assume {:print "$at(132,9964,9997)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[encoded]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:13+7 + assume {:print "$track_local(15,15,3):", $t4} $t4 == $t4; + + // $t6 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:42+20 + assume {:print "$at(132,10041,10061)"} true; + $t6 := $t0->$bytes; + + // $t7 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:64+16 + $t7 := $t1->$bytes; + + // $t8 := bcs::to_bytes>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:82+23 + call $t8 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'#0''($t4); + if ($abort_flag) { + assume {:print "$at(132,10081,10104)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := opaque begin: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsValid'bool'($t9); + + // assume Eq($t9, multi_ed25519::spec_signature_verify_strict_internal($t6, $t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsEqual'bool'($t9, $1_multi_ed25519_spec_signature_verify_strict_internal($t6, $t7, $t8)); + + // $t9 := opaque end: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume {:print "$track_return(15,15,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::signature_verify_strict_t [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+295 +procedure {:timeLimit 80} $1_multi_ed25519_signature_verify_strict_t$verify(_$t0: $1_multi_ed25519_Signature, _$t1: $1_multi_ed25519_UnvalidatedPublicKey, _$t2: #0) returns ($ret0: bool) +{ + // declare local variables + var $t3: $1_ed25519_SignedMessage'#0'; + var $t4: $1_ed25519_SignedMessage'#0'; + var $t5: int; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: bool; + var $t0: $1_multi_ed25519_Signature; + var $t1: $1_multi_ed25519_UnvalidatedPublicKey; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_ed25519_SignedMessage'#0'': $1_ed25519_SignedMessage'#0'; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$at(132,9816,9817)"} true; + assume $IsValid'$1_multi_ed25519_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume $IsValid'#0'($t2); + + // trace_local[multisignature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,1):", $t1} $t1 == $t1; + + // trace_local[data]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:229:5+1 + assume {:print "$track_local(15,15,2):", $t2} $t2 == $t2; + + // $t4 := ed25519::new_signed_message<#0>($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:23+33 + assume {:print "$at(132,9964,9997)"} true; + call $t4 := $1_ed25519_new_signed_message'#0'($t2); + if ($abort_flag) { + assume {:print "$at(132,9964,9997)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[encoded]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:230:13+7 + assume {:print "$track_local(15,15,3):", $t4} $t4 == $t4; + + // $t6 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:42+20 + assume {:print "$at(132,10041,10061)"} true; + $t6 := $t0->$bytes; + + // $t7 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:64+16 + $t7 := $t1->$bytes; + + // $t8 := bcs::to_bytes>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:82+23 + call $t8 := $1_bcs_to_bytes'$1_ed25519_SignedMessage'#0''($t4); + if ($abort_flag) { + assume {:print "$at(132,10081,10104)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(15,15):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := opaque begin: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsValid'bool'($t9); + + // assume Eq($t9, multi_ed25519::spec_signature_verify_strict_internal($t6, $t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume $IsEqual'bool'($t9, $1_multi_ed25519_spec_signature_verify_strict_internal($t6, $t7, $t8)); + + // $t9 := opaque end: multi_ed25519::signature_verify_strict_internal($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:232:9+97 + assume {:print "$track_return(15,15,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:233:5+1 + assume {:print "$at(132,10110,10111)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::unvalidated_public_key_to_authentication_key [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:236:5+159 +procedure {:inline 1} $1_multi_ed25519_unvalidated_public_key_to_authentication_key(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:236:5+1 + assume {:print "$at(132,10207,10208)"} true; + assume {:print "$track_local(15,18,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:48+8 + assume {:print "$at(132,10351,10359)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, multi_ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume $IsEqual'vec'u8''($t2, $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume {:print "$track_return(15,18,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:238:5+1 + assume {:print "$at(132,10365,10366)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:238:5+1 + assume {:print "$at(132,10365,10366)"} true; + $ret0 := $t2; + return; + +} + +// fun multi_ed25519::unvalidated_public_key_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:236:5+159 +procedure {:timeLimit 80} $1_multi_ed25519_unvalidated_public_key_to_authentication_key$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:236:5+1 + assume {:print "$at(132,10207,10208)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:236:5+1 + assume {:print "$track_local(15,18,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:48+8 + assume {:print "$at(132,10351,10359)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, multi_ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume $IsEqual'vec'u8''($t2, $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:237:9+48 + assume {:print "$track_return(15,18,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:238:5+1 + assume {:print "$at(132,10365,10366)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:238:5+1 + assume {:print "$at(132,10365,10366)"} true; + $ret0 := $t2; + return; + +} + +// fun multi_ed25519::unvalidated_public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:189:5+106 +procedure {:timeLimit 80} $1_multi_ed25519_unvalidated_public_key_to_bytes$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:189:5+1 + assume {:print "$at(132,7995,7996)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:189:5+1 + assume {:print "$track_local(15,19,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:190:9+8 + assume {:print "$at(132,8087,8095)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:190:9+8 + assume {:print "$track_return(15,19,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:191:5+1 + assume {:print "$at(132,8100,8101)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:191:5+1 + assume {:print "$at(132,8100,8101)"} true; + $ret0 := $t1; + return; + +} + +// fun multi_ed25519::validated_public_key_to_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:259:5+155 +procedure {:timeLimit 80} $1_multi_ed25519_validated_public_key_to_authentication_key$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:259:5+1 + assume {:print "$at(132,11396,11397)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:259:5+1 + assume {:print "$track_local(15,22,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:48+8 + assume {:print "$at(132,11536,11544)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:9+48 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, multi_ed25519::spec_public_key_bytes_to_authentication_key($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:9+48 + assume $IsEqual'vec'u8''($t2, $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t1)); + + // $t2 := opaque end: multi_ed25519::public_key_bytes_to_authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:260:9+48 + assume {:print "$track_return(15,22,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:261:5+1 + assume {:print "$at(132,11550,11551)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:261:5+1 + assume {:print "$at(132,11550,11551)"} true; + $ret0 := $t2; + return; + +} + +// fun multi_ed25519::validated_public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:194:5+102 +procedure {:timeLimit 80} $1_multi_ed25519_validated_public_key_to_bytes$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:194:5+1 + assume {:print "$at(132,8167,8168)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:194:5+1 + assume {:print "$track_local(15,23,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:195:9+8 + assume {:print "$at(132,8255,8263)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:195:9+8 + assume {:print "$track_return(15,23,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:196:5+1 + assume {:print "$at(132,8268,8269)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:196:5+1 + assume {:print "$at(132,8268,8269)"} true; + $ret0 := $t1; + return; + +} + +// fun multi_ed25519::check_and_get_threshold [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:282:5+733 +procedure {:inline 1} $1_multi_ed25519_check_and_get_threshold(_$t0: Vec (int)) returns ($ret0: $1_option_Option'u8') +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $1_option_Option'u8'; + var $t13: $1_option_Option'u8'; + 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: bool; + var $t23: bool; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: $1_option_Option'u8'; + var $t28: int; + var $t29: bool; + var $t30: bool; + var $t31: int; + var $t32: $1_option_Option'u8'; + var $t33: $1_option_Option'u8'; + var $t0: Vec (int); + var $temp_0'$1_option_Option'u8'': $1_option_Option'u8'; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:282:5+1 + assume {:print "$at(132,12503,12504)"} true; + assume {:print "$track_local(15,0,0):", $t0} $t0 == $t0; + + // $t8 := vector::length($t0) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:283:19+22 + assume {:print "$at(132,12589,12611)"} true; + call $t8 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,12589,12611)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[len]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:283:13+3 + assume {:print "$track_local(15,0,4):", $t8} $t8 == $t8; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:20+1 + assume {:print "$at(132,12632,12633)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:17+2 + $t11 := $IsEqual'u64'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:9+63 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume {:print "$at(132,12656,12674)"} true; +L1: + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume {:print "$at(132,12656,12674)"} true; + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume ($IsValid'$1_option_Option'u8''($t12) && (LenVec($t12->$vec) <= 1)); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume $IsEqual'$1_option_Option'u8''($t12, $1_option_spec_none'u8'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + assume {:print "$track_return(15,0,0):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + $t13 := $t12; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + goto L15; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:38+3 + assume {:print "$at(132,12724,12727)"} true; +L0: + + // $t14 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:44+31 + assume {:print "$at(132,12730,12761)"} true; + $t14 := 32; + assume $IsValid'u64'($t14); + + // $t15 := %($t8, $t14) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:42+1 + call $t15 := $Mod($t8, $t14); + if ($abort_flag) { + assume {:print "$at(132,12728,12729)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[threshold_num_of_bytes]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:13+22 + assume {:print "$track_local(15,0,7):", $t15} $t15 == $t15; + + // $t16 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:33+31 + assume {:print "$at(132,12795,12826)"} true; + $t16 := 32; + assume $IsValid'u64'($t16); + + // $t17 := /($t8, $t16) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:31+1 + call $t17 := $Div($t8, $t16); + if ($abort_flag) { + assume {:print "$at(132,12793,12794)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[num_of_keys]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:13+11 + assume {:print "$track_local(15,0,5):", $t17} $t17 == $t17; + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:60+1 + assume {:print "$at(132,12887,12888)"} true; + $t18 := 1; + assume $IsValid'u64'($t18); + + // $t19 := -($t8, $t18) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:58+1 + call $t19 := $Sub($t8, $t18); + if ($abort_flag) { + assume {:print "$at(132,12885,12886)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // $t20 := vector::borrow($t0, $t19) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:31+31 + call $t20 := $1_vector_borrow'u8'($t0, $t19); + if ($abort_flag) { + assume {:print "$at(132,12858,12889)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[threshold_byte]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:13+14 + assume {:print "$track_local(15,0,6):", $t20} $t20 == $t20; + + // $t21 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:28+1 + assume {:print "$at(132,12919,12920)"} true; + $t21 := 0; + assume $IsValid'u64'($t21); + + // $t22 := ==($t17, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:25+2 + $t22 := $IsEqual'u64'($t17, $t21); + + // if ($t22) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + if ($t22) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 +L3: + + // $t23 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + assume {:print "$at(132,12904,12963)"} true; + $t23 := true; + assume $IsValid'bool'($t23); + + // $t1 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + $t1 := $t23; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:33+11 +L2: + + // $t24 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:47+25 + assume {:print "$at(132,12938,12963)"} true; + $t24 := 32; + assume $IsValid'u64'($t24); + + // $t1 := >($t17, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:45+1 + call $t1 := $Gt($t17, $t24); + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 +L4: + + // if ($t1) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + assume {:print "$at(132,12904,12994)"} true; + if ($t1) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 +L6: + + // $t25 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + assume {:print "$at(132,12904,12994)"} true; + $t25 := true; + assume $IsValid'bool'($t25); + + // $t2 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + $t2 := $t25; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:76+22 +L5: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:102+1 + assume {:print "$at(132,12993,12994)"} true; + $t26 := 1; + assume $IsValid'u64'($t26); + + // $t2 := !=($t15, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:99+2 + $t2 := !$IsEqual'u64'($t15, $t26); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 +L7: + + // if ($t2) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:9+330 + assume {:print "$at(132,12900,13230)"} true; + if ($t2) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume {:print "$at(132,13017,13035)"} true; +L9: + + // $t27 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume {:print "$at(132,13017,13035)"} true; + + // assume And(WellFormed($t27), Le(Len(select option::Option.vec($t27)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume ($IsValid'$1_option_Option'u8''($t27) && (LenVec($t27->$vec) <= 1)); + + // assume Eq>($t27, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume $IsEqual'$1_option_Option'u8''($t27, $1_option_spec_none'u8'()); + + // $t27 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + assume {:print "$track_return(15,0,0):", $t27} $t27 == $t27; + + // $t13 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + $t13 := $t27; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+14 + assume {:print "$at(132,13055,13069)"} true; +L8: + + // $t28 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:38+1 + assume {:print "$at(132,13073,13074)"} true; + $t28 := 0; + assume $IsValid'u8'($t28); + + // $t29 := ==($t20, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:35+2 + $t29 := $IsEqual'u8'($t20, $t28); + + // if ($t29) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + if ($t29) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 +L11: + + // $t30 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + assume {:print "$at(132,13055,13114)"} true; + $t30 := true; + assume $IsValid'bool'($t30); + + // $t3 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + $t3 := $t30; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:43+14 +L10: + + // $t31 := (u8)($t17) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:60+19 + assume {:print "$at(132,13095,13114)"} true; + call $t31 := $CastU8($t17); + if ($abort_flag) { + assume {:print "$at(132,13095,13114)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // $t3 := >($t20, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:58+1 + call $t3 := $Gt($t20, $t31); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 +L12: + + // if ($t3) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:16+179 + assume {:print "$at(132,13051,13230)"} true; + if ($t3) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume {:print "$at(132,13137,13155)"} true; +L14: + + // $t32 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume {:print "$at(132,13137,13155)"} true; + + // assume And(WellFormed($t32), Le(Len(select option::Option.vec($t32)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume ($IsValid'$1_option_Option'u8''($t32) && (LenVec($t32->$vec) <= 1)); + + // assume Eq>($t32, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume $IsEqual'$1_option_Option'u8''($t32, $1_option_spec_none'u8'()); + + // $t32 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + + // trace_return[0]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + assume {:print "$track_return(15,0,0):", $t32} $t32 == $t32; + + // $t13 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + $t13 := $t32; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + goto L15; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:33+14 + assume {:print "$at(132,13205,13219)"} true; +L13: + + // $t33 := opaque begin: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume {:print "$at(132,13192,13220)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume ($IsValid'$1_option_Option'u8''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_some($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume $IsEqual'$1_option_Option'u8''($t33, $1_option_spec_some'u8'($t20)); + + // $t33 := opaque end: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:13+35 + assume {:print "$track_return(15,0,0):", $t33} $t33 == $t33; + + // $t13 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:13+35 + $t13 := $t33; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 + assume {:print "$at(132,13235,13236)"} true; +L15: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 + assume {:print "$at(132,13235,13236)"} true; + $ret0 := $t13; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 +L16: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 + assume {:print "$at(132,13235,13236)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::check_and_get_threshold [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:282:5+733 +procedure {:timeLimit 80} $1_multi_ed25519_check_and_get_threshold$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'u8') +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $1_option_Option'u8'; + var $t13: $1_option_Option'u8'; + 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: bool; + var $t23: bool; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: $1_option_Option'u8'; + var $t28: int; + var $t29: bool; + var $t30: bool; + var $t31: int; + var $t32: $1_option_Option'u8'; + var $t33: $1_option_Option'u8'; + var $t0: Vec (int); + var $temp_0'$1_option_Option'u8'': $1_option_Option'u8'; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:282:5+1 + assume {:print "$at(132,12503,12504)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:282:5+1 + assume {:print "$track_local(15,0,0):", $t0} $t0 == $t0; + + // $t8 := vector::length($t0) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:283:19+22 + assume {:print "$at(132,12589,12611)"} true; + call $t8 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(132,12589,12611)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[len]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:283:13+3 + assume {:print "$track_local(15,0,4):", $t8} $t8 == $t8; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:20+1 + assume {:print "$at(132,12632,12633)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:17+2 + $t11 := $IsEqual'u64'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:284:9+63 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume {:print "$at(132,12656,12674)"} true; +L1: + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume {:print "$at(132,12656,12674)"} true; + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume ($IsValid'$1_option_Option'u8''($t12) && (LenVec($t12->$vec) <= 1)); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + assume $IsEqual'$1_option_Option'u8''($t12, $1_option_spec_none'u8'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:20+18 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + assume {:print "$track_return(15,0,0):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + $t13 := $t12; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:285:13+25 + goto L15; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:38+3 + assume {:print "$at(132,12724,12727)"} true; +L0: + + // $t14 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:44+31 + assume {:print "$at(132,12730,12761)"} true; + $t14 := 32; + assume $IsValid'u64'($t14); + + // $t15 := %($t8, $t14) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:42+1 + call $t15 := $Mod($t8, $t14); + if ($abort_flag) { + assume {:print "$at(132,12728,12729)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[threshold_num_of_bytes]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:288:13+22 + assume {:print "$track_local(15,0,7):", $t15} $t15 == $t15; + + // $t16 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:33+31 + assume {:print "$at(132,12795,12826)"} true; + $t16 := 32; + assume $IsValid'u64'($t16); + + // $t17 := /($t8, $t16) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:31+1 + call $t17 := $Div($t8, $t16); + if ($abort_flag) { + assume {:print "$at(132,12793,12794)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[num_of_keys]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:289:13+11 + assume {:print "$track_local(15,0,5):", $t17} $t17 == $t17; + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:60+1 + assume {:print "$at(132,12887,12888)"} true; + $t18 := 1; + assume $IsValid'u64'($t18); + + // $t19 := -($t8, $t18) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:58+1 + call $t19 := $Sub($t8, $t18); + if ($abort_flag) { + assume {:print "$at(132,12885,12886)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // $t20 := vector::borrow($t0, $t19) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:31+31 + call $t20 := $1_vector_borrow'u8'($t0, $t19); + if ($abort_flag) { + assume {:print "$at(132,12858,12889)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[threshold_byte]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:290:13+14 + assume {:print "$track_local(15,0,6):", $t20} $t20 == $t20; + + // $t21 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:28+1 + assume {:print "$at(132,12919,12920)"} true; + $t21 := 0; + assume $IsValid'u64'($t21); + + // $t22 := ==($t17, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:25+2 + $t22 := $IsEqual'u64'($t17, $t21); + + // if ($t22) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + if ($t22) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 +L3: + + // $t23 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + assume {:print "$at(132,12904,12963)"} true; + $t23 := true; + assume $IsValid'bool'($t23); + + // $t1 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + $t1 := $t23; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:33+11 +L2: + + // $t24 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:47+25 + assume {:print "$at(132,12938,12963)"} true; + $t24 := 32; + assume $IsValid'u64'($t24); + + // $t1 := >($t17, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:45+1 + call $t1 := $Gt($t17, $t24); + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+59 +L4: + + // if ($t1) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + assume {:print "$at(132,12904,12994)"} true; + if ($t1) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 +L6: + + // $t25 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + assume {:print "$at(132,12904,12994)"} true; + $t25 := true; + assume $IsValid'bool'($t25); + + // $t2 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + $t2 := $t25; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:76+22 +L5: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:102+1 + assume {:print "$at(132,12993,12994)"} true; + $t26 := 1; + assume $IsValid'u64'($t26); + + // $t2 := !=($t15, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:99+2 + $t2 := !$IsEqual'u64'($t15, $t26); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:13+90 +L7: + + // if ($t2) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:292:9+330 + assume {:print "$at(132,12900,13230)"} true; + if ($t2) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume {:print "$at(132,13017,13035)"} true; +L9: + + // $t27 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume {:print "$at(132,13017,13035)"} true; + + // assume And(WellFormed($t27), Le(Len(select option::Option.vec($t27)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume ($IsValid'$1_option_Option'u8''($t27) && (LenVec($t27->$vec) <= 1)); + + // assume Eq>($t27, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + assume $IsEqual'$1_option_Option'u8''($t27, $1_option_spec_none'u8'()); + + // $t27 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:20+18 + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + assume {:print "$track_return(15,0,0):", $t27} $t27 == $t27; + + // $t13 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + $t13 := $t27; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:293:13+25 + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+14 + assume {:print "$at(132,13055,13069)"} true; +L8: + + // $t28 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:38+1 + assume {:print "$at(132,13073,13074)"} true; + $t28 := 0; + assume $IsValid'u8'($t28); + + // $t29 := ==($t20, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:35+2 + $t29 := $IsEqual'u8'($t20, $t28); + + // if ($t29) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + if ($t29) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 +L11: + + // $t30 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + assume {:print "$at(132,13055,13114)"} true; + $t30 := true; + assume $IsValid'bool'($t30); + + // $t3 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + $t3 := $t30; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:43+14 +L10: + + // $t31 := (u8)($t17) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:60+19 + assume {:print "$at(132,13095,13114)"} true; + call $t31 := $CastU8($t17); + if ($abort_flag) { + assume {:print "$at(132,13095,13114)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(15,0):", $t9} $t9 == $t9; + goto L16; + } + + // $t3 := >($t20, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:58+1 + call $t3 := $Gt($t20, $t31); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:20+59 +L12: + + // if ($t3) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:294:16+179 + assume {:print "$at(132,13051,13230)"} true; + if ($t3) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume {:print "$at(132,13137,13155)"} true; +L14: + + // $t32 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume {:print "$at(132,13137,13155)"} true; + + // assume And(WellFormed($t32), Le(Len(select option::Option.vec($t32)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume ($IsValid'$1_option_Option'u8''($t32) && (LenVec($t32->$vec) <= 1)); + + // assume Eq>($t32, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + assume $IsEqual'$1_option_Option'u8''($t32, $1_option_spec_none'u8'()); + + // $t32 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:20+18 + + // trace_return[0]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + assume {:print "$track_return(15,0,0):", $t32} $t32 == $t32; + + // $t13 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + $t13 := $t32; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:295:13+25 + goto L15; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:33+14 + assume {:print "$at(132,13205,13219)"} true; +L13: + + // $t33 := opaque begin: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume {:print "$at(132,13192,13220)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume ($IsValid'$1_option_Option'u8''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_some($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + assume $IsEqual'$1_option_Option'u8''($t33, $1_option_spec_some'u8'($t20)); + + // $t33 := opaque end: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:20+28 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:13+35 + assume {:print "$track_return(15,0,0):", $t33} $t33 == $t33; + + // $t13 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:297:13+35 + $t13 := $t33; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 + assume {:print "$at(132,13235,13236)"} true; +L15: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:42:9+16 + assume {:print "$at(133,1803,1819)"} true; + assert {:msg "assert_failed(133,1803,1819): function does not abort under this condition"} + !false; + + // assert Eq>($t13, multi_ed25519::spec_check_and_get_threshold($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:43:9+54 + assume {:print "$at(133,1828,1882)"} true; + assert {:msg "assert_failed(133,1828,1882): post-condition does not hold"} + $IsEqual'$1_option_Option'u8''($t13, $1_multi_ed25519_spec_check_and_get_threshold($t0)); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:43:9+54 + $ret0 := $t13; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:299:5+1 + assume {:print "$at(132,13235,13236)"} true; +L16: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:41:5+155 + assume {:print "$at(133,1733,1888)"} true; + assert {:msg "assert_failed(133,1733,1888): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:41:5+155 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_validated_public_key_from_bytes_v2 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+460 +procedure {:inline 1} $1_multi_ed25519_new_validated_public_key_from_bytes_v2(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: bool; + var $t10: $1_multi_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, multi_ed25519::spec_public_key_validate_v2_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:27:9+55 + assume {:print "$at(133,1174,1229)"} true; + assume ($t2 == $1_multi_ed25519_spec_public_key_validate_v2_internal($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+1 + assume {:print "$at(132,6571,6572)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t3 := features::multi_ed25519_pk_validate_v2_enabled() on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:14+48 + assume {:print "$at(132,6683,6731)"} true; + call $t3 := $1_features_multi_ed25519_pk_validate_v2_enabled(); + if ($abort_flag) { + assume {:print "$at(132,6683,6731)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + goto L6; + } + + // $t5 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:13+1 + call $t5 := $Not($t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:9+134 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:40+26 + assume {:print "$at(132,6774,6800)"} true; +L1: + + // $t6 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:40+26 + assume {:print "$at(132,6774,6800)"} true; + $t6 := 4; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_state($t6) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:18+50 + call $t7 := $1_error_invalid_state($t6); + if ($abort_flag) { + assume {:print "$at(132,6752,6802)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + goto L6; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + assume {:print "$at(132,6747,6802)"} true; + assume {:print "$track_abort(15,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + $t4 := $t7; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:45+5 + assume {:print "$at(132,6859,6864)"} true; +L0: + + // $t8 := opaque begin: multi_ed25519::public_key_validate_v2_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + havoc $t9; + + // if ($t9) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + if ($t9) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 +L8: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + goto L6; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 +L7: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + assume $IsValid'bool'($t8); + + // assume Eq($t8, multi_ed25519::spec_public_key_validate_v2_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume $IsEqual'bool'($t8, $1_multi_ed25519_spec_public_key_validate_v2_internal($t0)); + + // $t8 := opaque end: multi_ed25519::public_key_validate_v2_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + + // if ($t8) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + if ($t8) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:161:17+5 + assume {:print "$at(132,6931,6936)"} true; +L3: + + // $t10 := pack multi_ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:26+56 + assume {:print "$at(132,6894,6950)"} true; + $t10 := $1_multi_ed25519_ValidatedPublicKey($t0); + + // $t1 := opaque begin: option::some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($t10)); + + // $t1 := opaque end: option::some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume {:print "$at(132,6981,7015)"} true; +L2: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume {:print "$at(132,6981,7015)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; +L4: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; + assume {:print "$track_return(15,4,0):", $t1} $t1 == $t1; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; +L5: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; + $ret0 := $t1; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 +L6: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::new_validated_public_key_from_bytes_v2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+460 +procedure {:timeLimit 80} $1_multi_ed25519_new_validated_public_key_from_bytes_v2$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: bool; + var $t10: $1_multi_ed25519_ValidatedPublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+1 + assume {:print "$at(132,6571,6572)"} true; + assume $IsValid'vec'u8''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume Identical($t2, multi_ed25519::spec_public_key_validate_v2_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:27:9+55 + assume {:print "$at(133,1174,1229)"} true; + assume ($t2 == $1_multi_ed25519_spec_public_key_validate_v2_internal($t0)); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:154:5+1 + assume {:print "$at(132,6571,6572)"} true; + assume {:print "$track_local(15,4,0):", $t0} $t0 == $t0; + + // $t3 := features::multi_ed25519_pk_validate_v2_enabled() on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:14+48 + assume {:print "$at(132,6683,6731)"} true; + call $t3 := $1_features_multi_ed25519_pk_validate_v2_enabled(); + if ($abort_flag) { + assume {:print "$at(132,6683,6731)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + goto L6; + } + + // $t5 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:13+1 + call $t5 := $Not($t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:155:9+134 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:40+26 + assume {:print "$at(132,6774,6800)"} true; +L1: + + // $t6 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:40+26 + assume {:print "$at(132,6774,6800)"} true; + $t6 := 4; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_state($t6) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:18+50 + call $t7 := $1_error_invalid_state($t6); + if ($abort_flag) { + assume {:print "$at(132,6752,6802)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + goto L6; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + assume {:print "$at(132,6747,6802)"} true; + assume {:print "$track_abort(15,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + $t4 := $t7; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:156:13+55 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:45+5 + assume {:print "$at(132,6859,6864)"} true; +L0: + + // $t8 := opaque begin: multi_ed25519::public_key_validate_v2_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + havoc $t9; + + // if ($t9) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + if ($t9) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 +L8: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + assume {:print "$track_abort(15,4):", $t4} $t4 == $t4; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + goto L6; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 +L7: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume {:print "$at(132,6827,6865)"} true; + assume $IsValid'bool'($t8); + + // assume Eq($t8, multi_ed25519::spec_public_key_validate_v2_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + assume $IsEqual'bool'($t8, $1_multi_ed25519_spec_public_key_validate_v2_internal($t0)); + + // $t8 := opaque end: multi_ed25519::public_key_validate_v2_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:13+38 + + // if ($t8) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + if ($t8) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:161:17+5 + assume {:print "$at(132,6931,6936)"} true; +L3: + + // $t10 := pack multi_ed25519::ValidatedPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:26+56 + assume {:print "$at(132,6894,6950)"} true; + $t10 := $1_multi_ed25519_ValidatedPublicKey($t0); + + // $t1 := opaque begin: option::some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($t10)); + + // $t1 := opaque end: option::some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:160:13+70 + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume {:print "$at(132,6981,7015)"} true; +L2: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume {:print "$at(132,6981,7015)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume ($IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + assume $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:164:13+34 + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; +L4: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:159:9+202 + assume {:print "$at(132,6823,7025)"} true; + assume {:print "$track_return(15,4,0):", $t1} $t1 == $t1; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; +L5: + + // assert Implies($t2, Eq>($t1, option::spec_some(pack multi_ed25519::ValidatedPublicKey($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:28:9+72 + assume {:print "$at(133,1238,1310)"} true; + assert {:msg "assert_failed(133,1238,1310): post-condition does not hold"} + ($t2 ==> $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_some'$1_multi_ed25519_ValidatedPublicKey'($1_multi_ed25519_ValidatedPublicKey($t0)))); + + // assert Implies(Not($t2), Eq>($t1, option::spec_none())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:29:9+68 + assume {:print "$at(133,1319,1387)"} true; + assert {:msg "assert_failed(133,1319,1387): post-condition does not hold"} + (!$t2 ==> $IsEqual'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($t1, $1_option_spec_none'$1_multi_ed25519_ValidatedPublicKey'())); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:29:9+68 + $ret0 := $t1; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; +L6: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:166:5+1 + assume {:print "$at(132,7030,7031)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::public_key_validate_v2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:213:5+153 +procedure {:timeLimit 80} $1_multi_ed25519_public_key_validate_v2$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey') +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + var $t4: int; + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey'': $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:213:5+1 + assume {:print "$at(132,8986,8987)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:213:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:213:5+1 + assume {:print "$track_local(15,10,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:214:48+8 + assume {:print "$at(132,9124,9132)"} true; + $t1 := $t0->$bytes; + + // assume Identical($t2, multi_ed25519::spec_public_key_validate_v2_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:27:9+55 + assume {:print "$at(133,1174,1229)"} true; + assume ($t2 == $1_multi_ed25519_spec_public_key_validate_v2_internal($t1)); + + // $t3 := multi_ed25519::new_validated_public_key_from_bytes_v2($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:214:9+48 + assume {:print "$at(132,9085,9133)"} true; + call $t3 := $1_multi_ed25519_new_validated_public_key_from_bytes_v2($t1); + if ($abort_flag) { + assume {:print "$at(132,9085,9133)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,10):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:214:9+48 + assume {:print "$track_return(15,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:215:5+1 + assume {:print "$at(132,9138,9139)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:215:5+1 + assume {:print "$at(132,9138,9139)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:215:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:215:5+1 + assume {:print "$at(132,9138,9139)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::unvalidated_public_key_num_sub_pks [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:246:5+186 +procedure {:timeLimit 80} $1_multi_ed25519_unvalidated_public_key_num_sub_pks$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:246:5+1 + assume {:print "$at(132,10803,10804)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // assume Identical($t1, select multi_ed25519::UnvalidatedPublicKey.bytes($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:54:9+21 + assume {:print "$at(133,2203,2224)"} true; + assume ($t1 == $t0->$bytes); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:246:5+1 + assume {:print "$at(132,10803,10804)"} true; + assume {:print "$track_local(15,16,0):", $t0} $t0 == $t0; + + // $t2 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:247:34+9 + assume {:print "$at(132,10915,10924)"} true; + $t2 := $t0->$bytes; + + // $t3 := vector::length($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:247:19+25 + call $t3 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(132,10900,10925)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,16):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:249:17+31 + assume {:print "$at(132,10944,10975)"} true; + $t5 := 32; + assume $IsValid'u64'($t5); + + // $t6 := /($t3, $t5) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:249:15+1 + call $t6 := $Div($t3, $t5); + if ($abort_flag) { + assume {:print "$at(132,10942,10943)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,16):", $t4} $t4 == $t4; + goto L2; + } + + // $t7 := (u8)($t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:249:9+47 + call $t7 := $CastU8($t6); + if ($abort_flag) { + assume {:print "$at(132,10936,10983)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,16):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:249:9+47 + assume {:print "$track_return(15,16,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:250:5+1 + assume {:print "$at(132,10988,10989)"} true; +L1: + + // assert Not(Gt(Div(Len($t1), 32), 255)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:49:9+64 + assume {:print "$at(133,1974,2038)"} true; + assert {:msg "assert_failed(133,1974,2038): function does not abort under this condition"} + !((LenVec($t1) div 32) > 255); + + // assert Eq($t7, Div(Len($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:50:9+63 + assume {:print "$at(133,2047,2110)"} true; + assert {:msg "assert_failed(133,2047,2110): post-condition does not hold"} + $IsEqual'u8'($t7, (LenVec($t1) div 32)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:50:9+63 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:250:5+1 + assume {:print "$at(132,10988,10989)"} true; +L2: + + // assert Gt(Div(Len($t1), 32), 255) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:53:5+136 + assume {:print "$at(133,2122,2258)"} true; + assert {:msg "assert_failed(133,2122,2258): abort not covered by any of the `aborts_if` clauses"} + ((LenVec($t1) div 32) > 255); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:53:5+136 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::unvalidated_public_key_threshold [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:254:5+132 +procedure {:timeLimit 80} $1_multi_ed25519_unvalidated_public_key_threshold$verify(_$t0: $1_multi_ed25519_UnvalidatedPublicKey) returns ($ret0: $1_option_Option'u8') +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_option_Option'u8'; + var $t3: int; + var $t0: $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_option_Option'u8'': $1_option_Option'u8'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:254:5+1 + assume {:print "$at(132,11168,11169)"} true; + assume $IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:254:5+1 + assume {:print "$track_local(15,17,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:255:33+8 + assume {:print "$at(132,11285,11293)"} true; + $t1 := $t0->$bytes; + + // $t2 := multi_ed25519::check_and_get_threshold($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:255:9+33 + call $t2 := $1_multi_ed25519_check_and_get_threshold($t1); + if ($abort_flag) { + assume {:print "$at(132,11261,11294)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(15,17):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:255:9+33 + assume {:print "$track_return(15,17,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:256:5+1 + assume {:print "$at(132,11299,11300)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:64:9+16 + assume {:print "$at(133,2489,2505)"} true; + assert {:msg "assert_failed(133,2489,2505): function does not abort under this condition"} + !false; + + // assert Eq>($t2, multi_ed25519::spec_check_and_get_threshold(select multi_ed25519::UnvalidatedPublicKey.bytes($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:65:9+57 + assume {:print "$at(133,2514,2571)"} true; + assert {:msg "assert_failed(133,2514,2571): post-condition does not hold"} + $IsEqual'$1_option_Option'u8''($t2, $1_multi_ed25519_spec_check_and_get_threshold($t0->$bytes)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:65:9+57 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:256:5+1 + assume {:print "$at(132,11299,11300)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:63:5+175 + assume {:print "$at(133,2402,2577)"} true; + assert {:msg "assert_failed(133,2402,2577): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:63:5+175 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::validated_public_key_num_sub_pks [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:265:5+182 +procedure {:timeLimit 80} $1_multi_ed25519_validated_public_key_num_sub_pks$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:265:5+1 + assume {:print "$at(132,11751,11752)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // assume Identical($t1, select multi_ed25519::ValidatedPublicKey.bytes($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:59:9+21 + assume {:print "$at(133,2341,2362)"} true; + assume ($t1 == $t0->$bytes); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:265:5+1 + assume {:print "$at(132,11751,11752)"} true; + assume {:print "$track_local(15,20,0):", $t0} $t0 == $t0; + + // $t2 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:266:34+9 + assume {:print "$at(132,11859,11868)"} true; + $t2 := $t0->$bytes; + + // $t3 := vector::length($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:266:19+25 + call $t3 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(132,11844,11869)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,20):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:268:17+31 + assume {:print "$at(132,11888,11919)"} true; + $t5 := 32; + assume $IsValid'u64'($t5); + + // $t6 := /($t3, $t5) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:268:15+1 + call $t6 := $Div($t3, $t5); + if ($abort_flag) { + assume {:print "$at(132,11886,11887)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,20):", $t4} $t4 == $t4; + goto L2; + } + + // $t7 := (u8)($t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:268:9+47 + call $t7 := $CastU8($t6); + if ($abort_flag) { + assume {:print "$at(132,11880,11927)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,20):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:268:9+47 + assume {:print "$track_return(15,20,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:269:5+1 + assume {:print "$at(132,11932,11933)"} true; +L1: + + // assert Not(Gt(Div(Len($t1), 32), 255)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:49:9+64 + assume {:print "$at(133,1974,2038)"} true; + assert {:msg "assert_failed(133,1974,2038): function does not abort under this condition"} + !((LenVec($t1) div 32) > 255); + + // assert Eq($t7, Div(Len($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:50:9+63 + assume {:print "$at(133,2047,2110)"} true; + assert {:msg "assert_failed(133,2047,2110): post-condition does not hold"} + $IsEqual'u8'($t7, (LenVec($t1) div 32)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:50:9+63 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:269:5+1 + assume {:print "$at(132,11932,11933)"} true; +L2: + + // assert Gt(Div(Len($t1), 32), 255) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:58:5+132 + assume {:print "$at(133,2264,2396)"} true; + assert {:msg "assert_failed(133,2264,2396): abort not covered by any of the `aborts_if` clauses"} + ((LenVec($t1) div 32) > 255); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:58:5+132 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun multi_ed25519::validated_public_key_threshold [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:272:5+213 +procedure {:timeLimit 80} $1_multi_ed25519_validated_public_key_threshold$verify(_$t0: $1_multi_ed25519_ValidatedPublicKey) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: Vec (int); + var $t6: int; + var $t7: int; + var $t8: int; + var $t0: $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'$1_multi_ed25519_ValidatedPublicKey': $1_multi_ed25519_ValidatedPublicKey; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:272:5+1 + assume {:print "$at(132,12044,12045)"} true; + assume $IsValid'$1_multi_ed25519_ValidatedPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:272:5+1 + assume {:print "$track_local(15,21,0):", $t0} $t0 == $t0; + + // $t2 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:273:34+9 + assume {:print "$at(132,12150,12159)"} true; + $t2 := $t0->$bytes; + + // $t3 := vector::length($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:273:19+25 + call $t3 := $1_vector_length'u8'($t2); + if ($abort_flag) { + assume {:print "$at(132,12135,12160)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,21):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[len]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:273:13+3 + assume {:print "$track_local(15,21,1):", $t3} $t3 == $t3; + + // $t5 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:274:46+9 + assume {:print "$at(132,12207,12216)"} true; + $t5 := $t0->$bytes; + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:274:63+1 + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := -($t3, $t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:274:61+1 + call $t7 := $Sub($t3, $t6); + if ($abort_flag) { + assume {:print "$at(132,12222,12223)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,21):", $t4} $t4 == $t4; + goto L2; + } + + // $t8 := vector::borrow($t5, $t7) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:274:31+34 + call $t8 := $1_vector_borrow'u8'($t5, $t7); + if ($abort_flag) { + assume {:print "$at(132,12192,12226)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(15,21):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:276:9+14 + assume {:print "$at(132,12237,12251)"} true; + assume {:print "$track_return(15,21,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:277:5+1 + assume {:print "$at(132,12256,12257)"} true; +L1: + + // assert Not(Eq(Len(select multi_ed25519::ValidatedPublicKey.bytes($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:69:9+29 + assume {:print "$at(133,2658,2687)"} true; + assert {:msg "assert_failed(133,2658,2687): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0->$bytes), 0); + + // assert Eq($t8, Index(select multi_ed25519::ValidatedPublicKey.bytes($t0), Sub(Len(select multi_ed25519::ValidatedPublicKey.bytes($t0)), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:70:9+46 + assume {:print "$at(133,2696,2742)"} true; + assert {:msg "assert_failed(133,2696,2742): post-condition does not hold"} + $IsEqual'u8'($t8, ReadVec($t0->$bytes, (LenVec($t0->$bytes) - 1))); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:70:9+46 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.move:277:5+1 + assume {:print "$at(132,12256,12257)"} true; +L2: + + // assert Eq(Len(select multi_ed25519::ValidatedPublicKey.bytes($t0)), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:68:5+165 + assume {:print "$at(133,2583,2748)"} true; + assert {:msg "assert_failed(133,2583,2748): abort not covered by any of the `aborts_if` clauses"} + $IsEqual'num'(LenVec($t0->$bytes), 0); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:68:5+165 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// struct guid::GUID at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:7:5+50 +datatype $1_guid_GUID { + $1_guid_GUID($id: $1_guid_ID) +} +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'(s->$id) +} +function {:inline} $IsEqual'$1_guid_GUID'(s1: $1_guid_GUID, s2: $1_guid_GUID): bool { + s1 == s2 +} + +// struct guid::ID at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:12:5+209 +datatype $1_guid_ID { + $1_guid_ID($creation_num: int, $addr: int) +} +function {:inline} $Update'$1_guid_ID'_creation_num(s: $1_guid_ID, x: int): $1_guid_ID { + $1_guid_ID(x, s->$addr) +} +function {:inline} $Update'$1_guid_ID'_addr(s: $1_guid_ID, x: int): $1_guid_ID { + $1_guid_ID(s->$creation_num, x) +} +function $IsValid'$1_guid_ID'(s: $1_guid_ID): bool { + $IsValid'u64'(s->$creation_num) + && $IsValid'address'(s->$addr) +} +function {:inline} $IsEqual'$1_guid_ID'(s1: $1_guid_ID, s2: $1_guid_ID): bool { + s1 == s2 +} + +// fun guid::create [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + assume {:print "$at(45,845,846)"} true; + assume {:print "$track_local(16,0,0):", $t0} $t0 == $t0; + + // trace_local[creation_num_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(16,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t3 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:24:28+17 + assume {:print "$at(45,949,966)"} true; + $t3 := $Dereference($t1); + + // trace_local[creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:24:13+12 + assume {:print "$track_local(16,0,2):", $t3} $t3 == $t3; + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:44+1 + assume {:print "$at(45,1011,1012)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := +($t3, $t4) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:42+1 + call $t5 := $AddU64($t3, $t4); + if ($abort_flag) { + assume {:print "$at(45,1009,1010)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(16,0):", $t6} $t6 == $t6; + goto L2; + } + + // write_ref($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:9+36 + $t1 := $UpdateMutation($t1, $t5); + + // $t7 := pack guid::ID($t3, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:27:17+70 + assume {:print "$at(45,1045,1115)"} true; + $t7 := $1_guid_ID($t3, $t0); + + // $t8 := pack guid::GUID($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + assume {:print "$at(45,1022,1125)"} true; + $t8 := $1_guid_GUID($t7); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + assume {:print "$track_return(16,0,0):", $t8} $t8 == $t8; + + // trace_local[creation_num_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(16,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 + assume {:print "$at(45,1130,1131)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 + assume {:print "$at(45,1130,1131)"} true; + $ret0 := $t8; + $ret1 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 + assume {:print "$at(45,1130,1131)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun guid::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+286 +procedure {:timeLimit 80} $1_guid_create$verify(_$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: int; + var $t8: $1_guid_ID; + var $t9: $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; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t1->l == $Param(1); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + assume {:print "$at(45,845,846)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + assume $IsValid'u64'($Dereference($t1)); + + // $t3 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + $t3 := $Dereference($t1); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + assume {:print "$track_local(16,0,0):", $t0} $t0 == $t0; + + // trace_local[creation_num_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:23:5+1 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(16,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t4 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:24:28+17 + assume {:print "$at(45,949,966)"} true; + $t4 := $Dereference($t1); + + // trace_local[creation_num]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:24:13+12 + assume {:print "$track_local(16,0,2):", $t4} $t4 == $t4; + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:44+1 + assume {:print "$at(45,1011,1012)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := +($t4, $t5) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:42+1 + call $t6 := $AddU64($t4, $t5); + if ($abort_flag) { + assume {:print "$at(45,1009,1010)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(16,0):", $t7} $t7 == $t7; + goto L2; + } + + // write_ref($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:25:9+36 + $t1 := $UpdateMutation($t1, $t6); + + // $t8 := pack guid::ID($t4, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:27:17+70 + assume {:print "$at(45,1045,1115)"} true; + $t8 := $1_guid_ID($t4, $t0); + + // $t9 := pack guid::GUID($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + assume {:print "$at(45,1022,1125)"} true; + $t9 := $1_guid_GUID($t8); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + assume {:print "$track_return(16,0,0):", $t9} $t9 == $t9; + + // trace_local[creation_num_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:26:9+103 + $temp_0'u64' := $Dereference($t1); + assume {:print "$track_local(16,0,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 + assume {:print "$at(45,1130,1131)"} true; +L1: + + // assert Not(Gt(Add($t3, 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:74:9+41 + assume {:print "$at(46,2887,2928)"} true; + assert {:msg "assert_failed(46,2887,2928): function does not abort under this condition"} + !(($t3 + 1) > 18446744073709551615); + + // assert Eq(select guid::ID.creation_num(select guid::GUID.id($t9)), $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:76:9+56 + assume {:print "$at(46,2968,3024)"} true; + assert {:msg "assert_failed(46,2968,3024): post-condition does not hold"} + $IsEqual'u64'($t9->$id->$creation_num, $t3); + + // assert Eq(Freeze(false)($t1), Add($t3, 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:78:9+54 + assume {:print "$at(46,3064,3118)"} true; + assert {:msg "assert_failed(46,3064,3118): post-condition does not hold"} + $IsEqual'u64'($Dereference($t1), ($t3 + 1)); + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:78:9+54 + $ret0 := $t9; + $ret1 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:32:5+1 + assume {:print "$at(45,1130,1131)"} true; +L2: + + // assert Gt(Add($t3, 1), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:73:5+308 + assume {:print "$at(46,2816,3124)"} true; + assert {:msg "assert_failed(46,2816,3124): abort not covered by any of the `aborts_if` clauses"} + (($t3 + 1) > 18446744073709551615); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:73:5+308 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun guid::create_id [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+100 +procedure {:inline 1} $1_guid_create_id(_$t0: int, _$t1: int) returns ($ret0: $1_guid_ID) +{ + // declare local variables + var $t2: $1_guid_ID; + var $t0: int; + var $t1: int; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume {:print "$at(45,1203,1204)"} true; + assume {:print "$track_local(16,1,0):", $t0} $t0 == $t0; + + // trace_local[creation_num]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume {:print "$track_local(16,1,1):", $t1} $t1 == $t1; + + // $t2 := pack guid::ID($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:36:9+25 + assume {:print "$at(45,1272,1297)"} true; + $t2 := $1_guid_ID($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:36:9+25 + assume {:print "$track_return(16,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:37:5+1 + assume {:print "$at(45,1302,1303)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:37:5+1 + assume {:print "$at(45,1302,1303)"} true; + $ret0 := $t2; + return; + +} + +// fun guid::create_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+100 +procedure {:timeLimit 80} $1_guid_create_id$verify(_$t0: int, _$t1: int) returns ($ret0: $1_guid_ID) +{ + // declare local variables + var $t2: $1_guid_ID; + var $t0: int; + var $t1: int; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume {:print "$at(45,1203,1204)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume $IsValid'u64'($t1); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume {:print "$track_local(16,1,0):", $t0} $t0 == $t0; + + // trace_local[creation_num]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:35:5+1 + assume {:print "$track_local(16,1,1):", $t1} $t1 == $t1; + + // $t2 := pack guid::ID($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:36:9+25 + assume {:print "$at(45,1272,1297)"} true; + $t2 := $1_guid_ID($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:36:9+25 + assume {:print "$track_return(16,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:37:5+1 + assume {:print "$at(45,1302,1303)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:40:9+16 + assume {:print "$at(46,2142,2158)"} true; + assert {:msg "assert_failed(46,2142,2158): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:40:9+16 + $ret0 := $t2; + return; + +} + +// fun guid::creation_num [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:55:5+78 +procedure {:inline 1} $1_guid_creation_num(_$t0: $1_guid_GUID) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_guid_ID; + var $t2: int; + var $t0: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:55:5+1 + assume {:print "$at(45,1764,1765)"} true; + assume {:print "$track_local(16,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+7 + assume {:print "$at(45,1816,1823)"} true; + $t1 := $t0->$id; + + // $t2 := get_field.creation_num($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+20 + $t2 := $t1->$creation_num; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+20 + assume {:print "$track_return(16,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:57:5+1 + assume {:print "$at(45,1841,1842)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:57:5+1 + assume {:print "$at(45,1841,1842)"} true; + $ret0 := $t2; + return; + +} + +// fun guid::creation_num [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:55:5+78 +procedure {:timeLimit 80} $1_guid_creation_num$verify(_$t0: $1_guid_GUID) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_guid_ID; + var $t2: int; + var $t0: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:55:5+1 + assume {:print "$at(45,1764,1765)"} true; + assume $IsValid'$1_guid_GUID'($t0); + + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:55:5+1 + assume {:print "$track_local(16,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+7 + assume {:print "$at(45,1816,1823)"} true; + $t1 := $t0->$id; + + // $t2 := get_field.creation_num($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+20 + $t2 := $t1->$creation_num; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:56:9+20 + assume {:print "$track_return(16,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:57:5+1 + assume {:print "$at(45,1841,1842)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:60:9+16 + assume {:print "$at(46,2572,2588)"} true; + assert {:msg "assert_failed(46,2572,2588): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:60:9+16 + $ret0 := $t2; + return; + +} + +// fun guid::creator_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:45:5+77 +procedure {:inline 1} $1_guid_creator_address(_$t0: $1_guid_GUID) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_guid_ID; + var $t2: int; + var $t0: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:45:5+1 + assume {:print "$at(45,1483,1484)"} true; + assume {:print "$track_local(16,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+7 + assume {:print "$at(45,1542,1549)"} true; + $t1 := $t0->$id; + + // $t2 := get_field.addr($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+12 + $t2 := $t1->$addr; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+12 + assume {:print "$track_return(16,3,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:47:5+1 + assume {:print "$at(45,1559,1560)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:47:5+1 + assume {:print "$at(45,1559,1560)"} true; + $ret0 := $t2; + return; + +} + +// fun guid::creator_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:45:5+77 +procedure {:timeLimit 80} $1_guid_creator_address$verify(_$t0: $1_guid_GUID) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_guid_ID; + var $t2: int; + var $t0: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:45:5+1 + assume {:print "$at(45,1483,1484)"} true; + assume $IsValid'$1_guid_GUID'($t0); + + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:45:5+1 + assume {:print "$track_local(16,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+7 + assume {:print "$at(45,1542,1549)"} true; + $t1 := $t0->$id; + + // $t2 := get_field.addr($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+12 + $t2 := $t1->$addr; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:46:9+12 + assume {:print "$track_return(16,3,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:47:5+1 + assume {:print "$at(45,1559,1560)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:50:9+16 + assume {:print "$at(46,2352,2368)"} true; + assert {:msg "assert_failed(46,2352,2368): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:50:9+16 + $ret0 := $t2; + return; + +} + +// fun guid::eq_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:65:5+75 +procedure {:timeLimit 80} $1_guid_eq_id$verify(_$t0: $1_guid_GUID, _$t1: $1_guid_ID) returns ($ret0: bool) +{ + // declare local variables + var $t2: $1_guid_ID; + var $t3: bool; + var $t0: $1_guid_GUID; + var $t1: $1_guid_ID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:65:5+1 + assume {:print "$at(45,2035,2036)"} true; + assume $IsValid'$1_guid_GUID'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:65:5+1 + assume $IsValid'$1_guid_ID'($t1); + + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:65:5+1 + assume {:print "$track_local(16,4,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:65:5+1 + assume {:print "$track_local(16,4,1):", $t1} $t1 == $t1; + + // $t2 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:66:9+8 + assume {:print "$at(45,2090,2098)"} true; + $t2 := $t0->$id; + + // $t3 := ==($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:66:18+2 + $t3 := $IsEqual'$1_guid_ID'($t2, $t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:66:9+14 + assume {:print "$track_return(16,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:67:5+1 + assume {:print "$at(45,2109,2110)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:70:9+16 + assume {:print "$at(46,2788,2804)"} true; + assert {:msg "assert_failed(46,2788,2804): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:70:9+16 + $ret0 := $t3; + return; + +} + +// fun guid::id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:40:5+54 +procedure {:timeLimit 80} $1_guid_id$verify(_$t0: $1_guid_GUID) returns ($ret0: $1_guid_ID) +{ + // declare local variables + var $t1: $1_guid_ID; + var $t0: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_guid_ID': $1_guid_ID; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:40:5+1 + assume {:print "$at(45,1366,1367)"} true; + assume $IsValid'$1_guid_GUID'($t0); + + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:40:5+1 + assume {:print "$track_local(16,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:41:9+7 + assume {:print "$at(45,1407,1414)"} true; + $t1 := $t0->$id; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:41:9+7 + assume {:print "$track_return(16,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:42:5+1 + assume {:print "$at(45,1419,1420)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:45:9+16 + assume {:print "$at(46,2238,2254)"} true; + assert {:msg "assert_failed(46,2238,2254): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:45:9+16 + $ret0 := $t1; + return; + +} + +// fun guid::id_creation_num [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:60:5+72 +procedure {:timeLimit 80} $1_guid_id_creation_num$verify(_$t0: $1_guid_ID) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_guid_ID; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:60:5+1 + assume {:print "$at(45,1912,1913)"} true; + assume $IsValid'$1_guid_ID'($t0); + + // trace_local[id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:60:5+1 + assume {:print "$track_local(16,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.creation_num($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:61:9+15 + assume {:print "$at(45,1963,1978)"} true; + $t1 := $t0->$creation_num; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:61:9+15 + assume {:print "$track_return(16,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:62:5+1 + assume {:print "$at(45,1983,1984)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:65:9+16 + assume {:print "$at(46,2678,2694)"} true; + assert {:msg "assert_failed(46,2678,2694): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:65:9+16 + $ret0 := $t1; + return; + +} + +// fun guid::id_creator_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:50:5+71 +procedure {:timeLimit 80} $1_guid_id_creator_address$verify(_$t0: $1_guid_ID) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_guid_ID; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:50:5+1 + assume {:print "$at(45,1627,1628)"} true; + assume $IsValid'$1_guid_ID'($t0); + + // trace_local[id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:50:5+1 + assume {:print "$track_local(16,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.addr($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:51:9+7 + assume {:print "$at(45,1685,1692)"} true; + $t1 := $t0->$addr; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:51:9+7 + assume {:print "$track_return(16,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.move:52:5+1 + assume {:print "$at(45,1697,1698)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:55:9+16 + assume {:print "$at(46,2465,2481)"} true; + assert {:msg "assert_failed(46,2465,2481): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/guid.spec.move:55:9+16 + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u16'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u16'(bytes); +$IsValid'u16'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'u32'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'u32'(bytes); +$IsValid'u32'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'bool''(bytes: Vec (int)): Vec (bool); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'bool''(bytes); +$IsValid'vec'bool''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'u128''(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'u128''(bytes); +$IsValid'vec'u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'vec'u8'''(bytes: Vec (int)): Vec (Vec (int)); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'vec'u8'''(bytes); +$IsValid'vec'vec'u8'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'vec'#0'''(bytes: Vec (int)): Vec (Vec (#0)); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'vec'#0'''(bytes); +$IsValid'vec'vec'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_option_Option'$1_property_map_PropertyValue'''(bytes: Vec (int)): Vec ($1_option_Option'$1_property_map_PropertyValue'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_option_Option'$1_property_map_PropertyValue'''(bytes); +$IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_option_Option'#0'''(bytes: Vec (int)): Vec ($1_option_Option'#0'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_option_Option'#0'''(bytes); +$IsValid'vec'$1_option_Option'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_string_String''(bytes: Vec (int)): Vec ($1_string_String); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_string_String''(bytes); +$IsValid'vec'$1_string_String''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_type_info_TypeInfo''(bytes: Vec (int)): Vec ($1_type_info_TypeInfo); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_type_info_TypeInfo''(bytes); +$IsValid'vec'$1_type_info_TypeInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ed25519_ValidatedPublicKey''(bytes: Vec (int)): Vec ($1_ed25519_ValidatedPublicKey); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ed25519_ValidatedPublicKey''(bytes); +$IsValid'vec'$1_ed25519_ValidatedPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_multi_ed25519_ValidatedPublicKey''(bytes: Vec (int)): Vec ($1_multi_ed25519_ValidatedPublicKey); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_multi_ed25519_ValidatedPublicKey''(bytes); +$IsValid'vec'$1_multi_ed25519_ValidatedPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes: Vec (int)): Vec ($1_aggregator_v2_AggregatorSnapshot'u64'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes); +$IsValid'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_any_Any''(bytes: Vec (int)): Vec ($1_any_Any); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_any_Any''(bytes); +$IsValid'vec'$1_any_Any''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_big_vector_BigVector'#0'''(bytes: Vec (int)): Vec ($1_big_vector_BigVector'#0'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_big_vector_BigVector'#0'''(bytes); +$IsValid'vec'$1_big_vector_BigVector'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_transaction_context_EntryFunctionPayload''(bytes: Vec (int)): Vec ($1_transaction_context_EntryFunctionPayload); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_transaction_context_EntryFunctionPayload''(bytes); +$IsValid'vec'$1_transaction_context_EntryFunctionPayload''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_transaction_context_MultisigPayload''(bytes: Vec (int)): Vec ($1_transaction_context_MultisigPayload); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_transaction_context_MultisigPayload''(bytes); +$IsValid'vec'$1_transaction_context_MultisigPayload''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_object_DeleteRef''(bytes: Vec (int)): Vec ($1_object_DeleteRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_object_DeleteRef''(bytes); +$IsValid'vec'$1_object_DeleteRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): Vec ($1_object_Object'$1_fungible_asset_Metadata'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'vec'$1_object_Object'$1_fungible_asset_Metadata'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_object_TransferRef''(bytes: Vec (int)): Vec ($1_object_TransferRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_object_TransferRef''(bytes); +$IsValid'vec'$1_object_TransferRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_function_info_FunctionInfo''(bytes: Vec (int)): Vec ($1_function_info_FunctionInfo); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_function_info_FunctionInfo''(bytes); +$IsValid'vec'$1_function_info_FunctionInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_fungible_asset_TransferRef''(bytes: Vec (int)): Vec ($1_fungible_asset_TransferRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_fungible_asset_TransferRef''(bytes); +$IsValid'vec'$1_fungible_asset_TransferRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_fungible_asset_BurnRef''(bytes: Vec (int)): Vec ($1_fungible_asset_BurnRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_fungible_asset_BurnRef''(bytes); +$IsValid'vec'$1_fungible_asset_BurnRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_fungible_asset_FungibleStore''(bytes: Vec (int)): Vec ($1_fungible_asset_FungibleStore); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_fungible_asset_FungibleStore''(bytes); +$IsValid'vec'$1_fungible_asset_FungibleStore''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_fungible_asset_MintRef''(bytes: Vec (int)): Vec ($1_fungible_asset_MintRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_fungible_asset_MintRef''(bytes); +$IsValid'vec'$1_fungible_asset_MintRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_starcoin_coin_DelegatedMintCapability''(bytes: Vec (int)): Vec ($1_starcoin_coin_DelegatedMintCapability); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_starcoin_coin_DelegatedMintCapability''(bytes); +$IsValid'vec'$1_starcoin_coin_DelegatedMintCapability''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_starcoin_coin_STC''(bytes: Vec (int)): Vec ($1_starcoin_coin_STC); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_starcoin_coin_STC''(bytes); +$IsValid'vec'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): Vec ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes: Vec (int)): Vec ($1_on_chain_config_ModifyConfigCapability'#0'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes); +$IsValid'vec'$1_on_chain_config_ModifyConfigCapability'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): Vec ($1_dao_DaoConfig'#0'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'vec'$1_dao_DaoConfig'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_block_reward_RewardInfo''(bytes: Vec (int)): Vec ($1_block_reward_RewardInfo); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_block_reward_RewardInfo''(bytes); +$IsValid'vec'$1_block_reward_RewardInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_bls12381_Signature''(bytes: Vec (int)): Vec ($1_bls12381_Signature); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_bls12381_Signature''(bytes); +$IsValid'vec'$1_bls12381_Signature''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_bls12381_AggrOrMultiSignature''(bytes: Vec (int)): Vec ($1_bls12381_AggrOrMultiSignature); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_bls12381_AggrOrMultiSignature''(bytes); +$IsValid'vec'$1_bls12381_AggrOrMultiSignature''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_bls12381_PublicKey''(bytes: Vec (int)): Vec ($1_bls12381_PublicKey); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_bls12381_PublicKey''(bytes); +$IsValid'vec'$1_bls12381_PublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_bls12381_PublicKeyWithPoP''(bytes: Vec (int)): Vec ($1_bls12381_PublicKeyWithPoP); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_bls12381_PublicKeyWithPoP''(bytes); +$IsValid'vec'$1_bls12381_PublicKeyWithPoP''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_royalty_MutatorRef''(bytes: Vec (int)): Vec ($1_royalty_MutatorRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_royalty_MutatorRef''(bytes); +$IsValid'vec'$1_royalty_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_royalty_Royalty''(bytes: Vec (int)): Vec ($1_royalty_Royalty); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_royalty_Royalty''(bytes); +$IsValid'vec'$1_royalty_Royalty''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_collection_ConcurrentSupply''(bytes: Vec (int)): Vec ($1_collection_ConcurrentSupply); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_collection_ConcurrentSupply''(bytes); +$IsValid'vec'$1_collection_ConcurrentSupply''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_collection_MutatorRef''(bytes: Vec (int)): Vec ($1_collection_MutatorRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_collection_MutatorRef''(bytes); +$IsValid'vec'$1_collection_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_collection_Collection''(bytes: Vec (int)): Vec ($1_collection_Collection); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_collection_Collection''(bytes); +$IsValid'vec'$1_collection_Collection''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_collection_FixedSupply''(bytes: Vec (int)): Vec ($1_collection_FixedSupply); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_collection_FixedSupply''(bytes); +$IsValid'vec'$1_collection_FixedSupply''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#0'''(bytes: Vec (int)): Vec ($1_crypto_algebra_Element'#0'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#0'''(bytes); +$IsValid'vec'$1_crypto_algebra_Element'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#1'''(bytes: Vec (int)): Vec ($1_crypto_algebra_Element'#1'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_crypto_algebra_Element'#1'''(bytes); +$IsValid'vec'$1_crypto_algebra_Element'#1'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'u128'''(bytes: Vec (int)): Vec ($1_oracle_DataRecord'u128'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'u128'''(bytes); +$IsValid'vec'$1_oracle_DataRecord'u128'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'#1'''(bytes: Vec (int)): Vec ($1_oracle_DataRecord'#1'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_oracle_DataRecord'#1'''(bytes); +$IsValid'vec'$1_oracle_DataRecord'#1'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_object_token_BurnRef''(bytes: Vec (int)): Vec ($1_object_token_BurnRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_object_token_BurnRef''(bytes); +$IsValid'vec'$1_object_token_BurnRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_object_token_MutatorRef''(bytes: Vec (int)): Vec ($1_object_token_MutatorRef); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_object_token_MutatorRef''(bytes); +$IsValid'vec'$1_object_token_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_property_map_PropertyValue''(bytes: Vec (int)): Vec ($1_property_map_PropertyValue); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_property_map_PropertyValue''(bytes); +$IsValid'vec'$1_property_map_PropertyValue''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_CompressedRistretto''(bytes: Vec (int)): Vec ($1_ristretto255_CompressedRistretto); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_CompressedRistretto''(bytes); +$IsValid'vec'$1_ristretto255_CompressedRistretto''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_RistrettoPoint''(bytes: Vec (int)): Vec ($1_ristretto255_RistrettoPoint); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_RistrettoPoint''(bytes); +$IsValid'vec'$1_ristretto255_RistrettoPoint''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_Scalar''(bytes: Vec (int)): Vec ($1_ristretto255_Scalar); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_Scalar''(bytes); +$IsValid'vec'$1_ristretto255_Scalar''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_pedersen_Commitment''(bytes: Vec (int)): Vec ($1_ristretto255_pedersen_Commitment); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_pedersen_Commitment''(bytes); +$IsValid'vec'$1_ristretto255_pedersen_Commitment''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_Ciphertext''(bytes: Vec (int)): Vec ($1_ristretto255_elgamal_Ciphertext); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_Ciphertext''(bytes); +$IsValid'vec'$1_ristretto255_elgamal_Ciphertext''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_CompressedPubkey''(bytes: Vec (int)): Vec ($1_ristretto255_elgamal_CompressedPubkey); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_ristretto255_elgamal_CompressedPubkey''(bytes); +$IsValid'vec'$1_ristretto255_elgamal_CompressedPubkey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_secp256k1_ECDSARawPublicKey''(bytes: Vec (int)): Vec ($1_secp256k1_ECDSARawPublicKey); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_secp256k1_ECDSARawPublicKey''(bytes); +$IsValid'vec'$1_secp256k1_ECDSARawPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'$1_token_WithdrawCapability''(bytes: Vec (int)): Vec ($1_token_WithdrawCapability); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'$1_token_WithdrawCapability''(bytes); +$IsValid'vec'$1_token_WithdrawCapability''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'vec'#1''(bytes: Vec (int)): Vec (#1); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'vec'#1''(bytes); +$IsValid'vec'#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'u8''(bytes: Vec (int)): $1_option_Option'u8'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'u8''(bytes); +$IsValid'$1_option_Option'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'u128''(bytes: Vec (int)): $1_option_Option'u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'u128''(bytes); +$IsValid'$1_option_Option'u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_string_String''(bytes: Vec (int)): $1_option_Option'$1_string_String'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_string_String''(bytes); +$IsValid'$1_option_Option'$1_string_String''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_type_info_TypeInfo''(bytes: Vec (int)): $1_option_Option'$1_type_info_TypeInfo'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_type_info_TypeInfo''(bytes); +$IsValid'$1_option_Option'$1_type_info_TypeInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ed25519_ValidatedPublicKey''(bytes: Vec (int)): $1_option_Option'$1_ed25519_ValidatedPublicKey'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ed25519_ValidatedPublicKey''(bytes); +$IsValid'$1_option_Option'$1_ed25519_ValidatedPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(bytes: Vec (int)): $1_option_Option'$1_multi_ed25519_ValidatedPublicKey'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(bytes); +$IsValid'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes: Vec (int)): $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes); +$IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_any_Any''(bytes: Vec (int)): $1_option_Option'$1_any_Any'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_any_Any''(bytes); +$IsValid'$1_option_Option'$1_any_Any''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_big_vector_BigVector'#0'''(bytes: Vec (int)): $1_option_Option'$1_big_vector_BigVector'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_big_vector_BigVector'#0'''(bytes); +$IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(bytes: Vec (int)): $1_option_Option'$1_transaction_context_EntryFunctionPayload'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(bytes); +$IsValid'$1_option_Option'$1_transaction_context_EntryFunctionPayload''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_MultisigPayload''(bytes: Vec (int)): $1_option_Option'$1_transaction_context_MultisigPayload'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_transaction_context_MultisigPayload''(bytes); +$IsValid'$1_option_Option'$1_transaction_context_MultisigPayload''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_object_DeleteRef''(bytes: Vec (int)): $1_option_Option'$1_object_DeleteRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_object_DeleteRef''(bytes); +$IsValid'$1_option_Option'$1_object_DeleteRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_object_TransferRef''(bytes: Vec (int)): $1_option_Option'$1_object_TransferRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_object_TransferRef''(bytes); +$IsValid'$1_option_Option'$1_object_TransferRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_function_info_FunctionInfo''(bytes: Vec (int)): $1_option_Option'$1_function_info_FunctionInfo'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_function_info_FunctionInfo''(bytes); +$IsValid'$1_option_Option'$1_function_info_FunctionInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_TransferRef''(bytes: Vec (int)): $1_option_Option'$1_fungible_asset_TransferRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_TransferRef''(bytes); +$IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_BurnRef''(bytes: Vec (int)): $1_option_Option'$1_fungible_asset_BurnRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_BurnRef''(bytes); +$IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_MintRef''(bytes: Vec (int)): $1_option_Option'$1_fungible_asset_MintRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_fungible_asset_MintRef''(bytes); +$IsValid'$1_option_Option'$1_fungible_asset_MintRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes: Vec (int)): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes); +$IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(bytes: Vec (int)): $1_option_Option'$1_bls12381_AggrOrMultiSignature'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(bytes); +$IsValid'$1_option_Option'$1_bls12381_AggrOrMultiSignature''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKey''(bytes: Vec (int)): $1_option_Option'$1_bls12381_PublicKey'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKey''(bytes); +$IsValid'$1_option_Option'$1_bls12381_PublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(bytes: Vec (int)): $1_option_Option'$1_bls12381_PublicKeyWithPoP'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(bytes); +$IsValid'$1_option_Option'$1_bls12381_PublicKeyWithPoP''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_royalty_MutatorRef''(bytes: Vec (int)): $1_option_Option'$1_royalty_MutatorRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_royalty_MutatorRef''(bytes); +$IsValid'$1_option_Option'$1_royalty_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_royalty_Royalty''(bytes: Vec (int)): $1_option_Option'$1_royalty_Royalty'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_royalty_Royalty''(bytes); +$IsValid'$1_option_Option'$1_royalty_Royalty''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_collection_ConcurrentSupply''(bytes: Vec (int)): $1_option_Option'$1_collection_ConcurrentSupply'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_collection_ConcurrentSupply''(bytes); +$IsValid'$1_option_Option'$1_collection_ConcurrentSupply''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_collection_MutatorRef''(bytes: Vec (int)): $1_option_Option'$1_collection_MutatorRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_collection_MutatorRef''(bytes); +$IsValid'$1_option_Option'$1_collection_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_collection_FixedSupply''(bytes: Vec (int)): $1_option_Option'$1_collection_FixedSupply'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_collection_FixedSupply''(bytes); +$IsValid'$1_option_Option'$1_collection_FixedSupply''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#0'''(bytes: Vec (int)): $1_option_Option'$1_crypto_algebra_Element'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#0'''(bytes); +$IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#1'''(bytes: Vec (int)): $1_option_Option'$1_crypto_algebra_Element'#1''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_crypto_algebra_Element'#1'''(bytes); +$IsValid'$1_option_Option'$1_crypto_algebra_Element'#1'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_object_token_BurnRef''(bytes: Vec (int)): $1_option_Option'$1_object_token_BurnRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_object_token_BurnRef''(bytes); +$IsValid'$1_option_Option'$1_object_token_BurnRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_object_token_MutatorRef''(bytes: Vec (int)): $1_option_Option'$1_object_token_MutatorRef'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_object_token_MutatorRef''(bytes); +$IsValid'$1_option_Option'$1_object_token_MutatorRef''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_property_map_PropertyValue''(bytes: Vec (int)): $1_option_Option'$1_property_map_PropertyValue'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_property_map_PropertyValue''(bytes); +$IsValid'$1_option_Option'$1_property_map_PropertyValue''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_CompressedRistretto''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_CompressedRistretto'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_CompressedRistretto''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_RistrettoPoint''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_RistrettoPoint'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_RistrettoPoint''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_Scalar''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_Scalar'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_Scalar''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_Scalar''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_pedersen_Commitment''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_pedersen_Commitment'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_pedersen_Commitment''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_pedersen_Commitment''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_elgamal_Ciphertext'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(bytes: Vec (int)): $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(bytes); +$IsValid'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(bytes: Vec (int)): $1_option_Option'$1_secp256k1_ECDSARawPublicKey'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(bytes); +$IsValid'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'$1_token_WithdrawCapability''(bytes: Vec (int)): $1_option_Option'$1_token_WithdrawCapability'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'$1_token_WithdrawCapability''(bytes); +$IsValid'$1_option_Option'$1_token_WithdrawCapability''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'#0''(bytes: Vec (int)): $1_option_Option'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'#0''(bytes); +$IsValid'$1_option_Option'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_option_Option'#1''(bytes: Vec (int)): $1_option_Option'#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_option_Option'#1''(bytes); +$IsValid'$1_option_Option'#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_features_Features'(bytes: Vec (int)): $1_features_Features; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_features_Features'(bytes); +$IsValid'$1_features_Features'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_features_PendingFeatures'(bytes: Vec (int)): $1_features_PendingFeatures; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_features_PendingFeatures'(bytes); +$IsValid'$1_features_PendingFeatures'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'address_u128''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'address_u128''(bytes); +$IsValid'$1_table_Table'address_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'address_address''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'address_address''(bytes); +$IsValid'$1_table_Table'address_address''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'$1_string_String_$1_token_CollectionData''(bytes: Vec (int)): Table int ($1_token_CollectionData); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'$1_string_String_$1_token_CollectionData''(bytes); +$IsValid'$1_table_Table'$1_string_String_$1_token_CollectionData''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): Table int ($1_object_Object'$1_fungible_asset_Metadata'); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(bytes: Vec (int)): Table int ($1_token_TokenData); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(bytes); +$IsValid'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenId_$1_token_Token''(bytes: Vec (int)): Table int ($1_token_Token); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'$1_token_TokenId_$1_token_Token''(bytes); +$IsValid'$1_table_Table'$1_token_TokenId_$1_token_Token''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(bytes: Vec (int)): Table int ($1_token_Token); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(bytes); +$IsValid'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_Table'#0_#1''(bytes: Vec (int)): Table int (#1); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_Table'#0_#1''(bytes); +$IsValid'$1_table_Table'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_Signature'(bytes: Vec (int)): $1_ed25519_Signature; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_Signature'(bytes); +$IsValid'$1_ed25519_Signature'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(bytes: Vec (int)): $1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(bytes); +$IsValid'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(bytes: Vec (int)): $1_ed25519_SignedMessage'$1_account_RotationProofChallenge'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(bytes); +$IsValid'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(bytes: Vec (int)): $1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(bytes); +$IsValid'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_SignedMessage'#0''(bytes: Vec (int)): $1_ed25519_SignedMessage'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_SignedMessage'#0''(bytes); +$IsValid'$1_ed25519_SignedMessage'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_UnvalidatedPublicKey'(bytes: Vec (int)): $1_ed25519_UnvalidatedPublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_UnvalidatedPublicKey'(bytes); +$IsValid'$1_ed25519_UnvalidatedPublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ed25519_ValidatedPublicKey'(bytes: Vec (int)): $1_ed25519_ValidatedPublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ed25519_ValidatedPublicKey'(bytes); +$IsValid'$1_ed25519_ValidatedPublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_multi_ed25519_Signature'(bytes: Vec (int)): $1_multi_ed25519_Signature; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_multi_ed25519_Signature'(bytes); +$IsValid'$1_multi_ed25519_Signature'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_multi_ed25519_UnvalidatedPublicKey'(bytes: Vec (int)): $1_multi_ed25519_UnvalidatedPublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_multi_ed25519_UnvalidatedPublicKey'(bytes); +$IsValid'$1_multi_ed25519_UnvalidatedPublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_multi_ed25519_ValidatedPublicKey'(bytes: Vec (int)): $1_multi_ed25519_ValidatedPublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_multi_ed25519_ValidatedPublicKey'(bytes); +$IsValid'$1_multi_ed25519_ValidatedPublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_TransferEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_object_TransferEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_TransferEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_object_TransferEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_DepositEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_treasury_DepositEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_DepositEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_treasury_DepositEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_WithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_treasury_WithdrawEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_treasury_WithdrawEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_treasury_WithdrawEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(bytes: Vec (int)): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(bytes); +$IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_dao_ProposalCreatedEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_VoteChangedEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_dao_VoteChangedEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_dao_VoteChangedEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_dao_VoteChangedEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_block_reward_BlockRewardEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_BurnEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_collection_BurnEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_BurnEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_collection_BurnEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MintEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_collection_MintEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MintEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_collection_MintEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MutationEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_collection_MutationEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_collection_MutationEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_collection_MutationEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(bytes: Vec (int)): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(bytes); +$IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(bytes: Vec (int)): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(bytes); +$IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(bytes: Vec (int)): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(bytes); +$IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(bytes: Vec (int)): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(bytes); +$IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_epoch_NewEpochEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_epoch_NewEpochEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_epoch_NewEpochEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_epoch_NewEpochEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_token_MutationEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_object_token_MutationEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_object_token_MutationEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_object_token_MutationEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_stc_block_NewBlockEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_stc_block_NewBlockEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_DepositEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_DepositEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_DepositEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_DepositEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_WithdrawEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_WithdrawEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_WithdrawEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_WithdrawEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_BurnTokenEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_BurnTokenEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_BurnTokenEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_BurnTokenEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateCollectionEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_CreateCollectionEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateCollectionEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_CreateCollectionEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_CreateTokenDataEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_CreateTokenDataEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MintTokenEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_MintTokenEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MintTokenEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_MintTokenEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(bytes: Vec (int)): $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(bytes); +$IsValid'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_event_EventHandle'#0''(bytes: Vec (int)): $1_event_EventHandle'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_event_EventHandle'#0''(bytes); +$IsValid'$1_event_EventHandle'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(bytes: Vec (int)): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(bytes); +$IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(bytes: Vec (int)): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(bytes); +$IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(bytes: Vec (int)): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(bytes); +$IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_NIL''(bytes: Vec (int)): $1_string_utils_Cons'#0_$1_string_utils_NIL'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#0_$1_string_utils_NIL''(bytes); +$IsValid'$1_string_utils_Cons'#0_$1_string_utils_NIL''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#0_#1''(bytes: Vec (int)): $1_string_utils_Cons'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#0_#1''(bytes); +$IsValid'$1_string_utils_Cons'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(bytes: Vec (int)): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(bytes); +$IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(bytes: Vec (int)): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(bytes); +$IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_NIL''(bytes: Vec (int)): $1_string_utils_Cons'#1_$1_string_utils_NIL'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#1_$1_string_utils_NIL''(bytes); +$IsValid'$1_string_utils_Cons'#1_$1_string_utils_NIL''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(bytes: Vec (int)): $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(bytes); +$IsValid'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_NIL''(bytes: Vec (int)): $1_string_utils_Cons'#2_$1_string_utils_NIL'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#2_$1_string_utils_NIL''(bytes); +$IsValid'$1_string_utils_Cons'#2_$1_string_utils_NIL''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_Cons'#3_$1_string_utils_NIL''(bytes: Vec (int)): $1_string_utils_Cons'#3_$1_string_utils_NIL'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_Cons'#3_$1_string_utils_NIL''(bytes); +$IsValid'$1_string_utils_Cons'#3_$1_string_utils_NIL''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_string_utils_NIL'(bytes: Vec (int)): $1_string_utils_NIL; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_string_utils_NIL'(bytes); +$IsValid'$1_string_utils_NIL'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_chain_id_ChainId'(bytes: Vec (int)): $1_chain_id_ChainId; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_chain_id_ChainId'(bytes); +$IsValid'$1_chain_id_ChainId'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_KeyRotation'(bytes: Vec (int)): $1_account_KeyRotation; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_KeyRotation'(bytes); +$IsValid'$1_account_KeyRotation'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_KeyRotationEvent'(bytes: Vec (int)): $1_account_KeyRotationEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_KeyRotationEvent'(bytes); +$IsValid'$1_account_KeyRotationEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_OriginatingAddress'(bytes: Vec (int)): $1_account_OriginatingAddress; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_OriginatingAddress'(bytes); +$IsValid'$1_account_OriginatingAddress'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_RotationCapabilityOfferProofChallengeV2'(bytes: Vec (int)): $1_account_RotationCapabilityOfferProofChallengeV2; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_RotationCapabilityOfferProofChallengeV2'(bytes); +$IsValid'$1_account_RotationCapabilityOfferProofChallengeV2'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_RotationProofChallenge'(bytes: Vec (int)): $1_account_RotationProofChallenge; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_RotationProofChallenge'(bytes); +$IsValid'$1_account_RotationProofChallenge'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_account_SignerCapabilityOfferProofChallengeV2'(bytes: Vec (int)): $1_account_SignerCapabilityOfferProofChallengeV2; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_account_SignerCapabilityOfferProofChallengeV2'(bytes); +$IsValid'$1_account_SignerCapabilityOfferProofChallengeV2'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_acl_ACL'(bytes: Vec (int)): $1_acl_ACL; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_acl_ACL'(bytes); +$IsValid'$1_acl_ACL'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_factory_AggregatorFactory'(bytes: Vec (int)): $1_aggregator_factory_AggregatorFactory; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_factory_AggregatorFactory'(bytes); +$IsValid'$1_aggregator_factory_AggregatorFactory'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u64''(bytes: Vec (int)): $1_aggregator_v2_Aggregator'u64'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u64''(bytes); +$IsValid'$1_aggregator_v2_Aggregator'u64''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u128''(bytes: Vec (int)): $1_aggregator_v2_Aggregator'u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'u128''(bytes); +$IsValid'$1_aggregator_v2_Aggregator'u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'#0''(bytes: Vec (int)): $1_aggregator_v2_Aggregator'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_v2_Aggregator'#0''(bytes); +$IsValid'$1_aggregator_v2_Aggregator'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_v2_AggregatorSnapshot'u64''(bytes: Vec (int)): $1_aggregator_v2_AggregatorSnapshot'u64'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_v2_AggregatorSnapshot'u64''(bytes); +$IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_aggregator_v2_DerivedStringSnapshot'(bytes: Vec (int)): $1_aggregator_v2_DerivedStringSnapshot; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_aggregator_v2_DerivedStringSnapshot'(bytes); +$IsValid'$1_aggregator_v2_DerivedStringSnapshot'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_any_Any'(bytes: Vec (int)): $1_any_Any; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_any_Any'(bytes); +$IsValid'$1_any_Any'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'u64_vec'#0'''(bytes: Vec (int)): Table int (Vec (#0)); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'u64_vec'#0'''(bytes); +$IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'address_u128''(bytes: Vec (int)): Table int (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_table_with_length_TableWithLength'address_u128''(bytes); +$IsValid'$1_table_with_length_TableWithLength'address_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_big_vector_BigVector'#0''(bytes: Vec (int)): $1_big_vector_BigVector'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_big_vector_BigVector'#0''(bytes); +$IsValid'$1_big_vector_BigVector'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bit_vector_BitVector'(bytes: Vec (int)): $1_bit_vector_BitVector; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bit_vector_BitVector'(bytes); +$IsValid'$1_bit_vector_BitVector'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fixed_point64_FixedPoint64'(bytes: Vec (int)): $1_fixed_point64_FixedPoint64; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fixed_point64_FixedPoint64'(bytes); +$IsValid'$1_fixed_point64_FixedPoint64'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_transaction_context_AUID'(bytes: Vec (int)): $1_transaction_context_AUID; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_transaction_context_AUID'(bytes); +$IsValid'$1_transaction_context_AUID'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_transaction_context_EntryFunctionPayload'(bytes: Vec (int)): $1_transaction_context_EntryFunctionPayload; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_transaction_context_EntryFunctionPayload'(bytes); +$IsValid'$1_transaction_context_EntryFunctionPayload'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_transaction_context_MultisigPayload'(bytes: Vec (int)): $1_transaction_context_MultisigPayload; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_transaction_context_MultisigPayload'(bytes); +$IsValid'$1_transaction_context_MultisigPayload'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_ConstructorRef'(bytes: Vec (int)): $1_object_ConstructorRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_ConstructorRef'(bytes); +$IsValid'$1_object_ConstructorRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_DeleteRef'(bytes: Vec (int)): $1_object_DeleteRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_DeleteRef'(bytes); +$IsValid'$1_object_DeleteRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_DeriveRef'(bytes: Vec (int)): $1_object_DeriveRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_DeriveRef'(bytes); +$IsValid'$1_object_DeriveRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_ExtendRef'(bytes: Vec (int)): $1_object_ExtendRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_ExtendRef'(bytes); +$IsValid'$1_object_ExtendRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_LinearTransferRef'(bytes: Vec (int)): $1_object_LinearTransferRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_LinearTransferRef'(bytes); +$IsValid'$1_object_LinearTransferRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_object_ObjectCore''(bytes: Vec (int)): $1_object_Object'$1_object_ObjectCore'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_object_ObjectCore''(bytes); +$IsValid'$1_object_Object'$1_object_ObjectCore''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_FungibleStore''(bytes: Vec (int)): $1_object_Object'$1_fungible_asset_FungibleStore'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_FungibleStore''(bytes); +$IsValid'$1_object_Object'$1_fungible_asset_FungibleStore''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_Metadata''(bytes: Vec (int)): $1_object_Object'$1_fungible_asset_Metadata'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_fungible_asset_Metadata''(bytes); +$IsValid'$1_object_Object'$1_fungible_asset_Metadata''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_collection_Collection''(bytes: Vec (int)): $1_object_Object'$1_collection_Collection'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_collection_Collection''(bytes); +$IsValid'$1_object_Object'$1_collection_Collection''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_object_token_Token''(bytes: Vec (int)): $1_object_Object'$1_object_token_Token'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_object_token_Token''(bytes); +$IsValid'$1_object_Object'$1_object_token_Token''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinCollection''(bytes: Vec (int)): $1_object_Object'$1_starcoin_token_StarcoinCollection'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinCollection''(bytes); +$IsValid'$1_object_Object'$1_starcoin_token_StarcoinCollection''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinToken''(bytes: Vec (int)): $1_object_Object'$1_starcoin_token_StarcoinToken'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'$1_starcoin_token_StarcoinToken''(bytes); +$IsValid'$1_object_Object'$1_starcoin_token_StarcoinToken''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'#0''(bytes: Vec (int)): $1_object_Object'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'#0''(bytes); +$IsValid'$1_object_Object'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Object'#1''(bytes: Vec (int)): $1_object_Object'#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Object'#1''(bytes); +$IsValid'$1_object_Object'#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_ObjectCore'(bytes: Vec (int)): $1_object_ObjectCore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_ObjectCore'(bytes); +$IsValid'$1_object_ObjectCore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_TombStone'(bytes: Vec (int)): $1_object_TombStone; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_TombStone'(bytes); +$IsValid'$1_object_TombStone'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Transfer'(bytes: Vec (int)): $1_object_Transfer; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Transfer'(bytes); +$IsValid'$1_object_Transfer'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_TransferEvent'(bytes: Vec (int)): $1_object_TransferEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_TransferEvent'(bytes); +$IsValid'$1_object_TransferEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_TransferRef'(bytes: Vec (int)): $1_object_TransferRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_TransferRef'(bytes); +$IsValid'$1_object_TransferRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_Untransferable'(bytes: Vec (int)): $1_object_Untransferable; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_Untransferable'(bytes); +$IsValid'$1_object_Untransferable'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_function_info_FunctionInfo'(bytes: Vec (int)): $1_function_info_FunctionInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_function_info_FunctionInfo'(bytes); +$IsValid'$1_function_info_FunctionInfo'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_TransferRef'(bytes: Vec (int)): $1_fungible_asset_TransferRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_TransferRef'(bytes); +$IsValid'$1_fungible_asset_TransferRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Untransferable'(bytes: Vec (int)): $1_fungible_asset_Untransferable; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Untransferable'(bytes); +$IsValid'$1_fungible_asset_Untransferable'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_BurnRef'(bytes: Vec (int)): $1_fungible_asset_BurnRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_BurnRef'(bytes); +$IsValid'$1_fungible_asset_BurnRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentFungibleBalance'(bytes: Vec (int)): $1_fungible_asset_ConcurrentFungibleBalance; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentFungibleBalance'(bytes); +$IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentSupply'(bytes: Vec (int)): $1_fungible_asset_ConcurrentSupply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_ConcurrentSupply'(bytes); +$IsValid'$1_fungible_asset_ConcurrentSupply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Deposit'(bytes: Vec (int)): $1_fungible_asset_Deposit; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Deposit'(bytes); +$IsValid'$1_fungible_asset_Deposit'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_DispatchFunctionStore'(bytes: Vec (int)): $1_fungible_asset_DispatchFunctionStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_DispatchFunctionStore'(bytes); +$IsValid'$1_fungible_asset_DispatchFunctionStore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Frozen'(bytes: Vec (int)): $1_fungible_asset_Frozen; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Frozen'(bytes); +$IsValid'$1_fungible_asset_Frozen'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_FungibleAsset'(bytes: Vec (int)): $1_fungible_asset_FungibleAsset; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_FungibleAsset'(bytes); +$IsValid'$1_fungible_asset_FungibleAsset'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_FungibleStore'(bytes: Vec (int)): $1_fungible_asset_FungibleStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_FungibleStore'(bytes); +$IsValid'$1_fungible_asset_FungibleStore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Metadata'(bytes: Vec (int)): $1_fungible_asset_Metadata; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Metadata'(bytes); +$IsValid'$1_fungible_asset_Metadata'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_MintRef'(bytes: Vec (int)): $1_fungible_asset_MintRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_MintRef'(bytes); +$IsValid'$1_fungible_asset_MintRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Supply'(bytes: Vec (int)): $1_fungible_asset_Supply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Supply'(bytes); +$IsValid'$1_fungible_asset_Supply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_fungible_asset_Withdraw'(bytes: Vec (int)): $1_fungible_asset_Withdraw; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_fungible_asset_Withdraw'(bytes); +$IsValid'$1_fungible_asset_Withdraw'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dispatchable_fungible_asset_TransferRefStore'(bytes: Vec (int)): $1_dispatchable_fungible_asset_TransferRefStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dispatchable_fungible_asset_TransferRefStore'(bytes); +$IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_primary_fungible_store_DeriveRefPod'(bytes: Vec (int)): $1_primary_fungible_store_DeriveRefPod; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_primary_fungible_store_DeriveRefPod'(bytes); +$IsValid'$1_primary_fungible_store_DeriveRefPod'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Coin'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_Coin'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Coin'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Coin'#0''(bytes: Vec (int)): $1_coin_Coin'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Coin'#0''(bytes); +$IsValid'$1_coin_Coin'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_AggregatableCoin'#0''(bytes: Vec (int)): $1_coin_AggregatableCoin'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_AggregatableCoin'#0''(bytes); +$IsValid'$1_coin_AggregatableCoin'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_BurnCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_BurnCapability'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_BurnCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_BurnCapability'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_BurnCapability'#0''(bytes: Vec (int)): $1_coin_BurnCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_BurnCapability'#0''(bytes); +$IsValid'$1_coin_BurnCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_BurnRefReceipt'(bytes: Vec (int)): $1_coin_BurnRefReceipt; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_BurnRefReceipt'(bytes); +$IsValid'$1_coin_BurnRefReceipt'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinConversionMap'(bytes: Vec (int)): $1_coin_CoinConversionMap; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinConversionMap'(bytes); +$IsValid'$1_coin_CoinConversionMap'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinDeposit'(bytes: Vec (int)): $1_coin_CoinDeposit; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinDeposit'(bytes); +$IsValid'$1_coin_CoinDeposit'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinEventHandleDeletion'(bytes: Vec (int)): $1_coin_CoinEventHandleDeletion; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinEventHandleDeletion'(bytes); +$IsValid'$1_coin_CoinEventHandleDeletion'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_CoinInfo'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinInfo'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinInfo'#0''(bytes: Vec (int)): $1_coin_CoinInfo'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinInfo'#0''(bytes); +$IsValid'$1_coin_CoinInfo'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinStore'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_CoinStore'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinStore'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinStore'#0''(bytes: Vec (int)): $1_coin_CoinStore'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinStore'#0''(bytes); +$IsValid'$1_coin_CoinStore'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_CoinWithdraw'(bytes: Vec (int)): $1_coin_CoinWithdraw; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_CoinWithdraw'(bytes); +$IsValid'$1_coin_CoinWithdraw'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_FreezeCapability'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_FreezeCapability'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_FreezeCapability'#0''(bytes: Vec (int)): $1_coin_FreezeCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_FreezeCapability'#0''(bytes); +$IsValid'$1_coin_FreezeCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_MigrationFlag'(bytes: Vec (int)): $1_coin_MigrationFlag; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_MigrationFlag'(bytes); +$IsValid'$1_coin_MigrationFlag'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_MintCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_MintCapability'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_MintCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_MintCapability'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_MintCapability'#0''(bytes: Vec (int)): $1_coin_MintCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_MintCapability'#0''(bytes); +$IsValid'$1_coin_MintCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_MintRefReceipt'(bytes: Vec (int)): $1_coin_MintRefReceipt; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_MintRefReceipt'(bytes); +$IsValid'$1_coin_MintRefReceipt'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_PairCreation'(bytes: Vec (int)): $1_coin_PairCreation; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_PairCreation'(bytes); +$IsValid'$1_coin_PairCreation'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_PairedCoinType'(bytes: Vec (int)): $1_coin_PairedCoinType; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_PairedCoinType'(bytes); +$IsValid'$1_coin_PairedCoinType'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_PairedFungibleAssetRefs'(bytes: Vec (int)): $1_coin_PairedFungibleAssetRefs; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_PairedFungibleAssetRefs'(bytes); +$IsValid'$1_coin_PairedFungibleAssetRefs'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_SupplyConfig'(bytes: Vec (int)): $1_coin_SupplyConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_SupplyConfig'(bytes); +$IsValid'$1_coin_SupplyConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_TransferRefReceipt'(bytes: Vec (int)): $1_coin_TransferRefReceipt; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_TransferRefReceipt'(bytes); +$IsValid'$1_coin_TransferRefReceipt'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_Ghost$supply'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$supply'#0''(bytes: Vec (int)): $1_coin_Ghost$supply'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$supply'#0''(bytes); +$IsValid'$1_coin_Ghost$supply'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'#0''(bytes: Vec (int)): $1_coin_Ghost$aggregate_supply'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_coin_Ghost$aggregate_supply'#0''(bytes); +$IsValid'$1_coin_Ghost$aggregate_supply'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_DepositEvent'(bytes: Vec (int)): $1_treasury_DepositEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_DepositEvent'(bytes); +$IsValid'$1_treasury_DepositEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_WithdrawEvent'(bytes: Vec (int)): $1_treasury_WithdrawEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_WithdrawEvent'(bytes); +$IsValid'$1_treasury_WithdrawEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_LinearWithdrawCapability'#0''(bytes: Vec (int)): $1_treasury_LinearWithdrawCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_LinearWithdrawCapability'#0''(bytes); +$IsValid'$1_treasury_LinearWithdrawCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_Treasury'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_treasury_Treasury'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_Treasury'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_treasury_Treasury'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_Treasury'#0''(bytes: Vec (int)): $1_treasury_Treasury'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_Treasury'#0''(bytes); +$IsValid'$1_treasury_Treasury'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'#0''(bytes: Vec (int)): $1_treasury_WithdrawCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_treasury_WithdrawCapability'#0''(bytes); +$IsValid'$1_treasury_WithdrawCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_coin_DelegatedMintCapability'(bytes: Vec (int)): $1_starcoin_coin_DelegatedMintCapability; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_coin_DelegatedMintCapability'(bytes); +$IsValid'$1_starcoin_coin_DelegatedMintCapability'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_coin_Delegations'(bytes: Vec (int)): $1_starcoin_coin_Delegations; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_coin_Delegations'(bytes); +$IsValid'$1_starcoin_coin_Delegations'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_coin_MintCapStore'(bytes: Vec (int)): $1_starcoin_coin_MintCapStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_coin_MintCapStore'(bytes); +$IsValid'$1_starcoin_coin_MintCapStore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_coin_STC'(bytes: Vec (int)): $1_starcoin_coin_STC; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_coin_STC'(bytes); +$IsValid'$1_starcoin_coin_STC'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(bytes: Vec (int)): $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(bytes); +$IsValid'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(bytes: Vec (int)): $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(bytes); +$IsValid'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_version_Version''(bytes: Vec (int)): $1_on_chain_config_Config'$1_stc_version_Version'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_version_Version''(bytes); +$IsValid'$1_on_chain_config_Config'$1_stc_version_Version''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(bytes: Vec (int)): $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(bytes); +$IsValid'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_Config'#0''(bytes: Vec (int)): $1_on_chain_config_Config'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_Config'#0''(bytes); +$IsValid'$1_on_chain_config_Config'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'#0''(bytes: Vec (int)): $1_on_chain_config_ConfigChangeEvent'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ConfigChangeEvent'#0''(bytes); +$IsValid'$1_on_chain_config_ConfigChangeEvent'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'#0''(bytes: Vec (int)): $1_on_chain_config_ModifyConfigCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapability'#0''(bytes); +$IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(bytes: Vec (int)): $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(bytes); +$IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_DaoConfig'#0''(bytes: Vec (int)): $1_dao_DaoConfig'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_DaoConfig'#0''(bytes); +$IsValid'$1_dao_DaoConfig'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_DaoGlobalInfo'#0''(bytes: Vec (int)): $1_dao_DaoGlobalInfo'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_DaoGlobalInfo'#0''(bytes); +$IsValid'$1_dao_DaoGlobalInfo'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_Proposal'#0_#1''(bytes: Vec (int)): $1_dao_Proposal'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_Proposal'#0_#1''(bytes); +$IsValid'$1_dao_Proposal'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_Vote'#0''(bytes: Vec (int)): $1_dao_Vote'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_Vote'#0''(bytes); +$IsValid'$1_dao_Vote'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_VoteChangedEvent'(bytes: Vec (int)): $1_dao_VoteChangedEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_VoteChangedEvent'(bytes); +$IsValid'$1_dao_VoteChangedEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_block_reward_config_RewardConfig'(bytes: Vec (int)): $1_block_reward_config_RewardConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_block_reward_config_RewardConfig'(bytes); +$IsValid'$1_block_reward_config_RewardConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_block_reward_BlockRewardEvent'(bytes: Vec (int)): $1_block_reward_BlockRewardEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_block_reward_BlockRewardEvent'(bytes); +$IsValid'$1_block_reward_BlockRewardEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_block_reward_RewardInfo'(bytes: Vec (int)): $1_block_reward_RewardInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_block_reward_RewardInfo'(bytes); +$IsValid'$1_block_reward_RewardInfo'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_block_reward_RewardQueue'(bytes: Vec (int)): $1_block_reward_RewardQueue; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_block_reward_RewardQueue'(bytes); +$IsValid'$1_block_reward_RewardQueue'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_Signature'(bytes: Vec (int)): $1_bls12381_Signature; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_Signature'(bytes); +$IsValid'$1_bls12381_Signature'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_AggrOrMultiSignature'(bytes: Vec (int)): $1_bls12381_AggrOrMultiSignature; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_AggrOrMultiSignature'(bytes); +$IsValid'$1_bls12381_AggrOrMultiSignature'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_AggrPublicKeysWithPoP'(bytes: Vec (int)): $1_bls12381_AggrPublicKeysWithPoP; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_AggrPublicKeysWithPoP'(bytes); +$IsValid'$1_bls12381_AggrPublicKeysWithPoP'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_ProofOfPossession'(bytes: Vec (int)): $1_bls12381_ProofOfPossession; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_ProofOfPossession'(bytes); +$IsValid'$1_bls12381_ProofOfPossession'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_PublicKey'(bytes: Vec (int)): $1_bls12381_PublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_PublicKey'(bytes); +$IsValid'$1_bls12381_PublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_bls12381_PublicKeyWithPoP'(bytes: Vec (int)): $1_bls12381_PublicKeyWithPoP; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_bls12381_PublicKeyWithPoP'(bytes); +$IsValid'$1_bls12381_PublicKeyWithPoP'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_capability_Cap'#0''(bytes: Vec (int)): $1_capability_Cap'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_capability_Cap'#0''(bytes); +$IsValid'$1_capability_Cap'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_capability_CapDelegateState'#0''(bytes: Vec (int)): $1_capability_CapDelegateState'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_capability_CapDelegateState'#0''(bytes); +$IsValid'$1_capability_CapDelegateState'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_capability_CapState'#0''(bytes: Vec (int)): $1_capability_CapState'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_capability_CapState'#0''(bytes); +$IsValid'$1_capability_CapState'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_capability_LinearCap'#0''(bytes: Vec (int)): $1_capability_LinearCap'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_capability_LinearCap'#0''(bytes); +$IsValid'$1_capability_LinearCap'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_royalty_MutatorRef'(bytes: Vec (int)): $1_royalty_MutatorRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_royalty_MutatorRef'(bytes); +$IsValid'$1_royalty_MutatorRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_royalty_Royalty'(bytes: Vec (int)): $1_royalty_Royalty; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_royalty_Royalty'(bytes); +$IsValid'$1_royalty_Royalty'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_ConcurrentSupply'(bytes: Vec (int)): $1_collection_ConcurrentSupply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_ConcurrentSupply'(bytes); +$IsValid'$1_collection_ConcurrentSupply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_MutatorRef'(bytes: Vec (int)): $1_collection_MutatorRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_MutatorRef'(bytes); +$IsValid'$1_collection_MutatorRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_Burn'(bytes: Vec (int)): $1_collection_Burn; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_Burn'(bytes); +$IsValid'$1_collection_Burn'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_BurnEvent'(bytes: Vec (int)): $1_collection_BurnEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_BurnEvent'(bytes); +$IsValid'$1_collection_BurnEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_Collection'(bytes: Vec (int)): $1_collection_Collection; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_Collection'(bytes); +$IsValid'$1_collection_Collection'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_FixedSupply'(bytes: Vec (int)): $1_collection_FixedSupply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_FixedSupply'(bytes); +$IsValid'$1_collection_FixedSupply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_Mint'(bytes: Vec (int)): $1_collection_Mint; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_Mint'(bytes); +$IsValid'$1_collection_Mint'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_MintEvent'(bytes: Vec (int)): $1_collection_MintEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_MintEvent'(bytes); +$IsValid'$1_collection_MintEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_Mutation'(bytes: Vec (int)): $1_collection_Mutation; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_Mutation'(bytes); +$IsValid'$1_collection_Mutation'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_MutationEvent'(bytes: Vec (int)): $1_collection_MutationEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_MutationEvent'(bytes); +$IsValid'$1_collection_MutationEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_SetMaxSupply'(bytes: Vec (int)): $1_collection_SetMaxSupply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_SetMaxSupply'(bytes); +$IsValid'$1_collection_SetMaxSupply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_collection_UnlimitedSupply'(bytes: Vec (int)): $1_collection_UnlimitedSupply; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_collection_UnlimitedSupply'(bytes); +$IsValid'$1_collection_UnlimitedSupply'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_comparator_Result'(bytes: Vec (int)): $1_comparator_Result; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_comparator_Result'(bytes); +$IsValid'$1_comparator_Result'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_consensus_config_ConsensusConfig'(bytes: Vec (int)): $1_consensus_config_ConsensusConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_consensus_config_ConsensusConfig'(bytes); +$IsValid'$1_consensus_config_ConsensusConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_copyable_any_Any'(bytes: Vec (int)): $1_copyable_any_Any; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_copyable_any_Any'(bytes); +$IsValid'$1_copyable_any_Any'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_crypto_algebra_Element'#0''(bytes: Vec (int)): $1_crypto_algebra_Element'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_crypto_algebra_Element'#0''(bytes); +$IsValid'$1_crypto_algebra_Element'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_crypto_algebra_Element'#1''(bytes: Vec (int)): $1_crypto_algebra_Element'#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_crypto_algebra_Element'#1''(bytes); +$IsValid'$1_crypto_algebra_Element'#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_crypto_algebra_Element'#2''(bytes: Vec (int)): $1_crypto_algebra_Element'#2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_crypto_algebra_Element'#2''(bytes); +$IsValid'$1_crypto_algebra_Element'#2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_version_Version'(bytes: Vec (int)): $1_stc_version_Version; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_version_Version'(bytes); +$IsValid'$1_stc_version_Version'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(bytes: Vec (int)): Table int ($1_account_SignerCapability); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(bytes); +$IsValid'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(bytes: Vec (int)): Table int ($1_object_property_map_PropertyValue); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(bytes); +$IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(bytes: Vec (int)): Table int ($1_property_map_PropertyValue); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(bytes); +$IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_reserved_accounts_signer_SignerResponsbility'(bytes: Vec (int)): $1_reserved_accounts_signer_SignerResponsbility; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_reserved_accounts_signer_SignerResponsbility'(bytes); +$IsValid'$1_reserved_accounts_signer_SignerResponsbility'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataRecord'u128''(bytes: Vec (int)): $1_oracle_DataRecord'u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataRecord'u128''(bytes); +$IsValid'$1_oracle_DataRecord'u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataRecord'#0''(bytes: Vec (int)): $1_oracle_DataRecord'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataRecord'#0''(bytes); +$IsValid'$1_oracle_DataRecord'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataRecord'#1''(bytes: Vec (int)): $1_oracle_DataRecord'#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataRecord'#1''(bytes); +$IsValid'$1_oracle_DataRecord'#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataRecord'#2''(bytes: Vec (int)): $1_oracle_DataRecord'#2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataRecord'#2''(bytes); +$IsValid'$1_oracle_DataRecord'#2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataSource'#0_u128''(bytes: Vec (int)): $1_oracle_DataSource'#0_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataSource'#0_u128''(bytes); +$IsValid'$1_oracle_DataSource'#0_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#1''(bytes: Vec (int)): $1_oracle_DataSource'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#1''(bytes); +$IsValid'$1_oracle_DataSource'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#2''(bytes: Vec (int)): $1_oracle_DataSource'#0_#2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_DataSource'#0_#2''(bytes); +$IsValid'$1_oracle_DataSource'#0_#2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_GenesisSignerCapability'(bytes: Vec (int)): $1_oracle_GenesisSignerCapability; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_GenesisSignerCapability'(bytes); +$IsValid'$1_oracle_GenesisSignerCapability'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(bytes: Vec (int)): $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(bytes); +$IsValid'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_u128''(bytes: Vec (int)): $1_oracle_OracleFeed'#0_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_u128''(bytes); +$IsValid'$1_oracle_OracleFeed'#0_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#1''(bytes: Vec (int)): $1_oracle_OracleFeed'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#1''(bytes); +$IsValid'$1_oracle_OracleFeed'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#2''(bytes: Vec (int)): $1_oracle_OracleFeed'#0_#2'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleFeed'#0_#2''(bytes); +$IsValid'$1_oracle_OracleFeed'#0_#2''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_#1''(bytes: Vec (int)): $1_oracle_OracleInfo'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleInfo'#0_#1''(bytes); +$IsValid'$1_oracle_OracleInfo'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_u128''(bytes: Vec (int)): $1_oracle_OracleUpdateEvent'#0_u128'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_u128''(bytes); +$IsValid'$1_oracle_OracleUpdateEvent'#0_u128''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_#1''(bytes: Vec (int)): $1_oracle_OracleUpdateEvent'#0_#1'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_OracleUpdateEvent'#0_#1''(bytes); +$IsValid'$1_oracle_OracleUpdateEvent'#0_#1''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(bytes: Vec (int)): $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(bytes); +$IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_UpdateCapability'#0''(bytes: Vec (int)): $1_oracle_UpdateCapability'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_UpdateCapability'#0''(bytes); +$IsValid'$1_oracle_UpdateCapability'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_oracle_price_PriceOracleInfo'(bytes: Vec (int)): $1_oracle_price_PriceOracleInfo; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_oracle_price_PriceOracleInfo'(bytes); +$IsValid'$1_oracle_price_PriceOracleInfo'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_easy_gas_GasFeeAddress'(bytes: Vec (int)): $1_easy_gas_GasFeeAddress; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_easy_gas_GasFeeAddress'(bytes); +$IsValid'$1_easy_gas_GasFeeAddress'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_easy_gas_GasTokenEntry'(bytes: Vec (int)): $1_easy_gas_GasTokenEntry; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_easy_gas_GasTokenEntry'(bytes); +$IsValid'$1_easy_gas_GasTokenEntry'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_epoch_Epoch'(bytes: Vec (int)): $1_epoch_Epoch; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_epoch_Epoch'(bytes); +$IsValid'$1_epoch_Epoch'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_epoch_EpochData'(bytes: Vec (int)): $1_epoch_EpochData; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_epoch_EpochData'(bytes); +$IsValid'$1_epoch_EpochData'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_epoch_NewEpochEvent'(bytes: Vec (int)): $1_epoch_NewEpochEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_epoch_NewEpochEvent'(bytes); +$IsValid'$1_epoch_NewEpochEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_managed_coin_Capabilities'#0''(bytes: Vec (int)): $1_managed_coin_Capabilities'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_managed_coin_Capabilities'#0''(bytes); +$IsValid'$1_managed_coin_Capabilities'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_property_map_MutatorRef'(bytes: Vec (int)): $1_object_property_map_MutatorRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_property_map_MutatorRef'(bytes); +$IsValid'$1_object_property_map_MutatorRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_property_map_PropertyMap'(bytes: Vec (int)): $1_object_property_map_PropertyMap; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_property_map_PropertyMap'(bytes); +$IsValid'$1_object_property_map_PropertyMap'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_property_map_PropertyValue'(bytes: Vec (int)): $1_object_property_map_PropertyValue; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_property_map_PropertyValue'(bytes); +$IsValid'$1_object_property_map_PropertyValue'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_BurnRef'(bytes: Vec (int)): $1_object_token_BurnRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_BurnRef'(bytes); +$IsValid'$1_object_token_BurnRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_Token'(bytes: Vec (int)): $1_object_token_Token; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_Token'(bytes); +$IsValid'$1_object_token_Token'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_MutatorRef'(bytes: Vec (int)): $1_object_token_MutatorRef; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_MutatorRef'(bytes); +$IsValid'$1_object_token_MutatorRef'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_Mutation'(bytes: Vec (int)): $1_object_token_Mutation; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_Mutation'(bytes); +$IsValid'$1_object_token_Mutation'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_MutationEvent'(bytes: Vec (int)): $1_object_token_MutationEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_MutationEvent'(bytes); +$IsValid'$1_object_token_MutationEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_object_token_TokenIdentifiers'(bytes: Vec (int)): $1_object_token_TokenIdentifiers; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_object_token_TokenIdentifiers'(bytes); +$IsValid'$1_object_token_TokenIdentifiers'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(bytes: Vec (int)): $1_stc_transaction_timeout_config_TransactionTimeoutConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(bytes); +$IsValid'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_pool_u64_unbound_Pool'(bytes: Vec (int)): $1_pool_u64_unbound_Pool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_pool_u64_unbound_Pool'(bytes); +$IsValid'$1_pool_u64_unbound_Pool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_property_map_PropertyMap'(bytes: Vec (int)): $1_property_map_PropertyMap; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_property_map_PropertyMap'(bytes); +$IsValid'$1_property_map_PropertyMap'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_property_map_PropertyValue'(bytes: Vec (int)): $1_property_map_PropertyValue; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_property_map_PropertyValue'(bytes); +$IsValid'$1_property_map_PropertyValue'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_account_DirectTransferConfig'(bytes: Vec (int)): $1_starcoin_account_DirectTransferConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_account_DirectTransferConfig'(bytes); +$IsValid'$1_starcoin_account_DirectTransferConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_resource_account_Container'(bytes: Vec (int)): $1_resource_account_Container; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_resource_account_Container'(bytes); +$IsValid'$1_resource_account_Container'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ring_Ring'#0''(bytes: Vec (int)): $1_ring_Ring'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ring_Ring'#0''(bytes); +$IsValid'$1_ring_Ring'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_CompressedRistretto'(bytes: Vec (int)): $1_ristretto255_CompressedRistretto; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_CompressedRistretto'(bytes); +$IsValid'$1_ristretto255_CompressedRistretto'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_RistrettoPoint'(bytes: Vec (int)): $1_ristretto255_RistrettoPoint; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_RistrettoPoint'(bytes); +$IsValid'$1_ristretto255_RistrettoPoint'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_Scalar'(bytes: Vec (int)): $1_ristretto255_Scalar; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_Scalar'(bytes); +$IsValid'$1_ristretto255_Scalar'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_pedersen_Commitment'(bytes: Vec (int)): $1_ristretto255_pedersen_Commitment; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_pedersen_Commitment'(bytes); +$IsValid'$1_ristretto255_pedersen_Commitment'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_bulletproofs_RangeProof'(bytes: Vec (int)): $1_ristretto255_bulletproofs_RangeProof; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_bulletproofs_RangeProof'(bytes); +$IsValid'$1_ristretto255_bulletproofs_RangeProof'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_elgamal_Ciphertext'(bytes: Vec (int)): $1_ristretto255_elgamal_Ciphertext; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_elgamal_Ciphertext'(bytes); +$IsValid'$1_ristretto255_elgamal_Ciphertext'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedCiphertext'(bytes: Vec (int)): $1_ristretto255_elgamal_CompressedCiphertext; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedCiphertext'(bytes); +$IsValid'$1_ristretto255_elgamal_CompressedCiphertext'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedPubkey'(bytes: Vec (int)): $1_ristretto255_elgamal_CompressedPubkey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_ristretto255_elgamal_CompressedPubkey'(bytes); +$IsValid'$1_ristretto255_elgamal_CompressedPubkey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_secp256k1_ECDSARawPublicKey'(bytes: Vec (int)): $1_secp256k1_ECDSARawPublicKey; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_secp256k1_ECDSARawPublicKey'(bytes); +$IsValid'$1_secp256k1_ECDSARawPublicKey'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_secp256k1_ECDSASignature'(bytes: Vec (int)): $1_secp256k1_ECDSASignature; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_secp256k1_ECDSASignature'(bytes); +$IsValid'$1_secp256k1_ECDSASignature'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_smart_vector_SmartVector'#0''(bytes: Vec (int)): $1_smart_vector_SmartVector'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_smart_vector_SmartVector'#0''(bytes); +$IsValid'$1_smart_vector_SmartVector'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_token_StarcoinCollection'(bytes: Vec (int)): $1_starcoin_token_StarcoinCollection; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_token_StarcoinCollection'(bytes); +$IsValid'$1_starcoin_token_StarcoinCollection'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_starcoin_token_StarcoinToken'(bytes: Vec (int)): $1_starcoin_token_StarcoinToken; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_starcoin_token_StarcoinToken'(bytes); +$IsValid'$1_starcoin_token_StarcoinToken'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(bytes: Vec (int)): $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(bytes); +$IsValid'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'#0''(bytes: Vec (int)): $1_stc_transaction_fee_TransactionFee'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_transaction_fee_TransactionFee'#0''(bytes); +$IsValid'$1_stc_transaction_fee_TransactionFee'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_block_BlockMetadata'(bytes: Vec (int)): $1_stc_block_BlockMetadata; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_block_BlockMetadata'(bytes); +$IsValid'$1_stc_block_BlockMetadata'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_block_NewBlockEvent'(bytes: Vec (int)): $1_stc_block_NewBlockEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_block_NewBlockEvent'(bytes); +$IsValid'$1_stc_block_NewBlockEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_stc_offer_Offer'#0''(bytes: Vec (int)): $1_stc_offer_Offer'#0'; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_stc_offer_Offer'#0''(bytes); +$IsValid'$1_stc_offer_Offer'#0''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutate'(bytes: Vec (int)): $1_token_event_store_CollectionDescriptionMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutate'(bytes); +$IsValid'$1_token_event_store_CollectionDescriptionMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutateEvent'(bytes: Vec (int)): $1_token_event_store_CollectionDescriptionMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionDescriptionMutateEvent'(bytes); +$IsValid'$1_token_event_store_CollectionDescriptionMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutate'(bytes: Vec (int)): $1_token_event_store_CollectionMaxiumMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutate'(bytes); +$IsValid'$1_token_event_store_CollectionMaxiumMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutateEvent'(bytes: Vec (int)): $1_token_event_store_CollectionMaxiumMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionMaxiumMutateEvent'(bytes); +$IsValid'$1_token_event_store_CollectionMaxiumMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutate'(bytes: Vec (int)): $1_token_event_store_CollectionUriMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutate'(bytes); +$IsValid'$1_token_event_store_CollectionUriMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutateEvent'(bytes: Vec (int)): $1_token_event_store_CollectionUriMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_CollectionUriMutateEvent'(bytes); +$IsValid'$1_token_event_store_CollectionUriMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutate'(bytes: Vec (int)): $1_token_event_store_DefaultPropertyMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutate'(bytes); +$IsValid'$1_token_event_store_DefaultPropertyMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutateEvent'(bytes: Vec (int)): $1_token_event_store_DefaultPropertyMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_DefaultPropertyMutateEvent'(bytes); +$IsValid'$1_token_event_store_DefaultPropertyMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutate'(bytes: Vec (int)): $1_token_event_store_DescriptionMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutate'(bytes); +$IsValid'$1_token_event_store_DescriptionMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutateEvent'(bytes: Vec (int)): $1_token_event_store_DescriptionMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_DescriptionMutateEvent'(bytes); +$IsValid'$1_token_event_store_DescriptionMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_MaximumMutate'(bytes: Vec (int)): $1_token_event_store_MaximumMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_MaximumMutate'(bytes); +$IsValid'$1_token_event_store_MaximumMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_MaxiumMutateEvent'(bytes: Vec (int)): $1_token_event_store_MaxiumMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_MaxiumMutateEvent'(bytes); +$IsValid'$1_token_event_store_MaxiumMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_OptInTransfer'(bytes: Vec (int)): $1_token_event_store_OptInTransfer; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_OptInTransfer'(bytes); +$IsValid'$1_token_event_store_OptInTransfer'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_OptInTransferEvent'(bytes: Vec (int)): $1_token_event_store_OptInTransferEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_OptInTransferEvent'(bytes); +$IsValid'$1_token_event_store_OptInTransferEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutate'(bytes: Vec (int)): $1_token_event_store_RoyaltyMutate; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutate'(bytes); +$IsValid'$1_token_event_store_RoyaltyMutate'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutateEvent'(bytes: Vec (int)): $1_token_event_store_RoyaltyMutateEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_RoyaltyMutateEvent'(bytes); +$IsValid'$1_token_event_store_RoyaltyMutateEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_TokenEventStoreV1'(bytes: Vec (int)): $1_token_event_store_TokenEventStoreV1; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_TokenEventStoreV1'(bytes); +$IsValid'$1_token_event_store_TokenEventStoreV1'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_UriMutation'(bytes: Vec (int)): $1_token_event_store_UriMutation; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_UriMutation'(bytes); +$IsValid'$1_token_event_store_UriMutation'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_event_store_UriMutationEvent'(bytes: Vec (int)): $1_token_event_store_UriMutationEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_event_store_UriMutationEvent'(bytes); +$IsValid'$1_token_event_store_UriMutationEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_Deposit'(bytes: Vec (int)): $1_token_Deposit; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_Deposit'(bytes); +$IsValid'$1_token_Deposit'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_DepositEvent'(bytes: Vec (int)): $1_token_DepositEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_DepositEvent'(bytes); +$IsValid'$1_token_DepositEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_Withdraw'(bytes: Vec (int)): $1_token_Withdraw; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_Withdraw'(bytes); +$IsValid'$1_token_Withdraw'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_WithdrawEvent'(bytes: Vec (int)): $1_token_WithdrawEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_WithdrawEvent'(bytes); +$IsValid'$1_token_WithdrawEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_WithdrawCapability'(bytes: Vec (int)): $1_token_WithdrawCapability; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_WithdrawCapability'(bytes); +$IsValid'$1_token_WithdrawCapability'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_Token'(bytes: Vec (int)): $1_token_Token; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_Token'(bytes); +$IsValid'$1_token_Token'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_Royalty'(bytes: Vec (int)): $1_token_Royalty; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_Royalty'(bytes); +$IsValid'$1_token_Royalty'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_BurnToken'(bytes: Vec (int)): $1_token_BurnToken; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_BurnToken'(bytes); +$IsValid'$1_token_BurnToken'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_BurnTokenEvent'(bytes: Vec (int)): $1_token_BurnTokenEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_BurnTokenEvent'(bytes); +$IsValid'$1_token_BurnTokenEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CollectionData'(bytes: Vec (int)): $1_token_CollectionData; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CollectionData'(bytes); +$IsValid'$1_token_CollectionData'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CollectionMutabilityConfig'(bytes: Vec (int)): $1_token_CollectionMutabilityConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CollectionMutabilityConfig'(bytes); +$IsValid'$1_token_CollectionMutabilityConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_Collections'(bytes: Vec (int)): $1_token_Collections; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_Collections'(bytes); +$IsValid'$1_token_Collections'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CreateCollection'(bytes: Vec (int)): $1_token_CreateCollection; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CreateCollection'(bytes); +$IsValid'$1_token_CreateCollection'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CreateCollectionEvent'(bytes: Vec (int)): $1_token_CreateCollectionEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CreateCollectionEvent'(bytes); +$IsValid'$1_token_CreateCollectionEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CreateTokenData'(bytes: Vec (int)): $1_token_CreateTokenData; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CreateTokenData'(bytes); +$IsValid'$1_token_CreateTokenData'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_CreateTokenDataEvent'(bytes: Vec (int)): $1_token_CreateTokenDataEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_CreateTokenDataEvent'(bytes); +$IsValid'$1_token_CreateTokenDataEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_MintToken'(bytes: Vec (int)): $1_token_MintToken; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_MintToken'(bytes); +$IsValid'$1_token_MintToken'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_MintTokenEvent'(bytes: Vec (int)): $1_token_MintTokenEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_MintTokenEvent'(bytes); +$IsValid'$1_token_MintTokenEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMap'(bytes: Vec (int)): $1_token_MutateTokenPropertyMap; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMap'(bytes); +$IsValid'$1_token_MutateTokenPropertyMap'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMapEvent'(bytes: Vec (int)): $1_token_MutateTokenPropertyMapEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_MutateTokenPropertyMapEvent'(bytes); +$IsValid'$1_token_MutateTokenPropertyMapEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_TokenData'(bytes: Vec (int)): $1_token_TokenData; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_TokenData'(bytes); +$IsValid'$1_token_TokenData'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_TokenDataId'(bytes: Vec (int)): $1_token_TokenDataId; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_TokenDataId'(bytes); +$IsValid'$1_token_TokenDataId'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_TokenId'(bytes: Vec (int)): $1_token_TokenId; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_TokenId'(bytes); +$IsValid'$1_token_TokenId'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_TokenMutabilityConfig'(bytes: Vec (int)): $1_token_TokenMutabilityConfig; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_TokenMutabilityConfig'(bytes); +$IsValid'$1_token_TokenMutabilityConfig'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_TokenStore'(bytes: Vec (int)): $1_token_TokenStore; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_TokenStore'(bytes); +$IsValid'$1_token_TokenStore'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_PendingClaims'(bytes: Vec (int)): $1_token_transfers_PendingClaims; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_PendingClaims'(bytes); +$IsValid'$1_token_transfers_PendingClaims'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOffer'(bytes: Vec (int)): $1_token_transfers_TokenCancelOffer; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOffer'(bytes); +$IsValid'$1_token_transfers_TokenCancelOffer'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOfferEvent'(bytes: Vec (int)): $1_token_transfers_TokenCancelOfferEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_TokenCancelOfferEvent'(bytes); +$IsValid'$1_token_transfers_TokenCancelOfferEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_TokenClaim'(bytes: Vec (int)): $1_token_transfers_TokenClaim; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_TokenClaim'(bytes); +$IsValid'$1_token_transfers_TokenClaim'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_TokenClaimEvent'(bytes: Vec (int)): $1_token_transfers_TokenClaimEvent; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_TokenClaimEvent'(bytes); +$IsValid'$1_token_transfers_TokenClaimEvent'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'$1_token_transfers_TokenOfferId'(bytes: Vec (int)): $1_token_transfers_TokenOfferId; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'$1_token_transfers_TokenOfferId'(bytes); +$IsValid'$1_token_transfers_TokenOfferId'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'#1'(bytes: Vec (int)): #1; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'#1'(bytes); +$IsValid'#1'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'#2'(bytes: Vec (int)): #2; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'#2'(bytes); +$IsValid'#2'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:7:9+41 +function $1_from_bcs_deserialize'#3'(bytes: Vec (int)): #3; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserialize'#3'(bytes); +$IsValid'#3'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u16'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u16'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'u32'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'u32'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'bool''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'bool''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'vec'u8'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'vec'u8'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'vec'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'vec'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_option_Option'$1_property_map_PropertyValue'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_option_Option'$1_property_map_PropertyValue'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_option_Option'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_option_Option'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_string_String''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_string_String''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_type_info_TypeInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_type_info_TypeInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ed25519_ValidatedPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ed25519_ValidatedPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_multi_ed25519_ValidatedPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_multi_ed25519_ValidatedPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_any_Any''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_any_Any''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_big_vector_BigVector'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_big_vector_BigVector'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_transaction_context_EntryFunctionPayload''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_transaction_context_EntryFunctionPayload''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_transaction_context_MultisigPayload''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_transaction_context_MultisigPayload''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_object_DeleteRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_object_DeleteRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_object_TransferRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_object_TransferRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_function_info_FunctionInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_function_info_FunctionInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_fungible_asset_TransferRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_fungible_asset_TransferRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_fungible_asset_BurnRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_fungible_asset_BurnRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_fungible_asset_FungibleStore''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_fungible_asset_FungibleStore''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_fungible_asset_MintRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_fungible_asset_MintRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_starcoin_coin_DelegatedMintCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_starcoin_coin_DelegatedMintCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_block_reward_RewardInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_block_reward_RewardInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_bls12381_Signature''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_bls12381_Signature''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_bls12381_AggrOrMultiSignature''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_bls12381_AggrOrMultiSignature''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_bls12381_PublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_bls12381_PublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_bls12381_PublicKeyWithPoP''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_bls12381_PublicKeyWithPoP''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_royalty_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_royalty_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_royalty_Royalty''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_royalty_Royalty''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_collection_ConcurrentSupply''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_collection_ConcurrentSupply''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_collection_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_collection_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_collection_Collection''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_collection_Collection''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_collection_FixedSupply''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_collection_FixedSupply''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#1'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_crypto_algebra_Element'#1'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'u128'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'u128'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'#1'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_oracle_DataRecord'#1'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_object_token_BurnRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_object_token_BurnRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_object_token_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_object_token_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_property_map_PropertyValue''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_property_map_PropertyValue''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_CompressedRistretto''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_CompressedRistretto''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_RistrettoPoint''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_RistrettoPoint''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_Scalar''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_Scalar''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_pedersen_Commitment''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_pedersen_Commitment''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_Ciphertext''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_Ciphertext''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_CompressedPubkey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_ristretto255_elgamal_CompressedPubkey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_secp256k1_ECDSARawPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_secp256k1_ECDSARawPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'$1_token_WithdrawCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'$1_token_WithdrawCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'vec'#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'vec'#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'u8''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'u8''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_string_String''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_string_String''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_type_info_TypeInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_type_info_TypeInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ed25519_ValidatedPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ed25519_ValidatedPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_multi_ed25519_ValidatedPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_any_Any''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_any_Any''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_big_vector_BigVector'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_big_vector_BigVector'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_MultisigPayload''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_transaction_context_MultisigPayload''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_object_DeleteRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_object_DeleteRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_object_TransferRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_object_TransferRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_function_info_FunctionInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_function_info_FunctionInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_TransferRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_TransferRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_BurnRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_BurnRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_MintRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_fungible_asset_MintRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_AggrOrMultiSignature''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_bls12381_PublicKeyWithPoP''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_royalty_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_royalty_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_royalty_Royalty''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_royalty_Royalty''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_collection_ConcurrentSupply''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_collection_ConcurrentSupply''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_collection_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_collection_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_collection_FixedSupply''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_collection_FixedSupply''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#1'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_crypto_algebra_Element'#1'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_object_token_BurnRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_object_token_BurnRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_object_token_MutatorRef''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_object_token_MutatorRef''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_property_map_PropertyValue''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_property_map_PropertyValue''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_CompressedRistretto''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_CompressedRistretto''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_RistrettoPoint''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_RistrettoPoint''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_Scalar''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_Scalar''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_pedersen_Commitment''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_pedersen_Commitment''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'$1_token_WithdrawCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'$1_token_WithdrawCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_option_Option'#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_option_Option'#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_features_Features'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_features_Features'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_features_PendingFeatures'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_features_PendingFeatures'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'address_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'address_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'address_address''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'address_address''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'$1_string_String_$1_token_CollectionData''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'$1_string_String_$1_token_CollectionData''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenId_$1_token_Token''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'$1_token_TokenId_$1_token_Token''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_Table'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_Table'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_Signature'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_Signature'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationCapabilityOfferProofChallengeV2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_RotationProofChallenge''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_SignedMessage'$1_account_SignerCapabilityOfferProofChallengeV2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_SignedMessage'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_SignedMessage'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_UnvalidatedPublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_UnvalidatedPublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ed25519_ValidatedPublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ed25519_ValidatedPublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_multi_ed25519_Signature'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_multi_ed25519_Signature'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_multi_ed25519_UnvalidatedPublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_multi_ed25519_UnvalidatedPublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_multi_ed25519_ValidatedPublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_multi_ed25519_ValidatedPublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_TransferEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_TransferEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_DepositEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_DepositEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_WithdrawEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_treasury_WithdrawEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_VoteChangedEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_dao_VoteChangedEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_BurnEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_BurnEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MintEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MintEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MutationEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_collection_MutationEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_epoch_NewEpochEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_epoch_NewEpochEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_token_MutationEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_object_token_MutationEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_DepositEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_DepositEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_WithdrawEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_WithdrawEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_BurnTokenEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_BurnTokenEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateCollectionEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateCollectionEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MintTokenEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MintTokenEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_event_EventHandle'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_event_EventHandle'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_NIL''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#0_$1_string_utils_NIL''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_NIL''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#1_$1_string_utils_NIL''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_NIL''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#2_$1_string_utils_NIL''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_Cons'#3_$1_string_utils_NIL''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_Cons'#3_$1_string_utils_NIL''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_string_utils_NIL'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_string_utils_NIL'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_chain_id_ChainId'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_chain_id_ChainId'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_KeyRotation'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_KeyRotation'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_KeyRotationEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_KeyRotationEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_OriginatingAddress'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_OriginatingAddress'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_RotationCapabilityOfferProofChallengeV2'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_RotationCapabilityOfferProofChallengeV2'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_RotationProofChallenge'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_RotationProofChallenge'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_account_SignerCapabilityOfferProofChallengeV2'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_account_SignerCapabilityOfferProofChallengeV2'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_acl_ACL'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_acl_ACL'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_factory_AggregatorFactory'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_factory_AggregatorFactory'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u64''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u64''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_v2_Aggregator'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_v2_AggregatorSnapshot'u64''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_v2_AggregatorSnapshot'u64''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_aggregator_v2_DerivedStringSnapshot'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_aggregator_v2_DerivedStringSnapshot'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_any_Any'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_any_Any'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'u64_vec'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'u64_vec'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'address_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_table_with_length_TableWithLength'address_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_big_vector_BigVector'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_big_vector_BigVector'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bit_vector_BitVector'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bit_vector_BitVector'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fixed_point64_FixedPoint64'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fixed_point64_FixedPoint64'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_transaction_context_AUID'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_transaction_context_AUID'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_transaction_context_EntryFunctionPayload'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_transaction_context_EntryFunctionPayload'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_transaction_context_MultisigPayload'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_transaction_context_MultisigPayload'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_ConstructorRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_ConstructorRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_DeleteRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_DeleteRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_DeriveRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_DeriveRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_ExtendRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_ExtendRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_LinearTransferRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_LinearTransferRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_object_ObjectCore''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_object_ObjectCore''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_FungibleStore''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_FungibleStore''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_Metadata''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_fungible_asset_Metadata''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_collection_Collection''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_collection_Collection''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_object_token_Token''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_object_token_Token''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinCollection''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinCollection''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinToken''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'$1_starcoin_token_StarcoinToken''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Object'#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Object'#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_ObjectCore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_ObjectCore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_TombStone'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_TombStone'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Transfer'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Transfer'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_TransferEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_TransferEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_TransferRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_TransferRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_Untransferable'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_Untransferable'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_function_info_FunctionInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_function_info_FunctionInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_TransferRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_TransferRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Untransferable'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Untransferable'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_BurnRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_BurnRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentFungibleBalance'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentFungibleBalance'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentSupply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_ConcurrentSupply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Deposit'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Deposit'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_DispatchFunctionStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_DispatchFunctionStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Frozen'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Frozen'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_FungibleAsset'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_FungibleAsset'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_FungibleStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_FungibleStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Metadata'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Metadata'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_MintRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_MintRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Supply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Supply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_fungible_asset_Withdraw'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_fungible_asset_Withdraw'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dispatchable_fungible_asset_TransferRefStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dispatchable_fungible_asset_TransferRefStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_primary_fungible_store_DeriveRefPod'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_primary_fungible_store_DeriveRefPod'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Coin'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Coin'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Coin'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Coin'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_AggregatableCoin'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_AggregatableCoin'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_BurnCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_BurnCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_BurnCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_BurnCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_BurnRefReceipt'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_BurnRefReceipt'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinConversionMap'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinConversionMap'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinDeposit'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinDeposit'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinEventHandleDeletion'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinEventHandleDeletion'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinInfo'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinInfo'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinInfo'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinStore'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinStore'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinStore'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinStore'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_CoinWithdraw'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_CoinWithdraw'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_FreezeCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_FreezeCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_MigrationFlag'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_MigrationFlag'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_MintCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_MintCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_MintCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_MintCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_MintRefReceipt'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_MintRefReceipt'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_PairCreation'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_PairCreation'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_PairedCoinType'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_PairedCoinType'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_PairedFungibleAssetRefs'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_PairedFungibleAssetRefs'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_SupplyConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_SupplyConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_TransferRefReceipt'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_TransferRefReceipt'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$supply'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$supply'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_coin_Ghost$aggregate_supply'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_DepositEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_DepositEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_WithdrawEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_WithdrawEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_LinearWithdrawCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_LinearWithdrawCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_Treasury'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_Treasury'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_Treasury'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_Treasury'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_treasury_WithdrawCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_coin_DelegatedMintCapability'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_coin_DelegatedMintCapability'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_coin_Delegations'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_coin_Delegations'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_coin_MintCapStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_coin_MintCapStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_coin_STC'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_coin_STC'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_version_Version''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_version_Version''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_Config'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_Config'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ConfigChangeEvent'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_DaoConfig'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_DaoConfig'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_DaoGlobalInfo'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_DaoGlobalInfo'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_Proposal'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_Proposal'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_Vote'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_Vote'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_VoteChangedEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_VoteChangedEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_block_reward_config_RewardConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_block_reward_config_RewardConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_block_reward_BlockRewardEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_block_reward_BlockRewardEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_block_reward_RewardInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_block_reward_RewardInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_block_reward_RewardQueue'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_block_reward_RewardQueue'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_Signature'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_Signature'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_AggrOrMultiSignature'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_AggrOrMultiSignature'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_AggrPublicKeysWithPoP'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_AggrPublicKeysWithPoP'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_ProofOfPossession'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_ProofOfPossession'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_PublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_PublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_bls12381_PublicKeyWithPoP'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_bls12381_PublicKeyWithPoP'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_capability_Cap'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_capability_Cap'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_capability_CapDelegateState'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_capability_CapDelegateState'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_capability_CapState'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_capability_CapState'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_capability_LinearCap'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_capability_LinearCap'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_royalty_MutatorRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_royalty_MutatorRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_royalty_Royalty'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_royalty_Royalty'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_ConcurrentSupply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_ConcurrentSupply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_MutatorRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_MutatorRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_Burn'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_Burn'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_BurnEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_BurnEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_Collection'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_Collection'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_FixedSupply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_FixedSupply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_Mint'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_Mint'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_MintEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_MintEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_Mutation'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_Mutation'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_MutationEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_MutationEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_SetMaxSupply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_SetMaxSupply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_collection_UnlimitedSupply'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_collection_UnlimitedSupply'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_comparator_Result'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_comparator_Result'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_consensus_config_ConsensusConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_consensus_config_ConsensusConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_copyable_any_Any'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_copyable_any_Any'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_crypto_algebra_Element'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_crypto_algebra_Element'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_crypto_algebra_Element'#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_crypto_algebra_Element'#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_crypto_algebra_Element'#2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_crypto_algebra_Element'#2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_version_Version'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_version_Version'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_reserved_accounts_signer_SignerResponsbility'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_reserved_accounts_signer_SignerResponsbility'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataRecord'u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataRecord'u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataRecord'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataRecord'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataRecord'#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataRecord'#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataRecord'#2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataRecord'#2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataSource'#0_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataSource'#0_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_DataSource'#0_#2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_GenesisSignerCapability'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_GenesisSignerCapability'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#2''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleFeed'#0_#2''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleInfo'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_u128''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_u128''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_#1''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_OracleUpdateEvent'#0_#1''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_UpdateCapability'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_UpdateCapability'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_oracle_price_PriceOracleInfo'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_oracle_price_PriceOracleInfo'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_easy_gas_GasFeeAddress'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_easy_gas_GasFeeAddress'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_easy_gas_GasTokenEntry'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_easy_gas_GasTokenEntry'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_epoch_Epoch'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_epoch_Epoch'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_epoch_EpochData'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_epoch_EpochData'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_epoch_NewEpochEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_epoch_NewEpochEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_managed_coin_Capabilities'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_managed_coin_Capabilities'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_property_map_MutatorRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_property_map_MutatorRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_property_map_PropertyMap'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_property_map_PropertyMap'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_property_map_PropertyValue'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_property_map_PropertyValue'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_BurnRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_BurnRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_Token'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_Token'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_MutatorRef'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_MutatorRef'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_Mutation'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_Mutation'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_MutationEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_MutationEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_object_token_TokenIdentifiers'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_object_token_TokenIdentifiers'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_pool_u64_unbound_Pool'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_pool_u64_unbound_Pool'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_property_map_PropertyMap'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_property_map_PropertyMap'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_property_map_PropertyValue'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_property_map_PropertyValue'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_account_DirectTransferConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_account_DirectTransferConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_resource_account_Container'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_resource_account_Container'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ring_Ring'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ring_Ring'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_CompressedRistretto'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_CompressedRistretto'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_RistrettoPoint'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_RistrettoPoint'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_Scalar'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_Scalar'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_pedersen_Commitment'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_pedersen_Commitment'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_bulletproofs_RangeProof'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_bulletproofs_RangeProof'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_elgamal_Ciphertext'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_elgamal_Ciphertext'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedCiphertext'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedCiphertext'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedPubkey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_ristretto255_elgamal_CompressedPubkey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_secp256k1_ECDSARawPublicKey'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_secp256k1_ECDSARawPublicKey'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_secp256k1_ECDSASignature'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_secp256k1_ECDSASignature'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_smart_vector_SmartVector'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_smart_vector_SmartVector'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_token_StarcoinCollection'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_token_StarcoinCollection'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_starcoin_token_StarcoinToken'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_starcoin_token_StarcoinToken'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_transaction_fee_TransactionFee'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_block_BlockMetadata'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_block_BlockMetadata'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_block_NewBlockEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_block_NewBlockEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_stc_offer_Offer'#0''(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_stc_offer_Offer'#0''(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionDescriptionMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionMaxiumMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_CollectionUriMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_DefaultPropertyMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_DescriptionMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_MaximumMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_MaximumMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_MaxiumMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_MaxiumMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_OptInTransfer'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_OptInTransfer'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_OptInTransferEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_OptInTransferEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutate'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutate'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutateEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_RoyaltyMutateEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_TokenEventStoreV1'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_TokenEventStoreV1'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_UriMutation'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_UriMutation'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_event_store_UriMutationEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_event_store_UriMutationEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_Deposit'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_Deposit'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_DepositEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_DepositEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_Withdraw'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_Withdraw'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_WithdrawEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_WithdrawEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_WithdrawCapability'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_WithdrawCapability'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_Token'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_Token'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_Royalty'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_Royalty'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_BurnToken'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_BurnToken'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_BurnTokenEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_BurnTokenEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CollectionData'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CollectionData'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CollectionMutabilityConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CollectionMutabilityConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_Collections'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_Collections'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CreateCollection'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CreateCollection'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CreateCollectionEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CreateCollectionEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CreateTokenData'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CreateTokenData'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_CreateTokenDataEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_CreateTokenDataEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_MintToken'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_MintToken'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_MintTokenEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_MintTokenEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMap'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMap'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMapEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_MutateTokenPropertyMapEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_TokenData'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_TokenData'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_TokenDataId'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_TokenDataId'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_TokenId'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_TokenId'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_TokenMutabilityConfig'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_TokenMutabilityConfig'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_TokenStore'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_TokenStore'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_PendingClaims'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_PendingClaims'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOffer'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOffer'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOfferEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_TokenCancelOfferEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_TokenClaim'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_TokenClaim'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_TokenClaimEvent'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_TokenClaimEvent'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'$1_token_transfers_TokenOfferId'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'$1_token_transfers_TokenOfferId'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-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))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'#1'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'#1'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'#2'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'#2'(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.spec.move:11:9+47 +function $1_from_bcs_deserializable'#3'(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_from_bcs_deserializable'#3'(bytes); +$IsValid'bool'($$res))); + +// fun from_bcs::to_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:51:5+88 +procedure {:inline 1} $1_from_bcs_to_bytes(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:51:5+1 + assume {:print "$at(155,1447,1448)"} true; + assume {:print "$track_local(17,3,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume ($t2 == !$1_from_bcs_deserializable'vec'u8''($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + assume {:print "$track_abort(17,3):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, from_bcs::deserialize>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume $IsEqual'vec'u8''($t1, $1_from_bcs_deserialize'vec'u8''($t0)); + + // $t1 := opaque end: from_bcs::from_bytes>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$track_return(17,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:51:5+88 +procedure {:timeLimit 80} $1_from_bcs_to_bytes$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:51:5+1 + assume {:print "$at(155,1447,1448)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:51:5+1 + assume {:print "$track_local(17,3,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume ($t2 == !$1_from_bcs_deserializable'vec'u8''($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + assume {:print "$track_abort(17,3):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$at(155,1504,1529)"} true; + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, from_bcs::deserialize>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume $IsEqual'vec'u8''($t1, $1_from_bcs_deserialize'vec'u8''($t0)); + + // $t1 := opaque end: from_bcs::from_bytes>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:52:9+25 + assume {:print "$track_return(17,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:53:5+1 + assume {:print "$at(155,1534,1535)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:47:5+84 +procedure {:inline 1} $1_from_bcs_to_address(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:47:5+1 + assume {:print "$at(155,1357,1358)"} true; + assume {:print "$track_local(17,1,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable
($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume ($t2 == !$1_from_bcs_deserializable'address'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + assume {:print "$track_abort(17,1):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + assume $IsValid'address'($t1); + + // assume Eq
($t1, from_bcs::deserialize
($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume $IsEqual'address'($t1, $1_from_bcs_deserialize'address'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$track_return(17,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:47:5+84 +procedure {:timeLimit 80} $1_from_bcs_to_address$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:47:5+1 + assume {:print "$at(155,1357,1358)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:47:5+1 + assume {:print "$track_local(17,1,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable
($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume ($t2 == !$1_from_bcs_deserializable'address'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + assume {:print "$track_abort(17,1):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$at(155,1413,1435)"} true; + assume $IsValid'address'($t1); + + // assume Eq
($t1, from_bcs::deserialize
($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume $IsEqual'address'($t1, $1_from_bcs_deserialize'address'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:48:9+22 + assume {:print "$track_return(17,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:49:5+1 + assume {:print "$at(155,1440,1441)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_bool [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:19:5+75 +procedure {:inline 1} $1_from_bcs_to_bool(_$t0: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:19:5+1 + assume {:print "$at(155,805,806)"} true; + assume {:print "$track_local(17,2,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume ($t2 == !$1_from_bcs_deserializable'bool'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + assume {:print "$track_abort(17,2):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + assume $IsValid'bool'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume $IsEqual'bool'($t1, $1_from_bcs_deserialize'bool'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$track_return(17,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_bool [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:19:5+75 +procedure {:timeLimit 80} $1_from_bcs_to_bool$verify(_$t0: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:19:5+1 + assume {:print "$at(155,805,806)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:19:5+1 + assume {:print "$track_local(17,2,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume ($t2 == !$1_from_bcs_deserializable'bool'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + assume {:print "$track_abort(17,2):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$at(155,855,874)"} true; + assume $IsValid'bool'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume $IsEqual'bool'($t1, $1_from_bcs_deserialize'bool'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:20:9+19 + assume {:print "$track_return(17,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:21:5+1 + assume {:print "$at(155,879,880)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:55:5+250 +procedure {:inline 1} $1_from_bcs_to_string(_$t0: Vec (int)) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: bool; + var $t4: int; + var $t5: Vec (int); + var $t6: bool; + var $t7: int; + 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[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:55:5+1 + assume {:print "$at(155,1541,1542)"} true; + assume {:print "$track_local(17,4,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + + // assume Identical($t3, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume ($t3 == !$1_from_bcs_deserializable'$1_string_String'($t0)); + + // if ($t3) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + if ($t3) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 +L6: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + assume {:print "$track_abort(17,4):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 +L5: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + assume $IsValid'$1_string_String'($t2); + + // assume Eq($t2, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume $IsEqual'$1_string_String'($t2, $1_from_bcs_deserialize'$1_string_String'($t0)); + + // $t2 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + + // trace_local[s]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:13+1 + assume {:print "$track_local(17,4,1):", $t2} $t2 == $t2; + + // $t5 := string::bytes($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:45+17 + assume {:print "$at(155,1740,1757)"} true; + call $t5 := $1_string_bytes($t2); + if ($abort_flag) { + assume {:print "$at(155,1740,1757)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(17,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := opaque begin: string::internal_check_utf8($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + assume $IsValid'bool'($t6); + + // assume Eq($t6, string::spec_internal_check_utf8($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + assume $IsEqual'bool'($t6, $1_string_spec_internal_check_utf8($t5)); + + // $t6 := opaque end: string::internal_check_utf8($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + assume {:print "$at(155,1704,1774)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:65+13 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:65+13 + assume {:print "$at(155,1760,1773)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + assume {:print "$at(155,1704,1774)"} true; + assume {:print "$track_abort(17,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:59:9+1 + assume {:print "$at(155,1784,1785)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:59:9+1 + assume {:print "$at(155,1784,1785)"} true; + assume {:print "$track_return(17,4,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:55:5+250 +procedure {:timeLimit 80} $1_from_bcs_to_string$verify(_$t0: Vec (int)) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: bool; + var $t4: int; + var $t5: Vec (int); + var $t6: bool; + var $t7: int; + var $t0: Vec (int); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:55:5+1 + assume {:print "$at(155,1541,1542)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:55:5+1 + assume {:print "$track_local(17,4,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + + // assume Identical($t3, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume ($t3 == !$1_from_bcs_deserializable'$1_string_String'($t0)); + + // if ($t3) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + if ($t3) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 +L6: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + assume {:print "$track_abort(17,4):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 +L5: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume {:print "$at(155,1673,1694)"} true; + assume $IsValid'$1_string_String'($t2); + + // assume Eq($t2, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + assume $IsEqual'$1_string_String'($t2, $1_from_bcs_deserialize'$1_string_String'($t0)); + + // $t2 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:17+21 + + // trace_local[s]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:57:13+1 + assume {:print "$track_local(17,4,1):", $t2} $t2 == $t2; + + // $t5 := string::bytes($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:45+17 + assume {:print "$at(155,1740,1757)"} true; + call $t5 := $1_string_bytes($t2); + if ($abort_flag) { + assume {:print "$at(155,1740,1757)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(17,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := opaque begin: string::internal_check_utf8($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + assume $IsValid'bool'($t6); + + // assume Eq($t6, string::spec_internal_check_utf8($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + assume $IsEqual'bool'($t6, $1_string_spec_internal_check_utf8($t5)); + + // $t6 := opaque end: string::internal_check_utf8($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:17+46 + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + assume {:print "$at(155,1704,1774)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:65+13 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:65+13 + assume {:print "$at(155,1760,1773)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + assume {:print "$at(155,1704,1774)"} true; + assume {:print "$track_abort(17,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:58:9+70 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:59:9+1 + assume {:print "$at(155,1784,1785)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:59:9+1 + assume {:print "$at(155,1784,1785)"} true; + assume {:print "$track_return(17,4,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:60:5+1 + assume {:print "$at(155,1790,1791)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u128 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:39:5+75 +procedure {:inline 1} $1_from_bcs_to_u128(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:39:5+1 + assume {:print "$at(155,1195,1196)"} true; + assume {:print "$track_local(17,5,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume ($t2 == !$1_from_bcs_deserializable'u128'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + assume {:print "$track_abort(17,5):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + assume $IsValid'u128'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume $IsEqual'u128'($t1, $1_from_bcs_deserialize'u128'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$track_return(17,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:39:5+75 +procedure {:timeLimit 80} $1_from_bcs_to_u128$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:39:5+1 + assume {:print "$at(155,1195,1196)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:39:5+1 + assume {:print "$track_local(17,5,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume ($t2 == !$1_from_bcs_deserializable'u128'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + assume {:print "$track_abort(17,5):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$at(155,1245,1264)"} true; + assume $IsValid'u128'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume $IsEqual'u128'($t1, $1_from_bcs_deserialize'u128'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:40:9+19 + assume {:print "$track_return(17,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:41:5+1 + assume {:print "$at(155,1269,1270)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u16 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:27:5+72 +procedure {:inline 1} $1_from_bcs_to_u16(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u16': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:27:5+1 + assume {:print "$at(155,961,962)"} true; + assume {:print "$track_local(17,6,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u16'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + assume {:print "$track_abort(17,6):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + assume $IsValid'u16'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume $IsEqual'u16'($t1, $1_from_bcs_deserialize'u16'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$track_return(17,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u16 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:27:5+72 +procedure {:timeLimit 80} $1_from_bcs_to_u16$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u16': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:27:5+1 + assume {:print "$at(155,961,962)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:27:5+1 + assume {:print "$track_local(17,6,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u16'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + assume {:print "$track_abort(17,6):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$at(155,1009,1027)"} true; + assume $IsValid'u16'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume $IsEqual'u16'($t1, $1_from_bcs_deserialize'u16'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:28:9+18 + assume {:print "$track_return(17,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:29:5+1 + assume {:print "$at(155,1032,1033)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u256 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:43:5+75 +procedure {:inline 1} $1_from_bcs_to_u256(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u256': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:43:5+1 + assume {:print "$at(155,1276,1277)"} true; + assume {:print "$track_local(17,7,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume ($t2 == !$1_from_bcs_deserializable'u256'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + assume {:print "$track_abort(17,7):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + assume $IsValid'u256'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume $IsEqual'u256'($t1, $1_from_bcs_deserialize'u256'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$track_return(17,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u256 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:43:5+75 +procedure {:timeLimit 80} $1_from_bcs_to_u256$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u256': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:43:5+1 + assume {:print "$at(155,1276,1277)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:43:5+1 + assume {:print "$track_local(17,7,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume ($t2 == !$1_from_bcs_deserializable'u256'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + assume {:print "$track_abort(17,7):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$at(155,1326,1345)"} true; + assume $IsValid'u256'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume $IsEqual'u256'($t1, $1_from_bcs_deserialize'u256'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:44:9+19 + assume {:print "$track_return(17,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:45:5+1 + assume {:print "$at(155,1350,1351)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u32 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:31:5+72 +procedure {:inline 1} $1_from_bcs_to_u32(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u32': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:31:5+1 + assume {:print "$at(155,1039,1040)"} true; + assume {:print "$track_local(17,8,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u32'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + assume {:print "$track_abort(17,8):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + assume $IsValid'u32'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume $IsEqual'u32'($t1, $1_from_bcs_deserialize'u32'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$track_return(17,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u32 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:31:5+72 +procedure {:timeLimit 80} $1_from_bcs_to_u32$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u32': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:31:5+1 + assume {:print "$at(155,1039,1040)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:31:5+1 + assume {:print "$track_local(17,8,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u32'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + assume {:print "$track_abort(17,8):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$at(155,1087,1105)"} true; + assume $IsValid'u32'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume $IsEqual'u32'($t1, $1_from_bcs_deserialize'u32'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:32:9+18 + assume {:print "$track_return(17,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:33:5+1 + assume {:print "$at(155,1110,1111)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u64 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:35:5+72 +procedure {:inline 1} $1_from_bcs_to_u64(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:35:5+1 + assume {:print "$at(155,1117,1118)"} true; + assume {:print "$track_local(17,9,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u64'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + assume {:print "$track_abort(17,9):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + assume $IsValid'u64'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume $IsEqual'u64'($t1, $1_from_bcs_deserialize'u64'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$track_return(17,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:35:5+72 +procedure {:timeLimit 80} $1_from_bcs_to_u64$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:35:5+1 + assume {:print "$at(155,1117,1118)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:35:5+1 + assume {:print "$track_local(17,9,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume ($t2 == !$1_from_bcs_deserializable'u64'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + assume {:print "$track_abort(17,9):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$at(155,1165,1183)"} true; + assume $IsValid'u64'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume $IsEqual'u64'($t1, $1_from_bcs_deserialize'u64'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:36:9+18 + assume {:print "$track_return(17,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:37:5+1 + assume {:print "$at(155,1188,1189)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u8 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:23:5+69 +procedure {:inline 1} $1_from_bcs_to_u8(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:23:5+1 + assume {:print "$at(155,886,887)"} true; + assume {:print "$track_local(17,10,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume ($t2 == !$1_from_bcs_deserializable'u8'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + assume {:print "$track_abort(17,10):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + assume $IsValid'u8'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume $IsEqual'u8'($t1, $1_from_bcs_deserialize'u8'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$track_return(17,10,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun from_bcs::to_u8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:23:5+69 +procedure {:timeLimit 80} $1_from_bcs_to_u8$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t0: Vec (int); + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:23:5+1 + assume {:print "$at(155,886,887)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:23:5+1 + assume {:print "$track_local(17,10,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + + // assume Identical($t2, Not(from_bcs::deserializable($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume ($t2 == !$1_from_bcs_deserializable'u8'($t0)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + assume {:print "$track_abort(17,10):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$at(155,932,949)"} true; + assume $IsValid'u8'($t1); + + // assume Eq($t1, from_bcs::deserialize($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume $IsEqual'u8'($t1, $1_from_bcs_deserialize'u8'($t0)); + + // $t1 := opaque end: from_bcs::from_bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:24:9+17 + assume {:print "$track_return(17,10,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/from_bcs.move:25:5+1 + assume {:print "$at(155,954,955)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_account_CoinRegisterEvent' { + $1_event_EventHandle'$1_account_CoinRegisterEvent'($counter: int, $guid: $1_guid_GUID) +} +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, s->$guid) +} +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'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s: $1_event_EventHandle'$1_account_CoinRegisterEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_account_KeyRotationEvent' { + $1_event_EventHandle'$1_account_KeyRotationEvent'($counter: int, $guid: $1_guid_GUID) +} +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, s->$guid) +} +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'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''(s: $1_event_EventHandle'$1_account_KeyRotationEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_object_TransferEvent' { + $1_event_EventHandle'$1_object_TransferEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_object_TransferEvent''_counter(s: $1_event_EventHandle'$1_object_TransferEvent', x: int): $1_event_EventHandle'$1_object_TransferEvent' { + $1_event_EventHandle'$1_object_TransferEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_object_TransferEvent''_guid(s: $1_event_EventHandle'$1_object_TransferEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_object_TransferEvent' { + $1_event_EventHandle'$1_object_TransferEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_object_TransferEvent''(s: $1_event_EventHandle'$1_object_TransferEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_object_TransferEvent''(s1: $1_event_EventHandle'$1_object_TransferEvent', s2: $1_event_EventHandle'$1_object_TransferEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_coin_DepositEvent' { + $1_event_EventHandle'$1_coin_DepositEvent'($counter: int, $guid: $1_guid_GUID) +} +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, s->$guid) +} +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'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''(s: $1_event_EventHandle'$1_coin_DepositEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_coin_WithdrawEvent' { + $1_event_EventHandle'$1_coin_WithdrawEvent'($counter: int, $guid: $1_guid_GUID) +} +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, s->$guid) +} +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'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''(s: $1_event_EventHandle'$1_coin_WithdrawEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_treasury_DepositEvent' { + $1_event_EventHandle'$1_treasury_DepositEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_treasury_DepositEvent''_counter(s: $1_event_EventHandle'$1_treasury_DepositEvent', x: int): $1_event_EventHandle'$1_treasury_DepositEvent' { + $1_event_EventHandle'$1_treasury_DepositEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_treasury_DepositEvent''_guid(s: $1_event_EventHandle'$1_treasury_DepositEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_treasury_DepositEvent' { + $1_event_EventHandle'$1_treasury_DepositEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_treasury_DepositEvent''(s: $1_event_EventHandle'$1_treasury_DepositEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_treasury_DepositEvent''(s1: $1_event_EventHandle'$1_treasury_DepositEvent', s2: $1_event_EventHandle'$1_treasury_DepositEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_treasury_WithdrawEvent' { + $1_event_EventHandle'$1_treasury_WithdrawEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_treasury_WithdrawEvent''_counter(s: $1_event_EventHandle'$1_treasury_WithdrawEvent', x: int): $1_event_EventHandle'$1_treasury_WithdrawEvent' { + $1_event_EventHandle'$1_treasury_WithdrawEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_treasury_WithdrawEvent''_guid(s: $1_event_EventHandle'$1_treasury_WithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_treasury_WithdrawEvent' { + $1_event_EventHandle'$1_treasury_WithdrawEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_treasury_WithdrawEvent''(s: $1_event_EventHandle'$1_treasury_WithdrawEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_treasury_WithdrawEvent''(s1: $1_event_EventHandle'$1_treasury_WithdrawEvent', s2: $1_event_EventHandle'$1_treasury_WithdrawEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''_counter(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''', x: int): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''_guid(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''', x: $1_guid_GUID): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(s1: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''', s2: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''): bool { + s1 == s2 +} + +// struct event::EventHandle> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''_counter(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'', x: int): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''_guid(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'', x: $1_guid_GUID): $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'' { + $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(s: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(s1: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'', s2: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_dao_ProposalCreatedEvent' { + $1_event_EventHandle'$1_dao_ProposalCreatedEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''_counter(s: $1_event_EventHandle'$1_dao_ProposalCreatedEvent', x: int): $1_event_EventHandle'$1_dao_ProposalCreatedEvent' { + $1_event_EventHandle'$1_dao_ProposalCreatedEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''_guid(s: $1_event_EventHandle'$1_dao_ProposalCreatedEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_dao_ProposalCreatedEvent' { + $1_event_EventHandle'$1_dao_ProposalCreatedEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(s: $1_event_EventHandle'$1_dao_ProposalCreatedEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(s1: $1_event_EventHandle'$1_dao_ProposalCreatedEvent', s2: $1_event_EventHandle'$1_dao_ProposalCreatedEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_dao_VoteChangedEvent' { + $1_event_EventHandle'$1_dao_VoteChangedEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_dao_VoteChangedEvent''_counter(s: $1_event_EventHandle'$1_dao_VoteChangedEvent', x: int): $1_event_EventHandle'$1_dao_VoteChangedEvent' { + $1_event_EventHandle'$1_dao_VoteChangedEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_dao_VoteChangedEvent''_guid(s: $1_event_EventHandle'$1_dao_VoteChangedEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_dao_VoteChangedEvent' { + $1_event_EventHandle'$1_dao_VoteChangedEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_dao_VoteChangedEvent''(s: $1_event_EventHandle'$1_dao_VoteChangedEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_dao_VoteChangedEvent''(s1: $1_event_EventHandle'$1_dao_VoteChangedEvent', s2: $1_event_EventHandle'$1_dao_VoteChangedEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_block_reward_BlockRewardEvent' { + $1_event_EventHandle'$1_block_reward_BlockRewardEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''_counter(s: $1_event_EventHandle'$1_block_reward_BlockRewardEvent', x: int): $1_event_EventHandle'$1_block_reward_BlockRewardEvent' { + $1_event_EventHandle'$1_block_reward_BlockRewardEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''_guid(s: $1_event_EventHandle'$1_block_reward_BlockRewardEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_block_reward_BlockRewardEvent' { + $1_event_EventHandle'$1_block_reward_BlockRewardEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(s: $1_event_EventHandle'$1_block_reward_BlockRewardEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(s1: $1_event_EventHandle'$1_block_reward_BlockRewardEvent', s2: $1_event_EventHandle'$1_block_reward_BlockRewardEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_collection_BurnEvent' { + $1_event_EventHandle'$1_collection_BurnEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_BurnEvent''_counter(s: $1_event_EventHandle'$1_collection_BurnEvent', x: int): $1_event_EventHandle'$1_collection_BurnEvent' { + $1_event_EventHandle'$1_collection_BurnEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_BurnEvent''_guid(s: $1_event_EventHandle'$1_collection_BurnEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_collection_BurnEvent' { + $1_event_EventHandle'$1_collection_BurnEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_collection_BurnEvent''(s: $1_event_EventHandle'$1_collection_BurnEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_collection_BurnEvent''(s1: $1_event_EventHandle'$1_collection_BurnEvent', s2: $1_event_EventHandle'$1_collection_BurnEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_collection_MintEvent' { + $1_event_EventHandle'$1_collection_MintEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_MintEvent''_counter(s: $1_event_EventHandle'$1_collection_MintEvent', x: int): $1_event_EventHandle'$1_collection_MintEvent' { + $1_event_EventHandle'$1_collection_MintEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_MintEvent''_guid(s: $1_event_EventHandle'$1_collection_MintEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_collection_MintEvent' { + $1_event_EventHandle'$1_collection_MintEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_collection_MintEvent''(s: $1_event_EventHandle'$1_collection_MintEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_collection_MintEvent''(s1: $1_event_EventHandle'$1_collection_MintEvent', s2: $1_event_EventHandle'$1_collection_MintEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_collection_MutationEvent' { + $1_event_EventHandle'$1_collection_MutationEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_MutationEvent''_counter(s: $1_event_EventHandle'$1_collection_MutationEvent', x: int): $1_event_EventHandle'$1_collection_MutationEvent' { + $1_event_EventHandle'$1_collection_MutationEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_collection_MutationEvent''_guid(s: $1_event_EventHandle'$1_collection_MutationEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_collection_MutationEvent' { + $1_event_EventHandle'$1_collection_MutationEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_collection_MutationEvent''(s: $1_event_EventHandle'$1_collection_MutationEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_collection_MutationEvent''(s1: $1_event_EventHandle'$1_collection_MutationEvent', s2: $1_event_EventHandle'$1_collection_MutationEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle, u128>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''_counter(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'', x: int): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''_guid(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'', x: $1_guid_GUID): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(s1: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'', s2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''): bool { + s1 == s2 +} + +// struct event::EventHandle> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''_counter(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'', x: int): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''_guid(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'', x: $1_guid_GUID): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(s1: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'', s2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''): bool { + s1 == s2 +} + +// struct event::EventHandle> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''_counter(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'', x: int): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''_guid(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'', x: $1_guid_GUID): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(s1: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'', s2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''): bool { + s1 == s2 +} + +// struct event::EventHandle> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''_counter(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'', x: int): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''_guid(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'', x: $1_guid_GUID): $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'' { + $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(s: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(s1: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'', s2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_epoch_NewEpochEvent' { + $1_event_EventHandle'$1_epoch_NewEpochEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_epoch_NewEpochEvent''_counter(s: $1_event_EventHandle'$1_epoch_NewEpochEvent', x: int): $1_event_EventHandle'$1_epoch_NewEpochEvent' { + $1_event_EventHandle'$1_epoch_NewEpochEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_epoch_NewEpochEvent''_guid(s: $1_event_EventHandle'$1_epoch_NewEpochEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_epoch_NewEpochEvent' { + $1_event_EventHandle'$1_epoch_NewEpochEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_epoch_NewEpochEvent''(s: $1_event_EventHandle'$1_epoch_NewEpochEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_epoch_NewEpochEvent''(s1: $1_event_EventHandle'$1_epoch_NewEpochEvent', s2: $1_event_EventHandle'$1_epoch_NewEpochEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_object_token_MutationEvent' { + $1_event_EventHandle'$1_object_token_MutationEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_object_token_MutationEvent''_counter(s: $1_event_EventHandle'$1_object_token_MutationEvent', x: int): $1_event_EventHandle'$1_object_token_MutationEvent' { + $1_event_EventHandle'$1_object_token_MutationEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_object_token_MutationEvent''_guid(s: $1_event_EventHandle'$1_object_token_MutationEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_object_token_MutationEvent' { + $1_event_EventHandle'$1_object_token_MutationEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_object_token_MutationEvent''(s: $1_event_EventHandle'$1_object_token_MutationEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_object_token_MutationEvent''(s1: $1_event_EventHandle'$1_object_token_MutationEvent', s2: $1_event_EventHandle'$1_object_token_MutationEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent' { + $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''_counter(s: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent', x: int): $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent' { + $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''_guid(s: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent' { + $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(s: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(s1: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent', s2: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_stc_block_NewBlockEvent' { + $1_event_EventHandle'$1_stc_block_NewBlockEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_stc_block_NewBlockEvent''_counter(s: $1_event_EventHandle'$1_stc_block_NewBlockEvent', x: int): $1_event_EventHandle'$1_stc_block_NewBlockEvent' { + $1_event_EventHandle'$1_stc_block_NewBlockEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_stc_block_NewBlockEvent''_guid(s: $1_event_EventHandle'$1_stc_block_NewBlockEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_stc_block_NewBlockEvent' { + $1_event_EventHandle'$1_stc_block_NewBlockEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(s: $1_event_EventHandle'$1_stc_block_NewBlockEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(s1: $1_event_EventHandle'$1_stc_block_NewBlockEvent', s2: $1_event_EventHandle'$1_stc_block_NewBlockEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent' { + $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent' { + $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent' { + $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_OptInTransferEvent' { + $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent', x: int): $1_event_EventHandle'$1_token_event_store_OptInTransferEvent' { + $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_OptInTransferEvent' { + $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(s: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(s1: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent', s2: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent', x: int): $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent' { + $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(s: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(s1: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent', s2: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_event_store_UriMutationEvent' { + $1_event_EventHandle'$1_token_event_store_UriMutationEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''_counter(s: $1_event_EventHandle'$1_token_event_store_UriMutationEvent', x: int): $1_event_EventHandle'$1_token_event_store_UriMutationEvent' { + $1_event_EventHandle'$1_token_event_store_UriMutationEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''_guid(s: $1_event_EventHandle'$1_token_event_store_UriMutationEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_event_store_UriMutationEvent' { + $1_event_EventHandle'$1_token_event_store_UriMutationEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(s: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(s1: $1_event_EventHandle'$1_token_event_store_UriMutationEvent', s2: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_DepositEvent' { + $1_event_EventHandle'$1_token_DepositEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_DepositEvent''_counter(s: $1_event_EventHandle'$1_token_DepositEvent', x: int): $1_event_EventHandle'$1_token_DepositEvent' { + $1_event_EventHandle'$1_token_DepositEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_DepositEvent''_guid(s: $1_event_EventHandle'$1_token_DepositEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_DepositEvent' { + $1_event_EventHandle'$1_token_DepositEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_DepositEvent''(s: $1_event_EventHandle'$1_token_DepositEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_DepositEvent''(s1: $1_event_EventHandle'$1_token_DepositEvent', s2: $1_event_EventHandle'$1_token_DepositEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_WithdrawEvent' { + $1_event_EventHandle'$1_token_WithdrawEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_WithdrawEvent''_counter(s: $1_event_EventHandle'$1_token_WithdrawEvent', x: int): $1_event_EventHandle'$1_token_WithdrawEvent' { + $1_event_EventHandle'$1_token_WithdrawEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_WithdrawEvent''_guid(s: $1_event_EventHandle'$1_token_WithdrawEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_WithdrawEvent' { + $1_event_EventHandle'$1_token_WithdrawEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_WithdrawEvent''(s: $1_event_EventHandle'$1_token_WithdrawEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_WithdrawEvent''(s1: $1_event_EventHandle'$1_token_WithdrawEvent', s2: $1_event_EventHandle'$1_token_WithdrawEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_BurnTokenEvent' { + $1_event_EventHandle'$1_token_BurnTokenEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_BurnTokenEvent''_counter(s: $1_event_EventHandle'$1_token_BurnTokenEvent', x: int): $1_event_EventHandle'$1_token_BurnTokenEvent' { + $1_event_EventHandle'$1_token_BurnTokenEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_BurnTokenEvent''_guid(s: $1_event_EventHandle'$1_token_BurnTokenEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_BurnTokenEvent' { + $1_event_EventHandle'$1_token_BurnTokenEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_BurnTokenEvent''(s: $1_event_EventHandle'$1_token_BurnTokenEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_BurnTokenEvent''(s1: $1_event_EventHandle'$1_token_BurnTokenEvent', s2: $1_event_EventHandle'$1_token_BurnTokenEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_CreateCollectionEvent' { + $1_event_EventHandle'$1_token_CreateCollectionEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_CreateCollectionEvent''_counter(s: $1_event_EventHandle'$1_token_CreateCollectionEvent', x: int): $1_event_EventHandle'$1_token_CreateCollectionEvent' { + $1_event_EventHandle'$1_token_CreateCollectionEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_CreateCollectionEvent''_guid(s: $1_event_EventHandle'$1_token_CreateCollectionEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_CreateCollectionEvent' { + $1_event_EventHandle'$1_token_CreateCollectionEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_CreateCollectionEvent''(s: $1_event_EventHandle'$1_token_CreateCollectionEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_CreateCollectionEvent''(s1: $1_event_EventHandle'$1_token_CreateCollectionEvent', s2: $1_event_EventHandle'$1_token_CreateCollectionEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_CreateTokenDataEvent' { + $1_event_EventHandle'$1_token_CreateTokenDataEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_CreateTokenDataEvent''_counter(s: $1_event_EventHandle'$1_token_CreateTokenDataEvent', x: int): $1_event_EventHandle'$1_token_CreateTokenDataEvent' { + $1_event_EventHandle'$1_token_CreateTokenDataEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_CreateTokenDataEvent''_guid(s: $1_event_EventHandle'$1_token_CreateTokenDataEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_CreateTokenDataEvent' { + $1_event_EventHandle'$1_token_CreateTokenDataEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(s: $1_event_EventHandle'$1_token_CreateTokenDataEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(s1: $1_event_EventHandle'$1_token_CreateTokenDataEvent', s2: $1_event_EventHandle'$1_token_CreateTokenDataEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_MintTokenEvent' { + $1_event_EventHandle'$1_token_MintTokenEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_MintTokenEvent''_counter(s: $1_event_EventHandle'$1_token_MintTokenEvent', x: int): $1_event_EventHandle'$1_token_MintTokenEvent' { + $1_event_EventHandle'$1_token_MintTokenEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_MintTokenEvent''_guid(s: $1_event_EventHandle'$1_token_MintTokenEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_MintTokenEvent' { + $1_event_EventHandle'$1_token_MintTokenEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_MintTokenEvent''(s: $1_event_EventHandle'$1_token_MintTokenEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_MintTokenEvent''(s1: $1_event_EventHandle'$1_token_MintTokenEvent', s2: $1_event_EventHandle'$1_token_MintTokenEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent' { + $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''_counter(s: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent', x: int): $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent' { + $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''_guid(s: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent' { + $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(s: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(s1: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent', s2: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''_counter(s: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent', x: int): $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''_guid(s: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(s: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(s1: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent', s2: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_transfers_TokenClaimEvent' { + $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''_counter(s: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent', x: int): $1_event_EventHandle'$1_token_transfers_TokenClaimEvent' { + $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''_guid(s: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_transfers_TokenClaimEvent' { + $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(s: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(s1: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent', s2: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'$1_token_transfers_TokenOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''_counter(s: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent', x: int): $1_event_EventHandle'$1_token_transfers_TokenOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''_guid(s: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent', x: $1_guid_GUID): $1_event_EventHandle'$1_token_transfers_TokenOfferEvent' { + $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(s: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(s1: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent', s2: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'): bool { + s1 == s2 +} + +// struct event::EventHandle<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:34:5+224 +datatype $1_event_EventHandle'#0' { + $1_event_EventHandle'#0'($counter: int, $guid: $1_guid_GUID) +} +function {:inline} $Update'$1_event_EventHandle'#0''_counter(s: $1_event_EventHandle'#0', x: int): $1_event_EventHandle'#0' { + $1_event_EventHandle'#0'(x, s->$guid) +} +function {:inline} $Update'$1_event_EventHandle'#0''_guid(s: $1_event_EventHandle'#0', x: $1_guid_GUID): $1_event_EventHandle'#0' { + $1_event_EventHandle'#0'(s->$counter, x) +} +function $IsValid'$1_event_EventHandle'#0''(s: $1_event_EventHandle'#0'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_guid_GUID'(s->$guid) +} +function {:inline} $IsEqual'$1_event_EventHandle'#0''(s1: $1_event_EventHandle'#0', s2: $1_event_EventHandle'#0'): bool { + s1 == s2 +} + +// fun event::guid [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+101 +procedure {:inline 1} $1_event_guid'$1_coin_DepositEvent'(_$t0: $1_event_EventHandle'$1_coin_DepositEvent') returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_coin_DepositEvent'; + 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[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+1 + assume {:print "$at(39,2218,2219)"} true; + assume {:print "$track_local(18,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.guid($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$at(39,2297,2313)"} true; + $t1 := $t0->$guid; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$track_return(18,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:64:5+1 + assume {:print "$at(39,2318,2319)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:64:5+1 + assume {:print "$at(39,2318,2319)"} true; + $ret0 := $t1; + return; + +} + +// fun event::guid [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+101 +procedure {:inline 1} $1_event_guid'$1_coin_WithdrawEvent'(_$t0: $1_event_EventHandle'$1_coin_WithdrawEvent') returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_coin_WithdrawEvent'; + 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[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+1 + assume {:print "$at(39,2218,2219)"} true; + assume {:print "$track_local(18,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.guid($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$at(39,2297,2313)"} true; + $t1 := $t0->$guid; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$track_return(18,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:64:5+1 + assume {:print "$at(39,2318,2319)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:64:5+1 + assume {:print "$at(39,2318,2319)"} true; + $ret0 := $t1; + return; + +} + +// fun event::guid [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+101 +procedure {:timeLimit 80} $1_event_guid$verify(_$t0: $1_event_EventHandle'#0') returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t0: $1_event_EventHandle'#0'; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+1 + assume {:print "$at(39,2218,2219)"} true; + assume $IsValid'$1_event_EventHandle'#0''($t0); + + // trace_local[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:62:5+1 + assume {:print "$track_local(18,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.guid($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$at(39,2297,2313)"} true; + $t1 := $t0->$guid; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:63:9+16 + assume {:print "$track_return(18,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:64:5+1 + assume {:print "$at(39,2318,2319)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:67:9+16 + assume {:print "$at(40,2916,2932)"} true; + assert {:msg "assert_failed(40,2916,2932): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:67:9+16 + $ret0 := $t1; + return; + +} + +// fun event::counter [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:68:5+104 +procedure {:timeLimit 80} $1_event_counter$verify(_$t0: $1_event_EventHandle'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_event_EventHandle'#0'; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:68:5+1 + assume {:print "$at(39,2411,2412)"} true; + assume $IsValid'$1_event_EventHandle'#0''($t0); + + // trace_local[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:68:5+1 + assume {:print "$track_local(18,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.counter($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:69:9+18 + assume {:print "$at(39,2491,2509)"} true; + $t1 := $t0->$counter; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:69:9+18 + assume {:print "$track_return(18,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:70:5+1 + assume {:print "$at(39,2514,2515)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:72:9+16 + assume {:print "$at(40,3000,3016)"} true; + assert {:msg "assert_failed(40,3000,3016): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:72:9+16 + $ret0 := $t1; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_object_TransferEvent'(_$t0: $1_event_EventHandle'$1_object_TransferEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_object_TransferEvent'; + var $temp_0'$1_event_EventHandle'$1_object_TransferEvent'': $1_event_EventHandle'$1_object_TransferEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_coin_DepositEvent'(_$t0: $1_event_EventHandle'$1_coin_DepositEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_coin_DepositEvent'; + var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_coin_WithdrawEvent'(_$t0: $1_event_EventHandle'$1_coin_WithdrawEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_on_chain_config_ConfigChangeEvent'#0''(_$t0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_collection_BurnEvent'(_$t0: $1_event_EventHandle'$1_collection_BurnEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_collection_BurnEvent'; + var $temp_0'$1_event_EventHandle'$1_collection_BurnEvent'': $1_event_EventHandle'$1_collection_BurnEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_collection_MintEvent'(_$t0: $1_event_EventHandle'$1_collection_MintEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_collection_MintEvent'; + var $temp_0'$1_event_EventHandle'$1_collection_MintEvent'': $1_event_EventHandle'$1_collection_MintEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:inline 1} $1_event_destroy_handle'$1_object_token_MutationEvent'(_$t0: $1_event_EventHandle'$1_object_token_MutationEvent') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $temp_0'$1_event_EventHandle'$1_object_token_MutationEvent'': $1_event_EventHandle'$1_object_token_MutationEvent'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; + return; + +} + +// fun event::destroy_handle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+131 +procedure {:timeLimit 80} $1_event_destroy_handle$verify(_$t0: $1_event_EventHandle'#0') returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_guid_GUID; + var $t0: $1_event_EventHandle'#0'; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$at(39,2778,2779)"} true; + assume $IsValid'$1_event_EventHandle'#0''($t0); + + // trace_local[handle]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:78:5+1 + assume {:print "$track_local(18,1,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack event::EventHandle<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:9+38 + assume {:print "$at(39,2855,2893)"} true; + $t1 := $t0->$counter; + $t2 := $t0->$guid; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:44+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:79:35+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:80:5+1 + assume {:print "$at(39,2908,2909)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:77:9+16 + assume {:print "$at(40,3091,3107)"} true; + assert {:msg "assert_failed(40,3091,3107): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:77:9+16 + return; + +} + +// fun event::emit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:14:5+93 +procedure {:timeLimit 80} $1_event_emit$verify(_$t0: #0) returns () +{ + // declare local variables + var $t0: #0; + var $temp_0'#0': #0; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:14:5+1 + assume {:print "$at(39,531,532)"} true; + assume $IsValid'#0'($t0); + + // trace_local[msg]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:14:5+1 + assume {:print "$track_local(18,2,0):", $t0} $t0 == $t0; + + // opaque begin: event::write_module_event_to_store<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:15:9+35 + assume {:print "$at(39,582,617)"} true; + + // opaque end: event::write_module_event_to_store<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:15:9+35 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:16:5+1 + assume {:print "$at(39,623,624)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:16:5+1 + assume {:print "$at(39,623,624)"} true; + assert {:msg "assert_failed(39,623,624): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:16:5+1 + return; + +} + +// fun event::emit_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+311 +procedure {:timeLimit 80} $1_event_emit_event$verify(_$t0: $Mutation ($1_event_EventHandle'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_event_EventHandle'#0')) +{ + // declare local variables + var $t2: $1_event_EventHandle'#0'; + var $t3: $1_guid_GUID; + var $t4: Vec (int); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation (int); + var $t0: $Mutation ($1_event_EventHandle'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+1 + assume {:print "$at(39,1826,1827)"} true; + assume $IsValid'$1_event_EventHandle'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+1 + assume $IsValid'#0'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+1 + $t2 := $Dereference($t0); + + // trace_local[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+1 + $temp_0'$1_event_EventHandle'#0'' := $Dereference($t0); + assume {:print "$track_local(18,3,0):", $temp_0'$1_event_EventHandle'#0''} $temp_0'$1_event_EventHandle'#0'' == $temp_0'$1_event_EventHandle'#0''; + + // trace_local[msg]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:52:5+1 + assume {:print "$track_local(18,3,1):", $t1} $t1 == $t1; + + // $t3 := get_field>.guid($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:53:47+16 + assume {:print "$at(39,1954,1970)"} true; + $t3 := $Dereference($t0)->$guid; + + // $t4 := bcs::to_bytes($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:53:33+31 + call $t4 := $1_bcs_to_bytes'$1_guid_GUID'($t3); + if ($abort_flag) { + assume {:print "$at(39,1940,1971)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(18,3):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := get_field>.counter($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:53:66+18 + $t6 := $Dereference($t0)->$counter; + + // opaque begin: event::write_to_event_store<#0>($t4, $t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:53:9+81 + + // opaque end: event::write_to_event_store<#0>($t4, $t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:53:9+81 + + // assume Le(Add(select event::EventHandle.counter>($t0), 1), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:55:13+41 + assume {:print "$at(39,2026,2067)"} true; + assume (($Dereference($t0)->$counter + 1) <= 18446744073709551615); + + // $t7 := get_field>.counter($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:30+18 + assume {:print "$at(39,2108,2126)"} true; + $t7 := $Dereference($t0)->$counter; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:51+1 + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := +($t7, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:49+1 + call $t9 := $AddU64($t7, $t8); + if ($abort_flag) { + assume {:print "$at(39,2127,2128)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(18,3):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := borrow_field>.counter($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:9+18 + $t10 := $ChildMutation($t0, 0, $Dereference($t0)->$counter); + + // write_ref($t10, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:9+43 + $t10 := $UpdateMutation($t10, $t9); + + // write_back[Reference($t0).counter (u64)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:9+43 + $t0 := $UpdateMutation($t0, $Update'$1_event_EventHandle'#0''_counter($Dereference($t0), $Dereference($t10))); + + // trace_local[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:9+43 + $temp_0'$1_event_EventHandle'#0'' := $Dereference($t0); + assume {:print "$track_local(18,3,0):", $temp_0'$1_event_EventHandle'#0''} $temp_0'$1_event_EventHandle'#0'' == $temp_0'$1_event_EventHandle'#0''; + + // trace_local[handle_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:57:52+1 + $temp_0'$1_event_EventHandle'#0'' := $Dereference($t0); + assume {:print "$track_local(18,3,0):", $temp_0'$1_event_EventHandle'#0''} $temp_0'$1_event_EventHandle'#0'' == $temp_0'$1_event_EventHandle'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:58:5+1 + assume {:print "$at(39,2136,2137)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:58:5+1 + assume {:print "$at(39,2136,2137)"} true; + assert {:msg "assert_failed(39,2136,2137): function does not abort under this condition"} + !false; + + // assert Eq(select event::EventHandle.counter>($t0), Add(select event::EventHandle.counter>($t2), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:48:9+69 + assume {:print "$at(40,2453,2522)"} true; + assert {:msg "assert_failed(40,2453,2522): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$counter, ($t2->$counter + 1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:48:9+69 + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:58:5+1 + assume {:print "$at(39,2136,2137)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:44:5+191 + assume {:print "$at(40,2337,2528)"} true; + assert {:msg "assert_failed(40,2337,2528): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.spec.move:44:5+191 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_account_CoinRegisterEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_account_KeyRotationEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_object_TransferEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_object_TransferEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_object_TransferEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_object_TransferEvent'': $1_event_EventHandle'$1_object_TransferEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_object_TransferEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_coin_DepositEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_coin_WithdrawEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_treasury_DepositEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_treasury_DepositEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_treasury_DepositEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_treasury_DepositEvent'': $1_event_EventHandle'$1_treasury_DepositEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_treasury_DepositEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_treasury_WithdrawEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_treasury_WithdrawEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_treasury_WithdrawEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_treasury_WithdrawEvent'': $1_event_EventHandle'$1_treasury_WithdrawEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_treasury_WithdrawEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_on_chain_config_ConfigChangeEvent'#0''(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_dao_ProposalCreatedEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_dao_ProposalCreatedEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_dao_ProposalCreatedEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_dao_ProposalCreatedEvent'': $1_event_EventHandle'$1_dao_ProposalCreatedEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_dao_ProposalCreatedEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_dao_VoteChangedEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_dao_VoteChangedEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_dao_VoteChangedEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_dao_VoteChangedEvent'': $1_event_EventHandle'$1_dao_VoteChangedEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_dao_VoteChangedEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_collection_MutationEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_collection_MutationEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_collection_MutationEvent'': $1_event_EventHandle'$1_collection_MutationEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_collection_MutationEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle, u128>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'#0_u128''(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'#0_#2''(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_epoch_NewEpochEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_epoch_NewEpochEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_epoch_NewEpochEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_epoch_NewEpochEvent'': $1_event_EventHandle'$1_epoch_NewEpochEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_epoch_NewEpochEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_object_token_MutationEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_object_token_MutationEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_object_token_MutationEvent'': $1_event_EventHandle'$1_object_token_MutationEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_object_token_MutationEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_stc_block_NewBlockEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_stc_block_NewBlockEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_stc_block_NewBlockEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_stc_block_NewBlockEvent'': $1_event_EventHandle'$1_stc_block_NewBlockEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_stc_block_NewBlockEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_CollectionDescriptionMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_CollectionMaxiumMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_CollectionUriMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_DefaultPropertyMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'': $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_DescriptionMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'': $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_MaxiumMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'': $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_OptInTransferEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent'': $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_RoyaltyMutateEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'': $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_event_store_UriMutationEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_event_store_UriMutationEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_event_store_UriMutationEvent'': $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_event_store_UriMutationEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_DepositEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_DepositEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_DepositEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_DepositEvent'': $1_event_EventHandle'$1_token_DepositEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_DepositEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_WithdrawEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_WithdrawEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_WithdrawEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_WithdrawEvent'': $1_event_EventHandle'$1_token_WithdrawEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_WithdrawEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_BurnTokenEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_BurnTokenEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_BurnTokenEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_BurnTokenEvent'': $1_event_EventHandle'$1_token_BurnTokenEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_BurnTokenEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_CreateCollectionEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_CreateCollectionEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_CreateCollectionEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_CreateCollectionEvent'': $1_event_EventHandle'$1_token_CreateCollectionEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_CreateCollectionEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_CreateTokenDataEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_CreateTokenDataEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_CreateTokenDataEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_CreateTokenDataEvent'': $1_event_EventHandle'$1_token_CreateTokenDataEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_CreateTokenDataEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_MintTokenEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_MintTokenEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_MintTokenEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_MintTokenEvent'': $1_event_EventHandle'$1_token_MintTokenEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_MintTokenEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_MutateTokenPropertyMapEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'': $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_transfers_TokenCancelOfferEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'': $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_transfers_TokenClaimEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent'': $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'$1_token_transfers_TokenOfferEvent'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent'': $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:inline 1} $1_event_new_event_handle'#0'(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'#0') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'#0'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'#0'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + $ret0 := $t2; + return; + +} + +// fun event::new_event_handle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+165 +procedure {:timeLimit 80} $1_event_new_event_handle$verify(_$t0: $1_guid_GUID) returns ($ret0: $1_event_EventHandle'#0') +{ + // declare local variables + var $t1: int; + var $t2: $1_event_EventHandle'#0'; + var $t0: $1_guid_GUID; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$at(39,1555,1556)"} true; + assume $IsValid'$1_guid_GUID'($t0); + + // trace_local[guid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:43:5+1 + assume {:print "$track_local(18,5,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:45:22+1 + assume {:print "$at(39,1684,1685)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := pack event::EventHandle<#0>($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$at(39,1646,1714)"} true; + $t2 := $1_event_EventHandle'#0'($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:44:9+68 + assume {:print "$track_return(18,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + assume {:print "$at(39,1719,1720)"} true; + assert {:msg "assert_failed(39,1719,1720): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/event.move:48:5+1 + $ret0 := $t2; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'bool'(s: bool, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: bool, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'bool'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'u64'(s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'u64'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'u128'(s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'u128'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'address'(s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: int, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'address'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'vec'u8''(s: Vec (int), type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: Vec (int), type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'vec'u8''(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'$1_string_String'(s: $1_string_String, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: $1_string_String, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'$1_string_String'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_FungibleStore''(s: $1_object_Object'$1_fungible_asset_FungibleStore', type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: $1_object_Object'$1_fungible_asset_FungibleStore', type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_FungibleStore''(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_Metadata''(s: $1_object_Object'$1_fungible_asset_Metadata', type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: $1_object_Object'$1_fungible_asset_Metadata', type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_Metadata''(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:54:10+120 +function $1_string_utils_spec_native_format'#0'(s: #0, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool): $1_string_String; +axiom (forall s: #0, type_tag: bool, canonicalize: bool, single_line: bool, include_int_types: bool :: +(var $$res := $1_string_utils_spec_native_format'#0'(s, type_tag, canonicalize, single_line, include_int_types); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:55:10+64 +function $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''): $1_string_String; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' :: +(var $$res := $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(fmt, val); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:55:10+64 +function $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''): $1_string_String; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' :: +(var $$res := $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(fmt, val); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:55:10+64 +function $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''): $1_string_String; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' :: +(var $$res := $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(fmt, val); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:55:10+64 +function $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_NIL''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_NIL'): $1_string_String; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_NIL' :: +(var $$res := $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_NIL''(fmt, val); +$IsValid'$1_string_String'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:56:10+70 +function $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''): bool; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' :: +(var $$res := $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(fmt, val); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:56:10+70 +function $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''): bool; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' :: +(var $$res := $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(fmt, val); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:56:10+70 +function $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''): bool; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' :: +(var $$res := $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(fmt, val); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:56:10+70 +function $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_NIL''(fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_NIL'): bool; +axiom (forall fmt: Vec (int), val: $1_string_utils_Cons'#0_$1_string_utils_NIL' :: +(var $$res := $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_NIL''(fmt, val); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(car: #0, cdr: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(car: #0, cdr: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(car: #0, cdr: $1_string_utils_Cons'#1_$1_string_utils_NIL'): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#0_$1_string_utils_NIL'(car: #0, cdr: $1_string_utils_NIL): $1_string_utils_Cons'#0_$1_string_utils_NIL' { + $1_string_utils_Cons'#0_$1_string_utils_NIL'(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(car: #1, cdr: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(car: #1, cdr: $1_string_utils_Cons'#2_$1_string_utils_NIL'): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#1_$1_string_utils_NIL'(car: #1, cdr: $1_string_utils_NIL): $1_string_utils_Cons'#1_$1_string_utils_NIL' { + $1_string_utils_Cons'#1_$1_string_utils_NIL'(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(car: #2, cdr: $1_string_utils_Cons'#3_$1_string_utils_NIL'): $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'' { + $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#2_$1_string_utils_NIL'(car: #2, cdr: $1_string_utils_NIL): $1_string_utils_Cons'#2_$1_string_utils_NIL' { + $1_string_utils_Cons'#2_$1_string_utils_NIL'(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +function {:inline} $1_string_utils_$cons'#3_$1_string_utils_NIL'(car: #3, cdr: $1_string_utils_NIL): $1_string_utils_Cons'#3_$1_string_utils_NIL' { + $1_string_utils_Cons'#3_$1_string_utils_NIL'(car, cdr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:5+25 +function {:inline} $1_string_utils_$nil(): $1_string_utils_NIL { + $1_string_utils_NIL(false) +} + +// struct string_utils::Cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''($car: #0, $cdr: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''') +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''_car(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''', x: #0): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''_cdr(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''', x: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''): bool { + $IsValid'#0'(s->$car) + && $IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''(s1: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''', s2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''($car: #0, $cdr: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'') +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''_car(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''', x: #0): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''_cdr(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''', x: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''): bool { + $IsValid'#0'(s->$car) + && $IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''(s1: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''', s2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#0, string_utils::Cons<#1, string_utils::NIL>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''($car: #0, $cdr: $1_string_utils_Cons'#1_$1_string_utils_NIL') +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''_car(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'', x: #0): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''_cdr(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'', x: $1_string_utils_Cons'#1_$1_string_utils_NIL'): $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'' { + $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(s: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''): bool { + $IsValid'#0'(s->$car) + && $IsValid'$1_string_utils_Cons'#1_$1_string_utils_NIL''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''(s1: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'', s2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#0, string_utils::NIL> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#0_$1_string_utils_NIL' { + $1_string_utils_Cons'#0_$1_string_utils_NIL'($car: #0, $cdr: $1_string_utils_NIL) +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_NIL''_car(s: $1_string_utils_Cons'#0_$1_string_utils_NIL', x: #0): $1_string_utils_Cons'#0_$1_string_utils_NIL' { + $1_string_utils_Cons'#0_$1_string_utils_NIL'(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#0_$1_string_utils_NIL''_cdr(s: $1_string_utils_Cons'#0_$1_string_utils_NIL', x: $1_string_utils_NIL): $1_string_utils_Cons'#0_$1_string_utils_NIL' { + $1_string_utils_Cons'#0_$1_string_utils_NIL'(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#0_$1_string_utils_NIL''(s: $1_string_utils_Cons'#0_$1_string_utils_NIL'): bool { + $IsValid'#0'(s->$car) + && $IsValid'$1_string_utils_NIL'(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#0_$1_string_utils_NIL''(s1: $1_string_utils_Cons'#0_$1_string_utils_NIL', s2: $1_string_utils_Cons'#0_$1_string_utils_NIL'): bool { + s1 == s2 +} + +// struct string_utils::Cons<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#0_#1' { + $1_string_utils_Cons'#0_#1'($car: #0, $cdr: #1) +} +function {:inline} $Update'$1_string_utils_Cons'#0_#1''_car(s: $1_string_utils_Cons'#0_#1', x: #0): $1_string_utils_Cons'#0_#1' { + $1_string_utils_Cons'#0_#1'(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#0_#1''_cdr(s: $1_string_utils_Cons'#0_#1', x: #1): $1_string_utils_Cons'#0_#1' { + $1_string_utils_Cons'#0_#1'(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#0_#1''(s: $1_string_utils_Cons'#0_#1'): bool { + $IsValid'#0'(s->$car) + && $IsValid'#1'(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#0_#1''(s1: $1_string_utils_Cons'#0_#1', s2: $1_string_utils_Cons'#0_#1'): bool { + s1 == s2 +} + +// struct string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''($car: #1, $cdr: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'') +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''_car(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''', x: #1): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''_cdr(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''', x: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''): bool { + $IsValid'#1'(s->$car) + && $IsValid'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(s1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''', s2: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''($car: #1, $cdr: $1_string_utils_Cons'#2_$1_string_utils_NIL') +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''_car(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'', x: #1): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''_cdr(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'', x: $1_string_utils_Cons'#2_$1_string_utils_NIL'): $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'' { + $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(s: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''): bool { + $IsValid'#1'(s->$car) + && $IsValid'$1_string_utils_Cons'#2_$1_string_utils_NIL''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(s1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'', s2: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#1, string_utils::NIL> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#1_$1_string_utils_NIL' { + $1_string_utils_Cons'#1_$1_string_utils_NIL'($car: #1, $cdr: $1_string_utils_NIL) +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_NIL''_car(s: $1_string_utils_Cons'#1_$1_string_utils_NIL', x: #1): $1_string_utils_Cons'#1_$1_string_utils_NIL' { + $1_string_utils_Cons'#1_$1_string_utils_NIL'(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#1_$1_string_utils_NIL''_cdr(s: $1_string_utils_Cons'#1_$1_string_utils_NIL', x: $1_string_utils_NIL): $1_string_utils_Cons'#1_$1_string_utils_NIL' { + $1_string_utils_Cons'#1_$1_string_utils_NIL'(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#1_$1_string_utils_NIL''(s: $1_string_utils_Cons'#1_$1_string_utils_NIL'): bool { + $IsValid'#1'(s->$car) + && $IsValid'$1_string_utils_NIL'(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#1_$1_string_utils_NIL''(s1: $1_string_utils_Cons'#1_$1_string_utils_NIL', s2: $1_string_utils_Cons'#1_$1_string_utils_NIL'): bool { + s1 == s2 +} + +// struct string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'' { + $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''($car: #2, $cdr: $1_string_utils_Cons'#3_$1_string_utils_NIL') +} +function {:inline} $Update'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''_car(s: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'', x: #2): $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'' { + $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''_cdr(s: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'', x: $1_string_utils_Cons'#3_$1_string_utils_NIL'): $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'' { + $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(s: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''): bool { + $IsValid'#2'(s->$car) + && $IsValid'$1_string_utils_Cons'#3_$1_string_utils_NIL''(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(s1: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'', s2: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''): bool { + s1 == s2 +} + +// struct string_utils::Cons<#2, string_utils::NIL> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#2_$1_string_utils_NIL' { + $1_string_utils_Cons'#2_$1_string_utils_NIL'($car: #2, $cdr: $1_string_utils_NIL) +} +function {:inline} $Update'$1_string_utils_Cons'#2_$1_string_utils_NIL''_car(s: $1_string_utils_Cons'#2_$1_string_utils_NIL', x: #2): $1_string_utils_Cons'#2_$1_string_utils_NIL' { + $1_string_utils_Cons'#2_$1_string_utils_NIL'(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#2_$1_string_utils_NIL''_cdr(s: $1_string_utils_Cons'#2_$1_string_utils_NIL', x: $1_string_utils_NIL): $1_string_utils_Cons'#2_$1_string_utils_NIL' { + $1_string_utils_Cons'#2_$1_string_utils_NIL'(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#2_$1_string_utils_NIL''(s: $1_string_utils_Cons'#2_$1_string_utils_NIL'): bool { + $IsValid'#2'(s->$car) + && $IsValid'$1_string_utils_NIL'(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#2_$1_string_utils_NIL''(s1: $1_string_utils_Cons'#2_$1_string_utils_NIL', s2: $1_string_utils_Cons'#2_$1_string_utils_NIL'): bool { + s1 == s2 +} + +// struct string_utils::Cons<#3, string_utils::NIL> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:53:5+79 +datatype $1_string_utils_Cons'#3_$1_string_utils_NIL' { + $1_string_utils_Cons'#3_$1_string_utils_NIL'($car: #3, $cdr: $1_string_utils_NIL) +} +function {:inline} $Update'$1_string_utils_Cons'#3_$1_string_utils_NIL''_car(s: $1_string_utils_Cons'#3_$1_string_utils_NIL', x: #3): $1_string_utils_Cons'#3_$1_string_utils_NIL' { + $1_string_utils_Cons'#3_$1_string_utils_NIL'(x, s->$cdr) +} +function {:inline} $Update'$1_string_utils_Cons'#3_$1_string_utils_NIL''_cdr(s: $1_string_utils_Cons'#3_$1_string_utils_NIL', x: $1_string_utils_NIL): $1_string_utils_Cons'#3_$1_string_utils_NIL' { + $1_string_utils_Cons'#3_$1_string_utils_NIL'(s->$car, x) +} +function $IsValid'$1_string_utils_Cons'#3_$1_string_utils_NIL''(s: $1_string_utils_Cons'#3_$1_string_utils_NIL'): bool { + $IsValid'#3'(s->$car) + && $IsValid'$1_string_utils_NIL'(s->$cdr) +} +function {:inline} $IsEqual'$1_string_utils_Cons'#3_$1_string_utils_NIL''(s1: $1_string_utils_Cons'#3_$1_string_utils_NIL', s2: $1_string_utils_Cons'#3_$1_string_utils_NIL'): bool { + s1 == s2 +} + +// struct string_utils::NIL at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:58:5+35 +datatype $1_string_utils_NIL { + $1_string_utils_NIL($dummy_field: bool) +} +function {:inline} $Update'$1_string_utils_NIL'_dummy_field(s: $1_string_utils_NIL, x: bool): $1_string_utils_NIL { + $1_string_utils_NIL(x) +} +function $IsValid'$1_string_utils_NIL'(s: $1_string_utils_NIL): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_string_utils_NIL'(s1: $1_string_utils_NIL, s2: $1_string_utils_NIL): bool { + s1 == s2 +} + +// fun string_utils::to_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:19:5+98 +procedure {:timeLimit 80} $1_string_utils_to_string$verify(_$t0: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:19:5+1 + assume {:print "$at(171,1083,1084)"} true; + assume $IsValid'#0'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:19:5+1 + assume {:print "$track_local(19,9,0):", $t0} $t0 == $t0; + + // $t1 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:26+5 + assume {:print "$at(171,1149,1154)"} true; + $t1 := false; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:33+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:40+4 + $t3 := true; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:20:9+43 + assume {:print "$track_return(19,9,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:21:5+1 + assume {:print "$at(171,1180,1181)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:3:9+16 + assume {:print "$at(172,81,97)"} true; + assert {:msg "assert_failed(172,81,97): function does not abort under this condition"} + !false; + + // assert Eq($t5, string_utils::spec_native_format<#0>($t0, false, false, true, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:4:9+67 + assume {:print "$at(172,106,173)"} true; + assert {:msg "assert_failed(172,106,173): post-condition does not hold"} + $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, false, false, true, false)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:4:9+67 + $ret0 := $t5; + return; + +} + +// fun string_utils::cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(_$t0: #0, _$t1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''') returns ($ret0: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''; + var $t0: #0; + var $t1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; + var $temp_0'#0': #0; + var $temp_0'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''': $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''': $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(_$t0: #0, _$t1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'') returns ($ret0: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''; + var $t0: #0; + var $t1: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; + var $temp_0'#0': #0; + var $temp_0'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''': $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''': $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#0, string_utils::Cons<#1, string_utils::NIL>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(_$t0: #0, _$t1: $1_string_utils_Cons'#1_$1_string_utils_NIL') returns ($ret0: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''; + var $t0: #0; + var $t1: $1_string_utils_Cons'#1_$1_string_utils_NIL'; + var $temp_0'#0': #0; + var $temp_0'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''': $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_NIL'': $1_string_utils_Cons'#1_$1_string_utils_NIL'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#0, string_utils::NIL> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#0_$1_string_utils_NIL'(_$t0: #0, _$t1: $1_string_utils_NIL) returns ($ret0: $1_string_utils_Cons'#0_$1_string_utils_NIL') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_$1_string_utils_NIL'; + var $t0: #0; + var $t1: $1_string_utils_NIL; + var $temp_0'#0': #0; + var $temp_0'$1_string_utils_Cons'#0_$1_string_utils_NIL'': $1_string_utils_Cons'#0_$1_string_utils_NIL'; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#0_$1_string_utils_NIL'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(_$t0: #1, _$t1: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'') returns ($ret0: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; + var $t0: #1; + var $t1: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; + var $temp_0'#1': #1; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''': $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; + var $temp_0'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''': $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#1, string_utils::Cons<#2, string_utils::NIL>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(_$t0: #1, _$t1: $1_string_utils_Cons'#2_$1_string_utils_NIL') returns ($ret0: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; + var $t0: #1; + var $t1: $1_string_utils_Cons'#2_$1_string_utils_NIL'; + var $temp_0'#1': #1; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''': $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; + var $temp_0'$1_string_utils_Cons'#2_$1_string_utils_NIL'': $1_string_utils_Cons'#2_$1_string_utils_NIL'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#1, string_utils::NIL> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#1_$1_string_utils_NIL'(_$t0: #1, _$t1: $1_string_utils_NIL) returns ($ret0: $1_string_utils_Cons'#1_$1_string_utils_NIL') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#1_$1_string_utils_NIL'; + var $t0: #1; + var $t1: $1_string_utils_NIL; + var $temp_0'#1': #1; + var $temp_0'$1_string_utils_Cons'#1_$1_string_utils_NIL'': $1_string_utils_Cons'#1_$1_string_utils_NIL'; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#1_$1_string_utils_NIL'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#2, string_utils::Cons<#3, string_utils::NIL>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(_$t0: #2, _$t1: $1_string_utils_Cons'#3_$1_string_utils_NIL') returns ($ret0: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; + var $t0: #2; + var $t1: $1_string_utils_Cons'#3_$1_string_utils_NIL'; + var $temp_0'#2': #2; + var $temp_0'$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''': $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; + var $temp_0'$1_string_utils_Cons'#3_$1_string_utils_NIL'': $1_string_utils_Cons'#3_$1_string_utils_NIL'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#2, string_utils::NIL> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#2_$1_string_utils_NIL'(_$t0: #2, _$t1: $1_string_utils_NIL) returns ($ret0: $1_string_utils_Cons'#2_$1_string_utils_NIL') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#2_$1_string_utils_NIL'; + var $t0: #2; + var $t1: $1_string_utils_NIL; + var $temp_0'#2': #2; + var $temp_0'$1_string_utils_Cons'#2_$1_string_utils_NIL'': $1_string_utils_Cons'#2_$1_string_utils_NIL'; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#2_$1_string_utils_NIL'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons<#3, string_utils::NIL> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:inline 1} $1_string_utils_cons'#3_$1_string_utils_NIL'(_$t0: #3, _$t1: $1_string_utils_NIL) returns ($ret0: $1_string_utils_Cons'#3_$1_string_utils_NIL') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#3_$1_string_utils_NIL'; + var $t0: #3; + var $t1: $1_string_utils_NIL; + var $temp_0'#3': #3; + var $temp_0'$1_string_utils_Cons'#3_$1_string_utils_NIL'': $1_string_utils_Cons'#3_$1_string_utils_NIL'; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#3_$1_string_utils_NIL'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::cons [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+64 +procedure {:timeLimit 80} $1_string_utils_cons$verify(_$t0: #0, _$t1: #1) returns ($ret0: $1_string_utils_Cons'#0_#1') +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_#1'; + var $t0: #0; + var $t1: #1; + var $temp_0'#0': #0; + var $temp_0'#1': #1; + var $temp_0'$1_string_utils_Cons'#0_#1'': $1_string_utils_Cons'#0_#1'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$at(171,2687,2688)"} true; + assume $IsValid'#0'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume $IsValid'#1'($t1); + + // trace_local[car]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,0):", $t0} $t0 == $t0; + + // trace_local[cdr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:5+1 + assume {:print "$track_local(19,0,1):", $t1} $t1 == $t1; + + // $t2 := pack string_utils::Cons<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + $t2 := $1_string_utils_Cons'#0_#1'($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:50+17 + assume {:print "$track_return(19,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:61:68+1 + assume {:print "$at(171,2750,2751)"} true; + $ret0 := $t2; + return; + +} + +// fun string_utils::debug_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'bool'(_$t0: bool) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: bool; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'bool'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'u64'(_$t0: int) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'u64'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'u128'(_$t0: int) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'u128'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string
[baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'address'(_$t0: int) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'address'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'vec'u8''(_$t0: Vec (int)) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $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[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'vec'u8''($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'$1_string_String'(_$t0: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'$1_string_String'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'$1_object_Object'$1_fungible_asset_FungibleStore''(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_FungibleStore''($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'$1_object_Object'$1_fungible_asset_Metadata''(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'$1_object_Object'$1_fungible_asset_Metadata''($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:inline 1} $1_string_utils_debug_string'#0'(_$t0: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; + $ret0 := $t5; + return; + +} + +// fun string_utils::debug_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+101 +procedure {:timeLimit 80} $1_string_utils_debug_string$verify(_$t0: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$at(171,1623,1624)"} true; + assume $IsValid'#0'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:34:5+1 + assume {:print "$track_local(19,1,0):", $t0} $t0 == $t0; + + // $t1 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:26+4 + assume {:print "$at(171,1692,1696)"} true; + $t1 := true; + assume $IsValid'bool'($t1); + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:32+5 + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:39+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:46+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:35:9+43 + assume {:print "$track_return(19,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:36:5+1 + assume {:print "$at(171,1723,1724)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:18:9+16 + assume {:print "$at(172,567,583)"} true; + assert {:msg "assert_failed(172,567,583): function does not abort under this condition"} + !false; + + // assert Eq($t5, string_utils::spec_native_format<#0>($t0, true, false, false, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:19:9+67 + assume {:print "$at(172,592,659)"} true; + assert {:msg "assert_failed(172,592,659): post-condition does not hold"} + $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, true, false, false, false)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:19:9+67 + $ret0 := $t5; + return; + +} + +// fun string_utils::format1 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:39:5+112 +procedure {:timeLimit 80} $1_string_utils_format1$verify(_$t0: Vec (int), _$t1: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: $1_string_utils_Cons'#0_$1_string_utils_NIL'; + var $t3: Vec (int); + var $t4: $1_string_utils_NIL; + var $t5: int; + var $t6: $1_string_utils_Cons'#0_$1_string_utils_NIL'; + var $t7: $1_string_String; + var $t8: bool; + var $t0: Vec (int); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:39:5+1 + assume {:print "$at(171,1840,1841)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:39:5+1 + assume $IsValid'#0'($t1); + + // trace_local[fmt]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:39:5+1 + assume {:print "$track_local(19,2,0):", $t0} $t0 == $t0; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:39:5+1 + assume {:print "$track_local(19,2,1):", $t1} $t1 == $t1; + + // $t4 := string_utils::nil() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:58+5 + assume {:print "$at(171,2900,2905)"} true; + call $t4 := $1_string_utils_nil(); + if ($abort_flag) { + assume {:print "$at(171,2900,2905)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(19,2):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := string_utils::cons<#0, string_utils::NIL>($t1, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:50+14 + call $t6 := $1_string_utils_cons'#0_$1_string_utils_NIL'($t1, $t4); + if ($abort_flag) { + assume {:print "$at(171,2892,2906)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(19,2):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := opaque begin: string_utils::native_format_list>($t0, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume {:print "$at(171,1912,1946)"} true; + + // assume Identical($t8, string_utils::args_mismatch_or_invalid_format>($t0, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume ($t8 == $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_NIL''($t0, $t6)); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume {:print "$at(171,1912,1946)"} true; + assume {:print "$track_abort(19,2):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 +L3: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume {:print "$at(171,1912,1946)"} true; + assume $IsValid'$1_string_String'($t7); + + // assume Eq($t7, string_utils::spec_native_format_list>($t0, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume $IsEqual'$1_string_String'($t7, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_NIL''($t0, $t6)); + + // $t7 := opaque end: string_utils::native_format_list>($t0, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:40:9+34 + assume {:print "$track_return(19,2,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:41:5+1 + assume {:print "$at(171,1951,1952)"} true; +L1: + + // assert Not(string_utils::args_mismatch_or_invalid_format[]>($t0, { + // let (a: #0): (#0) = Tuple($t1); + // string_utils::$cons[]<#0, string_utils::NIL>(a, string_utils::$nil[]()) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:23:9+57 + assume {:print "$at(172,737,794)"} true; + assert {:msg "assert_failed(172,737,794): function does not abort under this condition"} + !$1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_NIL''($t0, (var a := $t1; $1_string_utils_$cons'#0_$1_string_utils_NIL'(a, $1_string_utils_$nil()))); + + // assert Eq($t7, string_utils::spec_native_format_list>($t0, { + // let (a: #0): (#0) = Tuple($t1); + // string_utils::$cons<#0, string_utils::NIL>(a, string_utils::$nil()) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:24:9+57 + assume {:print "$at(172,803,860)"} true; + assert {:msg "assert_failed(172,803,860): post-condition does not hold"} + $IsEqual'$1_string_String'($t7, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_NIL''($t0, (var a := $t1; $1_string_utils_$cons'#0_$1_string_utils_NIL'(a, $1_string_utils_$nil())))); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:24:9+57 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:41:5+1 + assume {:print "$at(171,1951,1952)"} true; +L2: + + // assert string_utils::args_mismatch_or_invalid_format[]>($t0, { + // let (a: #0): (#0) = Tuple($t1); + // string_utils::$cons[]<#0, string_utils::NIL>(a, string_utils::$nil[]()) + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:22:5+195 + assume {:print "$at(172,671,866)"} true; + assert {:msg "assert_failed(172,671,866): abort not covered by any of the `aborts_if` clauses"} + $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_NIL''($t0, (var a := $t1; $1_string_utils_$cons'#0_$1_string_utils_NIL'(a, $1_string_utils_$nil()))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:22:5+195 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun string_utils::format2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+132 +procedure {:timeLimit 80} $1_string_utils_format2$verify(_$t0: Vec (int), _$t1: #0, _$t2: #1) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t3: #0; + var $t4: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''; + var $t5: Vec (int); + var $t6: #1; + var $t7: #1; + var $t8: $1_string_utils_NIL; + var $t9: int; + var $t10: $1_string_utils_Cons'#1_$1_string_utils_NIL'; + var $t11: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''; + var $t12: $1_string_String; + var $t13: bool; + var $t0: Vec (int); + var $t1: #0; + var $t2: #1; + var $temp_0'#0': #0; + var $temp_0'#1': #1; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume {:print "$at(171,1957,1958)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume $IsValid'#1'($t2); + + // trace_local[fmt]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume {:print "$track_local(19,3,0):", $t0} $t0 == $t0; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume {:print "$track_local(19,3,1):", $t1} $t1 == $t1; + + // trace_local[b]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:42:5+1 + assume {:print "$track_local(19,3,2):", $t2} $t2 == $t2; + + // trace_local[b#868]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:37+1 + assume {:print "$at(171,2945,2946)"} true; + assume {:print "$track_local(19,3,7):", $t2} $t2 == $t2; + + // trace_local[a#869]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:26+1 + assume {:print "$at(171,2868,2869)"} true; + assume {:print "$track_local(19,3,6):", $t2} $t2 == $t2; + + // $t8 := string_utils::nil() on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:58+5 + call $t8 := $1_string_utils_nil(); + if ($abort_flag) { + assume {:print "$at(171,2900,2905)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(19,3):", $t9} $t9 == $t9; + goto L2; + } + + // $t10 := string_utils::cons<#1, string_utils::NIL>($t2, $t8) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:50+14 + call $t10 := $1_string_utils_cons'#1_$1_string_utils_NIL'($t2, $t8); + if ($abort_flag) { + assume {:print "$at(171,2892,2906)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(19,3):", $t9} $t9 == $t9; + goto L2; + } + + // $t11 := string_utils::cons<#0, string_utils::Cons<#1, string_utils::NIL>>($t1, $t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:71+17 + assume {:print "$at(171,2979,2996)"} true; + call $t11 := $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''($t1, $t10); + if ($abort_flag) { + assume {:print "$at(171,2979,2996)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(19,3):", $t9} $t9 == $t9; + goto L2; + } + + // $t12 := opaque begin: string_utils::native_format_list>>($t0, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume {:print "$at(171,2046,2083)"} true; + + // assume Identical($t13, string_utils::args_mismatch_or_invalid_format>>($t0, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume ($t13 == $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($t0, $t11)); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 +L4: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume {:print "$at(171,2046,2083)"} true; + assume {:print "$track_abort(19,3):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 +L3: + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume {:print "$at(171,2046,2083)"} true; + assume $IsValid'$1_string_String'($t12); + + // assume Eq($t12, string_utils::spec_native_format_list>>($t0, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume $IsEqual'$1_string_String'($t12, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($t0, $t11)); + + // $t12 := opaque end: string_utils::native_format_list>>($t0, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:43:9+37 + assume {:print "$track_return(19,3,0):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:44:5+1 + assume {:print "$at(171,2088,2089)"} true; +L1: + + // assert Not(string_utils::args_mismatch_or_invalid_format[]>>($t0, { + // let (a: #0, b: #1): (#0, #1) = Tuple($t1, $t2); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::NIL>>(a, { + // let (a: #1): (#1) = Tuple(b); + // string_utils::$cons[]<#1, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:28:9+60 + assume {:print "$at(172,955,1015)"} true; + assert {:msg "assert_failed(172,955,1015): function does not abort under this condition"} + !$1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($t0, (var a,b := $t1, $t2; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#1_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))); + + // assert Eq($t12, string_utils::spec_native_format_list>>($t0, { + // let (a: #0, b: #1): (#0, #1) = Tuple($t1, $t2); + // string_utils::$cons<#0, string_utils::Cons<#1, string_utils::NIL>>(a, { + // let (a: #1): (#1) = Tuple(b); + // string_utils::$cons<#1, string_utils::NIL>(a, string_utils::$nil()) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:29:9+60 + assume {:print "$at(172,1024,1084)"} true; + assert {:msg "assert_failed(172,1024,1084): post-condition does not hold"} + $IsEqual'$1_string_String'($t12, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($t0, (var a,b := $t1, $t2; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#1_$1_string_utils_NIL'(a, $1_string_utils_$nil())))))); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:29:9+60 + $ret0 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:44:5+1 + assume {:print "$at(171,2088,2089)"} true; +L2: + + // assert string_utils::args_mismatch_or_invalid_format[]>>($t0, { + // let (a: #0, b: #1): (#0, #1) = Tuple($t1, $t2); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::NIL>>(a, { + // let (a: #1): (#1) = Tuple(b); + // string_utils::$cons[]<#1, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:27:5+218 + assume {:print "$at(172,872,1090)"} true; + assert {:msg "assert_failed(172,872,1090): abort not covered by any of the `aborts_if` clauses"} + $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL'''($t0, (var a,b := $t1, $t2; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#1_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:27:5+218 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun string_utils::format3 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+152 +procedure {:timeLimit 80} $1_string_utils_format3$verify(_$t0: Vec (int), _$t1: #0, _$t2: #1, _$t3: #2) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t4: #1; + var $t5: #0; + var $t6: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''; + var $t7: Vec (int); + var $t8: #2; + var $t9: #1; + var $t10: #2; + var $t11: #2; + var $t12: $1_string_utils_NIL; + var $t13: int; + var $t14: $1_string_utils_Cons'#2_$1_string_utils_NIL'; + var $t15: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''; + var $t16: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''; + var $t17: $1_string_String; + var $t18: bool; + var $t0: Vec (int); + var $t1: #0; + var $t2: #1; + var $t3: #2; + var $temp_0'#0': #0; + var $temp_0'#1': #1; + var $temp_0'#2': #2; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume {:print "$at(171,2094,2095)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume $IsValid'#1'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume $IsValid'#2'($t3); + + // trace_local[fmt]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume {:print "$track_local(19,4,0):", $t0} $t0 == $t0; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume {:print "$track_local(19,4,1):", $t1} $t1 == $t1; + + // trace_local[b]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume {:print "$track_local(19,4,2):", $t2} $t2 == $t2; + + // trace_local[c]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:45:5+1 + assume {:print "$track_local(19,4,3):", $t3} $t3 == $t3; + + // trace_local[c#872]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:48+1 + assume {:print "$at(171,3046,3047)"} true; + assume {:print "$track_local(19,4,11):", $t3} $t3 == $t3; + + // trace_local[b#871]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:41+1 + assume {:print "$track_local(19,4,9):", $t2} $t2 == $t2; + + // trace_local[b#874]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:37+1 + assume {:print "$at(171,2945,2946)"} true; + assume {:print "$track_local(19,4,10):", $t3} $t3 == $t3; + + // trace_local[a#875]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:26+1 + assume {:print "$at(171,2868,2869)"} true; + assume {:print "$track_local(19,4,8):", $t3} $t3 == $t3; + + // $t12 := string_utils::nil() on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:58+5 + call $t12 := $1_string_utils_nil(); + if ($abort_flag) { + assume {:print "$at(171,2900,2905)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(19,4):", $t13} $t13 == $t13; + goto L2; + } + + // $t14 := string_utils::cons<#2, string_utils::NIL>($t3, $t12) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:50+14 + call $t14 := $1_string_utils_cons'#2_$1_string_utils_NIL'($t3, $t12); + if ($abort_flag) { + assume {:print "$at(171,2892,2906)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(19,4):", $t13} $t13 == $t13; + goto L2; + } + + // $t15 := string_utils::cons<#1, string_utils::Cons<#2, string_utils::NIL>>($t2, $t14) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:71+17 + assume {:print "$at(171,2979,2996)"} true; + call $t15 := $1_string_utils_cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''($t2, $t14); + if ($abort_flag) { + assume {:print "$at(171,2979,2996)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(19,4):", $t13} $t13 == $t13; + goto L2; + } + + // $t16 := string_utils::cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>>($t1, $t15) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:92+20 + assume {:print "$at(171,3090,3110)"} true; + call $t16 := $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''($t1, $t15); + if ($abort_flag) { + assume {:print "$at(171,3090,3110)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(19,4):", $t13} $t13 == $t13; + goto L2; + } + + // $t17 := opaque begin: string_utils::native_format_list>>>($t0, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume {:print "$at(171,2200,2240)"} true; + + // assume Identical($t18, string_utils::args_mismatch_or_invalid_format>>>($t0, $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume ($t18 == $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($t0, $t16)); + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 +L4: + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume {:print "$at(171,2200,2240)"} true; + assume {:print "$track_abort(19,4):", $t13} $t13 == $t13; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 +L3: + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume {:print "$at(171,2200,2240)"} true; + assume $IsValid'$1_string_String'($t17); + + // assume Eq($t17, string_utils::spec_native_format_list>>>($t0, $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume $IsEqual'$1_string_String'($t17, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($t0, $t16)); + + // $t17 := opaque end: string_utils::native_format_list>>>($t0, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:46:9+40 + assume {:print "$track_return(19,4,0):", $t17} $t17 == $t17; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:47:5+1 + assume {:print "$at(171,2245,2246)"} true; +L1: + + // assert Not(string_utils::args_mismatch_or_invalid_format[]>>>($t0, { + // let (a: #0, b: #1, c: #2): (#0, #1, #2) = Tuple($t1, $t2, $t3); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>>(a, { + // let (a: #1, b: #2): (#1, #2) = Tuple(b, c); + // string_utils::$cons[]<#1, string_utils::Cons<#2, string_utils::NIL>>(a, { + // let (a: #2): (#2) = Tuple(b); + // string_utils::$cons[]<#2, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:33:9+63 + assume {:print "$at(172,1196,1259)"} true; + assert {:msg "assert_failed(172,1196,1259): function does not abort under this condition"} + !$1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($t0, (var a,b,c := $t1, $t2, $t3; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#2_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))))); + + // assert Eq($t17, string_utils::spec_native_format_list>>>($t0, { + // let (a: #0, b: #1, c: #2): (#0, #1, #2) = Tuple($t1, $t2, $t3); + // string_utils::$cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>>(a, { + // let (a: #1, b: #2): (#1, #2) = Tuple(b, c); + // string_utils::$cons<#1, string_utils::Cons<#2, string_utils::NIL>>(a, { + // let (a: #2): (#2) = Tuple(b); + // string_utils::$cons<#2, string_utils::NIL>(a, string_utils::$nil()) + // }) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:34:9+63 + assume {:print "$at(172,1268,1331)"} true; + assert {:msg "assert_failed(172,1268,1331): post-condition does not hold"} + $IsEqual'$1_string_String'($t17, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($t0, (var a,b,c := $t1, $t2, $t3; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#2_$1_string_utils_NIL'(a, $1_string_utils_$nil())))))))); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:34:9+63 + $ret0 := $t17; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:47:5+1 + assume {:print "$at(171,2245,2246)"} true; +L2: + + // assert string_utils::args_mismatch_or_invalid_format[]>>>($t0, { + // let (a: #0, b: #1, c: #2): (#0, #1, #2) = Tuple($t1, $t2, $t3); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::NIL>>>(a, { + // let (a: #1, b: #2): (#1, #2) = Tuple(b, c); + // string_utils::$cons[]<#1, string_utils::Cons<#2, string_utils::NIL>>(a, { + // let (a: #2): (#2) = Tuple(b); + // string_utils::$cons[]<#2, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // }) + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:32:5+241 + assume {:print "$at(172,1096,1337)"} true; + assert {:msg "assert_failed(172,1096,1337): abort not covered by any of the `aborts_if` clauses"} + $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''''($t0, (var a,b,c := $t1, $t2, $t3; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#2_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))))); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:32:5+241 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun string_utils::format4 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+172 +procedure {:timeLimit 80} $1_string_utils_format4$verify(_$t0: Vec (int), _$t1: #0, _$t2: #1, _$t3: #2, _$t4: #3) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t5: #2; + var $t6: #1; + var $t7: #0; + var $t8: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''; + var $t9: Vec (int); + var $t10: #3; + var $t11: #1; + var $t12: #2; + var $t13: #3; + var $t14: #2; + var $t15: #3; + var $t16: #3; + var $t17: $1_string_utils_NIL; + var $t18: int; + var $t19: $1_string_utils_Cons'#3_$1_string_utils_NIL'; + var $t20: $1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''; + var $t21: $1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''; + var $t22: $1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''; + var $t23: $1_string_String; + var $t24: bool; + var $t0: Vec (int); + var $t1: #0; + var $t2: #1; + var $t3: #2; + var $t4: #3; + var $temp_0'#0': #0; + var $temp_0'#1': #1; + var $temp_0'#2': #2; + var $temp_0'#3': #3; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$at(171,2251,2252)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume $IsValid'#1'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume $IsValid'#2'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume $IsValid'#3'($t4); + + // trace_local[fmt]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$track_local(19,5,0):", $t0} $t0 == $t0; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$track_local(19,5,1):", $t1} $t1 == $t1; + + // trace_local[b]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$track_local(19,5,2):", $t2} $t2 == $t2; + + // trace_local[c]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$track_local(19,5,3):", $t3} $t3 == $t3; + + // trace_local[d]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:48:5+1 + assume {:print "$track_local(19,5,4):", $t4} $t4 == $t4; + + // trace_local[d#879]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:70:59+1 + assume {:print "$at(171,3171,3172)"} true; + assume {:print "$track_local(19,5,16):", $t4} $t4 == $t4; + + // trace_local[c#878]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:70:52+1 + assume {:print "$track_local(19,5,14):", $t3} $t3 == $t3; + + // trace_local[b#877]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:70:45+1 + assume {:print "$track_local(19,5,11):", $t2} $t2 == $t2; + + // trace_local[c#882]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:48+1 + assume {:print "$at(171,3046,3047)"} true; + assume {:print "$track_local(19,5,15):", $t4} $t4 == $t4; + + // trace_local[b#881]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:41+1 + assume {:print "$track_local(19,5,12):", $t3} $t3 == $t3; + + // trace_local[b#884]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:37+1 + assume {:print "$at(171,2945,2946)"} true; + assume {:print "$track_local(19,5,13):", $t4} $t4 == $t4; + + // trace_local[a#885]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:26+1 + assume {:print "$at(171,2868,2869)"} true; + assume {:print "$track_local(19,5,10):", $t4} $t4 == $t4; + + // $t17 := string_utils::nil() on_abort goto L2 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:58+5 + call $t17 := $1_string_utils_nil(); + if ($abort_flag) { + assume {:print "$at(171,2900,2905)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + goto L2; + } + + // $t19 := string_utils::cons<#3, string_utils::NIL>($t4, $t17) on_abort goto L2 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:67:50+14 + call $t19 := $1_string_utils_cons'#3_$1_string_utils_NIL'($t4, $t17); + if ($abort_flag) { + assume {:print "$at(171,2892,2906)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + goto L2; + } + + // $t20 := string_utils::cons<#2, string_utils::Cons<#3, string_utils::NIL>>($t3, $t19) on_abort goto L2 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:68:71+17 + assume {:print "$at(171,2979,2996)"} true; + call $t20 := $1_string_utils_cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''($t3, $t19); + if ($abort_flag) { + assume {:print "$at(171,2979,2996)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + goto L2; + } + + // $t21 := string_utils::cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>($t2, $t20) on_abort goto L2 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:69:92+20 + assume {:print "$at(171,3090,3110)"} true; + call $t21 := $1_string_utils_cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''($t2, $t20); + if ($abort_flag) { + assume {:print "$at(171,3090,3110)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + goto L2; + } + + // $t22 := string_utils::cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>>($t1, $t21) on_abort goto L2 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:70:113+23 + assume {:print "$at(171,3225,3248)"} true; + call $t22 := $1_string_utils_cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''($t1, $t21); + if ($abort_flag) { + assume {:print "$at(171,3225,3248)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + goto L2; + } + + // $t23 := opaque begin: string_utils::native_format_list>>>>($t0, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume {:print "$at(171,2374,2417)"} true; + + // assume Identical($t24, string_utils::args_mismatch_or_invalid_format>>>>($t0, $t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume ($t24 == $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($t0, $t22)); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 +L4: + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume {:print "$at(171,2374,2417)"} true; + assume {:print "$track_abort(19,5):", $t18} $t18 == $t18; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 +L3: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume {:print "$at(171,2374,2417)"} true; + assume $IsValid'$1_string_String'($t23); + + // assume Eq($t23, string_utils::spec_native_format_list>>>>($t0, $t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume $IsEqual'$1_string_String'($t23, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($t0, $t22)); + + // $t23 := opaque end: string_utils::native_format_list>>>>($t0, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:49:9+43 + assume {:print "$track_return(19,5,0):", $t23} $t23 == $t23; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:50:5+1 + assume {:print "$at(171,2422,2423)"} true; +L1: + + // assert Not(string_utils::args_mismatch_or_invalid_format[]>>>>($t0, { + // let (a: #0, b: #1, c: #2, d: #3): (#0, #1, #2, #3) = Tuple($t1, $t2, $t3, $t4); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>>(a, { + // let (a: #1, b: #2, c: #3): (#1, #2, #3) = Tuple(b, c, d); + // string_utils::$cons[]<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>(a, { + // let (a: #2, b: #3): (#2, #3) = Tuple(b, c); + // string_utils::$cons[]<#2, string_utils::Cons<#3, string_utils::NIL>>(a, { + // let (a: #3): (#3) = Tuple(b); + // string_utils::$cons[]<#3, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // }) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:38:9+66 + assume {:print "$at(172,1460,1526)"} true; + assert {:msg "assert_failed(172,1460,1526): function does not abort under this condition"} + !$1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($t0, (var a,b,c,d := $t1, $t2, $t3, $t4; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(a, (var a,b,c := b, c, d; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#3_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))))))); + + // assert Eq($t23, string_utils::spec_native_format_list>>>>($t0, { + // let (a: #0, b: #1, c: #2, d: #3): (#0, #1, #2, #3) = Tuple($t1, $t2, $t3, $t4); + // string_utils::$cons<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>>(a, { + // let (a: #1, b: #2, c: #3): (#1, #2, #3) = Tuple(b, c, d); + // string_utils::$cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>(a, { + // let (a: #2, b: #3): (#2, #3) = Tuple(b, c); + // string_utils::$cons<#2, string_utils::Cons<#3, string_utils::NIL>>(a, { + // let (a: #3): (#3) = Tuple(b); + // string_utils::$cons<#3, string_utils::NIL>(a, string_utils::$nil()) + // }) + // }) + // }) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:39:9+66 + assume {:print "$at(172,1535,1601)"} true; + assert {:msg "assert_failed(172,1535,1601): post-condition does not hold"} + $IsEqual'$1_string_String'($t23, $1_string_utils_spec_native_format_list'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($t0, (var a,b,c,d := $t1, $t2, $t3, $t4; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(a, (var a,b,c := b, c, d; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#3_$1_string_utils_NIL'(a, $1_string_utils_$nil())))))))))); + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:39:9+66 + $ret0 := $t23; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:50:5+1 + assume {:print "$at(171,2422,2423)"} true; +L2: + + // assert string_utils::args_mismatch_or_invalid_format[]>>>>($t0, { + // let (a: #0, b: #1, c: #2, d: #3): (#0, #1, #2, #3) = Tuple($t1, $t2, $t3, $t4); + // string_utils::$cons[]<#0, string_utils::Cons<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>>(a, { + // let (a: #1, b: #2, c: #3): (#1, #2, #3) = Tuple(b, c, d); + // string_utils::$cons[]<#1, string_utils::Cons<#2, string_utils::Cons<#3, string_utils::NIL>>>(a, { + // let (a: #2, b: #3): (#2, #3) = Tuple(b, c); + // string_utils::$cons[]<#2, string_utils::Cons<#3, string_utils::NIL>>(a, { + // let (a: #3): (#3) = Tuple(b); + // string_utils::$cons[]<#3, string_utils::NIL>(a, string_utils::$nil[]()) + // }) + // }) + // }) + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:37:5+264 + assume {:print "$at(172,1343,1607)"} true; + assert {:msg "assert_failed(172,1343,1607): abort not covered by any of the `aborts_if` clauses"} + $1_string_utils_args_mismatch_or_invalid_format'$1_string_utils_Cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''''($t0, (var a,b,c,d := $t1, $t2, $t3, $t4; $1_string_utils_$cons'#0_$1_string_utils_Cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''''(a, (var a,b,c := b, c, d; $1_string_utils_$cons'#1_$1_string_utils_Cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL'''(a, (var a,b := b, c; $1_string_utils_$cons'#2_$1_string_utils_Cons'#3_$1_string_utils_NIL''(a, (var a := b; $1_string_utils_$cons'#3_$1_string_utils_NIL'(a, $1_string_utils_$nil()))))))))); + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:37:5+264 + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun string_utils::nil [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:5+25 +procedure {:inline 1} $1_string_utils_nil() returns ($ret0: $1_string_utils_NIL) +{ + // declare local variables + var $t0: bool; + var $t1: $1_string_utils_NIL; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + + // bytecode translation starts here + // $t0 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + assume {:print "$at(171,2801,2807)"} true; + $t0 := false; + assume $IsValid'bool'($t0); + + // $t1 := pack string_utils::NIL($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + $t1 := $1_string_utils_NIL($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + assume {:print "$track_return(19,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:29+1 +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:29+1 + assume {:print "$at(171,2808,2809)"} true; + $ret0 := $t1; + return; + +} + +// fun string_utils::nil [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:5+25 +procedure {:timeLimit 80} $1_string_utils_nil$verify() returns ($ret0: $1_string_utils_NIL) +{ + // declare local variables + var $t0: bool; + var $t1: $1_string_utils_NIL; + var $temp_0'$1_string_utils_NIL': $1_string_utils_NIL; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + assume {:print "$at(171,2801,2807)"} true; + $t0 := false; + assume $IsValid'bool'($t0); + + // $t1 := pack string_utils::NIL($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + $t1 := $1_string_utils_NIL($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:22+6 + assume {:print "$track_return(19,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:29+1 +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:64:29+1 + assume {:print "$at(171,2808,2809)"} true; + $ret0 := $t1; + return; + +} + +// fun string_utils::to_string_with_canonical_addresses [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:24:5+122 +procedure {:timeLimit 80} $1_string_utils_to_string_with_canonical_addresses$verify(_$t0: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:24:5+1 + assume {:print "$at(171,1244,1245)"} true; + assume $IsValid'#0'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:24:5+1 + assume {:print "$track_local(19,10,0):", $t0} $t0 == $t0; + + // $t1 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:26+5 + assume {:print "$at(171,1335,1340)"} true; + $t1 := false; + assume $IsValid'bool'($t1); + + // $t2 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:33+4 + $t2 := true; + assume $IsValid'bool'($t2); + + // $t3 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:39+4 + $t3 := true; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:45+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:9+42 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:9+42 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:9+42 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:9+42 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:25:9+42 + assume {:print "$track_return(19,10,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:26:5+1 + assume {:print "$at(171,1365,1366)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:8:9+16 + assume {:print "$at(172,253,269)"} true; + assert {:msg "assert_failed(172,253,269): function does not abort under this condition"} + !false; + + // assert Eq($t5, string_utils::spec_native_format<#0>($t0, false, true, true, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:9:9+66 + assume {:print "$at(172,278,344)"} true; + assert {:msg "assert_failed(172,278,344): post-condition does not hold"} + $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, false, true, true, false)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:9:9+66 + $ret0 := $t5; + return; + +} + +// fun string_utils::to_string_with_integer_types [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:29:5+116 +procedure {:timeLimit 80} $1_string_utils_to_string_with_integer_types$verify(_$t0: #0) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:29:5+1 + assume {:print "$at(171,1435,1436)"} true; + assume $IsValid'#0'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:29:5+1 + assume {:print "$track_local(19,11,0):", $t0} $t0 == $t0; + + // $t1 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:26+5 + assume {:print "$at(171,1520,1525)"} true; + $t1 := false; + assume $IsValid'bool'($t1); + + // $t2 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:33+4 + $t2 := true; + assume $IsValid'bool'($t2); + + // $t3 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:39+4 + $t3 := true; + assume $IsValid'bool'($t3); + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:45+5 + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:9+42 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:9+42 + assume $IsValid'$1_string_String'($t5); + + // assume Eq($t5, string_utils::spec_native_format<#0>($t0, $t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:9+42 + assume $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, $t1, $t2, $t3, $t4)); + + // $t5 := opaque end: string_utils::native_format<#0>($t0, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:9+42 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:30:9+42 + assume {:print "$track_return(19,11,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.move:31:5+1 + assume {:print "$at(171,1550,1551)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:13:9+16 + assume {:print "$at(172,418,434)"} true; + assert {:msg "assert_failed(172,418,434): function does not abort under this condition"} + !false; + + // assert Eq($t5, string_utils::spec_native_format<#0>($t0, false, true, true, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:14:9+66 + assume {:print "$at(172,443,509)"} true; + assert {:msg "assert_failed(172,443,509): post-condition does not hold"} + $IsEqual'$1_string_String'($t5, $1_string_utils_spec_native_format'#0'($t0, false, true, true, false)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/string_utils.spec.move:14:9+66 + $ret0 := $t5; + return; + +} + +// fun debug::print [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'bool'(_$t0: bool) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: bool; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'bool'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'u64'(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'u64'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'u128'(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'u128'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print
[baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'address'(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'address'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'vec'u8''(_$t0: Vec (int)) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'vec'u8''($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'$1_string_String'(_$t0: $1_string_String) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'$1_string_String'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'$1_object_Object'$1_fungible_asset_FungibleStore''(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'$1_object_Object'$1_fungible_asset_FungibleStore''($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:inline 1} $1_debug_print'$1_object_Object'$1_fungible_asset_Metadata''(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'$1_object_Object'$1_fungible_asset_Metadata''($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+67 +procedure {:timeLimit 80} $1_debug_print$verify(_$t0: #0) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t0: #0; + var $temp_0'#0': #0; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$at(152,105,106)"} true; + assume $IsValid'#0'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:5:5+1 + assume {:print "$track_local(20,2,0):", $t0} $t0 == $t0; + + // $t1 := string_utils::debug_string<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:14:9+43 + assume {:print "$at(152,312,355)"} true; + call $t1 := $1_string_utils_debug_string'#0'($t0); + if ($abort_flag) { + assume {:print "$at(152,312,355)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(20,2):", $t2} $t2 == $t2; + goto L2; + } + + // opaque begin: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + assume {:print "$at(152,142,165)"} true; + + // opaque end: debug::native_print($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:6:9+23 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:3:9+16 + assume {:print "$at(153,62,78)"} true; + assert {:msg "assert_failed(153,62,78): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:3:9+16 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:7:5+1 + assume {:print "$at(152,171,172)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:2:5+53 + assume {:print "$at(153,31,84)"} true; + assert {:msg "assert_failed(153,31,84): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:2:5+53 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun debug::print_stack_trace [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:9:5+82 +procedure {:timeLimit 80} $1_debug_print_stack_trace$verify() returns () +{ + // declare local variables + var $t0: $1_string_String; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := opaque begin: debug::native_stack_trace() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:10:22+20 + assume {:print "$at(152,232,252)"} true; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:10:22+20 + assume $IsValid'$1_string_String'($t0); + + // $t0 := opaque end: debug::native_stack_trace() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:10:22+20 + + // opaque begin: debug::native_print($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:10:9+34 + + // opaque end: debug::native_print($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:10:9+34 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.move:11:5+1 + assume {:print "$at(152,259,260)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:7:9+16 + assume {:print "$at(153,125,141)"} true; + assert {:msg "assert_failed(153,125,141): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/debug.spec.move:7:9+16 + return; + +} + +// struct chain_id::ChainId at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:9:5+45 +datatype $1_chain_id_ChainId { + $1_chain_id_ChainId($id: int) +} +function {:inline} $Update'$1_chain_id_ChainId'_id(s: $1_chain_id_ChainId, x: int): $1_chain_id_ChainId { + $1_chain_id_ChainId(x) +} +function $IsValid'$1_chain_id_ChainId'(s: $1_chain_id_ChainId): bool { + $IsValid'u8'(s->$id) +} +function {:inline} $IsEqual'$1_chain_id_ChainId'(s1: $1_chain_id_ChainId, s2: $1_chain_id_ChainId): bool { + s1 == s2 +} +var $1_chain_id_ChainId_$memory: $Memory $1_chain_id_ChainId; + +// fun chain_id::get [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:22:5+100 +procedure {:inline 1} $1_chain_id_get() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: $1_chain_id_ChainId; + var $t2: int; + var $t3: int; + var $temp_0'u8': int; + + // bytecode translation starts here + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:32+19 + assume {:print "$at(27,937,956)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+13 + if (!$ResourceExists($1_chain_id_ChainId_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_chain_id_ChainId_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(27,914,927)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(22,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+46 + $t3 := $t1->$id; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+46 + assume {:print "$track_return(22,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 + assume {:print "$at(27,965,966)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 + assume {:print "$at(27,965,966)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 + assume {:print "$at(27,965,966)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun chain_id::get [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:22:5+100 +procedure {:timeLimit 80} $1_chain_id_get$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: $1_chain_id_ChainId; + var $t2: int; + var $t3: int; + var $temp_0'u8': int; + var $1_chain_id_ChainId_$memory#2: $Memory $1_chain_id_ChainId; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:22:5+1 + assume {:print "$at(27,866,867)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // @2 := save_mem(chain_id::ChainId) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:22:5+1 + $1_chain_id_ChainId_$memory#2 := $1_chain_id_ChainId_$memory; + + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:32+19 + assume {:print "$at(27,937,956)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+13 + if (!$ResourceExists($1_chain_id_ChainId_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_chain_id_ChainId_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(27,914,927)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(22,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+46 + $t3 := $t1->$id; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:23:9+46 + assume {:print "$track_return(22,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 + assume {:print "$at(27,965,966)"} true; +L1: + + // assert Not(Not(exists[@2](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:37:9+48 + assume {:print "$at(28,1426,1474)"} true; + assert {:msg "assert_failed(28,1426,1474): function does not abort under this condition"} + !!$ResourceExists($1_chain_id_ChainId_$memory#2, 1); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:37:9+48 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:24:5+1 + assume {:print "$at(27,965,966)"} true; +L2: + + // assert Not(exists[@2](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:35:5+104 + assume {:print "$at(28,1376,1480)"} true; + assert {:msg "assert_failed(28,1376,1480): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_chain_id_ChainId_$memory#2, 1); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:35:5+104 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun chain_id::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+199 +procedure {:timeLimit 80} $1_chain_id_initialize$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_chain_id_ChainId; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_chain_id_ChainId_$memory#4: $Memory $1_chain_id_ChainId; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume {:print "$at(27,603,604)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:27:9+50 + assume {:print "$at(28,1093,1143)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // @4 := save_mem(chain_id::ChainId) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume {:print "$at(27,603,604)"} true; + $1_chain_id_ChainId_$memory#4 := $1_chain_id_ChainId_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume {:print "$track_local(22,1,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:15:5+1 + assume {:print "$track_local(22,1,1):", $t1} $t1 == $t1; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + assume {:print "$at(27,680,743)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + assume {:print "$at(27,680,743)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + assume {:print "$at(27,680,743)"} true; + assume {:print "$track_abort(22,1):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:16:9+63 + assume {:print "$at(27,680,743)"} true; + + // $t5 := pack chain_id::ChainId($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:17:37+14 + assume {:print "$at(27,781,795)"} true; + $t5 := $1_chain_id_ChainId($t1); + + // move_to($t5, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:17:9+7 + if ($ResourceExists($1_chain_id_ChainId_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_chain_id_ChainId_$memory := $ResourceUpdate($1_chain_id_ChainId_$memory, $t0->$addr, $t5); + } + if ($abort_flag) { + assume {:print "$at(27,753,760)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(22,1):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:18:5+1 + assume {:print "$at(27,801,802)"} true; +L1: + + // assert Not(Neq
($t2, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:28:9+38 + assume {:print "$at(28,1152,1190)"} true; + assert {:msg "assert_failed(28,1152,1190): function does not abort under this condition"} + !!$IsEqual'address'($t2, 1); + + // assert Not(exists[@4](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:29:9+47 + assume {:print "$at(28,1199,1246)"} true; + assert {:msg "assert_failed(28,1199,1246): function does not abort under this condition"} + !$ResourceExists($1_chain_id_ChainId_$memory#4, 1); + + // assert exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:31:9+30 + assume {:print "$at(28,1286,1316)"} true; + assert {:msg "assert_failed(28,1286,1316): post-condition does not hold"} + $ResourceExists($1_chain_id_ChainId_$memory, $t2); + + // assert Eq(select chain_id::ChainId.id(global($t2)), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:32:9+39 + assume {:print "$at(28,1325,1364)"} true; + assert {:msg "assert_failed(28,1325,1364): post-condition does not hold"} + $IsEqual'u8'($ResourceValue($1_chain_id_ChainId_$memory, $t2)->$id, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:32:9+39 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.move:18:5+1 + assume {:print "$at(27,801,802)"} true; +L2: + + // assert Or(Neq
($t2, 0x1), exists[@4](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:25:5+328 + assume {:print "$at(28,1042,1370)"} true; + assert {:msg "assert_failed(28,1042,1370): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($t2, 1) || $ResourceExists($1_chain_id_ChainId_$memory#4, 1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_id.spec.move:25:5+328 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun bcs_util::truncate_16 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:215:5+371 +procedure {:inline 1} $1_bcs_util_truncate_16(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // 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: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation (Vec (int)); + var $t16: Vec (int); + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:215:5+1 + assume {:print "$at(59,6703,6704)"} true; + assume {:print "$track_local(23,36,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:17+18 + assume {:print "$at(59,6771,6789)"} true; + call $t4 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(59,6771,6789)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // $t6 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:39+2 + $t6 := 32; + assume $IsValid'u64'($t6); + + // $t7 := ==($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:36+2 + $t7 := $IsEqual'u64'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + assume {:print "$at(59,6763,6825)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:43+27 +L0: + + // $t8 := 208 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:43+27 + assume {:print "$at(59,6797,6824)"} true; + $t8 := 208; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + assume {:print "$at(59,6763,6825)"} true; + assume {:print "$track_abort(23,36):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + $t5 := $t8; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:27+19 + assume {:print "$at(59,6853,6872)"} true; +L2: + + // $t3 := vector::empty() on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:27+19 + assume {:print "$at(59,6853,6872)"} true; + call $t3 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(59,6853,6872)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:13+11 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // $t9 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:218:17+2 + assume {:print "$at(59,6890,6892)"} true; + $t9 := 16; + assume $IsValid'u64'($t9); + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:218:13+1 + assume {:print "$track_local(23,36,2):", $t9} $t9 == $t9; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$at(59,6909,6910)"} true; +L6: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$at(59,6909,6910)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'vec'u8''($t3); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u8'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'vec'u8''($Dereference($t15)); + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$info(): enter loop, variable(s) i, trunc_bytes havocked and reassigned"} true; + assume {:print "$track_local(23,36,2):", $t2} $t2 == $t2; + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume !$abort_flag; + + // $t10 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:20+2 + $t10 := 32; + assume $IsValid'u64'($t10); + + // $t11 := <($t2, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:18+1 + call $t11 := $Lt($t2, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:9+145 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:9+145 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:37+2 + assume {:print "$at(59,6955,6957)"} true; +L5: + + // $t12 := vector::borrow($t0, $t2) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:22+21 + assume {:print "$at(59,6940,6961)"} true; + call $t12 := $1_vector_borrow'u8'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(59,6940,6961)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[b]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:17+1 + assume {:print "$track_local(23,36,1):", $t12} $t12 == $t12; + + // $t15 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:31+16 + assume {:print "$at(59,6993,7009)"} true; + $t15 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::push_back($t15, $t12) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + call $t15 := $1_vector_push_back'u8'($t15, $t12); + if ($abort_flag) { + assume {:print "$at(59,6975,7013)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // write_back[LocalRoot($t3)@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + $t3 := $Dereference($t15); + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:21+1 + assume {:print "$at(59,7035,7036)"} true; + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := +($t2, $t13) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:19+1 + call $t14 := $AddU64($t2, $t13); + if ($abort_flag) { + assume {:print "$at(59,7033,7034)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[i]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:13+1 + assume {:print "$track_local(23,36,2):", $t14} $t14 == $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:22+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; +L3: + + // $t16 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; + $t16 := $t3; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$track_return(23,36,0):", $t16} $t16 == $t16; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; +L8: + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; + $ret0 := $t16; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 +L9: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun bcs_util::truncate_16 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:215:5+371 +procedure {:timeLimit 80} $1_bcs_util_truncate_16$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // 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: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation (Vec (int)); + var $t16: Vec (int); + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:215:5+1 + assume {:print "$at(59,6703,6704)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:215:5+1 + assume {:print "$track_local(23,36,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:17+18 + assume {:print "$at(59,6771,6789)"} true; + call $t4 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(59,6771,6789)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // $t6 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:39+2 + $t6 := 32; + assume $IsValid'u64'($t6); + + // $t7 := ==($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:36+2 + $t7 := $IsEqual'u64'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + assume {:print "$at(59,6763,6825)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:43+27 +L0: + + // $t8 := 208 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:43+27 + assume {:print "$at(59,6797,6824)"} true; + $t8 := 208; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + assume {:print "$at(59,6763,6825)"} true; + assume {:print "$track_abort(23,36):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + $t5 := $t8; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:216:9+62 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:27+19 + assume {:print "$at(59,6853,6872)"} true; +L2: + + // $t3 := vector::empty() on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:27+19 + assume {:print "$at(59,6853,6872)"} true; + call $t3 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(59,6853,6872)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:217:13+11 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // $t9 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:218:17+2 + assume {:print "$at(59,6890,6892)"} true; + $t9 := 16; + assume $IsValid'u64'($t9); + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:218:13+1 + assume {:print "$track_local(23,36,2):", $t9} $t9 == $t9; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$at(59,6909,6910)"} true; +L6: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$at(59,6909,6910)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'vec'u8''($t3); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u8'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume $IsValid'vec'u8''($Dereference($t15)); + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$info(): enter loop, variable(s) i, trunc_bytes havocked and reassigned"} true; + assume {:print "$track_local(23,36,2):", $t2} $t2 == $t2; + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:16+1 + assume !$abort_flag; + + // $t10 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:20+2 + $t10 := 32; + assume $IsValid'u64'($t10); + + // $t11 := <($t2, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:18+1 + call $t11 := $Lt($t2, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:9+145 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:219:9+145 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:37+2 + assume {:print "$at(59,6955,6957)"} true; +L5: + + // $t12 := vector::borrow($t0, $t2) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:22+21 + assume {:print "$at(59,6940,6961)"} true; + call $t12 := $1_vector_borrow'u8'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(59,6940,6961)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[b]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:220:17+1 + assume {:print "$track_local(23,36,1):", $t12} $t12 == $t12; + + // $t15 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:31+16 + assume {:print "$at(59,6993,7009)"} true; + $t15 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::push_back($t15, $t12) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + call $t15 := $1_vector_push_back'u8'($t15, $t12); + if ($abort_flag) { + assume {:print "$at(59,6975,7013)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // write_back[LocalRoot($t3)@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + $t3 := $Dereference($t15); + + // trace_local[trunc_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:221:13+38 + assume {:print "$track_local(23,36,3):", $t3} $t3 == $t3; + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:21+1 + assume {:print "$at(59,7035,7036)"} true; + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := +($t2, $t13) on_abort goto L9 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:19+1 + call $t14 := $AddU64($t2, $t13); + if ($abort_flag) { + assume {:print "$at(59,7033,7034)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(23,36):", $t5} $t5 == $t5; + goto L9; + } + + // trace_local[i]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:13+1 + assume {:print "$track_local(23,36,2):", $t14} $t14 == $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:222:22+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; +L3: + + // $t16 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; + $t16 := $t3; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$track_return(23,36,0):", $t16} $t16 == $t16; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:224:9+11 + assume {:print "$at(59,7057,7068)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; +L8: + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; + $ret0 := $t16; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 +L9: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/bcs_util.move:225:5+1 + assume {:print "$at(59,7073,7074)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:217:10+176 +function $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key(scheme: int, public_key_bytes: Vec (int), signature: Vec (int), challenge: $1_account_RotationProofChallenge): Vec (int); +axiom (forall scheme: int, public_key_bytes: Vec (int), signature: Vec (int), challenge: $1_account_RotationProofChallenge :: +(var $$res := $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key(scheme, public_key_bytes, signature, challenge); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:582: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))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:610:10+294 +function {:inline} $1_account_spec_is_framework_address(addr: int): bool { + (((((((((!$IsEqual'address'(addr, 1) && !$IsEqual'address'(addr, 2)) && !$IsEqual'address'(addr, 3)) && !$IsEqual'address'(addr, 4)) && !$IsEqual'address'(addr, 5)) && !$IsEqual'address'(addr, 6)) && !$IsEqual'address'(addr, 7)) && !$IsEqual'address'(addr, 8)) && !$IsEqual'address'(addr, 9)) && !$IsEqual'address'(addr, 10)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257: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) +} + +// struct account::Account at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:38:5+401 +datatype $1_account_Account { + $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') +} +function {:inline} $Update'$1_account_Account'_authentication_key(s: $1_account_Account, x: Vec (int)): $1_account_Account { + $1_account_Account(x, s->$sequence_number, s->$guid_creation_num, s->$coin_register_events, s->$key_rotation_events, s->$rotation_capability_offer, s->$signer_capability_offer) +} +function {:inline} $Update'$1_account_Account'_sequence_number(s: $1_account_Account, x: int): $1_account_Account { + $1_account_Account(s->$authentication_key, x, s->$guid_creation_num, s->$coin_register_events, s->$key_rotation_events, s->$rotation_capability_offer, s->$signer_capability_offer) +} +function {:inline} $Update'$1_account_Account'_guid_creation_num(s: $1_account_Account, x: int): $1_account_Account { + $1_account_Account(s->$authentication_key, s->$sequence_number, x, s->$coin_register_events, s->$key_rotation_events, s->$rotation_capability_offer, s->$signer_capability_offer) +} +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(s->$authentication_key, s->$sequence_number, s->$guid_creation_num, x, s->$key_rotation_events, s->$rotation_capability_offer, s->$signer_capability_offer) +} +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(s->$authentication_key, s->$sequence_number, s->$guid_creation_num, s->$coin_register_events, x, s->$rotation_capability_offer, s->$signer_capability_offer) +} +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(s->$authentication_key, s->$sequence_number, s->$guid_creation_num, s->$coin_register_events, s->$key_rotation_events, x, s->$signer_capability_offer) +} +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(s->$authentication_key, s->$sequence_number, s->$guid_creation_num, s->$coin_register_events, s->$key_rotation_events, s->$rotation_capability_offer, x) +} +function $IsValid'$1_account_Account'(s: $1_account_Account): bool { + $IsValid'vec'u8''(s->$authentication_key) + && $IsValid'u64'(s->$sequence_number) + && $IsValid'u64'(s->$guid_creation_num) + && $IsValid'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s->$coin_register_events) + && $IsValid'$1_event_EventHandle'$1_account_KeyRotationEvent''(s->$key_rotation_events) + && $IsValid'$1_account_CapabilityOffer'$1_account_RotationCapability''(s->$rotation_capability_offer) + && $IsValid'$1_account_CapabilityOffer'$1_account_SignerCapability''(s->$signer_capability_offer) +} +function {:inline} $IsEqual'$1_account_Account'(s1: $1_account_Account, s2: $1_account_Account): bool { + $IsEqual'vec'u8''(s1->$authentication_key, s2->$authentication_key) + && $IsEqual'u64'(s1->$sequence_number, s2->$sequence_number) + && $IsEqual'u64'(s1->$guid_creation_num, s2->$guid_creation_num) + && $IsEqual'$1_event_EventHandle'$1_account_CoinRegisterEvent''(s1->$coin_register_events, s2->$coin_register_events) + && $IsEqual'$1_event_EventHandle'$1_account_KeyRotationEvent''(s1->$key_rotation_events, s2->$key_rotation_events) + && $IsEqual'$1_account_CapabilityOffer'$1_account_RotationCapability''(s1->$rotation_capability_offer, s2->$rotation_capability_offer) + && $IsEqual'$1_account_CapabilityOffer'$1_account_SignerCapability''(s1->$signer_capability_offer, s2->$signer_capability_offer)} +var $1_account_Account_$memory: $Memory $1_account_Account; + +// struct account::CapabilityOffer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:57:5+68 +datatype $1_account_CapabilityOffer'$1_account_RotationCapability' { + $1_account_CapabilityOffer'$1_account_RotationCapability'($for: $1_option_Option'address') +} +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''(s->$for) +} +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''(s1->$for, s2->$for)} + +// struct account::CapabilityOffer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:57:5+68 +datatype $1_account_CapabilityOffer'$1_account_SignerCapability' { + $1_account_CapabilityOffer'$1_account_SignerCapability'($for: $1_option_Option'address') +} +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''(s->$for) +} +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''(s1->$for, s2->$for)} + +// struct account::CoinRegisterEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:53:5+77 +datatype $1_account_CoinRegisterEvent { + $1_account_CoinRegisterEvent($type_info: $1_type_info_TypeInfo) +} +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'(s->$type_info) +} +function {:inline} $IsEqual'$1_account_CoinRegisterEvent'(s1: $1_account_CoinRegisterEvent, s2: $1_account_CoinRegisterEvent): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type_info, s2->$type_info)} + +// struct account::KeyRotation at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:31:5+156 +datatype $1_account_KeyRotation { + $1_account_KeyRotation($account: int, $old_authentication_key: Vec (int), $new_authentication_key: Vec (int)) +} +function {:inline} $Update'$1_account_KeyRotation'_account(s: $1_account_KeyRotation, x: int): $1_account_KeyRotation { + $1_account_KeyRotation(x, s->$old_authentication_key, s->$new_authentication_key) +} +function {:inline} $Update'$1_account_KeyRotation'_old_authentication_key(s: $1_account_KeyRotation, x: Vec (int)): $1_account_KeyRotation { + $1_account_KeyRotation(s->$account, x, s->$new_authentication_key) +} +function {:inline} $Update'$1_account_KeyRotation'_new_authentication_key(s: $1_account_KeyRotation, x: Vec (int)): $1_account_KeyRotation { + $1_account_KeyRotation(s->$account, s->$old_authentication_key, x) +} +function $IsValid'$1_account_KeyRotation'(s: $1_account_KeyRotation): bool { + $IsValid'address'(s->$account) + && $IsValid'vec'u8''(s->$old_authentication_key) + && $IsValid'vec'u8''(s->$new_authentication_key) +} +function {:inline} $IsEqual'$1_account_KeyRotation'(s1: $1_account_KeyRotation, s2: $1_account_KeyRotation): bool { + $IsEqual'address'(s1->$account, s2->$account) + && $IsEqual'vec'u8''(s1->$old_authentication_key, s2->$old_authentication_key) + && $IsEqual'vec'u8''(s1->$new_authentication_key, s2->$new_authentication_key)} + +// struct account::KeyRotationEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:48:5+135 +datatype $1_account_KeyRotationEvent { + $1_account_KeyRotationEvent($old_authentication_key: Vec (int), $new_authentication_key: Vec (int)) +} +function {:inline} $Update'$1_account_KeyRotationEvent'_old_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { + $1_account_KeyRotationEvent(x, s->$new_authentication_key) +} +function {:inline} $Update'$1_account_KeyRotationEvent'_new_authentication_key(s: $1_account_KeyRotationEvent, x: Vec (int)): $1_account_KeyRotationEvent { + $1_account_KeyRotationEvent(s->$old_authentication_key, x) +} +function $IsValid'$1_account_KeyRotationEvent'(s: $1_account_KeyRotationEvent): bool { + $IsValid'vec'u8''(s->$old_authentication_key) + && $IsValid'vec'u8''(s->$new_authentication_key) +} +function {:inline} $IsEqual'$1_account_KeyRotationEvent'(s1: $1_account_KeyRotationEvent, s2: $1_account_KeyRotationEvent): bool { + $IsEqual'vec'u8''(s1->$old_authentication_key, s2->$old_authentication_key) + && $IsEqual'vec'u8''(s1->$new_authentication_key, s2->$new_authentication_key)} + +// struct account::OriginatingAddress at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:74:5+87 +datatype $1_account_OriginatingAddress { + $1_account_OriginatingAddress($address_map: Table int (int)) +} +function {:inline} $Update'$1_account_OriginatingAddress'_address_map(s: $1_account_OriginatingAddress, x: Table int (int)): $1_account_OriginatingAddress { + $1_account_OriginatingAddress(x) +} +function $IsValid'$1_account_OriginatingAddress'(s: $1_account_OriginatingAddress): bool { + $IsValid'$1_table_Table'address_address''(s->$address_map) +} +function {:inline} $IsEqual'$1_account_OriginatingAddress'(s1: $1_account_OriginatingAddress, s2: $1_account_OriginatingAddress): bool { + s1 == s2 +} +var $1_account_OriginatingAddress_$memory: $Memory $1_account_OriginatingAddress; + +// struct account::RotationCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:59:5+62 +datatype $1_account_RotationCapability { + $1_account_RotationCapability($account: int) +} +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'(s->$account) +} +function {:inline} $IsEqual'$1_account_RotationCapability'(s1: $1_account_RotationCapability, s2: $1_account_RotationCapability): bool { + s1 == s2 +} + +// struct account::RotationCapabilityOfferProofChallengeV2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:109:5+184 +datatype $1_account_RotationCapabilityOfferProofChallengeV2 { + $1_account_RotationCapabilityOfferProofChallengeV2($chain_id: int, $sequence_number: int, $source_address: int, $recipient_address: int) +} +function {:inline} $Update'$1_account_RotationCapabilityOfferProofChallengeV2'_chain_id(s: $1_account_RotationCapabilityOfferProofChallengeV2, x: int): $1_account_RotationCapabilityOfferProofChallengeV2 { + $1_account_RotationCapabilityOfferProofChallengeV2(x, s->$sequence_number, s->$source_address, s->$recipient_address) +} +function {:inline} $Update'$1_account_RotationCapabilityOfferProofChallengeV2'_sequence_number(s: $1_account_RotationCapabilityOfferProofChallengeV2, x: int): $1_account_RotationCapabilityOfferProofChallengeV2 { + $1_account_RotationCapabilityOfferProofChallengeV2(s->$chain_id, x, s->$source_address, s->$recipient_address) +} +function {:inline} $Update'$1_account_RotationCapabilityOfferProofChallengeV2'_source_address(s: $1_account_RotationCapabilityOfferProofChallengeV2, x: int): $1_account_RotationCapabilityOfferProofChallengeV2 { + $1_account_RotationCapabilityOfferProofChallengeV2(s->$chain_id, s->$sequence_number, x, s->$recipient_address) +} +function {:inline} $Update'$1_account_RotationCapabilityOfferProofChallengeV2'_recipient_address(s: $1_account_RotationCapabilityOfferProofChallengeV2, x: int): $1_account_RotationCapabilityOfferProofChallengeV2 { + $1_account_RotationCapabilityOfferProofChallengeV2(s->$chain_id, s->$sequence_number, s->$source_address, x) +} +function $IsValid'$1_account_RotationCapabilityOfferProofChallengeV2'(s: $1_account_RotationCapabilityOfferProofChallengeV2): bool { + $IsValid'u8'(s->$chain_id) + && $IsValid'u64'(s->$sequence_number) + && $IsValid'address'(s->$source_address) + && $IsValid'address'(s->$recipient_address) +} +function {:inline} $IsEqual'$1_account_RotationCapabilityOfferProofChallengeV2'(s1: $1_account_RotationCapabilityOfferProofChallengeV2, s2: $1_account_RotationCapabilityOfferProofChallengeV2): bool { + s1 == s2 +} + +// struct account::RotationProofChallenge at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:83:5+476 +datatype $1_account_RotationProofChallenge { + $1_account_RotationProofChallenge($sequence_number: int, $originator: int, $current_auth_key: int, $new_public_key: Vec (int)) +} +function {:inline} $Update'$1_account_RotationProofChallenge'_sequence_number(s: $1_account_RotationProofChallenge, x: int): $1_account_RotationProofChallenge { + $1_account_RotationProofChallenge(x, s->$originator, s->$current_auth_key, s->$new_public_key) +} +function {:inline} $Update'$1_account_RotationProofChallenge'_originator(s: $1_account_RotationProofChallenge, x: int): $1_account_RotationProofChallenge { + $1_account_RotationProofChallenge(s->$sequence_number, x, s->$current_auth_key, s->$new_public_key) +} +function {:inline} $Update'$1_account_RotationProofChallenge'_current_auth_key(s: $1_account_RotationProofChallenge, x: int): $1_account_RotationProofChallenge { + $1_account_RotationProofChallenge(s->$sequence_number, s->$originator, x, s->$new_public_key) +} +function {:inline} $Update'$1_account_RotationProofChallenge'_new_public_key(s: $1_account_RotationProofChallenge, x: Vec (int)): $1_account_RotationProofChallenge { + $1_account_RotationProofChallenge(s->$sequence_number, s->$originator, s->$current_auth_key, x) +} +function $IsValid'$1_account_RotationProofChallenge'(s: $1_account_RotationProofChallenge): bool { + $IsValid'u64'(s->$sequence_number) + && $IsValid'address'(s->$originator) + && $IsValid'address'(s->$current_auth_key) + && $IsValid'vec'u8''(s->$new_public_key) +} +function {:inline} $IsEqual'$1_account_RotationProofChallenge'(s1: $1_account_RotationProofChallenge, s2: $1_account_RotationProofChallenge): bool { + $IsEqual'u64'(s1->$sequence_number, s2->$sequence_number) + && $IsEqual'address'(s1->$originator, s2->$originator) + && $IsEqual'address'(s1->$current_auth_key, s2->$current_auth_key) + && $IsEqual'vec'u8''(s1->$new_public_key, s2->$new_public_key)} + +// struct account::SignerCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:61:5+60 +datatype $1_account_SignerCapability { + $1_account_SignerCapability($account: int) +} +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'(s->$account) +} +function {:inline} $IsEqual'$1_account_SignerCapability'(s1: $1_account_SignerCapability, s2: $1_account_SignerCapability): bool { + s1 == s2 +} + +// struct account::SignerCapabilityOfferProofChallengeV2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:116:5+166 +datatype $1_account_SignerCapabilityOfferProofChallengeV2 { + $1_account_SignerCapabilityOfferProofChallengeV2($sequence_number: int, $source_address: int, $recipient_address: int) +} +function {:inline} $Update'$1_account_SignerCapabilityOfferProofChallengeV2'_sequence_number(s: $1_account_SignerCapabilityOfferProofChallengeV2, x: int): $1_account_SignerCapabilityOfferProofChallengeV2 { + $1_account_SignerCapabilityOfferProofChallengeV2(x, s->$source_address, s->$recipient_address) +} +function {:inline} $Update'$1_account_SignerCapabilityOfferProofChallengeV2'_source_address(s: $1_account_SignerCapabilityOfferProofChallengeV2, x: int): $1_account_SignerCapabilityOfferProofChallengeV2 { + $1_account_SignerCapabilityOfferProofChallengeV2(s->$sequence_number, x, s->$recipient_address) +} +function {:inline} $Update'$1_account_SignerCapabilityOfferProofChallengeV2'_recipient_address(s: $1_account_SignerCapabilityOfferProofChallengeV2, x: int): $1_account_SignerCapabilityOfferProofChallengeV2 { + $1_account_SignerCapabilityOfferProofChallengeV2(s->$sequence_number, s->$source_address, x) +} +function $IsValid'$1_account_SignerCapabilityOfferProofChallengeV2'(s: $1_account_SignerCapabilityOfferProofChallengeV2): bool { + $IsValid'u64'(s->$sequence_number) + && $IsValid'address'(s->$source_address) + && $IsValid'address'(s->$recipient_address) +} +function {:inline} $IsEqual'$1_account_SignerCapabilityOfferProofChallengeV2'(s1: $1_account_SignerCapabilityOfferProofChallengeV2, s2: $1_account_SignerCapabilityOfferProofChallengeV2): bool { + s1 == s2 +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_coin_DepositEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_coin_WithdrawEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_treasury_DepositEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_treasury_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_treasury_DepositEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_treasury_DepositEvent'': $1_event_EventHandle'$1_treasury_DepositEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_treasury_DepositEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_treasury_WithdrawEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_treasury_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_treasury_WithdrawEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_treasury_WithdrawEvent'': $1_event_EventHandle'$1_treasury_WithdrawEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_treasury_WithdrawEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''') +{ + // 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_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_on_chain_config_ConfigChangeEvent'#0''(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'') +{ + // 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_on_chain_config_ConfigChangeEvent'#0''; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_on_chain_config_ConfigChangeEvent'#0''($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_dao_ProposalCreatedEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_dao_ProposalCreatedEvent') +{ + // 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_dao_ProposalCreatedEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_dao_ProposalCreatedEvent'': $1_event_EventHandle'$1_dao_ProposalCreatedEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_dao_ProposalCreatedEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_dao_VoteChangedEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_dao_VoteChangedEvent') +{ + // 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_dao_VoteChangedEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_dao_VoteChangedEvent'': $1_event_EventHandle'$1_dao_VoteChangedEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_dao_VoteChangedEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle, u128>> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'') +{ + // 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_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'#0_u128''(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'') +{ + // 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_oracle_OracleUpdateEvent'#0_u128''; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'#0_u128''($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'#0_#2''(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'') +{ + // 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_oracle_OracleUpdateEvent'#0_#2''; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''': $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_oracle_OracleUpdateEvent'#0_#2''($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_epoch_NewEpochEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_epoch_NewEpochEvent') +{ + // 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_epoch_NewEpochEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_epoch_NewEpochEvent'': $1_event_EventHandle'$1_epoch_NewEpochEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_epoch_NewEpochEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_stc_block_NewBlockEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_stc_block_NewBlockEvent') +{ + // 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_stc_block_NewBlockEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_stc_block_NewBlockEvent'': $1_event_EventHandle'$1_stc_block_NewBlockEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_stc_block_NewBlockEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_CollectionDescriptionMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent') +{ + // 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_token_event_store_CollectionDescriptionMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_CollectionDescriptionMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_CollectionMaxiumMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent') +{ + // 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_token_event_store_CollectionMaxiumMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_CollectionMaxiumMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_CollectionUriMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent') +{ + // 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_token_event_store_CollectionUriMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'': $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_CollectionUriMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_DefaultPropertyMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent') +{ + // 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_token_event_store_DefaultPropertyMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'': $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_DefaultPropertyMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_DescriptionMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent') +{ + // 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_token_event_store_DescriptionMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'': $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_DescriptionMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_MaxiumMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent') +{ + // 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_token_event_store_MaxiumMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'': $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_MaxiumMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_OptInTransferEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent') +{ + // 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_token_event_store_OptInTransferEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent'': $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_OptInTransferEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_RoyaltyMutateEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent') +{ + // 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_token_event_store_RoyaltyMutateEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'': $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_RoyaltyMutateEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_event_store_UriMutationEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_event_store_UriMutationEvent') +{ + // 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_token_event_store_UriMutationEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_event_store_UriMutationEvent'': $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_event_store_UriMutationEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_DepositEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_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_token_DepositEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_DepositEvent'': $1_event_EventHandle'$1_token_DepositEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_DepositEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_WithdrawEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_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_token_WithdrawEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_WithdrawEvent'': $1_event_EventHandle'$1_token_WithdrawEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_WithdrawEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_BurnTokenEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_BurnTokenEvent') +{ + // 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_token_BurnTokenEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_BurnTokenEvent'': $1_event_EventHandle'$1_token_BurnTokenEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_BurnTokenEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_CreateCollectionEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_CreateCollectionEvent') +{ + // 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_token_CreateCollectionEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_CreateCollectionEvent'': $1_event_EventHandle'$1_token_CreateCollectionEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_CreateCollectionEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_CreateTokenDataEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_CreateTokenDataEvent') +{ + // 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_token_CreateTokenDataEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_CreateTokenDataEvent'': $1_event_EventHandle'$1_token_CreateTokenDataEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_CreateTokenDataEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_MintTokenEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_MintTokenEvent') +{ + // 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_token_MintTokenEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_MintTokenEvent'': $1_event_EventHandle'$1_token_MintTokenEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_MintTokenEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_MutateTokenPropertyMapEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent') +{ + // 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_token_MutateTokenPropertyMapEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'': $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_MutateTokenPropertyMapEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_transfers_TokenCancelOfferEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent') +{ + // 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_token_transfers_TokenCancelOfferEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'': $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_transfers_TokenCancelOfferEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_transfers_TokenClaimEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent') +{ + // 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_token_transfers_TokenClaimEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent'': $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_transfers_TokenClaimEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:inline 1} $1_account_new_event_handle'$1_token_transfers_TokenOfferEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent') +{ + // 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_token_transfers_TokenOfferEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent'': $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'$1_token_transfers_TokenOfferEvent'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::new_event_handle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+157 +procedure {:timeLimit 80} $1_account_new_event_handle$verify(_$t0: $signer) returns ($ret0: $1_event_EventHandle'#0') +{ + // 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'#0'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#7: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // @7 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$at(17,43790,43791)"} true; + $1_account_Account_$memory#7 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:835:5+1 + assume {:print "$track_local(24,23,0):", $t0} $t0 == $t0; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // $t6 := account::create_guid($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:33+20 + assume {:print "$at(17,43920,43940)"} true; + call $t6 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(17,43920,43940)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := event::new_event_handle<#0>($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + call $t8 := $1_event_new_event_handle'#0'($t6); + if ($abort_flag) { + assume {:print "$at(17,43896,43941)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,23):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:836:9+45 + assume {:print "$track_return(24,23,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L1: + + // assert Not(Not(exists[@7]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:644:9+33 + assume {:print "$at(18,32305,32338)"} true; + assert {:msg "assert_failed(18,32305,32338): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#7, $t1); + + // assert Not(Gt(Add(select account::Account.guid_creation_num($t2), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:645:9+50 + assume {:print "$at(18,32347,32397)"} true; + assert {:msg "assert_failed(18,32347,32397): function does not abort under this condition"} + !(($t2->$guid_creation_num + 1) > 18446744073709551615); + + // assert Not(Ge(Add(select account::Account.guid_creation_num($t2), 1), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:646:9+65 + assume {:print "$at(18,32406,32471)"} true; + assert {:msg "assert_failed(18,32406,32471): function does not abort under this condition"} + !(($t2->$guid_creation_num + 1) >= 1125899906842624); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:646:9+65 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:837:5+1 + assume {:print "$at(17,43946,43947)"} true; +L2: + + // assert Or(Or(Not(exists[@7]($t1)), Gt(Add(select account::Account.guid_creation_num($t2), 1), 18446744073709551615)), Ge(Add(select account::Account.guid_creation_num($t2), 1), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:637:5+120 + assume {:print "$at(18,32016,32136)"} true; + assert {:msg "assert_failed(18,32016,32136): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_account_Account_$memory#7, $t1) || (($t2->$guid_creation_num + 1) > 18446744073709551615)) || (($t2->$guid_creation_num + 1) >= 1125899906842624)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:637:5+120 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:185:5+247 +procedure {:timeLimit 80} $1_account_initialize$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: Table int (int); + var $t5: $1_account_OriginatingAddress; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_account_OriginatingAddress_$memory#11: $Memory $1_account_OriginatingAddress; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:185:5+1 + assume {:print "$at(17,9475,9476)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::OriginatingAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:185:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_OriginatingAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_OriginatingAddress_$memory, $a_0); + ($IsValid'$1_account_OriginatingAddress'($rsc)))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:115:9+59 + assume {:print "$at(18,6828,6887)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // @11 := save_mem(account::OriginatingAddress) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:185:5+1 + assume {:print "$at(17,9475,9476)"} true; + $1_account_OriginatingAddress_$memory#11 := $1_account_OriginatingAddress_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:185:5+1 + assume {:print "$track_local(24,19,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + assume {:print "$at(17,9544,9607)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + assume {:print "$at(17,9544,9607)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + assume {:print "$at(17,9544,9607)"} true; + assume {:print "$track_abort(24,19):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:186:9+63 + assume {:print "$at(17,9544,9607)"} true; + + // $t4 := table::new() on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:188:26+12 + assume {:print "$at(17,9691,9703)"} true; + call $t4 := $1_table_new'address_address'(); + if ($abort_flag) { + assume {:print "$at(17,9691,9703)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,19):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := pack account::OriginatingAddress($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:187:37+69 + assume {:print "$at(17,9645,9714)"} true; + $t5 := $1_account_OriginatingAddress($t4); + + // move_to($t5, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:187:9+7 + if ($ResourceExists($1_account_OriginatingAddress_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_account_OriginatingAddress_$memory := $ResourceUpdate($1_account_OriginatingAddress_$memory, $t0->$addr, $t5); + } + if ($abort_flag) { + assume {:print "$at(17,9617,9624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,19):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:190:5+1 + assume {:print "$at(17,9721,9722)"} true; +L1: + + // assert Not(Not(system_addresses::$is_starcoin_framework_address[]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:116:9+74 + assume {:print "$at(18,6896,6970)"} true; + assert {:msg "assert_failed(18,6896,6970): function does not abort under this condition"} + !!$1_system_addresses_$is_starcoin_framework_address($t1); + + // assert Not(exists[@11]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:117:9+52 + assume {:print "$at(18,6979,7031)"} true; + assert {:msg "assert_failed(18,6979,7031): function does not abort under this condition"} + !$ResourceExists($1_account_OriginatingAddress_$memory#11, $t1); + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:118:9+50 + assume {:print "$at(18,7040,7090)"} true; + assert {:msg "assert_failed(18,7040,7090): post-condition does not hold"} + $ResourceExists($1_account_OriginatingAddress_$memory, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:118:9+50 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:190:5+1 + assume {:print "$at(17,9721,9722)"} true; +L2: + + // assert Or(Not(system_addresses::$is_starcoin_framework_address[]($t1)), exists[@11]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:114:5+323 + assume {:print "$at(18,6773,7096)"} true; + assert {:msg "assert_failed(18,6773,7096): abort not covered by any of the `aborts_if` clauses"} + (!$1_system_addresses_$is_starcoin_framework_address($t1) || $ResourceExists($1_account_OriginatingAddress_$memory#11, $t1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:114:5+323 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun account::assert_valid_rotation_proof_signature_and_get_auth_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1242 +procedure {:timeLimit 80} $1_account_assert_valid_rotation_proof_signature_and_get_auth_key$verify(_$t0: int, _$t1: Vec (int), _$t2: Vec (int), _$t3: $1_account_RotationProofChallenge) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t4: Vec (int); + var $t5: $1_ed25519_UnvalidatedPublicKey; + var $t6: $1_multi_ed25519_UnvalidatedPublicKey; + var $t7: $1_ed25519_Signature; + var $t8: $1_multi_ed25519_Signature; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $1_ed25519_UnvalidatedPublicKey; + var $t13: int; + var $t14: $1_ed25519_Signature; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: $1_multi_ed25519_UnvalidatedPublicKey; + var $t22: $1_multi_ed25519_Signature; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t0: int; + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: $1_account_RotationProofChallenge; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume {:print "$at(17,34040,34041)"} true; + assume $IsValid'u8'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume $IsValid'$1_account_RotationProofChallenge'($t3); + + // assume Identical($t9, Len($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t9 == LenVec($t1)); + + // trace_local[scheme]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume {:print "$at(17,34040,34041)"} true; + assume {:print "$track_local(24,0,0):", $t0} $t0 == $t0; + + // trace_local[public_key_bytes]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume {:print "$track_local(24,0,1):", $t1} $t1 == $t1; + + // trace_local[signature]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume {:print "$track_local(24,0,2):", $t2} $t2 == $t2; + + // trace_local[challenge]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:645:5+1 + assume {:print "$track_local(24,0,3):", $t3} $t3 == $t3; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:23+14 + assume {:print "$at(17,34274,34288)"} true; + $t10 := 0; + assume $IsValid'u8'($t10); + + // $t11 := ==($t0, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:20+2 + $t11 := $IsEqual'u8'($t0, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:9+1016 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:652:69+16 + assume {:print "$at(17,34360,34376)"} true; +L1: + + // $t12 := ed25519::new_unvalidated_public_key_from_bytes($t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:652:22+64 + assume {:print "$at(17,34313,34377)"} true; + call $t12 := $1_ed25519_new_unvalidated_public_key_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(17,34313,34377)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[pk]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:652:17+2 + assume {:print "$track_local(24,0,5):", $t12} $t12 == $t12; + + // $t14 := ed25519::new_signature_from_bytes($t2) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:653:23+44 + assume {:print "$at(17,34401,34445)"} true; + call $t14 := $1_ed25519_new_signature_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,34401,34445)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[sig]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:653:17+3 + assume {:print "$track_local(24,0,7):", $t14} $t14 == $t14; + + // $t15 := ed25519::signature_verify_strict_t($t14, $t12, $t3) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:655:17+57 + assume {:print "$at(17,34484,34541)"} true; + call $t15 := $1_ed25519_signature_verify_strict_t'$1_account_RotationProofChallenge'($t14, $t12, $t3); + if ($abort_flag) { + assume {:print "$at(17,34484,34541)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 + assume {:print "$at(17,34459,34630)"} true; + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 + assume {:print "$at(17,34459,34630)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:656:46+27 + assume {:print "$at(17,34588,34615)"} true; +L2: + + // $t16 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:656:46+27 + assume {:print "$at(17,34588,34615)"} true; + $t16 := 8; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:656:17+57 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(17,34559,34616)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 + assume {:print "$at(17,34459,34630)"} true; + assume {:print "$track_abort(24,0):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 + $t13 := $t17; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:654:13+171 + goto L12; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:658:67+3 + assume {:print "$at(17,34698,34701)"} true; +L4: + + // $t4 := ed25519::unvalidated_public_key_to_authentication_key($t12) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:658:13+58 + assume {:print "$at(17,34644,34702)"} true; + call $t4 := $1_ed25519_unvalidated_public_key_to_authentication_key($t12); + if ($abort_flag) { + assume {:print "$at(17,34644,34702)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:9+1016 + assume {:print "$at(17,34260,35276)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:659:20+6 + assume {:print "$at(17,34722,34728)"} true; +L0: + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:659:30+20 + assume {:print "$at(17,34732,34752)"} true; + $t18 := 1; + assume $IsValid'u8'($t18); + + // $t19 := ==($t0, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:659:27+2 + $t19 := $IsEqual'u8'($t0, $t18); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:659:16+558 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:660:75+16 + assume {:print "$at(17,34830,34846)"} true; +L7: + + // assume Identical($t20, Len($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t20 == LenVec($t1)); + + // $t21 := multi_ed25519::new_unvalidated_public_key_from_bytes($t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:660:22+70 + assume {:print "$at(17,34777,34847)"} true; + call $t21 := $1_multi_ed25519_new_unvalidated_public_key_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(17,34777,34847)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[pk#1]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:660:17+2 + assume {:print "$track_local(24,0,6):", $t21} $t21 == $t21; + + // $t22 := multi_ed25519::new_signature_from_bytes($t2) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:661:23+50 + assume {:print "$at(17,34871,34921)"} true; + call $t22 := $1_multi_ed25519_new_signature_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,34871,34921)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[sig#2]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:661:17+3 + assume {:print "$track_local(24,0,8):", $t22} $t22 == $t22; + + // $t23 := multi_ed25519::signature_verify_strict_t($t22, $t21, $t3) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:663:17+63 + assume {:print "$at(17,34960,35023)"} true; + call $t23 := $1_multi_ed25519_signature_verify_strict_t'$1_account_RotationProofChallenge'($t22, $t21, $t3); + if ($abort_flag) { + assume {:print "$at(17,34960,35023)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t23) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 + assume {:print "$at(17,34935,35112)"} true; + if ($t23) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 + assume {:print "$at(17,34935,35112)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:664:46+27 + assume {:print "$at(17,35070,35097)"} true; +L8: + + // $t24 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:664:46+27 + assume {:print "$at(17,35070,35097)"} true; + $t24 := 8; + assume $IsValid'u64'($t24); + + // $t25 := error::invalid_argument($t24) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:664:17+57 + call $t25 := $1_error_invalid_argument($t24); + if ($abort_flag) { + assume {:print "$at(17,35041,35098)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 + assume {:print "$at(17,34935,35112)"} true; + assume {:print "$track_abort(24,0):", $t25} $t25 == $t25; + + // $t13 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 + $t13 := $t25; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:662:13+177 + goto L12; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:13+46 + assume {:print "$at(17,35220,35266)"} true; +L6: + + // $t26 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:43+15 + assume {:print "$at(17,35250,35265)"} true; + $t26 := 12; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_argument($t26) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:19+40 + call $t27 := $1_error_invalid_argument($t26); + if ($abort_flag) { + assume {:print "$at(17,35226,35266)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:13+46 + assume {:print "$at(17,35220,35266)"} true; + assume {:print "$track_abort(24,0):", $t27} $t27 == $t27; + + // $t13 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:13+46 + $t13 := $t27; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:668:13+46 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:666:73+3 + assume {:print "$at(17,35186,35189)"} true; +L10: + + // $t4 := multi_ed25519::unvalidated_public_key_to_authentication_key($t21) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:666:13+64 + assume {:print "$at(17,35126,35190)"} true; + call $t4 := $1_multi_ed25519_unvalidated_public_key_to_authentication_key($t21); + if ($abort_flag) { + assume {:print "$at(17,35126,35190)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(24,0):", $t13} $t13 == $t13; + goto L12; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:9+1016 + assume {:print "$at(17,34260,35276)"} true; +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:651:9+1016 + assume {:print "$at(17,34260,35276)"} true; + assume {:print "$track_return(24,0,0):", $t4} $t4 == $t4; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:670:5+1 + assume {:print "$at(17,35281,35282)"} true; +L11: + + // assert Not(And(Eq($t0, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t2), pack ed25519::UnvalidatedPublicKey($t1), $t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:232:9+236 + assume {:print "$at(18,12182,12418)"} true; + assert {:msg "assert_failed(18,12182,12418): function does not abort under this condition"} + !($IsEqual'u8'($t0, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t2), $1_ed25519_UnvalidatedPublicKey($t1), $t3)); + + // assert Not(And(Eq($t0, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t2), pack multi_ed25519::UnvalidatedPublicKey($t1), $t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:240:9+260 + assume {:print "$at(18,12682,12942)"} true; + assert {:msg "assert_failed(18,12682,12942): function does not abort under this condition"} + !($IsEqual'u8'($t0, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t2), $1_multi_ed25519_UnvalidatedPublicKey($t1), $t3)); + + // assert Not(And(Neq($t0, 0), Neq($t0, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:245:9+69 + assume {:print "$at(18,12951,13020)"} true; + assert {:msg "assert_failed(18,12951,13020): function does not abort under this condition"} + !(!$IsEqual'u8'($t0, 0) && !$IsEqual'u8'($t0, 1)); + + // assert Not(And(Eq($t0, 0), Neq(Len($t1), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t0, 0) && !$IsEqual'num'(LenVec($t1), 32)); + + // assert Not(And(Eq($t0, 0), Neq(Len($t2), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t0, 0) && !$IsEqual'num'(LenVec($t2), 64)); + + // assert Not(And(Eq($t0, 1), Gt(Div($t9, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t0, 1) && (($t9 div 32) > 32)); + + // assert Not(And(Eq($t0, 1), Neq(Mod($t9, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t0, 1) && !$IsEqual'num'(($t9 mod 32), 1)); + + // assert Not(And(Eq($t0, 1), Neq(Mod(Len($t2), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t0, 1) && !$IsEqual'num'((LenVec($t2) mod 64), 4)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + $ret0 := $t4; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:670:5+1 + assume {:print "$at(17,35281,35282)"} true; +L12: + + // assert Or(Or(Or(Or(Or(Or(Or(And(Eq($t0, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t2), pack ed25519::UnvalidatedPublicKey($t1), $t3))), And(Eq($t0, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t2), pack multi_ed25519::UnvalidatedPublicKey($t1), $t3)))), And(Neq($t0, 0), Neq($t0, 1))), And(Eq($t0, 0), Neq(Len($t1), 32))), And(Eq($t0, 0), Neq(Len($t2), 64))), And(Eq($t0, 1), Gt(Div($t9, 32), 32))), And(Eq($t0, 1), Neq(Mod($t9, 32), 1))), And(Eq($t0, 1), Neq(Mod(Len($t2), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:219:5+421 + assume {:print "$at(18,11316,11737)"} true; + assert {:msg "assert_failed(18,11316,11737): abort not covered by any of the `aborts_if` clauses"} + (((((((($IsEqual'u8'($t0, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t2), $1_ed25519_UnvalidatedPublicKey($t1), $t3)) || ($IsEqual'u8'($t0, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t2), $1_multi_ed25519_UnvalidatedPublicKey($t1), $t3))) || (!$IsEqual'u8'($t0, 0) && !$IsEqual'u8'($t0, 1))) || ($IsEqual'u8'($t0, 0) && !$IsEqual'num'(LenVec($t1), 32))) || ($IsEqual'u8'($t0, 0) && !$IsEqual'num'(LenVec($t2), 64))) || ($IsEqual'u8'($t0, 1) && (($t9 div 32) > 32))) || ($IsEqual'u8'($t0, 1) && !$IsEqual'num'(($t9 mod 32), 1))) || ($IsEqual'u8'($t0, 1) && !$IsEqual'num'((LenVec($t2) mod 64), 4))); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:219:5+421 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun account::auth_key_to_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:792:5+151 +procedure {:timeLimit 80} $1_account_auth_key_to_address$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t0: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:792:5+1 + assume {:print "$at(17,42055,42056)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[authentication_key]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:792:5+1 + assume {:print "$track_local(24,1,0):", $t0} $t0 == $t0; + + // $t1 := bcs_util::truncate_16($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:793:30+41 + assume {:print "$at(17,42158,42199)"} true; + call $t1 := $1_bcs_util_truncate_16($t0); + if ($abort_flag) { + assume {:print "$at(17,42158,42199)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := from_bcs::to_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:793:9+63 + call $t3 := $1_from_bcs_to_address($t1); + if ($abort_flag) { + assume {:print "$at(17,42137,42200)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,1):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:793:9+63 + assume {:print "$track_return(24,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:794:5+1 + assume {:print "$at(17,42205,42206)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:794:5+1 + assume {:print "$at(17,42205,42206)"} true; + assert {:msg "assert_failed(17,42205,42206): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:794:5+1 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:794:5+1 +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:792:5+151 + assume {:print "$at(17,42055,42206)"} true; + assert {:msg "assert_failed(17,42055,42206): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:792:5+151 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::create_account [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+842 +procedure {:inline 1} $1_account_create_account(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: bool; + var $t3: bool; + var $t4: $1_string_String; + var $t5: $signer; + var $t6: Vec (int); + var $t7: $1_string_String; + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: Vec (int); + var $t22: $signer; + var $t23: Vec (int); + var $t24: $1_string_String; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[new_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+1 + assume {:print "$at(17,10332,10333)"} true; + assume {:print "$track_local(24,2,0):", $t0} $t0 == $t0; + + // $t6 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:41+36 + assume {:print "$at(17,10438,10474)"} true; + $t6 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 32)), MakeVec4(124, 32, 69, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t6); + + // $t7 := string::utf8($t6) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:23+55 + call $t7 := $1_string_utf8($t6); + if ($abort_flag) { + assume {:print "$at(17,10420,10475)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print($t7) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:9+70 + call $1_debug_print'$1_string_String'($t7); + if ($abort_flag) { + assume {:print "$at(17,10406,10476)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print
($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:205:9+26 + assume {:print "$at(17,10486,10512)"} true; + call $1_debug_print'address'($t0); + if ($abort_flag) { + assume {:print "$at(17,10486,10512)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // $t9 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:18+6 + assume {:print "$at(17,10602,10608)"} true; + $t9 := $ResourceExists($1_account_Account_$memory, $t0); + + // $t10 := !($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:17+1 + call $t10 := $Not($t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + assume {:print "$at(17,10593,10679)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:70+23 +L0: + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:70+23 + assume {:print "$at(17,10654,10677)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := error::already_exists($t11) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:48+46 + call $t12 := $1_error_already_exists($t11); + if ($abort_flag) { + assume {:print "$at(17,10632,10678)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + assume {:print "$at(17,10593,10679)"} true; + assume {:print "$track_abort(24,2):", $t12} $t12 == $t12; + + // $t8 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + $t8 := $t12; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+11 + assume {:print "$at(17,10817,10828)"} true; +L2: + + // $t13 := 0x0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:28+12 + assume {:print "$at(17,10832,10844)"} true; + $t13 := 0; + assume $IsValid'address'($t13); + + // $t14 := !=($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:25+2 + $t14 := !$IsEqual'address'($t0, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:44+11 +L4: + + // $t15 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:59+19 + assume {:print "$at(17,10863,10882)"} true; + $t15 := 1; + assume $IsValid'address'($t15); + + // $t2 := !=($t0, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:56+2 + $t2 := !$IsEqual'address'($t0, $t15); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 +L3: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + assume {:print "$at(17,10817,10882)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + $t2 := $t16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + assume {:print "$at(17,10817,10916)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:82+11 +L7: + + // $t17 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:97+15 + assume {:print "$at(17,10901,10916)"} true; + $t17 := 1; + assume $IsValid'address'($t17); + + // $t3 := !=($t0, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:94+2 + $t3 := !$IsEqual'address'($t0, $t17); + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 +L6: + + // $t18 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + assume {:print "$at(17,10817,10916)"} true; + $t18 := false; + assume $IsValid'bool'($t18); + + // $t3 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + $t3 := $t18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:37+24 + assume {:print "$at(17,10954,10978)"} true; +L9: + + // $t19 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:37+24 + assume {:print "$at(17,10954,10978)"} true; + $t19 := 5; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:13+49 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(17,10930,10979)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + assume {:print "$track_abort(24,2):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + $t8 := $t20; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:47+11 + assume {:print "$at(17,11038,11049)"} true; +L11: + + // $t21 := vector::empty() on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:60+19 + assume {:print "$at(17,11051,11070)"} true; + call $t21 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(17,11051,11070)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // $t22 := account::create_account_unchecked($t0, $t21) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:22+58 + call $t22 := $1_account_create_account_unchecked($t0, $t21); + if ($abort_flag) { + assume {:print "$at(17,11013,11071)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[signer]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:13+6 + assume {:print "$track_local(24,2,5):", $t22} $t22 == $t22; + + // $t23 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:41+35 + assume {:print "$at(17,11114,11149)"} true; + $t23 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 32)), MakeVec4(124, 32, 69, 120)), MakeVec4(105, 116, 101, 100)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:23+54 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(17,11096,11150)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print($t24) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:9+69 + call $1_debug_print'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(17,11082,11151)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:219:9+6 + assume {:print "$at(17,11162,11168)"} true; + assume {:print "$track_return(24,2,0):", $t22} $t22 == $t22; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 + assume {:print "$at(17,11173,11174)"} true; +L12: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 + assume {:print "$at(17,11173,11174)"} true; + $ret0 := $t22; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 +L13: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 + assume {:print "$at(17,11173,11174)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+842 +procedure {:timeLimit 80} $1_account_create_account$verify(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: bool; + var $t3: bool; + var $t4: $1_string_String; + var $t5: $signer; + var $t6: Vec (int); + var $t7: $1_string_String; + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: Vec (int); + var $t22: $signer; + var $t23: Vec (int); + var $t24: $1_string_String; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#14: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+1 + assume {:print "$at(17,10332,10333)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @14 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+1 + $1_account_Account_$memory#14 := $1_account_Account_$memory; + + // trace_local[new_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:203:5+1 + assume {:print "$track_local(24,2,0):", $t0} $t0 == $t0; + + // $t6 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:41+36 + assume {:print "$at(17,10438,10474)"} true; + $t6 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 32)), MakeVec4(124, 32, 69, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t6); + + // $t7 := string::utf8($t6) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:23+55 + call $t7 := $1_string_utf8($t6); + if ($abort_flag) { + assume {:print "$at(17,10420,10475)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print($t7) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:204:9+70 + call $1_debug_print'$1_string_String'($t7); + if ($abort_flag) { + assume {:print "$at(17,10406,10476)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print
($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:205:9+26 + assume {:print "$at(17,10486,10512)"} true; + call $1_debug_print'address'($t0); + if ($abort_flag) { + assume {:print "$at(17,10486,10512)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // $t9 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:18+6 + assume {:print "$at(17,10602,10608)"} true; + $t9 := $ResourceExists($1_account_Account_$memory, $t0); + + // $t10 := !($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:17+1 + call $t10 := $Not($t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + assume {:print "$at(17,10593,10679)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:70+23 +L0: + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:70+23 + assume {:print "$at(17,10654,10677)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := error::already_exists($t11) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:48+46 + call $t12 := $1_error_already_exists($t11); + if ($abort_flag) { + assume {:print "$at(17,10632,10678)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + assume {:print "$at(17,10593,10679)"} true; + assume {:print "$track_abort(24,2):", $t12} $t12 == $t12; + + // $t8 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + $t8 := $t12; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:207:9+86 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+11 + assume {:print "$at(17,10817,10828)"} true; +L2: + + // $t13 := 0x0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:28+12 + assume {:print "$at(17,10832,10844)"} true; + $t13 := 0; + assume $IsValid'address'($t13); + + // $t14 := !=($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:25+2 + $t14 := !$IsEqual'address'($t0, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:44+11 +L4: + + // $t15 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:59+19 + assume {:print "$at(17,10863,10882)"} true; + $t15 := 1; + assume $IsValid'address'($t15); + + // $t2 := !=($t0, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:56+2 + $t2 := !$IsEqual'address'($t0, $t15); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 +L3: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + assume {:print "$at(17,10817,10882)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 + $t2 := $t16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+65 +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + assume {:print "$at(17,10817,10916)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:82+11 +L7: + + // $t17 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:97+15 + assume {:print "$at(17,10901,10916)"} true; + $t17 := 1; + assume $IsValid'address'($t17); + + // $t3 := !=($t0, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:94+2 + $t3 := !$IsEqual'address'($t0, $t17); + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 +L6: + + // $t18 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + assume {:print "$at(17,10817,10916)"} true; + $t18 := false; + assume $IsValid'bool'($t18); + + // $t3 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 + $t3 := $t18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:211:13+99 +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:37+24 + assume {:print "$at(17,10954,10978)"} true; +L9: + + // $t19 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:37+24 + assume {:print "$at(17,10954,10978)"} true; + $t19 := 5; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:212:13+49 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(17,10930,10979)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + assume {:print "$at(17,10796,10989)"} true; + assume {:print "$track_abort(24,2):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + $t8 := $t20; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:210:9+193 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:47+11 + assume {:print "$at(17,11038,11049)"} true; +L11: + + // $t21 := vector::empty() on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:60+19 + assume {:print "$at(17,11051,11070)"} true; + call $t21 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(17,11051,11070)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // $t22 := account::create_account_unchecked($t0, $t21) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:22+58 + call $t22 := $1_account_create_account_unchecked($t0, $t21); + if ($abort_flag) { + assume {:print "$at(17,11013,11071)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[signer]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:215:13+6 + assume {:print "$track_local(24,2,5):", $t22} $t22 == $t22; + + // $t23 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:41+35 + assume {:print "$at(17,11114,11149)"} true; + $t23 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 32)), MakeVec4(124, 32, 69, 120)), MakeVec4(105, 116, 101, 100)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:23+54 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(17,11096,11150)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // debug::print($t24) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:217:9+69 + call $1_debug_print'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(17,11082,11151)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,2):", $t8} $t8 == $t8; + goto L13; + } + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:219:9+6 + assume {:print "$at(17,11162,11168)"} true; + assume {:print "$track_return(24,2,0):", $t22} $t22 == $t22; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 + assume {:print "$at(17,11173,11174)"} true; +L12: + + // assert Not(Neq(Len(vector::$empty[]()), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:163:9+40 + assume {:print "$at(18,8955,8995)"} true; + assert {:msg "assert_failed(18,8955,8995): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32); + + // assert Not(exists[@14]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:164:9+32 + assume {:print "$at(18,9004,9036)"} true; + assert {:msg "assert_failed(18,9004,9036): function does not abort under this condition"} + !$ResourceExists($1_account_Account_$memory#14, $t0); + + // assert Not(Or(Or(Eq
($t0, 0x0), Eq
($t0, 0x1)), Eq
($t0, 0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:140:9+110 + assume {:print "$at(18,8020,8130)"} true; + assert {:msg "assert_failed(18,8020,8130): function does not abort under this condition"} + !(($IsEqual'address'($t0, 0) || $IsEqual'address'($t0, 1)) || $IsEqual'address'($t0, 1)); + + // assert Eq(Len(vector::$empty()), 32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + assume {:print "$at(18,9045,9083)"} true; + assert {:msg "assert_failed(18,9045,9083): post-condition does not hold"} + $IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32); + + // assert Eq
(signer::$address_of($t22), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:141:9+50 + assume {:print "$at(18,8139,8189)"} true; + assert {:msg "assert_failed(18,8139,8189): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t22), $t0); + + // assert exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:143:9+37 + assume {:print "$at(18,8229,8266)"} true; + assert {:msg "assert_failed(18,8229,8266): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t0); + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:143:9+37 + $ret0 := $t22; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:220:5+1 + assume {:print "$at(17,11173,11174)"} true; +L13: + + // assert Or(Or(Neq(Len(vector::$empty[]()), 32), exists[@14]($t0)), Or(Or(Eq
($t0, 0x0), Eq
($t0, 0x1)), Eq
($t0, 0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:138:5+412 + assume {:print "$at(18,7860,8272)"} true; + assert {:msg "assert_failed(18,7860,8272): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32) || $ResourceExists($1_account_Account_$memory#14, $t0)) || (($IsEqual'address'($t0, 0) || $IsEqual'address'($t0, 1)) || $IsEqual'address'($t0, 1))); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:138:5+412 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_account_if_does_not_exist [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+377 +procedure {:inline 1} $1_account_create_account_if_does_not_exist(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: $signer; + var $t10: Vec (int); + var $t11: $1_string_String; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, bcs::$to_bytes
($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t3 == $1_bcs_$to_bytes'address'($t0)); + + // trace_local[account_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+1 + assume {:print "$at(17,9728,9729)"} true; + assume {:print "$track_local(24,3,0):", $t0} $t0 == $t0; + + // $t4 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 95, 105, 102, 95, 100, 111, 101, 115, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:41+54 + assume {:print "$at(17,9840,9894)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 95)), MakeVec4(105, 102, 95, 100)), MakeVec4(111, 101, 115, 95)), MakeVec4(110, 111, 116, 95)), MakeVec4(101, 120, 105, 115)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t4); + + // $t5 := string::utf8($t4) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:23+73 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(17,9822,9895)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // debug::print($t5) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:9+88 + call $1_debug_print'$1_string_String'($t5); + if ($abort_flag) { + assume {:print "$at(17,9808,9896)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // $t7 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:14+6 + assume {:print "$at(17,9911,9917)"} true; + $t7 := $ResourceExists($1_account_Account_$memory, $t0); + + // $t8 := !($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:13+1 + call $t8 := $Not($t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:9+95 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:28+15 + assume {:print "$at(17,9974,9989)"} true; +L1: + + // $t9 := account::create_account($t0) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:13+31 + assume {:print "$at(17,9959,9990)"} true; + call $t9 := $1_account_create_account($t0); + if ($abort_flag) { + assume {:print "$at(17,9959,9990)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:13+31 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:41+53 + assume {:print "$at(17,10043,10096)"} true; +L0: + + // $t10 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 95, 105, 102, 95, 100, 111, 101, 115, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:41+53 + assume {:print "$at(17,10043,10096)"} true; + $t10 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 95)), MakeVec4(105, 102, 95, 100)), MakeVec4(111, 101, 115, 95)), MakeVec4(110, 111, 116, 95)), MakeVec4(101, 120, 105, 115)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t10); + + // $t11 := string::utf8($t10) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:23+72 + call $t11 := $1_string_utf8($t10); + if ($abort_flag) { + assume {:print "$at(17,10025,10097)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // debug::print($t11) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:9+87 + call $1_debug_print'$1_string_String'($t11); + if ($abort_flag) { + assume {:print "$at(17,10011,10098)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 + assume {:print "$at(17,10104,10105)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 + assume {:print "$at(17,10104,10105)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 +L3: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 + assume {:print "$at(17,10104,10105)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun account::create_account_if_does_not_exist [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+377 +procedure {:timeLimit 80} $1_account_create_account_if_does_not_exist$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: $signer; + var $t10: Vec (int); + var $t11: $1_string_String; + var $t0: int; + var $temp_0'address': int; + var $1_account_Account_$memory#16: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+1 + assume {:print "$at(17,9728,9729)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t3, bcs::$to_bytes
($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t3 == $1_bcs_$to_bytes'address'($t0)); + + // @16 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+1 + assume {:print "$at(17,9728,9729)"} true; + $1_account_Account_$memory#16 := $1_account_Account_$memory; + + // trace_local[account_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:192:5+1 + assume {:print "$track_local(24,3,0):", $t0} $t0 == $t0; + + // $t4 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 95, 105, 102, 95, 100, 111, 101, 115, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:41+54 + assume {:print "$at(17,9840,9894)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 95)), MakeVec4(105, 102, 95, 100)), MakeVec4(111, 101, 115, 95)), MakeVec4(110, 111, 116, 95)), MakeVec4(101, 120, 105, 115)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t4); + + // $t5 := string::utf8($t4) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:23+73 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(17,9822,9895)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // debug::print($t5) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:193:9+88 + call $1_debug_print'$1_string_String'($t5); + if ($abort_flag) { + assume {:print "$at(17,9808,9896)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // $t7 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:14+6 + assume {:print "$at(17,9911,9917)"} true; + $t7 := $ResourceExists($1_account_Account_$memory, $t0); + + // $t8 := !($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:13+1 + call $t8 := $Not($t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:194:9+95 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:28+15 + assume {:print "$at(17,9974,9989)"} true; +L1: + + // $t9 := account::create_account($t0) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:13+31 + assume {:print "$at(17,9959,9990)"} true; + call $t9 := $1_account_create_account($t0); + if ($abort_flag) { + assume {:print "$at(17,9959,9990)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:195:13+31 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:41+53 + assume {:print "$at(17,10043,10096)"} true; +L0: + + // $t10 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 99, 99, 111, 117, 110, 116, 95, 105, 102, 95, 100, 111, 101, 115, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:41+53 + assume {:print "$at(17,10043,10096)"} true; + $t10 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 99, 114, 101)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 99, 99, 111)), MakeVec4(117, 110, 116, 95)), MakeVec4(105, 102, 95, 100)), MakeVec4(111, 101, 115, 95)), MakeVec4(110, 111, 116, 95)), MakeVec4(101, 120, 105, 115)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t10); + + // $t11 := string::utf8($t10) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:23+72 + call $t11 := $1_string_utf8($t10); + if ($abort_flag) { + assume {:print "$at(17,10025,10097)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // debug::print($t11) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:197:9+87 + call $1_debug_print'$1_string_String'($t11); + if ($abort_flag) { + assume {:print "$at(17,10011,10098)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,3):", $t6} $t6 == $t6; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 + assume {:print "$at(17,10104,10105)"} true; +L2: + + // assert Not(And(Not(exists[@16]($t0)), Or(Or(Or(Eq
($t0, 0x0), Eq
($t0, 0x1)), Eq
($t0, 0x1)), Not(Eq(Len($t3), 32))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:125:9+255 + assume {:print "$at(18,7305,7560)"} true; + assert {:msg "assert_failed(18,7305,7560): function does not abort under this condition"} + !(!$ResourceExists($1_account_Account_$memory#16, $t0) && ((($IsEqual'address'($t0, 0) || $IsEqual'address'($t0, 1)) || $IsEqual'address'($t0, 1)) || !$IsEqual'num'(LenVec($t3), 32))); + + // assert exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:131:9+41 + assume {:print "$at(18,7569,7610)"} true; + assert {:msg "assert_failed(18,7569,7610): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:131:9+41 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:198:5+1 + assume {:print "$at(17,10104,10105)"} true; +L3: + + // assert And(Not(exists[@16]($t0)), Or(Or(Or(Eq
($t0, 0x0), Eq
($t0, 0x1)), Eq
($t0, 0x1)), Not(Eq(Len($t3), 32)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:122:5+451 + assume {:print "$at(18,7165,7616)"} true; + assert {:msg "assert_failed(18,7165,7616): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#16, $t0) && ((($IsEqual'address'($t0, 0) || $IsEqual'address'($t0, 1)) || $IsEqual'address'($t0, 1)) || !$IsEqual'num'(LenVec($t3), 32))); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:122:5+451 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun account::create_account_unchecked [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1263 +procedure {:inline 1} $1_account_create_account_unchecked(_$t0: int, _$t1: Vec (int)) returns ($ret0: $signer) +{ + // declare local variables + var $t2: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t3: int; + var $t4: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t5: $signer; + var $t6: $signer; + var $t7: bool; + var $t8: int; + var $t9: Vec (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 $t1: Vec (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; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[new_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume {:print "$at(17,11180,11181)"} true; + assume {:print "$track_local(24,4,0):", $t0} $t0 == $t0; + + // trace_local[authentication_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume {:print "$track_local(24,4,1):", $t1} $t1 == $t1; + + // $t6 := opaque begin: create_signer::create_signer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume {:print "$at(17,11299,11325)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume $IsValid'signer'($t6) && $1_signer_is_txn_signer($t6) && $1_signer_is_txn_signer_addr($t6->$addr); + + // assume Eq
(signer::$address_of($t6), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume $IsEqual'address'($1_signer_$address_of($t6), $t0); + + // $t6 := opaque end: create_signer::create_signer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + + // trace_local[new_account]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:13+11 + assume {:print "$track_local(24,4,5):", $t6} $t6 == $t6; + + // $t7 := vector::is_empty($t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:224:13+37 + assume {:print "$at(17,11339,11376)"} true; + call $t7 := $1_vector_is_empty'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,11339,11376)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:224:9+101 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:34+13 + assume {:print "$at(17,11413,11426)"} true; +L1: + + // $t9 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:34+13 + assume {:print "$at(17,11413,11426)"} true; + $t9 := 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''($t9); + + // $t1 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:13+18 + $t1 := $t9; + + // trace_local[authentication_key]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:13+18 + assume {:print "$track_local(24,4,1):", $t9} $t9 == $t9; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:28+19 + assume {:print "$at(17,11482,11501)"} true; +L0: + + // $t10 := vector::length($t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:13+35 + assume {:print "$at(17,11467,11502)"} true; + call $t10 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,11467,11502)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:52+2 + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:49+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + if ($t12) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:37+29 + assume {:print "$at(17,11546,11575)"} true; +L2: + + // $t13 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:37+29 + assume {:print "$at(17,11546,11575)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(17,11522,11576)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + assume {:print "$track_abort(24,4):", $t14} $t14 == $t14; + + // $t8 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + $t8 := $t14; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:33+1 + assume {:print "$at(17,11621,11622)"} true; +L4: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:33+1 + assume {:print "$at(17,11621,11622)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // $t3 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:13+17 + $t3 := $t15; + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:13+17 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t16 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:55+22 + assume {:print "$at(17,11679,11701)"} true; + $t16 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t17 := guid::create($t0, $t16) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + call $t17,$t16 := $1_guid_create($t0, $t16); + if ($abort_flag) { + assume {:print "$at(17,11653,11702)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + $t3 := $Dereference($t16); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t18 := event::new_event_handle($t17) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:235:36+57 + assume {:print "$at(17,11739,11796)"} true; + call $t18 := $1_event_new_event_handle'$1_account_CoinRegisterEvent'($t17); + if ($abort_flag) { + assume {:print "$at(17,11739,11796)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[coin_register_events]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:235:13+20 + assume {:print "$track_local(24,4,2):", $t18} $t18 == $t18; + + // $t19 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:59+22 + assume {:print "$at(17,11857,11879)"} true; + $t19 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t20 := guid::create($t0, $t19) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + call $t20,$t19 := $1_guid_create($t0, $t19); + if ($abort_flag) { + assume {:print "$at(17,11831,11880)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + $t3 := $Dereference($t19); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t21 := event::new_event_handle($t20) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:238:35+60 + assume {:print "$at(17,11916,11976)"} true; + call $t21 := $1_event_new_event_handle'$1_account_KeyRotationEvent'($t20); + if ($abort_flag) { + assume {:print "$at(17,11916,11976)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[key_rotation_events]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:238:13+19 + assume {:print "$track_local(24,4,4):", $t21} $t21 == $t21; + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:244:34+1 + assume {:print "$at(17,12113,12114)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:245:17+17 + assume {:print "$at(17,12132,12149)"} true; + $t23 := $t3; + + // $t24 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume {:print "$at(17,12292,12306)"} true; + + // assume And(WellFormed($t24), Le(Len
(select option::Option.vec($t24)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume ($IsValid'$1_option_Option'address''($t24) && (LenVec($t24->$vec) <= 1)); + + // assume Eq>($t24, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume $IsEqual'$1_option_Option'address''($t24, $1_option_spec_none'address'()); + + // $t24 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + + // $t25 := pack account::CapabilityOffer($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:44+39 + $t25 := $1_account_CapabilityOffer'$1_account_RotationCapability'($t24); + + // $t26 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume {:print "$at(17,12374,12388)"} true; + + // assume And(WellFormed($t26), Le(Len
(select option::Option.vec($t26)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume ($IsValid'$1_option_Option'address''($t26) && (LenVec($t26->$vec) <= 1)); + + // assume Eq>($t26, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume $IsEqual'$1_option_Option'address''($t26, $1_option_spec_none'address'()); + + // $t26 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + + // $t27 := pack account::CapabilityOffer($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:42+39 + $t27 := $1_account_CapabilityOffer'$1_account_SignerCapability'($t26); + + // $t28 := pack account::Account($t1, $t22, $t23, $t18, $t21, $t25, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:242:13+371 + assume {:print "$at(17,12034,12405)"} true; + $t28 := $1_account_Account($t1, $t22, $t23, $t18, $t21, $t25, $t27); + + // move_to($t28, $t6) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:240:9+7 + assume {:print "$at(17,11987,11994)"} true; + if ($ResourceExists($1_account_Account_$memory, $t6->$addr)) { + call $ExecFailureAbort(); + } else { + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $t6->$addr, $t28); + } + if ($abort_flag) { + assume {:print "$at(17,11987,11994)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,4):", $t8} $t8 == $t8; + goto L6; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:253:9+11 + assume {:print "$at(17,12426,12437)"} true; + assume {:print "$track_return(24,4,0):", $t6} $t6 == $t6; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 + assume {:print "$at(17,12442,12443)"} true; +L5: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 + assume {:print "$at(17,12442,12443)"} true; + $ret0 := $t6; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 +L6: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 + assume {:print "$at(17,12442,12443)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_account_unchecked [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1263 +procedure {:timeLimit 80} $1_account_create_account_unchecked$verify(_$t0: int, _$t1: Vec (int)) returns ($ret0: $signer) +{ + // declare local variables + 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: bool; + var $t9: int; + var $t10: Vec (int); + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $Mutation (int); + var $t18: $1_guid_GUID; + var $t19: $1_event_EventHandle'$1_account_CoinRegisterEvent'; + var $t20: $Mutation (int); + var $t21: $1_guid_GUID; + var $t22: $1_event_EventHandle'$1_account_KeyRotationEvent'; + var $t23: int; + var $t24: int; + var $t25: $1_option_Option'address'; + var $t26: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t27: $1_option_Option'address'; + var $t28: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t29: $1_account_Account; + var $t0: int; + var $t1: Vec (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); + var $1_account_Account_$memory#12: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume {:print "$at(17,11180,11181)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @12 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + $1_account_Account_$memory#12 := $1_account_Account_$memory; + + // $t6 := copy($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + $t6 := $t1; + + // trace_local[new_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume {:print "$track_local(24,4,0):", $t0} $t0 == $t0; + + // trace_local[authentication_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:222:5+1 + assume {:print "$track_local(24,4,1):", $t1} $t1 == $t1; + + // $t7 := opaque begin: create_signer::create_signer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume {:print "$at(17,11299,11325)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume $IsValid'signer'($t7) && $1_signer_is_txn_signer($t7) && $1_signer_is_txn_signer_addr($t7->$addr); + + // assume Eq
(signer::$address_of($t7), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + assume $IsEqual'address'($1_signer_$address_of($t7), $t0); + + // $t7 := opaque end: create_signer::create_signer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:27+26 + + // trace_local[new_account]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:223:13+11 + assume {:print "$track_local(24,4,5):", $t7} $t7 == $t7; + + // $t8 := vector::is_empty($t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:224:13+37 + assume {:print "$at(17,11339,11376)"} true; + call $t8 := $1_vector_is_empty'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,11339,11376)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:224:9+101 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:34+13 + assume {:print "$at(17,11413,11426)"} true; +L1: + + // $t10 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:34+13 + assume {:print "$at(17,11413,11426)"} true; + $t10 := 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''($t10); + + // $t1 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:13+18 + $t1 := $t10; + + // trace_local[authentication_key]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:225:13+18 + assume {:print "$track_local(24,4,1):", $t10} $t10 == $t10; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:28+19 + assume {:print "$at(17,11482,11501)"} true; +L0: + + // $t11 := vector::length($t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:13+35 + assume {:print "$at(17,11467,11502)"} true; + call $t11 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,11467,11502)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // $t12 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:52+2 + $t12 := 32; + assume $IsValid'u64'($t12); + + // $t13 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:228:49+2 + $t13 := $IsEqual'u64'($t11, $t12); + + // if ($t13) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + if ($t13) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:37+29 + assume {:print "$at(17,11546,11575)"} true; +L2: + + // $t14 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:37+29 + assume {:print "$at(17,11546,11575)"} true; + $t14 := 4; + assume $IsValid'u64'($t14); + + // $t15 := error::invalid_argument($t14) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:229:13+54 + call $t15 := $1_error_invalid_argument($t14); + if ($abort_flag) { + assume {:print "$at(17,11522,11576)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + assume {:print "$at(17,11446,11586)"} true; + assume {:print "$track_abort(24,4):", $t15} $t15 == $t15; + + // $t9 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + $t9 := $t15; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:227:9+140 + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:33+1 + assume {:print "$at(17,11621,11622)"} true; +L4: + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:33+1 + assume {:print "$at(17,11621,11622)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t3 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:13+17 + $t3 := $t16; + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:232:13+17 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t17 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:55+22 + assume {:print "$at(17,11679,11701)"} true; + $t17 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t18 := guid::create($t0, $t17) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + call $t18,$t17 := $1_guid_create($t0, $t17); + if ($abort_flag) { + assume {:print "$at(17,11653,11702)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + $t3 := $Dereference($t17); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:234:29+49 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t19 := event::new_event_handle($t18) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:235:36+57 + assume {:print "$at(17,11739,11796)"} true; + call $t19 := $1_event_new_event_handle'$1_account_CoinRegisterEvent'($t18); + if ($abort_flag) { + assume {:print "$at(17,11739,11796)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[coin_register_events]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:235:13+20 + assume {:print "$track_local(24,4,2):", $t19} $t19 == $t19; + + // $t20 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:59+22 + assume {:print "$at(17,11857,11879)"} true; + $t20 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t21 := guid::create($t0, $t20) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + call $t21,$t20 := $1_guid_create($t0, $t20); + if ($abort_flag) { + assume {:print "$at(17,11831,11880)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + $t3 := $Dereference($t20); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:237:33+49 + assume {:print "$track_local(24,4,3):", $t3} $t3 == $t3; + + // $t22 := event::new_event_handle($t21) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:238:35+60 + assume {:print "$at(17,11916,11976)"} true; + call $t22 := $1_event_new_event_handle'$1_account_KeyRotationEvent'($t21); + if ($abort_flag) { + assume {:print "$at(17,11916,11976)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[key_rotation_events]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:238:13+19 + assume {:print "$track_local(24,4,4):", $t22} $t22 == $t22; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:244:34+1 + assume {:print "$at(17,12113,12114)"} true; + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t24 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:245:17+17 + assume {:print "$at(17,12132,12149)"} true; + $t24 := $t3; + + // $t25 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume {:print "$at(17,12292,12306)"} true; + + // assume And(WellFormed($t25), Le(Len
(select option::Option.vec($t25)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume ($IsValid'$1_option_Option'address''($t25) && (LenVec($t25->$vec) <= 1)); + + // assume Eq>($t25, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + assume $IsEqual'$1_option_Option'address''($t25, $1_option_spec_none'address'()); + + // $t25 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:67+14 + + // $t26 := pack account::CapabilityOffer($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:248:44+39 + $t26 := $1_account_CapabilityOffer'$1_account_RotationCapability'($t25); + + // $t27 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume {:print "$at(17,12374,12388)"} true; + + // assume And(WellFormed($t27), Le(Len
(select option::Option.vec($t27)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume ($IsValid'$1_option_Option'address''($t27) && (LenVec($t27->$vec) <= 1)); + + // assume Eq>($t27, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + assume $IsEqual'$1_option_Option'address''($t27, $1_option_spec_none'address'()); + + // $t27 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:65+14 + + // $t28 := pack account::CapabilityOffer($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:249:42+39 + $t28 := $1_account_CapabilityOffer'$1_account_SignerCapability'($t27); + + // $t29 := pack account::Account($t1, $t23, $t24, $t19, $t22, $t26, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:242:13+371 + assume {:print "$at(17,12034,12405)"} true; + $t29 := $1_account_Account($t1, $t23, $t24, $t19, $t22, $t26, $t28); + + // move_to($t29, $t7) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:240:9+7 + assume {:print "$at(17,11987,11994)"} true; + if ($ResourceExists($1_account_Account_$memory, $t7->$addr)) { + call $ExecFailureAbort(); + } else { + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $t7->$addr, $t29); + } + if ($abort_flag) { + assume {:print "$at(17,11987,11994)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(24,4):", $t9} $t9 == $t9; + goto L6; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:253:9+11 + assume {:print "$at(17,12426,12437)"} true; + assume {:print "$track_return(24,4,0):", $t7} $t7 == $t7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 + assume {:print "$at(17,12442,12443)"} true; +L5: + + // assert Not(Neq(Len($t6), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:163:9+40 + assume {:print "$at(18,8955,8995)"} true; + assert {:msg "assert_failed(18,8955,8995): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t6), 32); + + // assert Not(exists[@12]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:164:9+32 + assume {:print "$at(18,9004,9036)"} true; + assert {:msg "assert_failed(18,9004,9036): function does not abort under this condition"} + !$ResourceExists($1_account_Account_$memory#12, $t0); + + // assert Eq(Len($t6), 32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + assume {:print "$at(18,9045,9083)"} true; + assert {:msg "assert_failed(18,9045,9083): post-condition does not hold"} + $IsEqual'num'(LenVec($t6), 32); + + // assert Eq
(signer::$address_of($t7), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:150:9+50 + assume {:print "$at(18,8600,8650)"} true; + assert {:msg "assert_failed(18,8600,8650): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t7), $t0); + + // assert exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:151:9+37 + assume {:print "$at(18,8659,8696)"} true; + assert {:msg "assert_failed(18,8659,8696): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t0); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:151:9+37 + $ret0 := $t7; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:254:5+1 + assume {:print "$at(17,12442,12443)"} true; +L6: + + // assert Or(Neq(Len($t6), 32), exists[@12]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:148:5+285 + assume {:print "$at(18,8417,8702)"} true; + assert {:msg "assert_failed(18,8417,8702): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'num'(LenVec($t6), 32) || $ResourceExists($1_account_Account_$memory#12, $t0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:148:5+285 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun account::create_authorized_signer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628:5+620 +procedure {:timeLimit 80} $1_account_create_authorized_signer$verify(_$t0: $signer, _$t1: int) returns ($ret0: $signer) +{ + // declare local variables + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $1_account_Account; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_account_Account; + var $t11: int; + var $t12: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t13: $1_option_Option'address'; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $signer; + var $t0: $signer; + var $t1: 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 $1_account_Account_$memory#18: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628:5+1 + assume {:print "$at(17,33196,33197)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:564:9+39 + assume {:print "$at(18,28654,28693)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:565:9+48 + assume {:print "$at(18,28702,28750)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t1)); + + // assume CanModify($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:556:9+42 + assume {:print "$at(18,28394,28436)"} true; + assume $1_account_Account_$modifies[$t1]; + + // @18 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:556:9+42 + $1_account_Account_$memory#18 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628:5+1 + assume {:print "$at(17,33196,33197)"} true; + assume {:print "$track_local(24,5,0):", $t0} $t0 == $t0; + + // trace_local[offerer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:628:5+1 + assume {:print "$track_local(24,5,1):", $t1} $t1 == $t1; + + // $t6 := account::exists_at($t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:17+26 + assume {:print "$at(17,33319,33345)"} true; + call $t6 := $1_account_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(17,33319,33345)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,5):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 + assume {:print "$at(17,33311,33397)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 +L0: + + // $t8 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:62+31 + assume {:print "$at(17,33364,33395)"} true; + $t8 := 17; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:45+49 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(17,33347,33396)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,5):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 + assume {:print "$at(17,33311,33397)"} true; + assume {:print "$track_abort(24,5):", $t9} $t9 == $t9; + + // $t7 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 + $t7 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:629:9+86 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:632:55+15 + assume {:print "$at(17,33536,33551)"} true; +L2: + + // $t10 := get_global($t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:632:32+13 + assume {:print "$at(17,33513,33526)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_account_Account_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(17,33513,33526)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,5):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[account_resource]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:632:13+16 + assume {:print "$track_local(24,5,2):", $t10} $t10 == $t10; + + // $t11 := signer::address_of($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:633:20+27 + assume {:print "$at(17,33573,33600)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,33573,33600)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,5):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:633:13+4 + assume {:print "$track_local(24,5,3):", $t11} $t11 == $t11; + + // $t12 := get_field.signer_capability_offer($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:31+40 + assume {:print "$at(17,33649,33689)"} true; + $t12 := $t10->$signer_capability_offer; + + // $t13 := get_field>.for($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:30+45 + $t13 := $t12->$for; + + // $t14 := opaque begin: option::contains
($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:13+70 + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:13+70 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_contains
($t13, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:13+70 + assume $IsEqual'bool'($t14, $1_option_spec_contains'address'($t13, $t11)); + + // $t14 := opaque end: option::contains
($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:635:13+70 + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 + assume {:print "$at(17,33610,33769)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 + assume {:print "$at(17,33610,33769)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:636:30+26 + assume {:print "$at(17,33732,33758)"} true; +L3: + + // $t15 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:636:30+26 + assume {:print "$at(17,33732,33758)"} true; + $t15 := 14; + assume $IsValid'u64'($t15); + + // $t16 := error::not_found($t15) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:636:13+44 + call $t16 := $1_error_not_found($t15); + if ($abort_flag) { + assume {:print "$at(17,33715,33759)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(24,5):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 + assume {:print "$at(17,33610,33769)"} true; + assume {:print "$track_abort(24,5):", $t16} $t16 == $t16; + + // $t7 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 + $t7 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:634:9+159 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:23+15 + assume {:print "$at(17,33794,33809)"} true; +L5: + + // $t17 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:9+30 + assume {:print "$at(17,33780,33810)"} true; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:9+30 + assume $IsValid'signer'($t17) && $1_signer_is_txn_signer($t17) && $1_signer_is_txn_signer_addr($t17->$addr); + + // assume Eq
(signer::$address_of($t17), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:9+30 + assume $IsEqual'address'($1_signer_$address_of($t17), $t1); + + // $t17 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:9+30 + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:639:9+30 + assume {:print "$track_return(24,5,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:640:5+1 + assume {:print "$at(17,33815,33816)"} true; +L6: + + // assert Not(Not(exists[@18]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:566:9+36 + assume {:print "$at(18,28759,28795)"} true; + assert {:msg "assert_failed(18,28759,28795): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#18, $t1); + + // assert Not(Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t5)), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:568:9+84 + assume {:print "$at(18,28851,28935)"} true; + assert {:msg "assert_failed(18,28851,28935): function does not abort under this condition"} + !!$1_option_spec_contains'address'($t5->$signer_capability_offer->$for, $t4); + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:557:9+41 + assume {:print "$at(18,28445,28486)"} true; + assert {:msg "assert_failed(18,28445,28486): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t1); + + // assert Eq
(signer::$address_of($t17), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:558:9+54 + assume {:print "$at(18,28495,28549)"} true; + assert {:msg "assert_failed(18,28495,28549): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t17), $t1); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:558:9+54 + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:640:5+1 + assume {:print "$at(17,33815,33816)"} true; +L7: + + // assert Or(Not(exists[@18]($t1)), Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t5)), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:550:5+391 + assume {:print "$at(18,28164,28555)"} true; + assert {:msg "assert_failed(18,28164,28555): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#18, $t1) || !$1_option_spec_contains'address'($t5->$signer_capability_offer->$for, $t4)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:550:5+391 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun account::create_framework_reserved_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:797:5+685 +procedure {:timeLimit 80} $1_account_create_framework_reserved_account$verify(_$t0: int) returns ($ret0: $signer, $ret1: $1_account_SignerCapability) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: $signer; + var $t11: $1_account_SignerCapability; + var $t12: int; + var $t13: bool; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: Vec (int); + var $t36: $signer; + var $t37: $1_account_SignerCapability; + var $t0: int; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#19: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:797:5+1 + assume {:print "$at(17,42269,42270)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:797: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @19 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:797:5+1 + $1_account_Account_$memory#19 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:797:5+1 + assume {:print "$track_local(24,6,0):", $t0} $t0 == $t0; + + // $t12 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:21+4 + assume {:print "$at(17,42404,42408)"} true; + $t12 := 1; + assume $IsValid'address'($t12); + + // $t13 := ==($t0, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:18+2 + $t13 := $IsEqual'address'($t0, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 +L1: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 + assume {:print "$at(17,42396,42440)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // $t1 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 + $t1 := $t14; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:800:17+4 + assume {:print "$at(17,42428,42432)"} true; +L0: + + // $t15 := 0x2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:800:25+4 + assume {:print "$at(17,42436,42440)"} true; + $t15 := 2; + assume $IsValid'address'($t15); + + // $t1 := ==($t0, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:800:22+2 + $t1 := $IsEqual'address'($t0, $t15); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+44 + assume {:print "$at(17,42396,42440)"} true; +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 + assume {:print "$at(17,42396,42472)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 +L4: + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 + assume {:print "$at(17,42396,42472)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 + $t2 := $t16; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:801:17+4 + assume {:print "$at(17,42460,42464)"} true; +L3: + + // $t17 := 0x3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:801:25+4 + assume {:print "$at(17,42468,42472)"} true; + $t17 := 3; + assume $IsValid'address'($t17); + + // $t2 := ==($t0, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:801:22+2 + $t2 := $IsEqual'address'($t0, $t17); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+76 + assume {:print "$at(17,42396,42472)"} true; +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 + assume {:print "$at(17,42396,42504)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 +L7: + + // $t18 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 + assume {:print "$at(17,42396,42504)"} true; + $t18 := true; + assume $IsValid'bool'($t18); + + // $t3 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 + $t3 := $t18; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:802:17+4 + assume {:print "$at(17,42492,42496)"} true; +L6: + + // $t19 := 0x4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:802:25+4 + assume {:print "$at(17,42500,42504)"} true; + $t19 := 4; + assume $IsValid'address'($t19); + + // $t3 := ==($t0, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:802:22+2 + $t3 := $IsEqual'address'($t0, $t19); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+108 + assume {:print "$at(17,42396,42504)"} true; +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 + assume {:print "$at(17,42396,42536)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 +L10: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 + assume {:print "$at(17,42396,42536)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t4 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 + $t4 := $t20; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:803:17+4 + assume {:print "$at(17,42524,42528)"} true; +L9: + + // $t21 := 0x5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:803:25+4 + assume {:print "$at(17,42532,42536)"} true; + $t21 := 5; + assume $IsValid'address'($t21); + + // $t4 := ==($t0, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:803:22+2 + $t4 := $IsEqual'address'($t0, $t21); + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+140 + assume {:print "$at(17,42396,42536)"} true; +L11: + + // if ($t4) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 + assume {:print "$at(17,42396,42568)"} true; + if ($t4) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 +L13: + + // $t22 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 + assume {:print "$at(17,42396,42568)"} true; + $t22 := true; + assume $IsValid'bool'($t22); + + // $t5 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 + $t5 := $t22; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:804:17+4 + assume {:print "$at(17,42556,42560)"} true; +L12: + + // $t23 := 0x6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:804:25+4 + assume {:print "$at(17,42564,42568)"} true; + $t23 := 6; + assume $IsValid'address'($t23); + + // $t5 := ==($t0, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:804:22+2 + $t5 := $IsEqual'address'($t0, $t23); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+172 + assume {:print "$at(17,42396,42568)"} true; +L14: + + // if ($t5) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 + assume {:print "$at(17,42396,42600)"} true; + if ($t5) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 +L16: + + // $t24 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 + assume {:print "$at(17,42396,42600)"} true; + $t24 := true; + assume $IsValid'bool'($t24); + + // $t6 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 + $t6 := $t24; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:805:17+4 + assume {:print "$at(17,42588,42592)"} true; +L15: + + // $t25 := 0x7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:805:25+4 + assume {:print "$at(17,42596,42600)"} true; + $t25 := 7; + assume $IsValid'address'($t25); + + // $t6 := ==($t0, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:805:22+2 + $t6 := $IsEqual'address'($t0, $t25); + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+204 + assume {:print "$at(17,42396,42600)"} true; +L17: + + // if ($t6) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 + assume {:print "$at(17,42396,42632)"} true; + if ($t6) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 +L19: + + // $t26 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 + assume {:print "$at(17,42396,42632)"} true; + $t26 := true; + assume $IsValid'bool'($t26); + + // $t7 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 + $t7 := $t26; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:806:17+4 + assume {:print "$at(17,42620,42624)"} true; +L18: + + // $t27 := 0x8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:806:25+4 + assume {:print "$at(17,42628,42632)"} true; + $t27 := 8; + assume $IsValid'address'($t27); + + // $t7 := ==($t0, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:806:22+2 + $t7 := $IsEqual'address'($t0, $t27); + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+236 + assume {:print "$at(17,42396,42632)"} true; +L20: + + // if ($t7) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 + assume {:print "$at(17,42396,42664)"} true; + if ($t7) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 +L22: + + // $t28 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 + assume {:print "$at(17,42396,42664)"} true; + $t28 := true; + assume $IsValid'bool'($t28); + + // $t8 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 + $t8 := $t28; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:807:17+4 + assume {:print "$at(17,42652,42656)"} true; +L21: + + // $t29 := 0x9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:807:25+4 + assume {:print "$at(17,42660,42664)"} true; + $t29 := 9; + assume $IsValid'address'($t29); + + // $t8 := ==($t0, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:807:22+2 + $t8 := $IsEqual'address'($t0, $t29); + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+268 + assume {:print "$at(17,42396,42664)"} true; +L23: + + // if ($t8) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 + assume {:print "$at(17,42396,42696)"} true; + if ($t8) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 +L25: + + // $t30 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 + assume {:print "$at(17,42396,42696)"} true; + $t30 := true; + assume $IsValid'bool'($t30); + + // $t9 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 + $t9 := $t30; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:808:17+4 + assume {:print "$at(17,42684,42688)"} true; +L24: + + // $t31 := 0xa at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:808:25+4 + assume {:print "$at(17,42692,42696)"} true; + $t31 := 10; + assume $IsValid'address'($t31); + + // $t9 := ==($t0, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:808:22+2 + $t9 := $IsEqual'address'($t0, $t31); + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:799:13+300 + assume {:print "$at(17,42396,42696)"} true; +L26: + + // if ($t9) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 + assume {:print "$at(17,42375,42783)"} true; + if ($t9) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 + assume {:print "$at(17,42375,42783)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:809:38+36 + assume {:print "$at(17,42735,42771)"} true; +L27: + + // $t32 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:809:38+36 + assume {:print "$at(17,42735,42771)"} true; + $t32 := 11; + assume $IsValid'u64'($t32); + + // $t33 := error::permission_denied($t32) on_abort goto L31 with $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:809:13+62 + call $t33 := $1_error_permission_denied($t32); + if ($abort_flag) { + assume {:print "$at(17,42710,42772)"} true; + $t34 := $abort_code; + assume {:print "$track_abort(24,6):", $t34} $t34 == $t34; + goto L31; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 + assume {:print "$at(17,42375,42783)"} true; + assume {:print "$track_abort(24,6):", $t33} $t33 == $t33; + + // $t34 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 + $t34 := $t33; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:798:9+408 + goto L31; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:811:47+4 + assume {:print "$at(17,42831,42835)"} true; +L29: + + // $t35 := vector::empty() on_abort goto L31 with $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:811:53+19 + assume {:print "$at(17,42837,42856)"} true; + call $t35 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(17,42837,42856)"} true; + $t34 := $abort_code; + assume {:print "$track_abort(24,6):", $t34} $t34 == $t34; + goto L31; + } + + // $t36 := account::create_account_unchecked($t0, $t35) on_abort goto L31 with $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:811:22+51 + call $t36 := $1_account_create_account_unchecked($t0, $t35); + if ($abort_flag) { + assume {:print "$at(17,42806,42857)"} true; + $t34 := $abort_code; + assume {:print "$track_abort(24,6):", $t34} $t34 == $t34; + goto L31; + } + + // trace_local[signer]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:811:13+6 + assume {:print "$track_local(24,6,10):", $t36} $t36 == $t36; + + // $t37 := pack account::SignerCapability($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:812:26+34 + assume {:print "$at(17,42884,42918)"} true; + $t37 := $1_account_SignerCapability($t0); + + // trace_local[signer_cap]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:812:13+10 + assume {:print "$track_local(24,6,11):", $t37} $t37 == $t37; + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:813:9+20 + assume {:print "$at(17,42928,42948)"} true; + assume {:print "$track_return(24,6,0):", $t36} $t36 == $t36; + + // trace_return[1]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:813:9+20 + assume {:print "$track_return(24,6,1):", $t37} $t37 == $t37; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:814:5+1 + assume {:print "$at(17,42953,42954)"} true; +L30: + + // assert Not(account::spec_is_framework_address[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:604:9+42 + assume {:print "$at(18,30833,30875)"} true; + assert {:msg "assert_failed(18,30833,30875): function does not abort under this condition"} + !$1_account_spec_is_framework_address($t0); + + // assert Not(Neq(Len(vector::$empty[]()), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:163:9+40 + assume {:print "$at(18,8955,8995)"} true; + assert {:msg "assert_failed(18,8955,8995): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32); + + // assert Not(exists[@19]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:164:9+32 + assume {:print "$at(18,9004,9036)"} true; + assert {:msg "assert_failed(18,9004,9036): function does not abort under this condition"} + !$ResourceExists($1_account_Account_$memory#19, $t0); + + // assert Eq(Len(vector::$empty()), 32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + assume {:print "$at(18,9045,9083)"} true; + assert {:msg "assert_failed(18,9045,9083): post-condition does not hold"} + $IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32); + + // assert Eq
(signer::$address_of($t36), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:606:9+45 + assume {:print "$at(18,30971,31016)"} true; + assert {:msg "assert_failed(18,30971,31016): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t36), $t0); + + // assert Eq($t37, pack account::SignerCapability($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:607:9+55 + assume {:print "$at(18,31025,31080)"} true; + assert {:msg "assert_failed(18,31025,31080): post-condition does not hold"} + $IsEqual'$1_account_SignerCapability'($t37, $1_account_SignerCapability($t0)); + + // return ($t36, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:607:9+55 + $ret0 := $t36; + $ret1 := $t37; + return; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:814:5+1 + assume {:print "$at(17,42953,42954)"} true; +L31: + + // assert Or(Or(account::spec_is_framework_address[]($t0), Neq(Len(vector::$empty[]()), 32)), exists[@19]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:603:5+345 + assume {:print "$at(18,30741,31086)"} true; + assert {:msg "assert_failed(18,30741,31086): abort not covered by any of the `aborts_if` clauses"} + (($1_account_spec_is_framework_address($t0) || !$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32)) || $ResourceExists($1_account_Account_$memory#19, $t0)); + + // abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:603:5+345 + $abort_code := $t34; + $abort_flag := true; + return; + +} + +// fun account::create_guid [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // trace_local[account_signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820:5+1 + assume {:print "$at(17,43154,43155)"} true; + assume {:print "$track_local(24,7,0):", $t0} $t0 == $t0; + + // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:821:20+34 + assume {:print "$at(17,43252,43286)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,43252,43286)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:821:13+4 + assume {:print "$track_local(24,7,2):", $t7} $t7 == $t7; + + // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:822:23+17 + assume {:print "$at(17,43310,43327)"} 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(17,43310,43327)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[account]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:822:13+7 + $temp_0'$1_account_Account' := $Dereference($t9); + assume {:print "$track_local(24,7,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t10 := borrow_field.guid_creation_num($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:39+30 + assume {:print "$at(17,43382,43412)"} true; + $t10 := $ChildMutation($t9, 2, $Dereference($t9)->$guid_creation_num); + + // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:20+50 + call $t11,$t10 := $1_guid_create($t7, $t10); + if ($abort_flag) { + assume {:print "$at(17,43363,43413)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:20+50 + $t9 := $UpdateMutation($t9, $Update'$1_account_Account'_guid_creation_num($Dereference($t9), $Dereference($t10))); + + // trace_local[guid]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:13+4 + assume {:print "$track_local(24,7,3):", $t11} $t11 == $t11; + + // $t12 := get_field.guid_creation_num($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:13+25 + assume {:print "$at(17,43444,43469)"} true; + $t12 := $Dereference($t9)->$guid_creation_num; + + // pack_ref_deep($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:13+25 + + // write_back[account::Account@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:13+25 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // $t13 := 1125899906842624 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:41+21 + $t13 := 1125899906842624; + assume $IsValid'u64'($t13); + + // $t14 := <($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:39+1 + call $t14 := $Lt($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:33+31 + assume {:print "$at(17,43527,43558)"} true; +L0: + + // $t15 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:33+31 + assume {:print "$at(17,43527,43558)"} true; + $t15 := 20; + assume $IsValid'u64'($t15); + + // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:13+52 + call $t16 := $1_error_out_of_range($t15); + if ($abort_flag) { + assume {:print "$at(17,43507,43559)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + assume {:print "$track_abort(24,7):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + $t8 := $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:828:9+4 + assume {:print "$at(17,43580,43584)"} true; +L2: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:828:9+4 + assume {:print "$at(17,43580,43584)"} true; + assume {:print "$track_return(24,7,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 + assume {:print "$at(17,43589,43590)"} true; +L3: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 + assume {:print "$at(17,43589,43590)"} true; + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 + assume {:print "$at(17,43589,43590)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_guid [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820:5+436 +procedure {:timeLimit 80} $1_account_create_guid$verify(_$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; + var $1_account_Account_$memory#5: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820:5+1 + assume {:print "$at(17,43154,43155)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // assume CanModify($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:630:9+31 + assume {:print "$at(18,31723,31754)"} true; + assume $1_account_Account_$modifies[$t4]; + + // @5 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:630:9+31 + $1_account_Account_$memory#5 := $1_account_Account_$memory; + + // trace_local[account_signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:820:5+1 + assume {:print "$at(17,43154,43155)"} true; + assume {:print "$track_local(24,7,0):", $t0} $t0 == $t0; + + // $t7 := signer::address_of($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:821:20+34 + assume {:print "$at(17,43252,43286)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,43252,43286)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:821:13+4 + assume {:print "$track_local(24,7,2):", $t7} $t7 == $t7; + + // assert CanModify($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:822:23+17 + assume {:print "$at(17,43310,43327)"} true; + assert {:msg "assert_failed(17,43310,43327): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t7]; + + // $t9 := borrow_global($t7) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:822:23+17 + 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(17,43310,43327)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[account]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:822:13+7 + $temp_0'$1_account_Account' := $Dereference($t9); + assume {:print "$track_local(24,7,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t10 := borrow_field.guid_creation_num($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:39+30 + assume {:print "$at(17,43382,43412)"} true; + $t10 := $ChildMutation($t9, 2, $Dereference($t9)->$guid_creation_num); + + // $t11 := guid::create($t7, $t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:20+50 + call $t11,$t10 := $1_guid_create($t7, $t10); + if ($abort_flag) { + assume {:print "$at(17,43363,43413)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t9).guid_creation_num (u64)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:20+50 + $t9 := $UpdateMutation($t9, $Update'$1_account_Account'_guid_creation_num($Dereference($t9), $Dereference($t10))); + + // trace_local[guid]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:823:13+4 + assume {:print "$track_local(24,7,3):", $t11} $t11 == $t11; + + // $t12 := get_field.guid_creation_num($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:13+25 + assume {:print "$at(17,43444,43469)"} true; + $t12 := $Dereference($t9)->$guid_creation_num; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:13+25 + assume {:print "$at(17,43444,43469)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // $t13 := 1125899906842624 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:41+21 + $t13 := 1125899906842624; + assume $IsValid'u64'($t13); + + // $t14 := <($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:825:39+1 + call $t14 := $Lt($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:33+31 + assume {:print "$at(17,43527,43558)"} true; +L0: + + // $t15 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:33+31 + assume {:print "$at(17,43527,43558)"} true; + $t15 := 20; + assume $IsValid'u64'($t15); + + // $t16 := error::out_of_range($t15) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:826:13+52 + call $t16 := $1_error_out_of_range($t15); + if ($abort_flag) { + assume {:print "$at(17,43507,43559)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(24,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + assume {:print "$at(17,43423,43570)"} true; + assume {:print "$track_abort(24,7):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + $t8 := $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:824:9+147 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:828:9+4 + assume {:print "$at(17,43580,43584)"} true; +L2: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:828:9+4 + assume {:print "$at(17,43580,43584)"} true; + assume {:print "$track_return(24,7,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 + assume {:print "$at(17,43589,43590)"} true; +L3: + + // assert Not(Not(exists[@5]($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:644:9+33 + assume {:print "$at(18,32305,32338)"} true; + assert {:msg "assert_failed(18,32305,32338): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#5, $t5); + + // assert Not(Gt(Add(select account::Account.guid_creation_num($t6), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:645:9+50 + assume {:print "$at(18,32347,32397)"} true; + assert {:msg "assert_failed(18,32347,32397): function does not abort under this condition"} + !(($t6->$guid_creation_num + 1) > 18446744073709551615); + + // assert Not(Ge(Add(select account::Account.guid_creation_num($t6), 1), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:646:9+65 + assume {:print "$at(18,32406,32471)"} true; + assert {:msg "assert_failed(18,32406,32471): function does not abort under this condition"} + !(($t6->$guid_creation_num + 1) >= 1125899906842624); + + // assert Eq(select account::Account.guid_creation_num(global($t4)), Add(select account::Account.guid_creation_num(global[@5]($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:632:9+100 + assume {:print "$at(18,31795,31895)"} true; + assert {:msg "assert_failed(18,31795,31895): post-condition does not hold"} + $IsEqual'u64'($ResourceValue($1_account_Account_$memory, $t4)->$guid_creation_num, ($ResourceValue($1_account_Account_$memory#5, $t4)->$guid_creation_num + 1)); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:632:9+100 + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:829:5+1 + assume {:print "$at(17,43589,43590)"} true; +L4: + + // assert Or(Or(Not(exists[@5]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 1), 18446744073709551615)), Ge(Add(select account::Account.guid_creation_num($t6), 1), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:625:5+386 + assume {:print "$at(18,31515,31901)"} true; + assert {:msg "assert_failed(18,31515,31901): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_account_Account_$memory#5, $t5) || (($t6->$guid_creation_num + 1) > 18446744073709551615)) || (($t6->$guid_creation_num + 1) >= 1125899906842624)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:625:5+386 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun account::create_resource_account [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1400 +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: Vec (int); + var $t7: $signer; + var $t8: int; + var $t9: $1_account_SignerCapability; + var $t10: int; + var $t11: int; + var $t12: $1_account_Account; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: Vec (int); + var $t17: bool; + var $t18: $1_account_Account; + var $t19: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t20: $1_option_Option'address'; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: 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($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:585:9+45 + assume {:print "$at(18,29789,29834)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, account::spec_create_resource_address($t10, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:586:9+68 + assume {:print "$at(18,29843,29911)"} true; + assume ($t11 == $1_account_spec_create_resource_address($t10, $t1)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$at(17,40359,40360)"} true; + assume {:print "$track_local(24,8,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$track_local(24,8,1):", $t1} $t1 == $t1; + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:66+26 + assume {:print "$at(17,40541,40567)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,40541,40567)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // ($t15, $t16) := opaque begin: account::create_resource_address($t13, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + assume $IsValid'address'($t15); + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + assume $IsValid'vec'u8''($t16); + + // ($t15, $t16) := opaque end: account::create_resource_address($t13, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + + // trace_local[auth_key]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:29+8 + assume {:print "$track_local(24,8,6):", $t16} $t16 == $t16; + + // trace_local[resource_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:14+13 + assume {:print "$track_local(24,8,8):", $t15} $t15 == $t15; + + // $t17 := account::exists_at($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:28+24 + assume {:print "$at(17,40603,40627)"} true; + call $t17 := $1_account_exists_at($t15); + if ($abort_flag) { + assume {:print "$at(17,40603,40627)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:50+13 + assume {:print "$at(17,40680,40693)"} true; +L1: + + // $t18 := get_global($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:27+13 + assume {:print "$at(17,40657,40670)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_account_Account_$memory, $t15); + } + if ($abort_flag) { + assume {:print "$at(17,40657,40670)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:17+7 + assume {:print "$track_local(24,8,4):", $t18} $t18 == $t18; + + // $t19 := get_field.signer_capability_offer($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:34+31 + assume {:print "$at(17,40750,40781)"} true; + $t19 := $t18->$signer_capability_offer; + + // $t20 := get_field>.for($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:33+36 + $t20 := $t19->$for; + + // $t21 := opaque begin: option::is_none
($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + assume $IsValid'bool'($t21); + + // assume Eq($t21, option::spec_is_none
($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + assume $IsEqual'bool'($t21, $1_option_spec_is_none'address'($t20)); + + // $t21 := opaque end: option::is_none
($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 +L2: + + // $t22 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:763:39+25 + assume {:print "$at(17,40826,40851)"} true; + $t22 := 15; + assume $IsValid'u64'($t22); + + // $t23 := error::already_exists($t22) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:763:17+48 + call $t23 := $1_error_already_exists($t22); + if ($abort_flag) { + assume {:print "$at(17,40804,40852)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + assume {:print "$track_abort(24,8):", $t23} $t23 == $t23; + + // $t14 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + $t14 := $t23; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + goto L10; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:17+7 + assume {:print "$at(17,40906,40913)"} true; +L4: + + // $t24 := get_field.sequence_number($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:17+23 + assume {:print "$at(17,40906,40929)"} true; + $t24 := $t18->$sequence_number; + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:44+1 + $t25 := 0; + assume $IsValid'u64'($t25); + + // $t26 := ==($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:41+2 + $t26 := $IsEqual'u64'($t24, $t25); + + // if ($t26) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + if ($t26) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:38+21 + assume {:print "$at(17,40973,40994)"} true; +L5: + + // $t27 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:38+21 + assume {:print "$at(17,40973,40994)"} true; + $t27 := 16; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_state($t27) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:17+43 + call $t28 := $1_error_invalid_state($t27); + if ($abort_flag) { + assume {:print "$at(17,40952,40995)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + assume {:print "$track_abort(24,8):", $t28} $t28 == $t28; + + // $t14 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + $t14 := $t28; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + goto L10; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:27+13 + assume {:print "$at(17,41038,41051)"} true; +L7: + + // $t3 := opaque begin: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume {:print "$at(17,41024,41052)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($t3->$addr); + + // assume Eq
(signer::$address_of($t3), $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume $IsEqual'address'($1_signer_$address_of($t3), $t15); + + // $t3 := opaque end: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + assume {:print "$at(17,40599,41141)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:771:38+13 + assume {:print "$at(17,41107,41120)"} true; +L0: + + // $t3 := account::create_account_unchecked($t15, $t16) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:771:13+49 + assume {:print "$at(17,41082,41131)"} true; + call $t3 := $1_account_create_account_unchecked($t15, $t16); + if ($abort_flag) { + assume {:print "$at(17,41082,41131)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + assume {:print "$at(17,40599,41141)"} true; +L8: + + // trace_local[resource]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:13+8 + assume {:print "$at(17,40588,40596)"} true; + assume {:print "$track_local(24,8,7):", $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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:777:55+13 + assume {:print "$at(17,41496,41509)"} 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t30 == $1_signer_$address_of($t3)); + + // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:777:9+60 + assume {:print "$at(17,41450,41510)"} true; + call $1_account_rotate_authentication_key_internal($t3, $t29); + if ($abort_flag) { + assume {:print "$at(17,41450,41510)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:779:23+17 + assume {:print "$at(17,41535,41552)"} 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(17,41535,41552)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account#3]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:779:13+7 + $temp_0'$1_account_Account' := $Dereference($t31); + assume {:print "$track_local(24,8,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t32 := opaque begin: option::some
($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume {:print "$at(17,41624,41651)"} true; + + // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume ($IsValid'$1_option_Option'address''($t32) && (LenVec($t32->$vec) <= 1)); + + // assume Eq>($t32, option::spec_some
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume $IsEqual'$1_option_Option'address''($t32, $1_option_spec_some'address'($t15)); + + // $t32 := opaque end: option::some
($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + + // $t33 := borrow_field.signer_capability_offer($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+31 + $t33 := $ChildMutation($t31, 6, $Dereference($t31)->$signer_capability_offer); + + // $t34 := borrow_field>.for($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+35 + $t34 := $ChildMutation($t33, 0, $Dereference($t33)->$for); + + // write_ref($t34, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + $t34 := $UpdateMutation($t34, $t32); + + // write_back[Reference($t33).for (option::Option
)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + $t31 := $UpdateMutation($t31, $Update'$1_account_Account'_signer_capability_offer($Dereference($t31), $Dereference($t33))); + + // pack_ref_deep($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + + // write_back[account::Account@]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); + + // $t35 := pack account::SignerCapability($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:781:26+43 + assume {:print "$at(17,41678,41721)"} true; + $t35 := $1_account_SignerCapability($t15); + + // trace_local[signer_cap]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:781:13+10 + assume {:print "$track_local(24,8,9):", $t35} $t35 == $t35; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:782:9+22 + assume {:print "$at(17,41731,41753)"} true; + assume {:print "$track_return(24,8,0):", $t3} $t3 == $t3; + + // trace_return[1]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:782:9+22 + assume {:print "$track_return(24,8,1):", $t35} $t35 == $t35; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 + assume {:print "$at(17,41758,41759)"} true; +L9: + + // return ($t3, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 + assume {:print "$at(17,41758,41759)"} true; + $ret0 := $t3; + $ret1 := $t35; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 +L10: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 + assume {:print "$at(17,41758,41759)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun account::create_resource_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1400 +procedure {:timeLimit 80} $1_account_create_resource_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: $1_account_Account; + var $t5: $Mutation ($1_account_Account); + var $t6: Vec (int); + var $t7: $signer; + var $t8: int; + var $t9: $1_account_SignerCapability; + var $t10: int; + var $t11: int; + var $t12: $1_account_Account; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: Vec (int); + var $t17: bool; + var $t18: $1_account_Account; + var $t19: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t20: $1_option_Option'address'; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: 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 $t36: $1_option_Option'address'; + 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); + var $1_account_Account_$memory#22: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$at(17,40359,40360)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:585:9+45 + assume {:print "$at(18,29789,29834)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, account::spec_create_resource_address($t10, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:586:9+68 + assume {:print "$at(18,29843,29911)"} true; + assume ($t11 == $1_account_spec_create_resource_address($t10, $t1)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // @22 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$at(17,40359,40360)"} true; + $1_account_Account_$memory#22 := $1_account_Account_$memory; + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$track_local(24,8,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:757:5+1 + assume {:print "$track_local(24,8,1):", $t1} $t1 == $t1; + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:66+26 + assume {:print "$at(17,40541,40567)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,40541,40567)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // ($t15, $t16) := opaque begin: account::create_resource_address($t13, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + assume $IsValid'address'($t15); + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + assume $IsValid'vec'u8''($t16); + + // ($t15, $t16) := opaque end: account::create_resource_address($t13, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:41+58 + + // trace_local[auth_key]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:29+8 + assume {:print "$track_local(24,8,6):", $t16} $t16 == $t16; + + // trace_local[resource_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:758:14+13 + assume {:print "$track_local(24,8,8):", $t15} $t15 == $t15; + + // $t17 := account::exists_at($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:28+24 + assume {:print "$at(17,40603,40627)"} true; + call $t17 := $1_account_exists_at($t15); + if ($abort_flag) { + assume {:print "$at(17,40603,40627)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:50+13 + assume {:print "$at(17,40680,40693)"} true; +L1: + + // $t18 := get_global($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:27+13 + assume {:print "$at(17,40657,40670)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_account_Account_$memory, $t15); + } + if ($abort_flag) { + assume {:print "$at(17,40657,40670)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:760:17+7 + assume {:print "$track_local(24,8,4):", $t18} $t18 == $t18; + + // $t19 := get_field.signer_capability_offer($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:34+31 + assume {:print "$at(17,40750,40781)"} true; + $t19 := $t18->$signer_capability_offer; + + // $t20 := get_field>.for($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:33+36 + $t20 := $t19->$for; + + // $t21 := opaque begin: option::is_none
($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + assume $IsValid'bool'($t21); + + // assume Eq($t21, option::spec_is_none
($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + assume $IsEqual'bool'($t21, $1_option_spec_is_none'address'($t20)); + + // $t21 := opaque end: option::is_none
($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:762:17+53 + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 +L2: + + // $t22 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:763:39+25 + assume {:print "$at(17,40826,40851)"} true; + $t22 := 15; + assume $IsValid'u64'($t22); + + // $t23 := error::already_exists($t22) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:763:17+48 + call $t23 := $1_error_already_exists($t22); + if ($abort_flag) { + assume {:print "$at(17,40804,40852)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + assume {:print "$at(17,40708,40867)"} true; + assume {:print "$track_abort(24,8):", $t23} $t23 == $t23; + + // $t14 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + $t14 := $t23; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:761:13+159 + goto L10; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:17+7 + assume {:print "$at(17,40906,40913)"} true; +L4: + + // $t24 := get_field.sequence_number($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:17+23 + assume {:print "$at(17,40906,40929)"} true; + $t24 := $t18->$sequence_number; + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:44+1 + $t25 := 0; + assume $IsValid'u64'($t25); + + // $t26 := ==($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:766:41+2 + $t26 := $IsEqual'u64'($t24, $t25); + + // if ($t26) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + if ($t26) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:38+21 + assume {:print "$at(17,40973,40994)"} true; +L5: + + // $t27 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:38+21 + assume {:print "$at(17,40973,40994)"} true; + $t27 := 16; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_state($t27) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:767:17+43 + call $t28 := $1_error_invalid_state($t27); + if ($abort_flag) { + assume {:print "$at(17,40952,40995)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + assume {:print "$at(17,40881,41010)"} true; + assume {:print "$track_abort(24,8):", $t28} $t28 == $t28; + + // $t14 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + $t14 := $t28; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:765:13+129 + goto L10; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:27+13 + assume {:print "$at(17,41038,41051)"} true; +L7: + + // $t3 := opaque begin: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume {:print "$at(17,41024,41052)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($t3->$addr); + + // assume Eq
(signer::$address_of($t3), $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + assume $IsEqual'address'($1_signer_$address_of($t3), $t15); + + // $t3 := opaque end: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:769:13+28 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + assume {:print "$at(17,40599,41141)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:771:38+13 + assume {:print "$at(17,41107,41120)"} true; +L0: + + // $t3 := account::create_account_unchecked($t15, $t16) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:771:13+49 + assume {:print "$at(17,41082,41131)"} true; + call $t3 := $1_account_create_account_unchecked($t15, $t16); + if ($abort_flag) { + assume {:print "$at(17,41082,41131)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:24+542 + assume {:print "$at(17,40599,41141)"} true; +L8: + + // trace_local[resource]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:759:13+8 + assume {:print "$at(17,40588,40596)"} true; + assume {:print "$track_local(24,8,7):", $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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:777:55+13 + assume {:print "$at(17,41496,41509)"} 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t30 == $1_signer_$address_of($t3)); + + // account::rotate_authentication_key_internal($t3, $t29) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:777:9+60 + assume {:print "$at(17,41450,41510)"} true; + call $1_account_rotate_authentication_key_internal($t3, $t29); + if ($abort_flag) { + assume {:print "$at(17,41450,41510)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // $t31 := borrow_global($t15) on_abort goto L10 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:779:23+17 + assume {:print "$at(17,41535,41552)"} 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(17,41535,41552)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(24,8):", $t14} $t14 == $t14; + goto L10; + } + + // trace_local[account#3]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:779:13+7 + $temp_0'$1_account_Account' := $Dereference($t31); + assume {:print "$track_local(24,8,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t32 := opaque begin: option::some
($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume {:print "$at(17,41624,41651)"} true; + + // assume And(WellFormed($t32), Le(Len
(select option::Option.vec($t32)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume ($IsValid'$1_option_Option'address''($t32) && (LenVec($t32->$vec) <= 1)); + + // assume Eq>($t32, option::spec_some
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + assume $IsEqual'$1_option_Option'address''($t32, $1_option_spec_some'address'($t15)); + + // $t32 := opaque end: option::some
($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:47+27 + + // $t33 := borrow_field.signer_capability_offer($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+31 + $t33 := $ChildMutation($t31, 6, $Dereference($t31)->$signer_capability_offer); + + // $t34 := borrow_field>.for($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+35 + $t34 := $ChildMutation($t33, 0, $Dereference($t33)->$for); + + // write_ref($t34, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + $t34 := $UpdateMutation($t34, $t32); + + // write_back[Reference($t33).for (option::Option
)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + $t31 := $UpdateMutation($t31, $Update'$1_account_Account'_signer_capability_offer($Dereference($t31), $Dereference($t33))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t31)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t31)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t31)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t31)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:780:9+65 + assume {:print "$at(17,41586,41651)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); + + // $t35 := pack account::SignerCapability($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:781:26+43 + assume {:print "$at(17,41678,41721)"} true; + $t35 := $1_account_SignerCapability($t15); + + // trace_local[signer_cap]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:781:13+10 + assume {:print "$track_local(24,8,9):", $t35} $t35 == $t35; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:782:9+22 + assume {:print "$at(17,41731,41753)"} true; + assume {:print "$track_return(24,8,0):", $t3} $t3 == $t3; + + // trace_return[1]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:782:9+22 + assume {:print "$track_return(24,8,1):", $t35} $t35 == $t35; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 + assume {:print "$at(17,41758,41759)"} true; +L9: + + // assume Identical($t36, select account::CapabilityOffer.for>(select account::Account.signer_capability_offer(global($t11)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:595:9+80 + assume {:print "$at(18,30261,30341)"} true; + assume ($t36 == $ResourceValue($1_account_Account_$memory, $t11)->$signer_capability_offer->$for); + + // 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:588:9+35 + assume {:print "$at(18,29921,29956)"} true; + assert {:msg "assert_failed(18,29921,29956): 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(And(account::$exists_at[@22]($t11), Neq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t12)))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:663:9+60 + assume {:print "$at(18,33020,33080)"} true; + assert {:msg "assert_failed(18,33020,33080): function does not abort under this condition"} + !($1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'num'(LenVec($t12->$signer_capability_offer->$for->$vec), 0)); + + // assert Not(And(account::$exists_at[@22]($t11), Neq(select account::Account.sequence_number($t12), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:664:9+39 + assume {:print "$at(18,33089,33128)"} true; + assert {:msg "assert_failed(18,33089,33128): function does not abort under this condition"} + !($1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'u64'($t12->$sequence_number, 0)); + + // assert Not(And(Not(account::$exists_at[@22]($t11)), Neq(Len(vector::$empty[]()), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:163:9+40 + assume {:print "$at(18,8955,8995)"} true; + assert {:msg "assert_failed(18,8955,8995): function does not abort under this condition"} + !(!$1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32)); + + // assert Not(And(Not(account::$exists_at[@22]($t11)), exists[@22]($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:164:9+32 + assume {:print "$at(18,9004,9036)"} true; + assert {:msg "assert_failed(18,9004,9036): function does not abort under this condition"} + !(!$1_account_$exists_at($1_account_Account_$memory#22, $t11) && $ResourceExists($1_account_Account_$memory#22, $t11)); + + // assert Implies(Not(account::$exists_at($t11)), Eq(Len(vector::$empty()), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + assume {:print "$at(18,9045,9083)"} true; + assert {:msg "assert_failed(18,9045,9083): post-condition does not hold"} + (!$1_account_$exists_at($1_account_Account_$memory, $t11) ==> $IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32)); + + // assert Eq
(signer::$address_of($t3), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:594:9+54 + assume {:print "$at(18,30198,30252)"} true; + assert {:msg "assert_failed(18,30198,30252): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t3), $t11); + + // assert Eq
(option::spec_borrow
($t36), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:596:9+56 + assume {:print "$at(18,30350,30406)"} true; + assert {:msg "assert_failed(18,30350,30406): post-condition does not hold"} + $IsEqual'address'($1_option_spec_borrow'address'($t36), $t11); + + // assert Eq($t35, pack account::SignerCapability($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:597:9+64 + assume {:print "$at(18,30415,30479)"} true; + assert {:msg "assert_failed(18,30415,30479): post-condition does not hold"} + $IsEqual'$1_account_SignerCapability'($t35, $1_account_SignerCapability($t11)); + + // return ($t3, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:597:9+64 + $ret0 := $t3; + $ret1 := $t35; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:783:5+1 + assume {:print "$at(17,41758,41759)"} true; +L10: + + // assert Or(Or(Or(Or(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), And(account::$exists_at[@22]($t11), Neq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t12)))), 0))), And(account::$exists_at[@22]($t11), Neq(select account::Account.sequence_number($t12), 0))), And(Not(account::$exists_at[@22]($t11)), Neq(Len(vector::$empty[]()), 32))), And(Not(account::$exists_at[@22]($t11)), exists[@22]($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:584:5+798 + assume {:print "$at(18,29687,30485)"} true; + assert {:msg "assert_failed(18,29687,30485): abort not covered by any of the `aborts_if` clauses"} + ((((!$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) || ($1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'num'(LenVec($t12->$signer_capability_offer->$for->$vec), 0))) || ($1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'u64'($t12->$sequence_number, 0))) || (!$1_account_$exists_at($1_account_Account_$memory#22, $t11) && !$IsEqual'num'(LenVec($1_vector_$empty'u8'()), 32))) || (!$1_account_$exists_at($1_account_Account_$memory#22, $t11) && $ResourceExists($1_account_Account_$memory#22, $t11))); + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:584:5+798 + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun account::create_resource_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:740:5+377 +procedure {:timeLimit 80} $1_account_create_resource_address$verify(_$t0: int, _$t1: Vec (int)) returns ($ret0: int, $ret1: Vec (int)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $t5: $Mutation (Vec (int)); + var $t6: $Mutation (Vec (int)); + var $t7: int; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: Vec (int); + var $t11: int; + var $t0: int; + var $t1: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:740:5+1 + assume {:print "$at(17,39035,39036)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:740:5+1 + assume $IsValid'vec'u8''($t1); + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:740:5+1 + assume {:print "$track_local(24,9,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:740:5+1 + assume {:print "$track_local(24,9,1):", $t1} $t1 == $t1; + + // $t3 := bcs::to_bytes
($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:741:21+21 + assume {:print "$at(17,39151,39172)"} true; + call $t3 := $1_bcs_to_bytes'address'($t0); + if ($abort_flag) { + assume {:print "$at(17,39151,39172)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:741:13+5 + assume {:print "$track_local(24,9,3):", $t3} $t3 == $t3; + + // $t5 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:742:24+10 + assume {:print "$at(17,39197,39207)"} true; + $t5 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::append($t5, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:742:9+32 + call $t5 := $1_vector_append'u8'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(17,39182,39214)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // write_back[LocalRoot($t3)@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:742:9+32 + $t3 := $Dereference($t5); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:742:9+32 + assume {:print "$track_local(24,9,3):", $t3} $t3 == $t3; + + // $t6 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:743:27+10 + assume {:print "$at(17,39242,39252)"} true; + $t6 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t7 := 255 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:743:39+30 + $t7 := 255; + assume $IsValid'u8'($t7); + + // vector::push_back($t6, $t7) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:743:9+61 + call $t6 := $1_vector_push_back'u8'($t6, $t7); + if ($abort_flag) { + assume {:print "$at(17,39224,39285)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // write_back[LocalRoot($t3)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:743:9+61 + $t3 := $Dereference($t6); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:743:9+61 + assume {:print "$track_local(24,9,3):", $t3} $t3 == $t3; + + // $t8 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:744:39+5 + assume {:print "$at(17,39325,39330)"} true; + $t8 := $t3; + + // $t9 := hash::sha3_256($t8) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:744:24+21 + call $t9 := $1_hash_sha3_256($t8); + if ($abort_flag) { + assume {:print "$at(17,39310,39331)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[auth_key]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:744:13+8 + assume {:print "$track_local(24,9,2):", $t9} $t9 == $t9; + + // $t10 := bcs_util::truncate_16($t9) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:745:31+31 + assume {:print "$at(17,39363,39394)"} true; + call $t10 := $1_bcs_util_truncate_16($t9); + if ($abort_flag) { + assume {:print "$at(17,39363,39394)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // $t11 := from_bcs::to_address($t10) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:745:10+53 + call $t11 := $1_from_bcs_to_address($t10); + if ($abort_flag) { + assume {:print "$at(17,39342,39395)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,9):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:745:9+65 + assume {:print "$track_return(24,9,0):", $t11} $t11 == $t11; + + // trace_return[1]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:745:9+65 + assume {:print "$track_return(24,9,1):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:746:5+1 + assume {:print "$at(17,39411,39412)"} true; +L1: + + // return ($t11, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:746:5+1 + assume {:print "$at(17,39411,39412)"} true; + $ret0 := $t11; + $ret1 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:746:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:746:5+1 + assume {:print "$at(17,39411,39412)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun account::create_signer_with_capability [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:873: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t1 == $t0->$account); + + // trace_local[capability]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:873:5+1 + assume {:print "$at(17,45395,45396)"} true; + assume {:print "$track_local(24,10,0):", $t0} $t0 == $t0; + + // $t2 := get_field.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:874:20+19 + assume {:print "$at(17,45496,45515)"} true; + $t2 := $t0->$account; + + // $t3 := opaque begin: create_signer::create_signer($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume {:print "$at(17,45525,45545)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($t3->$addr); + + // assume Eq
(signer::$address_of($t3), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume $IsEqual'address'($1_signer_$address_of($t3), $t2); + + // $t3 := opaque end: create_signer::create_signer($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume {:print "$track_return(24,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:876:5+1 + assume {:print "$at(17,45550,45551)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:876:5+1 + assume {:print "$at(17,45550,45551)"} true; + $ret0 := $t3; + return; + +} + +// fun account::create_signer_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:873:5+156 +procedure {:timeLimit 80} $1_account_create_signer_with_capability$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:873:5+1 + assume {:print "$at(17,45395,45396)"} true; + assume $IsValid'$1_account_SignerCapability'($t0); + + // assume Identical($t1, select account::SignerCapability.account($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t1 == $t0->$account); + + // trace_local[capability]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:873:5+1 + assume {:print "$at(17,45395,45396)"} true; + assume {:print "$track_local(24,10,0):", $t0} $t0 == $t0; + + // $t2 := get_field.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:874:20+19 + assume {:print "$at(17,45496,45515)"} true; + $t2 := $t0->$account; + + // $t3 := opaque begin: create_signer::create_signer($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume {:print "$at(17,45525,45545)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume $IsValid'signer'($t3) && $1_signer_is_txn_signer($t3) && $1_signer_is_txn_signer_addr($t3->$addr); + + // assume Eq
(signer::$address_of($t3), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume $IsEqual'address'($1_signer_$address_of($t3), $t2); + + // $t3 := opaque end: create_signer::create_signer($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:875:9+20 + assume {:print "$track_return(24,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:876:5+1 + assume {:print "$at(17,45550,45551)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:876:5+1 + assume {:print "$at(17,45550,45551)"} true; + assert {:msg "assert_failed(17,45550,45551): function does not abort under this condition"} + !false; + + // assert Eq
(signer::$address_of($t3), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:657:9+43 + assume {:print "$at(18,32827,32870)"} true; + assert {:msg "assert_failed(18,32827,32870): post-condition does not hold"} + $IsEqual'address'($1_signer_$address_of($t3), $t1); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:657:9+43 + $ret0 := $t3; + return; + +} + +// fun account::exists_at [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257:5+1 + assume {:print "$at(17,12461,12462)"} true; + assume {:print "$track_local(24,11,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:258:9+6 + assume {:print "$at(17,12513,12519)"} true; + $t1 := $ResourceExists($1_account_Account_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:258:9+21 + assume {:print "$track_return(24,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:259:5+1 + assume {:print "$at(17,12539,12540)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:259:5+1 + assume {:print "$at(17,12539,12540)"} true; + $ret0 := $t1; + return; + +} + +// fun account::exists_at [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257:5+79 +procedure {:timeLimit 80} $1_account_exists_at$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257:5+1 + assume {:print "$at(17,12461,12462)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:257:5+1 + assume {:print "$track_local(24,11,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:258:9+6 + assume {:print "$at(17,12513,12519)"} true; + $t1 := $ResourceExists($1_account_Account_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:258:9+21 + assume {:print "$track_return(24,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:259:5+1 + assume {:print "$at(17,12539,12540)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:156:9+16 + assume {:print "$at(18,8764,8780)"} true; + assert {:msg "assert_failed(18,8764,8780): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:156:9+16 + $ret0 := $t1; + return; + +} + +// fun account::get_authentication_key [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+141 +procedure {:inline 1} $1_account_get_authentication_key(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: Vec (int); + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+1 + assume {:print "$at(17,13221,13222)"} true; + assume {:print "$track_local(24,12,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+13 + assume {:print "$at(17,13309,13322)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,13309,13322)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,12):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+47 + $t3 := $t1->$authentication_key; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+47 + assume {:print "$track_return(24,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 + assume {:print "$at(17,13361,13362)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 + assume {:print "$at(17,13361,13362)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 + assume {:print "$at(17,13361,13362)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::get_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+141 +procedure {:timeLimit 80} $1_account_get_authentication_key$verify(_$t0: int) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: Vec (int); + var $t0: int; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#24: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+1 + assume {:print "$at(17,13221,13222)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @24 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+1 + $1_account_Account_$memory#24 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:283:5+1 + assume {:print "$track_local(24,12,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+13 + assume {:print "$at(17,13309,13322)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,13309,13322)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,12):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+47 + $t3 := $t1->$authentication_key; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:284:9+47 + assume {:print "$track_return(24,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 + assume {:print "$at(17,13361,13362)"} true; +L1: + + // assert Not(Not(exists[@24]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:191:9+33 + assume {:print "$at(18,10034,10067)"} true; + assert {:msg "assert_failed(18,10034,10067): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#24, $t0); + + // assert Eq>($t3, select account::Account.authentication_key(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:192:9+59 + assume {:print "$at(18,10076,10135)"} true; + assert {:msg "assert_failed(18,10076,10135): post-condition does not hold"} + $IsEqual'vec'u8''($t3, $ResourceValue($1_account_Account_$memory, $t0)->$authentication_key); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:192:9+59 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:285:5+1 + assume {:print "$at(17,13361,13362)"} true; +L2: + + // assert Not(exists[@24]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:190:5+172 + assume {:print "$at(18,9969,10141)"} true; + assert {:msg "assert_failed(18,9969,10141): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_account_Account_$memory#24, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:190:5+172 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::get_guid_next_creation_num [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:262:5+137 +procedure {:timeLimit 80} $1_account_get_guid_next_creation_num$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_account_Account_$memory#26: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:262:5+1 + assume {:print "$at(17,12558,12559)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:262: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @26 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:262:5+1 + $1_account_Account_$memory#26 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:262:5+1 + assume {:print "$track_local(24,13,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:263:9+13 + assume {:print "$at(17,12643,12656)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,12643,12656)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,13):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.guid_creation_num($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:263:9+46 + $t3 := $t1->$guid_creation_num; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:263:9+46 + assume {:print "$track_return(24,13,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:264:5+1 + assume {:print "$at(17,12694,12695)"} true; +L1: + + // assert Not(Not(exists[@26]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:169:9+33 + assume {:print "$at(18,9157,9190)"} true; + assert {:msg "assert_failed(18,9157,9190): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#26, $t0); + + // assert Eq($t3, select account::Account.guid_creation_num(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:170:9+58 + assume {:print "$at(18,9199,9257)"} true; + assert {:msg "assert_failed(18,9199,9257): post-condition does not hold"} + $IsEqual'u64'($t3, $ResourceValue($1_account_Account_$memory, $t0)->$guid_creation_num); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:170:9+58 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:264:5+1 + assume {:print "$at(17,12694,12695)"} true; +L2: + + // assert Not(exists[@26]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:168:5+168 + assume {:print "$at(18,9095,9263)"} true; + assert {:msg "assert_failed(18,9095,9263): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_account_Account_$memory#26, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:168:5+168 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::get_rotation_capability_offer_for [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:529:5+410 +procedure {:timeLimit 80} $1_account_get_rotation_capability_offer_for$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: $1_account_Account; + var $t3: $1_account_Account; + var $t4: int; + var $t5: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t6: $1_option_Option'address'; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t11: $1_option_Option'address'; + var $t12: int; + var $t13: bool; + var $t0: int; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'address': int; + var $1_account_Account_$memory#27: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:529:5+1 + assume {:print "$at(17,27647,27648)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:529: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:501:9+53 + assume {:print "$at(18,25684,25737)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t0)); + + // @27 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:529:5+1 + assume {:print "$at(17,27647,27648)"} true; + $1_account_Account_$memory#27 := $1_account_Account_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:529:5+1 + assume {:print "$track_local(24,14,0):", $t0} $t0 == $t0; + + // $t3 := get_global($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:530:32+13 + assume {:print "$at(17,27774,27787)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,27774,27787)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,14):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[account_resource]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:530:13+16 + assume {:print "$track_local(24,14,1):", $t3} $t3 == $t3; + + // $t5 := get_field.rotation_capability_offer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:30+42 + assume {:print "$at(17,27858,27900)"} true; + $t5 := $t3->$rotation_capability_offer; + + // $t6 := get_field>.for($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:29+47 + $t6 := $t5->$for; + + // $t7 := opaque begin: option::is_some
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:13+64 + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:13+64 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:13+64 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'address'($t6)); + + // $t7 := opaque end: option::is_some
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:532:13+64 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 + assume {:print "$at(17,27820,27977)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 + assume {:print "$at(17,27820,27977)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 +L0: + + // $t8 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:533:30+29 + assume {:print "$at(17,27936,27965)"} true; + $t8 := 19; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:533:13+47 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(17,27919,27966)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,14):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 + assume {:print "$at(17,27820,27977)"} true; + assume {:print "$track_abort(24,14):", $t9} $t9 == $t9; + + // $t4 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 + $t4 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:531:9+157 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:26+16 + assume {:print "$at(17,28004,28020)"} true; +L2: + + // $t10 := get_field.rotation_capability_offer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:26+42 + assume {:print "$at(17,28004,28046)"} true; + $t10 := $t3->$rotation_capability_offer; + + // $t11 := get_field>.for($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:25+47 + $t11 := $t10->$for; + + // $t12 := opaque begin: option::borrow
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + + // assume Identical($t13, option::spec_is_none
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + assume ($t13 == $1_option_spec_is_none'address'($t11)); + + // if ($t13) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + if ($t13) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 +L6: + + // assume And(option::spec_is_none
($t11), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + assume {:print "$at(17,27988,28051)"} true; + assume ($1_option_spec_is_none'address'($t11) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + assume {:print "$at(17,27988,28051)"} true; + assume {:print "$track_abort(24,14):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 +L5: + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + assume {:print "$at(17,27988,28051)"} true; + assume $IsValid'address'($t12); + + // assume Eq
($t12, option::spec_borrow
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + assume $IsEqual'address'($t12, $1_option_spec_borrow'address'($t11)); + + // $t12 := opaque end: option::borrow
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:10+63 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:535:9+64 + assume {:print "$track_return(24,14,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:536:5+1 + assume {:print "$at(17,28056,28057)"} true; +L3: + + // assert Not(Not(exists[@27]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:500:9+41 + assume {:print "$at(18,25634,25675)"} true; + assert {:msg "assert_failed(18,25634,25675): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#27, $t0); + + // assert Not(Eq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t2)))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:502:9+71 + assume {:print "$at(18,25746,25817)"} true; + assert {:msg "assert_failed(18,25746,25817): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t2->$rotation_capability_offer->$for->$vec), 0); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:502:9+71 + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:536:5+1 + assume {:print "$at(17,28056,28057)"} true; +L4: + + // assert Or(Not(exists[@27]($t0)), Eq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t2)))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:499:5+270 + assume {:print "$at(18,25553,25823)"} true; + assert {:msg "assert_failed(18,25553,25823): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#27, $t0) || $IsEqual'num'(LenVec($t2->$rotation_capability_offer->$for->$vec), 0)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:499:5+270 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun account::get_sequence_number [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+128 +procedure {:inline 1} $1_account_get_sequence_number(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+1 + assume {:print "$at(17,12713,12714)"} true; + assume {:print "$track_local(24,15,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+13 + assume {:print "$at(17,12791,12804)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,12791,12804)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,15):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.sequence_number($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+44 + $t3 := $t1->$sequence_number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+44 + assume {:print "$track_return(24,15,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 + assume {:print "$at(17,12840,12841)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 + assume {:print "$at(17,12840,12841)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 + assume {:print "$at(17,12840,12841)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::get_sequence_number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+128 +procedure {:timeLimit 80} $1_account_get_sequence_number$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_account_Account_$memory#28: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+1 + assume {:print "$at(17,12713,12714)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @28 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+1 + $1_account_Account_$memory#28 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:267:5+1 + assume {:print "$track_local(24,15,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+13 + assume {:print "$at(17,12791,12804)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,12791,12804)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,15):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.sequence_number($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+44 + $t3 := $t1->$sequence_number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:268:9+44 + assume {:print "$track_return(24,15,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 + assume {:print "$at(17,12840,12841)"} true; +L1: + + // assert Not(Not(exists[@28]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:174:9+33 + assume {:print "$at(18,9324,9357)"} true; + assert {:msg "assert_failed(18,9324,9357): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#28, $t0); + + // assert Eq($t3, select account::Account.sequence_number(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:175:9+56 + assume {:print "$at(18,9366,9422)"} true; + assert {:msg "assert_failed(18,9366,9422): post-condition does not hold"} + $IsEqual'u64'($t3, $ResourceValue($1_account_Account_$memory, $t0)->$sequence_number); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:175:9+56 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:269:5+1 + assume {:print "$at(17,12840,12841)"} true; +L2: + + // assert Not(exists[@28]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:173:5+159 + assume {:print "$at(18,9269,9428)"} true; + assert {:msg "assert_failed(18,9269,9428): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_account_Account_$memory#28, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:173:5+159 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::get_signer_capability_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:878:5+115 +procedure {:timeLimit 80} $1_account_get_signer_capability_address$verify(_$t0: $1_account_SignerCapability) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_account_SignerCapability; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:878:5+1 + assume {:print "$at(17,45557,45558)"} true; + assume $IsValid'$1_account_SignerCapability'($t0); + + // trace_local[capability]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:878:5+1 + assume {:print "$track_local(24,16,0):", $t0} $t0 == $t0; + + // $t1 := get_field.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:879:9+18 + assume {:print "$at(17,45648,45666)"} true; + $t1 := $t0->$account; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:879:9+18 + assume {:print "$track_return(24,16,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:880:5+1 + assume {:print "$at(17,45671,45672)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:880:5+1 + assume {:print "$at(17,45671,45672)"} true; + assert {:msg "assert_failed(17,45671,45672): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:880:5+1 + $ret0 := $t1; + return; + +} + +// fun account::get_signer_capability_offer_for [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:598:5+404 +procedure {:timeLimit 80} $1_account_get_signer_capability_offer_for$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: $1_account_Account; + var $t3: $1_account_Account; + var $t4: int; + var $t5: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t6: $1_option_Option'address'; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t11: $1_option_Option'address'; + var $t12: int; + var $t13: bool; + var $t0: int; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'address': int; + var $1_account_Account_$memory#30: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:598:5+1 + assume {:print "$at(17,31547,31548)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:598: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:491:9+53 + assume {:print "$at(18,25282,25335)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t0)); + + // @30 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:598:5+1 + assume {:print "$at(17,31547,31548)"} true; + $1_account_Account_$memory#30 := $1_account_Account_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:598:5+1 + assume {:print "$track_local(24,17,0):", $t0} $t0 == $t0; + + // $t3 := get_global($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:599:32+13 + assume {:print "$at(17,31672,31685)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,31672,31685)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,17):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[account_resource]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:599:13+16 + assume {:print "$track_local(24,17,1):", $t3} $t3 == $t3; + + // $t5 := get_field.signer_capability_offer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:30+40 + assume {:print "$at(17,31756,31796)"} true; + $t5 := $t3->$signer_capability_offer; + + // $t6 := get_field>.for($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:29+45 + $t6 := $t5->$for; + + // $t7 := opaque begin: option::is_some
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:13+62 + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:13+62 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:13+62 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'address'($t6)); + + // $t7 := opaque end: option::is_some
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:601:13+62 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 + assume {:print "$at(17,31718,31873)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 + assume {:print "$at(17,31718,31873)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 +L0: + + // $t8 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:602:30+29 + assume {:print "$at(17,31832,31861)"} true; + $t8 := 19; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:602:13+47 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(17,31815,31862)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,17):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 + assume {:print "$at(17,31718,31873)"} true; + assume {:print "$track_abort(24,17):", $t9} $t9 == $t9; + + // $t4 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 + $t4 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:600:9+155 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:26+16 + assume {:print "$at(17,31900,31916)"} true; +L2: + + // $t10 := get_field.signer_capability_offer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:26+40 + assume {:print "$at(17,31900,31940)"} true; + $t10 := $t3->$signer_capability_offer; + + // $t11 := get_field>.for($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:25+45 + $t11 := $t10->$for; + + // $t12 := opaque begin: option::borrow
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + + // assume Identical($t13, option::spec_is_none
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + assume ($t13 == $1_option_spec_is_none'address'($t11)); + + // if ($t13) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + if ($t13) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 +L6: + + // assume And(option::spec_is_none
($t11), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + assume {:print "$at(17,31884,31945)"} true; + assume ($1_option_spec_is_none'address'($t11) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + assume {:print "$at(17,31884,31945)"} true; + assume {:print "$track_abort(24,17):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 +L5: + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + assume {:print "$at(17,31884,31945)"} true; + assume $IsValid'address'($t12); + + // assume Eq
($t12, option::spec_borrow
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + assume $IsEqual'address'($t12, $1_option_spec_borrow'address'($t11)); + + // $t12 := opaque end: option::borrow
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:10+61 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:604:9+62 + assume {:print "$track_return(24,17,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:605:5+1 + assume {:print "$at(17,31950,31951)"} true; +L3: + + // assert Not(Not(exists[@30]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:490:9+41 + assume {:print "$at(18,25232,25273)"} true; + assert {:msg "assert_failed(18,25232,25273): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#30, $t0); + + // assert Not(Eq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t2)))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:492:9+69 + assume {:print "$at(18,25344,25413)"} true; + assert {:msg "assert_failed(18,25344,25413): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t2->$signer_capability_offer->$for->$vec), 0); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:492:9+69 + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:605:5+1 + assume {:print "$at(17,31950,31951)"} true; +L4: + + // assert Or(Not(exists[@30]($t0)), Eq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t2)))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:489:5+266 + assume {:print "$at(18,25153,25419)"} true; + assert {:msg "assert_failed(18,25153,25419): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#30, $t0) || $IsEqual'num'(LenVec($t2->$signer_capability_offer->$for->$vec), 0)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:489:5+266 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun account::increment_sequence_number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:271:5+356 +procedure {:timeLimit 80} $1_account_increment_sequence_number$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: $Mutation (int); + var $t2: int; + var $t3: $Mutation ($1_account_Account); + var $t4: int; + var $t5: $Mutation (int); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t0: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_account_Account_$memory#31: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:271:5+1 + assume {:print "$at(17,12847,12848)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:271: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, select account::Account.sequence_number(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:181:9+60 + assume {:print "$at(18,9598,9658)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t0)->$sequence_number); + + // assume CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:185:9+31 + assume {:print "$at(18,9786,9817)"} true; + assume $1_account_Account_$modifies[$t0]; + + // @31 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:185:9+31 + $1_account_Account_$memory#31 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:271:5+1 + assume {:print "$at(17,12847,12848)"} true; + assume {:print "$track_local(24,18,0):", $t0} $t0 == $t0; + + // assert CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:272:36+17 + assume {:print "$at(17,12961,12978)"} true; + assert {:msg "assert_failed(17,12961,12978): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t0]; + + // $t3 := borrow_global($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:272:36+17 + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(17,12961,12978)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,18):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := borrow_field.sequence_number($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:272:31+53 + $t5 := $ChildMutation($t3, 1, $Dereference($t3)->$sequence_number); + + // trace_local[sequence_number]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:272:13+15 + $temp_0'u64' := $Dereference($t5); + assume {:print "$track_local(24,18,1):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t6 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:275:14+16 + assume {:print "$at(17,13042,13058)"} true; + $t6 := $Dereference($t5); + + // $t7 := (u128)($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:275:13+26 + call $t7 := $CastU128($t6); + if ($abort_flag) { + assume {:print "$at(17,13041,13067)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,18):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:275:42+7 + $t8 := 18446744073709551615; + assume $IsValid'u128'($t8); + + // $t9 := <($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:275:40+1 + call $t9 := $Lt($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + assume {:print "$at(17,13020,13146)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + assume {:print "$at(17,13020,13146)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 +L0: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t3)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t3)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + assume {:print "$at(17,13020,13146)"} true; + + // $t10 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:276:33+24 + assume {:print "$at(17,13111,13135)"} true; + $t10 := 3; + assume $IsValid'u64'($t10); + + // $t11 := error::out_of_range($t10) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:276:13+45 + call $t11 := $1_error_out_of_range($t10); + if ($abort_flag) { + assume {:print "$at(17,13091,13136)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,18):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + assume {:print "$at(17,13020,13146)"} true; + assume {:print "$track_abort(24,18):", $t11} $t11 == $t11; + + // $t4 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + $t4 := $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:274:9+126 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:29+15 + assume {:print "$at(17,13177,13192)"} true; +L2: + + // $t12 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:28+16 + assume {:print "$at(17,13176,13192)"} true; + $t12 := $Dereference($t5); + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:47+1 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := +($t12, $t13) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:45+1 + call $t14 := $AddU64($t12, $t13); + if ($abort_flag) { + assume {:print "$at(17,13193,13194)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,18):", $t4} $t4 == $t4; + goto L4; + } + + // write_ref($t5, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:9+39 + $t5 := $UpdateMutation($t5, $t14); + + // write_back[Reference($t3).sequence_number (u64)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:9+39 + $t3 := $UpdateMutation($t3, $Update'$1_account_Account'_sequence_number($Dereference($t3), $Dereference($t5))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t3)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t3)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:279:9+39 + assume {:print "$at(17,13157,13196)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:280:5+1 + assume {:print "$at(17,13202,13203)"} true; +L3: + + // assume Identical($t15, select account::Account.sequence_number(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:186:9+70 + assume {:print "$at(18,9826,9896)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t0)->$sequence_number); + + // assert Not(Not(exists[@31]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:182:9+33 + assume {:print "$at(18,9667,9700)"} true; + assert {:msg "assert_failed(18,9667,9700): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#31, $t0); + + // assert Not(Eq($t2, 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:184:9+37 + assume {:print "$at(18,9740,9777)"} true; + assert {:msg "assert_failed(18,9740,9777): function does not abort under this condition"} + !$IsEqual'u64'($t2, 18446744073709551615); + + // assert Eq($t15, Add($t2, 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:187:9+52 + assume {:print "$at(18,9905,9957)"} true; + assert {:msg "assert_failed(18,9905,9957): post-condition does not hold"} + $IsEqual'u64'($t15, ($t2 + 1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:187:9+52 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:280:5+1 + assume {:print "$at(17,13202,13203)"} true; +L4: + + // assert Or(Not(exists[@31]($t0)), Eq($t2, 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:180:5+421 + assume {:print "$at(18,9542,9963)"} true; + assert {:msg "assert_failed(18,9542,9963): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#31, $t0) || $IsEqual'u64'($t2, 18446744073709551615)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:180:5+421 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun account::is_account_zero_auth_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786:5+201 +procedure {:timeLimit 80} $1_account_is_account_zero_auth_key$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786:5+1 + assume {:print "$at(17,41797,41798)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786:5+1 + assume {:print "$track_local(24,20,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:787:23+13 + assume {:print "$at(17,41903,41916)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,41903,41916)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,20):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:788:9+26 + assume {:print "$at(17,41949,41975)"} true; + $t3 := $t1->$authentication_key; + + // $t4 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:788:39+13 + $t4 := 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''($t4); + + // $t5 := ==($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:788:36+2 + $t5 := $IsEqual'vec'u8''($t3, $t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:788:9+43 + assume {:print "$track_return(24,20,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:789:5+1 + assume {:print "$at(17,41997,41998)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:789:5+1 + assume {:print "$at(17,41997,41998)"} true; + assert {:msg "assert_failed(17,41997,41998): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:789:5+1 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:789:5+1 +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786:5+201 + assume {:print "$at(17,41797,41998)"} true; + assert {:msg "assert_failed(17,41797,41998): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:786:5+201 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::is_rotation_capability_offered [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:522:5+237 +procedure {:timeLimit 80} $1_account_is_rotation_capability_offered$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t4: $1_option_Option'address'; + var $t5: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_account_Account_$memory#32: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:522:5+1 + assume {:print "$at(17,27276,27277)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:522: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @32 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:522:5+1 + $1_account_Account_$memory#32 := $1_account_Account_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:522:5+1 + assume {:print "$track_local(24,21,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:523:32+13 + assume {:print "$at(17,27397,27410)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,27397,27410)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,21):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.rotation_capability_offer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:26+42 + assume {:print "$at(17,27460,27502)"} true; + $t3 := $t1->$rotation_capability_offer; + + // $t4 := get_field>.for($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:25+47 + $t4 := $t3->$for; + + // $t5 := opaque begin: option::is_some
($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:9+64 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:9+64 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some
($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:9+64 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'address'($t4)); + + // $t5 := opaque end: option::is_some
($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:9+64 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:524:9+64 + assume {:print "$track_return(24,21,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:525:5+1 + assume {:print "$at(17,27512,27513)"} true; +L1: + + // assert Not(Not(exists[@32]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:496:9+41 + assume {:print "$at(18,25500,25541)"} true; + assert {:msg "assert_failed(18,25500,25541): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#32, $t0); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:496:9+41 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:525:5+1 + assume {:print "$at(17,27512,27513)"} true; +L2: + + // assert Not(exists[@32]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:495:5+122 + assume {:print "$at(18,25425,25547)"} true; + assert {:msg "assert_failed(18,25425,25547): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_account_Account_$memory#32, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:495:5+122 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::is_signer_capability_offered [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:591:5+233 +procedure {:timeLimit 80} $1_account_is_signer_capability_offered$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t4: $1_option_Option'address'; + var $t5: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_account_Account_$memory#33: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:591:5+1 + assume {:print "$at(17,31182,31183)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:591: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @33 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:591:5+1 + $1_account_Account_$memory#33 := $1_account_Account_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:591:5+1 + assume {:print "$track_local(24,22,0):", $t0} $t0 == $t0; + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:592:32+13 + assume {:print "$at(17,31301,31314)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_account_Account_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(17,31301,31314)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.signer_capability_offer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:26+40 + assume {:print "$at(17,31364,31404)"} true; + $t3 := $t1->$signer_capability_offer; + + // $t4 := get_field>.for($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:25+45 + $t4 := $t3->$for; + + // $t5 := opaque begin: option::is_some
($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:9+62 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:9+62 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some
($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:9+62 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'address'($t4)); + + // $t5 := opaque end: option::is_some
($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:9+62 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:593:9+62 + assume {:print "$track_return(24,22,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:594:5+1 + assume {:print "$at(17,31414,31415)"} true; +L1: + + // assert Not(Not(exists[@33]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:486:9+41 + assume {:print "$at(18,25100,25141)"} true; + assert {:msg "assert_failed(18,25100,25141): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#33, $t0); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:486:9+41 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:594:5+1 + assume {:print "$at(17,31414,31415)"} true; +L2: + + // assert Not(exists[@33]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:485:5+120 + assume {:print "$at(18,25027,25147)"} true; + assert {:msg "assert_failed(18,25027,25147): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_account_Account_$memory#33, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:485:5+120 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::offer_rotation_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+2746 +procedure {:timeLimit 80} $1_account_offer_rotation_capability$verify(_$t0: $signer, _$t1: Vec (int), _$t2: int, _$t3: Vec (int), _$t4: int) returns () +{ + // declare local variables + var $t5: $Mutation ($1_account_Account); + var $t6: int; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: $1_account_RotationCapabilityOfferProofChallengeV2; + var $t10: $1_ed25519_UnvalidatedPublicKey; + var $t11: $1_multi_ed25519_UnvalidatedPublicKey; + var $t12: $1_ed25519_Signature; + var $t13: $1_multi_ed25519_Signature; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $1_account_RotationCapabilityOfferProofChallengeV2; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $Mutation ($1_account_Account); + var $t24: int; + var $t25: int; + var $t26: $1_account_RotationCapabilityOfferProofChallengeV2; + var $t27: int; + var $t28: bool; + var $t29: $1_ed25519_UnvalidatedPublicKey; + var $t30: Vec (int); + var $t31: Vec (int); + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: $1_ed25519_Signature; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: $1_multi_ed25519_UnvalidatedPublicKey; + var $t43: Vec (int); + var $t44: Vec (int); + var $t45: bool; + var $t46: int; + var $t47: int; + var $t48: $1_multi_ed25519_Signature; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: $Mutation ($1_account_CapabilityOffer'$1_account_RotationCapability'); + var $t55: $Mutation ($1_option_Option'address'); + var $t56: $1_option_Option'address'; + var $t57: $1_option_Option'address'; + var $t58: $1_option_Option'address'; + var $t0: $signer; + var $t1: Vec (int); + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_account_RotationCapabilityOfferProofChallengeV2': $1_account_RotationCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_chain_id_ChainId_$memory#34: $Memory $1_chain_id_ChainId; + var $1_account_Account_$memory#35: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$at(17,24425,24426)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume $IsValid'u8'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume $IsValid'address'($t4); + + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:386:9+49 + assume {:print "$at(18,19539,19588)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:387:9+55 + assume {:print "$at(18,19597,19652)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // assume Identical($t16, pack account::RotationCapabilityOfferProofChallengeV2(select chain_id::ChainId.id(global(0x1)), select account::Account.sequence_number($t15), $t14, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:388:9+269 + assume {:print "$at(18,19661,19930)"} true; + assume ($t16 == $1_account_RotationCapabilityOfferProofChallengeV2($ResourceValue($1_chain_id_ChainId_$memory, 1)->$id, $t15->$sequence_number, $t14, $t4)); + + // assume Identical($t17, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t17 == LenVec($t3)); + + // assume CanModify($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:427:9+41 + assume {:print "$at(18,21968,22009)"} true; + assume $1_account_Account_$modifies[$t14]; + + // @34 := save_mem(chain_id::ChainId) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:427:9+41 + $1_chain_id_ChainId_$memory#34 := $1_chain_id_ChainId_$memory; + + // @35 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:427:9+41 + $1_account_Account_$memory#35 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$at(17,24425,24426)"} true; + assume {:print "$track_local(24,24,0):", $t0} $t0 == $t0; + + // trace_local[rotation_capability_sig_bytes]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$track_local(24,24,1):", $t1} $t1 == $t1; + + // trace_local[account_scheme]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$track_local(24,24,2):", $t2} $t2 == $t2; + + // trace_local[account_public_key_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$track_local(24,24,3):", $t3} $t3 == $t3; + + // trace_local[recipient_address]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:466:5+1 + assume {:print "$track_local(24,24,4):", $t4} $t4 == $t4; + + // $t18 := signer::address_of($t0) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:473:20+27 + assume {:print "$at(17,24700,24727)"} true; + call $t18 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,24700,24727)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[addr]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:473:13+4 + assume {:print "$track_local(24,24,6):", $t18} $t18 == $t18; + + // $t20 := account::exists_at($t4) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:17+28 + assume {:print "$at(17,24745,24773)"} true; + call $t20 := $1_account_exists_at($t4); + if ($abort_flag) { + assume {:print "$at(17,24745,24773)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 + assume {:print "$at(17,24737,24817)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:64+23 +L0: + + // $t21 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:64+23 + assume {:print "$at(17,24792,24815)"} true; + $t21 := 2; + assume $IsValid'u64'($t21); + + // $t22 := error::not_found($t21) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:47+41 + call $t22 := $1_error_not_found($t21); + if ($abort_flag) { + assume {:print "$at(17,24775,24816)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 + assume {:print "$at(17,24737,24817)"} true; + assume {:print "$track_abort(24,24):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 + $t19 := $t22; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:474:9+80 + goto L20; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:477:59+4 + assume {:print "$at(17,24976,24980)"} true; +L2: + + // assert CanModify($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:477:32+17 + assume {:print "$at(17,24949,24966)"} true; + assert {:msg "assert_failed(17,24949,24966): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t18]; + + // $t23 := borrow_global($t18) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:477:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(17,24949,24966)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[account_resource]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:477:13+16 + $temp_0'$1_account_Account' := $Dereference($t23); + assume {:print "$track_local(24,24,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t24 := chain_id::get() on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:479:23+15 + assume {:print "$at(17,25077,25092)"} true; + call $t24 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(17,25077,25092)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // $t25 := get_field.sequence_number($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:480:30+32 + assume {:print "$at(17,25123,25155)"} true; + $t25 := $Dereference($t23)->$sequence_number; + + // $t26 := pack account::RotationCapabilityOfferProofChallengeV2($t24, $t25, $t18, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:478:31+218 + assume {:print "$at(17,25013,25231)"} true; + $t26 := $1_account_RotationCapabilityOfferProofChallengeV2($t24, $t25, $t18, $t4); + + // trace_local[proof_challenge]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:478:13+15 + assume {:print "$track_local(24,24,9):", $t26} $t26 == $t26; + + // $t27 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:486:31+14 + assume {:print "$at(17,25362,25376)"} true; + $t27 := 0; + assume $IsValid'u8'($t27); + + // $t28 := ==($t2, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:486:28+2 + $t28 := $IsEqual'u8'($t2, $t27); + + // if ($t28) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:486:9+1598 + if ($t28) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:487:73+24 + assume {:print "$at(17,25452,25476)"} true; +L4: + + // $t29 := ed25519::new_unvalidated_public_key_from_bytes($t3) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:487:26+72 + assume {:print "$at(17,25405,25477)"} true; + call $t29 := $1_ed25519_new_unvalidated_public_key_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,25405,25477)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[pubkey]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:487:17+6 + assume {:print "$track_local(24,24,10):", $t29} $t29 == $t29; + + // $t30 := ed25519::unvalidated_public_key_to_authentication_key($t29) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:488:37+62 + assume {:print "$at(17,25515,25577)"} true; + call $t30 := $1_ed25519_unvalidated_public_key_to_authentication_key($t29); + if ($abort_flag) { + assume {:print "$at(17,25515,25577)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[expected_auth_key]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:488:17+17 + assume {:print "$track_local(24,24,7):", $t30} $t30 == $t30; + + // $t31 := get_field.authentication_key($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:490:17+35 + assume {:print "$at(17,25616,25651)"} true; + $t31 := $Dereference($t23)->$authentication_key; + + // $t32 := ==($t31, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:490:53+2 + $t32 := $IsEqual'vec'u8''($t31, $t30); + + // if ($t32) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + assume {:print "$at(17,25591,25754)"} true; + if ($t32) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + assume {:print "$at(17,25591,25754)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 +L5: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + assume {:print "$at(17,25591,25754)"} true; + + // $t33 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:491:41+25 + assume {:print "$at(17,25714,25739)"} true; + $t33 := 7; + assume $IsValid'u64'($t33); + + // $t34 := error::invalid_argument($t33) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:491:17+50 + call $t34 := $1_error_invalid_argument($t33); + if ($abort_flag) { + assume {:print "$at(17,25690,25740)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + assume {:print "$at(17,25591,25754)"} true; + assume {:print "$track_abort(24,24):", $t34} $t34 == $t34; + + // $t19 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + $t19 := $t34; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:489:13+163 + goto L20; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:494:77+29 + assume {:print "$at(17,25833,25862)"} true; +L7: + + // $t35 := ed25519::new_signature_from_bytes($t1) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:494:43+64 + assume {:print "$at(17,25799,25863)"} true; + call $t35 := $1_ed25519_new_signature_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(17,25799,25863)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[rotation_capability_sig]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:494:17+23 + assume {:print "$track_local(24,24,12):", $t35} $t35 == $t35; + + // $t36 := ed25519::signature_verify_strict_t($t35, $t29, $t26) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:496:17+86 + assume {:print "$at(17,25902,25988)"} true; + call $t36 := $1_ed25519_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($t35, $t29, $t26); + if ($abort_flag) { + assume {:print "$at(17,25902,25988)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // if ($t36) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + assume {:print "$at(17,25877,26072)"} true; + if ($t36) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + assume {:print "$at(17,25877,26072)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 +L8: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + assume {:print "$at(17,25877,26072)"} true; + + // $t37 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:497:41+27 + assume {:print "$at(17,26030,26057)"} true; + $t37 := 8; + assume $IsValid'u64'($t37); + + // $t38 := error::invalid_argument($t37) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:497:17+52 + call $t38 := $1_error_invalid_argument($t37); + if ($abort_flag) { + assume {:print "$at(17,26006,26058)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + assume {:print "$at(17,25877,26072)"} true; + assume {:print "$track_abort(24,24):", $t38} $t38 == $t38; + + // $t19 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + $t19 := $t38; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:495:13+195 + goto L20; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:498:14+1 + assume {:print "$at(17,26072,26073)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:498:14+1 + assume {:print "$at(17,26072,26073)"} true; + goto L11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:499:20+14 + assume {:print "$at(17,26093,26107)"} true; +L3: + + // $t39 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:499:38+20 + assume {:print "$at(17,26111,26131)"} true; + $t39 := 1; + assume $IsValid'u8'($t39); + + // $t40 := ==($t2, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:499:35+2 + $t40 := $IsEqual'u8'($t2, $t39); + + // if ($t40) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:499:16+849 + if ($t40) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:500:79+24 + assume {:print "$at(17,26213,26237)"} true; +L13: + + // assume Identical($t41, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t41 == LenVec($t3)); + + // $t42 := multi_ed25519::new_unvalidated_public_key_from_bytes($t3) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:500:26+78 + assume {:print "$at(17,26160,26238)"} true; + call $t42 := $1_multi_ed25519_new_unvalidated_public_key_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,26160,26238)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[pubkey#1]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:500:17+6 + assume {:print "$track_local(24,24,11):", $t42} $t42 == $t42; + + // $t43 := multi_ed25519::unvalidated_public_key_to_authentication_key($t42) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:501:37+68 + assume {:print "$at(17,26276,26344)"} true; + call $t43 := $1_multi_ed25519_unvalidated_public_key_to_authentication_key($t42); + if ($abort_flag) { + assume {:print "$at(17,26276,26344)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[expected_auth_key#2]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:501:17+17 + assume {:print "$track_local(24,24,8):", $t43} $t43 == $t43; + + // $t44 := get_field.authentication_key($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:503:17+35 + assume {:print "$at(17,26383,26418)"} true; + $t44 := $Dereference($t23)->$authentication_key; + + // $t45 := ==($t44, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:503:53+2 + $t45 := $IsEqual'vec'u8''($t44, $t43); + + // if ($t45) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + assume {:print "$at(17,26358,26521)"} true; + if ($t45) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + assume {:print "$at(17,26358,26521)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 +L14: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + assume {:print "$at(17,26358,26521)"} true; + + // $t46 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:504:41+25 + assume {:print "$at(17,26481,26506)"} true; + $t46 := 7; + assume $IsValid'u64'($t46); + + // $t47 := error::invalid_argument($t46) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:504:17+50 + call $t47 := $1_error_invalid_argument($t46); + if ($abort_flag) { + assume {:print "$at(17,26457,26507)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + assume {:print "$at(17,26358,26521)"} true; + assume {:print "$track_abort(24,24):", $t47} $t47 == $t47; + + // $t19 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + $t19 := $t47; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:502:13+163 + goto L20; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:507:83+29 + assume {:print "$at(17,26606,26635)"} true; +L16: + + // $t48 := multi_ed25519::new_signature_from_bytes($t1) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:507:43+70 + assume {:print "$at(17,26566,26636)"} true; + call $t48 := $1_multi_ed25519_new_signature_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(17,26566,26636)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_local[rotation_capability_sig#3]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:507:17+23 + assume {:print "$track_local(24,24,13):", $t48} $t48 == $t48; + + // $t49 := multi_ed25519::signature_verify_strict_t($t48, $t42, $t26) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:509:17+92 + assume {:print "$at(17,26675,26767)"} true; + call $t49 := $1_multi_ed25519_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($t48, $t42, $t26); + if ($abort_flag) { + assume {:print "$at(17,26675,26767)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // if ($t49) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + assume {:print "$at(17,26650,26851)"} true; + if ($t49) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 +L18: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + assume {:print "$at(17,26650,26851)"} true; + goto L11; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 +L17: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + assume {:print "$at(17,26650,26851)"} true; + + // $t50 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:510:41+27 + assume {:print "$at(17,26809,26836)"} true; + $t50 := 8; + assume $IsValid'u64'($t50); + + // $t51 := error::invalid_argument($t50) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:510:17+52 + call $t51 := $1_error_invalid_argument($t50); + if ($abort_flag) { + assume {:print "$at(17,26785,26837)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + assume {:print "$at(17,26650,26851)"} true; + assume {:print "$track_abort(24,24):", $t51} $t51 == $t51; + + // $t19 := move($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + $t19 := $t51; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:508:13+201 + goto L20; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:13+46 + assume {:print "$at(17,26882,26928)"} true; +L12: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:13+46 + assume {:print "$at(17,26882,26928)"} true; + + // $t52 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:43+15 + $t52 := 12; + assume $IsValid'u64'($t52); + + // $t53 := error::invalid_argument($t52) on_abort goto L20 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:19+40 + call $t53 := $1_error_invalid_argument($t52); + if ($abort_flag) { + assume {:print "$at(17,26888,26928)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(24,24):", $t19} $t19 == $t19; + goto L20; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:13+46 + assume {:print "$at(17,26882,26928)"} true; + assume {:print "$track_abort(24,24):", $t53} $t53 == $t53; + + // $t19 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:13+46 + $t19 := $t53; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:513:13+46 + goto L20; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:35+16 + assume {:print "$at(17,27098,27114)"} true; +L11: + + // $t54 := borrow_field.rotation_capability_offer($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:35+42 + assume {:print "$at(17,27098,27140)"} true; + $t54 := $ChildMutation($t23, 5, $Dereference($t23)->$rotation_capability_offer); + + // $t55 := borrow_field>.for($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:30+51 + $t55 := $ChildMutation($t54, 0, $Dereference($t54)->$for); + + // $t56 := opaque begin: option::swap_or_fill
($t55, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + + // $t57 := read_ref($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + $t57 := $Dereference($t55); + + // $t55 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + havoc $temp_0'$1_option_Option'address''; + $t55 := $UpdateMutation($t55, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t55), Le(Len
(select option::Option.vec($t55)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + assume ($IsValid'$1_option_Option'address''($Dereference($t55)) && (LenVec($Dereference($t55)->$vec) <= 1)); + + // assume And(WellFormed($t56), Le(Len
(select option::Option.vec($t56)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + assume ($IsValid'$1_option_Option'address''($t56) && (LenVec($t56->$vec) <= 1)); + + // assume Eq>($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + assume $IsEqual'$1_option_Option'address''($t56, $t57); + + // assume Eq
(option::spec_borrow
($t55), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + assume $IsEqual'address'($1_option_spec_borrow'address'($Dereference($t55)), $t4); + + // $t56 := opaque end: option::swap_or_fill
($t55, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + + // write_back[Reference($t54).for (option::Option
)]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + $t54 := $UpdateMutation($t54, $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for($Dereference($t54), $Dereference($t55))); + + // write_back[Reference($t23).rotation_capability_offer (account::CapabilityOffer)]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + $t23 := $UpdateMutation($t23, $Update'$1_account_Account'_rotation_capability_offer($Dereference($t23), $Dereference($t54))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t23)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + assume {:print "$at(17,27072,27164)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // drop($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:517:9+92 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:518:5+1 + assume {:print "$at(17,27170,27171)"} true; +L19: + + // assume Identical($t58, select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer(global($t14)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:428:9+83 + assume {:print "$at(18,22018,22101)"} true; + assume ($t58 == $ResourceValue($1_account_Account_$memory, $t14)->$rotation_capability_offer->$for); + + // assert Not(Not(exists[@34](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:395:9+58 + assume {:print "$at(18,19940,19998)"} true; + assert {:msg "assert_failed(18,19940,19998): function does not abort under this condition"} + !!$ResourceExists($1_chain_id_ChainId_$memory#34, 1); + + // assert Not(Not(exists[@35]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:396:9+46 + assume {:print "$at(18,20007,20053)"} true; + assert {:msg "assert_failed(18,20007,20053): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#35, $t4); + + // assert Not(Not(exists[@35]($t14))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:397:9+43 + assume {:print "$at(18,20062,20105)"} true; + assert {:msg "assert_failed(18,20062,20105): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#35, $t14); + + // assert Not(And(Eq($t2, 0), Neq(Len($t3), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32)); + + // assert Not(And(Eq($t2, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t15), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:400:9+245 + assume {:print "$at(18,20255,20500)"} true; + assert {:msg "assert_failed(18,20255,20500): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t15->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t2, 0), Neq(Len($t1), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t1), 64)); + + // assert Not(And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t1), pack ed25519::UnvalidatedPublicKey($t3), $t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:405:9+278 + assume {:print "$at(18,20643,20921)"} true; + assert {:msg "assert_failed(18,20643,20921): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($1_ed25519_Signature($t1), $1_ed25519_UnvalidatedPublicKey($t3), $t16)); + + // assert Not(And(Eq($t2, 1), Gt(Div($t17, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && (($t17 div 32) > 32)); + + // assert Not(And(Eq($t2, 1), Neq(Mod($t17, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t17 mod 32), 1)); + + // assert Not(And(Eq($t2, 1), { + // let expected_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t15), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:412:9+257 + assume {:print "$at(18,21083,21340)"} true; + assert {:msg "assert_failed(18,21083,21340): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && (var expected_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t15->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t2, 1), Neq(Mod(Len($t1), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t1) mod 64), 4)); + + // assert Not(And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t1), pack multi_ed25519::UnvalidatedPublicKey($t3), $t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:417:9+302 + assume {:print "$at(18,21495,21797)"} true; + assert {:msg "assert_failed(18,21495,21797): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($1_multi_ed25519_Signature($t1), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t16)); + + // assert Not(And(Neq($t2, 0), Neq($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:424:9+85 + assume {:print "$at(18,21840,21925)"} true; + assert {:msg "assert_failed(18,21840,21925): function does not abort under this condition"} + !(!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1)); + + // assert Eq
(option::spec_borrow
($t58), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:429:9+60 + assume {:print "$at(18,22110,22170)"} true; + assert {:msg "assert_failed(18,22110,22170): post-condition does not hold"} + $IsEqual'address'($1_option_spec_borrow'address'($t58), $t4); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:429:9+60 + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:518:5+1 + assume {:print "$at(17,27170,27171)"} true; +L20: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@34](0x1)), Not(exists[@35]($t4))), Not(exists[@35]($t14))), And(Eq($t2, 0), Neq(Len($t3), 32))), And(Eq($t2, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t15), expected_auth_key) + // })), And(Eq($t2, 0), Neq(Len($t1), 64))), And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t1), pack ed25519::UnvalidatedPublicKey($t3), $t16)))), And(Eq($t2, 1), Gt(Div($t17, 32), 32))), And(Eq($t2, 1), Neq(Mod($t17, 32), 1))), And(Eq($t2, 1), { + // let expected_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t15), expected_auth_key) + // })), And(Eq($t2, 1), Neq(Mod(Len($t1), 64), 4))), And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t1), pack multi_ed25519::UnvalidatedPublicKey($t3), $t16)))), And(Neq($t2, 0), Neq($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:379:5+2872 + assume {:print "$at(18,19304,22176)"} true; + assert {:msg "assert_failed(18,19304,22176): abort not covered by any of the `aborts_if` clauses"} + ((((((((((((!$ResourceExists($1_chain_id_ChainId_$memory#34, 1) || !$ResourceExists($1_account_Account_$memory#35, $t4)) || !$ResourceExists($1_account_Account_$memory#35, $t14)) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32))) || ($IsEqual'u8'($t2, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t15->$authentication_key, expected_auth_key)))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t1), 64))) || ($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($1_ed25519_Signature($t1), $1_ed25519_UnvalidatedPublicKey($t3), $t16))) || ($IsEqual'u8'($t2, 1) && (($t17 div 32) > 32))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t17 mod 32), 1))) || ($IsEqual'u8'($t2, 1) && (var expected_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t15->$authentication_key, expected_auth_key)))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t1) mod 64), 4))) || ($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationCapabilityOfferProofChallengeV2'($1_multi_ed25519_Signature($t1), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t16))) || (!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1))); + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:379:5+2872 + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun account::offer_signer_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1146 +procedure {:timeLimit 80} $1_account_offer_signer_capability$verify(_$t0: $signer, _$t1: Vec (int), _$t2: int, _$t3: Vec (int), _$t4: int) returns () +{ + // declare local variables + var $t5: $1_account_SignerCapabilityOfferProofChallengeV2; + var $t6: int; + var $t7: int; + var $t8: $1_account_Account; + var $t9: $1_account_SignerCapabilityOfferProofChallengeV2; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $1_account_SignerCapabilityOfferProofChallengeV2; + var $t18: $1_account_Account; + var $t19: int; + var $t20: $Mutation ($1_account_Account); + var $t21: $Mutation ($1_account_CapabilityOffer'$1_account_SignerCapability'); + var $t22: $Mutation ($1_option_Option'address'); + var $t23: $1_option_Option'address'; + var $t24: $1_option_Option'address'; + var $t25: $1_option_Option'address'; + var $t0: $signer; + var $t1: Vec (int); + var $t2: int; + var $t3: Vec (int); + var $t4: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_account_SignerCapabilityOfferProofChallengeV2': $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#38: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$at(17,29933,29934)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume $IsValid'u8'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume $IsValid'address'($t4); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:441:9+49 + assume {:print "$at(18,22536,22585)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, global($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:442:9+55 + assume {:print "$at(18,22594,22649)"} true; + assume ($t8 == $ResourceValue($1_account_Account_$memory, $t7)); + + // assume Identical($t9, pack account::SignerCapabilityOfferProofChallengeV2(select account::Account.sequence_number($t8), $t7, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:443:9+194 + assume {:print "$at(18,22658,22852)"} true; + assume ($t9 == $1_account_SignerCapabilityOfferProofChallengeV2($t8->$sequence_number, $t7, $t4)); + + // assume Identical($t10, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t10 == LenVec($t3)); + + // assume CanModify($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:480:9+41 + assume {:print "$at(18,24815,24856)"} true; + assume $1_account_Account_$modifies[$t7]; + + // @38 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:480:9+41 + $1_account_Account_$memory#38 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$at(17,29933,29934)"} true; + assume {:print "$track_local(24,25,0):", $t0} $t0 == $t0; + + // trace_local[signer_capability_sig_bytes]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$track_local(24,25,1):", $t1} $t1 == $t1; + + // trace_local[account_scheme]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$track_local(24,25,2):", $t2} $t2 == $t2; + + // trace_local[account_public_key_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$track_local(24,25,3):", $t3} $t3 == $t3; + + // trace_local[recipient_address]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:565:5+1 + assume {:print "$track_local(24,25,4):", $t4} $t4 == $t4; + + // $t11 := signer::address_of($t0) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:572:30+27 + assume {:print "$at(17,30213,30240)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,30213,30240)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // trace_local[source_address]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:572:13+14 + assume {:print "$track_local(24,25,6):", $t11} $t11 == $t11; + + // $t13 := account::exists_at($t4) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:17+28 + assume {:print "$at(17,30258,30286)"} true; + call $t13 := $1_account_exists_at($t4); + if ($abort_flag) { + assume {:print "$at(17,30258,30286)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 + assume {:print "$at(17,30250,30330)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:64+23 +L0: + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:64+23 + assume {:print "$at(17,30305,30328)"} true; + $t14 := 2; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:47+41 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(17,30288,30329)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 + assume {:print "$at(17,30250,30330)"} true; + assume {:print "$track_abort(24,25):", $t15} $t15 == $t15; + + // $t12 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 + $t12 := $t15; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:573:9+80 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:577:50+14 + assume {:print "$at(17,30549,30563)"} true; +L2: + + // $t16 := account::get_sequence_number($t11) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:577:30+35 + assume {:print "$at(17,30529,30564)"} true; + call $t16 := $1_account_get_sequence_number($t11); + if ($abort_flag) { + assume {:print "$at(17,30529,30564)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // $t17 := pack account::SignerCapabilityOfferProofChallengeV2($t16, $t11, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:576:31+174 + assume {:print "$at(17,30460,30634)"} true; + $t17 := $1_account_SignerCapabilityOfferProofChallengeV2($t16, $t11, $t4); + + // trace_local[proof_challenge]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:576:13+15 + assume {:print "$track_local(24,25,5):", $t17} $t17 == $t17; + + // assume Identical($t18, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:702:9+48 + assume {:print "$at(18,34829,34877)"} true; + assume ($t18 == $ResourceValue($1_account_Account_$memory, $t11)); + + // assume Identical($t19, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t19 == LenVec($t3)); + + // assert CanModify($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:581:9+138 + assume {:print "$at(17,30644,30782)"} true; + assert {:msg "assert_failed(17,30644,30782): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t11]; + + // account::verify_signed_message($t11, $t2, $t3, $t1, $t17) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:581:9+138 + call $1_account_verify_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'($t11, $t2, $t3, $t1, $t17); + if ($abort_flag) { + assume {:print "$at(17,30644,30782)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // assert CanModify($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:585:32+17 + assume {:print "$at(17,30930,30947)"} true; + assert {:msg "assert_failed(17,30930,30947): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t11]; + + // $t20 := borrow_global($t11) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:585:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(17,30930,30947)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(24,25):", $t12} $t12 == $t12; + goto L4; + } + + // $t21 := borrow_field.signer_capability_offer($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:35+40 + assume {:print "$at(17,31008,31048)"} true; + $t21 := $ChildMutation($t20, 6, $Dereference($t20)->$signer_capability_offer); + + // $t22 := borrow_field>.for($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:30+49 + $t22 := $ChildMutation($t21, 0, $Dereference($t21)->$for); + + // $t23 := opaque begin: option::swap_or_fill
($t22, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + + // $t24 := read_ref($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + $t24 := $Dereference($t22); + + // $t22 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + havoc $temp_0'$1_option_Option'address''; + $t22 := $UpdateMutation($t22, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t22), Le(Len
(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + assume ($IsValid'$1_option_Option'address''($Dereference($t22)) && (LenVec($Dereference($t22)->$vec) <= 1)); + + // assume And(WellFormed($t23), Le(Len
(select option::Option.vec($t23)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + assume ($IsValid'$1_option_Option'address''($t23) && (LenVec($t23->$vec) <= 1)); + + // assume Eq>($t23, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + assume $IsEqual'$1_option_Option'address''($t23, $t24); + + // assume Eq
(option::spec_borrow
($t22), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + assume $IsEqual'address'($1_option_spec_borrow'address'($Dereference($t22)), $t4); + + // $t23 := opaque end: option::swap_or_fill
($t22, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + + // write_back[Reference($t21).for (option::Option
)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + $t21 := $UpdateMutation($t21, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t21), $Dereference($t22))); + + // write_back[Reference($t20).signer_capability_offer (account::CapabilityOffer)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + $t20 := $UpdateMutation($t20, $Update'$1_account_Account'_signer_capability_offer($Dereference($t20), $Dereference($t21))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t20)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t20)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + assume {:print "$at(17,30982,31072)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:586:9+90 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:587:5+1 + assume {:print "$at(17,31078,31079)"} true; +L3: + + // assume Identical($t25, select account::CapabilityOffer.for>(select account::Account.signer_capability_offer(global($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:481:9+81 + assume {:print "$at(18,24865,24946)"} true; + assume ($t25 == $ResourceValue($1_account_Account_$memory, $t7)->$signer_capability_offer->$for); + + // assert Not(Not(exists[@38]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:449:9+46 + assume {:print "$at(18,22862,22908)"} true; + assert {:msg "assert_failed(18,22862,22908): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#38, $t4); + + // assert Not(Not(exists[@38]($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:450:9+43 + assume {:print "$at(18,22917,22960)"} true; + assert {:msg "assert_failed(18,22917,22960): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#38, $t7); + + // assert Not(And(Eq($t2, 0), Neq(Len($t3), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32)); + + // assert Not(And(Eq($t2, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t8), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:453:9+245 + assume {:print "$at(18,23110,23355)"} true; + assert {:msg "assert_failed(18,23110,23355): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t8->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t2, 0), Neq(Len($t1), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t1), 64)); + + // assert Not(And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t1), pack ed25519::UnvalidatedPublicKey($t3), $t9)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:458:9+276 + assume {:print "$at(18,23496,23772)"} true; + assert {:msg "assert_failed(18,23496,23772): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($1_ed25519_Signature($t1), $1_ed25519_UnvalidatedPublicKey($t3), $t9)); + + // assert Not(And(Eq($t2, 1), Gt(Div($t10, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && (($t10 div 32) > 32)); + + // assert Not(And(Eq($t2, 1), Neq(Mod($t10, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t10 mod 32), 1)); + + // assert Not(And(Eq($t2, 1), { + // let expected_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t8), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:465:9+257 + assume {:print "$at(18,23934,24191)"} true; + assert {:msg "assert_failed(18,23934,24191): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && (var expected_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t8->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t2, 1), Neq(Mod(Len($t1), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t1) mod 64), 4)); + + // assert Not(And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t1), pack multi_ed25519::UnvalidatedPublicKey($t3), $t9)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:470:9+300 + assume {:print "$at(18,24344,24644)"} true; + assert {:msg "assert_failed(18,24344,24644): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($1_multi_ed25519_Signature($t1), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t9)); + + // assert Not(And(Neq($t2, 0), Neq($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:477:9+85 + assume {:print "$at(18,24687,24772)"} true; + assert {:msg "assert_failed(18,24687,24772): function does not abort under this condition"} + !(!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1)); + + // assert Eq
(option::spec_borrow
($t25), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:482:9+60 + assume {:print "$at(18,24955,25015)"} true; + assert {:msg "assert_failed(18,24955,25015): post-condition does not hold"} + $IsEqual'address'($1_option_spec_borrow'address'($t25), $t4); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:482:9+60 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:587:5+1 + assume {:print "$at(17,31078,31079)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@38]($t4)), Not(exists[@38]($t7))), And(Eq($t2, 0), Neq(Len($t3), 32))), And(Eq($t2, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t8), expected_auth_key) + // })), And(Eq($t2, 0), Neq(Len($t1), 64))), And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t1), pack ed25519::UnvalidatedPublicKey($t3), $t9)))), And(Eq($t2, 1), Gt(Div($t10, 32), 32))), And(Eq($t2, 1), Neq(Mod($t10, 32), 1))), And(Eq($t2, 1), { + // let expected_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t3); + // Neq>(select account::Account.authentication_key($t8), expected_auth_key) + // })), And(Eq($t2, 1), Neq(Mod(Len($t1), 64), 4))), And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t1), pack multi_ed25519::UnvalidatedPublicKey($t3), $t9)))), And(Neq($t2, 0), Neq($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:434:5+2715 + assume {:print "$at(18,22306,25021)"} true; + assert {:msg "assert_failed(18,22306,25021): abort not covered by any of the `aborts_if` clauses"} + (((((((((((!$ResourceExists($1_account_Account_$memory#38, $t4) || !$ResourceExists($1_account_Account_$memory#38, $t7)) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32))) || ($IsEqual'u8'($t2, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t8->$authentication_key, expected_auth_key)))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t1), 64))) || ($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($1_ed25519_Signature($t1), $1_ed25519_UnvalidatedPublicKey($t3), $t9))) || ($IsEqual'u8'($t2, 1) && (($t10 div 32) > 32))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t10 mod 32), 1))) || ($IsEqual'u8'($t2, 1) && (var expected_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t3); !$IsEqual'vec'u8''($t8->$authentication_key, expected_auth_key)))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t1) mod 64), 4))) || ($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($1_multi_ed25519_Signature($t1), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t9))) || (!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:434:5+2715 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun account::register_coin [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+364 +procedure {:inline 1} $1_account_register_coin'$1_starcoin_coin_STC'(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+1 + assume {:print "$at(17,44147,44148)"} true; + assume {:print "$track_local(24,26,0):", $t0} $t0 == $t0; + + // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:844:23+17 + assume {:print "$at(17,44254,44271)"} 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(17,44254,44271)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_field.coin_register_events($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:846:13+33 + assume {:print "$at(17,44354,44387)"} true; + $t3 := $ChildMutation($t1, 3, $Dereference($t1)->$coin_register_events); + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:848:28+30 + assume {:print "$at(17,44448,44478)"} true; + call $t4 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(17,44448,44478)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := pack account::CoinRegisterEvent($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:847:13+92 + assume {:print "$at(17,44401,44493)"} true; + $t5 := $1_account_CoinRegisterEvent($t4); + + // opaque begin: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + assume {:print "$at(17,44304,44504)"} true; + + // opaque end: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + + // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); + + // pack_ref_deep($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + + // write_back[account::Account@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), + $Dereference($t1)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::register_coin<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+364 +procedure {:inline 1} $1_account_register_coin'#0'(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+1 + assume {:print "$at(17,44147,44148)"} true; + assume {:print "$track_local(24,26,0):", $t0} $t0 == $t0; + + // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:844:23+17 + assume {:print "$at(17,44254,44271)"} 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(17,44254,44271)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_field.coin_register_events($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:846:13+33 + assume {:print "$at(17,44354,44387)"} true; + $t3 := $ChildMutation($t1, 3, $Dereference($t1)->$coin_register_events); + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:848:28+30 + assume {:print "$at(17,44448,44478)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(17,44448,44478)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := pack account::CoinRegisterEvent($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:847:13+92 + assume {:print "$at(17,44401,44493)"} true; + $t5 := $1_account_CoinRegisterEvent($t4); + + // opaque begin: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + assume {:print "$at(17,44304,44504)"} true; + + // opaque end: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + + // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); + + // pack_ref_deep($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + + // write_back[account::Account@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), + $Dereference($t1)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::register_coin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+364 +procedure {:timeLimit 80} $1_account_register_coin$verify(_$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; + var $1_account_Account_$memory#39: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+1 + assume {:print "$at(17,44147,44148)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:652:9+39 + assume {:print "$at(18,32653,32692)"} true; + assume $1_account_Account_$modifies[$t0]; + + // @39 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:652:9+39 + $1_account_Account_$memory#39 := $1_account_Account_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:843:5+1 + assume {:print "$at(17,44147,44148)"} true; + assume {:print "$track_local(24,26,0):", $t0} $t0 == $t0; + + // assert CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:844:23+17 + assume {:print "$at(17,44254,44271)"} true; + assert {:msg "assert_failed(17,44254,44271): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t0]; + + // $t1 := borrow_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:844:23+17 + 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(17,44254,44271)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_field.coin_register_events($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:846:13+33 + assume {:print "$at(17,44354,44387)"} true; + $t3 := $ChildMutation($t1, 3, $Dereference($t1)->$coin_register_events); + + // $t4 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:848:28+30 + assume {:print "$at(17,44448,44478)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(17,44448,44478)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(24,26):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := pack account::CoinRegisterEvent($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:847:13+92 + assume {:print "$at(17,44401,44493)"} true; + $t5 := $1_account_CoinRegisterEvent($t4); + + // opaque begin: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + assume {:print "$at(17,44304,44504)"} true; + + // opaque end: event::emit_event($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + + // write_back[Reference($t1).coin_register_events (event::EventHandle)]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_coin_register_events($Dereference($t1), $Dereference($t3))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:845:9+200 + assume {:print "$at(17,44304,44504)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t1), + $Dereference($t1)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; +L1: + + // assert Not(Not(exists[@39]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:650:9+41 + assume {:print "$at(18,32545,32586)"} true; + assert {:msg "assert_failed(18,32545,32586): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#39, $t0); + + // assert Not(Not(type_info::spec_is_struct[]<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:651:9+49 + assume {:print "$at(18,32595,32644)"} true; + assert {:msg "assert_failed(18,32595,32644): function does not abort under this condition"} + !!$1_type_info_spec_is_struct'#0'(); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:651:9+49 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:851:5+1 + assume {:print "$at(17,44510,44511)"} true; +L2: + + // assert Or(Not(exists[@39]($t0)), Not(type_info::spec_is_struct[]<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:649:5+215 + assume {:print "$at(18,32483,32698)"} true; + assert {:msg "assert_failed(18,32483,32698): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#39, $t0) || !$1_type_info_spec_is_struct'#0'()); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:649:5+215 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun account::revoke_any_rotation_capability [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551:5+256 +procedure {:inline 1} $1_account_revoke_any_rotation_capability(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_account_Account); + var $t6: $Mutation ($1_account_CapabilityOffer'$1_account_RotationCapability'); + var $t7: $Mutation ($1_option_Option'address'); + var $t8: int; + var $t9: $1_option_Option'address'; + var $t10: bool; + var $t0: $signer; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:538:9+39 + assume {:print "$at(18,27576,27615)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:541:9+45 + assume {:print "$at(18,27706,27751)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551:5+1 + assume {:print "$at(17,28813,28814)"} true; + assume {:print "$track_local(24,27,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:552:59+27 + assume {:print "$at(17,28956,28983)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,28956,28983)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := borrow_global($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:552:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(17,28929,28946)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.rotation_capability_offer($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:30+42 + assume {:print "$at(17,29015,29057)"} true; + $t6 := $ChildMutation($t5, 5, $Dereference($t5)->$rotation_capability_offer); + + // $t7 := borrow_field>.for($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:25+51 + $t7 := $ChildMutation($t6, 0, $Dereference($t6)->$for); + + // $t8 := opaque begin: option::extract
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // $t9 := read_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t9 := $Dereference($t7); + + // assume Identical($t10, option::spec_is_none
($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume ($t10 == $1_option_spec_is_none'address'($Dereference($t7))); + + // if ($t10) goto L5 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + if ($t10) { goto L5; } else { goto L6; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 +L4: + + // assume And(option::spec_is_none
($t7), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t7)) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 +L3: + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + havoc $temp_0'$1_option_Option'address''; + $t7 := $UpdateMutation($t7, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t7), Le(Len
(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume ($IsValid'$1_option_Option'address''($Dereference($t7)) && (LenVec($Dereference($t7)->$vec) <= 1)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $IsValid'address'($t8); + + // assume Eq
($t8, option::spec_borrow
($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $IsEqual'address'($t8, $1_option_spec_borrow'address'($t9)); + + // assume option::spec_is_none
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $1_option_spec_is_none'address'($Dereference($t7)); + + // $t8 := opaque end: option::extract
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // write_back[Reference($t6).for (option::Option
)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t6 := $UpdateMutation($t6, $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for($Dereference($t6), $Dereference($t7))); + + // write_back[Reference($t5).rotation_capability_offer (account::CapabilityOffer)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t5 := $UpdateMutation($t5, $Update'$1_account_Account'_rotation_capability_offer($Dereference($t5), $Dereference($t6))); + + // pack_ref_deep($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // write_back[account::Account@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 + assume {:print "$at(17,29068,29069)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 + assume {:print "$at(17,29068,29069)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 + assume {:print "$at(17,29068,29069)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t5) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t6) at :1:1+10 + + // goto L4 at :1:1+10 + goto L4; + + // label L6 at :1:1+10 +L6: + + // drop($t7) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun account::revoke_any_rotation_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551:5+256 +procedure {:timeLimit 80} $1_account_revoke_any_rotation_capability$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_account_Account); + var $t6: $Mutation ($1_account_CapabilityOffer'$1_account_RotationCapability'); + var $t7: $Mutation ($1_option_Option'address'); + var $t8: int; + var $t9: $1_option_Option'address'; + var $t10: bool; + var $t11: $1_option_Option'address'; + var $t0: $signer; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#41: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551:5+1 + assume {:print "$at(17,28813,28814)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:538:9+39 + assume {:print "$at(18,27576,27615)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:541:9+45 + assume {:print "$at(18,27706,27751)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // assume CanModify($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:539:9+31 + assume {:print "$at(18,27624,27655)"} true; + assume $1_account_Account_$modifies[$t1]; + + // @41 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:539:9+31 + $1_account_Account_$memory#41 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:551:5+1 + assume {:print "$at(17,28813,28814)"} true; + assume {:print "$track_local(24,27,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:552:59+27 + assume {:print "$at(17,28956,28983)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,28956,28983)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + goto L2; + } + + // assert CanModify($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:552:32+17 + assert {:msg "assert_failed(17,28929,28946): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t3]; + + // $t5 := borrow_global($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:552:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(17,28929,28946)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.rotation_capability_offer($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:30+42 + assume {:print "$at(17,29015,29057)"} true; + $t6 := $ChildMutation($t5, 5, $Dereference($t5)->$rotation_capability_offer); + + // $t7 := borrow_field>.for($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:25+51 + $t7 := $ChildMutation($t6, 0, $Dereference($t6)->$for); + + // $t8 := opaque begin: option::extract
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // $t9 := read_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t9 := $Dereference($t7); + + // assume Identical($t10, option::spec_is_none
($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume ($t10 == $1_option_spec_is_none'address'($Dereference($t7))); + + // if ($t10) goto L5 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + if ($t10) { goto L5; } else { goto L6; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 +L4: + + // assume And(option::spec_is_none
($t7), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t7)) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + assume {:print "$track_abort(24,27):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 +L3: + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + havoc $temp_0'$1_option_Option'address''; + $t7 := $UpdateMutation($t7, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t7), Le(Len
(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume ($IsValid'$1_option_Option'address''($Dereference($t7)) && (LenVec($Dereference($t7)->$vec) <= 1)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $IsValid'address'($t8); + + // assume Eq
($t8, option::spec_borrow
($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $IsEqual'address'($t8, $1_option_spec_borrow'address'($t9)); + + // assume option::spec_is_none
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume $1_option_spec_is_none'address'($Dereference($t7)); + + // $t8 := opaque end: option::extract
($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // write_back[Reference($t6).for (option::Option
)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t6 := $UpdateMutation($t6, $Update'$1_account_CapabilityOffer'$1_account_RotationCapability''_for($Dereference($t6), $Dereference($t7))); + + // write_back[Reference($t5).rotation_capability_offer (account::CapabilityOffer)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + $t5 := $UpdateMutation($t5, $Update'$1_account_Account'_rotation_capability_offer($Dereference($t5), $Dereference($t6))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t5)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t5)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t5)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t5)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + assume {:print "$at(17,28994,29062)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:553:9+68 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 + assume {:print "$at(17,29068,29069)"} true; +L1: + + // assume Identical($t11, select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer(global($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:544:9+73 + assume {:print "$at(18,27877,27950)"} true; + assume ($t11 == $ResourceValue($1_account_Account_$memory, $t1)->$rotation_capability_offer->$for); + + // assert Not(Not(exists[@41]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:540:9+33 + assume {:print "$at(18,27664,27697)"} true; + assert {:msg "assert_failed(18,27664,27697): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#41, $t1); + + // assert Not(Not(option::$is_some[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:543:9+75 + assume {:print "$at(18,27793,27868)"} true; + assert {:msg "assert_failed(18,27793,27868): function does not abort under this condition"} + !!$1_option_$is_some'address'($t2->$rotation_capability_offer->$for); + + // assert Not(option::spec_is_some
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:545:9+41 + assume {:print "$at(18,27959,28000)"} true; + assert {:msg "assert_failed(18,27959,28000): post-condition does not hold"} + !$1_option_spec_is_some'address'($t11); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:545:9+41 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:554:5+1 + assume {:print "$at(17,29068,29069)"} true; +L2: + + // assert Or(Not(exists[@41]($t1)), Not(option::$is_some[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:537:5+494 + assume {:print "$at(18,27512,28006)"} true; + assert {:msg "assert_failed(18,27512,28006): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#41, $t1) || !$1_option_$is_some'address'($t2->$rotation_capability_offer->$for)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:537:5+494 + $abort_code := $t4; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t5) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t6) at :1:1+10 + + // goto L4 at :1:1+10 + goto L4; + + // label L6 at :1:1+10 +L6: + + // drop($t7) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun account::revoke_any_signer_capability [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621:5+252 +procedure {:inline 1} $1_account_revoke_any_signer_capability(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_account_Account); + var $t5: $Mutation ($1_account_CapabilityOffer'$1_account_SignerCapability'); + var $t6: $Mutation ($1_option_Option'address'); + var $t7: int; + var $t8: $1_option_Option'address'; + var $t9: bool; + var $t0: $signer; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:521:9+68 + assume {:print "$at(18,26712,26780)"} true; + assume ($t1 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621:5+1 + assume {:print "$at(17,32791,32792)"} true; + assume {:print "$track_local(24,28,0):", $t0} $t0 == $t0; + + // $t2 := signer::address_of($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:622:59+27 + assume {:print "$at(17,32932,32959)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,32932,32959)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := borrow_global($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:622:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t2)); + } + if ($abort_flag) { + assume {:print "$at(17,32905,32922)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := borrow_field.signer_capability_offer($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:30+40 + assume {:print "$at(17,32991,33031)"} true; + $t5 := $ChildMutation($t4, 6, $Dereference($t4)->$signer_capability_offer); + + // $t6 := borrow_field>.for($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:25+49 + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$for); + + // $t7 := opaque begin: option::extract
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume ($t9 == $1_option_spec_is_none'address'($Dereference($t6))); + + // if ($t9) goto L5 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + if ($t9) { goto L5; } else { goto L6; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 +L4: + + // assume And(option::spec_is_none
($t6), Eq(262145, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t6)) && $IsEqual'num'(262145, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 +L3: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + havoc $temp_0'$1_option_Option'address''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t6), Le(Len
(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume ($IsValid'$1_option_Option'address''($Dereference($t6)) && (LenVec($Dereference($t6)->$vec) <= 1)); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $IsValid'address'($t7); + + // assume Eq
($t7, option::spec_borrow
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $IsEqual'address'($t7, $1_option_spec_borrow'address'($t8)); + + // assume option::spec_is_none
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $1_option_spec_is_none'address'($Dereference($t6)); + + // $t7 := opaque end: option::extract
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // write_back[Reference($t5).for (option::Option
)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t5 := $UpdateMutation($t5, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t5), $Dereference($t6))); + + // write_back[Reference($t4).signer_capability_offer (account::CapabilityOffer)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t4 := $UpdateMutation($t4, $Update'$1_account_Account'_signer_capability_offer($Dereference($t4), $Dereference($t5))); + + // pack_ref_deep($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // write_back[account::Account@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 + assume {:print "$at(17,33042,33043)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 + assume {:print "$at(17,33042,33043)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 + assume {:print "$at(17,33042,33043)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L4 at :1:1+10 + goto L4; + + // label L6 at :1:1+10 +L6: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun account::revoke_any_signer_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621:5+252 +procedure {:timeLimit 80} $1_account_revoke_any_signer_capability$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_account_Account; + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_account_Account); + var $t5: $Mutation ($1_account_CapabilityOffer'$1_account_SignerCapability'); + var $t6: $Mutation ($1_option_Option'address'); + var $t7: int; + var $t8: $1_option_Option'address'; + var $t9: bool; + var $t0: $signer; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#43: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621:5+1 + assume {:print "$at(17,32791,32792)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t1, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:521:9+68 + assume {:print "$at(18,26712,26780)"} true; + assume ($t1 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // assume CanModify(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:518:9+54 + assume {:print "$at(18,26551,26605)"} true; + assume $1_account_Account_$modifies[$1_signer_$address_of($t0)]; + + // @43 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:518:9+54 + $1_account_Account_$memory#43 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:621:5+1 + assume {:print "$at(17,32791,32792)"} true; + assume {:print "$track_local(24,28,0):", $t0} $t0 == $t0; + + // $t2 := signer::address_of($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:622:59+27 + assume {:print "$at(17,32932,32959)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,32932,32959)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + goto L2; + } + + // assert CanModify($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:622:32+17 + assert {:msg "assert_failed(17,32905,32922): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t2]; + + // $t4 := borrow_global($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:622:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t2)); + } + if ($abort_flag) { + assume {:print "$at(17,32905,32922)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := borrow_field.signer_capability_offer($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:30+40 + assume {:print "$at(17,32991,33031)"} true; + $t5 := $ChildMutation($t4, 6, $Dereference($t4)->$signer_capability_offer); + + // $t6 := borrow_field>.for($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:25+49 + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$for); + + // $t7 := opaque begin: option::extract
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume ($t9 == $1_option_spec_is_none'address'($Dereference($t6))); + + // if ($t9) goto L5 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + if ($t9) { goto L5; } else { goto L6; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 +L4: + + // assume And(option::spec_is_none
($t6), Eq(262145, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t6)) && $IsEqual'num'(262145, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + assume {:print "$track_abort(24,28):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 +L3: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + havoc $temp_0'$1_option_Option'address''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t6), Le(Len
(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume ($IsValid'$1_option_Option'address''($Dereference($t6)) && (LenVec($Dereference($t6)->$vec) <= 1)); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $IsValid'address'($t7); + + // assume Eq
($t7, option::spec_borrow
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $IsEqual'address'($t7, $1_option_spec_borrow'address'($t8)); + + // assume option::spec_is_none
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume $1_option_spec_is_none'address'($Dereference($t6)); + + // $t7 := opaque end: option::extract
($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // write_back[Reference($t5).for (option::Option
)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t5 := $UpdateMutation($t5, $Update'$1_account_CapabilityOffer'$1_account_SignerCapability''_for($Dereference($t5), $Dereference($t6))); + + // write_back[Reference($t4).signer_capability_offer (account::CapabilityOffer)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + $t4 := $UpdateMutation($t4, $Update'$1_account_Account'_signer_capability_offer($Dereference($t4), $Dereference($t5))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t4)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t4)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t4)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t4)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + assume {:print "$at(17,32970,33036)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:623:9+66 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 + assume {:print "$at(17,33042,33043)"} true; +L1: + + // assert Not(Not(exists[@43](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:520:9+56 + assume {:print "$at(18,26647,26703)"} true; + assert {:msg "assert_failed(18,26647,26703): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#43, $1_signer_$address_of($t0)); + + // assert Not(Not(option::$is_some[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t1))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:522:9+73 + assume {:print "$at(18,26789,26862)"} true; + assert {:msg "assert_failed(18,26789,26862): function does not abort under this condition"} + !!$1_option_$is_some'address'($t1->$signer_capability_offer->$for); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:522:9+73 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:624:5+1 + assume {:print "$at(17,33042,33043)"} true; +L2: + + // assert Or(Not(exists[@43](signer::$address_of[]($t0))), Not(option::$is_some[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t1))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:517:5+379 + assume {:print "$at(18,26489,26868)"} true; + assert {:msg "assert_failed(18,26489,26868): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#43, $1_signer_$address_of($t0)) || !$1_option_$is_some'address'($t1->$signer_capability_offer->$for)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:517:5+379 + $abort_code := $t3; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L4 at :1:1+10 + goto L4; + + // label L6 at :1:1+10 +L6: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun account::revoke_rotation_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539:5+570 +procedure {:timeLimit 80} $1_account_revoke_rotation_capability$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_account_Account; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_account_Account); + var $t10: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t11: $1_option_Option'address'; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $1_option_Option'address'; + var $t0: $signer; + var $t1: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#45: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539:5+1 + assume {:print "$at(17,28166,28167)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:527:9+39 + assume {:print "$at(18,27025,27064)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:528:9+45 + assume {:print "$at(18,27073,27118)"} true; + assume ($t3 == $ResourceValue($1_account_Account_$memory, $t2)); + + // assume CanModify($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:531:9+31 + assume {:print "$at(18,27281,27312)"} true; + assume $1_account_Account_$modifies[$t2]; + + // @45 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:531:9+31 + $1_account_Account_$memory#45 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539:5+1 + assume {:print "$at(17,28166,28167)"} true; + assume {:print "$track_local(24,29,0):", $t0} $t0 == $t0; + + // trace_local[to_be_revoked_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:539:5+1 + assume {:print "$track_local(24,29,1):", $t1} $t1 == $t1; + + // $t4 := account::exists_at($t1) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:17+32 + assume {:print "$at(17,28295,28327)"} true; + call $t4 := $1_account_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(17,28295,28327)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 + assume {:print "$at(17,28287,28371)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 +L0: + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:68+23 + assume {:print "$at(17,28346,28369)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:51+41 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(17,28329,28370)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 + assume {:print "$at(17,28287,28371)"} true; + assume {:print "$track_abort(24,29):", $t7} $t7 == $t7; + + // $t5 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 + $t5 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:540:9+84 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:541:39+7 + assume {:print "$at(17,28411,28418)"} true; +L2: + + // $t8 := signer::address_of($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:541:20+27 + assume {:print "$at(17,28392,28419)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,28392,28419)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // assert CanModify($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:542:32+17 + assume {:print "$at(17,28452,28469)"} true; + assert {:msg "assert_failed(17,28452,28469): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t8]; + + // $t9 := borrow_global($t8) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:542:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t8)); + } + if ($abort_flag) { + assume {:print "$at(17,28452,28469)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.rotation_capability_offer($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:31+42 + assume {:print "$at(17,28533,28575)"} true; + $t10 := $Dereference($t9)->$rotation_capability_offer; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$signer_capability_offer->$for->$vec) <= 1); + + // $t11 := get_field>.for($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:30+47 + assume {:print "$at(17,28532,28579)"} true; + $t11 := $t10->$for; + + // $t12 := opaque begin: option::contains
($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:13+89 + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:13+89 + assume $IsValid'bool'($t12); + + // assume Eq($t12, option::spec_contains
($t11, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:13+89 + assume $IsEqual'bool'($t12, $1_option_spec_contains'address'($t11, $t1)); + + // $t12 := opaque end: option::contains
($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:544:13+89 + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 + assume {:print "$at(17,28494,28680)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 + assume {:print "$at(17,28494,28680)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 +L3: + + // $t13 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:545:30+34 + assume {:print "$at(17,28635,28669)"} true; + $t13 := 18; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:545:13+52 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(17,28618,28670)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 + assume {:print "$at(17,28494,28680)"} true; + assume {:print "$track_abort(24,29):", $t14} $t14 == $t14; + + // $t5 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 + $t5 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:543:9+186 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:547:40+7 + assume {:print "$at(17,28721,28728)"} true; +L5: + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:538:9+39 + assume {:print "$at(18,27576,27615)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:541:9+45 + assume {:print "$at(18,27706,27751)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // assert CanModify($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:547:9+39 + assume {:print "$at(17,28690,28729)"} true; + assert {:msg "assert_failed(17,28690,28729): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t15]; + + // account::revoke_any_rotation_capability($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:547:9+39 + call $1_account_revoke_any_rotation_capability($t0); + if ($abort_flag) { + assume {:print "$at(17,28690,28729)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,29):", $t5} $t5 == $t5; + goto L7; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:548:5+1 + assume {:print "$at(17,28735,28736)"} true; +L6: + + // assume Identical($t17, select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer(global($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:533:9+73 + assume {:print "$at(18,27377,27450)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t2)->$rotation_capability_offer->$for); + + // assert Not(Not(exists[@45]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:526:9+50 + assume {:print "$at(18,26966,27016)"} true; + assert {:msg "assert_failed(18,26966,27016): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#45, $t1); + + // assert Not(Not(exists[@45]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:529:9+33 + assume {:print "$at(18,27127,27160)"} true; + assert {:msg "assert_failed(18,27127,27160): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#45, $t2); + + // assert Not(Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t3)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:530:9+103 + assume {:print "$at(18,27169,27272)"} true; + assert {:msg "assert_failed(18,27169,27272): function does not abort under this condition"} + !!$1_option_spec_contains'address'($t3->$rotation_capability_offer->$for, $t1); + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:532:9+47 + assume {:print "$at(18,27321,27368)"} true; + assert {:msg "assert_failed(18,27321,27368): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t1); + + // assert Not(option::spec_is_some
($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:534:9+41 + assume {:print "$at(18,27459,27500)"} true; + assert {:msg "assert_failed(18,27459,27500): post-condition does not hold"} + !$1_option_spec_is_some'address'($t17); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:534:9+41 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:548:5+1 + assume {:print "$at(17,28735,28736)"} true; +L7: + + // assert Or(Or(Not(exists[@45]($t1)), Not(exists[@45]($t2))), Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t3)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:525:5+632 + assume {:print "$at(18,26874,27506)"} true; + assert {:msg "assert_failed(18,26874,27506): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_account_Account_$memory#45, $t1) || !$ResourceExists($1_account_Account_$memory#45, $t2)) || !$1_option_spec_contains'address'($t3->$rotation_capability_offer->$for, $t1)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:525:5+632 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun account::revoke_signer_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609:5+556 +procedure {:timeLimit 80} $1_account_revoke_signer_capability$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_account_Account; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_account_Account); + var $t10: $1_account_CapabilityOffer'$1_account_SignerCapability'; + var $t11: $1_option_Option'address'; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t0: $signer; + var $t1: int; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#46: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609:5+1 + assume {:print "$at(17,32160,32161)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:509:9+39 + assume {:print "$at(18,26136,26175)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:510:9+45 + assume {:print "$at(18,26184,26229)"} true; + assume ($t3 == $ResourceValue($1_account_Account_$memory, $t2)); + + // assume CanModify($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:513:9+31 + assume {:print "$at(18,26390,26421)"} true; + assume $1_account_Account_$modifies[$t2]; + + // @46 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:513:9+31 + $1_account_Account_$memory#46 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609:5+1 + assume {:print "$at(17,32160,32161)"} true; + assume {:print "$track_local(24,30,0):", $t0} $t0 == $t0; + + // trace_local[to_be_revoked_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:609:5+1 + assume {:print "$track_local(24,30,1):", $t1} $t1 == $t1; + + // $t4 := account::exists_at($t1) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:17+32 + assume {:print "$at(17,32287,32319)"} true; + call $t4 := $1_account_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(17,32287,32319)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 + assume {:print "$at(17,32279,32363)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 +L0: + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:68+23 + assume {:print "$at(17,32338,32361)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:51+41 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(17,32321,32362)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 + assume {:print "$at(17,32279,32363)"} true; + assume {:print "$track_abort(24,30):", $t7} $t7 == $t7; + + // $t5 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 + $t5 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:610:9+84 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:611:39+7 + assume {:print "$at(17,32403,32410)"} true; +L2: + + // $t8 := signer::address_of($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:611:20+27 + assume {:print "$at(17,32384,32411)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,32384,32411)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // assert CanModify($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:612:32+17 + assume {:print "$at(17,32444,32461)"} true; + assert {:msg "assert_failed(17,32444,32461): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t8]; + + // $t9 := borrow_global($t8) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:612:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t8)); + } + if ($abort_flag) { + assume {:print "$at(17,32444,32461)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.signer_capability_offer($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:31+40 + assume {:print "$at(17,32525,32565)"} true; + $t10 := $Dereference($t9)->$signer_capability_offer; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t9)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t9)->$signer_capability_offer->$for->$vec) <= 1); + + // $t11 := get_field>.for($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:30+45 + assume {:print "$at(17,32524,32569)"} true; + $t11 := $t10->$for; + + // $t12 := opaque begin: option::contains
($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:13+87 + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:13+87 + assume $IsValid'bool'($t12); + + // assume Eq($t12, option::spec_contains
($t11, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:13+87 + assume $IsEqual'bool'($t12, $1_option_spec_contains'address'($t11, $t1)); + + // $t12 := opaque end: option::contains
($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:614:13+87 + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 + assume {:print "$at(17,32486,32662)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 + assume {:print "$at(17,32486,32662)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 +L3: + + // $t13 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:615:30+26 + assume {:print "$at(17,32625,32651)"} true; + $t13 := 14; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:615:13+44 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(17,32608,32652)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 + assume {:print "$at(17,32486,32662)"} true; + assume {:print "$track_abort(24,30):", $t14} $t14 == $t14; + + // $t5 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 + $t5 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:613:9+176 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:617:38+7 + assume {:print "$at(17,32701,32708)"} true; +L5: + + // assume Identical($t15, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:521:9+68 + assume {:print "$at(18,26712,26780)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // assert CanModify(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:617:9+37 + assume {:print "$at(17,32672,32709)"} true; + assert {:msg "assert_failed(17,32672,32709): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$1_signer_$address_of($t0)]; + + // account::revoke_any_signer_capability($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:617:9+37 + call $1_account_revoke_any_signer_capability($t0); + if ($abort_flag) { + assume {:print "$at(17,32672,32709)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(24,30):", $t5} $t5 == $t5; + goto L7; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:618:5+1 + assume {:print "$at(17,32715,32716)"} true; +L6: + + // assert Not(Not(exists[@46]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:508:9+50 + assume {:print "$at(18,26077,26127)"} true; + assert {:msg "assert_failed(18,26077,26127): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#46, $t1); + + // assert Not(Not(exists[@46]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:511:9+33 + assume {:print "$at(18,26238,26271)"} true; + assert {:msg "assert_failed(18,26238,26271): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#46, $t2); + + // assert Not(Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t3)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:512:9+101 + assume {:print "$at(18,26280,26381)"} true; + assert {:msg "assert_failed(18,26280,26381): function does not abort under this condition"} + !!$1_option_spec_contains'address'($t3->$signer_capability_offer->$for, $t1); + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:514:9+47 + assume {:print "$at(18,26430,26477)"} true; + assert {:msg "assert_failed(18,26430,26477): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:514:9+47 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:618:5+1 + assume {:print "$at(17,32715,32716)"} true; +L7: + + // assert Or(Or(Not(exists[@46]($t1)), Not(exists[@46]($t2))), Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t3)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:507:5+496 + assume {:print "$at(18,25987,26483)"} true; + assert {:msg "assert_failed(18,25987,26483): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_account_Account_$memory#46, $t1) || !$ResourceExists($1_account_Account_$memory#46, $t2)) || !$1_option_spec_contains'address'($t3->$signer_capability_offer->$for, $t1)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:507:5+496 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun account::rotate_authentication_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+3082 +procedure {:timeLimit 80} $1_account_rotate_authentication_key$verify(_$t0: $signer, _$t1: int, _$t2: Vec (int), _$t3: int, _$t4: Vec (int), _$t5: Vec (int), _$t6: Vec (int)) returns () +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $Mutation ($1_account_Account); + var $t11: int; + var $t12: $1_account_RotationProofChallenge; + var $t13: int; + var $t14: Vec (int); + var $t15: Vec (int); + var $t16: $1_ed25519_UnvalidatedPublicKey; + var $t17: $1_multi_ed25519_UnvalidatedPublicKey; + var $t18: Vec (int); + var $t19: Vec (int); + var $t20: int; + var $t21: $1_account_Account; + var $t22: int; + var $t23: $1_account_RotationProofChallenge; + var $t24: int; + var $t25: Vec (int); + var $t26: Table int (int); + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: Table int (int); + var $t32: int; + var $t33: int; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: int; + var $t37: int; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: $Mutation ($1_account_Account); + var $t42: int; + var $t43: bool; + var $t44: $1_ed25519_UnvalidatedPublicKey; + var $t45: Vec (int); + var $t46: Vec (int); + var $t47: bool; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: $1_multi_ed25519_UnvalidatedPublicKey; + var $t54: Vec (int); + var $t55: Vec (int); + var $t56: bool; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: Vec (int); + var $t62: $1_string_String; + var $t63: Vec (int); + var $t64: Vec (int); + var $t65: int; + var $t66: int; + var $t67: $1_account_RotationProofChallenge; + var $t68: int; + var $t69: Vec (int); + var $t70: bool; + var $t71: int; + var $t72: Vec (int); + var $t73: bool; + var $t74: Table int (int); + var $t75: int; + var $t76: int; + var $t77: Vec (int); + var $t78: $1_string_String; + var $t79: Vec (int); + var $t0: $signer; + var $t1: int; + var $t2: Vec (int); + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: Vec (int); + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#49: $Memory $1_account_Account; + var $1_account_OriginatingAddress_$memory#50: $Memory $1_account_OriginatingAddress; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$at(17,17593,17594)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'u8'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'vec'u8''($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'vec'u8''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume $IsValid'vec'u8''($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: account::OriginatingAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_OriginatingAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_OriginatingAddress_$memory, $a_0); + ($IsValid'$1_account_OriginatingAddress'($rsc)))); + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:259:9+39 + assume {:print "$at(18,13434,13473)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, global($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:260:9+45 + assume {:print "$at(18,13482,13527)"} true; + assume ($t21 == $ResourceValue($1_account_Account_$memory, $t20)); + + // assume Identical($t22, from_bcs::deserialize
(select account::Account.authentication_key($t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:278:9+88 + assume {:print "$at(18,14515,14603)"} true; + assume ($t22 == $1_from_bcs_deserialize'address'($t21->$authentication_key)); + + // assume Identical($t23, pack account::RotationProofChallenge(select account::Account.sequence_number($t21), $t20, $t22, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:281:9+238 + assume {:print "$at(18,14704,14942)"} true; + assume ($t23 == $1_account_RotationProofChallenge($t21->$sequence_number, $t20, $t22, $t4)); + + // assume Identical($t24, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:304:9+28 + assume {:print "$at(18,15531,15559)"} true; + assume ($t24 == $t20); + + // assume Identical($t25, account::spec_assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:305:9+147 + assume {:print "$at(18,15568,15715)"} true; + assume ($t25 == $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t23)); + + // assume Identical($t26, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:307:9+78 + assume {:print "$at(18,15725,15803)"} true; + assume ($t26 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t27, from_bcs::deserialize
($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:308:9+71 + assume {:print "$at(18,15812,15883)"} true; + assume ($t27 == $1_from_bcs_deserialize'address'($t25)); + + // assume Identical($t28, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t28 == LenVec($t2)); + + // assume Identical($t29, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume ($t29 == LenVec($t2)); + + // assume Identical($t30, Len($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume ($t30 == LenVec($t4)); + + // assume Identical($t31, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t31 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t32, from_bcs::deserialize
(select account::Account.authentication_key($t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t32 == $1_from_bcs_deserialize'address'($t21->$authentication_key)); + + // assume Identical($t33, from_bcs::deserialize
($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t33 == $1_from_bcs_deserialize'address'($t25)); + + // @49 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$at(17,17593,17594)"} true; + $1_account_Account_$memory#49 := $1_account_Account_$memory; + + // @50 := save_mem(account::OriginatingAddress) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + $1_account_OriginatingAddress_$memory#50 := $1_account_OriginatingAddress_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,0):", $t0} $t0 == $t0; + + // trace_local[from_scheme]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,1):", $t1} $t1 == $t1; + + // trace_local[from_public_key_bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,2):", $t2} $t2 == $t2; + + // trace_local[to_scheme]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,3):", $t3} $t3 == $t3; + + // trace_local[to_public_key_bytes]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,4):", $t4} $t4 == $t4; + + // trace_local[cap_rotate_key]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,5):", $t5} $t5 == $t5; + + // trace_local[cap_update_table]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:340:5+1 + assume {:print "$track_local(24,31,6):", $t6} $t6 == $t6; + + // $t34 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 114, 111, 116, 97, 116, 101, 95, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 95, 107, 101, 121, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:349:36+47 + assume {:print "$at(17,17949,17996)"} true; + $t34 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 114, 111, 116)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(101, 110, 116, 105)), MakeVec4(99, 97, 116, 105)), MakeVec4(111, 110, 95, 107)), MakeVec4(101, 121, 32, 124)), MakeVec4(32, 101, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:349:23+61 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(17,17936,17997)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // debug::print($t35) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:349:9+76 + call $1_debug_print'$1_string_String'($t35); + if ($abort_flag) { + assume {:print "$at(17,17922,17998)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // $t37 := signer::address_of($t0) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:351:20+27 + assume {:print "$at(17,18020,18047)"} true; + call $t37 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,18020,18047)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[addr]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:351:13+4 + assume {:print "$track_local(24,31,11):", $t37} $t37 == $t37; + + // $t38 := account::exists_at($t37) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:17+15 + assume {:print "$at(17,18065,18080)"} true; + call $t38 := $1_account_exists_at($t37); + if ($abort_flag) { + assume {:print "$at(17,18065,18080)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // if ($t38) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 + if ($t38) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 + assume {:print "$at(17,18057,18124)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:51+23 +L0: + + // $t39 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:51+23 + assume {:print "$at(17,18099,18122)"} true; + $t39 := 2; + assume $IsValid'u64'($t39); + + // $t40 := error::not_found($t39) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:34+41 + call $t40 := $1_error_not_found($t39); + if ($abort_flag) { + assume {:print "$at(17,18082,18123)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 + assume {:print "$at(17,18057,18124)"} true; + assume {:print "$track_abort(24,31):", $t40} $t40 == $t40; + + // $t36 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 + $t36 := $t40; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:352:9+67 + goto L14; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:353:59+4 + assume {:print "$at(17,18184,18188)"} true; +L2: + + // $t41 := borrow_global($t37) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:353:32+17 + assume {:print "$at(17,18157,18174)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t37)) { + call $ExecFailureAbort(); + } else { + $t41 := $Mutation($Global($t37), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t37)); + } + if ($abort_flag) { + assume {:print "$at(17,18157,18174)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[account_resource]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:353:13+16 + $temp_0'$1_account_Account' := $Dereference($t41); + assume {:print "$track_local(24,31,10):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t42 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:356:28+14 + assume {:print "$at(17,18322,18336)"} true; + $t42 := 0; + assume $IsValid'u8'($t42); + + // $t43 := ==($t1, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:356:25+2 + $t43 := $IsEqual'u8'($t1, $t42); + + // if ($t43) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:356:9+924 + if ($t43) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:357:74+21 + assume {:print "$at(17,18413,18434)"} true; +L4: + + // $t44 := ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:357:27+69 + assume {:print "$at(17,18366,18435)"} true; + call $t44 := $1_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,18366,18435)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[from_pk]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:357:17+7 + assume {:print "$track_local(24,31,16):", $t44} $t44 == $t44; + + // $t45 := ed25519::unvalidated_public_key_to_authentication_key($t44) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:358:33+63 + assume {:print "$at(17,18469,18532)"} true; + call $t45 := $1_ed25519_unvalidated_public_key_to_authentication_key($t44); + if ($abort_flag) { + assume {:print "$at(17,18469,18532)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[from_auth_key]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:358:17+13 + assume {:print "$track_local(24,31,14):", $t45} $t45 == $t45; + + // $t46 := get_field.authentication_key($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:360:17+35 + assume {:print "$at(17,18571,18606)"} true; + $t46 := $Dereference($t41)->$authentication_key; + + // $t47 := ==($t46, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:360:53+2 + $t47 := $IsEqual'vec'u8''($t46, $t45); + + // if ($t47) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + assume {:print "$at(17,18546,18704)"} true; + if ($t47) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + assume {:print "$at(17,18546,18704)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 +L5: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + assume {:print "$at(17,18546,18704)"} true; + + // $t48 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:361:40+25 + assume {:print "$at(17,18664,18689)"} true; + $t48 := 7; + assume $IsValid'u64'($t48); + + // $t49 := error::unauthenticated($t48) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:361:17+49 + call $t49 := $1_error_unauthenticated($t48); + if ($abort_flag) { + assume {:print "$at(17,18641,18690)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_abort($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + assume {:print "$at(17,18546,18704)"} true; + assume {:print "$track_abort(24,31):", $t49} $t49 == $t49; + + // $t36 := move($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + $t36 := $t49; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:359:13+158 + goto L14; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:362:14+1 + assume {:print "$at(17,18704,18705)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:362:14+1 + assume {:print "$at(17,18704,18705)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:363:20+11 + assume {:print "$at(17,18725,18736)"} true; +L3: + + // $t50 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:363:35+20 + assume {:print "$at(17,18740,18760)"} true; + $t50 := 1; + assume $IsValid'u8'($t50); + + // $t51 := ==($t1, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:363:32+2 + $t51 := $IsEqual'u8'($t1, $t50); + + // if ($t51) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:363:16+506 + if ($t51) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:364:80+21 + assume {:print "$at(17,18843,18864)"} true; +L10: + + // assume Identical($t52, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t52 == LenVec($t2)); + + // $t53 := multi_ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:364:27+75 + assume {:print "$at(17,18790,18865)"} true; + call $t53 := $1_multi_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,18790,18865)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[from_pk#2]($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:364:17+7 + assume {:print "$track_local(24,31,17):", $t53} $t53 == $t53; + + // $t54 := multi_ed25519::unvalidated_public_key_to_authentication_key($t53) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:365:33+69 + assume {:print "$at(17,18899,18968)"} true; + call $t54 := $1_multi_ed25519_unvalidated_public_key_to_authentication_key($t53); + if ($abort_flag) { + assume {:print "$at(17,18899,18968)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[from_auth_key#3]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:365:17+13 + assume {:print "$track_local(24,31,15):", $t54} $t54 == $t54; + + // $t55 := get_field.authentication_key($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:367:17+35 + assume {:print "$at(17,19007,19042)"} true; + $t55 := $Dereference($t41)->$authentication_key; + + // $t56 := ==($t55, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:367:53+2 + $t56 := $IsEqual'vec'u8''($t55, $t54); + + // if ($t56) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + assume {:print "$at(17,18982,19140)"} true; + if ($t56) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 +L12: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + assume {:print "$at(17,18982,19140)"} true; + goto L8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 +L11: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + assume {:print "$at(17,18982,19140)"} true; + + // $t57 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:368:40+25 + assume {:print "$at(17,19100,19125)"} true; + $t57 := 7; + assume $IsValid'u64'($t57); + + // $t58 := error::unauthenticated($t57) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:368:17+49 + call $t58 := $1_error_unauthenticated($t57); + if ($abort_flag) { + assume {:print "$at(17,19077,19126)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_abort($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + assume {:print "$at(17,18982,19140)"} true; + assume {:print "$track_abort(24,31):", $t58} $t58 == $t58; + + // $t36 := move($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + $t36 := $t58; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:366:13+158 + goto L14; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:13+46 + assume {:print "$at(17,19171,19217)"} true; +L9: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:13+46 + assume {:print "$at(17,19171,19217)"} true; + + // $t59 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:43+15 + $t59 := 12; + assume $IsValid'u64'($t59); + + // $t60 := error::invalid_argument($t59) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:19+40 + call $t60 := $1_error_invalid_argument($t59); + if ($abort_flag) { + assume {:print "$at(17,19177,19217)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_abort($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:13+46 + assume {:print "$at(17,19171,19217)"} true; + assume {:print "$track_abort(24,31):", $t60} $t60 == $t60; + + // $t36 := move($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:13+46 + $t36 := $t60; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:371:13+46 + goto L14; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:374:36+75 + assume {:print "$at(17,19265,19340)"} true; +L8: + + // $t61 := [115, 116, 97, 114, 99, 111, 105, 110, 95, 102, 114, 97, 109, 101, 119, 111, 114, 107, 58, 58, 114, 111, 116, 97, 116, 101, 95, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 95, 107, 101, 121, 32, 124, 32, 99, 117, 114, 114, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 115, 95, 97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:374:36+75 + assume {:print "$at(17,19265,19340)"} true; + $t61 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 97, 114), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 102, 114, 97)), MakeVec4(109, 101, 119, 111)), MakeVec4(114, 107, 58, 58)), MakeVec4(114, 111, 116, 97)), MakeVec4(116, 101, 95, 97)), MakeVec4(117, 116, 104, 101)), MakeVec4(110, 116, 105, 99)), MakeVec4(97, 116, 105, 111)), MakeVec4(110, 95, 107, 101)), MakeVec4(121, 32, 124, 32)), MakeVec4(99, 117, 114, 114)), MakeVec4(95, 97, 117, 116)), MakeVec4(104, 95, 107, 101)), MakeVec4(121, 95, 97, 115)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)); + assume $IsValid'vec'u8''($t61); + + // $t62 := string::utf8($t61) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:374:23+89 + call $t62 := $1_string_utf8($t61); + if ($abort_flag) { + assume {:print "$at(17,19252,19341)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // debug::print($t62) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:374:9+104 + call $1_debug_print'$1_string_String'($t62); + if ($abort_flag) { + assume {:print "$at(17,19238,19342)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // $t63 := get_field.authentication_key($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:375:66+35 + assume {:print "$at(17,19409,19444)"} true; + $t63 := $Dereference($t41)->$authentication_key; + + // $t64 := bcs_util::truncate_16($t63) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:375:44+58 + call $t64 := $1_bcs_util_truncate_16($t63); + if ($abort_flag) { + assume {:print "$at(17,19387,19445)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[truncated_authentication_key]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:375:13+28 + assume {:print "$track_local(24,31,19):", $t64} $t64 == $t64; + + // debug::print>($t64) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:376:9+43 + assume {:print "$at(17,19455,19498)"} true; + call $1_debug_print'vec'u8''($t64); + if ($abort_flag) { + assume {:print "$at(17,19455,19498)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // $t65 := from_bcs::to_address($t64) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:379:40+50 + assume {:print "$at(17,19662,19712)"} true; + call $t65 := $1_from_bcs_to_address($t64); + if ($abort_flag) { + assume {:print "$at(17,19662,19712)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // trace_local[curr_auth_key_as_address]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:379:13+24 + assume {:print "$track_local(24,31,13):", $t65} $t65 == $t65; + + // $t66 := get_field.sequence_number($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:381:30+32 + assume {:print "$at(17,19792,19824)"} true; + $t66 := $Dereference($t41)->$sequence_number; + + // $t67 := pack account::RotationProofChallenge($t66, $t37, $t65, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:380:25+232 + assume {:print "$at(17,19738,19970)"} true; + $t67 := $1_account_RotationProofChallenge($t66, $t37, $t65, $t4); + + // trace_local[challenge]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:380:13+9 + assume {:print "$track_local(24,31,12):", $t67} $t67 == $t67; + + // assume Identical($t68, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t68 == LenVec($t2)); + + // $t69 := opaque begin: account::assert_valid_rotation_proof_signature_and_get_auth_key($t1, $t2, $t5, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + assume {:print "$at(17,20059,20235)"} true; + + // assume Identical($t70, Or(Or(Or(Or(Or(Or(Or(And(Eq($t1, 0), Not(ed25519::spec_signature_verify_strict_t(pack ed25519::Signature($t5), pack ed25519::UnvalidatedPublicKey($t2), $t67))), And(Eq($t1, 1), Not(multi_ed25519::spec_signature_verify_strict_t(pack multi_ed25519::Signature($t5), pack multi_ed25519::UnvalidatedPublicKey($t2), $t67)))), And(Neq($t1, 0), Neq($t1, 1))), And(Eq($t1, 0), Neq(Len($t2), 32))), And(Eq($t1, 0), Neq(Len($t5), 64))), And(Eq($t1, 1), Gt(Div($t68, 32), 32))), And(Eq($t1, 1), Neq(Mod($t68, 32), 1))), And(Eq($t1, 1), Neq(Mod(Len($t5), 64), 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + assume ($t70 == (((((((($IsEqual'u8'($t1, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t5), $1_ed25519_UnvalidatedPublicKey($t2), $t67)) || ($IsEqual'u8'($t1, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t5), $1_multi_ed25519_UnvalidatedPublicKey($t2), $t67))) || (!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1))) || ($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32))) || ($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t5), 64))) || ($IsEqual'u8'($t1, 1) && (($t68 div 32) > 32))) || ($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t68 mod 32), 1))) || ($IsEqual'u8'($t1, 1) && !$IsEqual'num'((LenVec($t5) mod 64), 4)))); + + // if ($t70) goto L19 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + if ($t70) { goto L19; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 +L16: + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + assume {:print "$at(17,20059,20235)"} true; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + goto L14; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 +L15: + + // assume WellFormed($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + assume {:print "$at(17,20059,20235)"} true; + assume $IsValid'vec'u8''($t69); + + // assume Eq>($t69, account::spec_assert_valid_rotation_proof_signature_and_get_auth_key($t1, $t2, $t5, $t67)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + assume $IsEqual'vec'u8''($t69, $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key($t1, $t2, $t5, $t67)); + + // $t69 := opaque end: account::assert_valid_rotation_proof_signature_and_get_auth_key($t1, $t2, $t5, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + + // drop($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:388:9+176 + + // assume Identical($t71, Len($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t71 == LenVec($t4)); + + // $t72 := opaque begin: account::assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + assume {:print "$at(17,20264,20438)"} true; + + // assume Identical($t73, Or(Or(Or(Or(Or(Or(Or(And(Eq($t3, 0), Not(ed25519::spec_signature_verify_strict_t(pack ed25519::Signature($t6), pack ed25519::UnvalidatedPublicKey($t4), $t67))), And(Eq($t3, 1), Not(multi_ed25519::spec_signature_verify_strict_t(pack multi_ed25519::Signature($t6), pack multi_ed25519::UnvalidatedPublicKey($t4), $t67)))), And(Neq($t3, 0), Neq($t3, 1))), And(Eq($t3, 0), Neq(Len($t4), 32))), And(Eq($t3, 0), Neq(Len($t6), 64))), And(Eq($t3, 1), Gt(Div($t71, 32), 32))), And(Eq($t3, 1), Neq(Mod($t71, 32), 1))), And(Eq($t3, 1), Neq(Mod(Len($t6), 64), 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + assume ($t73 == (((((((($IsEqual'u8'($t3, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t6), $1_ed25519_UnvalidatedPublicKey($t4), $t67)) || ($IsEqual'u8'($t3, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t6), $1_multi_ed25519_UnvalidatedPublicKey($t4), $t67))) || (!$IsEqual'u8'($t3, 0) && !$IsEqual'u8'($t3, 1))) || ($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t4), 32))) || ($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t6), 64))) || ($IsEqual'u8'($t3, 1) && (($t71 div 32) > 32))) || ($IsEqual'u8'($t3, 1) && !$IsEqual'num'(($t71 mod 32), 1))) || ($IsEqual'u8'($t3, 1) && !$IsEqual'num'((LenVec($t6) mod 64), 4)))); + + // if ($t73) goto L20 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + if ($t73) { goto L20; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 +L18: + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + assume {:print "$at(17,20264,20438)"} true; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + goto L14; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 +L17: + + // assume WellFormed($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + assume {:print "$at(17,20264,20438)"} true; + assume $IsValid'vec'u8''($t72); + + // assume Eq>($t72, account::spec_assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t67)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + assume $IsEqual'vec'u8''($t72, $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t67)); + + // $t72 := opaque end: account::assert_valid_rotation_proof_signature_and_get_auth_key($t3, $t4, $t6, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:28+174 + + // trace_local[new_auth_key]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:394:13+12 + assume {:print "$track_local(24,31,18):", $t72} $t72 == $t72; + + // assume Identical($t74, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t74 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t75, from_bcs::deserialize
(select account::Account.authentication_key($t41))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t75 == $1_from_bcs_deserialize'address'($Dereference($t41)->$authentication_key)); + + // assume Identical($t76, from_bcs::deserialize
($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t76 == $1_from_bcs_deserialize'address'($t72)); + + // account::update_auth_key_and_originating_address_table($t37, $t41, $t72) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:402:9+83 + assume {:print "$at(17,20499,20582)"} true; + call $t41 := $1_account_update_auth_key_and_originating_address_table($t37, $t41, $t72); + if ($abort_flag) { + assume {:print "$at(17,20499,20582)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:402:9+83 + assume {:print "$at(17,20499,20582)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t41), + $Dereference($t41)); + + // $t77 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 114, 111, 116, 97, 116, 101, 95, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 105, 111, 110, 95, 107, 101, 121, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:404:36+46 + assume {:print "$at(17,20620,20666)"} true; + $t77 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 114, 111, 116)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(101, 110, 116, 105)), MakeVec4(99, 97, 116, 105)), MakeVec4(111, 110, 95, 107)), MakeVec4(101, 121, 32, 124)), MakeVec4(32, 101, 120, 105)), MakeVec3(116, 101, 100)); + assume $IsValid'vec'u8''($t77); + + // $t78 := string::utf8($t77) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:404:23+60 + call $t78 := $1_string_utf8($t77); + if ($abort_flag) { + assume {:print "$at(17,20607,20667)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // debug::print($t78) on_abort goto L14 with $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:404:9+75 + call $1_debug_print'$1_string_String'($t78); + if ($abort_flag) { + assume {:print "$at(17,20593,20668)"} true; + $t36 := $abort_code; + assume {:print "$track_abort(24,31):", $t36} $t36 == $t36; + goto L14; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:405:5+1 + assume {:print "$at(17,20674,20675)"} true; +L13: + + // assume Identical($t79, select account::Account.authentication_key(global($t20))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:323:9+61 + assume {:print "$at(18,16491,16552)"} true; + assume ($t79 == $ResourceValue($1_account_Account_$memory, $t20)->$authentication_key); + + // assert Not(Not(exists[@49]($t20))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:261:9+33 + assume {:print "$at(18,13536,13569)"} true; + assert {:msg "assert_failed(18,13536,13569): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#49, $t20); + + // assert Not(And(Eq($t1, 0), Neq(Len($t2), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32)); + + // assert Not(And(Eq($t1, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t21), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:265:9+239 + assume {:print "$at(18,13746,13985)"} true; + assert {:msg "assert_failed(18,13746,13985): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t21->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t1, 1), Gt(Div($t28, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && (($t28 div 32) > 32)); + + // assert Not(And(Eq($t1, 1), Neq(Mod($t28, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t28 mod 32), 1)); + + // assert Not(And(Eq($t1, 1), { + // let from_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t21), from_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:270:9+243 + assume {:print "$at(18,14140,14383)"} true; + assert {:msg "assert_failed(18,14140,14383): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && (var from_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t21->$authentication_key, from_auth_key))); + + // assert Not(And(Neq($t1, 0), Neq($t1, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:276:9+79 + assume {:print "$at(18,14426,14505)"} true; + assert {:msg "assert_failed(18,14426,14505): function does not abort under this condition"} + !(!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1)); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:279:9+82 + assume {:print "$at(18,14612,14694)"} true; + assert {:msg "assert_failed(18,14612,14694): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t21->$authentication_key); + + // assert Not(And(Eq($t1, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t5), pack ed25519::UnvalidatedPublicKey($t2), $t23)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:232:9+236 + assume {:print "$at(18,12182,12418)"} true; + assert {:msg "assert_failed(18,12182,12418): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t5), $1_ed25519_UnvalidatedPublicKey($t2), $t23)); + + // assert Not(And(Eq($t1, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t5), pack multi_ed25519::UnvalidatedPublicKey($t2), $t23)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:240:9+260 + assume {:print "$at(18,12682,12942)"} true; + assert {:msg "assert_failed(18,12682,12942): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t5), $1_multi_ed25519_UnvalidatedPublicKey($t2), $t23)); + + // assert Not(And(Neq($t1, 0), Neq($t1, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:245:9+69 + assume {:print "$at(18,12951,13020)"} true; + assert {:msg "assert_failed(18,12951,13020): function does not abort under this condition"} + !(!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1)); + + // assert Not(And(Eq($t1, 0), Neq(Len($t2), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32)); + + // assert Not(And(Eq($t1, 0), Neq(Len($t5), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t5), 64)); + + // assert Not(And(Eq($t1, 1), Gt(Div($t29, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && (($t29 div 32) > 32)); + + // assert Not(And(Eq($t1, 1), Neq(Mod($t29, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t29 mod 32), 1)); + + // assert Not(And(Eq($t1, 1), Neq(Mod(Len($t5), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$IsEqual'num'((LenVec($t5) mod 64), 4)); + + // assert Not(And(Eq($t3, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t6), pack ed25519::UnvalidatedPublicKey($t4), $t23)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:232:9+236 + assume {:print "$at(18,12182,12418)"} true; + assert {:msg "assert_failed(18,12182,12418): function does not abort under this condition"} + !($IsEqual'u8'($t3, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t6), $1_ed25519_UnvalidatedPublicKey($t4), $t23)); + + // assert Not(And(Eq($t3, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t6), pack multi_ed25519::UnvalidatedPublicKey($t4), $t23)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:240:9+260 + assume {:print "$at(18,12682,12942)"} true; + assert {:msg "assert_failed(18,12682,12942): function does not abort under this condition"} + !($IsEqual'u8'($t3, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t6), $1_multi_ed25519_UnvalidatedPublicKey($t4), $t23)); + + // assert Not(And(Neq($t3, 0), Neq($t3, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:245:9+69 + assume {:print "$at(18,12951,13020)"} true; + assert {:msg "assert_failed(18,12951,13020): function does not abort under this condition"} + !(!$IsEqual'u8'($t3, 0) && !$IsEqual'u8'($t3, 1)); + + // assert Not(And(Eq($t3, 0), Neq(Len($t4), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t4), 32)); + + // assert Not(And(Eq($t3, 0), Neq(Len($t6), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t6), 64)); + + // assert Not(And(Eq($t3, 1), Gt(Div($t30, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t3, 1) && (($t30 div 32) > 32)); + + // assert Not(And(Eq($t3, 1), Neq(Mod($t30, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t3, 1) && !$IsEqual'num'(($t30 mod 32), 1)); + + // assert Not(And(Eq($t3, 1), Neq(Mod(Len($t6), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t3, 1) && !$IsEqual'num'((LenVec($t6) mod 64), 4)); + + // assert Not(Not(exists[@50](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:310:9+59 + assume {:print "$at(18,15893,15952)"} true; + assert {:msg "assert_failed(18,15893,15952): function does not abort under this condition"} + !!$ResourceExists($1_account_OriginatingAddress_$memory#50, 1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:311:9+82 + assume {:print "$at(18,15961,16043)"} true; + assert {:msg "assert_failed(18,15961,16043): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t21->$authentication_key); + + // assert Not(And(table::spec_contains[]($t26, $t22), Neq
(table::spec_get[]($t26, $t22), $t24))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:312:9+138 + assume {:print "$at(18,16052,16190)"} true; + assert {:msg "assert_failed(18,16052,16190): function does not abort under this condition"} + !($1_table_spec_contains'address_address'($t26, $t22) && !$IsEqual'address'($1_table_spec_get'address_address'($t26, $t22), $t24)); + + // assert Not(Not(from_bcs::deserializable[]
($t25))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:315:9+66 + assume {:print "$at(18,16200,16266)"} true; + assert {:msg "assert_failed(18,16200,16266): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t25); + + // assert Not(And(Neq
($t22, $t27), table::spec_contains[]($t26, $t27))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:317:9+91 + assume {:print "$at(18,16276,16367)"} true; + assert {:msg "assert_failed(18,16276,16367): function does not abort under this condition"} + !(!$IsEqual'address'($t22, $t27) && $1_table_spec_contains'address_address'($t26, $t27)); + + // assert Not(Not(exists[@50](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:682:9+59 + assume {:print "$at(18,33902,33961)"} true; + assert {:msg "assert_failed(18,33902,33961): function does not abort under this condition"} + !!$ResourceExists($1_account_OriginatingAddress_$memory#50, 1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:683:9+82 + assume {:print "$at(18,33970,34052)"} true; + assert {:msg "assert_failed(18,33970,34052): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t21->$authentication_key); + + // assert Not(And(table::spec_contains[]($t31, $t32), Neq
(table::spec_get[]($t31, $t32), $t20))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:684:9+138 + assume {:print "$at(18,34061,34199)"} true; + assert {:msg "assert_failed(18,34061,34199): function does not abort under this condition"} + !($1_table_spec_contains'address_address'($t31, $t32) && !$IsEqual'address'($1_table_spec_get'address_address'($t31, $t32), $t20)); + + // assert Not(Not(from_bcs::deserializable[]
($t25))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:686:9+66 + assume {:print "$at(18,34208,34274)"} true; + assert {:msg "assert_failed(18,34208,34274): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t25); + + // assert Not(And(Neq
($t32, $t33), table::spec_contains[]($t31, $t33))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:687:9+91 + assume {:print "$at(18,34283,34374)"} true; + assert {:msg "assert_failed(18,34283,34374): function does not abort under this condition"} + !(!$IsEqual'address'($t32, $t33) && $1_table_spec_contains'address_address'($t31, $t33)); + + // assert table::spec_contains(select account::OriginatingAddress.address_map(global(0x1)), from_bcs::deserialize
($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:689:9+143 + assume {:print "$at(18,34384,34527)"} true; + assert {:msg "assert_failed(18,34384,34527): post-condition does not hold"} + $1_table_spec_contains'address_address'($ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map, $1_from_bcs_deserialize'address'($t25)); + + // assert Eq>($t79, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:324:9+40 + assume {:print "$at(18,16561,16601)"} true; + assert {:msg "assert_failed(18,16561,16601): post-condition does not hold"} + $IsEqual'vec'u8''($t79, $t25); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:324:9+40 + return; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:405:5+1 + assume {:print "$at(17,20674,20675)"} true; +L14: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@49]($t20)), And(Eq($t1, 0), Neq(Len($t2), 32))), And(Eq($t1, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t21), expected_auth_key) + // })), And(Eq($t1, 1), Gt(Div($t28, 32), 32))), And(Eq($t1, 1), Neq(Mod($t28, 32), 1))), And(Eq($t1, 1), { + // let from_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t21), from_auth_key) + // })), And(Neq($t1, 0), Neq($t1, 1))), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))), And(Eq($t1, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t5), pack ed25519::UnvalidatedPublicKey($t2), $t23)))), And(Eq($t1, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t5), pack multi_ed25519::UnvalidatedPublicKey($t2), $t23)))), And(Neq($t1, 0), Neq($t1, 1))), And(Eq($t1, 0), Neq(Len($t2), 32))), And(Eq($t1, 0), Neq(Len($t5), 64))), And(Eq($t1, 1), Gt(Div($t29, 32), 32))), And(Eq($t1, 1), Neq(Mod($t29, 32), 1))), And(Eq($t1, 1), Neq(Mod(Len($t5), 64), 4))), And(Eq($t3, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t6), pack ed25519::UnvalidatedPublicKey($t4), $t23)))), And(Eq($t3, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t6), pack multi_ed25519::UnvalidatedPublicKey($t4), $t23)))), And(Neq($t3, 0), Neq($t3, 1))), And(Eq($t3, 0), Neq(Len($t4), 32))), And(Eq($t3, 0), Neq(Len($t6), 64))), And(Eq($t3, 1), Gt(Div($t30, 32), 32))), And(Eq($t3, 1), Neq(Mod($t30, 32), 1))), And(Eq($t3, 1), Neq(Mod(Len($t6), 64), 4))), Not(exists[@50](0x1))), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))), And(table::spec_contains[]($t26, $t22), Neq
(table::spec_get[]($t26, $t22), $t24))), Not(from_bcs::deserializable[]
($t25))), And(Neq
($t22, $t27), table::spec_contains[]($t26, $t27))), Not(exists[@50](0x1))), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t21)))), And(table::spec_contains[]($t31, $t32), Neq
(table::spec_get[]($t31, $t32), $t20))), Not(from_bcs::deserializable[]
($t25))), And(Neq
($t32, $t33), table::spec_contains[]($t31, $t33))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:250:5+3454 + assume {:print "$at(18,13154,16608)"} true; + assert {:msg "assert_failed(18,13154,16608): abort not covered by any of the `aborts_if` clauses"} + (((((((((((((((((((((((((((((((((!$ResourceExists($1_account_Account_$memory#49, $t20) || ($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32))) || ($IsEqual'u8'($t1, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t21->$authentication_key, expected_auth_key)))) || ($IsEqual'u8'($t1, 1) && (($t28 div 32) > 32))) || ($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t28 mod 32), 1))) || ($IsEqual'u8'($t1, 1) && (var from_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t21->$authentication_key, from_auth_key)))) || (!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1))) || !$1_from_bcs_deserializable'address'($t21->$authentication_key)) || ($IsEqual'u8'($t1, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t5), $1_ed25519_UnvalidatedPublicKey($t2), $t23))) || ($IsEqual'u8'($t1, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t5), $1_multi_ed25519_UnvalidatedPublicKey($t2), $t23))) || (!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1))) || ($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32))) || ($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t5), 64))) || ($IsEqual'u8'($t1, 1) && (($t29 div 32) > 32))) || ($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t29 mod 32), 1))) || ($IsEqual'u8'($t1, 1) && !$IsEqual'num'((LenVec($t5) mod 64), 4))) || ($IsEqual'u8'($t3, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t6), $1_ed25519_UnvalidatedPublicKey($t4), $t23))) || ($IsEqual'u8'($t3, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t6), $1_multi_ed25519_UnvalidatedPublicKey($t4), $t23))) || (!$IsEqual'u8'($t3, 0) && !$IsEqual'u8'($t3, 1))) || ($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t4), 32))) || ($IsEqual'u8'($t3, 0) && !$IsEqual'num'(LenVec($t6), 64))) || ($IsEqual'u8'($t3, 1) && (($t30 div 32) > 32))) || ($IsEqual'u8'($t3, 1) && !$IsEqual'num'(($t30 mod 32), 1))) || ($IsEqual'u8'($t3, 1) && !$IsEqual'num'((LenVec($t6) mod 64), 4))) || !$ResourceExists($1_account_OriginatingAddress_$memory#50, 1)) || !$1_from_bcs_deserializable'address'($t21->$authentication_key)) || ($1_table_spec_contains'address_address'($t26, $t22) && !$IsEqual'address'($1_table_spec_get'address_address'($t26, $t22), $t24))) || !$1_from_bcs_deserializable'address'($t25)) || (!$IsEqual'address'($t22, $t27) && $1_table_spec_contains'address_address'($t26, $t27))) || !$ResourceExists($1_account_OriginatingAddress_$memory#50, 1)) || !$1_from_bcs_deserializable'address'($t21->$authentication_key)) || ($1_table_spec_contains'address_address'($t31, $t32) && !$IsEqual'address'($1_table_spec_get'address_address'($t31, $t32), $t20))) || !$1_from_bcs_deserializable'address'($t25)) || (!$IsEqual'address'($t32, $t33) && $1_table_spec_contains'address_address'($t31, $t33))); + + // abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:250:5+3454 + $abort_code := $t36; + $abort_flag := true; + return; + + // label L19 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L19: + + // drop($t41) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L16 at :1:1+10 + goto L16; + + // label L20 at :1:1+10 +L20: + + // drop($t41) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L18 at :1:1+10 + goto L18; + +} + +// fun account::rotate_authentication_key_call [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308:5+176 +procedure {:timeLimit 80} $1_account_rotate_authentication_key_call$verify(_$t0: $signer, _$t1: Vec (int)) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_account_Account; + var $t0: $signer; + var $t1: Vec (int); + var $1_account_Account_$modifies: [int]bool; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#51: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308:5+1 + assume {:print "$at(17,14809,14810)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:208:9+39 + assume {:print "$at(18,10782,10821)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume CanModify($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:213:9+31 + assume {:print "$at(18,11017,11048)"} true; + assume $1_account_Account_$modifies[$t2]; + + // @51 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:213:9+31 + $1_account_Account_$memory#51 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308:5+1 + assume {:print "$at(17,14809,14810)"} true; + assume {:print "$track_local(24,32,0):", $t0} $t0 == $t0; + + // trace_local[new_auth_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:308:5+1 + assume {:print "$track_local(24,32,1):", $t1} $t1 == $t1; + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assert CanModify($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:309:9+57 + assume {:print "$at(17,14921,14978)"} true; + assert {:msg "assert_failed(17,14921,14978): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t3]; + + // account::rotate_authentication_key_internal($t0, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:309:9+57 + call $1_account_rotate_authentication_key_internal($t0, $t1); + if ($abort_flag) { + assume {:print "$at(17,14921,14978)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(24,32):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:310:5+1 + assume {:print "$at(17,14984,14985)"} true; +L1: + + // assume Identical($t5, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:210:9+50 + assume {:print "$at(18,10862,10912)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t2)); + + // assert Not(Not(exists[@51]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:211:9+33 + assume {:print "$at(18,10921,10954)"} true; + assert {:msg "assert_failed(18,10921,10954): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#51, $t2); + + // assert Not(Neq(vector::$length[]($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:212:9+45 + assume {:print "$at(18,10963,11008)"} true; + assert {:msg "assert_failed(18,10963,11008): function does not abort under this condition"} + !!$IsEqual'u64'($1_vector_$length'u8'($t1), 32); + + // assert Eq>(select account::Account.authentication_key($t5), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:214:9+60 + assume {:print "$at(18,11057,11117)"} true; + assert {:msg "assert_failed(18,11057,11117): post-condition does not hold"} + $IsEqual'vec'u8''($t5->$authentication_key, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:214:9+60 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:310:5+1 + assume {:print "$at(17,14984,14985)"} true; +L2: + + // assert Or(Not(exists[@51]($t2)), Neq(vector::$length[]($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:207:5+431 + assume {:print "$at(18,10692,11123)"} true; + assert {:msg "assert_failed(18,10692,11123): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#51, $t2) || !$IsEqual'u64'($1_vector_$length'u8'($t1), 32)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:207:5+431 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun account::rotate_authentication_key_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume {:print "$at(17,13765,13766)"} true; + assume {:print "$track_local(24,33,0):", $t0} $t0 == $t0; + + // trace_local[new_auth_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume {:print "$track_local(24,33,1):", $t1} $t1 == $t1; + + // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:293:20+27 + assume {:print "$at(17,13901,13928)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,13901,13928)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:293:13+4 + assume {:print "$track_local(24,33,3):", $t5} $t5 == $t5; + + // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:17+15 + assume {:print "$at(17,13946,13961)"} true; + call $t7 := $1_account_exists_at($t5); + if ($abort_flag) { + assume {:print "$at(17,13946,13961)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + assume {:print "$at(17,13938,14005)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:51+23 +L0: + + // $t8 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:51+23 + assume {:print "$at(17,13980,14003)"} true; + $t8 := 2; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:34+41 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(17,13963,14004)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + assume {:print "$at(17,13938,14005)"} true; + assume {:print "$track_abort(24,33):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + $t6 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:28+13 + assume {:print "$at(17,14051,14064)"} true; +L2: + + // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:13+29 + assume {:print "$at(17,14036,14065)"} true; + call $t10 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,14036,14065)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:46+2 + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:43+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:37+29 + assume {:print "$at(17,14109,14138)"} true; +L3: + + // $t13 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:37+29 + assume {:print "$at(17,14109,14138)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(17,14085,14139)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + assume {:print "$track_abort(24,33):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:59+4 + assume {:print "$at(17,14209,14213)"} true; +L5: + + // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:32+17 + assume {:print "$at(17,14182,14199)"} 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(17,14182,14199)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[account_resource]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:13+16 + $temp_0'$1_account_Account' := $Dereference($t15); + assume {:print "$track_local(24,33,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t16 := borrow_field.authentication_key($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+35 + assume {:print "$at(17,14224,14259)"} true; + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$authentication_key); + + // write_ref($t16, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + $t16 := $UpdateMutation($t16, $t1); + + // write_back[Reference($t15).authentication_key (vector)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + $t15 := $UpdateMutation($t15, $Update'$1_account_Account'_authentication_key($Dereference($t15), $Dereference($t16))); + + // pack_ref_deep($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + + // write_back[account::Account@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 + assume {:print "$at(17,14280,14281)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 + assume {:print "$at(17,14280,14281)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 +L7: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 + assume {:print "$at(17,14280,14281)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun account::rotate_authentication_key_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+516 +procedure {:timeLimit 80} $1_account_rotate_authentication_key_internal$verify(_$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 $t17: $1_account_Account; + 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); + var $1_account_Account_$memory#20: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume {:print "$at(17,13765,13766)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume CanModify($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:203:9+31 + assume {:print "$at(18,10580,10611)"} true; + assume $1_account_Account_$modifies[$t4]; + + // @20 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:203:9+31 + $1_account_Account_$memory#20 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume {:print "$at(17,13765,13766)"} true; + assume {:print "$track_local(24,33,0):", $t0} $t0 == $t0; + + // trace_local[new_auth_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:292:5+1 + assume {:print "$track_local(24,33,1):", $t1} $t1 == $t1; + + // $t5 := signer::address_of($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:293:20+27 + assume {:print "$at(17,13901,13928)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,13901,13928)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:293:13+4 + assume {:print "$track_local(24,33,3):", $t5} $t5 == $t5; + + // $t7 := account::exists_at($t5) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:17+15 + assume {:print "$at(17,13946,13961)"} true; + call $t7 := $1_account_exists_at($t5); + if ($abort_flag) { + assume {:print "$at(17,13946,13961)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + assume {:print "$at(17,13938,14005)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:51+23 +L0: + + // $t8 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:51+23 + assume {:print "$at(17,13980,14003)"} true; + $t8 := 2; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:34+41 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(17,13963,14004)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + assume {:print "$at(17,13938,14005)"} true; + assume {:print "$track_abort(24,33):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + $t6 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:294:9+67 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:28+13 + assume {:print "$at(17,14051,14064)"} true; +L2: + + // $t10 := vector::length($t1) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:13+29 + assume {:print "$at(17,14036,14065)"} true; + call $t10 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(17,14036,14065)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:46+2 + $t11 := 32; + assume $IsValid'u64'($t11); + + // $t12 := ==($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:296:43+2 + $t12 := $IsEqual'u64'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:37+29 + assume {:print "$at(17,14109,14138)"} true; +L3: + + // $t13 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:37+29 + assume {:print "$at(17,14109,14138)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:297:13+54 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(17,14085,14139)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + assume {:print "$at(17,14015,14149)"} true; + assume {:print "$track_abort(24,33):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:295:9+134 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:59+4 + assume {:print "$at(17,14209,14213)"} true; +L5: + + // assert CanModify($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:32+17 + assume {:print "$at(17,14182,14199)"} true; + assert {:msg "assert_failed(17,14182,14199): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t5]; + + // $t15 := borrow_global($t5) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:32+17 + 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(17,14182,14199)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(24,33):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[account_resource]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:299:13+16 + $temp_0'$1_account_Account' := $Dereference($t15); + assume {:print "$track_local(24,33,2):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t16 := borrow_field.authentication_key($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+35 + assume {:print "$at(17,14224,14259)"} true; + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$authentication_key); + + // write_ref($t16, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + $t16 := $UpdateMutation($t16, $t1); + + // write_back[Reference($t15).authentication_key (vector)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + $t15 := $UpdateMutation($t15, $Update'$1_account_Account'_authentication_key($Dereference($t15), $Dereference($t16))); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t15)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t15)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t15)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t15)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:300:9+50 + assume {:print "$at(17,14224,14274)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 + assume {:print "$at(17,14280,14281)"} true; +L6: + + // assume Identical($t17, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:200:9+50 + assume {:print "$at(18,10425,10475)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t4)); + + // assert Not(Not(exists[@20]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:201:9+33 + assume {:print "$at(18,10484,10517)"} true; + assert {:msg "assert_failed(18,10484,10517): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#20, $t4); + + // assert Not(Neq(vector::$length[]($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:202:9+45 + assume {:print "$at(18,10526,10571)"} true; + assert {:msg "assert_failed(18,10526,10571): function does not abort under this condition"} + !!$IsEqual'u64'($1_vector_$length'u8'($t1), 32); + + // assert Eq>(select account::Account.authentication_key($t17), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:204:9+60 + assume {:print "$at(18,10620,10680)"} true; + assert {:msg "assert_failed(18,10620,10680): post-condition does not hold"} + $IsEqual'vec'u8''($t17->$authentication_key, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:204:9+60 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:301:5+1 + assume {:print "$at(17,14280,14281)"} true; +L7: + + // assert Or(Not(exists[@20]($t4)), Neq(vector::$length[]($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:197:5+435 + assume {:print "$at(18,10251,10686)"} true; + assert {:msg "assert_failed(18,10251,10686): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_account_Account_$memory#20, $t4) || !$IsEqual'u64'($1_vector_$length'u8'($t1), 32)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:197:5+435 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun account::rotate_authentication_key_with_rotation_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+2005 +procedure {:timeLimit 80} $1_account_rotate_authentication_key_with_rotation_capability$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: Vec (int), _$t4: Vec (int)) returns () +{ + // declare local variables + var $t5: $1_account_RotationProofChallenge; + var $t6: int; + var $t7: int; + var $t8: Vec (int); + var $t9: $1_account_Account; + var $t10: $Mutation ($1_account_Account); + var $t11: int; + var $t12: $1_account_Account; + var $t13: int; + var $t14: $1_account_RotationProofChallenge; + var $t15: Vec (int); + var $t16: Table int (int); + var $t17: int; + var $t18: int; + var $t19: Table int (int); + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_account_Account; + var $t28: $1_account_CapabilityOffer'$1_account_RotationCapability'; + var $t29: $1_option_Option'address'; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: Vec (int); + var $t34: Vec (int); + var $t35: int; + var $t36: int; + var $t37: $1_account_RotationProofChallenge; + var $t38: int; + var $t39: Vec (int); + var $t40: bool; + var $t41: $Mutation ($1_account_Account); + var $t42: Table int (int); + var $t43: int; + var $t44: int; + var $t45: Vec (int); + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: Vec (int); + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_account_RotationProofChallenge': $1_account_RotationProofChallenge; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#52: $Memory $1_account_Account; + var $1_account_OriginatingAddress_$memory#53: $Memory $1_account_OriginatingAddress; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$at(17,20681,20682)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume $IsValid'u8'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume $IsValid'vec'u8''($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: account::OriginatingAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_OriginatingAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_OriginatingAddress_$memory, $a_0); + ($IsValid'$1_account_OriginatingAddress'($rsc)))); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:336:9+59 + assume {:print "$at(18,16937,16996)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:337:9+77 + assume {:print "$at(18,17005,17082)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t1)); + + // assume Identical($t13, from_bcs::deserialize
(select account::Account.authentication_key($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:339:9+96 + assume {:print "$at(18,17190,17286)"} true; + assume ($t13 == $1_from_bcs_deserialize'address'($t12->$authentication_key)); + + // assume Identical($t14, pack account::RotationProofChallenge(select account::Account.sequence_number(global($t11)), $t1, $t13, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:341:9+280 + assume {:print "$at(18,17349,17629)"} true; + assume ($t14 == $1_account_RotationProofChallenge($ResourceValue($1_account_Account_$memory, $t11)->$sequence_number, $t1, $t13, $t3)); + + // assume Identical($t15, account::spec_assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:357:9+149 + assume {:print "$at(18,18053,18202)"} true; + assume ($t15 == $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t14)); + + // assume Identical($t16, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:358:9+78 + assume {:print "$at(18,18211,18289)"} true; + assume ($t16 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t17, from_bcs::deserialize
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:367:9+71 + assume {:print "$at(18,18783,18854)"} true; + assume ($t17 == $1_from_bcs_deserialize'address'($t15)); + + // assume Identical($t18, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t18 == LenVec($t3)); + + // assume Identical($t19, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t19 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t20, from_bcs::deserialize
(select account::Account.authentication_key($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t20 == $1_from_bcs_deserialize'address'($t12->$authentication_key)); + + // assume Identical($t21, from_bcs::deserialize
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t21 == $1_from_bcs_deserialize'address'($t15)); + + // @52 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$at(17,20681,20682)"} true; + $1_account_Account_$memory#52 := $1_account_Account_$memory; + + // @53 := save_mem(account::OriginatingAddress) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + $1_account_OriginatingAddress_$memory#53 := $1_account_OriginatingAddress_$memory; + + // trace_local[delegate_signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$track_local(24,34,0):", $t0} $t0 == $t0; + + // trace_local[rotation_cap_offerer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$track_local(24,34,1):", $t1} $t1 == $t1; + + // trace_local[new_scheme]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$track_local(24,34,2):", $t2} $t2 == $t2; + + // trace_local[new_public_key_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$track_local(24,34,3):", $t3} $t3 == $t3; + + // trace_local[cap_update_table]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:407:5+1 + assume {:print "$track_local(24,34,4):", $t4} $t4 == $t4; + + // $t22 := account::exists_at($t1) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:17+39 + assume {:print "$at(17,20995,21034)"} true; + call $t22 := $1_account_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(17,20995,21034)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 + assume {:print "$at(17,20987,21086)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 +L0: + + // $t24 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:75+31 + assume {:print "$at(17,21053,21084)"} true; + $t24 := 17; + assume $IsValid'u64'($t24); + + // $t25 := error::not_found($t24) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:58+49 + call $t25 := $1_error_not_found($t24); + if ($abort_flag) { + assume {:print "$at(17,21036,21085)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 + assume {:print "$at(17,20987,21086)"} true; + assume {:print "$track_abort(24,34):", $t25} $t25 == $t25; + + // $t23 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 + $t23 := $t25; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:414:9+99 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:417:51+15 + assume {:print "$at(17,21254,21269)"} true; +L2: + + // $t26 := signer::address_of($t0) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:417:32+35 + assume {:print "$at(17,21235,21270)"} true; + call $t26 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(17,21235,21270)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[delegate_address]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:417:13+16 + assume {:print "$track_local(24,34,7):", $t26} $t26 == $t26; + + // $t27 := get_global($t1) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:418:40+13 + assume {:print "$at(17,21311,21324)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t27 := $ResourceValue($1_account_Account_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(17,21311,21324)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[offerer_account_resource]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:418:13+24 + assume {:print "$track_local(24,34,9):", $t27} $t27 == $t27; + + // $t28 := get_field.rotation_capability_offer($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:31+50 + assume {:print "$at(17,21412,21462)"} true; + $t28 := $t27->$rotation_capability_offer; + + // $t29 := get_field>.for($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:30+55 + $t29 := $t28->$for; + + // $t30 := opaque begin: option::contains
($t29, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:13+92 + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:13+92 + assume $IsValid'bool'($t30); + + // assume Eq($t30, option::spec_contains
($t29, $t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:13+92 + assume $IsEqual'bool'($t30, $1_option_spec_contains'address'($t29, $t26)); + + // $t30 := opaque end: option::contains
($t29, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:420:13+92 + + // if ($t30) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 + assume {:print "$at(17,21373,21562)"} true; + if ($t30) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 + assume {:print "$at(17,21373,21562)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 +L3: + + // $t31 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:421:30+34 + assume {:print "$at(17,21517,21551)"} true; + $t31 := 18; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:421:13+52 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(17,21500,21552)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 + assume {:print "$at(17,21373,21562)"} true; + assume {:print "$track_abort(24,34):", $t32} $t32 == $t32; + + // $t23 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 + $t23 := $t32; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:419:9+189 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:424:72+24 + assume {:print "$at(17,21636,21660)"} true; +L5: + + // $t33 := get_field.authentication_key($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:424:72+43 + assume {:print "$at(17,21636,21679)"} true; + $t33 := $t27->$authentication_key; + + // $t34 := bcs_util::truncate_16($t33) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:424:50+66 + call $t34 := $1_bcs_util_truncate_16($t33); + if ($abort_flag) { + assume {:print "$at(17,21614,21680)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // $t35 := from_bcs::to_address($t34) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:424:29+88 + call $t35 := $1_from_bcs_to_address($t34); + if ($abort_flag) { + assume {:print "$at(17,21593,21681)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[curr_auth_key]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:424:13+13 + assume {:print "$track_local(24,34,6):", $t35} $t35 == $t35; + + // $t36 := account::get_sequence_number($t26) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:426:30+37 + assume {:print "$at(17,21761,21798)"} true; + call $t36 := $1_account_get_sequence_number($t26); + if ($abort_flag) { + assume {:print "$at(17,21761,21798)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // $t37 := pack account::RotationProofChallenge($t36, $t1, $t35, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:425:25+251 + assume {:print "$at(17,21707,21958)"} true; + $t37 := $1_account_RotationProofChallenge($t36, $t1, $t35, $t3); + + // trace_local[challenge]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:425:13+9 + assume {:print "$track_local(24,34,5):", $t37} $t37 == $t37; + + // assume Identical($t38, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t38 == LenVec($t3)); + + // $t39 := opaque begin: account::assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + assume {:print "$at(17,22122,22298)"} true; + + // assume Identical($t40, Or(Or(Or(Or(Or(Or(Or(And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t(pack ed25519::Signature($t4), pack ed25519::UnvalidatedPublicKey($t3), $t37))), And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t(pack multi_ed25519::Signature($t4), pack multi_ed25519::UnvalidatedPublicKey($t3), $t37)))), And(Neq($t2, 0), Neq($t2, 1))), And(Eq($t2, 0), Neq(Len($t3), 32))), And(Eq($t2, 0), Neq(Len($t4), 64))), And(Eq($t2, 1), Gt(Div($t38, 32), 32))), And(Eq($t2, 1), Neq(Mod($t38, 32), 1))), And(Eq($t2, 1), Neq(Mod(Len($t4), 64), 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + assume ($t40 == (((((((($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t4), $1_ed25519_UnvalidatedPublicKey($t3), $t37)) || ($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t4), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t37))) || (!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t4), 64))) || ($IsEqual'u8'($t2, 1) && (($t38 div 32) > 32))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t38 mod 32), 1))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t4) mod 64), 4)))); + + // if ($t40) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + if ($t40) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 +L9: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + assume {:print "$at(17,22122,22298)"} true; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 +L8: + + // assume WellFormed($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + assume {:print "$at(17,22122,22298)"} true; + assume $IsValid'vec'u8''($t39); + + // assume Eq>($t39, account::spec_assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + assume $IsEqual'vec'u8''($t39, $1_account_spec_assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t37)); + + // $t39 := opaque end: account::assert_valid_rotation_proof_signature_and_get_auth_key($t2, $t3, $t4, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:28+176 + + // trace_local[new_auth_key]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:433:13+12 + assume {:print "$track_local(24,34,8):", $t39} $t39 == $t39; + + // $t41 := borrow_global($t1) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:441:40+17 + assume {:print "$at(17,22452,22469)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t41 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(17,22452,22469)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[offerer_account_resource#1]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:441:13+24 + $temp_0'$1_account_Account' := $Dereference($t41); + assume {:print "$track_local(24,34,10):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // assume Identical($t42, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t42 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t43, from_bcs::deserialize
(select account::Account.authentication_key($t41))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t43 == $1_from_bcs_deserialize'address'($Dereference($t41)->$authentication_key)); + + // assume Identical($t44, from_bcs::deserialize
($t39)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t44 == $1_from_bcs_deserialize'address'($t39)); + + // account::update_auth_key_and_originating_address_table($t1, $t41, $t39) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:442:9+161 + assume {:print "$at(17,22518,22679)"} true; + call $t41 := $1_account_update_auth_key_and_originating_address_table($t1, $t41, $t39); + if ($abort_flag) { + assume {:print "$at(17,22518,22679)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(24,34):", $t23} $t23 == $t23; + goto L7; + } + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t41)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t41)->$signer_capability_offer->$for->$vec) <= 1); + + // write_back[account::Account@]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:442:9+161 + assume {:print "$at(17,22518,22679)"} true; + $1_account_Account_$memory := $ResourceUpdate($1_account_Account_$memory, $GlobalLocationAddress($t41), + $Dereference($t41)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:447:5+1 + assume {:print "$at(17,22685,22686)"} true; +L6: + + // assume Identical($t45, select account::Account.authentication_key(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:375:9+85 + assume {:print "$at(18,19158,19243)"} true; + assume ($t45 == $ResourceValue($1_account_Account_$memory, $t1)->$authentication_key); + + // assert Not(Not(exists[@52]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:335:9+57 + assume {:print "$at(18,16871,16928)"} true; + assert {:msg "assert_failed(18,16871,16928): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#52, $t1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:338:9+90 + assume {:print "$at(18,17091,17181)"} true; + assert {:msg "assert_failed(18,17091,17181): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t12->$authentication_key); + + // assert Not(Not(exists[@52]($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:340:9+45 + assume {:print "$at(18,17295,17340)"} true; + assert {:msg "assert_failed(18,17295,17340): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#52, $t11); + + // assert Not(Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t12)), $t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:348:9+107 + assume {:print "$at(18,17671,17778)"} true; + assert {:msg "assert_failed(18,17671,17778): function does not abort under this condition"} + !!$1_option_spec_contains'address'($t12->$rotation_capability_offer->$for, $t11); + + // assert Not(And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t4), pack ed25519::UnvalidatedPublicKey($t3), $t14)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:232:9+236 + assume {:print "$at(18,12182,12418)"} true; + assert {:msg "assert_failed(18,12182,12418): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t4), $1_ed25519_UnvalidatedPublicKey($t3), $t14)); + + // assert Not(And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t4), pack multi_ed25519::UnvalidatedPublicKey($t3), $t14)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:240:9+260 + assume {:print "$at(18,12682,12942)"} true; + assert {:msg "assert_failed(18,12682,12942): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t4), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t14)); + + // assert Not(And(Neq($t2, 0), Neq($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:245:9+69 + assume {:print "$at(18,12951,13020)"} true; + assert {:msg "assert_failed(18,12951,13020): function does not abort under this condition"} + !(!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1)); + + // assert Not(And(Eq($t2, 0), Neq(Len($t3), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32)); + + // assert Not(And(Eq($t2, 0), Neq(Len($t4), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t4), 64)); + + // assert Not(And(Eq($t2, 1), Gt(Div($t18, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && (($t18 div 32) > 32)); + + // assert Not(And(Eq($t2, 1), Neq(Mod($t18, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t18 mod 32), 1)); + + // assert Not(And(Eq($t2, 1), Neq(Mod(Len($t4), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t4) mod 64), 4)); + + // assert Not(Not(exists[@53](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:361:9+59 + assume {:print "$at(18,18381,18440)"} true; + assert {:msg "assert_failed(18,18381,18440): function does not abort under this condition"} + !!$ResourceExists($1_account_OriginatingAddress_$memory#53, 1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:362:9+90 + assume {:print "$at(18,18449,18539)"} true; + assert {:msg "assert_failed(18,18449,18539): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t12->$authentication_key); + + // assert Not(And(table::spec_contains[]($t16, $t13), Neq
(table::spec_get[]($t16, $t13), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:363:9+150 + assume {:print "$at(18,18548,18698)"} true; + assert {:msg "assert_failed(18,18548,18698): function does not abort under this condition"} + !($1_table_spec_contains'address_address'($t16, $t13) && !$IsEqual'address'($1_table_spec_get'address_address'($t16, $t13), $t1)); + + // assert Not(Not(from_bcs::deserializable[]
($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:366:9+66 + assume {:print "$at(18,18708,18774)"} true; + assert {:msg "assert_failed(18,18708,18774): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t15); + + // assert Not(And(Neq
($t13, $t17), table::spec_contains[]($t16, $t17))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:369:9+91 + assume {:print "$at(18,18864,18955)"} true; + assert {:msg "assert_failed(18,18864,18955): function does not abort under this condition"} + !(!$IsEqual'address'($t13, $t17) && $1_table_spec_contains'address_address'($t16, $t17)); + + // assert Not(Not(exists[@53](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:682:9+59 + assume {:print "$at(18,33902,33961)"} true; + assert {:msg "assert_failed(18,33902,33961): function does not abort under this condition"} + !!$ResourceExists($1_account_OriginatingAddress_$memory#53, 1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:683:9+82 + assume {:print "$at(18,33970,34052)"} true; + assert {:msg "assert_failed(18,33970,34052): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t12->$authentication_key); + + // assert Not(And(table::spec_contains[]($t19, $t20), Neq
(table::spec_get[]($t19, $t20), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:684:9+138 + assume {:print "$at(18,34061,34199)"} true; + assert {:msg "assert_failed(18,34061,34199): function does not abort under this condition"} + !($1_table_spec_contains'address_address'($t19, $t20) && !$IsEqual'address'($1_table_spec_get'address_address'($t19, $t20), $t1)); + + // assert Not(Not(from_bcs::deserializable[]
($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:686:9+66 + assume {:print "$at(18,34208,34274)"} true; + assert {:msg "assert_failed(18,34208,34274): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t15); + + // assert Not(And(Neq
($t20, $t21), table::spec_contains[]($t19, $t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:687:9+91 + assume {:print "$at(18,34283,34374)"} true; + assert {:msg "assert_failed(18,34283,34374): function does not abort under this condition"} + !(!$IsEqual'address'($t20, $t21) && $1_table_spec_contains'address_address'($t19, $t21)); + + // assert table::spec_contains(select account::OriginatingAddress.address_map(global(0x1)), from_bcs::deserialize
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:689:9+143 + assume {:print "$at(18,34384,34527)"} true; + assert {:msg "assert_failed(18,34384,34527): post-condition does not hold"} + $1_table_spec_contains'address_address'($ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map, $1_from_bcs_deserialize'address'($t15)); + + // assert Eq>($t45, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:376:9+40 + assume {:print "$at(18,19252,19292)"} true; + assert {:msg "assert_failed(18,19252,19292): post-condition does not hold"} + $IsEqual'vec'u8''($t45, $t15); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:376:9+40 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:447:5+1 + assume {:print "$at(17,22685,22686)"} true; +L7: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@52]($t1)), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))), Not(exists[@52]($t11))), Not(option::spec_contains[]
(select account::CapabilityOffer.for>(select account::Account.rotation_capability_offer($t12)), $t11))), And(Eq($t2, 0), Not(ed25519::spec_signature_verify_strict_t[](pack ed25519::Signature($t4), pack ed25519::UnvalidatedPublicKey($t3), $t14)))), And(Eq($t2, 1), Not(multi_ed25519::spec_signature_verify_strict_t[](pack multi_ed25519::Signature($t4), pack multi_ed25519::UnvalidatedPublicKey($t3), $t14)))), And(Neq($t2, 0), Neq($t2, 1))), And(Eq($t2, 0), Neq(Len($t3), 32))), And(Eq($t2, 0), Neq(Len($t4), 64))), And(Eq($t2, 1), Gt(Div($t18, 32), 32))), And(Eq($t2, 1), Neq(Mod($t18, 32), 1))), And(Eq($t2, 1), Neq(Mod(Len($t4), 64), 4))), Not(exists[@53](0x1))), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))), And(table::spec_contains[]($t16, $t13), Neq
(table::spec_get[]($t16, $t13), $t1))), Not(from_bcs::deserializable[]
($t15))), And(Neq
($t13, $t17), table::spec_contains[]($t16, $t17))), Not(exists[@53](0x1))), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t12)))), And(table::spec_contains[]($t19, $t20), Neq
(table::spec_get[]($t19, $t20), $t1))), Not(from_bcs::deserializable[]
($t15))), And(Neq
($t20, $t21), table::spec_contains[]($t19, $t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:328:5+2684 + assume {:print "$at(18,16614,19298)"} true; + assert {:msg "assert_failed(18,16614,19298): abort not covered by any of the `aborts_if` clauses"} + (((((((((((((((((((((!$ResourceExists($1_account_Account_$memory#52, $t1) || !$1_from_bcs_deserializable'address'($t12->$authentication_key)) || !$ResourceExists($1_account_Account_$memory#52, $t11)) || !$1_option_spec_contains'address'($t12->$rotation_capability_offer->$for, $t11)) || ($IsEqual'u8'($t2, 0) && !$1_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_ed25519_Signature($t4), $1_ed25519_UnvalidatedPublicKey($t3), $t14))) || ($IsEqual'u8'($t2, 1) && !$1_multi_ed25519_spec_signature_verify_strict_t'$1_account_RotationProofChallenge'($1_multi_ed25519_Signature($t4), $1_multi_ed25519_UnvalidatedPublicKey($t3), $t14))) || (!$IsEqual'u8'($t2, 0) && !$IsEqual'u8'($t2, 1))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t3), 32))) || ($IsEqual'u8'($t2, 0) && !$IsEqual'num'(LenVec($t4), 64))) || ($IsEqual'u8'($t2, 1) && (($t18 div 32) > 32))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'(($t18 mod 32), 1))) || ($IsEqual'u8'($t2, 1) && !$IsEqual'num'((LenVec($t4) mod 64), 4))) || !$ResourceExists($1_account_OriginatingAddress_$memory#53, 1)) || !$1_from_bcs_deserializable'address'($t12->$authentication_key)) || ($1_table_spec_contains'address_address'($t16, $t13) && !$IsEqual'address'($1_table_spec_get'address_address'($t16, $t13), $t1))) || !$1_from_bcs_deserializable'address'($t15)) || (!$IsEqual'address'($t13, $t17) && $1_table_spec_contains'address_address'($t16, $t17))) || !$ResourceExists($1_account_OriginatingAddress_$memory#53, 1)) || !$1_from_bcs_deserializable'address'($t12->$authentication_key)) || ($1_table_spec_contains'address_address'($t19, $t20) && !$IsEqual'address'($1_table_spec_get'address_address'($t19, $t20), $t1))) || !$1_from_bcs_deserializable'address'($t15)) || (!$IsEqual'address'($t20, $t21) && $1_table_spec_contains'address_address'($t19, $t21))); + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:328:5+2684 + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun account::update_auth_key_and_originating_address_table [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+3203 +procedure {:inline 1} $1_account_update_auth_key_and_originating_address_table(_$t0: int, _$t1: $Mutation ($1_account_Account), _$t2: Vec (int)) returns ($ret0: $Mutation ($1_account_Account)) +{ + // declare local variables + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $Mutation (Table int (int)); + var $t8: int; + var $t9: int; + var $t10: Table int (int); + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: $1_string_String; + var $t15: int; + var $t16: int; + var $t17: $Mutation ($1_account_OriginatingAddress); + var $t18: $Mutation (Table int (int)); + var $t19: Vec (int); + var $t20: Vec (int); + var $t21: int; + var $t22: Table int (int); + var $t23: bool; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: Vec (int); + var $t29: int; + var $t30: Vec (int); + var $t31: $1_string_String; + var $t32: bool; + var $t33: Vec (int); + var $t34: $1_account_KeyRotation; + var $t35: $Mutation ($1_event_EventHandle'$1_account_KeyRotationEvent'); + var $t36: Vec (int); + var $t37: $1_account_KeyRotationEvent; + var $t38: $Mutation (Vec (int)); + var $t39: Vec (int); + var $t40: $1_string_String; + var $t0: int; + var $t1: $Mutation ($1_account_Account); + var $t2: Vec (int); + var $1_account_OriginatingAddress_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_table_Table'address_address'': Table int (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t10, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t10 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t11, from_bcs::deserialize
(select account::Account.authentication_key($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t11 == $1_from_bcs_deserialize'address'($Dereference($t1)->$authentication_key)); + + // assume Identical($t12, from_bcs::deserialize
($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t12 == $1_from_bcs_deserialize'address'($t2)); + + // trace_local[originating_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume {:print "$at(17,35442,35443)"} true; + assume {:print "$track_local(24,35,0):", $t0} $t0 == $t0; + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // trace_local[new_auth_key_vector]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume {:print "$track_local(24,35,2):", $t2} $t2 == $t2; + + // $t13 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:36+67 + assume {:print "$at(17,35680,35747)"} true; + $t13 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 101, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t13); + + // $t14 := string::utf8($t13) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:23+81 + call $t14 := $1_string_utf8($t13); + if ($abort_flag) { + assume {:print "$at(17,35667,35748)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // debug::print($t14) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:9+96 + call $1_debug_print'$1_string_String'($t14); + if ($abort_flag) { + assume {:print "$at(17,35653,35749)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // $t16 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:70+19 + assume {:print "$at(17,35821,35840)"} true; + $t16 := 1; + assume $IsValid'address'($t16); + + // $t17 := borrow_global($t16) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:32+17 + if (!$ResourceExists($1_account_OriginatingAddress_$memory, $t16)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_account_OriginatingAddress_$memory, $t16)); + } + if ($abort_flag) { + assume {:print "$at(17,35783,35800)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // $t18 := borrow_field.address_map($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:27+75 + $t18 := $ChildMutation($t17, 0, $Dereference($t17)->$address_map); + + // trace_local[address_map]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:13+11 + $temp_0'$1_table_Table'address_address'' := $Dereference($t18); + assume {:print "$track_local(24,35,7):", $temp_0'$1_table_Table'address_address''} $temp_0'$1_table_Table'address_address'' == $temp_0'$1_table_Table'address_address''; + + // $t19 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:72+35 + assume {:print "$at(17,35926,35961)"} true; + $t19 := $Dereference($t1)->$authentication_key; + + // $t20 := bcs_util::truncate_16($t19) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:50+58 + call $t20 := $1_bcs_util_truncate_16($t19); + if ($abort_flag) { + assume {:print "$at(17,35904,35962)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // $t21 := from_bcs::to_address($t20) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:29+80 + call $t21 := $1_from_bcs_to_address($t20); + if ($abort_flag) { + assume {:print "$at(17,35883,35963)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // trace_local[curr_auth_key]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:13+13 + assume {:print "$track_local(24,35,8):", $t21} $t21 == $t21; + + // $t22 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:28+28 + assume {:print "$at(17,36246,36274)"} true; + $t22 := $Dereference($t18); + + // $t23 := table::contains($t22, $t21) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:13+43 + call $t23 := $1_table_contains'address_address'($t22, $t21); + if ($abort_flag) { + assume {:print "$at(17,36231,36274)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // if ($t23) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:9+1188 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:17+16 + assume {:print "$at(17,37265,37281)"} true; +L1: + + // $t24 := table::remove($t18, $t21) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:37+41 + assume {:print "$at(17,37285,37326)"} true; + call $t24,$t18 := $1_table_remove'address_address'($t18, $t21); + if ($abort_flag) { + assume {:print "$at(17,37285,37326)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // $t25 := ==($t0, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:34+2 + $t25 := $IsEqual'address'($t0, $t24); + + // if ($t25) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + if ($t25) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 +L3: + + // goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + goto L0; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 +L2: + + // write_back[Reference($t17).address_map (table::Table)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + $t17 := $UpdateMutation($t17, $Update'$1_account_OriginatingAddress'_address_map($Dereference($t17), $Dereference($t18))); + + // write_back[account::OriginatingAddress@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + $1_account_OriginatingAddress_$memory := $ResourceUpdate($1_account_OriginatingAddress_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // drop($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + + // pack_ref_deep($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + + // $t26 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:699:34+28 + assume {:print "$at(17,37361,37389)"} true; + $t26 := 13; + assume $IsValid'u64'($t26); + + // $t27 := error::not_found($t26) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:699:17+46 + call $t27 := $1_error_not_found($t26); + if ($abort_flag) { + assume {:print "$at(17,37344,37390)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + assume {:print "$track_abort(24,35):", $t27} $t27 == $t27; + + // $t15 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + $t15 := $t27; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:71+19 + assume {:print "$at(17,37562,37581)"} true; +L0: + + // $t28 := bcs_util::truncate_16($t2) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:49+42 + assume {:print "$at(17,37540,37582)"} true; + call $t28 := $1_bcs_util_truncate_16($t2); + if ($abort_flag) { + assume {:print "$at(17,37540,37582)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // $t29 := from_bcs::to_address($t28) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:28+64 + call $t29 := $1_from_bcs_to_address($t28); + if ($abort_flag) { + assume {:print "$at(17,37519,37583)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // trace_local[new_auth_key]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:13+12 + assume {:print "$track_local(24,35,9):", $t29} $t29 == $t29; + + // $t30 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 110, 101, 119, 95, 97, 117, 116, 104, 95, 107, 101, 121] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:36+72 + assume {:print "$at(17,37621,37693)"} true; + $t30 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 110, 101, 119)), MakeVec4(95, 97, 117, 116)), MakeVec4(104, 95, 107, 101)), MakeVec1(121)); + assume $IsValid'vec'u8''($t30); + + // $t31 := string::utf8($t30) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:23+86 + call $t31 := $1_string_utf8($t30); + if ($abort_flag) { + assume {:print "$at(17,37608,37694)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // debug::print($t31) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:9+101 + call $1_debug_print'$1_string_String'($t31); + if ($abort_flag) { + assume {:print "$at(17,37594,37695)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // debug::print
($t29) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:708:9+27 + assume {:print "$at(17,37705,37732)"} true; + call $1_debug_print'address'($t29); + if ($abort_flag) { + assume {:print "$at(17,37705,37732)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // table::add($t18, $t29, $t0) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + assume {:print "$at(17,37744,37799)"} true; + call $t18 := $1_table_add'address_address'($t18, $t29, $t0); + if ($abort_flag) { + assume {:print "$at(17,37744,37799)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // write_back[Reference($t17).address_map (table::Table)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + $t17 := $UpdateMutation($t17, $Update'$1_account_OriginatingAddress'_address_map($Dereference($t17), $Dereference($t18))); + + // write_back[account::OriginatingAddress@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + $1_account_OriginatingAddress_$memory := $ResourceUpdate($1_account_OriginatingAddress_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // $t32 := features::module_event_migration_enabled() on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:713:13+47 + assume {:print "$at(17,37814,37861)"} true; + call $t32 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(17,37814,37861)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // if ($t32) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:713:9+299 + if ($t32) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:715:26+16 + assume {:print "$at(17,37928,37944)"} true; +L5: + + // $t33 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:716:41+35 + assume {:print "$at(17,37986,38021)"} true; + $t33 := $Dereference($t1)->$authentication_key; + + // $t34 := pack account::KeyRotation($t0, $t33, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:25+208 + assume {:print "$at(17,37889,38097)"} true; + $t34 := $1_account_KeyRotation($t0, $t33, $t2); + + // opaque begin: event::emit($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:13+221 + + // opaque end: event::emit($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:13+221 + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:721:18+16 + assume {:print "$at(17,38173,38189)"} true; +L4: + + // $t35 := borrow_field.key_rotation_events($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:721:13+41 + assume {:print "$at(17,38168,38209)"} true; + $t35 := $ChildMutation($t1, 4, $Dereference($t1)->$key_rotation_events); + + // $t36 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:723:41+35 + assume {:print "$at(17,38282,38317)"} true; + $t36 := $Dereference($t1)->$authentication_key; + + // $t37 := pack account::KeyRotationEvent($t36, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:722:13+170 + assume {:print "$at(17,38223,38393)"} true; + $t37 := $1_account_KeyRotationEvent($t36, $t2); + + // opaque begin: event::emit_event($t35, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + assume {:print "$at(17,38119,38403)"} true; + + // opaque end: event::emit_event($t35, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + + // write_back[Reference($t1).key_rotation_events (event::EventHandle)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_key_rotation_events($Dereference($t1), $Dereference($t35))); + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t38 := borrow_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+35 + assume {:print "$at(17,38475,38510)"} true; + $t38 := $ChildMutation($t1, 0, $Dereference($t1)->$authentication_key); + + // write_ref($t38, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $t38 := $UpdateMutation($t38, $t2); + + // write_back[Reference($t1).authentication_key (vector)]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_authentication_key($Dereference($t1), $Dereference($t38))); + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t39 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:36+66 + assume {:print "$at(17,38570,38636)"} true; + $t39 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 101, 120, 105)), MakeVec3(116, 101, 100)); + assume $IsValid'vec'u8''($t39); + + // $t40 := string::utf8($t39) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:23+80 + call $t40 := $1_string_utf8($t39); + if ($abort_flag) { + assume {:print "$at(17,38557,38637)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // debug::print($t40) on_abort goto L7 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:9+95 + call $1_debug_print'$1_string_String'($t40); + if ($abort_flag) { + assume {:print "$at(17,38543,38638)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,35):", $t15} $t15 == $t15; + goto L7; + } + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:104+1 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // pack_ref_deep($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:104+1 + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 + assume {:print "$at(17,38644,38645)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 + assume {:print "$at(17,38644,38645)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 +L7: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 + assume {:print "$at(17,38644,38645)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun account::update_auth_key_and_originating_address_table [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+3203 +procedure {:timeLimit 80} $1_account_update_auth_key_and_originating_address_table$verify(_$t0: int, _$t1: $Mutation ($1_account_Account), _$t2: Vec (int)) returns ($ret0: $Mutation ($1_account_Account)) +{ + // declare local variables + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $Mutation (Table int (int)); + var $t8: int; + var $t9: int; + var $t10: Table int (int); + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: Vec (int); + var $t15: $1_string_String; + var $t16: int; + var $t17: int; + var $t18: $Mutation ($1_account_OriginatingAddress); + var $t19: $Mutation (Table int (int)); + var $t20: Vec (int); + var $t21: Vec (int); + var $t22: int; + var $t23: Table int (int); + var $t24: bool; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: Vec (int); + var $t30: int; + var $t31: Vec (int); + var $t32: $1_string_String; + var $t33: bool; + var $t34: Vec (int); + var $t35: $1_account_KeyRotation; + var $t36: $Mutation ($1_event_EventHandle'$1_account_KeyRotationEvent'); + var $t37: Vec (int); + var $t38: $1_account_KeyRotationEvent; + var $t39: $Mutation (Vec (int)); + var $t40: Vec (int); + var $t41: $1_string_String; + var $t0: int; + var $t1: $Mutation ($1_account_Account); + var $t2: Vec (int); + var $1_account_OriginatingAddress_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_table_Table'address_address'': Table int (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_OriginatingAddress_$memory#47: $Memory $1_account_OriginatingAddress; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t1->l == $Param(1); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume {:print "$at(17,35442,35443)"} true; + assume $IsValid'address'($t0); + + // assume And(WellFormed($t1), And(Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t1)))), 1), Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t1)))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume ($IsValid'$1_account_Account'($Dereference($t1)) && ((LenVec($Dereference($t1)->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($Dereference($t1)->$signer_capability_offer->$for->$vec) <= 1))); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume $IsValid'vec'u8''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::OriginatingAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_account_OriginatingAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_account_OriginatingAddress_$memory, $a_0); + ($IsValid'$1_account_OriginatingAddress'($rsc)))); + + // assume Identical($t10, select account::OriginatingAddress.address_map(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:679:9+78 + assume {:print "$at(18,33638,33716)"} true; + assume ($t10 == $ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map); + + // assume Identical($t11, from_bcs::deserialize
(select account::Account.authentication_key($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:680:9+88 + assume {:print "$at(18,33725,33813)"} true; + assume ($t11 == $1_from_bcs_deserialize'address'($Dereference($t1)->$authentication_key)); + + // assume Identical($t12, from_bcs::deserialize
($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:681:9+71 + assume {:print "$at(18,33822,33893)"} true; + assume ($t12 == $1_from_bcs_deserialize'address'($t2)); + + // assume CanModify(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:672:9+57 + assume {:print "$at(18,33324,33381)"} true; + assume $1_account_OriginatingAddress_$modifies[1]; + + // @47 := save_mem(account::OriginatingAddress) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:672:9+57 + $1_account_OriginatingAddress_$memory#47 := $1_account_OriginatingAddress_$memory; + + // $t13 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:672:9+57 + $t13 := $Dereference($t1); + + // trace_local[originating_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume {:print "$at(17,35442,35443)"} true; + assume {:print "$track_local(24,35,0):", $t0} $t0 == $t0; + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // trace_local[new_auth_key_vector]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:674:5+1 + assume {:print "$track_local(24,35,2):", $t2} $t2 == $t2; + + // $t14 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:36+67 + assume {:print "$at(17,35680,35747)"} true; + $t14 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 101, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t14); + + // $t15 := string::utf8($t14) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:23+81 + call $t15 := $1_string_utf8($t14); + if ($abort_flag) { + assume {:print "$at(17,35667,35748)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // debug::print($t15) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:679:9+96 + call $1_debug_print'$1_string_String'($t15); + if ($abort_flag) { + assume {:print "$at(17,35653,35749)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // $t17 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:70+19 + assume {:print "$at(17,35821,35840)"} true; + $t17 := 1; + assume $IsValid'address'($t17); + + // assert CanModify($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:32+17 + assert {:msg "assert_failed(17,35783,35800): caller does not have permission to modify `account::OriginatingAddress` at given address"} + $1_account_OriginatingAddress_$modifies[$t17]; + + // $t18 := borrow_global($t17) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:32+17 + if (!$ResourceExists($1_account_OriginatingAddress_$memory, $t17)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t17), EmptyVec(), $ResourceValue($1_account_OriginatingAddress_$memory, $t17)); + } + if ($abort_flag) { + assume {:print "$at(17,35783,35800)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // $t19 := borrow_field.address_map($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:27+75 + $t19 := $ChildMutation($t18, 0, $Dereference($t18)->$address_map); + + // trace_local[address_map]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:681:13+11 + $temp_0'$1_table_Table'address_address'' := $Dereference($t19); + assume {:print "$track_local(24,35,7):", $temp_0'$1_table_Table'address_address''} $temp_0'$1_table_Table'address_address'' == $temp_0'$1_table_Table'address_address''; + + // $t20 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:72+35 + assume {:print "$at(17,35926,35961)"} true; + $t20 := $Dereference($t1)->$authentication_key; + + // $t21 := bcs_util::truncate_16($t20) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:50+58 + call $t21 := $1_bcs_util_truncate_16($t20); + if ($abort_flag) { + assume {:print "$at(17,35904,35962)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // $t22 := from_bcs::to_address($t21) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:29+80 + call $t22 := $1_from_bcs_to_address($t21); + if ($abort_flag) { + assume {:print "$at(17,35883,35963)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // trace_local[curr_auth_key]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:682:13+13 + assume {:print "$track_local(24,35,8):", $t22} $t22 == $t22; + + // $t23 := read_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:28+28 + assume {:print "$at(17,36246,36274)"} true; + $t23 := $Dereference($t19); + + // $t24 := table::contains($t23, $t22) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:13+43 + call $t24 := $1_table_contains'address_address'($t23, $t22); + if ($abort_flag) { + assume {:print "$at(17,36231,36274)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // if ($t24) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:687:9+1188 + if ($t24) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:17+16 + assume {:print "$at(17,37265,37281)"} true; +L1: + + // $t25 := table::remove($t19, $t22) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:37+41 + assume {:print "$at(17,37285,37326)"} true; + call $t25,$t19 := $1_table_remove'address_address'($t19, $t22); + if ($abort_flag) { + assume {:print "$at(17,37285,37326)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // $t26 := ==($t0, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:698:34+2 + $t26 := $IsEqual'address'($t0, $t25); + + // if ($t26) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + if ($t26) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 +L3: + + // goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + goto L0; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 +L2: + + // write_back[Reference($t18).address_map (table::Table)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + $t18 := $UpdateMutation($t18, $Update'$1_account_OriginatingAddress'_address_map($Dereference($t18), $Dereference($t19))); + + // write_back[account::OriginatingAddress@]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + $1_account_OriginatingAddress_$memory := $ResourceUpdate($1_account_OriginatingAddress_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + + // $t27 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:699:34+28 + assume {:print "$at(17,37361,37389)"} true; + $t27 := 13; + assume $IsValid'u64'($t27); + + // $t28 := error::not_found($t27) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:699:17+46 + call $t28 := $1_error_not_found($t27); + if ($abort_flag) { + assume {:print "$at(17,37344,37390)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + assume {:print "$at(17,37240,37404)"} true; + assume {:print "$track_abort(24,35):", $t28} $t28 == $t28; + + // $t16 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + $t16 := $t28; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:697:13+164 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:71+19 + assume {:print "$at(17,37562,37581)"} true; +L0: + + // $t29 := bcs_util::truncate_16($t2) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:49+42 + assume {:print "$at(17,37540,37582)"} true; + call $t29 := $1_bcs_util_truncate_16($t2); + if ($abort_flag) { + assume {:print "$at(17,37540,37582)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // $t30 := from_bcs::to_address($t29) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:28+64 + call $t30 := $1_from_bcs_to_address($t29); + if ($abort_flag) { + assume {:print "$at(17,37519,37583)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // trace_local[new_auth_key]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:705:13+12 + assume {:print "$track_local(24,35,9):", $t30} $t30 == $t30; + + // $t31 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 110, 101, 119, 95, 97, 117, 116, 104, 95, 107, 101, 121] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:36+72 + assume {:print "$at(17,37621,37693)"} true; + $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 110, 101, 119)), MakeVec4(95, 97, 117, 116)), MakeVec4(104, 95, 107, 101)), MakeVec1(121)); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:23+86 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(17,37608,37694)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // debug::print($t32) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:707:9+101 + call $1_debug_print'$1_string_String'($t32); + if ($abort_flag) { + assume {:print "$at(17,37594,37695)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // debug::print
($t30) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:708:9+27 + assume {:print "$at(17,37705,37732)"} true; + call $1_debug_print'address'($t30); + if ($abort_flag) { + assume {:print "$at(17,37705,37732)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // table::add($t19, $t30, $t0) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + assume {:print "$at(17,37744,37799)"} true; + call $t19 := $1_table_add'address_address'($t19, $t30, $t0); + if ($abort_flag) { + assume {:print "$at(17,37744,37799)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // write_back[Reference($t18).address_map (table::Table)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + $t18 := $UpdateMutation($t18, $Update'$1_account_OriginatingAddress'_address_map($Dereference($t18), $Dereference($t19))); + + // write_back[account::OriginatingAddress@]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:711:9+55 + $1_account_OriginatingAddress_$memory := $ResourceUpdate($1_account_OriginatingAddress_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // $t33 := features::module_event_migration_enabled() on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:713:13+47 + assume {:print "$at(17,37814,37861)"} true; + call $t33 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(17,37814,37861)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // if ($t33) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:713:9+299 + if ($t33) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:715:26+16 + assume {:print "$at(17,37928,37944)"} true; +L5: + + // $t34 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:716:41+35 + assume {:print "$at(17,37986,38021)"} true; + $t34 := $Dereference($t1)->$authentication_key; + + // $t35 := pack account::KeyRotation($t0, $t34, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:25+208 + assume {:print "$at(17,37889,38097)"} true; + $t35 := $1_account_KeyRotation($t0, $t34, $t2); + + // opaque begin: event::emit($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:13+221 + + // opaque end: event::emit($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:714:13+221 + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:721:18+16 + assume {:print "$at(17,38173,38189)"} true; +L4: + + // $t36 := borrow_field.key_rotation_events($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:721:13+41 + assume {:print "$at(17,38168,38209)"} true; + $t36 := $ChildMutation($t1, 4, $Dereference($t1)->$key_rotation_events); + + // $t37 := get_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:723:41+35 + assume {:print "$at(17,38282,38317)"} true; + $t37 := $Dereference($t1)->$authentication_key; + + // $t38 := pack account::KeyRotationEvent($t37, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:722:13+170 + assume {:print "$at(17,38223,38393)"} true; + $t38 := $1_account_KeyRotationEvent($t37, $t2); + + // opaque begin: event::emit_event($t36, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + assume {:print "$at(17,38119,38403)"} true; + + // opaque end: event::emit_event($t36, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + + // write_back[Reference($t1).key_rotation_events (event::EventHandle)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_key_rotation_events($Dereference($t1), $Dereference($t36))); + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:720:9+284 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t39 := borrow_field.authentication_key($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+35 + assume {:print "$at(17,38475,38510)"} true; + $t39 := $ChildMutation($t1, 0, $Dereference($t1)->$authentication_key); + + // write_ref($t39, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $t39 := $UpdateMutation($t39, $t2); + + // write_back[Reference($t1).authentication_key (vector)]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $t1 := $UpdateMutation($t1, $Update'$1_account_Account'_authentication_key($Dereference($t1), $Dereference($t39))); + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:729:9+57 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t40 := [97, 99, 99, 111, 117, 110, 116, 58, 58, 117, 112, 100, 97, 116, 101, 95, 97, 117, 116, 104, 95, 107, 101, 121, 95, 97, 110, 100, 95, 111, 114, 105, 103, 105, 110, 97, 116, 105, 110, 103, 95, 97, 100, 100, 114, 101, 115, 115, 95, 116, 97, 98, 108, 101, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:36+66 + assume {:print "$at(17,38570,38636)"} true; + $t40 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(97, 99, 99, 111), MakeVec4(117, 110, 116, 58)), MakeVec4(58, 117, 112, 100)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 117, 116, 104)), MakeVec4(95, 107, 101, 121)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 111, 114, 105)), MakeVec4(103, 105, 110, 97)), MakeVec4(116, 105, 110, 103)), MakeVec4(95, 97, 100, 100)), MakeVec4(114, 101, 115, 115)), MakeVec4(95, 116, 97, 98)), MakeVec4(108, 101, 32, 124)), MakeVec4(32, 101, 120, 105)), MakeVec3(116, 101, 100)); + assume $IsValid'vec'u8''($t40); + + // $t41 := string::utf8($t40) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:23+80 + call $t41 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(17,38557,38637)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // debug::print($t41) on_abort goto L7 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:9+95 + call $1_debug_print'$1_string_String'($t41); + if ($abort_flag) { + assume {:print "$at(17,38543,38638)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(24,35):", $t16} $t16 == $t16; + goto L7; + } + + // trace_local[account_resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:731:104+1 + $temp_0'$1_account_Account' := $Dereference($t1); + assume {:print "$track_local(24,35,1):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t1)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$signer_capability_offer->$for->$vec) <= 1); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 + assume {:print "$at(17,38644,38645)"} true; +L6: + + // assert Not(Not(exists[@47](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:682:9+59 + assume {:print "$at(18,33902,33961)"} true; + assert {:msg "assert_failed(18,33902,33961): function does not abort under this condition"} + !!$ResourceExists($1_account_OriginatingAddress_$memory#47, 1); + + // assert Not(Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t13)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:683:9+82 + assume {:print "$at(18,33970,34052)"} true; + assert {:msg "assert_failed(18,33970,34052): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t13->$authentication_key); + + // assert Not(And(table::spec_contains[]($t10, $t11), Neq
(table::spec_get[]($t10, $t11), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:684:9+138 + assume {:print "$at(18,34061,34199)"} true; + assert {:msg "assert_failed(18,34061,34199): function does not abort under this condition"} + !($1_table_spec_contains'address_address'($t10, $t11) && !$IsEqual'address'($1_table_spec_get'address_address'($t10, $t11), $t0)); + + // assert Not(Not(from_bcs::deserializable[]
($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:686:9+66 + assume {:print "$at(18,34208,34274)"} true; + assert {:msg "assert_failed(18,34208,34274): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t2); + + // assert Not(And(Neq
($t11, $t12), table::spec_contains[]($t10, $t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:687:9+91 + assume {:print "$at(18,34283,34374)"} true; + assert {:msg "assert_failed(18,34283,34374): function does not abort under this condition"} + !(!$IsEqual'address'($t11, $t12) && $1_table_spec_contains'address_address'($t10, $t12)); + + // assert table::spec_contains(select account::OriginatingAddress.address_map(global(0x1)), from_bcs::deserialize
($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:689:9+143 + assume {:print "$at(18,34384,34527)"} true; + assert {:msg "assert_failed(18,34384,34527): post-condition does not hold"} + $1_table_spec_contains'address_address'($ResourceValue($1_account_OriginatingAddress_$memory, 1)->$address_map, $1_from_bcs_deserialize'address'($t2)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:689:9+143 + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:732:5+1 + assume {:print "$at(17,38644,38645)"} true; +L7: + + // assert Or(Or(Or(Or(Not(exists[@47](0x1)), Not(from_bcs::deserializable[]
(select account::Account.authentication_key($t13)))), And(table::spec_contains[]($t10, $t11), Neq
(table::spec_get[]($t10, $t11), $t0))), Not(from_bcs::deserializable[]
($t2))), And(Neq
($t11, $t12), table::spec_contains[]($t10, $t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:667:5+312 + assume {:print "$at(18,33140,33452)"} true; + assert {:msg "assert_failed(18,33140,33452): abort not covered by any of the `aborts_if` clauses"} + ((((!$ResourceExists($1_account_OriginatingAddress_$memory#47, 1) || !$1_from_bcs_deserializable'address'($t13->$authentication_key)) || ($1_table_spec_contains'address_address'($t10, $t11) && !$IsEqual'address'($1_table_spec_get'address_address'($t10, $t11), $t0))) || !$1_from_bcs_deserializable'address'($t2)) || (!$IsEqual'address'($t11, $t12) && $1_table_spec_contains'address_address'($t10, $t12))); + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:667:5+312 + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun account::verify_signed_message [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1989 +procedure {:inline 1} $1_account_verify_signed_message'$1_account_SignerCapabilityOfferProofChallengeV2'(_$t0: int, _$t1: int, _$t2: Vec (int), _$t3: Vec (int), _$t4: $1_account_SignerCapabilityOfferProofChallengeV2) returns () +{ + // declare local variables + var $t5: $Mutation ($1_account_Account); + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: $1_ed25519_UnvalidatedPublicKey; + var $t9: $1_multi_ed25519_UnvalidatedPublicKey; + var $t10: $1_ed25519_Signature; + var $t11: $1_multi_ed25519_Signature; + var $t12: $1_account_Account; + var $t13: int; + var $t14: $Mutation ($1_account_Account); + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: $1_ed25519_UnvalidatedPublicKey; + var $t19: Vec (int); + var $t20: Vec (int); + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_ed25519_Signature; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: $1_multi_ed25519_UnvalidatedPublicKey; + var $t32: Vec (int); + var $t33: Vec (int); + var $t34: bool; + var $t35: int; + var $t36: int; + var $t37: $1_multi_ed25519_Signature; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t0: int; + var $t1: int; + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: $1_account_SignerCapabilityOfferProofChallengeV2; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_account_SignerCapabilityOfferProofChallengeV2': $1_account_SignerCapabilityOfferProofChallengeV2; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'address': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t12, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:702:9+48 + assume {:print "$at(18,34829,34877)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t0)); + + // assume Identical($t13, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t13 == LenVec($t2)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$at(17,45678,45679)"} true; + assume {:print "$track_local(24,36,0):", $t0} $t0 == $t0; + + // trace_local[account_scheme]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,1):", $t1} $t1 == $t1; + + // trace_local[account_public_key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,2):", $t2} $t2 == $t2; + + // trace_local[signed_message_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,3):", $t3} $t3 == $t3; + + // trace_local[message]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,4):", $t4} $t4 == $t4; + + // $t14 := borrow_global($t0) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:889:32+17 + assume {:print "$at(17,45933,45950)"} true; + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(17,45933,45950)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[account_resource]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:889:13+16 + $temp_0'$1_account_Account' := $Dereference($t14); + assume {:print "$track_local(24,36,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:31+14 + assume {:print "$at(17,46134,46148)"} true; + $t16 := 0; + assume $IsValid'u8'($t16); + + // $t17 := ==($t1, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:28+2 + $t17 := $IsEqual'u8'($t1, $t16); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:9+1548 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:73+18 + assume {:print "$at(17,46224,46242)"} true; +L1: + + // $t18 := ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:26+66 + assume {:print "$at(17,46177,46243)"} true; + call $t18 := $1_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,46177,46243)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[pubkey]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:17+6 + assume {:print "$track_local(24,36,8):", $t18} $t18 == $t18; + + // $t19 := ed25519::unvalidated_public_key_to_authentication_key($t18) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:893:37+62 + assume {:print "$at(17,46281,46343)"} true; + call $t19 := $1_ed25519_unvalidated_public_key_to_authentication_key($t18); + if ($abort_flag) { + assume {:print "$at(17,46281,46343)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[expected_auth_key]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:893:17+17 + assume {:print "$track_local(24,36,6):", $t19} $t19 == $t19; + + // $t20 := get_field.authentication_key($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:895:17+35 + assume {:print "$at(17,46382,46417)"} true; + $t20 := $Dereference($t14)->$authentication_key; + + // pack_ref_deep($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:895:17+35 + + // $t21 := ==($t20, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:895:53+2 + $t21 := $IsEqual'vec'u8''($t20, $t19); + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:41+25 + assume {:print "$at(17,46480,46505)"} true; +L2: + + // $t22 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:41+25 + assume {:print "$at(17,46480,46505)"} true; + $t22 := 7; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:17+50 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(17,46456,46506)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + assume {:print "$track_abort(24,36):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + $t15 := $t23; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + goto L17; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:75+20 + assume {:print "$at(17,46598,46618)"} true; +L4: + + // $t24 := ed25519::new_signature_from_bytes($t3) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:41+55 + assume {:print "$at(17,46564,46619)"} true; + call $t24 := $1_ed25519_new_signature_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,46564,46619)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[signer_capability_sig]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:17+21 + assume {:print "$track_local(24,36,10):", $t24} $t24 == $t24; + + // $t25 := ed25519::signature_verify_strict_t<#0>($t24, $t18, $t4) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:901:17+76 + assume {:print "$at(17,46658,46734)"} true; + call $t25 := $1_ed25519_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($t24, $t18, $t4); + if ($abort_flag) { + assume {:print "$at(17,46658,46734)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // if ($t25) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + if ($t25) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:41+27 + assume {:print "$at(17,46776,46803)"} true; +L5: + + // $t26 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:41+27 + assume {:print "$at(17,46776,46803)"} true; + $t26 := 8; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_argument($t26) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:17+52 + call $t27 := $1_error_invalid_argument($t26); + if ($abort_flag) { + assume {:print "$at(17,46752,46804)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + assume {:print "$track_abort(24,36):", $t27} $t27 == $t27; + + // $t15 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + $t15 := $t27; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + goto L17; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:903:14+1 + assume {:print "$at(17,46819,46820)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:903:14+1 + assume {:print "$at(17,46819,46820)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:20+14 + assume {:print "$at(17,46840,46854)"} true; +L0: + + // $t28 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:38+20 + assume {:print "$at(17,46858,46878)"} true; + $t28 := 1; + assume $IsValid'u8'($t28); + + // $t29 := ==($t1, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:35+2 + $t29 := $IsEqual'u8'($t1, $t28); + + // if ($t29) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:16+824 + if ($t29) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:79+18 + assume {:print "$at(17,46960,46978)"} true; +L10: + + // assume Identical($t30, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t30 == LenVec($t2)); + + // $t31 := multi_ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:26+72 + assume {:print "$at(17,46907,46979)"} true; + call $t31 := $1_multi_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,46907,46979)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[pubkey#1]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:17+6 + assume {:print "$track_local(24,36,9):", $t31} $t31 == $t31; + + // $t32 := multi_ed25519::unvalidated_public_key_to_authentication_key($t31) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:906:37+68 + assume {:print "$at(17,47017,47085)"} true; + call $t32 := $1_multi_ed25519_unvalidated_public_key_to_authentication_key($t31); + if ($abort_flag) { + assume {:print "$at(17,47017,47085)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[expected_auth_key#2]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:906:17+17 + assume {:print "$track_local(24,36,7):", $t32} $t32 == $t32; + + // $t33 := get_field.authentication_key($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:908:17+35 + assume {:print "$at(17,47124,47159)"} true; + $t33 := $Dereference($t14)->$authentication_key; + + // pack_ref_deep($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:908:17+35 + + // $t34 := ==($t33, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:908:53+2 + $t34 := $IsEqual'vec'u8''($t33, $t32); + + // if ($t34) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + if ($t34) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:41+25 + assume {:print "$at(17,47222,47247)"} true; +L11: + + // $t35 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:41+25 + assume {:print "$at(17,47222,47247)"} true; + $t35 := 7; + assume $IsValid'u64'($t35); + + // $t36 := error::invalid_argument($t35) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:17+50 + call $t36 := $1_error_invalid_argument($t35); + if ($abort_flag) { + assume {:print "$at(17,47198,47248)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + assume {:print "$track_abort(24,36):", $t36} $t36 == $t36; + + // $t15 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + $t15 := $t36; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + goto L17; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:81+20 + assume {:print "$at(17,47346,47366)"} true; +L13: + + // $t37 := multi_ed25519::new_signature_from_bytes($t3) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:41+61 + assume {:print "$at(17,47306,47367)"} true; + call $t37 := $1_multi_ed25519_new_signature_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,47306,47367)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[signer_capability_sig#3]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:17+21 + assume {:print "$track_local(24,36,11):", $t37} $t37 == $t37; + + // $t38 := multi_ed25519::signature_verify_strict_t<#0>($t37, $t31, $t4) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:914:17+82 + assume {:print "$at(17,47406,47488)"} true; + call $t38 := $1_multi_ed25519_signature_verify_strict_t'$1_account_SignerCapabilityOfferProofChallengeV2'($t37, $t31, $t4); + if ($abort_flag) { + assume {:print "$at(17,47406,47488)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // if ($t38) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + if ($t38) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 +L15: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + goto L8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:41+27 + assume {:print "$at(17,47530,47557)"} true; +L14: + + // $t39 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:41+27 + assume {:print "$at(17,47530,47557)"} true; + $t39 := 8; + assume $IsValid'u64'($t39); + + // $t40 := error::invalid_argument($t39) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:17+52 + call $t40 := $1_error_invalid_argument($t39); + if ($abort_flag) { + assume {:print "$at(17,47506,47558)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + assume {:print "$track_abort(24,36):", $t40} $t40 == $t40; + + // $t15 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + $t15 := $t40; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + goto L17; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; +L9: + + // pack_ref_deep($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + + // $t41 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:43+15 + $t41 := 12; + assume $IsValid'u64'($t41); + + // $t42 := error::invalid_argument($t41) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:19+40 + call $t42 := $1_error_invalid_argument($t41); + if ($abort_flag) { + assume {:print "$at(17,47610,47650)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; + assume {:print "$track_abort(24,36):", $t42} $t42 == $t42; + + // $t15 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + $t15 := $t42; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + goto L17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:919:10+1 + assume {:print "$at(17,47660,47661)"} true; +L8: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; +L16: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 +L17: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun account::verify_signed_message [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1989 +procedure {:timeLimit 80} $1_account_verify_signed_message$verify(_$t0: int, _$t1: int, _$t2: Vec (int), _$t3: Vec (int), _$t4: #0) returns () +{ + // declare local variables + var $t5: $Mutation ($1_account_Account); + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: $1_ed25519_UnvalidatedPublicKey; + var $t9: $1_multi_ed25519_UnvalidatedPublicKey; + var $t10: $1_ed25519_Signature; + var $t11: $1_multi_ed25519_Signature; + var $t12: $1_account_Account; + var $t13: int; + var $t14: $Mutation ($1_account_Account); + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: $1_ed25519_UnvalidatedPublicKey; + var $t19: Vec (int); + var $t20: Vec (int); + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_ed25519_Signature; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: $1_multi_ed25519_UnvalidatedPublicKey; + var $t32: Vec (int); + var $t33: Vec (int); + var $t34: bool; + var $t35: int; + var $t36: int; + var $t37: $1_multi_ed25519_Signature; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t0: int; + var $t1: int; + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: #0; + var $1_account_Account_$modifies: [int]bool; + var $temp_0'#0': #0; + var $temp_0'$1_account_Account': $1_account_Account; + var $temp_0'$1_ed25519_Signature': $1_ed25519_Signature; + var $temp_0'$1_ed25519_UnvalidatedPublicKey': $1_ed25519_UnvalidatedPublicKey; + var $temp_0'$1_multi_ed25519_Signature': $1_multi_ed25519_Signature; + var $temp_0'$1_multi_ed25519_UnvalidatedPublicKey': $1_multi_ed25519_UnvalidatedPublicKey; + var $temp_0'address': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#36: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$at(17,45678,45679)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume $IsValid'u8'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume $IsValid'#0'($t4); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume Identical($t12, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:702:9+48 + assume {:print "$at(18,34829,34877)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t0)); + + // assume Identical($t13, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t13 == LenVec($t2)); + + // assume CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:701:9+34 + assume {:print "$at(18,34786,34820)"} true; + assume $1_account_Account_$modifies[$t0]; + + // @36 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:701:9+34 + $1_account_Account_$memory#36 := $1_account_Account_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$at(17,45678,45679)"} true; + assume {:print "$track_local(24,36,0):", $t0} $t0 == $t0; + + // trace_local[account_scheme]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,1):", $t1} $t1 == $t1; + + // trace_local[account_public_key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,2):", $t2} $t2 == $t2; + + // trace_local[signed_message_bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,3):", $t3} $t3 == $t3; + + // trace_local[message]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:882:5+1 + assume {:print "$track_local(24,36,4):", $t4} $t4 == $t4; + + // assert CanModify($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:889:32+17 + assume {:print "$at(17,45933,45950)"} true; + assert {:msg "assert_failed(17,45933,45950): caller does not have permission to modify `account::Account` at given address"} + $1_account_Account_$modifies[$t0]; + + // $t14 := borrow_global($t0) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:889:32+17 + if (!$ResourceExists($1_account_Account_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_account_Account_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(17,45933,45950)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[account_resource]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:889:13+16 + $temp_0'$1_account_Account' := $Dereference($t14); + assume {:print "$track_local(24,36,5):", $temp_0'$1_account_Account'} $temp_0'$1_account_Account' == $temp_0'$1_account_Account'; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:31+14 + assume {:print "$at(17,46134,46148)"} true; + $t16 := 0; + assume $IsValid'u8'($t16); + + // $t17 := ==($t1, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:28+2 + $t17 := $IsEqual'u8'($t1, $t16); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:891:9+1548 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:73+18 + assume {:print "$at(17,46224,46242)"} true; +L1: + + // $t18 := ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:26+66 + assume {:print "$at(17,46177,46243)"} true; + call $t18 := $1_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,46177,46243)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[pubkey]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:892:17+6 + assume {:print "$track_local(24,36,8):", $t18} $t18 == $t18; + + // $t19 := ed25519::unvalidated_public_key_to_authentication_key($t18) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:893:37+62 + assume {:print "$at(17,46281,46343)"} true; + call $t19 := $1_ed25519_unvalidated_public_key_to_authentication_key($t18); + if ($abort_flag) { + assume {:print "$at(17,46281,46343)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[expected_auth_key]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:893:17+17 + assume {:print "$track_local(24,36,6):", $t19} $t19 == $t19; + + // $t20 := get_field.authentication_key($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:895:17+35 + assume {:print "$at(17,46382,46417)"} true; + $t20 := $Dereference($t14)->$authentication_key; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$signer_capability_offer->$for->$vec) <= 1); + + // $t21 := ==($t20, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:895:53+2 + assume {:print "$at(17,46418,46420)"} true; + $t21 := $IsEqual'vec'u8''($t20, $t19); + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:41+25 + assume {:print "$at(17,46480,46505)"} true; +L2: + + // $t22 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:41+25 + assume {:print "$at(17,46480,46505)"} true; + $t22 := 7; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:896:17+50 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(17,46456,46506)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + assume {:print "$at(17,46357,46521)"} true; + assume {:print "$track_abort(24,36):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + $t15 := $t23; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:894:13+164 + goto L17; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:75+20 + assume {:print "$at(17,46598,46618)"} true; +L4: + + // $t24 := ed25519::new_signature_from_bytes($t3) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:41+55 + assume {:print "$at(17,46564,46619)"} true; + call $t24 := $1_ed25519_new_signature_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,46564,46619)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[signer_capability_sig]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:899:17+21 + assume {:print "$track_local(24,36,10):", $t24} $t24 == $t24; + + // $t25 := ed25519::signature_verify_strict_t<#0>($t24, $t18, $t4) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:901:17+76 + assume {:print "$at(17,46658,46734)"} true; + call $t25 := $1_ed25519_signature_verify_strict_t'#0'($t24, $t18, $t4); + if ($abort_flag) { + assume {:print "$at(17,46658,46734)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // if ($t25) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + if ($t25) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:41+27 + assume {:print "$at(17,46776,46803)"} true; +L5: + + // $t26 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:41+27 + assume {:print "$at(17,46776,46803)"} true; + $t26 := 8; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_argument($t26) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:902:17+52 + call $t27 := $1_error_invalid_argument($t26); + if ($abort_flag) { + assume {:print "$at(17,46752,46804)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + assume {:print "$at(17,46633,46819)"} true; + assume {:print "$track_abort(24,36):", $t27} $t27 == $t27; + + // $t15 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + $t15 := $t27; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:900:13+186 + goto L17; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:903:14+1 + assume {:print "$at(17,46819,46820)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:903:14+1 + assume {:print "$at(17,46819,46820)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:20+14 + assume {:print "$at(17,46840,46854)"} true; +L0: + + // $t28 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:38+20 + assume {:print "$at(17,46858,46878)"} true; + $t28 := 1; + assume $IsValid'u8'($t28); + + // $t29 := ==($t1, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:35+2 + $t29 := $IsEqual'u8'($t1, $t28); + + // if ($t29) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:904:16+824 + if ($t29) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:79+18 + assume {:print "$at(17,46960,46978)"} true; +L10: + + // assume Identical($t30, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:13:9+24 + assume {:print "$at(133,436,460)"} true; + assume ($t30 == LenVec($t2)); + + // $t31 := multi_ed25519::new_unvalidated_public_key_from_bytes($t2) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:26+72 + assume {:print "$at(17,46907,46979)"} true; + call $t31 := $1_multi_ed25519_new_unvalidated_public_key_from_bytes($t2); + if ($abort_flag) { + assume {:print "$at(17,46907,46979)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[pubkey#1]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:905:17+6 + assume {:print "$track_local(24,36,9):", $t31} $t31 == $t31; + + // $t32 := multi_ed25519::unvalidated_public_key_to_authentication_key($t31) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:906:37+68 + assume {:print "$at(17,47017,47085)"} true; + call $t32 := $1_multi_ed25519_unvalidated_public_key_to_authentication_key($t31); + if ($abort_flag) { + assume {:print "$at(17,47017,47085)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[expected_auth_key#2]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:906:17+17 + assume {:print "$track_local(24,36,7):", $t32} $t32 == $t32; + + // $t33 := get_field.authentication_key($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:908:17+35 + assume {:print "$at(17,47124,47159)"} true; + $t33 := $Dereference($t14)->$authentication_key; + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$signer_capability_offer->$for->$vec) <= 1); + + // $t34 := ==($t33, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:908:53+2 + assume {:print "$at(17,47160,47162)"} true; + $t34 := $IsEqual'vec'u8''($t33, $t32); + + // if ($t34) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + if ($t34) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:41+25 + assume {:print "$at(17,47222,47247)"} true; +L11: + + // $t35 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:41+25 + assume {:print "$at(17,47222,47247)"} true; + $t35 := 7; + assume $IsValid'u64'($t35); + + // $t36 := error::invalid_argument($t35) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:909:17+50 + call $t36 := $1_error_invalid_argument($t35); + if ($abort_flag) { + assume {:print "$at(17,47198,47248)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + assume {:print "$at(17,47099,47263)"} true; + assume {:print "$track_abort(24,36):", $t36} $t36 == $t36; + + // $t15 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + $t15 := $t36; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:907:13+164 + goto L17; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:81+20 + assume {:print "$at(17,47346,47366)"} true; +L13: + + // $t37 := multi_ed25519::new_signature_from_bytes($t3) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:41+61 + assume {:print "$at(17,47306,47367)"} true; + call $t37 := $1_multi_ed25519_new_signature_from_bytes($t3); + if ($abort_flag) { + assume {:print "$at(17,47306,47367)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_local[signer_capability_sig#3]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:912:17+21 + assume {:print "$track_local(24,36,11):", $t37} $t37 == $t37; + + // $t38 := multi_ed25519::signature_verify_strict_t<#0>($t37, $t31, $t4) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:914:17+82 + assume {:print "$at(17,47406,47488)"} true; + call $t38 := $1_multi_ed25519_signature_verify_strict_t'#0'($t37, $t31, $t4); + if ($abort_flag) { + assume {:print "$at(17,47406,47488)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // if ($t38) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + if ($t38) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 +L15: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + goto L8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:41+27 + assume {:print "$at(17,47530,47557)"} true; +L14: + + // $t39 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:41+27 + assume {:print "$at(17,47530,47557)"} true; + $t39 := 8; + assume $IsValid'u64'($t39); + + // $t40 := error::invalid_argument($t39) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:915:17+52 + call $t40 := $1_error_invalid_argument($t39); + if ($abort_flag) { + assume {:print "$at(17,47506,47558)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + assume {:print "$at(17,47381,47573)"} true; + assume {:print "$track_abort(24,36):", $t40} $t40 == $t40; + + // $t15 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + $t15 := $t40; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:913:13+192 + goto L17; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; +L9: + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.rotation_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$rotation_capability_offer->$for->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select account::CapabilityOffer.for(select account::Account.signer_capability_offer($t14)))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t14)->$signer_capability_offer->$for->$vec) <= 1); + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; + + // $t41 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:43+15 + $t41 := 12; + assume $IsValid'u64'($t41); + + // $t42 := error::invalid_argument($t41) on_abort goto L17 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:19+40 + call $t42 := $1_error_invalid_argument($t41); + if ($abort_flag) { + assume {:print "$at(17,47610,47650)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(24,36):", $t15} $t15 == $t15; + goto L17; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + assume {:print "$at(17,47604,47650)"} true; + assume {:print "$track_abort(24,36):", $t42} $t42 == $t42; + + // $t15 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + $t15 := $t42; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:918:13+46 + goto L17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:919:10+1 + assume {:print "$at(17,47660,47661)"} true; +L8: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; +L16: + + // assert Not(Not(exists[@36]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:703:9+36 + assume {:print "$at(18,34886,34922)"} true; + assert {:msg "assert_failed(18,34886,34922): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#36, $t0); + + // assert Not(And(Eq($t1, 0), Neq(Len($t2), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:13:9+45 + assume {:print "$at(131,430,475)"} true; + assert {:msg "assert_failed(131,430,475): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t2), 32)); + + // assert Not(And(Eq($t1, 0), { + // let expected_auth_key: vector = ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t12), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:706:9+239 + assume {:print "$at(18,35066,35305)"} true; + assert {:msg "assert_failed(18,35066,35305): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && (var expected_auth_key := $1_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t12->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t1, 1), Gt(Div($t13, 32), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:14:9+79 + assume {:print "$at(133,469,548)"} true; + assert {:msg "assert_failed(133,469,548): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && (($t13 div 32) > 32)); + + // assert Not(And(Eq($t1, 1), Neq(Mod($t13, 32), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:15:9+75 + assume {:print "$at(133,557,632)"} true; + assert {:msg "assert_failed(133,557,632): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$IsEqual'num'(($t13 mod 32), 1)); + + // assert Not(And(Eq($t1, 1), { + // let expected_auth_key: vector = multi_ed25519::spec_public_key_bytes_to_authentication_key[]($t2); + // Neq>(select account::Account.authentication_key($t12), expected_auth_key) + // })) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:712:9+251 + assume {:print "$at(18,35461,35712)"} true; + assert {:msg "assert_failed(18,35461,35712): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && (var expected_auth_key := $1_multi_ed25519_spec_public_key_bytes_to_authentication_key($t2); !$IsEqual'vec'u8''($t12->$authentication_key, expected_auth_key))); + + // assert Not(And(Eq($t1, 0), Neq(Len($t3), 64))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ed25519.spec.move:29:9+44 + assume {:print "$at(131,1077,1121)"} true; + assert {:msg "assert_failed(131,1077,1121): function does not abort under this condition"} + !($IsEqual'u8'($t1, 0) && !$IsEqual'num'(LenVec($t3), 64)); + + // assert Not(And(Eq($t1, 1), Neq(Mod(Len($t3), 64), 4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/multi_ed25519.spec.move:38:9+77 + assume {:print "$at(133,1644,1721)"} true; + assert {:msg "assert_failed(133,1644,1721): function does not abort under this condition"} + !($IsEqual'u8'($t1, 1) && !$IsEqual'num'((LenVec($t3) mod 64), 4)); + + // assert Not(And(Neq($t1, 0), Neq($t1, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:733:9+85 + assume {:print "$at(18,36662,36747)"} true; + assert {:msg "assert_failed(18,36662,36747): function does not abort under this condition"} + !(!$IsEqual'u8'($t1, 0) && !$IsEqual'u8'($t1, 1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:733:9+85 + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; +L17: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.move:920:5+1 + assume {:print "$at(17,47666,47667)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:6:10+98 +function {:inline} $1_acl_spec_contains(self: $1_acl_ACL, addr: int): bool { + (var $range_0 := self->$list; (exists $i_1: int :: InRangeVec($range_0, $i_1) && (var a := ReadVec($range_0, $i_1); + ($IsEqual'address'(a, addr))))) +} + +// struct acl::ACL at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:15:5+70 +datatype $1_acl_ACL { + $1_acl_ACL($list: Vec (int)) +} +function {:inline} $Update'$1_acl_ACL'_list(s: $1_acl_ACL, x: Vec (int)): $1_acl_ACL { + $1_acl_ACL(x) +} +function $IsValid'$1_acl_ACL'(s: $1_acl_ACL): bool { + $IsValid'vec'address''(s->$list) +} +function {:inline} $IsEqual'$1_acl_ACL'(s1: $1_acl_ACL, s2: $1_acl_ACL): bool { + $IsEqual'vec'address''(s1->$list, s2->$list)} + +// fun acl::contains [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+104 +procedure {:inline 1} $1_acl_contains(_$t0: $1_acl_ACL, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (int); + var $t3: bool; + var $t4: int; + var $t0: $1_acl_ACL; + var $t1: int; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume {:print "$at(2,1270,1271)"} true; + assume {:print "$track_local(25,2,0):", $t0} $t0 == $t0; + + // trace_local[addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume {:print "$track_local(25,2,1):", $t1} $t1 == $t1; + + // $t2 := get_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:26+10 + assume {:print "$at(2,1350,1360)"} true; + $t2 := $t0->$list; + + // $t3 := vector::contains
($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:9+35 + call $t3 := $1_vector_contains'address'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(2,1333,1368)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(25,2):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:9+35 + assume {:print "$track_return(25,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun acl::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+104 +procedure {:timeLimit 80} $1_acl_contains$verify(_$t0: $1_acl_ACL, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (int); + var $t3: bool; + var $t4: int; + var $t0: $1_acl_ACL; + var $t1: int; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume {:print "$at(2,1270,1271)"} true; + assume ($IsValid'$1_acl_ACL'($t0) && (var $range_0 := $Range(0, LenVec($t0->$list)); (var $range_1 := $Range(0, LenVec($t0->$list)); (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($t0->$list, i), ReadVec($t0->$list, j)) ==> $IsEqual'num'(i, j))))))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume $IsValid'address'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume {:print "$track_local(25,2,0):", $t0} $t0 == $t0; + + // trace_local[addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:38:5+1 + assume {:print "$track_local(25,2,1):", $t1} $t1 == $t1; + + // $t2 := get_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:26+10 + assume {:print "$at(2,1350,1360)"} true; + $t2 := $t0->$list; + + // $t3 := vector::contains
($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:9+35 + call $t3 := $1_vector_contains'address'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(2,1333,1368)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(25,2):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:39:9+35 + assume {:print "$track_return(25,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; +L1: + + // assert Eq($t3, acl::spec_contains($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:11:9+44 + assume {:print "$at(3,302,346)"} true; + assert {:msg "assert_failed(3,302,346): post-condition does not hold"} + $IsEqual'bool'($t3, $1_acl_spec_contains($t0, $t1)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:11:9+44 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:40:5+1 + assume {:print "$at(2,1373,1374)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun acl::empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:20:5+77 +procedure {:timeLimit 80} $1_acl_empty$verify() returns ($ret0: $1_acl_ACL) +{ + // declare local variables + var $t0: Vec (int); + var $t1: int; + var $t2: $1_acl_ACL; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := vector::empty
() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:21:20+24 + assume {:print "$at(2,657,681)"} true; + call $t0 := $1_vector_empty'address'(); + if ($abort_flag) { + assume {:print "$at(2,657,681)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(25,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := pack acl::ACL($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:21:9+37 + $t2 := $1_acl_ACL($t0); + + // assert forall i: num: Range(0, Len
(select acl::ACL.list($t2))), j: num: Range(0, Len
(select acl::ACL.list($t2))): Implies(Eq
(Index(select acl::ACL.list($t2), i), Index(select acl::ACL.list($t2), j)), Eq(i, j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + assume {:print "$at(3,39,124)"} true; + assert {:msg "assert_failed(3,39,124): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($t2->$list)); (var $range_1 := $Range(0, LenVec($t2->$list)); (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($t2->$list, i), ReadVec($t2->$list, j)) ==> $IsEqual'num'(i, j)))))))); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:21:9+37 + assume {:print "$at(2,646,683)"} true; + assume {:print "$track_return(25,3,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:22:5+1 + assume {:print "$at(2,688,689)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:22:5+1 + assume {:print "$at(2,688,689)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:22:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:22:5+1 + assume {:print "$at(2,688,689)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun acl::remove [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+236 +procedure {:timeLimit 80} $1_acl_remove$verify(_$t0: $Mutation ($1_acl_ACL), _$t1: int) returns ($ret0: $Mutation ($1_acl_ACL)) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_acl_ACL; + var $t5: $Mutation (Vec (int)); + var $t6: Vec (int); + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (Vec (int)); + var $t13: int; + var $t0: $Mutation ($1_acl_ACL); + var $t1: int; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+1 + assume {:print "$at(2,974,975)"} true; + assume ($IsValid'$1_acl_ACL'($Dereference($t0)) && (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j))))))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+1 + assume $IsValid'address'($t1); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+1 + $t4 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+1 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,4,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // trace_local[addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:31:5+1 + assume {:print "$track_local(25,4,1):", $t1} $t1 == $t1; + + // $t5 := borrow_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:32:47+14 + assume {:print "$at(2,1071,1085)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$list); + + // $t6 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:32:46+23 + $t6 := $Dereference($t5); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:32:46+23 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,4,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // ($t7, $t8) := vector::index_of
($t6, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:32:30+39 + call $t7,$t8 := $1_vector_index_of'address'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(2,1054,1093)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(25,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[index]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:32:21+5 + assume {:print "$track_local(25,4,3):", $t8} $t8 == $t8; + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + assume {:print "$at(2,1103,1156)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + assume {:print "$at(2,1103,1156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 +L0: + + // assert forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + assume {:print "$at(3,39,124)"} true; + assert {:msg "assert_failed(3,39,124): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j)))))))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + assume {:print "$at(2,1103,1156)"} true; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:48+12 + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:24+37 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(2,1118,1155)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(25,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + assume {:print "$at(2,1103,1156)"} true; + assume {:print "$track_abort(25,4):", $t11} $t11 == $t11; + + // $t9 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + $t9 := $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:33:9+53 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:29+4 + assume {:print "$at(2,1186,1190)"} true; +L2: + + // $t12 := borrow_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:24+14 + assume {:print "$at(2,1181,1195)"} true; + $t12 := $ChildMutation($t0, 0, $Dereference($t0)->$list); + + // $t13 := vector::remove
($t12, $t8) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:9+37 + call $t13,$t12 := $1_vector_remove'address'($t12, $t8); + if ($abort_flag) { + assume {:print "$at(2,1166,1203)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(25,4):", $t9} $t9 == $t9; + goto L4; + } + + // write_back[Reference($t0).list (vector
)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_acl_ACL'_list($Dereference($t0), $Dereference($t12))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:9+37 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,4,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:9+37 + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:34:46+1 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,4,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // assert forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + assume {:print "$at(3,39,124)"} true; + assert {:msg "assert_failed(3,39,124): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j)))))))); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:35:5+1 + assume {:print "$at(2,1209,1210)"} true; +L3: + + // assert Not(Not(acl::spec_contains[]($t4, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:20:9+66 + assume {:print "$at(3,581,647)"} true; + assert {:msg "assert_failed(3,581,647): function does not abort under this condition"} + !!$1_acl_spec_contains($t4, $t1); + + // assert Not(acl::spec_contains($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:21:9+35 + assume {:print "$at(3,656,691)"} true; + assert {:msg "assert_failed(3,656,691): post-condition does not hold"} + !$1_acl_spec_contains($Dereference($t0), $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:21:9+35 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:35:5+1 + assume {:print "$at(2,1209,1210)"} true; +L4: + + // assert Not(acl::spec_contains[]($t4, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:19:5+169 + assume {:print "$at(3,528,697)"} true; + assert {:msg "assert_failed(3,528,697): abort not covered by any of the `aborts_if` clauses"} + !$1_acl_spec_contains($t4, $t1); + + // assert And(Not(acl::spec_contains[]($t4, $t1)), Eq(1, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:19:5+169 + assert {:msg "assert_failed(3,528,697): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$1_acl_spec_contains($t4, $t1) && $IsEqual'num'(1, $t9)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:19:5+169 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun acl::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+196 +procedure {:timeLimit 80} $1_acl_add$verify(_$t0: $Mutation ($1_acl_ACL), _$t1: int) returns ($ret0: $Mutation ($1_acl_ACL)) +{ + // declare local variables + var $t2: int; + var $t3: $1_acl_ACL; + var $t4: $Mutation (Vec (int)); + var $t5: Vec (int); + var $t6: bool; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $Mutation (Vec (int)); + var $t0: $Mutation ($1_acl_ACL); + var $t1: int; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+1 + assume {:print "$at(2,731,732)"} true; + assume ($IsValid'$1_acl_ACL'($Dereference($t0)) && (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j))))))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+1 + assume $IsValid'address'($t1); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+1 + $t3 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+1 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,0,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // trace_local[addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:25:5+1 + assume {:print "$track_local(25,0,1):", $t1} $t1 == $t1; + + // $t4 := borrow_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:35+14 + assume {:print "$at(2,813,827)"} true; + $t4 := $ChildMutation($t0, 0, $Dereference($t0)->$list); + + // $t5 := read_ref($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:34+23 + $t5 := $Dereference($t4); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:34+23 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,0,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // $t6 := vector::contains
($t5, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:18+39 + call $t6 := $1_vector_contains'address'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(2,796,835)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(25,0):", $t7} $t7 == $t7; + goto L4; + } + + // $t8 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:17+1 + call $t8 := $Not($t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + assume {:print "$at(2,787,871)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 +L0: + + // assert forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + assume {:print "$at(3,39,124)"} true; + assert {:msg "assert_failed(3,39,124): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j)))))))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + assume {:print "$at(2,787,871)"} true; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:83+8 + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:59+33 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(2,837,870)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(25,0):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + assume {:print "$at(2,787,871)"} true; + assume {:print "$track_abort(25,0):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + $t7 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:26:9+84 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:32+4 + assume {:print "$at(2,904,908)"} true; +L2: + + // $t11 := borrow_field.list($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:27+14 + assume {:print "$at(2,899,913)"} true; + $t11 := $ChildMutation($t0, 0, $Dereference($t0)->$list); + + // vector::push_back
($t11, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:9+39 + call $t11 := $1_vector_push_back'address'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(2,881,920)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(25,0):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t0).list (vector
)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:9+39 + $t0 := $UpdateMutation($t0, $Update'$1_acl_ACL'_list($Dereference($t0), $Dereference($t11))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:9+39 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,0,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:27:48+1 + $temp_0'$1_acl_ACL' := $Dereference($t0); + assume {:print "$track_local(25,0,0):", $temp_0'$1_acl_ACL'} $temp_0'$1_acl_ACL' == $temp_0'$1_acl_ACL'; + + // assert forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:3:9+85 + assume {:print "$at(3,39,124)"} true; + assert {:msg "assert_failed(3,39,124): data invariant does not hold"} + (var $range_0 := $Range(0, LenVec($Dereference($t0)->$list)); (var $range_1 := $Range(0, LenVec($Dereference($t0)->$list)); (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($Dereference($t0)->$list, i), ReadVec($Dereference($t0)->$list, j)) ==> $IsEqual'num'(i, j)))))))); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:28:5+1 + assume {:print "$at(2,926,927)"} true; +L3: + + // assert Not(acl::spec_contains[]($t3, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:15:9+65 + assume {:print "$at(3,408,473)"} true; + assert {:msg "assert_failed(3,408,473): function does not abort under this condition"} + !$1_acl_spec_contains($t3, $t1); + + // assert acl::spec_contains($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:16:9+34 + assume {:print "$at(3,482,516)"} true; + assert {:msg "assert_failed(3,482,516): post-condition does not hold"} + $1_acl_spec_contains($Dereference($t0), $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:16:9+34 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:28:5+1 + assume {:print "$at(2,926,927)"} true; +L4: + + // assert acl::spec_contains[]($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:14:5+164 + assume {:print "$at(3,358,522)"} true; + assert {:msg "assert_failed(3,358,522): abort not covered by any of the `aborts_if` clauses"} + $1_acl_spec_contains($t3, $t1); + + // assert And(acl::spec_contains[]($t3, $t1), Eq(1, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:14:5+164 + assert {:msg "assert_failed(3,358,522): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ($1_acl_spec_contains($t3, $t1) && $IsEqual'num'(1, $t7)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:14:5+164 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun acl::assert_contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:43:5+139 +procedure {:timeLimit 80} $1_acl_assert_contains$verify(_$t0: $1_acl_ACL, _$t1: int) returns () +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: $1_acl_ACL; + var $t1: int; + var $temp_0'$1_acl_ACL': $1_acl_ACL; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall i: num: Range(0, Len
(select acl::ACL.list($t0))), j: num: Range(0, Len
(select acl::ACL.list($t0))): Implies(Eq
(Index(select acl::ACL.list($t0), i), Index(select acl::ACL.list($t0), j)), Eq(i, j))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:43:5+1 + assume {:print "$at(2,1426,1427)"} true; + assume ($IsValid'$1_acl_ACL'($t0) && (var $range_0 := $Range(0, LenVec($t0->$list)); (var $range_1 := $Range(0, LenVec($t0->$list)); (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($t0->$list, i), ReadVec($t0->$list, j)) ==> $IsEqual'num'(i, j))))))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:43:5+1 + assume $IsValid'address'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:43:5+1 + assume {:print "$track_local(25,1,0):", $t0} $t0 == $t0; + + // trace_local[addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:43:5+1 + assume {:print "$track_local(25,1,1):", $t1} $t1 == $t1; + + // $t2 := acl::contains($t0, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:17+20 + assume {:print "$at(2,1498,1518)"} true; + call $t2 := $1_acl_contains($t0, $t1); + if ($abort_flag) { + assume {:print "$at(2,1498,1518)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(25,1):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 + assume {:print "$at(2,1490,1558)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:63+12 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:63+12 + assume {:print "$at(2,1544,1556)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:39+37 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(2,1520,1557)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(25,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 + assume {:print "$at(2,1490,1558)"} true; + assume {:print "$track_abort(25,1):", $t5} $t5 == $t5; + + // $t3 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 + $t3 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:44:77+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:45:5+1 + assume {:print "$at(2,1564,1565)"} true; +L3: + + // assert Not(Not(acl::spec_contains[]($t0, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:25:9+66 + assume {:print "$at(3,761,827)"} true; + assert {:msg "assert_failed(3,761,827): function does not abort under this condition"} + !!$1_acl_spec_contains($t0, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:25:9+66 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.move:45:5+1 + assume {:print "$at(2,1564,1565)"} true; +L4: + + // assert Not(acl::spec_contains[]($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:24:5+130 + assume {:print "$at(3,703,833)"} true; + assert {:msg "assert_failed(3,703,833): abort not covered by any of the `aborts_if` clauses"} + !$1_acl_spec_contains($t0, $t1); + + // assert And(Not(acl::spec_contains[]($t0, $t1)), Eq(1, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:24:5+130 + assert {:msg "assert_failed(3,703,833): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (!$1_acl_spec_contains($t0, $t1) && $IsEqual'num'(1, $t3)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/acl.spec.move:24:5+130 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun aggregator::limit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:33:5+80 +procedure {:timeLimit 80} $1_aggregator_limit$verify(_$t0: $1_aggregator_Aggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_aggregator_Aggregator; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:33:5+1 + assume {:print "$at(19,1588,1589)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t0); + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:33:5+1 + assume {:print "$track_local(26,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:34:9+16 + assume {:print "$at(19,1646,1662)"} true; + $t1 := $t0->$limit; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:34:9+16 + assume {:print "$track_return(26,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.move:35:5+1 + assume {:print "$at(19,1667,1668)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.spec.move:64:9+16 + assume {:print "$at(20,2716,2732)"} true; + assert {:msg "assert_failed(20,2716,2732): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator.spec.move:64:9+16 + $ret0 := $t1; + return; + +} + +// struct aggregator_factory::AggregatorFactory at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:23:5+85 +datatype $1_aggregator_factory_AggregatorFactory { + $1_aggregator_factory_AggregatorFactory($phantom_table: Table int (int)) +} +function {:inline} $Update'$1_aggregator_factory_AggregatorFactory'_phantom_table(s: $1_aggregator_factory_AggregatorFactory, x: Table int (int)): $1_aggregator_factory_AggregatorFactory { + $1_aggregator_factory_AggregatorFactory(x) +} +function $IsValid'$1_aggregator_factory_AggregatorFactory'(s: $1_aggregator_factory_AggregatorFactory): bool { + $IsValid'$1_table_Table'address_u128''(s->$phantom_table) +} +function {:inline} $IsEqual'$1_aggregator_factory_AggregatorFactory'(s1: $1_aggregator_factory_AggregatorFactory, s2: $1_aggregator_factory_AggregatorFactory): bool { + s1 == s2 +} +var $1_aggregator_factory_AggregatorFactory_$memory: $Memory $1_aggregator_factory_AggregatorFactory; + +// fun aggregator_factory::create_aggregator [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+282 +procedure {:inline 1} $1_aggregator_factory_create_aggregator(_$t0: $signer, _$t1: int) returns ($ret0: $1_aggregator_Aggregator) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_aggregator_Aggregator; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:71:9+39 + assume {:print "$at(22,3349,3388)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$at(21,2108,2109)"} true; + assume {:print "$track_local(27,0,0):", $t0} $t0 == $t0; + + // trace_local[limit]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$track_local(27,0,1):", $t1} $t1 == $t1; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + assume {:print "$track_abort(27,0):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + + // $t5 := aggregator_factory::create_aggregator_internal($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:52:9+33 + assume {:print "$at(21,2351,2384)"} true; + call $t5 := $1_aggregator_factory_create_aggregator_internal($t1); + if ($abort_flag) { + assume {:print "$at(21,2351,2384)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(27,0):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:52:9+33 + assume {:print "$track_return(27,0,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 + assume {:print "$at(21,2389,2390)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 + assume {:print "$at(21,2389,2390)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 + assume {:print "$at(21,2389,2390)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_factory::create_aggregator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+282 +procedure {:timeLimit 80} $1_aggregator_factory_create_aggregator$verify(_$t0: $signer, _$t1: int) returns ($ret0: $1_aggregator_Aggregator) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_aggregator_Aggregator; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $1_aggregator_factory_AggregatorFactory_$memory#56: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$at(21,2108,2109)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:71:9+39 + assume {:print "$at(22,3349,3388)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // @56 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$at(21,2108,2109)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#56 := $1_aggregator_factory_AggregatorFactory_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$track_local(27,0,0):", $t0} $t0 == $t0; + + // trace_local[limit]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:49:5+1 + assume {:print "$track_local(27,0,1):", $t1} $t1 == $t1; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + assume {:print "$track_abort(27,0):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:51:9+52 + assume {:print "$at(21,2289,2341)"} true; + + // $t5 := aggregator_factory::create_aggregator_internal($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:52:9+33 + assume {:print "$at(21,2351,2384)"} true; + call $t5 := $1_aggregator_factory_create_aggregator_internal($t1); + if ($abort_flag) { + assume {:print "$at(21,2351,2384)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(27,0):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:52:9+33 + assume {:print "$track_return(27,0,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 + assume {:print "$at(21,2389,2390)"} true; +L1: + + // assert Not(Neq
($t2, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:73:9+38 + assume {:print "$at(22,3428,3466)"} true; + assert {:msg "assert_failed(22,3428,3466): function does not abort under this condition"} + !!$IsEqual'address'($t2, 1); + + // assert Not(Not(exists[@56](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:74:9+58 + assume {:print "$at(22,3475,3533)"} true; + assert {:msg "assert_failed(22,3475,3533): function does not abort under this condition"} + !!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#56, 1); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:74:9+58 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:53:5+1 + assume {:print "$at(21,2389,2390)"} true; +L2: + + // assert Or(Neq
($t2, 0x1), Not(exists[@56](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:69:5+291 + assume {:print "$at(22,3248,3539)"} true; + assert {:msg "assert_failed(22,3248,3539): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($t2, 1) || !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#56, 1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:69:5+291 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_factory::create_aggregator_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+396 +procedure {:inline 1} $1_aggregator_factory_create_aggregator_internal(_$t0: int) returns ($ret0: $1_aggregator_Aggregator) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_aggregator_factory_AggregatorFactory); + var $t8: $1_aggregator_Aggregator; + var $t0: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_aggregator_factory_AggregatorFactory': $1_aggregator_factory_AggregatorFactory; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+1 + assume {:print "$at(21,1556,1557)"} true; + assume {:print "$track_local(27,1,0):", $t0} $t0 == $t0; + + // $t1 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:39:39+19 + assume {:print "$at(21,1711,1730)"} true; + $t1 := 1; + assume $IsValid'address'($t1); + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:39:13+6 + $t2 := $ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:30+29 + assume {:print "$at(21,1762,1791)"} true; +L0: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:30+29 + assume {:print "$at(21,1762,1791)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:13+47 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(21,1745,1792)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(27,1):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + assume {:print "$track_abort(27,1):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:71+19 + assume {:print "$at(21,1875,1894)"} true; +L2: + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:71+19 + assume {:print "$at(21,1875,1894)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // $t7 := borrow_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:34+17 + if (!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(21,1838,1855)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(27,1):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := opaque begin: aggregator_factory::new_aggregator($t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume {:print "$at(21,1905,1946)"} true; + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + havoc $temp_0'$1_aggregator_factory_AggregatorFactory'; + $t7 := $UpdateMutation($t7, $temp_0'$1_aggregator_factory_AggregatorFactory'); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsValid'$1_aggregator_factory_AggregatorFactory'($Dereference($t7)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsValid'$1_aggregator_Aggregator'($t8); + + // assume Eq($t8, aggregator_factory::spec_new_aggregator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsEqual'$1_aggregator_Aggregator'($t8, $1_aggregator_factory_spec_new_aggregator($t0)); + + // assume Eq(aggregator::spec_get_limit($t8), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($t8), $t0); + + // $t8 := opaque end: aggregator_factory::new_aggregator($t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + + // write_back[aggregator_factory::AggregatorFactory@]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + $1_aggregator_factory_AggregatorFactory_$memory := $ResourceUpdate($1_aggregator_factory_AggregatorFactory_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume {:print "$track_return(27,1,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 + assume {:print "$at(21,1951,1952)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 + assume {:print "$at(21,1951,1952)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 + assume {:print "$at(21,1951,1952)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun aggregator_factory::create_aggregator_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+396 +procedure {:timeLimit 80} $1_aggregator_factory_create_aggregator_internal$verify(_$t0: int) returns ($ret0: $1_aggregator_Aggregator) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_aggregator_factory_AggregatorFactory); + var $t8: $1_aggregator_Aggregator; + var $t0: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_aggregator_factory_AggregatorFactory': $1_aggregator_factory_AggregatorFactory; + var $temp_0'u128': int; + var $1_aggregator_factory_AggregatorFactory_$memory#54: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+1 + assume {:print "$at(21,1556,1557)"} true; + assume $IsValid'u128'($t0); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // @54 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+1 + $1_aggregator_factory_AggregatorFactory_$memory#54 := $1_aggregator_factory_AggregatorFactory_$memory; + + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:37:5+1 + assume {:print "$track_local(27,1,0):", $t0} $t0 == $t0; + + // $t1 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:39:39+19 + assume {:print "$at(21,1711,1730)"} true; + $t1 := 1; + assume $IsValid'address'($t1); + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:39:13+6 + $t2 := $ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:30+29 + assume {:print "$at(21,1762,1791)"} true; +L0: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:30+29 + assume {:print "$at(21,1762,1791)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:40:13+47 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(21,1745,1792)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(27,1):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + assume {:print "$at(21,1664,1802)"} true; + assume {:print "$track_abort(27,1):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:38:9+138 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:71+19 + assume {:print "$at(21,1875,1894)"} true; +L2: + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:71+19 + assume {:print "$at(21,1875,1894)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // $t7 := borrow_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:43:34+17 + if (!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(21,1838,1855)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(27,1):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := opaque begin: aggregator_factory::new_aggregator($t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume {:print "$at(21,1905,1946)"} true; + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + havoc $temp_0'$1_aggregator_factory_AggregatorFactory'; + $t7 := $UpdateMutation($t7, $temp_0'$1_aggregator_factory_AggregatorFactory'); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsValid'$1_aggregator_factory_AggregatorFactory'($Dereference($t7)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsValid'$1_aggregator_Aggregator'($t8); + + // assume Eq($t8, aggregator_factory::spec_new_aggregator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsEqual'$1_aggregator_Aggregator'($t8, $1_aggregator_factory_spec_new_aggregator($t0)); + + // assume Eq(aggregator::spec_get_limit($t8), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($t8), $t0); + + // $t8 := opaque end: aggregator_factory::new_aggregator($t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + + // write_back[aggregator_factory::AggregatorFactory@]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + $1_aggregator_factory_AggregatorFactory_$memory := $ResourceUpdate($1_aggregator_factory_AggregatorFactory_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:44:9+41 + assume {:print "$track_return(27,1,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 + assume {:print "$at(21,1951,1952)"} true; +L3: + + // assert Not(Not(exists[@54](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:64:9+58 + assume {:print "$at(22,3029,3087)"} true; + assert {:msg "assert_failed(22,3029,3087): function does not abort under this condition"} + !!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#54, 1); + + // assert Eq(aggregator::spec_get_limit($t8), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:60:9+52 + assume {:print "$at(22,2845,2897)"} true; + assert {:msg "assert_failed(22,2845,2897): post-condition does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($t8), $t0); + + // assert Eq(aggregator::spec_aggregator_get_val($t8), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:61:9+57 + assume {:print "$at(22,2906,2963)"} true; + assert {:msg "assert_failed(22,2906,2963): post-condition does not hold"} + $IsEqual'u128'($1_aggregator_spec_aggregator_get_val($t8), 0); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:61:9+57 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:45:5+1 + assume {:print "$at(21,1951,1952)"} true; +L4: + + // assert Not(exists[@54](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:57:5+272 + assume {:print "$at(22,2697,2969)"} true; + assert {:msg "assert_failed(22,2697,2969): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#54, 1); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:57:5+272 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun aggregator_factory::initialize_aggregator_factory [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:28:5+319 +procedure {:timeLimit 80} $1_aggregator_factory_initialize_aggregator_factory$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_aggregator_factory_AggregatorFactory; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: Table int (int); + var $t6: $1_aggregator_factory_AggregatorFactory; + var $t0: $signer; + var $temp_0'$1_aggregator_factory_AggregatorFactory': $1_aggregator_factory_AggregatorFactory; + var $temp_0'signer': $signer; + var $1_aggregator_factory_AggregatorFactory_$memory#58: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:28:5+1 + assume {:print "$at(21,1149,1150)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:28:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:50:9+50 + assume {:print "$at(22,2457,2507)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // @58 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:28:5+1 + assume {:print "$at(21,1149,1150)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#58 := $1_aggregator_factory_AggregatorFactory_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:28:5+1 + assume {:print "$track_local(27,2,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + assume {:print "$at(21,1237,1300)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + assume {:print "$at(21,1237,1300)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + assume {:print "$at(21,1237,1300)"} true; + assume {:print "$track_abort(27,2):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:29:9+63 + assume {:print "$at(21,1237,1300)"} true; + + // $t5 := table::new() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:31:28+12 + assume {:print "$at(21,1382,1394)"} true; + call $t5 := $1_table_new'address_u128'(); + if ($abort_flag) { + assume {:print "$at(21,1382,1394)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(27,2):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := pack aggregator_factory::AggregatorFactory($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:30:34+69 + assume {:print "$at(21,1335,1404)"} true; + $t6 := $1_aggregator_factory_AggregatorFactory($t5); + + // trace_local[aggregator_factory]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:30:13+18 + assume {:print "$track_local(27,2,1):", $t6} $t6 == $t6; + + // move_to($t6, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:33:9+7 + assume {:print "$at(21,1414,1421)"} true; + if ($ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_aggregator_factory_AggregatorFactory_$memory := $ResourceUpdate($1_aggregator_factory_AggregatorFactory_$memory, $t0->$addr, $t6); + } + if ($abort_flag) { + assume {:print "$at(21,1414,1421)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(27,2):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:34:5+1 + assume {:print "$at(21,1467,1468)"} true; +L1: + + // assert Not(Neq
($t2, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:51:9+38 + assume {:print "$at(22,2516,2554)"} true; + assert {:msg "assert_failed(22,2516,2554): function does not abort under this condition"} + !!$IsEqual'address'($t2, 1); + + // assert Not(exists[@58]($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:52:9+42 + assume {:print "$at(22,2563,2605)"} true; + assert {:msg "assert_failed(22,2563,2605): function does not abort under this condition"} + !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#58, $t2); + + // assert exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:54:9+40 + assume {:print "$at(22,2645,2685)"} true; + assert {:msg "assert_failed(22,2645,2685): post-condition does not hold"} + $ResourceExists($1_aggregator_factory_AggregatorFactory_$memory, $t2); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:54:9+40 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.move:34:5+1 + assume {:print "$at(21,1467,1468)"} true; +L2: + + // assert Or(Neq
($t2, 0x1), exists[@58]($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:48:5+333 + assume {:print "$at(22,2358,2691)"} true; + assert {:msg "assert_failed(22,2358,2691): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($t2, 1) || $ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#58, $t2)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:48:5+333 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// struct aggregator_v2::Aggregator at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:52:5+111 +datatype $1_aggregator_v2_Aggregator'u64' { + $1_aggregator_v2_Aggregator'u64'($value: int, $max_value: int) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'u64''_value(s: $1_aggregator_v2_Aggregator'u64', x: int): $1_aggregator_v2_Aggregator'u64' { + $1_aggregator_v2_Aggregator'u64'(x, s->$max_value) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'u64''_max_value(s: $1_aggregator_v2_Aggregator'u64', x: int): $1_aggregator_v2_Aggregator'u64' { + $1_aggregator_v2_Aggregator'u64'(s->$value, x) +} +function $IsValid'$1_aggregator_v2_Aggregator'u64''(s: $1_aggregator_v2_Aggregator'u64'): bool { + $IsValid'u64'(s->$value) + && $IsValid'u64'(s->$max_value) +} +function {:inline} $IsEqual'$1_aggregator_v2_Aggregator'u64''(s1: $1_aggregator_v2_Aggregator'u64', s2: $1_aggregator_v2_Aggregator'u64'): bool { + s1 == s2 +} + +// struct aggregator_v2::Aggregator at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:52:5+111 +datatype $1_aggregator_v2_Aggregator'u128' { + $1_aggregator_v2_Aggregator'u128'($value: int, $max_value: int) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'u128''_value(s: $1_aggregator_v2_Aggregator'u128', x: int): $1_aggregator_v2_Aggregator'u128' { + $1_aggregator_v2_Aggregator'u128'(x, s->$max_value) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'u128''_max_value(s: $1_aggregator_v2_Aggregator'u128', x: int): $1_aggregator_v2_Aggregator'u128' { + $1_aggregator_v2_Aggregator'u128'(s->$value, x) +} +function $IsValid'$1_aggregator_v2_Aggregator'u128''(s: $1_aggregator_v2_Aggregator'u128'): bool { + $IsValid'u128'(s->$value) + && $IsValid'u128'(s->$max_value) +} +function {:inline} $IsEqual'$1_aggregator_v2_Aggregator'u128''(s1: $1_aggregator_v2_Aggregator'u128', s2: $1_aggregator_v2_Aggregator'u128'): bool { + s1 == s2 +} + +// struct aggregator_v2::Aggregator<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:52:5+111 +datatype $1_aggregator_v2_Aggregator'#0' { + $1_aggregator_v2_Aggregator'#0'($value: #0, $max_value: #0) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'#0''_value(s: $1_aggregator_v2_Aggregator'#0', x: #0): $1_aggregator_v2_Aggregator'#0' { + $1_aggregator_v2_Aggregator'#0'(x, s->$max_value) +} +function {:inline} $Update'$1_aggregator_v2_Aggregator'#0''_max_value(s: $1_aggregator_v2_Aggregator'#0', x: #0): $1_aggregator_v2_Aggregator'#0' { + $1_aggregator_v2_Aggregator'#0'(s->$value, x) +} +function $IsValid'$1_aggregator_v2_Aggregator'#0''(s: $1_aggregator_v2_Aggregator'#0'): bool { + $IsValid'#0'(s->$value) + && $IsValid'#0'(s->$max_value) +} +function {:inline} $IsEqual'$1_aggregator_v2_Aggregator'#0''(s1: $1_aggregator_v2_Aggregator'#0', s2: $1_aggregator_v2_Aggregator'#0'): bool { + s1 == s2 +} + +// struct aggregator_v2::AggregatorSnapshot at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:60:5+88 +datatype $1_aggregator_v2_AggregatorSnapshot'u64' { + $1_aggregator_v2_AggregatorSnapshot'u64'($value: int) +} +function {:inline} $Update'$1_aggregator_v2_AggregatorSnapshot'u64''_value(s: $1_aggregator_v2_AggregatorSnapshot'u64', x: int): $1_aggregator_v2_AggregatorSnapshot'u64' { + $1_aggregator_v2_AggregatorSnapshot'u64'(x) +} +function $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''(s: $1_aggregator_v2_AggregatorSnapshot'u64'): bool { + $IsValid'u64'(s->$value) +} +function {:inline} $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(s1: $1_aggregator_v2_AggregatorSnapshot'u64', s2: $1_aggregator_v2_AggregatorSnapshot'u64'): bool { + s1 == s2 +} + +// struct aggregator_v2::DerivedStringSnapshot at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:64:5+104 +datatype $1_aggregator_v2_DerivedStringSnapshot { + $1_aggregator_v2_DerivedStringSnapshot($value: $1_string_String, $padding: Vec (int)) +} +function {:inline} $Update'$1_aggregator_v2_DerivedStringSnapshot'_value(s: $1_aggregator_v2_DerivedStringSnapshot, x: $1_string_String): $1_aggregator_v2_DerivedStringSnapshot { + $1_aggregator_v2_DerivedStringSnapshot(x, s->$padding) +} +function {:inline} $Update'$1_aggregator_v2_DerivedStringSnapshot'_padding(s: $1_aggregator_v2_DerivedStringSnapshot, x: Vec (int)): $1_aggregator_v2_DerivedStringSnapshot { + $1_aggregator_v2_DerivedStringSnapshot(s->$value, x) +} +function $IsValid'$1_aggregator_v2_DerivedStringSnapshot'(s: $1_aggregator_v2_DerivedStringSnapshot): bool { + $IsValid'$1_string_String'(s->$value) + && $IsValid'vec'u8''(s->$padding) +} +function {:inline} $IsEqual'$1_aggregator_v2_DerivedStringSnapshot'(s1: $1_aggregator_v2_DerivedStringSnapshot, s2: $1_aggregator_v2_DerivedStringSnapshot): bool { + $IsEqual'$1_string_String'(s1->$value, s2->$value) + && $IsEqual'vec'u8''(s1->$padding, s2->$padding)} + +// fun aggregator_v2::add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+182 +procedure {:inline 1} $1_aggregator_v2_add'u64'(_$t0: $Mutation ($1_aggregator_v2_Aggregator'u64'), _$t1: int) returns ($ret0: $Mutation ($1_aggregator_v2_Aggregator'u64')) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$at(25,5348,5349)"} true; + $temp_0'$1_aggregator_v2_Aggregator'u64'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'u64''} $temp_0'$1_aggregator_v2_Aggregator'u64'' == $temp_0'$1_aggregator_v2_Aggregator'u64''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$track_local(28,0,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + havoc $t3; + + // if ($t3) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + if ($t3) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L7: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + goto L5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L6: + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u64''; + $t0 := $UpdateMutation($t0, $temp_0'$1_aggregator_v2_Aggregator'u64''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($Dereference($t0)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'bool'($t2); + + // $t2 := opaque end: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + + // if ($t2) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + if ($t2) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 + assume {:print "$at(25,5501,5521)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L5 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:45+41 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(25,5481,5522)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + goto L5; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + assume {:print "$track_abort(28,0):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + $t4 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 +L2: + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + assume {:print "$at(25,5523,5524)"} true; + $temp_0'$1_aggregator_v2_Aggregator'u64'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'u64''} $temp_0'$1_aggregator_v2_Aggregator'u64'' == $temp_0'$1_aggregator_v2_Aggregator'u64''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 +L5: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::add<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+182 +procedure {:inline 1} $1_aggregator_v2_add'#0'(_$t0: $Mutation ($1_aggregator_v2_Aggregator'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_aggregator_v2_Aggregator'#0')) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: $Mutation ($1_aggregator_v2_Aggregator'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$at(25,5348,5349)"} true; + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$track_local(28,0,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + havoc $t3; + + // if ($t3) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + if ($t3) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L7: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + goto L5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L6: + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_aggregator_v2_Aggregator'#0''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($Dereference($t0)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'bool'($t2); + + // $t2 := opaque end: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + + // if ($t2) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + if ($t2) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 + assume {:print "$at(25,5501,5521)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L5 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:45+41 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(25,5481,5522)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + goto L5; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + assume {:print "$track_abort(28,0):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + $t4 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 +L2: + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + assume {:print "$at(25,5523,5524)"} true; + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 +L5: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+182 +procedure {:timeLimit 80} $1_aggregator_v2_add$verify(_$t0: $Mutation ($1_aggregator_v2_Aggregator'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_aggregator_v2_Aggregator'#0')) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: $Mutation ($1_aggregator_v2_Aggregator'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$at(25,5348,5349)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume $IsValid'#0'($t1); + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:109:5+1 + assume {:print "$track_local(28,0,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + havoc $t3; + + // if ($t3) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + if ($t3) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L7: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + goto L5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 +L6: + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume {:print "$at(25,5453,5479)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_aggregator_v2_Aggregator'#0''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($Dereference($t0)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + assume $IsValid'bool'($t2); + + // $t2 := opaque end: aggregator_v2::try_add<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:17+26 + + // if ($t2) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + if ($t2) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:65+20 + assume {:print "$at(25,5501,5521)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L5 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:45+41 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(25,5481,5522)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,0):", $t4} $t4 == $t4; + goto L5; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + assume {:print "$at(25,5445,5523)"} true; + assume {:print "$track_abort(28,0):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + $t4 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:9+78 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 +L2: + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + assume {:print "$at(25,5523,5524)"} true; + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,0,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:110:87+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 +L5: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:111:5+1 + assume {:print "$at(25,5529,5530)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::sub [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+183 +procedure {:inline 1} $1_aggregator_v2_sub'u64'(_$t0: $Mutation ($1_aggregator_v2_Aggregator'u64'), _$t1: int) returns ($ret0: $Mutation ($1_aggregator_v2_Aggregator'u64')) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + assume {:print "$at(25,6132,6133)"} true; + $temp_0'$1_aggregator_v2_Aggregator'u64'' := $Dereference($t0); + assume {:print "$track_local(28,17,0):", $temp_0'$1_aggregator_v2_Aggregator'u64''} $temp_0'$1_aggregator_v2_Aggregator'u64'' == $temp_0'$1_aggregator_v2_Aggregator'u64''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + assume {:print "$track_local(28,17,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::try_sub<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + havoc $t3; + + // if ($t3) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + if ($t3) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 +L7: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + assume {:print "$track_abort(28,17):", $t4} $t4 == $t4; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + goto L5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 +L6: + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u64''; + $t0 := $UpdateMutation($t0, $temp_0'$1_aggregator_v2_Aggregator'u64''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($Dereference($t0)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume $IsValid'bool'($t2); + + // $t2 := opaque end: aggregator_v2::try_sub<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + + // if ($t2) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + if ($t2) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + assume {:print "$at(25,6229,6308)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:65+21 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:65+21 + assume {:print "$at(25,6285,6306)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L5 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:45+42 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(25,6265,6307)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,17):", $t4} $t4 == $t4; + goto L5; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + assume {:print "$at(25,6229,6308)"} true; + assume {:print "$track_abort(28,17):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + $t4 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 +L2: + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 + assume {:print "$at(25,6308,6309)"} true; + $temp_0'$1_aggregator_v2_Aggregator'u64'' := $Dereference($t0); + assume {:print "$track_local(28,17,0):", $temp_0'$1_aggregator_v2_Aggregator'u64''} $temp_0'$1_aggregator_v2_Aggregator'u64'' == $temp_0'$1_aggregator_v2_Aggregator'u64''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 +L5: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+183 +procedure {:timeLimit 80} $1_aggregator_v2_sub$verify(_$t0: $Mutation ($1_aggregator_v2_Aggregator'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_aggregator_v2_Aggregator'#0')) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: $Mutation ($1_aggregator_v2_Aggregator'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + assume {:print "$at(25,6132,6133)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + assume $IsValid'#0'($t1); + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,17,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:123:5+1 + assume {:print "$track_local(28,17,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::try_sub<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + havoc $t3; + + // if ($t3) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + if ($t3) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 +L7: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + assume {:print "$track_abort(28,17):", $t4} $t4 == $t4; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + goto L5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 +L6: + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume {:print "$at(25,6237,6263)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_aggregator_v2_Aggregator'#0''); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($Dereference($t0)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + assume $IsValid'bool'($t2); + + // $t2 := opaque end: aggregator_v2::try_sub<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:17+26 + + // if ($t2) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + if ($t2) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + assume {:print "$at(25,6229,6308)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:65+21 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:65+21 + assume {:print "$at(25,6285,6306)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L5 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:45+42 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(25,6265,6307)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,17):", $t4} $t4 == $t4; + goto L5; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + assume {:print "$at(25,6229,6308)"} true; + assume {:print "$track_abort(28,17):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + $t4 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:9+79 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 +L2: + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 + assume {:print "$at(25,6308,6309)"} true; + $temp_0'$1_aggregator_v2_Aggregator'#0'' := $Dereference($t0); + assume {:print "$track_local(28,17,0):", $temp_0'$1_aggregator_v2_Aggregator'#0''} $temp_0'$1_aggregator_v2_Aggregator'#0'' == $temp_0'$1_aggregator_v2_Aggregator'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:124:88+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 +L5: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:125:5+1 + assume {:print "$at(25,6314,6315)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::max_value [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:70:5+131 +procedure {:inline 1} $1_aggregator_v2_max_value'u64'(_$t0: $1_aggregator_v2_Aggregator'u64') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_aggregator_v2_Aggregator'u64'; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:70:5+1 + assume {:print "$at(25,3348,3349)"} true; + assume {:print "$track_local(28,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.max_value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:71:9+20 + assume {:print "$at(25,3453,3473)"} true; + $t1 := $t0->$max_value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:71:9+20 + assume {:print "$track_return(28,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:72:5+1 + assume {:print "$at(25,3478,3479)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:72:5+1 + assume {:print "$at(25,3478,3479)"} true; + $ret0 := $t1; + return; + +} + +// fun aggregator_v2::max_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:70:5+131 +procedure {:timeLimit 80} $1_aggregator_v2_max_value$verify(_$t0: $1_aggregator_v2_Aggregator'#0') returns ($ret0: #0) +{ + // declare local variables + var $t1: #0; + var $t0: $1_aggregator_v2_Aggregator'#0'; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:70:5+1 + assume {:print "$at(25,3348,3349)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($t0); + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:70:5+1 + assume {:print "$track_local(28,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.max_value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:71:9+20 + assume {:print "$at(25,3453,3473)"} true; + $t1 := $t0->$max_value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:71:9+20 + assume {:print "$track_return(28,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:72:5+1 + assume {:print "$at(25,3478,3479)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:72:5+1 + assume {:print "$at(25,3478,3479)"} true; + $ret0 := $t1; + return; + +} + +// fun aggregator_v2::create_aggregator_with_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:80:5+261 +procedure {:timeLimit 80} $1_aggregator_v2_create_aggregator_with_value$verify(_$t0: #0, _$t1: #0) returns ($ret0: $1_aggregator_v2_Aggregator'#0') +{ + // declare local variables + var $t2: $1_aggregator_v2_Aggregator'#0'; + var $t3: bool; + var $t4: int; + var $t5: $Mutation ($1_aggregator_v2_Aggregator'#0'); + var $t6: $1_aggregator_v2_Aggregator'#0'; + var $t0: #0; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:80:5+1 + assume {:print "$at(25,3817,3818)"} true; + assume $IsValid'#0'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:80:5+1 + assume $IsValid'#0'($t1); + + // trace_local[start_value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:80:5+1 + assume {:print "$track_local(28,3,0):", $t0} $t0 == $t0; + + // trace_local[max_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:80:5+1 + assume {:print "$track_local(28,3,1):", $t1} $t1 == $t1; + + // $t2 := opaque begin: aggregator_v2::create_aggregator<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + assume {:print "$at(25,3981,4009)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + assume {:print "$at(25,3981,4009)"} true; + assume {:print "$track_abort(28,3):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + assume {:print "$at(25,3981,4009)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($t2); + + // $t2 := opaque end: aggregator_v2::create_aggregator<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:26+28 + + // trace_local[aggregator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:81:13+10 + assume {:print "$track_local(28,3,2):", $t2} $t2 == $t2; + + // $t5 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:82:13+15 + assume {:print "$at(25,4023,4038)"} true; + $t5 := $Mutation($Local(2), EmptyVec(), $t2); + + // aggregator_v2::add<#0>($t5, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:82:9+33 + call $t5 := $1_aggregator_v2_add'#0'($t5, $t0); + if ($abort_flag) { + assume {:print "$at(25,4019,4052)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(28,3):", $t4} $t4 == $t4; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:82:9+33 + $t2 := $Dereference($t5); + + // trace_local[aggregator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:82:9+33 + assume {:print "$track_local(28,3,2):", $t2} $t2 == $t2; + + // $t6 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:83:9+10 + assume {:print "$at(25,4062,4072)"} true; + $t6 := $t2; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:83:9+10 + assume {:print "$track_return(28,3,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:84:5+1 + assume {:print "$at(25,4077,4078)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:84:5+1 + assume {:print "$at(25,4077,4078)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:84:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:84:5+1 + assume {:print "$at(25,4077,4078)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::create_unbounded_aggregator_with_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:93:5+249 +procedure {:timeLimit 80} $1_aggregator_v2_create_unbounded_aggregator_with_value$verify(_$t0: #0) returns ($ret0: $1_aggregator_v2_Aggregator'#0') +{ + // declare local variables + var $t1: $1_aggregator_v2_Aggregator'#0'; + var $t2: bool; + var $t3: int; + var $t4: $Mutation ($1_aggregator_v2_Aggregator'#0'); + var $t5: $1_aggregator_v2_Aggregator'#0'; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:93:5+1 + assume {:print "$at(25,4526,4527)"} true; + assume $IsValid'#0'($t0); + + // trace_local[start_value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:93:5+1 + assume {:print "$track_local(28,7,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: aggregator_v2::create_unbounded_aggregator<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + assume {:print "$at(25,4677,4706)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + assume {:print "$at(25,4677,4706)"} true; + assume {:print "$track_abort(28,7):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + assume {:print "$at(25,4677,4706)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($t1); + + // $t1 := opaque end: aggregator_v2::create_unbounded_aggregator<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:26+29 + + // trace_local[aggregator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:94:13+10 + assume {:print "$track_local(28,7,1):", $t1} $t1 == $t1; + + // $t4 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:95:13+15 + assume {:print "$at(25,4720,4735)"} true; + $t4 := $Mutation($Local(1), EmptyVec(), $t1); + + // aggregator_v2::add<#0>($t4, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:95:9+33 + call $t4 := $1_aggregator_v2_add'#0'($t4, $t0); + if ($abort_flag) { + assume {:print "$at(25,4716,4749)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(28,7):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[LocalRoot($t1)@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:95:9+33 + $t1 := $Dereference($t4); + + // trace_local[aggregator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:95:9+33 + assume {:print "$track_local(28,7,1):", $t1} $t1 == $t1; + + // $t5 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:96:9+10 + assume {:print "$at(25,4759,4769)"} true; + $t5 := $t1; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:96:9+10 + assume {:print "$track_return(28,7,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:97:5+1 + assume {:print "$at(25,4774,4775)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:97:5+1 + assume {:print "$at(25,4774,4775)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:97:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:97:5+1 + assume {:print "$at(25,4774,4775)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::is_at_least [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+258 +procedure {:inline 1} $1_aggregator_v2_is_at_least'u64'(_$t0: $1_aggregator_v2_Aggregator'u64', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t0: $1_aggregator_v2_Aggregator'u64'; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume {:print "$at(25,7072,7073)"} true; + assume {:print "$track_local(28,9,0):", $t0} $t0 == $t0; + + // trace_local[min_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume {:print "$track_local(28,9,1):", $t1} $t1 == $t1; + + // $t2 := features::aggregator_v2_is_at_least_api_enabled() on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:17+49 + assume {:print "$at(25,7192,7241)"} true; + call $t2 := $1_features_aggregator_v2_is_at_least_api_enabled(); + if ($abort_flag) { + assume {:print "$at(25,7192,7241)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(28,9):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + assume {:print "$at(25,7184,7274)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 +L0: + + // $t4 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:68+30 + assume {:print "$at(25,7243,7273)"} true; + $t4 := 6; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + assume {:print "$at(25,7184,7274)"} true; + assume {:print "$track_abort(28,9):", $t4} $t4 == $t4; + + // $t3 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + $t3 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:26+10 + assume {:print "$at(25,7301,7311)"} true; +L2: + + // $t5 := opaque begin: aggregator_v2::is_at_least_impl<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + assume {:print "$track_abort(28,9):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + assume $IsValid'bool'($t5); + + // $t5 := opaque end: aggregator_v2::is_at_least_impl<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$track_return(28,9,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun aggregator_v2::is_at_least [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+258 +procedure {:timeLimit 80} $1_aggregator_v2_is_at_least$verify(_$t0: $1_aggregator_v2_Aggregator'#0', _$t1: #0) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t0: $1_aggregator_v2_Aggregator'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_aggregator_v2_Aggregator'#0'': $1_aggregator_v2_Aggregator'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume {:print "$at(25,7072,7073)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume {:print "$track_local(28,9,0):", $t0} $t0 == $t0; + + // trace_local[min_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:137:5+1 + assume {:print "$track_local(28,9,1):", $t1} $t1 == $t1; + + // $t2 := features::aggregator_v2_is_at_least_api_enabled() on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:17+49 + assume {:print "$at(25,7192,7241)"} true; + call $t2 := $1_features_aggregator_v2_is_at_least_api_enabled(); + if ($abort_flag) { + assume {:print "$at(25,7192,7241)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(28,9):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + assume {:print "$at(25,7184,7274)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 +L0: + + // $t4 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:68+30 + assume {:print "$at(25,7243,7273)"} true; + $t4 := 6; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + assume {:print "$at(25,7184,7274)"} true; + assume {:print "$track_abort(28,9):", $t4} $t4 == $t4; + + // $t3 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + $t3 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:138:9+90 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:26+10 + assume {:print "$at(25,7301,7311)"} true; +L2: + + // $t5 := opaque begin: aggregator_v2::is_at_least_impl<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + assume {:print "$track_abort(28,9):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$at(25,7284,7324)"} true; + assume $IsValid'bool'($t5); + + // $t5 := opaque end: aggregator_v2::is_at_least_impl<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:139:9+40 + assume {:print "$track_return(28,9,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator_v2/aggregator_v2.move:140:5+1 + assume {:print "$at(25,7329,7330)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// struct any::Any at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:24:5+86 +datatype $1_any_Any { + $1_any_Any($type_name: $1_string_String, $data: Vec (int)) +} +function {:inline} $Update'$1_any_Any'_type_name(s: $1_any_Any, x: $1_string_String): $1_any_Any { + $1_any_Any(x, s->$data) +} +function {:inline} $Update'$1_any_Any'_data(s: $1_any_Any, x: Vec (int)): $1_any_Any { + $1_any_Any(s->$type_name, x) +} +function $IsValid'$1_any_Any'(s: $1_any_Any): bool { + $IsValid'$1_string_String'(s->$type_name) + && $IsValid'vec'u8''(s->$data) +} +function {:inline} $IsEqual'$1_any_Any'(s1: $1_any_Any, s2: $1_any_Any): bool { + $IsEqual'$1_string_String'(s1->$type_name, s2->$type_name) + && $IsEqual'vec'u8''(s1->$data, s2->$data)} + +// fun any::type_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:45:5+73 +procedure {:timeLimit 80} $1_any_type_name$verify(_$t0: $1_any_Any) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t0: $1_any_Any; + var $temp_0'$1_any_Any': $1_any_Any; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:45:5+1 + assume {:print "$at(116,1457,1458)"} true; + assume $IsValid'$1_any_Any'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:45:5+1 + assume {:print "$track_local(29,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.type_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:46:9+15 + assume {:print "$at(116,1509,1524)"} true; + $t1 := $t0->$type_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:46:9+15 + assume {:print "$track_return(29,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:47:5+1 + assume {:print "$at(116,1529,1530)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:39:9+16 + assume {:print "$at(117,1121,1137)"} true; + assert {:msg "assert_failed(117,1121,1137): function does not abort under this condition"} + !false; + + // assert Eq($t1, select any::Any.type_name($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:40:9+33 + assume {:print "$at(117,1146,1179)"} true; + assert {:msg "assert_failed(117,1146,1179): post-condition does not hold"} + $IsEqual'$1_string_String'($t1, $t0->$type_name); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:40:9+33 + $ret0 := $t1; + return; + +} + +// fun any::pack [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:31:5+156 +procedure {:timeLimit 80} $1_any_pack$verify(_$t0: #0) returns ($ret0: $1_any_Any) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: Vec (int); + var $t4: $1_any_Any; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_any_Any': $1_any_Any; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:31:5+1 + assume {:print "$at(116,959,960)"} true; + assume $IsValid'#0'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:31:5+1 + assume {:print "$track_local(29,0,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_name<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:33:24+25 + assume {:print "$at(116,1042,1067)"} true; + call $t1 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(116,1042,1067)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(29,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:34:19+12 + assume {:print "$at(116,1087,1099)"} true; + call $t3 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(116,1087,1099)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(29,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := pack any::Any($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:32:9+96 + assume {:print "$at(116,1013,1109)"} true; + $t4 := $1_any_Any($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:32:9+96 + assume {:print "$track_return(29,0,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:36:5+1 + assume {:print "$at(116,1114,1115)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:10:9+16 + assume {:print "$at(117,230,246)"} true; + assert {:msg "assert_failed(117,230,246): function does not abort under this condition"} + !false; + + // assert Eq($t4, pack any::Any(type_info::$type_name<#0>(), bcs::serialize<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:11:9+123 + assume {:print "$at(117,255,378)"} true; + assert {:msg "assert_failed(117,255,378): post-condition does not hold"} + $IsEqual'$1_any_Any'($t4, $1_any_Any($1_type_info_$type_name'#0'(), $1_bcs_serialize'#0'($t0))); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:11:9+123 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:36:5+1 + assume {:print "$at(116,1114,1115)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:7:5+329 + assume {:print "$at(117,124,453)"} true; + assert {:msg "assert_failed(117,124,453): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:7:5+329 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun any::unpack [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:39:5+178 +procedure {:timeLimit 80} $1_any_unpack$verify(_$t0: $1_any_Any) returns ($ret0: #0) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: #0; + var $t9: bool; + var $t0: $1_any_Any; + var $temp_0'#0': #0; + var $temp_0'$1_any_Any': $1_any_Any; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:39:5+1 + assume {:print "$at(116,1231,1232)"} true; + assume $IsValid'$1_any_Any'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:39:5+1 + assume {:print "$track_local(29,2,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_name<#0>() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:17+25 + assume {:print "$at(116,1284,1309)"} true; + call $t1 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(116,1284,1309)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(29,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := get_field.type_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:46+14 + $t3 := $t0->$type_name; + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:43+2 + $t4 := $IsEqual'$1_string_String'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 + assume {:print "$at(116,1276,1369)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:86+14 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:86+14 + assume {:print "$at(116,1353,1367)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:62+39 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(116,1329,1368)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(29,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 + assume {:print "$at(116,1276,1369)"} true; + assume {:print "$track_abort(29,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:40:9+93 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:23+4 + assume {:print "$at(116,1393,1397)"} true; +L2: + + // $t7 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:23+9 + assume {:print "$at(116,1393,1402)"} true; + $t7 := $t0->$data; + + // $t8 := opaque begin: from_bcs::from_bytes<#0>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + + // assume Identical($t9, Not(from_bcs::deserializable<#0>($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + assume ($t9 == !$1_from_bcs_deserializable'#0'($t7)); + + // if ($t9) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + if ($t9) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 +L6: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + assume {:print "$at(116,1379,1403)"} true; + assume {:print "$track_abort(29,2):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 +L5: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + assume {:print "$at(116,1379,1403)"} true; + assume $IsValid'#0'($t8); + + // assume Eq<#0>($t8, from_bcs::deserialize<#0>($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + assume $IsEqual'#0'($t8, $1_from_bcs_deserialize'#0'($t7)); + + // $t8 := opaque end: from_bcs::from_bytes<#0>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:41:9+24 + assume {:print "$track_return(29,2,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:42:5+1 + assume {:print "$at(116,1408,1409)"} true; +L3: + + // assert Not(Neq(type_info::$type_name[]<#0>(), select any::Any.type_name($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:27:9+54 + assume {:print "$at(117,730,784)"} true; + assert {:msg "assert_failed(117,730,784): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($1_type_info_$type_name'#0'(), $t0->$type_name); + + // assert Not(Not(from_bcs::deserializable[]<#0>(select any::Any.data($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:28:9+50 + assume {:print "$at(117,793,843)"} true; + assert {:msg "assert_failed(117,793,843): function does not abort under this condition"} + !!$1_from_bcs_deserializable'#0'($t0->$data); + + // assert Eq<#0>($t8, from_bcs::deserialize<#0>(select any::Any.data($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:21:9+54 + assume {:print "$at(117,569,623)"} true; + assert {:msg "assert_failed(117,569,623): post-condition does not hold"} + $IsEqual'#0'($t8, $1_from_bcs_deserialize'#0'($t0->$data)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:21:9+54 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.move:42:5+1 + assume {:print "$at(116,1408,1409)"} true; +L4: + + // assert Or(Neq(type_info::$type_name[]<#0>(), select any::Any.type_name($t0)), Not(from_bcs::deserializable[]<#0>(select any::Any.data($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:18:5+170 + assume {:print "$at(117,459,629)"} true; + assert {:msg "assert_failed(117,459,629): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'$1_string_String'($1_type_info_$type_name'#0'(), $t0->$type_name) || !$1_from_bcs_deserializable'#0'($t0->$data)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/any.spec.move:18:5+170 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:131:10+102 +function {:inline} $1_big_vector_spec_table_len'u64_vec'#0''(t: Table int (Vec (#0))): int { + $1_table_with_length_spec_len'u64_vec'#0''(t) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:135:10+122 +function {:inline} $1_big_vector_spec_table_contains'u64_vec'#0''(t: Table int (Vec (#0)), k: int): bool { + $1_table_with_length_spec_contains'u64_vec'#0''(t, k) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:139:10+206 +function {:inline} $1_big_vector_spec_at'#0'(v: $1_big_vector_BigVector'#0', i: int): #0 { + (var bucket := (i div v->$bucket_size); (var idx := (i mod v->$bucket_size); (var v := $1_table_with_length_spec_get'u64_vec'#0''(v->$buckets, bucket); ReadVec(v, idx)))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+83 +function {:inline} $1_big_vector_$is_empty'#0'(self: $1_big_vector_BigVector'#0'): bool { + $IsEqual'u64'($1_big_vector_$length'#0'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+77 +function {:inline} $1_big_vector_$length'#0'(self: $1_big_vector_BigVector'#0'): int { + self->$end_index +} + +// struct big_vector::BigVector<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:18:5+136 +datatype $1_big_vector_BigVector'#0' { + $1_big_vector_BigVector'#0'($buckets: Table int (Vec (#0)), $end_index: int, $bucket_size: int) +} +function {:inline} $Update'$1_big_vector_BigVector'#0''_buckets(s: $1_big_vector_BigVector'#0', x: Table int (Vec (#0))): $1_big_vector_BigVector'#0' { + $1_big_vector_BigVector'#0'(x, s->$end_index, s->$bucket_size) +} +function {:inline} $Update'$1_big_vector_BigVector'#0''_end_index(s: $1_big_vector_BigVector'#0', x: int): $1_big_vector_BigVector'#0' { + $1_big_vector_BigVector'#0'(s->$buckets, x, s->$bucket_size) +} +function {:inline} $Update'$1_big_vector_BigVector'#0''_bucket_size(s: $1_big_vector_BigVector'#0', x: int): $1_big_vector_BigVector'#0' { + $1_big_vector_BigVector'#0'(s->$buckets, s->$end_index, x) +} +function $IsValid'$1_big_vector_BigVector'#0''(s: $1_big_vector_BigVector'#0'): bool { + $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''(s->$buckets) + && $IsValid'u64'(s->$end_index) + && $IsValid'u64'(s->$bucket_size) +} +function {:inline} $IsEqual'$1_big_vector_BigVector'#0''(s1: $1_big_vector_BigVector'#0', s2: $1_big_vector_BigVector'#0'): bool { + s1 == s2 +} + +// fun big_vector::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:273:5+168 +procedure {:timeLimit 80} $1_big_vector_contains$verify(_$t0: $1_big_vector_BigVector'#0', _$t1: #0) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t0: $1_big_vector_BigVector'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:273:5+1 + assume {:print "$at(144,12687,12688)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:273:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:273:5+1 + assume {:print "$track_local(31,3,0):", $t0} $t0 == $t0; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:273:5+1 + assume {:print "$track_local(31,3,1):", $t1} $t1 == $t1; + + // $t2 := big_vector::is_empty<#0>($t0) on_abort goto L3 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:13+14 + assume {:print "$at(144,12760,12774)"} true; + call $t2 := $1_big_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,12760,12774)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,3):", $t3} $t3 == $t3; + goto L3; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:9+32 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:29+12 +L1: + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:36+5 + assume {:print "$at(144,12783,12788)"} true; + $t4 := false; + assume $IsValid'bool'($t4); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:29+12 + assume {:print "$track_return(31,3,0):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:29+12 + $t5 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:274:29+12 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:275:35+4 + assume {:print "$at(144,12824,12828)"} true; +L0: + + // ($t6, $t7) := big_vector::index_of<#0>($t0, $t1) on_abort goto L3 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:275:26+19 + assume {:print "$at(144,12815,12834)"} true; + call $t6,$t7 := $1_big_vector_index_of'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(144,12815,12834)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,3):", $t3} $t3 == $t3; + goto L3; + } + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:275:21+1 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:276:9+5 + assume {:print "$at(144,12844,12849)"} true; + assume {:print "$track_return(31,3,0):", $t6} $t6 == $t6; + + // $t5 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:276:9+5 + $t5 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:277:5+1 + assume {:print "$at(144,12854,12855)"} true; +L2: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:277:5+1 + assume {:print "$at(144,12854,12855)"} true; + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:277:5+1 +L3: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:277:5+1 + assume {:print "$at(144,12854,12855)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun big_vector::index_of<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:257:5+533 +procedure {:inline 1} $1_big_vector_index_of'#0'(_$t0: $1_big_vector_BigVector'#0', _$t1: #0) returns ($ret0: bool, $ret1: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: Table int (Vec (#0)); + var $t11: Vec (#0); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t0: $1_big_vector_BigVector'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:257:5+1 + assume {:print "$at(144,12005,12006)"} true; + assume {:print "$track_local(31,7,0):", $t0} $t0 == $t0; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:257:5+1 + assume {:print "$track_local(31,7,1):", $t1} $t1 == $t1; + + // $t5 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:258:53+13 + assume {:print "$at(144,12125,12138)"} true; + $t5 := $t0->$buckets; + + // $t6 := table_with_length::length>($t5) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:258:27+40 + call $t6 := $1_table_with_length_length'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,12099,12139)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // trace_local[num_buckets]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:258:13+11 + assume {:print "$track_local(31,7,4):", $t6} $t6 == $t6; + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:259:28+1 + assume {:print "$at(144,12168,12169)"} true; + $t8 := 0; + assume $IsValid'u64'($t8); + + // trace_local[bucket_index]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:259:13+12 + assume {:print "$track_local(31,7,2):", $t8} $t8 == $t8; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume {:print "$at(144,12186,12198)"} true; +L5: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume {:print "$at(144,12186,12198)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'u64'($t2); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'vec'#0''($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume $IsValid'u64'($t15); + + // trace_local[bucket_index]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume {:print "$info(): enter loop, variable(s) bucket_index havocked and reassigned"} true; + assume {:print "$track_local(31,7,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:16+12 + assume !$abort_flag; + + // $t9 := <($t2, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:29+1 + call $t9 := $Lt($t2, $t6); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:9+333 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:260:9+333 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:261:50+4 + assume {:print "$at(144,12265,12269)"} true; +L2: + + // $t10 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:261:49+13 + assume {:print "$at(144,12264,12277)"} true; + $t10 := $t0->$buckets; + + // $t11 := table_with_length::borrow>($t10, $t2) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:261:23+54 + call $t11 := $1_table_with_length_borrow'u64_vec'#0''($t10, $t2); + if ($abort_flag) { + assume {:print "$at(144,12238,12292)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // ($t12, $t13) := vector::index_of<#0>($t11, $t1) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:262:30+26 + assume {:print "$at(144,12323,12349)"} true; + call $t12,$t13 := $1_vector_index_of'#0'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(144,12323,12349)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // trace_local[i]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:262:25+1 + assume {:print "$track_local(31,7,3):", $t13} $t13 == $t13; + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:263:13+93 + assume {:print "$at(144,12363,12456)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + assume {:print "$at(144,12392,12442)"} true; +L4: + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:25+4 + assume {:print "$at(144,12400,12404)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t17 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:46+16 + $t17 := $t0->$bucket_size; + + // $t18 := *($t2, $t17) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:44+1 + call $t18 := $MulU64($t2, $t17); + if ($abort_flag) { + assume {:print "$at(144,12419,12420)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // $t19 := +($t18, $t13) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:63+1 + call $t19 := $AddU64($t18, $t13); + if ($abort_flag) { + assume {:print "$at(144,12438,12439)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + assume {:print "$track_return(31,7,0):", $t16} $t16 == $t16; + + // trace_return[1]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + assume {:print "$track_return(31,7,1):", $t19} $t19 == $t19; + + // $t20 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + $t20 := $t16; + + // $t21 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + $t21 := $t19; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:264:17+50 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:266:28+12 + assume {:print "$at(144,12485,12497)"} true; +L3: + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:266:43+1 + assume {:print "$at(144,12500,12501)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := +($t2, $t14) on_abort goto L8 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:266:41+1 + call $t15 := $AddU64($t2, $t14); + if ($abort_flag) { + assume {:print "$at(144,12498,12499)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,7):", $t7} $t7 == $t7; + goto L8; + } + + // trace_local[bucket_index]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:266:13+12 + assume {:print "$track_local(31,7,2):", $t15} $t15 == $t15; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:266:44+1 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + assume {:print "$at(144,12522,12532)"} true; +L0: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:10+5 + assume {:print "$at(144,12523,12528)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:17+1 + $t23 := 0; + assume $IsValid'u64'($t23); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + assume {:print "$track_return(31,7,0):", $t22} $t22 == $t22; + + // trace_return[1]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + assume {:print "$track_return(31,7,1):", $t23} $t23 == $t23; + + // $t20 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + $t20 := $t22; + + // $t21 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + $t21 := $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + goto L7; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + // Loop invariant checking block for the loop started with header: L5 +L6: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:268:9+10 + assume {:print "$at(144,12522,12532)"} true; + assume false; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:269:5+1 + assume {:print "$at(144,12537,12538)"} true; +L7: + + // return ($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:269:5+1 + assume {:print "$at(144,12537,12538)"} true; + $ret0 := $t20; + $ret1 := $t21; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:269:5+1 +L8: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:269:5+1 + assume {:print "$at(144,12537,12538)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun big_vector::borrow<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+252 +procedure {:inline 1} $1_big_vector_borrow'#0'(_$t0: $1_big_vector_BigVector'#0', _$t1: int) returns ($ret0: #0) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Table int (Vec (#0)); + var $t8: int; + var $t9: int; + var $t10: Vec (#0); + var $t11: int; + var $t12: int; + var $t13: #0; + var $t0: $1_big_vector_BigVector'#0'; + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume {:print "$at(144,2306,2307)"} true; + assume {:print "$track_local(31,1,0):", $t0} $t0 == $t0; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume {:print "$track_local(31,1,1):", $t1} $t1 == $t1; + + // $t2 := big_vector::length<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:21+12 + assume {:print "$at(144,2382,2394)"} true; + call $t2 := $1_big_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,2382,2394)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := <($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:19+1 + call $t4 := $Lt($t1, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + assume {:print "$at(144,2370,2442)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:59+20 + assume {:print "$at(144,2420,2440)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:35+45 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(144,2396,2441)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + assume {:print "$at(144,2370,2442)"} true; + assume {:print "$track_abort(31,1):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:51+4 + assume {:print "$at(144,2494,2498)"} true; +L2: + + // $t7 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:50+13 + assume {:print "$at(144,2493,2506)"} true; + $t7 := $t0->$buckets; + + // $t8 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:69+16 + $t8 := $t0->$bucket_size; + + // $t9 := /($t1, $t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:67+1 + call $t9 := $Div($t1, $t8); + if ($abort_flag) { + assume {:print "$at(144,2510,2511)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t10 := table_with_length::borrow>($t7, $t9) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:24+62 + call $t10 := $1_table_with_length_borrow'u64_vec'#0''($t7, $t9); + if ($abort_flag) { + assume {:print "$at(144,2467,2529)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t11 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:92+16 + $t11 := $t0->$bucket_size; + + // $t12 := %($t1, $t11) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:90+1 + call $t12 := $Mod($t1, $t11); + if ($abort_flag) { + assume {:print "$at(144,2533,2534)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t13 := vector::borrow<#0>($t10, $t12) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:9+100 + call $t13 := $1_vector_borrow'#0'($t10, $t12); + if ($abort_flag) { + assume {:print "$at(144,2452,2552)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:9+100 + assume {:print "$track_return(31,1,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 + assume {:print "$at(144,2557,2558)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 + assume {:print "$at(144,2557,2558)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 + assume {:print "$at(144,2557,2558)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun big_vector::borrow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+252 +procedure {:timeLimit 80} $1_big_vector_borrow$verify(_$t0: $1_big_vector_BigVector'#0', _$t1: int) returns ($ret0: #0) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Table int (Vec (#0)); + var $t8: int; + var $t9: int; + var $t10: Vec (#0); + var $t11: int; + var $t12: int; + var $t13: #0; + var $t0: $1_big_vector_BigVector'#0'; + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume {:print "$at(144,2306,2307)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume {:print "$track_local(31,1,0):", $t0} $t0 == $t0; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:65:5+1 + assume {:print "$track_local(31,1,1):", $t1} $t1 == $t1; + + // $t2 := big_vector::length<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:21+12 + assume {:print "$at(144,2382,2394)"} true; + call $t2 := $1_big_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,2382,2394)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := <($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:19+1 + call $t4 := $Lt($t1, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + assume {:print "$at(144,2370,2442)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:59+20 + assume {:print "$at(144,2420,2440)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:35+45 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(144,2396,2441)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + assume {:print "$at(144,2370,2442)"} true; + assume {:print "$track_abort(31,1):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:66:9+72 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:51+4 + assume {:print "$at(144,2494,2498)"} true; +L2: + + // $t7 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:50+13 + assume {:print "$at(144,2493,2506)"} true; + $t7 := $t0->$buckets; + + // $t8 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:69+16 + $t8 := $t0->$bucket_size; + + // $t9 := /($t1, $t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:67+1 + call $t9 := $Div($t1, $t8); + if ($abort_flag) { + assume {:print "$at(144,2510,2511)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t10 := table_with_length::borrow>($t7, $t9) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:24+62 + call $t10 := $1_table_with_length_borrow'u64_vec'#0''($t7, $t9); + if ($abort_flag) { + assume {:print "$at(144,2467,2529)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t11 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:92+16 + $t11 := $t0->$bucket_size; + + // $t12 := %($t1, $t11) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:90+1 + call $t12 := $Mod($t1, $t11); + if ($abort_flag) { + assume {:print "$at(144,2533,2534)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // $t13 := vector::borrow<#0>($t10, $t12) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:9+100 + call $t13 := $1_vector_borrow'#0'($t10, $t12); + if ($abort_flag) { + assume {:print "$at(144,2452,2552)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:67:9+100 + assume {:print "$track_return(31,1,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 + assume {:print "$at(144,2557,2558)"} true; +L3: + + // assert Not(Ge($t1, big_vector::$length[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:60:9+28 + assume {:print "$at(145,2623,2651)"} true; + assert {:msg "assert_failed(145,2623,2651): function does not abort under this condition"} + !($t1 >= $1_big_vector_$length'#0'($t0)); + + // assert Eq<#0>($t13, big_vector::spec_at<#0>($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:61:9+35 + assume {:print "$at(145,2660,2695)"} true; + assert {:msg "assert_failed(145,2660,2695): post-condition does not hold"} + $IsEqual'#0'($t13, $1_big_vector_spec_at'#0'($t0, $t1)); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:61:9+35 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:68:5+1 + assume {:print "$at(144,2557,2558)"} true; +L4: + + // assert Ge($t1, big_vector::$length[]<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:59:5+136 + assume {:print "$at(145,2565,2701)"} true; + assert {:msg "assert_failed(145,2565,2701): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $1_big_vector_$length'#0'($t0)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:59:5+136 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun big_vector::borrow_mut<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+276 +procedure {:inline 1} $1_big_vector_borrow_mut'#0'(_$t0: $Mutation ($1_big_vector_BigVector'#0'), _$t1: int) returns ($ret0: $Mutation (#0), $ret1: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t2: $1_big_vector_BigVector'#0'; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation (Table int (Vec (#0))); + var $t9: int; + var $t10: int; + var $t11: $Mutation (Vec (#0)); + var $t12: int; + var $t13: int; + var $t14: $Mutation (#0); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + assume {:print "$at(144,2682,2683)"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + assume {:print "$track_local(31,2,1):", $t1} $t1 == $t1; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:28+4 + assume {:print "$at(144,2777,2781)"} true; + $t2 := $Dereference($t0); + + // $t3 := big_vector::length<#0>($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:21+12 + call $t3 := $1_big_vector_length'#0'($t2); + if ($abort_flag) { + assume {:print "$at(144,2770,2782)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := <($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:19+1 + call $t5 := $Lt($t1, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:59+20 + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:35+45 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(144,2784,2829)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + assume {:print "$track_abort(31,2):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:63+4 + assume {:print "$at(144,2894,2898)"} true; +L2: + + // $t8 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:58+17 + assume {:print "$at(144,2889,2906)"} true; + $t8 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t9 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:81+16 + $t9 := $Dereference($t0)->$bucket_size; + + // $t10 := /($t1, $t9) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:79+1 + call $t10 := $Div($t1, $t9); + if ($abort_flag) { + assume {:print "$at(144,2910,2911)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // $t11 := table_with_length::borrow_mut>($t8, $t10) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:28+70 + call $t11,$t8 := $1_table_with_length_borrow_mut'u64_vec'#0''($t8, $t10); + if ($abort_flag) { + assume {:print "$at(144,2859,2929)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // $t12 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:104+16 + $t12 := $Dereference($t0)->$bucket_size; + + // $t13 := %($t1, $t12) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:102+1 + call $t13 := $Mod($t1, $t12); + if ($abort_flag) { + assume {:print "$at(144,2933,2934)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // $t14 := vector::borrow_mut<#0>($t11, $t13) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + call $t14,$t11 := $1_vector_borrow_mut'#0'($t11, $t13); + if ($abort_flag) { + assume {:print "$at(144,2840,2952)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,2):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'#0' := $Dereference($t14); + assume {:print "$track_return(31,2,0):", $temp_0'#0'} $temp_0'#0' == $temp_0'#0'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 + assume {:print "$at(144,2957,2958)"} true; +L3: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 + assume {:print "$at(144,2957,2958)"} true; + $ret0 := $t14; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 + assume {:print "$at(144,2957,2958)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun big_vector::borrow_mut [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+276 +procedure {:timeLimit 80} $1_big_vector_borrow_mut$verify(_$t0: $Mutation ($1_big_vector_BigVector'#0'), _$t1: int) returns ($ret0: $Mutation (#0), $ret1: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t2: $1_big_vector_BigVector'#0'; + var $t3: $1_big_vector_BigVector'#0'; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $Mutation (Table int (Vec (#0))); + var $t10: int; + var $t11: int; + var $t12: $Mutation (Vec (#0)); + var $t13: int; + var $t14: int; + var $t15: $Mutation (#0); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + assume {:print "$at(144,2682,2683)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($Dereference($t0)) && (((((((((((!$IsEqual'u64'($Dereference($t0)->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0))) && ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0))) && ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + assume $IsValid'u64'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + $t2 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:72:5+1 + assume {:print "$track_local(31,2,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:28+4 + assume {:print "$at(144,2777,2781)"} true; + $t3 := $Dereference($t0); + + // $t4 := big_vector::length<#0>($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:21+12 + call $t4 := $1_big_vector_length'#0'($t3); + if ($abort_flag) { + assume {:print "$at(144,2770,2782)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:19+1 + call $t6 := $Lt($t1, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 +L0: + + // assert Neq(select big_vector::BigVector.bucket_size($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($Dereference($t0)->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:59+20 + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:35+45 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(144,2784,2829)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + assume {:print "$at(144,2758,2830)"} true; + assume {:print "$track_abort(31,2):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:73:9+72 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:63+4 + assume {:print "$at(144,2894,2898)"} true; +L2: + + // $t9 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:58+17 + assume {:print "$at(144,2889,2906)"} true; + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t10 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:81+16 + $t10 := $Dereference($t0)->$bucket_size; + + // $t11 := /($t1, $t10) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:79+1 + call $t11 := $Div($t1, $t10); + if ($abort_flag) { + assume {:print "$at(144,2910,2911)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t12 := table_with_length::borrow_mut>($t9, $t11) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:28+70 + call $t12,$t9 := $1_table_with_length_borrow_mut'u64_vec'#0''($t9, $t11); + if ($abort_flag) { + assume {:print "$at(144,2859,2929)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t13 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:104+16 + $t13 := $Dereference($t0)->$bucket_size; + + // $t14 := %($t1, $t13) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:102+1 + call $t14 := $Mod($t1, $t13); + if ($abort_flag) { + assume {:print "$at(144,2933,2934)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t15 := vector::borrow_mut<#0>($t12, $t14) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + call $t15,$t12 := $1_vector_borrow_mut'#0'($t12, $t14); + if ($abort_flag) { + assume {:print "$at(144,2840,2952)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,2):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'#0' := $Dereference($t15); + assume {:print "$track_return(31,2,0):", $temp_0'#0'} $temp_0'#0' == $temp_0'#0'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:74:9+112 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,2,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 + assume {:print "$at(144,2957,2958)"} true; +L3: + + // assert Not(Ge($t1, big_vector::$length[]<#0>(Freeze(false)($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:65:9+28 + assume {:print "$at(145,2777,2805)"} true; + assert {:msg "assert_failed(145,2777,2805): function does not abort under this condition"} + !($t1 >= $1_big_vector_$length'#0'($t2)); + + // assert Eq<#0>(Freeze(false)($t15), big_vector::spec_at<#0>($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:66:9+35 + assume {:print "$at(145,2814,2849)"} true; + assert {:msg "assert_failed(145,2814,2849): post-condition does not hold"} + $IsEqual'#0'($Dereference($t15), $1_big_vector_spec_at'#0'($Dereference($t0), $t1)); + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:66:9+35 + $ret0 := $t15; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:75:5+1 + assume {:print "$at(144,2957,2958)"} true; +L4: + + // assert Ge($t1, big_vector::$length[]<#0>(Freeze(false)($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:64:5+148 + assume {:print "$at(145,2707,2855)"} true; + assert {:msg "assert_failed(145,2707,2855): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $1_big_vector_$length'#0'($t2)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:64:5+148 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun big_vector::destroy<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:52:5+402 +procedure {:inline 1} $1_big_vector_destroy'#0'(_$t0: $1_big_vector_BigVector'#0') returns () +{ + // declare local variables + var $t1: Vec (#0); + var $t2: Table int (Vec (#0)); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int (Vec (#0)); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: Vec (#0); + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $Mutation (Table int (Vec (#0))); + var $t18: int; + var $t19: Table int (Vec (#0)); + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'$1_table_with_length_TableWithLength'u64_vec'#0''': Table int (Vec (#0)); + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:52:5+1 + assume {:print "$at(144,1776,1777)"} true; + assume {:print "$track_local(31,4,0):", $t0} $t0 == $t0; + + // ($t6, $t7, $t8) := unpack big_vector::BigVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:13+48 + assume {:print "$at(144,1838,1886)"} true; + $t6 := $t0->$buckets; + $t7 := $t0->$end_index; + $t8 := $t0->$bucket_size; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:58+1 + + // trace_local[end_index]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:34+9 + assume {:print "$track_local(31,4,3):", $t7} $t7 == $t7; + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:25+7 + $t2 := $t6; + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:25+7 + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:54:17+1 + assume {:print "$at(144,1911,1912)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:54:13+1 + assume {:print "$track_local(31,4,4):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$at(144,1929,1938)"} true; +L3: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$at(144,1929,1938)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t3); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t4); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'vec'#0''($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t16); + + // $t17 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($Dereference($t17)); + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$info(): enter loop, variable(s) buckets, end_index, i havocked and reassigned"} true; + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // trace_local[end_index]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$track_local(31,4,3):", $t3} $t3 == $t3; + + // trace_local[i]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$track_local(31,4,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume !$abort_flag; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:28+1 + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := >($t3, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:26+1 + call $t11 := $Gt($t3, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:9+198 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:9+198 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:74+12 + assume {:print "$at(144,2019,2031)"} true; +L2: + + // $t17 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:74+12 + assume {:print "$at(144,2019,2031)"} true; + $t17 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t12 := table_with_length::remove>($t17, $t4) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + call $t12,$t17 := $1_table_with_length_remove'u64_vec'#0''($t17, $t4); + if ($abort_flag) { + assume {:print "$at(144,1993,2035)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // write_back[LocalRoot($t2)@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + $t2 := $Dereference($t17); + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // $t13 := vector::length<#0>($t12) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:32+59 + call $t13 := $1_vector_length'#0'($t12); + if ($abort_flag) { + assume {:print "$at(144,1977,2036)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[num_elements]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:17+12 + assume {:print "$track_local(31,4,5):", $t13} $t13 == $t13; + + // $t14 := -($t3, $t13) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:57:35+1 + assume {:print "$at(144,2072,2073)"} true; + call $t14 := $Sub($t3, $t13); + if ($abort_flag) { + assume {:print "$at(144,2072,2073)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[end_index]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:57:13+9 + assume {:print "$track_local(31,4,3):", $t14} $t14 == $t14; + + // $t15 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:21+1 + assume {:print "$at(144,2108,2109)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t16 := +($t4, $t15) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:19+1 + call $t16 := $AddU64($t4, $t15); + if ($abort_flag) { + assume {:print "$at(144,2106,2107)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[i]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:13+1 + assume {:print "$track_local(31,4,4):", $t16} $t16 == $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; +L0: + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; + $t19 := $t2; + + // table_with_length::destroy_empty>($t19) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:9+41 + call $1_table_with_length_destroy_empty'u64_vec'#0''($t19); + if ($abort_flag) { + assume {:print "$at(144,2130,2171)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:50+1 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; +L5: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 +L6: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun big_vector::destroy [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:52:5+402 +procedure {:timeLimit 80} $1_big_vector_destroy$verify(_$t0: $1_big_vector_BigVector'#0') returns () +{ + // declare local variables + var $t1: Vec (#0); + var $t2: Table int (Vec (#0)); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int (Vec (#0)); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: Vec (#0); + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $Mutation (Table int (Vec (#0))); + var $t18: int; + var $t19: Table int (Vec (#0)); + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'$1_table_with_length_TableWithLength'u64_vec'#0''': Table int (Vec (#0)); + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:52:5+1 + assume {:print "$at(144,1776,1777)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:52:5+1 + assume {:print "$track_local(31,4,0):", $t0} $t0 == $t0; + + // ($t6, $t7, $t8) := unpack big_vector::BigVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:13+48 + assume {:print "$at(144,1838,1886)"} true; + $t6 := $t0->$buckets; + $t7 := $t0->$end_index; + $t8 := $t0->$bucket_size; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:58+1 + + // trace_local[end_index]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:34+9 + assume {:print "$track_local(31,4,3):", $t7} $t7 == $t7; + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:25+7 + $t2 := $t6; + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:53:25+7 + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:54:17+1 + assume {:print "$at(144,1911,1912)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:54:13+1 + assume {:print "$track_local(31,4,4):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$at(144,1929,1938)"} true; +L3: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$at(144,1929,1938)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t3); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t4); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'vec'#0''($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'u64'($t16); + + // $t17 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($Dereference($t17)); + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$info(): enter loop, variable(s) buckets, end_index, i havocked and reassigned"} true; + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // trace_local[end_index]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$track_local(31,4,3):", $t3} $t3 == $t3; + + // trace_local[i]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume {:print "$track_local(31,4,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:16+9 + assume !$abort_flag; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:28+1 + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := >($t3, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:26+1 + call $t11 := $Gt($t3, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:9+198 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:55:9+198 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:74+12 + assume {:print "$at(144,2019,2031)"} true; +L2: + + // $t17 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:74+12 + assume {:print "$at(144,2019,2031)"} true; + $t17 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t12 := table_with_length::remove>($t17, $t4) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + call $t12,$t17 := $1_table_with_length_remove'u64_vec'#0''($t17, $t4); + if ($abort_flag) { + assume {:print "$at(144,1993,2035)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // write_back[LocalRoot($t2)@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + $t2 := $Dereference($t17); + + // trace_local[buckets]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:48+42 + assume {:print "$track_local(31,4,2):", $t2} $t2 == $t2; + + // $t13 := vector::length<#0>($t12) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:32+59 + call $t13 := $1_vector_length'#0'($t12); + if ($abort_flag) { + assume {:print "$at(144,1977,2036)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[num_elements]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:56:17+12 + assume {:print "$track_local(31,4,5):", $t13} $t13 == $t13; + + // $t14 := -($t3, $t13) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:57:35+1 + assume {:print "$at(144,2072,2073)"} true; + call $t14 := $Sub($t3, $t13); + if ($abort_flag) { + assume {:print "$at(144,2072,2073)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[end_index]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:57:13+9 + assume {:print "$track_local(31,4,3):", $t14} $t14 == $t14; + + // $t15 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:21+1 + assume {:print "$at(144,2108,2109)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t16 := +($t4, $t15) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:19+1 + call $t16 := $AddU64($t4, $t15); + if ($abort_flag) { + assume {:print "$at(144,2106,2107)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // trace_local[i]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:13+1 + assume {:print "$track_local(31,4,4):", $t16} $t16 == $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:58:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; +L0: + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; + $t19 := $t2; + + // table_with_length::destroy_empty>($t19) on_abort goto L6 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:9+41 + call $1_table_with_length_destroy_empty'u64_vec'#0''($t19); + if ($abort_flag) { + assume {:print "$at(144,2130,2171)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(31,4):", $t18} $t18 == $t18; + goto L6; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:50+1 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:60:42+7 + assume {:print "$at(144,2163,2170)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; +L5: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 +L6: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:61:5+1 + assume {:print "$at(144,2177,2178)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun big_vector::destroy_empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:45:5+256 +procedure {:inline 1} $1_big_vector_destroy_empty'#0'(_$t0: $1_big_vector_BigVector'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:45:5+1 + assume {:print "$at(144,1464,1465)"} true; + assume {:print "$track_local(31,5,0):", $t0} $t0 == $t0; + + // $t1 := big_vector::is_empty<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:17+15 + assume {:print "$at(144,1530,1545)"} true; + call $t1 := $1_big_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,1530,1545)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + assume {:print "$at(144,1522,1590)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:58+17 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:58+17 + assume {:print "$at(144,1571,1588)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:34+42 + call $t4 := $1_error_invalid_argument($t3); + if ($abort_flag) { + assume {:print "$at(144,1547,1589)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + assume {:print "$at(144,1522,1590)"} true; + assume {:print "$track_abort(31,5):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:67+4 + assume {:print "$at(144,1658,1662)"} true; +L2: + + // ($t5, $t6, $t7) := unpack big_vector::BigVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:13+51 + assume {:print "$at(144,1604,1655)"} true; + $t5 := $t0->$buckets; + $t6 := $t0->$end_index; + $t7 := $t0->$bucket_size; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:61+1 + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:45+1 + + // table_with_length::destroy_empty>($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:48:9+41 + assume {:print "$at(144,1672,1713)"} true; + call $1_table_with_length_destroy_empty'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,1672,1713)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 + assume {:print "$at(144,1719,1720)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 + assume {:print "$at(144,1719,1720)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 + assume {:print "$at(144,1719,1720)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun big_vector::destroy_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:45:5+256 +procedure {:timeLimit 80} $1_big_vector_destroy_empty$verify(_$t0: $1_big_vector_BigVector'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:45:5+1 + assume {:print "$at(144,1464,1465)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:45:5+1 + assume {:print "$track_local(31,5,0):", $t0} $t0 == $t0; + + // $t1 := big_vector::is_empty<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:17+15 + assume {:print "$at(144,1530,1545)"} true; + call $t1 := $1_big_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,1530,1545)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + assume {:print "$at(144,1522,1590)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:58+17 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:58+17 + assume {:print "$at(144,1571,1588)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:34+42 + call $t4 := $1_error_invalid_argument($t3); + if ($abort_flag) { + assume {:print "$at(144,1547,1589)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + assume {:print "$at(144,1522,1590)"} true; + assume {:print "$track_abort(31,5):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:46:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:67+4 + assume {:print "$at(144,1658,1662)"} true; +L2: + + // ($t5, $t6, $t7) := unpack big_vector::BigVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:13+51 + assume {:print "$at(144,1604,1655)"} true; + $t5 := $t0->$buckets; + $t6 := $t0->$end_index; + $t7 := $t0->$bucket_size; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:61+1 + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:47:45+1 + + // table_with_length::destroy_empty>($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:48:9+41 + assume {:print "$at(144,1672,1713)"} true; + call $1_table_with_length_destroy_empty'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,1672,1713)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,5):", $t2} $t2 == $t2; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 + assume {:print "$at(144,1719,1720)"} true; +L3: + + // assert Not(Not(big_vector::$is_empty[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:56:9+26 + assume {:print "$at(145,2527,2553)"} true; + assert {:msg "assert_failed(145,2527,2553): function does not abort under this condition"} + !!$1_big_vector_$is_empty'#0'($t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:56:9+26 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:49:5+1 + assume {:print "$at(144,1719,1720)"} true; +L4: + + // assert Not(big_vector::$is_empty[]<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:55:5+84 + assume {:print "$at(145,2475,2559)"} true; + assert {:msg "assert_failed(145,2475,2559): abort not covered by any of the `aborts_if` clauses"} + !$1_big_vector_$is_empty'#0'($t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:55:5+84 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun big_vector::empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:27:5+280 +procedure {:inline 1} $1_big_vector_empty'#0'(_$t0: int) returns ($ret0: $1_big_vector_BigVector'#0') +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int (Vec (#0)); + var $t7: int; + var $t8: $1_big_vector_BigVector'#0'; + var $t0: int; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bucket_size]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:27:5+1 + assume {:print "$at(144,856,857)"} true; + assume {:print "$track_local(31,6,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:31+1 + assume {:print "$at(144,955,956)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := >($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:29+1 + call $t2 := $Gt($t0, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + assume {:print "$at(144,933,1001)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:58+17 +L0: + + // $t3 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:58+17 + assume {:print "$at(144,982,999)"} true; + $t3 := 4; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:34+42 + call $t4 := $1_error_invalid_argument($t3); + if ($abort_flag) { + assume {:print "$at(144,958,1000)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,6):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + assume {:print "$at(144,933,1001)"} true; + assume {:print "$track_abort(31,6):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:30:22+24 + assume {:print "$at(144,1044,1068)"} true; +L2: + + // $t6 := table_with_length::new>() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:30:22+24 + assume {:print "$at(144,1044,1068)"} true; + call $t6 := $1_table_with_length_new'u64_vec'#0''(); + if ($abort_flag) { + assume {:print "$at(144,1044,1068)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,6):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:31:24+1 + assume {:print "$at(144,1093,1094)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := pack big_vector::BigVector<#0>($t6, $t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:29:9+119 + assume {:print "$at(144,1011,1130)"} true; + $t8 := $1_big_vector_BigVector'#0'($t6, $t7, $t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:29:9+119 + assume {:print "$track_return(31,6,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 + assume {:print "$at(144,1135,1136)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 + assume {:print "$at(144,1135,1136)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 + assume {:print "$at(144,1135,1136)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun big_vector::empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:27:5+280 +procedure {:timeLimit 80} $1_big_vector_empty$verify(_$t0: int) returns ($ret0: $1_big_vector_BigVector'#0') +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int (Vec (#0)); + var $t7: int; + var $t8: $1_big_vector_BigVector'#0'; + var $t0: int; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:27:5+1 + assume {:print "$at(144,856,857)"} true; + assume $IsValid'u64'($t0); + + // trace_local[bucket_size]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:27:5+1 + assume {:print "$track_local(31,6,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:31+1 + assume {:print "$at(144,955,956)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := >($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:29+1 + call $t2 := $Gt($t0, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + assume {:print "$at(144,933,1001)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:58+17 +L0: + + // $t3 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:58+17 + assume {:print "$at(144,982,999)"} true; + $t3 := 4; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_argument($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:34+42 + call $t4 := $1_error_invalid_argument($t3); + if ($abort_flag) { + assume {:print "$at(144,958,1000)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,6):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + assume {:print "$at(144,933,1001)"} true; + assume {:print "$track_abort(31,6):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:28:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:30:22+24 + assume {:print "$at(144,1044,1068)"} true; +L2: + + // $t6 := table_with_length::new>() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:30:22+24 + assume {:print "$at(144,1044,1068)"} true; + call $t6 := $1_table_with_length_new'u64_vec'#0''(); + if ($abort_flag) { + assume {:print "$at(144,1044,1068)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(31,6):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:31:24+1 + assume {:print "$at(144,1093,1094)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := pack big_vector::BigVector<#0>($t6, $t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:29:9+119 + assume {:print "$at(144,1011,1130)"} true; + $t8 := $1_big_vector_BigVector'#0'($t6, $t7, $t0); + + // assert Neq(select big_vector::BigVector.bucket_size($t8), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($t8->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), Eq(select big_vector::BigVector.end_index($t8), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) ==> $IsEqual'u64'($t8->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t8), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($t8->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t8), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), select big_vector::BigVector.bucket_size($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($t8->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) * $t8->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t8), i)), select big_vector::BigVector.bucket_size($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t8->$buckets, i)), $t8->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t8), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 1))), select big_vector::BigVector.bucket_size($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t8->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) - 1))) <= $t8->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t8), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t8->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), Div(Sub(Add(select big_vector::BigVector.end_index($t8), select big_vector::BigVector.bucket_size($t8)), 1), select big_vector::BigVector.bucket_size($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), ((($t8->$end_index + $t8->$bucket_size) - 1) div $t8->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), Eq(select big_vector::BigVector.end_index($t8), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 1), select big_vector::BigVector.bucket_size($t8)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t8), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 1)))), select big_vector::BigVector.end_index($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) && $IsEqual'u64'($t8->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) - 1) * $t8->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t8->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) - 1)))), $t8->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t8), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t8->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t8), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t8->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t8), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t8)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t8->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t8->$buckets) - 1))) > 0)); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:29:9+119 + assume {:print "$at(144,1011,1130)"} true; + assume {:print "$track_return(31,6,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 + assume {:print "$at(144,1135,1136)"} true; +L3: + + // assert Not(Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:44:9+27 + assume {:print "$at(145,2142,2169)"} true; + assert {:msg "assert_failed(145,2142,2169): function does not abort under this condition"} + !$IsEqual'u64'($t0, 0); + + // assert Eq(big_vector::$length<#0>($t8), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:45:9+28 + assume {:print "$at(145,2178,2206)"} true; + assert {:msg "assert_failed(145,2178,2206): post-condition does not hold"} + $IsEqual'u64'($1_big_vector_$length'#0'($t8), 0); + + // assert Eq(select big_vector::BigVector.bucket_size>($t8), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:46:9+42 + assume {:print "$at(145,2215,2257)"} true; + assert {:msg "assert_failed(145,2215,2257): post-condition does not hold"} + $IsEqual'u64'($t8->$bucket_size, $t0); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:46:9+42 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:34:5+1 + assume {:print "$at(144,1135,1136)"} true; +L4: + + // assert Eq($t0, 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:43:5+184 + assume {:print "$at(145,2079,2263)"} true; + assert {:msg "assert_failed(145,2079,2263): abort not covered by any of the `aborts_if` clauses"} + $IsEqual'u64'($t0, 0); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:43:5+184 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun big_vector::is_empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+83 +procedure {:inline 1} $1_big_vector_is_empty'#0'(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+1 + assume {:print "$at(144,13692,13693)"} true; + assume {:print "$track_local(31,8,0):", $t0} $t0 == $t0; + + // $t1 := big_vector::length<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:9+12 + assume {:print "$at(144,13752,13764)"} true; + call $t1 := $1_big_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,13752,13764)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:25+1 + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:22+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:9+17 + assume {:print "$track_return(31,8,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun big_vector::is_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+83 +procedure {:timeLimit 80} $1_big_vector_is_empty$verify(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+1 + assume {:print "$at(144,13692,13693)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:299:5+1 + assume {:print "$track_local(31,8,0):", $t0} $t0 == $t0; + + // $t1 := big_vector::length<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:9+12 + assume {:print "$at(144,13752,13764)"} true; + call $t1 := $1_big_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(144,13752,13764)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(31,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:25+1 + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:22+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:300:9+17 + assume {:print "$track_return(31,8,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:301:5+1 + assume {:print "$at(144,13774,13775)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun big_vector::length<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+77 +procedure {:inline 1} $1_big_vector_length'#0'(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+1 + assume {:print "$at(144,13530,13531)"} true; + assume {:print "$track_local(31,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:295:9+14 + assume {:print "$at(144,13587,13601)"} true; + $t1 := $t0->$end_index; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:295:9+14 + assume {:print "$track_return(31,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:296:5+1 + assume {:print "$at(144,13606,13607)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:296:5+1 + assume {:print "$at(144,13606,13607)"} true; + $ret0 := $t1; + return; + +} + +// fun big_vector::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+77 +procedure {:timeLimit 80} $1_big_vector_length$verify(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+1 + assume {:print "$at(144,13530,13531)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:294:5+1 + assume {:print "$track_local(31,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:295:9+14 + assume {:print "$at(144,13587,13601)"} true; + $t1 := $t0->$end_index; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:295:9+14 + assume {:print "$track_return(31,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:296:5+1 + assume {:print "$at(144,13606,13607)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:296:5+1 + assume {:print "$at(144,13606,13607)"} true; + $ret0 := $t1; + return; + +} + +// fun big_vector::pop_back<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+637 +procedure {:inline 1} $1_big_vector_pop_back'#0'(_$t0: $Mutation ($1_big_vector_BigVector'#0')) returns ($ret0: #0, $ret1: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t1: $Mutation (Vec (#0)); + var $t2: int; + var $t3: #0; + var $t4: $1_big_vector_BigVector'#0'; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: Table int (Vec (#0)); + var $t11: int; + var $t12: $Mutation (Table int (Vec (#0))); + var $t13: int; + var $t14: int; + var $t15: $Mutation (Vec (#0)); + var $t16: #0; + var $t17: Vec (#0); + var $t18: bool; + var $t19: $Mutation (Table int (Vec (#0))); + var $t20: int; + var $t21: int; + var $t22: Vec (#0); + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: $Mutation (int); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+1 + assume {:print "$at(144,4634,4635)"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:27+4 + assume {:print "$at(144,4713,4717)"} true; + $t4 := $Dereference($t0); + + // $t5 := big_vector::is_empty<#0>($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:18+14 + call $t5 := $1_big_vector_is_empty'#0'($t4); + if ($abort_flag) { + assume {:print "$at(144,4704,4718)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t7 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:17+1 + call $t7 := $Not($t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + + // $t8 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:55+13 + $t8 := 3; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_state($t8) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:34+35 + call $t9 := $1_error_invalid_state($t8); + if ($abort_flag) { + assume {:print "$at(144,4720,4755)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + assume {:print "$track_abort(31,10):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + $t6 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:54+4 + assume {:print "$at(144,4811,4815)"} true; +L2: + + // $t10 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:53+13 + assume {:print "$at(144,4810,4823)"} true; + $t10 := $Dereference($t0)->$buckets; + + // $t11 := table_with_length::length>($t10) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:27+40 + call $t11 := $1_table_with_length_length'u64_vec'#0''($t10); + if ($abort_flag) { + assume {:print "$at(144,4784,4824)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[num_buckets]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:13+11 + assume {:print "$track_local(31,10,2):", $t11} $t11 == $t11; + + // $t12 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:57+17 + assume {:print "$at(144,4882,4899)"} true; + $t12 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:90+1 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := -($t11, $t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:88+1 + call $t14 := $Sub($t11, $t13); + if ($abort_flag) { + assume {:print "$at(144,4913,4914)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t15 := table_with_length::borrow_mut>($t12, $t14) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:27+65 + call $t15,$t12 := $1_table_with_length_borrow_mut'u64_vec'#0''($t12, $t14); + if ($abort_flag) { + assume {:print "$at(144,4852,4917)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[last_bucket]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:13+11 + $temp_0'vec'#0'' := $Dereference($t15); + assume {:print "$track_local(31,10,1):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // $t16 := vector::pop_back<#0>($t15) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:115:19+29 + assume {:print "$at(144,4937,4966)"} true; + call $t16,$t15 := $1_vector_pop_back'#0'($t15); + if ($abort_flag) { + assume {:print "$at(144,4937,4966)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[val]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:115:13+3 + assume {:print "$track_local(31,10,3):", $t16} $t16 == $t16; + + // $t17 := read_ref($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:30+11 + assume {:print "$at(144,5054,5065)"} true; + $t17 := $Dereference($t15); + + // $t18 := vector::is_empty<#0>($t17) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:13+29 + call $t18 := $1_vector_is_empty'#0'($t17); + if ($abort_flag) { + assume {:print "$at(144,5037,5066)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + assume {:print "$at(144,5082,5098)"} true; +L4: + + // write_back[Reference($t12)[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + assume {:print "$at(144,5082,5098)"} true; + $t12 := $UpdateMutation($t12, UpdateTable($Dereference($t12), ReadVec($t15->p, LenVec($t12->p)), $Dereference($t15))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t12))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + + // $t19 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:61+17 + assume {:print "$at(144,5160,5177)"} true; + $t19 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:94+1 + $t20 := 1; + assume $IsValid'u64'($t20); + + // $t21 := -($t11, $t20) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:92+1 + call $t21 := $Sub($t11, $t20); + if ($abort_flag) { + assume {:print "$at(144,5191,5192)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t22 := table_with_length::remove>($t19, $t21) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + call $t22,$t19 := $1_table_with_length_remove'u64_vec'#0''($t19, $t21); + if ($abort_flag) { + assume {:print "$at(144,5134,5195)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t19))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // vector::destroy_empty<#0>($t22) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:13+84 + call $1_vector_destroy_empty'#0'($t22); + if ($abort_flag) { + assume {:print "$at(144,5112,5196)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:97+1 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + assume {:print "$at(144,5033,5207)"} true; +L3: + + // write_back[Reference($t12)[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + assume {:print "$at(144,5033,5207)"} true; + $t12 := $UpdateMutation($t12, UpdateTable($Dereference($t12), ReadVec($t15->p, LenVec($t12->p)), $Dereference($t15))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t12))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:26+4 + assume {:print "$at(144,5234,5238)"} true; +L5: + + // $t23 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:26+14 + assume {:print "$at(144,5234,5248)"} true; + $t23 := $Dereference($t0)->$end_index; + + // $t24 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:43+1 + $t24 := 1; + assume $IsValid'u64'($t24); + + // $t25 := -($t23, $t24) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:41+1 + call $t25 := $Sub($t23, $t24); + if ($abort_flag) { + assume {:print "$at(144,5249,5250)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(31,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t26 := borrow_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+14 + $t26 := $ChildMutation($t0, 1, $Dereference($t0)->$end_index); + + // write_ref($t26, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $t26 := $UpdateMutation($t26, $t25); + + // write_back[Reference($t0).end_index (u64)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_end_index($Dereference($t0), $Dereference($t26))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:122:9+3 + assume {:print "$at(144,5262,5265)"} true; + assume {:print "$track_return(31,10,0):", $t16} $t16 == $t16; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:122:9+3 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:122:9+3 + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 + assume {:print "$at(144,5270,5271)"} true; +L6: + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 + assume {:print "$at(144,5270,5271)"} true; + $ret0 := $t16; + $ret1 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 +L7: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 + assume {:print "$at(144,5270,5271)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun big_vector::pop_back [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+637 +procedure {:timeLimit 80} $1_big_vector_pop_back$verify(_$t0: $Mutation ($1_big_vector_BigVector'#0')) returns ($ret0: #0, $ret1: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t1: $Mutation (Vec (#0)); + var $t2: int; + var $t3: #0; + var $t4: $1_big_vector_BigVector'#0'; + var $t5: $1_big_vector_BigVector'#0'; + var $t6: bool; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: Table int (Vec (#0)); + var $t12: int; + var $t13: $Mutation (Table int (Vec (#0))); + var $t14: int; + var $t15: int; + var $t16: $Mutation (Vec (#0)); + var $t17: #0; + var $t18: Vec (#0); + var $t19: bool; + var $t20: $Mutation (Table int (Vec (#0))); + var $t21: int; + var $t22: int; + var $t23: Vec (#0); + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+1 + assume {:print "$at(144,4634,4635)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($Dereference($t0)) && (((((((((((!$IsEqual'u64'($Dereference($t0)->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0))) && ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0))) && ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)))); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+1 + $t4 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:111:5+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:27+4 + assume {:print "$at(144,4713,4717)"} true; + $t5 := $Dereference($t0); + + // $t6 := big_vector::is_empty<#0>($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:18+14 + call $t6 := $1_big_vector_is_empty'#0'($t5); + if ($abort_flag) { + assume {:print "$at(144,4704,4718)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // $t8 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:17+1 + call $t8 := $Not($t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 +L0: + + // assert Neq(select big_vector::BigVector.bucket_size($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($Dereference($t0)->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:55+13 + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_state($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:34+35 + call $t10 := $1_error_invalid_state($t9); + if ($abort_flag) { + assume {:print "$at(144,4720,4755)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + assume {:print "$at(144,4695,4756)"} true; + assume {:print "$track_abort(31,10):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + $t7 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:112:9+61 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:54+4 + assume {:print "$at(144,4811,4815)"} true; +L2: + + // $t11 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:53+13 + assume {:print "$at(144,4810,4823)"} true; + $t11 := $Dereference($t0)->$buckets; + + // $t12 := table_with_length::length>($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:27+40 + call $t12 := $1_table_with_length_length'u64_vec'#0''($t11); + if ($abort_flag) { + assume {:print "$at(144,4784,4824)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[num_buckets]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:113:13+11 + assume {:print "$track_local(31,10,2):", $t12} $t12 == $t12; + + // $t13 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:57+17 + assume {:print "$at(144,4882,4899)"} true; + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:90+1 + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := -($t12, $t14) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:88+1 + call $t15 := $Sub($t12, $t14); + if ($abort_flag) { + assume {:print "$at(144,4913,4914)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // $t16 := table_with_length::borrow_mut>($t13, $t15) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:27+65 + call $t16,$t13 := $1_table_with_length_borrow_mut'u64_vec'#0''($t13, $t15); + if ($abort_flag) { + assume {:print "$at(144,4852,4917)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[last_bucket]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:114:13+11 + $temp_0'vec'#0'' := $Dereference($t16); + assume {:print "$track_local(31,10,1):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // $t17 := vector::pop_back<#0>($t16) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:115:19+29 + assume {:print "$at(144,4937,4966)"} true; + call $t17,$t16 := $1_vector_pop_back'#0'($t16); + if ($abort_flag) { + assume {:print "$at(144,4937,4966)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[val]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:115:13+3 + assume {:print "$track_local(31,10,3):", $t17} $t17 == $t17; + + // $t18 := read_ref($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:30+11 + assume {:print "$at(144,5054,5065)"} true; + $t18 := $Dereference($t16); + + // $t19 := vector::is_empty<#0>($t18) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:13+29 + call $t19 := $1_vector_is_empty'#0'($t18); + if ($abort_flag) { + assume {:print "$at(144,5037,5066)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + assume {:print "$at(144,5082,5098)"} true; +L4: + + // write_back[Reference($t13)[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + assume {:print "$at(144,5082,5098)"} true; + $t13 := $UpdateMutation($t13, UpdateTable($Dereference($t13), ReadVec($t16->p, LenVec($t13->p)), $Dereference($t16))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t13))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:118:13+16 + + // $t20 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:61+17 + assume {:print "$at(144,5160,5177)"} true; + $t20 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t21 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:94+1 + $t21 := 1; + assume $IsValid'u64'($t21); + + // $t22 := -($t12, $t21) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:92+1 + call $t22 := $Sub($t12, $t21); + if ($abort_flag) { + assume {:print "$at(144,5191,5192)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // $t23 := table_with_length::remove>($t20, $t22) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + call $t23,$t20 := $1_table_with_length_remove'u64_vec'#0''($t20, $t22); + if ($abort_flag) { + assume {:print "$at(144,5134,5195)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t20))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:35+61 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // vector::destroy_empty<#0>($t23) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:13+84 + call $1_vector_destroy_empty'#0'($t23); + if ($abort_flag) { + assume {:print "$at(144,5112,5196)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:119:97+1 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + assume {:print "$at(144,5033,5207)"} true; +L3: + + // write_back[Reference($t13)[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + assume {:print "$at(144,5033,5207)"} true; + $t13 := $UpdateMutation($t13, UpdateTable($Dereference($t13), ReadVec($t16->p, LenVec($t13->p)), $Dereference($t16))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t13))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:117:9+174 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:26+4 + assume {:print "$at(144,5234,5238)"} true; +L5: + + // $t24 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:26+14 + assume {:print "$at(144,5234,5248)"} true; + $t24 := $Dereference($t0)->$end_index; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:43+1 + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := -($t24, $t25) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:41+1 + call $t26 := $Sub($t24, $t25); + if ($abort_flag) { + assume {:print "$at(144,5249,5250)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,10):", $t7} $t7 == $t7; + goto L7; + } + + // $t27 := borrow_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+14 + $t27 := $ChildMutation($t0, 1, $Dereference($t0)->$end_index); + + // write_ref($t27, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t0).end_index (u64)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_end_index($Dereference($t0), $Dereference($t27))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:121:9+35 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:122:9+3 + assume {:print "$at(144,5262,5265)"} true; + assume {:print "$track_return(31,10,0):", $t17} $t17 == $t17; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:122:9+3 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,10,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // assert Neq(select big_vector::BigVector.bucket_size($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($Dereference($t0)->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 + assume {:print "$at(144,5270,5271)"} true; +L6: + + // assert Not(big_vector::$is_empty[]<#0>(Freeze(false)($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:87:9+25 + assume {:print "$at(145,3638,3663)"} true; + assert {:msg "assert_failed(145,3638,3663): function does not abort under this condition"} + !$1_big_vector_$is_empty'#0'($t4); + + // assert Eq(big_vector::$length<#0>(Freeze(false)($t0)), Sub(big_vector::$length<#0>($t4), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:88:9+46 + assume {:print "$at(145,3672,3718)"} true; + assert {:msg "assert_failed(145,3672,3718): post-condition does not hold"} + $IsEqual'u64'($1_big_vector_$length'#0'($Dereference($t0)), ($1_big_vector_$length'#0'($t4) - 1)); + + // assert Eq<#0>($t17, big_vector::spec_at[]<#0>($t4, Sub(select big_vector::BigVector.end_index>($t4), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:89:9+55 + assume {:print "$at(145,3727,3782)"} true; + assert {:msg "assert_failed(145,3727,3782): post-condition does not hold"} + $IsEqual'#0'($t17, $1_big_vector_spec_at'#0'($t4, ($t4->$end_index - 1))); + + // assert forall i: num: Range(0, select big_vector::BigVector.end_index>($t0)): Eq<#0>(big_vector::spec_at<#0>($t0, i), big_vector::spec_at<#0>($t4, i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:90:9+81 + assume {:print "$at(145,3791,3872)"} true; + assert {:msg "assert_failed(145,3791,3872): post-condition does not hold"} + (var $range_0 := $Range(0, $Dereference($t0)->$end_index); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'#0'($1_big_vector_spec_at'#0'($Dereference($t0), i), $1_big_vector_spec_at'#0'($t4, i)))))); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:90:9+81 + $ret0 := $t17; + $ret1 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:123:5+1 + assume {:print "$at(144,5270,5271)"} true; +L7: + + // assert big_vector::$is_empty[]<#0>(Freeze(false)($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:86:5+295 + assume {:print "$at(145,3583,3878)"} true; + assert {:msg "assert_failed(145,3583,3878): abort not covered by any of the `aborts_if` clauses"} + $1_big_vector_$is_empty'#0'($t4); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:86:5+295 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun big_vector::push_back<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+563 +procedure {:inline 1} $1_big_vector_push_back'#0'(_$t0: $Mutation ($1_big_vector_BigVector'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $Mutation (Table int (Vec (#0))); + var $t13: Vec (#0); + var $t14: $Mutation (Table int (Vec (#0))); + var $t15: $Mutation (Vec (#0)); + var $t16: $Mutation (Table int (Vec (#0))); + var $t17: int; + var $t18: int; + var $t19: $Mutation (Vec (#0)); + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: $Mutation (int); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:70:9+47 + assume {:print "$at(145,2929,2976)"} true; + assume ($t3 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); + + // assume Identical($t4, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:81:9+47 + assume {:print "$at(145,3416,3463)"} true; + assume ($t4 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume {:print "$at(144,3855,3856)"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume {:print "$track_local(31,11,1):", $t1} $t1 == $t1; + + // $t5 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:53+13 + assume {:print "$at(144,3973,3986)"} true; + $t5 := $Dereference($t0)->$buckets; + + // $t6 := table_with_length::length>($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:27+40 + call $t6 := $1_table_with_length_length'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,3947,3987)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[num_buckets]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:13+11 + assume {:print "$track_local(31,11,2):", $t6} $t6 == $t6; + + // $t8 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:13+14 + assume {:print "$at(144,4001,4015)"} true; + $t8 := $Dereference($t0)->$end_index; + + // $t9 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:45+16 + $t9 := $Dereference($t0)->$bucket_size; + + // $t10 := *($t6, $t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:43+1 + call $t10 := $MulU64($t6, $t9); + if ($abort_flag) { + assume {:print "$at(144,4031,4032)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:28+2 + $t11 := $IsEqual'u64'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:9+369 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:41+4 + assume {:print "$at(144,4093,4097)"} true; +L1: + + // $t12 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:36+17 + assume {:print "$at(144,4088,4105)"} true; + $t12 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t13 := vector::empty<#0>() on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:68+15 + call $t13 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,4120,4135)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // table_with_length::add>($t12, $t6, $t13) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + call $t12 := $1_table_with_length_add'u64_vec'#0''($t12, $t6, $t13); + if ($abort_flag) { + assume {:print "$at(144,4065,4136)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t12))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t14 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:61+17 + assume {:print "$at(144,4198,4215)"} true; + $t14 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t15 := table_with_length::borrow_mut>($t14, $t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:31+61 + call $t15,$t14 := $1_table_with_length_borrow_mut'u64_vec'#0''($t14, $t6); + if ($abort_flag) { + assume {:print "$at(144,4168,4229)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // vector::push_back<#0>($t15, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + call $t15 := $1_vector_push_back'#0'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(144,4150,4235)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t14)[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $t14 := $UpdateMutation($t14, UpdateTable($Dereference($t14), ReadVec($t15->p, LenVec($t14->p)), $Dereference($t15))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t14))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:98+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:66+4 + assume {:print "$at(144,4319,4323)"} true; +L0: + + // $t16 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:61+17 + assume {:print "$at(144,4314,4331)"} true; + $t16 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:94+1 + $t17 := 1; + assume $IsValid'u64'($t17); + + // $t18 := -($t6, $t17) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:92+1 + call $t18 := $Sub($t6, $t17); + if ($abort_flag) { + assume {:print "$at(144,4345,4346)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // $t19 := table_with_length::borrow_mut>($t16, $t18) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:31+65 + call $t19,$t16 := $1_table_with_length_borrow_mut'u64_vec'#0''($t16, $t18); + if ($abort_flag) { + assume {:print "$at(144,4284,4349)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // vector::push_back<#0>($t19, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + call $t19 := $1_vector_push_back'#0'($t19, $t1); + if ($abort_flag) { + assume {:print "$at(144,4266,4355)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t16)[]]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec($t19->p, LenVec($t16->p)), $Dereference($t19))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t16))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:26+4 + assume {:print "$at(144,4393,4397)"} true; +L2: + + // $t20 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:26+14 + assume {:print "$at(144,4393,4407)"} true; + $t20 := $Dereference($t0)->$end_index; + + // $t21 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:43+1 + $t21 := 1; + assume $IsValid'u64'($t21); + + // $t22 := +($t20, $t21) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:41+1 + call $t22 := $AddU64($t20, $t21); + if ($abort_flag) { + assume {:print "$at(144,4408,4409)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(31,11):", $t7} $t7 == $t7; + goto L4; + } + + // $t23 := borrow_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+14 + $t23 := $ChildMutation($t0, 1, $Dereference($t0)->$end_index); + + // write_ref($t23, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $t23 := $UpdateMutation($t23, $t22); + + // write_back[Reference($t0).end_index (u64)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_end_index($Dereference($t0), $Dereference($t23))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:44+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:44+1 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 + assume {:print "$at(144,4417,4418)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 + assume {:print "$at(144,4417,4418)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 + assume {:print "$at(144,4417,4418)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun big_vector::push_back [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+563 +procedure {:timeLimit 80} $1_big_vector_push_back$verify(_$t0: $Mutation ($1_big_vector_BigVector'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_big_vector_BigVector'#0'; + var $t6: Table int (Vec (#0)); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: $Mutation (Table int (Vec (#0))); + var $t14: Vec (#0); + var $t15: $Mutation (Table int (Vec (#0))); + var $t16: $Mutation (Vec (#0)); + var $t17: $Mutation (Table int (Vec (#0))); + var $t18: int; + var $t19: int; + var $t20: $Mutation (Vec (#0)); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume {:print "$at(144,3855,3856)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($Dereference($t0)) && (((((((((((!$IsEqual'u64'($Dereference($t0)->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0))) && ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0))) && ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume $IsValid'#0'($t1); + + // assume Identical($t3, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:70:9+47 + assume {:print "$at(145,2929,2976)"} true; + assume ($t3 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); + + // assume Identical($t4, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:81:9+47 + assume {:print "$at(145,3416,3463)"} true; + assume ($t4 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume {:print "$at(144,3855,3856)"} true; + $t5 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:97:5+1 + assume {:print "$track_local(31,11,1):", $t1} $t1 == $t1; + + // $t6 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:53+13 + assume {:print "$at(144,3973,3986)"} true; + $t6 := $Dereference($t0)->$buckets; + + // $t7 := table_with_length::length>($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:27+40 + call $t7 := $1_table_with_length_length'u64_vec'#0''($t6); + if ($abort_flag) { + assume {:print "$at(144,3947,3987)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[num_buckets]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:98:13+11 + assume {:print "$track_local(31,11,2):", $t7} $t7 == $t7; + + // $t9 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:13+14 + assume {:print "$at(144,4001,4015)"} true; + $t9 := $Dereference($t0)->$end_index; + + // $t10 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:45+16 + $t10 := $Dereference($t0)->$bucket_size; + + // $t11 := *($t7, $t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:43+1 + call $t11 := $MulU64($t7, $t10); + if ($abort_flag) { + assume {:print "$at(144,4031,4032)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // $t12 := ==($t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:28+2 + $t12 := $IsEqual'u64'($t9, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:99:9+369 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:41+4 + assume {:print "$at(144,4093,4097)"} true; +L1: + + // $t13 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:36+17 + assume {:print "$at(144,4088,4105)"} true; + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t14 := vector::empty<#0>() on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:68+15 + call $t14 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,4120,4135)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // table_with_length::add>($t13, $t7, $t14) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + call $t13 := $1_table_with_length_add'u64_vec'#0''($t13, $t7, $t14); + if ($abort_flag) { + assume {:print "$at(144,4065,4136)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t13))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:100:13+71 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t15 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:61+17 + assume {:print "$at(144,4198,4215)"} true; + $t15 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t16 := table_with_length::borrow_mut>($t15, $t7) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:31+61 + call $t16,$t15 := $1_table_with_length_borrow_mut'u64_vec'#0''($t15, $t7); + if ($abort_flag) { + assume {:print "$at(144,4168,4229)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // vector::push_back<#0>($t16, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + call $t16 := $1_vector_push_back'#0'($t16, $t1); + if ($abort_flag) { + assume {:print "$at(144,4150,4235)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t15)[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $t15 := $UpdateMutation($t15, UpdateTable($Dereference($t15), ReadVec($t16->p, LenVec($t15->p)), $Dereference($t16))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t15))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:13+85 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:101:98+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:66+4 + assume {:print "$at(144,4319,4323)"} true; +L0: + + // $t17 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:61+17 + assume {:print "$at(144,4314,4331)"} true; + $t17 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:94+1 + $t18 := 1; + assume $IsValid'u64'($t18); + + // $t19 := -($t7, $t18) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:92+1 + call $t19 := $Sub($t7, $t18); + if ($abort_flag) { + assume {:print "$at(144,4345,4346)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // $t20 := table_with_length::borrow_mut>($t17, $t19) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:31+65 + call $t20,$t17 := $1_table_with_length_borrow_mut'u64_vec'#0''($t17, $t19); + if ($abort_flag) { + assume {:print "$at(144,4284,4349)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // vector::push_back<#0>($t20, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + call $t20 := $1_vector_push_back'#0'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(144,4266,4355)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t17)[]]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $t17 := $UpdateMutation($t17, UpdateTable($Dereference($t17), ReadVec($t20->p, LenVec($t17->p)), $Dereference($t20))); + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t17))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:103:13+89 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:26+4 + assume {:print "$at(144,4393,4397)"} true; +L2: + + // $t21 := get_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:26+14 + assume {:print "$at(144,4393,4407)"} true; + $t21 := $Dereference($t0)->$end_index; + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:43+1 + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t21, $t22) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:41+1 + call $t23 := $AddU64($t21, $t22); + if ($abort_flag) { + assume {:print "$at(144,4408,4409)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(31,11):", $t8} $t8 == $t8; + goto L4; + } + + // $t24 := borrow_field>.end_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+14 + $t24 := $ChildMutation($t0, 1, $Dereference($t0)->$end_index); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t0).end_index (u64)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_end_index($Dereference($t0), $Dereference($t24))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:9+35 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:105:44+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,11,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // assert Neq(select big_vector::BigVector.bucket_size($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($Dereference($t0)->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 + assume {:print "$at(144,4417,4418)"} true; +L3: + + // assert Not(Gt(Mul($t4, select big_vector::BigVector.bucket_size>($t5)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:82:9+51 + assume {:print "$at(145,3472,3523)"} true; + assert {:msg "assert_failed(145,3472,3523): function does not abort under this condition"} + !(($t4 * $t5->$bucket_size) > 18446744073709551615); + + // assert Not(Gt(Add(select big_vector::BigVector.end_index>($t5), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:83:9+39 + assume {:print "$at(145,3532,3571)"} true; + assert {:msg "assert_failed(145,3532,3571): function does not abort under this condition"} + !(($t5->$end_index + 1) > 18446744073709551615); + + // assert Eq(big_vector::$length<#0>(Freeze(false)($t0)), Add(big_vector::$length<#0>($t5), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:72:9+46 + assume {:print "$at(145,3022,3068)"} true; + assert {:msg "assert_failed(145,3022,3068): post-condition does not hold"} + $IsEqual'u64'($1_big_vector_$length'#0'($Dereference($t0)), ($1_big_vector_$length'#0'($t5) + 1)); + + // assert Eq(select big_vector::BigVector.end_index>($t0), Add(select big_vector::BigVector.end_index>($t5), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:73:9+50 + assume {:print "$at(145,3077,3127)"} true; + assert {:msg "assert_failed(145,3077,3127): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$end_index, ($t5->$end_index + 1)); + + // assert Eq<#0>(big_vector::spec_at<#0>($t0, Sub(select big_vector::BigVector.end_index>($t0), 1)), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:74:9+47 + assume {:print "$at(145,3136,3183)"} true; + assert {:msg "assert_failed(145,3136,3183): post-condition does not hold"} + $IsEqual'#0'($1_big_vector_spec_at'#0'($Dereference($t0), ($Dereference($t0)->$end_index - 1)), $t1); + + // assert forall i: num: Range(0, Sub(select big_vector::BigVector.end_index>($t0), 1)): Eq<#0>(big_vector::spec_at<#0>($t0, i), big_vector::spec_at<#0>($t5, i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:75:9+83 + assume {:print "$at(145,3192,3275)"} true; + assert {:msg "assert_failed(145,3192,3275): post-condition does not hold"} + (var $range_0 := $Range(0, ($Dereference($t0)->$end_index - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'#0'($1_big_vector_spec_at'#0'($Dereference($t0), i), $1_big_vector_spec_at'#0'($t5, i)))))); + + // assert Eq(select big_vector::BigVector.bucket_size>($t0), select big_vector::BigVector.bucket_size>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:76:9+50 + assume {:print "$at(145,3284,3334)"} true; + assert {:msg "assert_failed(145,3284,3334): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$bucket_size, $t5->$bucket_size); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:76:9+50 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:106:5+1 + assume {:print "$at(144,4417,4418)"} true; +L4: + + // assert Or(Gt(Mul($t4, select big_vector::BigVector.bucket_size>($t5)), 18446744073709551615), Gt(Add(select big_vector::BigVector.end_index>($t5), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:69:5+479 + assume {:print "$at(145,2861,3340)"} true; + assert {:msg "assert_failed(145,2861,3340): abort not covered by any of the `aborts_if` clauses"} + ((($t4 * $t5->$bucket_size) > 18446744073709551615) || (($t5->$end_index + 1) > 18446744073709551615)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:69:5+479 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun big_vector::reverse<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:220:5+1298 +procedure {:inline 1} $1_big_vector_reverse'#0'(_$t0: $Mutation ($1_big_vector_BigVector'#0')) returns ($ret0: $Mutation ($1_big_vector_BigVector'#0')) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (Vec (#0)); + var $t4: int; + var $t5: int; + var $t6: Vec (#0); + var $t7: Vec (#0); + var $t8: #0; + var $t9: int; + var $t10: Table int (Vec (#0)); + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: Vec (#0); + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: #0; + var $t21: Vec (#0); + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: Vec (#0); + var $t26: int; + var $t27: int; + var $t28: Vec (#0); + var $t29: int; + var $t30: int; + var $t31: $Mutation (Table int (Vec (#0))); + var $t32: $Mutation (Vec (#0)); + var $t33: $Mutation (Vec (#0)); + var $t34: $Mutation (Vec (Vec (#0))); + var $t35: Vec (#0); + var $t36: int; + var $t37: int; + var $t38: bool; + var $t39: $Mutation (Vec (Vec (#0))); + var $t40: Vec (#0); + var $t41: Vec (#0); + var $t42: $Mutation (Vec (Vec (#0))); + var $t43: int; + var $t44: Table int (Vec (#0)); + var $t45: int; + var $t46: int; + var $t47: bool; + var $t48: int; + var $t49: bool; + var $t50: Vec (#0); + var $t51: int; + var $t52: int; + var $t53: $Mutation (Table int (Vec (#0))); + var $t54: $Mutation (Vec (Vec (#0))); + var $t55: Vec (Vec (#0)); + var $t0: $Mutation ($1_big_vector_BigVector'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + var $temp_0'vec'vec'#0''': Vec (Vec (#0)); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:220:5+1 + assume {:print "$at(144,10448,10449)"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t3 := vector::empty>() on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:221:27+8 + assume {:print "$at(144,10523,10531)"} true; + call $t3 := $1_vector_empty'vec'#0''(); + if ($abort_flag) { + assume {:print "$at(144,10523,10531)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:221:13+11 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // $t6 := vector::empty<#0>() on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:222:27+8 + assume {:print "$at(144,10559,10567)"} true; + call $t6 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,10559,10567)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[push_bucket]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:222:13+11 + assume {:print "$track_local(31,13,6):", $t6} $t6 == $t6; + + // $t10 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:223:53+13 + assume {:print "$at(144,10621,10634)"} true; + $t10 := $Dereference($t0)->$buckets; + + // $t11 := table_with_length::length>($t10) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:223:27+40 + call $t11 := $1_table_with_length_length'u64_vec'#0''($t10); + if ($abort_flag) { + assume {:print "$at(144,10595,10635)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[num_buckets]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:223:13+11 + assume {:print "$track_local(31,13,4):", $t11} $t11 == $t11; + + // trace_local[num_buckets_left]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:224:13+16 + assume {:print "$at(144,10649,10665)"} true; + assume {:print "$track_local(31,13,5):", $t11} $t11 == $t11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$at(144,10697,10713)"} true; +L9: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$at(144,10697,10713)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'vec'#0'''($t3); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t5); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t6); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t7); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'bool'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'#0'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'u64'($t30); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $temp_0'$1_big_vector_BigVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_big_vector_BigVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume ($IsValid'$1_big_vector_BigVector'#0''($Dereference($t0)) && (((((((((((!$IsEqual'u64'($Dereference($t0)->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0))) && ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0))) && ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)))); + + // $t31 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($Dereference($t31)); + + // $t32 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($Dereference($t32)); + + // $t33 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'#0''($Dereference($t33)); + + // $t34 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume $IsValid'vec'vec'#0'''($Dereference($t34)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$info(): enter loop, variable(s) self, len#2, new_buckets, num_buckets_left, push_bucket, self#0 havocked and reassigned"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[len#2]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$track_local(31,13,2):", $t2} $t2 == $t2; + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // trace_local[num_buckets_left]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$track_local(31,13,5):", $t5} $t5 == $t5; + + // trace_local[push_bucket]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$track_local(31,13,6):", $t6} $t6 == $t6; + + // trace_local[self#0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume {:print "$track_local(31,13,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:16+16 + assume !$abort_flag; + + // $t12 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:35+1 + $t12 := 0; + assume $IsValid'u64'($t12); + + // $t13 := >($t5, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:33+1 + call $t13 := $Gt($t5, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:9+526 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:226:9+526 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:61+4 + assume {:print "$at(144,10781,10785)"} true; +L2: + + // $t31 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:56+17 + assume {:print "$at(144,10776,10793)"} true; + $t31 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:94+1 + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := -($t5, $t14) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:92+1 + call $t15 := $Sub($t5, $t14); + if ($abort_flag) { + assume {:print "$at(144,10812,10813)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // $t7 := table_with_length::remove>($t31, $t15) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:30+66 + call $t7,$t31 := $1_table_with_length_remove'u64_vec'#0''($t31, $t15); + if ($abort_flag) { + assume {:print "$at(144,10750,10816)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:30+66 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t31))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:227:30+66 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[self#0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$at(16,10024,10028)"} true; + assume {:print "$track_local(31,13,7):", $t7} $t7 == $t7; + + // $t16 := copy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:26+5 + assume {:print "$at(16,10088,10093)"} true; + $t16 := $t7; + + // $t17 := vector::length<#0>($t16) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:19+13 + call $t17 := $1_vector_length'#0'($t16); + if ($abort_flag) { + assume {:print "$at(16,10081,10094)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[len#2]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:13+3 + assume {:print "$track_local(31,13,2):", $t17} $t17 == $t17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; +L8: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'vec'#0'''($t3); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($t6); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($t7); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'#0'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t27); + + // $t32 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($Dereference($t32)); + + // $t33 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($Dereference($t33)); + + // $t34 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'vec'#0'''($Dereference($t34)); + + // trace_local[len#2]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$info(): enter loop, variable(s) len#2, new_buckets, push_bucket, self#0 havocked and reassigned"} true; + assume {:print "$track_local(31,13,2):", $t2} $t2 == $t2; + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // trace_local[push_bucket]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(31,13,6):", $t6} $t6 == $t6; + + // trace_local[self#0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(31,13,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume !$abort_flag; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:22+1 + $t18 := 0; + assume $IsValid'u64'($t18); + + // $t19 := >($t2, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:20+1 + call $t19 := $Gt($t2, $t18); + + // if ($t19) goto L4 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 + if ($t19) { goto L4; } else { goto L24; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; +L5: + + // $t32 := borrow_local($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; + $t32 := $Mutation($Local(7), EmptyVec(), $t7); + + // $t20 := vector::pop_back<#0>($t32) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + call $t20,$t32 := $1_vector_pop_back'#0'($t32); + if ($abort_flag) { + assume {:print "$at(16,10136,10155)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t7)@]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + $t7 := $Dereference($t32); + + // trace_local[self#0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + assume {:print "$track_local(31,13,7):", $t7} $t7 == $t7; + + // trace_local[val#3]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + assume {:print "$track_local(31,13,8):", $t20} $t20 == $t20; + + // $t33 := borrow_local($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:229:35+16 + assume {:print "$at(144,10909,10925)"} true; + $t33 := $Mutation($Local(6), EmptyVec(), $t6); + + // vector::push_back<#0>($t33, $t20) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:229:17+40 + call $t33 := $1_vector_push_back'#0'($t33, $t20); + if ($abort_flag) { + assume {:print "$at(144,10891,10931)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t6)@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:229:17+40 + $t6 := $Dereference($t33); + + // trace_local[push_bucket]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:229:17+40 + assume {:print "$track_local(31,13,6):", $t6} $t6 == $t6; + + // $t21 := copy($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:230:36+12 + assume {:print "$at(144,10968,10980)"} true; + $t21 := $t6; + + // $t22 := vector::length<#0>($t21) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:230:21+28 + call $t22 := $1_vector_length'#0'($t21); + if ($abort_flag) { + assume {:print "$at(144,10953,10981)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // $t23 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:230:53+16 + $t23 := $Dereference($t0)->$bucket_size; + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:230:50+2 + $t24 := $IsEqual'u64'($t22, $t23); + + // if ($t24) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:230:17+187 + if ($t24) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:39+16 + assume {:print "$at(144,11043,11059)"} true; +L7: + + // $t34 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:39+16 + assume {:print "$at(144,11043,11059)"} true; + $t34 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t25 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:57+11 + $t25 := $t6; + + // vector::push_back>($t34, $t25) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:21+48 + call $t34 := $1_vector_push_back'vec'#0''($t34, $t25); + if ($abort_flag) { + assume {:print "$at(144,11025,11073)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:21+48 + $t3 := $Dereference($t34); + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:231:21+48 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // $t6 := vector::empty<#0>() on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:232:35+8 + assume {:print "$at(144,11109,11117)"} true; + call $t6 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,11109,11117)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[push_bucket]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:232:21+11 + assume {:print "$track_local(31,13,6):", $t6} $t6 == $t6; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:19+3 + assume {:print "$at(16,10176,10179)"} true; +L6: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:25+1 + assume {:print "$at(16,10182,10183)"} true; + $t26 := 1; + assume $IsValid'u64'($t26); + + // $t27 := -($t2, $t26) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:23+1 + call $t27 := $Sub($t2, $t26); + if ($abort_flag) { + assume {:print "$at(16,10180,10181)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[len#2]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:13+3 + assume {:print "$track_local(31,13,2):", $t27} $t27 == $t27; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:26+1 + goto L19; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + assume {:print "$at(16,10218,10222)"} true; +L3: + + // $t28 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + assume {:print "$at(16,10218,10222)"} true; + $t28 := $t7; + + // vector::destroy_empty<#0>($t28) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + call $1_vector_destroy_empty'#0'($t28); + if ($abort_flag) { + assume {:print "$at(16,10204,10223)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:235:51+1 + assume {:print "$at(144,11204,11205)"} true; + $t29 := 1; + assume $IsValid'u64'($t29); + + // $t30 := -($t5, $t29) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:235:49+1 + call $t30 := $Sub($t5, $t29); + if ($abort_flag) { + assume {:print "$at(144,11202,11203)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[num_buckets_left]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:235:13+16 + assume {:print "$track_local(31,13,5):", $t30} $t30 == $t30; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:235:52+1 + goto L20; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:28+12 + assume {:print "$at(144,11246,11258)"} true; +L0: + + // $t35 := copy($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:28+12 + assume {:print "$at(144,11246,11258)"} true; + $t35 := $t6; + + // $t36 := vector::length<#0>($t35) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:13+28 + call $t36 := $1_vector_length'#0'($t35); + if ($abort_flag) { + assume {:print "$at(144,11231,11259)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // $t37 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:44+1 + $t37 := 0; + assume $IsValid'u64'($t37); + + // $t38 := >($t36, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:42+1 + call $t38 := $Gt($t36, $t37); + + // if ($t38) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:238:9+176 + if ($t38) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:31+16 + assume {:print "$at(144,11297,11313)"} true; +L11: + + // $t39 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:31+16 + assume {:print "$at(144,11297,11313)"} true; + $t39 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t40 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:49+11 + $t40 := $t6; + + // vector::push_back>($t39, $t40) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:13+48 + call $t39 := $1_vector_push_back'vec'#0''($t39, $t40); + if ($abort_flag) { + assume {:print "$at(144,11279,11327)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:13+48 + $t3 := $Dereference($t39); + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:13+48 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:239:61+1 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:241:35+11 + assume {:print "$at(144,11380,11391)"} true; +L10: + + // $t41 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:241:35+11 + assume {:print "$at(144,11380,11391)"} true; + $t41 := $t6; + + // vector::destroy_empty<#0>($t41) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:241:13+34 + call $1_vector_destroy_empty'#0'($t41); + if ($abort_flag) { + assume {:print "$at(144,11358,11392)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:244:25+16 + assume {:print "$at(144,11430,11446)"} true; +L12: + + // $t42 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:244:25+16 + assume {:print "$at(144,11430,11446)"} true; + $t42 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::reverse>($t42) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:244:9+33 + call $t42 := $1_vector_reverse'vec'#0''($t42); + if ($abort_flag) { + assume {:print "$at(144,11414,11447)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:244:9+33 + $t3 := $Dereference($t42); + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:244:9+33 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // $t43 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:245:17+1 + assume {:print "$at(144,11465,11466)"} true; + $t43 := 0; + assume $IsValid'u64'($t43); + + // trace_local[i]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:245:13+1 + assume {:print "$track_local(31,13,1):", $t43} $t43 == $t43; + + // $t44 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:43+13 + assume {:print "$at(144,11510,11523)"} true; + $t44 := $Dereference($t0)->$buckets; + + // $t45 := table_with_length::length>($t44) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:17+40 + call $t45 := $1_table_with_length_length'u64_vec'#0''($t44); + if ($abort_flag) { + assume {:print "$at(144,11484,11524)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // $t46 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:61+1 + $t46 := 0; + assume $IsValid'u64'($t46); + + // $t47 := ==($t45, $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:58+2 + $t47 := $IsEqual'u64'($t45, $t46); + + // if ($t47) goto L25 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + if ($t47) { goto L25; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 +L14: + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + assume {:print "$at(144,11476,11533)"} true; + goto L15; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 +L13: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + assume {:print "$at(144,11476,11533)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + + // $t48 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:64+1 + $t48 := 0; + assume $IsValid'u64'($t48); + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + assume {:print "$at(144,11476,11533)"} true; + assume {:print "$track_abort(31,13):", $t48} $t48 == $t48; + + // $t9 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + $t9 := $t48; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:246:9+57 + goto L23; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume {:print "$at(144,11550,11551)"} true; +L15: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume {:print "$at(144,11550,11551)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'vec'vec'#0'''($t3); + + // $t49 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t49; + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'bool'($t49); + + // $t50 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t50; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'vec'#0''($t50); + + // $t51 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t51; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'u64'($t51); + + // $t52 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t52; + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'u64'($t52); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $temp_0'$1_big_vector_BigVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_big_vector_BigVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume ($IsValid'$1_big_vector_BigVector'#0''($Dereference($t0)) && (((((((((((!$IsEqual'u64'($Dereference($t0)->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t0)->$end_index, 0))) && ($IsEqual'u64'($Dereference($t0)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0))) && ($Dereference($t0)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) * $Dereference($t0)->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, i)), $Dereference($t0)->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) <= $Dereference($t0)->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), ((($Dereference($t0)->$end_index + $Dereference($t0)->$bucket_size) - 1) div $Dereference($t0)->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'u64'($Dereference($t0)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1) * $Dereference($t0)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1)))), $Dereference($t0)->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t0)->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t0)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t0)->$buckets) - 1))) > 0)))); + + // $t53 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t53; + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($Dereference($t53)); + + // $t54 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + havoc $t54; + + // assume WellFormed($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume $IsValid'vec'vec'#0'''($Dereference($t54)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume {:print "$info(): enter loop, variable(s) self, i, new_buckets havocked and reassigned"} true; + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume {:print "$track_local(31,13,1):", $t1} $t1 == $t1; + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:16+1 + assume !$abort_flag; + + // $t49 := <($t1, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:18+1 + call $t49 := $Lt($t1, $t11); + + // if ($t49) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:9+152 + if ($t49) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:247:9+152 +L17: + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:41+4 + assume {:print "$at(144,11609,11613)"} true; +L18: + + // $t53 := borrow_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:36+17 + assume {:print "$at(144,11604,11621)"} true; + $t53 := $ChildMutation($t0, 0, $Dereference($t0)->$buckets); + + // $t54 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:75+16 + $t54 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t50 := vector::pop_back>($t54) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:58+34 + call $t50,$t54 := $1_vector_pop_back'vec'#0''($t54); + if ($abort_flag) { + assume {:print "$at(144,11626,11660)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:58+34 + $t3 := $Dereference($t54); + + // trace_local[new_buckets]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:58+34 + assume {:print "$track_local(31,13,3):", $t3} $t3 == $t3; + + // table_with_length::add>($t53, $t1, $t50) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:13+80 + call $t53 := $1_table_with_length_add'u64_vec'#0''($t53, $t1, $t50); + if ($abort_flag) { + assume {:print "$at(144,11581,11661)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // write_back[Reference($t0).buckets (table_with_length::TableWithLength>)]($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:13+80 + $t0 := $UpdateMutation($t0, $Update'$1_big_vector_BigVector'#0''_buckets($Dereference($t0), $Dereference($t53))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:248:13+80 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // $t51 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:249:21+1 + assume {:print "$at(144,11683,11684)"} true; + $t51 := 1; + assume $IsValid'u64'($t51); + + // $t52 := +($t1, $t51) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:249:19+1 + call $t52 := $AddU64($t1, $t51); + if ($abort_flag) { + assume {:print "$at(144,11681,11682)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[i]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:249:13+1 + assume {:print "$track_local(31,13,1):", $t52} $t52 == $t52; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:249:22+1 + goto L21; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + assume {:print "$at(144,11705,11739)"} true; +L16: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + assume {:print "$at(144,11705,11739)"} true; + + // $t55 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:31+11 + $t55 := $t3; + + // vector::destroy_empty>($t55) on_abort goto L23 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + call $1_vector_destroy_empty'vec'#0''($t55); + if ($abort_flag) { + assume {:print "$at(144,11705,11739)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(31,13):", $t9} $t9 == $t9; + goto L23; + } + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:43+1 + $temp_0'$1_big_vector_BigVector'#0'' := $Dereference($t0); + assume {:print "$track_local(31,13,0):", $temp_0'$1_big_vector_BigVector'#0''} $temp_0'$1_big_vector_BigVector'#0'' == $temp_0'$1_big_vector_BigVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:43+1 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:43+1 + goto L22; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + // Loop invariant checking block for the loop started with header: L8 +L19: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + assume {:print "$at(144,11705,11739)"} true; + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + // Loop invariant checking block for the loop started with header: L9 +L20: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + assume {:print "$at(144,11705,11739)"} true; + assume false; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + // Loop invariant checking block for the loop started with header: L15 +L21: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:251:9+34 + assume {:print "$at(144,11705,11739)"} true; + assume false; + return; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:252:5+1 + assume {:print "$at(144,11745,11746)"} true; +L22: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:252:5+1 + assume {:print "$at(144,11745,11746)"} true; + $ret0 := $t0; + return; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:252:5+1 +L23: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:252:5+1 + assume {:print "$at(144,11745,11746)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + + // label L24 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L24: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L25 at :1:1+10 +L25: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + +} + +// fun big_vector::singleton [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:37:5+172 +procedure {:timeLimit 80} $1_big_vector_singleton$verify(_$t0: #0, _$t1: int) returns ($ret0: $1_big_vector_BigVector'#0') +{ + // declare local variables + var $t2: $1_big_vector_BigVector'#0'; + var $t3: int; + var $t4: $Mutation ($1_big_vector_BigVector'#0'); + var $t5: int; + var $t6: int; + var $t7: $1_big_vector_BigVector'#0'; + var $t0: #0; + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:37:5+1 + assume {:print "$at(144,1212,1213)"} true; + assume $IsValid'#0'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:37:5+1 + assume $IsValid'u64'($t1); + + // trace_local[element]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:37:5+1 + assume {:print "$track_local(31,14,0):", $t0} $t0 == $t0; + + // trace_local[bucket_size]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:37:5+1 + assume {:print "$track_local(31,14,1):", $t1} $t1 == $t1; + + // $t2 := big_vector::empty<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:38:17+18 + assume {:print "$at(144,1313,1331)"} true; + call $t2 := $1_big_vector_empty'#0'($t1); + if ($abort_flag) { + assume {:print "$at(144,1313,1331)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,14):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[v]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:38:13+1 + assume {:print "$track_local(31,14,2):", $t2} $t2 == $t2; + + // $t4 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:39:19+6 + assume {:print "$at(144,1351,1357)"} true; + $t4 := $Mutation($Local(2), EmptyVec(), $t2); + + // assume Identical($t5, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:70:9+47 + assume {:print "$at(145,2929,2976)"} true; + assume ($t5 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets)); + + // assume Identical($t6, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:81:9+47 + assume {:print "$at(145,3416,3463)"} true; + assume ($t6 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets)); + + // big_vector::push_back<#0>($t4, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:39:9+26 + assume {:print "$at(144,1341,1367)"} true; + call $t4 := $1_big_vector_push_back'#0'($t4, $t0); + if ($abort_flag) { + assume {:print "$at(144,1341,1367)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(31,14):", $t3} $t3 == $t3; + goto L2; + } + + // assert Neq(select big_vector::BigVector.bucket_size($t4), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + !$IsEqual'u64'($Dereference($t4)->$bucket_size, 0); + + // assert Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), Eq(select big_vector::BigVector.end_index($t4), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:8:9+58 + assume {:print "$at(145,171,229)"} true; + assert {:msg "assert_failed(145,171,229): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) ==> $IsEqual'u64'($Dereference($t4)->$end_index, 0)); + + // assert Implies(Eq(select big_vector::BigVector.end_index($t4), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:9:9+58 + assume {:print "$at(145,238,296)"} true; + assert {:msg "assert_failed(145,238,296): data invariant does not hold"} + ($IsEqual'u64'($Dereference($t4)->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0)); + + // assert Le(select big_vector::BigVector.end_index($t4), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), select big_vector::BigVector.bucket_size($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:10:9+61 + assume {:print "$at(145,305,366)"} true; + assert {:msg "assert_failed(145,305,366): data invariant does not hold"} + ($Dereference($t4)->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) * $Dereference($t4)->$bucket_size)); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t4), i)), select big_vector::BigVector.bucket_size($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:13:9+158 + assume {:print "$at(145,436,594)"} true; + assert {:msg "assert_failed(145,436,594): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t4)->$buckets, i)), $Dereference($t4)->$bucket_size)))))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t4), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 1))), select big_vector::BigVector.bucket_size($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:16:9+140 + assume {:print "$at(145,679,819)"} true; + assert {:msg "assert_failed(145,679,819): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t4)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) - 1))) <= $Dereference($t4)->$bucket_size)); + + // assert forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t4), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:19:9+82 + assume {:print "$at(145,909,991)"} true; + assert {:msg "assert_failed(145,909,991): data invariant does not hold"} + (var $range_0 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t4)->$buckets, i))))); + + // assert Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), Div(Sub(Add(select big_vector::BigVector.end_index($t4), select big_vector::BigVector.bucket_size($t4)), 1), select big_vector::BigVector.bucket_size($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:21:9+81 + assume {:print "$at(145,1044,1125)"} true; + assert {:msg "assert_failed(145,1044,1125): data invariant does not hold"} + $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), ((($Dereference($t4)->$end_index + $Dereference($t4)->$bucket_size) - 1) div $Dereference($t4)->$bucket_size)); + + // assert Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), Eq(select big_vector::BigVector.end_index($t4), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 1), select big_vector::BigVector.bucket_size($t4)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t4), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 1)))), select big_vector::BigVector.end_index($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:23:9+242 + assume {:print "$at(145,1189,1431)"} true; + assert {:msg "assert_failed(145,1189,1431): data invariant does not hold"} + (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) && $IsEqual'u64'($Dereference($t4)->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) - 1) * $Dereference($t4)->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t4)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) - 1)))), $Dereference($t4)->$end_index))); + + // assert forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t4), i)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:26:9+118 + assume {:print "$at(145,1494,1612)"} true; + assert {:msg "assert_failed(145,1494,1612): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t4)->$buckets, i))); + + // assert forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t4), i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:30:9+116 + assume {:print "$at(145,1663,1779)"} true; + assert {:msg "assert_failed(145,1663,1779): data invariant does not hold"} + (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($Dereference($t4)->$buckets, i))); + + // assert Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t4), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t4)), 1))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:34:9+131 + assume {:print "$at(145,1841,1972)"} true; + assert {:msg "assert_failed(145,1841,1972): data invariant does not hold"} + ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($Dereference($t4)->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t4)->$buckets) - 1))) > 0)); + + // write_back[LocalRoot($t2)@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:39:9+26 + assume {:print "$at(144,1341,1367)"} true; + $t2 := $Dereference($t4); + + // trace_local[v]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:39:9+26 + assume {:print "$track_local(31,14,2):", $t2} $t2 == $t2; + + // $t7 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:40:9+1 + assume {:print "$at(144,1377,1378)"} true; + $t7 := $t2; + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:40:9+1 + assume {:print "$track_return(31,14,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:41:5+1 + assume {:print "$at(144,1383,1384)"} true; +L1: + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:50:9+27 + assume {:print "$at(145,2348,2375)"} true; + assert {:msg "assert_failed(145,2348,2375): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // assert Eq(big_vector::$length<#0>($t7), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:51:9+28 + assume {:print "$at(145,2384,2412)"} true; + assert {:msg "assert_failed(145,2384,2412): post-condition does not hold"} + $IsEqual'u64'($1_big_vector_$length'#0'($t7), 1); + + // assert Eq(select big_vector::BigVector.bucket_size>($t7), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:52:9+42 + assume {:print "$at(145,2421,2463)"} true; + assert {:msg "assert_failed(145,2421,2463): post-condition does not hold"} + $IsEqual'u64'($t7->$bucket_size, $t1); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:52:9+42 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:41:5+1 + assume {:print "$at(144,1383,1384)"} true; +L2: + + // assert Eq($t1, 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:49:5+200 + assume {:print "$at(145,2269,2469)"} true; + assert {:msg "assert_failed(145,2269,2469): abort not covered by any of the `aborts_if` clauses"} + $IsEqual'u64'($t1, 0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:49:5+200 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun big_vector::to_vector<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:282:5+348 +procedure {:inline 1} $1_big_vector_to_vector'#0'(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (#0); + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: Table int (Vec (#0)); + var $t10: Vec (#0); + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec (#0)); + var $t14: Vec (#0); + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:282:5+1 + assume {:print "$at(144,13135,13136)"} true; + assume {:print "$track_local(31,17,0):", $t0} $t0 == $t0; + + // $t3 := vector::empty<#0>() on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:283:19+8 + assume {:print "$at(144,13217,13225)"} true; + call $t3 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,13217,13225)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:283:13+3 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // $t5 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:53+13 + assume {:print "$at(144,13279,13292)"} true; + $t5 := $t0->$buckets; + + // $t6 := table_with_length::length>($t5) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:27+40 + call $t6 := $1_table_with_length_length'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,13253,13293)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[num_buckets]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:13+11 + assume {:print "$track_local(31,17,2):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:285:17+1 + assume {:print "$at(144,13311,13312)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[i]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:285:13+1 + assume {:print "$track_local(31,17,1):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$at(144,13329,13330)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$at(144,13329,13330)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($Dereference($t13)); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$info(): enter loop, variable(s) i, res havocked and reassigned"} true; + assume {:print "$track_local(31,17,1):", $t1} $t1 == $t1; + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:18+1 + call $t8 := $Lt($t1, $t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:9+142 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:9+142 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:28+8 + assume {:print "$at(144,13375,13383)"} true; +L2: + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:28+8 + assume {:print "$at(144,13375,13383)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t9 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:65+13 + $t9 := $t0->$buckets; + + // $t10 := table_with_length::borrow>($t9, $t1) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:39+43 + call $t10 := $1_table_with_length_borrow'u64_vec'#0''($t9, $t1); + if ($abort_flag) { + assume {:print "$at(144,13386,13429)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // vector::append<#0>($t13, $t10) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + call $t13 := $1_vector_append'#0'($t13, $t10); + if ($abort_flag) { + assume {:print "$at(144,13360,13430)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + $t3 := $Dereference($t13); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:21+1 + assume {:print "$at(144,13452,13453)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(144,13450,13451)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:13+1 + assume {:print "$track_local(31,17,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; +L0: + + // $t14 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; + $t14 := $t3; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$track_return(31,17,0):", $t14} $t14 == $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; +L5: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; + $ret0 := $t14; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 +L6: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun big_vector::to_vector [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:282:5+348 +procedure {:timeLimit 80} $1_big_vector_to_vector$verify(_$t0: $1_big_vector_BigVector'#0') returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (#0); + var $t4: int; + var $t5: Table int (Vec (#0)); + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: Table int (Vec (#0)); + var $t10: Vec (#0); + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec (#0)); + var $t14: Vec (#0); + var $t0: $1_big_vector_BigVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t0), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0))), Implies(Eq(select big_vector::BigVector.end_index($t0), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0))), Le(select big_vector::BigVector.end_index($t0), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), i)), select big_vector::BigVector.bucket_size($t0)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), select big_vector::BigVector.bucket_size($t0)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), Div(Sub(Add(select big_vector::BigVector.end_index($t0), select big_vector::BigVector.bucket_size($t0)), 1), select big_vector::BigVector.bucket_size($t0)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(select big_vector::BigVector.end_index($t0), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1), select big_vector::BigVector.bucket_size($t0)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1)))), select big_vector::BigVector.end_index($t0))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t0), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t0), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t0)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:282:5+1 + assume {:print "$at(144,13135,13136)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t0) && (((((((((((!$IsEqual'u64'($t0->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) ==> $IsEqual'u64'($t0->$end_index, 0))) && ($IsEqual'u64'($t0->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0))) && ($t0->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) * $t0->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, i)), $t0->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) <= $t0->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), ((($t0->$end_index + $t0->$bucket_size) - 1) div $t0->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'u64'($t0->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1) * $t0->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1)))), $t0->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t0->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t0->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t0->$buckets) - 1))) > 0)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:282:5+1 + assume {:print "$track_local(31,17,0):", $t0} $t0 == $t0; + + // $t3 := vector::empty<#0>() on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:283:19+8 + assume {:print "$at(144,13217,13225)"} true; + call $t3 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(144,13217,13225)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:283:13+3 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // $t5 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:53+13 + assume {:print "$at(144,13279,13292)"} true; + $t5 := $t0->$buckets; + + // $t6 := table_with_length::length>($t5) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:27+40 + call $t6 := $1_table_with_length_length'u64_vec'#0''($t5); + if ($abort_flag) { + assume {:print "$at(144,13253,13293)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[num_buckets]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:284:13+11 + assume {:print "$track_local(31,17,2):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:285:17+1 + assume {:print "$at(144,13311,13312)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[i]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:285:13+1 + assume {:print "$track_local(31,17,1):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$at(144,13329,13330)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$at(144,13329,13330)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'$1_table_with_length_TableWithLength'u64_vec'#0'''($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume $IsValid'vec'#0''($Dereference($t13)); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$info(): enter loop, variable(s) i, res havocked and reassigned"} true; + assume {:print "$track_local(31,17,1):", $t1} $t1 == $t1; + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:18+1 + call $t8 := $Lt($t1, $t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:9+142 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:286:9+142 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:28+8 + assume {:print "$at(144,13375,13383)"} true; +L2: + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:28+8 + assume {:print "$at(144,13375,13383)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t9 := get_field>.buckets($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:65+13 + $t9 := $t0->$buckets; + + // $t10 := table_with_length::borrow>($t9, $t1) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:39+43 + call $t10 := $1_table_with_length_borrow'u64_vec'#0''($t9, $t1); + if ($abort_flag) { + assume {:print "$at(144,13386,13429)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // vector::append<#0>($t13, $t10) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + call $t13 := $1_vector_append'#0'($t13, $t10); + if ($abort_flag) { + assume {:print "$at(144,13360,13430)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + $t3 := $Dereference($t13); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:287:13+70 + assume {:print "$track_local(31,17,3):", $t3} $t3 == $t3; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:21+1 + assume {:print "$at(144,13452,13453)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(144,13450,13451)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(31,17):", $t4} $t4 == $t4; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:13+1 + assume {:print "$track_local(31,17,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:288:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; +L0: + + // $t14 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; + $t14 := $t3; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$track_return(31,17,0):", $t14} $t14 == $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:290:9+3 + assume {:print "$at(144,13474,13477)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; +L5: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; + $ret0 := $t14; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 +L6: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.move:291:5+1 + assume {:print "$at(144,13482,13483)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:141:5+88 +function {:inline} $1_bit_vector_$length(self: $1_bit_vector_BitVector): int { + $1_vector_$length'bool'(self->$bit_field) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+193 +function {:inline} $1_bit_vector_$is_index_set(self: $1_bit_vector_BitVector, bit_index: int): bool { + $1_vector_$borrow'bool'(self->$bit_field, bit_index) +} + +// struct bit_vector::BitVector at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:17:5+100 +datatype $1_bit_vector_BitVector { + $1_bit_vector_BitVector($length: int, $bit_field: Vec (bool)) +} +function {:inline} $Update'$1_bit_vector_BitVector'_length(s: $1_bit_vector_BitVector, x: int): $1_bit_vector_BitVector { + $1_bit_vector_BitVector(x, s->$bit_field) +} +function {:inline} $Update'$1_bit_vector_BitVector'_bit_field(s: $1_bit_vector_BitVector, x: Vec (bool)): $1_bit_vector_BitVector { + $1_bit_vector_BitVector(s->$length, x) +} +function $IsValid'$1_bit_vector_BitVector'(s: $1_bit_vector_BitVector): bool { + $IsValid'u64'(s->$length) + && $IsValid'vec'bool''(s->$bit_field) +} +function {:inline} $IsEqual'$1_bit_vector_BitVector'(s1: $1_bit_vector_BitVector, s2: $1_bit_vector_BitVector): bool { + $IsEqual'u64'(s1->$length, s2->$length) + && $IsEqual'vec'bool''(s1->$bit_field, s2->$bit_field)} + +// fun bit_vector::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:141:5+88 +procedure {:timeLimit 80} $1_bit_vector_length$verify(_$t0: $1_bit_vector_BitVector) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (bool); + var $t2: int; + var $t3: int; + var $t0: $1_bit_vector_BitVector; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:141:5+1 + assume {:print "$at(5,4328,4329)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($t0) && $IsEqual'u64'($t0->$length, LenVec($t0->$bit_field))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:141:5+1 + assume {:print "$track_local(32,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:142:24+15 + assume {:print "$at(5,4394,4409)"} true; + $t1 := $t0->$bit_field; + + // $t2 := vector::length($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:142:9+31 + call $t2 := $1_vector_length'bool'($t1); + if ($abort_flag) { + assume {:print "$at(5,4379,4410)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(32,1):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:142:9+31 + assume {:print "$track_return(32,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:143:5+1 + assume {:print "$at(5,4415,4416)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:143:5+1 + assume {:print "$at(5,4415,4416)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:143:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:143:5+1 + assume {:print "$at(5,4415,4416)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun bit_vector::set [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+217 +procedure {:inline 1} $1_bit_vector_set(_$t0: $Mutation ($1_bit_vector_BitVector), _$t1: int) returns ($ret0: $Mutation ($1_bit_vector_BitVector)) +{ + // declare local variables + var $t2: $Mutation (bool); + var $t3: Vec (bool); + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $Mutation (Vec (bool)); + var $t9: $Mutation (bool); + var $t10: bool; + var $t0: $Mutation ($1_bit_vector_BitVector); + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + assume {:print "$at(5,1514,1515)"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + assume {:print "$track_local(32,4,1):", $t1} $t1 == $t1; + + // $t3 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:44+15 + assume {:print "$at(5,1612,1627)"} true; + $t3 := $Dereference($t0)->$bit_field; + + // $t4 := vector::length($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:29+31 + call $t4 := $1_vector_length'bool'($t3); + if ($abort_flag) { + assume {:print "$at(5,1597,1628)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(32,4):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:27+1 + call $t6 := $Lt($t1, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + + // $t7 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:62+6 + $t7 := 131072; + assume $IsValid'u64'($t7); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + assume {:print "$track_abort(32,4):", $t7} $t7 == $t7; + + // $t5 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + $t5 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:41+4 + assume {:print "$at(5,1679,1683)"} true; +L2: + + // $t8 := borrow_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:36+19 + assume {:print "$at(5,1674,1693)"} true; + $t8 := $ChildMutation($t0, 1, $Dereference($t0)->$bit_field); + + // $t9 := vector::borrow_mut($t8, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:17+50 + call $t9,$t8 := $1_vector_borrow_mut'bool'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(5,1655,1705)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(32,4):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[x]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:13+1 + $temp_0'bool' := $Dereference($t9); + assume {:print "$track_local(32,4,2):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // $t10 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:14+4 + assume {:print "$at(5,1720,1724)"} true; + $t10 := true; + assume $IsValid'bool'($t10); + + // write_ref($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t9 := $UpdateMutation($t9, $t10); + + // write_back[Reference($t8)[]]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t8 := $UpdateMutation($t8, UpdateVec($Dereference($t8), ReadVec($t9->p, LenVec($t8->p)), $Dereference($t9))); + + // write_back[Reference($t0).bit_field (vector)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t0 := $UpdateMutation($t0, $Update'$1_bit_vector_BitVector'_bit_field($Dereference($t0), $Dereference($t8))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:18+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:18+1 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 + assume {:print "$at(5,1730,1731)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 + assume {:print "$at(5,1730,1731)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 + assume {:print "$at(5,1730,1731)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun bit_vector::set [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+217 +procedure {:timeLimit 80} $1_bit_vector_set$verify(_$t0: $Mutation ($1_bit_vector_BitVector), _$t1: int) returns ($ret0: $Mutation ($1_bit_vector_BitVector)) +{ + // declare local variables + var $t2: $Mutation (bool); + var $t3: $1_bit_vector_BitVector; + var $t4: Vec (bool); + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: $Mutation (Vec (bool)); + var $t10: $Mutation (bool); + var $t11: bool; + var $t0: $Mutation ($1_bit_vector_BitVector); + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + assume {:print "$at(5,1514,1515)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + assume $IsValid'u64'($t1); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + $t3 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:57:5+1 + assume {:print "$track_local(32,4,1):", $t1} $t1 == $t1; + + // $t4 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:44+15 + assume {:print "$at(5,1612,1627)"} true; + $t4 := $Dereference($t0)->$bit_field; + + // $t5 := vector::length($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:29+31 + call $t5 := $1_vector_length'bool'($t4); + if ($abort_flag) { + assume {:print "$at(5,1597,1628)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := <($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:27+1 + call $t7 := $Lt($t1, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 +L0: + + // assert Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field)); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + + // $t8 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:62+6 + $t8 := 131072; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + assume {:print "$at(5,1577,1637)"} true; + assume {:print "$track_abort(32,4):", $t8} $t8 == $t8; + + // $t6 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + $t6 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:58:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:41+4 + assume {:print "$at(5,1679,1683)"} true; +L2: + + // $t9 := borrow_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:36+19 + assume {:print "$at(5,1674,1693)"} true; + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$bit_field); + + // $t10 := vector::borrow_mut($t9, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:17+50 + call $t10,$t9 := $1_vector_borrow_mut'bool'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(5,1655,1705)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[x]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:59:13+1 + $temp_0'bool' := $Dereference($t10); + assume {:print "$track_local(32,4,2):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // $t11 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:14+4 + assume {:print "$at(5,1720,1724)"} true; + $t11 := true; + assume $IsValid'bool'($t11); + + // write_ref($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t10 := $UpdateMutation($t10, $t11); + + // write_back[Reference($t9)[]]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t9 := $UpdateMutation($t9, UpdateVec($Dereference($t9), ReadVec($t10->p, LenVec($t9->p)), $Dereference($t10))); + + // write_back[Reference($t0).bit_field (vector)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $t0 := $UpdateMutation($t0, $Update'$1_bit_vector_BitVector'_bit_field($Dereference($t0), $Dereference($t9))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:9+9 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:60:18+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,4,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // assert Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 + assume {:print "$at(5,1730,1731)"} true; +L3: + + // assert Not(Ge($t1, bit_vector::$length[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:69:9+48 + assume {:print "$at(5,1912,1960)"} true; + assert {:msg "assert_failed(5,1912,1960): function does not abort under this condition"} + !($t1 >= $1_bit_vector_$length($t3)); + + // assert Index(select bit_vector::BitVector.bit_field($t0), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:64:9+34 + assume {:print "$at(5,1784,1818)"} true; + assert {:msg "assert_failed(5,1784,1818): post-condition does not hold"} + ReadVec($Dereference($t0)->$bit_field, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:64:9+34 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:61:5+1 + assume {:print "$at(5,1730,1731)"} true; +L4: + + // assert Ge($t1, bit_vector::$length[]($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:62:5+88 + assume {:print "$at(5,1736,1824)"} true; + assert {:msg "assert_failed(5,1736,1824): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $1_bit_vector_$length($t3)); + + // assert And(Ge($t1, bit_vector::$length[]($t3)), Eq(131072, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:62:5+88 + assert {:msg "assert_failed(5,1736,1824): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($t1 >= $1_bit_vector_$length($t3)) && $IsEqual'num'(131072, $t6)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:62:5+88 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun bit_vector::new [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:22:5+637 +procedure {:timeLimit 80} $1_bit_vector_new$verify(_$t0: int) returns ($ret0: $1_bit_vector_BitVector) +{ + // declare local variables + var $t1: Vec (bool); + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $Mutation (Vec (bool)); + var $t16: Vec (bool); + var $t17: $1_bit_vector_BitVector; + var $t0: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'u64': int; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:22:5+1 + assume {:print "$at(5,496,497)"} true; + assume $IsValid'u64'($t0); + + // trace_local[length]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:22:5+1 + assume {:print "$track_local(32,3,0):", $t0} $t0 == $t0; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:26+1 + assume {:print "$at(5,562,563)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := >($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:24+1 + call $t4 := $Gt($t0, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 + assume {:print "$at(5,545,573)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:29+7 +L0: + + // $t5 := 131073 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:29+7 + assume {:print "$at(5,565,572)"} true; + $t5 := 131073; + assume $IsValid'u64'($t5); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 + assume {:print "$at(5,545,573)"} true; + assume {:print "$track_abort(32,3):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 + $t6 := $t5; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:23:9+28 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:17+6 + assume {:print "$at(5,591,597)"} true; +L2: + + // $t7 := 1024 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:26+8 + assume {:print "$at(5,600,608)"} true; + $t7 := 1024; + assume $IsValid'u64'($t7); + + // $t8 := <($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:24+1 + call $t8 := $Lt($t0, $t7); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 + assume {:print "$at(5,583,618)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:36+7 +L3: + + // $t9 := 131073 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:36+7 + assume {:print "$at(5,610,617)"} true; + $t9 := 131073; + assume $IsValid'u64'($t9); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 + assume {:print "$at(5,583,618)"} true; + assume {:print "$track_abort(32,3):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 + $t6 := $t9; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:24:9+35 + goto L12; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:25:23+1 + assume {:print "$at(5,642,643)"} true; +L5: + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:25:23+1 + assume {:print "$at(5,642,643)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // trace_local[counter]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:25:13+7 + assume {:print "$track_local(32,3,2):", $t10} $t10 == $t10; + + // $t1 := vector::empty() on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:26:25+15 + assume {:print "$at(5,669,684)"} true; + call $t1 := $1_vector_empty'bool'(); + if ($abort_flag) { + assume {:print "$at(5,669,684)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,3):", $t6} $t6 == $t6; + goto L12; + } + + // trace_local[bit_field]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:26:13+9 + assume {:print "$track_local(32,3,1):", $t1} $t1 == $t1; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:27:17+106 + assume {:print "$at(5,702,808)"} true; +L9: + + // assert Le($t10, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:28:13+28 + assume {:print "$at(5,721,749)"} true; + assert {:msg "assert_failed(5,721,749): base case of the loop invariant does not hold"} + ($t10 <= $t0); + + // assert Eq(Len($t1), $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$at(5,762,798)"} true; + assert {:msg "assert_failed(5,762,798): base case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t10); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'vec'bool''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'u64'($t2); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'u64'($t14); + + // $t15 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume $IsValid'vec'bool''($Dereference($t15)); + + // trace_local[bit_field]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$info(): enter loop, variable(s) bit_field, counter havocked and reassigned"} true; + assume {:print "$track_local(32,3,1):", $t1} $t1 == $t1; + + // trace_local[counter]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$track_local(32,3,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Le($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:28:13+28 + assume {:print "$at(5,721,749)"} true; + assume ($t2 <= $t0); + + // assume Eq(Len($t1), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$at(5,762,798)"} true; + assume $IsEqual'num'(LenVec($t1), $t2); + + // $t11 := <($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:31:22+1 + assume {:print "$at(5,831,832)"} true; + call $t11 := $Lt($t2, $t0); + + // if ($t11) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:27:9+249 + assume {:print "$at(5,694,943)"} true; + if ($t11) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:27:9+249 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:31+14 + assume {:print "$at(5,875,889)"} true; +L8: + + // $t15 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:31+14 + assume {:print "$at(5,875,889)"} true; + $t15 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t12 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:47+5 + $t12 := false; + assume $IsValid'bool'($t12); + + // vector::push_back($t15, $t12) on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:13+40 + call $t15 := $1_vector_push_back'bool'($t15, $t12); + if ($abort_flag) { + assume {:print "$at(5,857,897)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,3):", $t6} $t6 == $t6; + goto L12; + } + + // write_back[LocalRoot($t1)@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:13+40 + $t1 := $Dereference($t15); + + // trace_local[bit_field]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:32:13+40 + assume {:print "$track_local(32,3,1):", $t1} $t1 == $t1; + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:33:33+1 + assume {:print "$at(5,931,932)"} true; + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := +($t2, $t13) on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:33:31+1 + call $t14 := $AddU64($t2, $t13); + if ($abort_flag) { + assume {:print "$at(5,929,930)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,3):", $t6} $t6 == $t6; + goto L12; + } + + // trace_local[counter]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:33:13+7 + assume {:print "$track_local(32,3,2):", $t14} $t14 == $t14; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:33:34+1 + goto L10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:35:9+99 + assume {:print "$at(5,953,1052)"} true; +L6: + + // assert Eq($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:36:13+25 + assume {:print "$at(5,972,997)"} true; + assert {:msg "assert_failed(5,972,997): unknown assertion failed"} + $IsEqual'u64'($t2, $t0); + + // assert Eq(Len($t1), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:37:13+32 + assume {:print "$at(5,1010,1042)"} true; + assert {:msg "assert_failed(5,1010,1042): unknown assertion failed"} + $IsEqual'num'(LenVec($t1), $t0); + + // $t16 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:42:13+9 + assume {:print "$at(5,1107,1116)"} true; + $t16 := $t1; + + // $t17 := pack bit_vector::BitVector($t0, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:40:9+64 + assume {:print "$at(5,1063,1127)"} true; + $t17 := $1_bit_vector_BitVector($t0, $t16); + + // assert Eq(select bit_vector::BitVector.length($t17), Len(select bit_vector::BitVector.bit_field($t17))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($t17->$length, LenVec($t17->$bit_field)); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:40:9+64 + assume {:print "$at(5,1063,1127)"} true; + assume {:print "$track_return(32,3,0):", $t17} $t17 == $t17; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:40:9+64 + goto L11; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:35:9+99 + // Loop invariant checking block for the loop started with header: L9 + assume {:print "$at(5,953,1052)"} true; +L10: + + // assert Le($t14, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:28:13+28 + assume {:print "$at(5,721,749)"} true; + assert {:msg "assert_failed(5,721,749): induction case of the loop invariant does not hold"} + ($t14 <= $t0); + + // assert Eq(Len($t1), $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume {:print "$at(5,762,798)"} true; + assert {:msg "assert_failed(5,762,798): induction case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t14); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:29:13+36 + assume false; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:44:5+1 + assume {:print "$at(5,1132,1133)"} true; +L11: + + // assert Not(Le($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:52:9+35 + assume {:print "$at(5,1333,1368)"} true; + assert {:msg "assert_failed(5,1333,1368): function does not abort under this condition"} + !($t0 <= 0); + + // assert Not(Ge($t0, 1024)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:53:9+42 + assume {:print "$at(5,1377,1419)"} true; + assert {:msg "assert_failed(5,1377,1419): function does not abort under this condition"} + !($t0 >= 1024); + + // assert Eq(select bit_vector::BitVector.length($t17), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:47:9+32 + assume {:print "$at(5,1186,1218)"} true; + assert {:msg "assert_failed(5,1186,1218): post-condition does not hold"} + $IsEqual'u64'($t17->$length, $t0); + + // assert Eq(Len(select bit_vector::BitVector.bit_field($t17)), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:48:9+40 + assume {:print "$at(5,1227,1267)"} true; + assert {:msg "assert_failed(5,1227,1267): post-condition does not hold"} + $IsEqual'num'(LenVec($t17->$bit_field), $t0); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:48:9+40 + $ret0 := $t17; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:44:5+1 + assume {:print "$at(5,1132,1133)"} true; +L12: + + // assert Or(Le($t0, 0), Ge($t0, 1024)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:45:5+135 + assume {:print "$at(5,1138,1273)"} true; + assert {:msg "assert_failed(5,1138,1273): abort not covered by any of the `aborts_if` clauses"} + (($t0 <= 0) || ($t0 >= 1024)); + + // assert Or(And(Le($t0, 0), Eq(131073, $t6)), And(Ge($t0, 1024), Eq(131073, $t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:45:5+135 + assert {:msg "assert_failed(5,1138,1273): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ((($t0 <= 0) && $IsEqual'num'(131073, $t6)) || (($t0 >= 1024) && $IsEqual'num'(131073, $t6))); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:45:5+135 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun bit_vector::is_index_set [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+193 +procedure {:inline 1} $1_bit_vector_is_index_set(_$t0: $1_bit_vector_BitVector, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (bool); + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: Vec (bool); + var $t8: bool; + var $t0: $1_bit_vector_BitVector; + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume {:print "$at(5,3591,3592)"} true; + assume {:print "$track_local(32,0,0):", $t0} $t0 == $t0; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume {:print "$track_local(32,0,1):", $t1} $t1 == $t1; + + // $t2 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:44+15 + assume {:print "$at(5,3700,3715)"} true; + $t2 := $t0->$bit_field; + + // $t3 := vector::length($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:29+31 + call $t3 := $1_vector_length'bool'($t2); + if ($abort_flag) { + assume {:print "$at(5,3685,3716)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(32,0):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := <($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:27+1 + call $t5 := $Lt($t1, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + assume {:print "$at(5,3665,3725)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 +L0: + + // $t6 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:62+6 + assume {:print "$at(5,3718,3724)"} true; + $t6 := 131072; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + assume {:print "$at(5,3665,3725)"} true; + assume {:print "$track_abort(32,0):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + $t4 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:26+4 + assume {:print "$at(5,3752,3756)"} true; +L2: + + // $t7 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:25+15 + assume {:print "$at(5,3751,3766)"} true; + $t7 := $t0->$bit_field; + + // $t8 := vector::borrow($t7, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:10+42 + call $t8 := $1_vector_borrow'bool'($t7, $t1); + if ($abort_flag) { + assume {:print "$at(5,3736,3778)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(32,0):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:9+43 + assume {:print "$track_return(32,0,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 + assume {:print "$at(5,3783,3784)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 + assume {:print "$at(5,3783,3784)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 + assume {:print "$at(5,3783,3784)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun bit_vector::is_index_set [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+193 +procedure {:timeLimit 80} $1_bit_vector_is_index_set$verify(_$t0: $1_bit_vector_BitVector, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (bool); + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: Vec (bool); + var $t8: bool; + var $t0: $1_bit_vector_BitVector; + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume {:print "$at(5,3591,3592)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($t0) && $IsEqual'u64'($t0->$length, LenVec($t0->$bit_field))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume {:print "$track_local(32,0,0):", $t0} $t0 == $t0; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:119:5+1 + assume {:print "$track_local(32,0,1):", $t1} $t1 == $t1; + + // $t2 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:44+15 + assume {:print "$at(5,3700,3715)"} true; + $t2 := $t0->$bit_field; + + // $t3 := vector::length($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:29+31 + call $t3 := $1_vector_length'bool'($t2); + if ($abort_flag) { + assume {:print "$at(5,3685,3716)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(32,0):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := <($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:27+1 + call $t5 := $Lt($t1, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + assume {:print "$at(5,3665,3725)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 +L0: + + // $t6 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:62+6 + assume {:print "$at(5,3718,3724)"} true; + $t6 := 131072; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + assume {:print "$at(5,3665,3725)"} true; + assume {:print "$track_abort(32,0):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + $t4 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:120:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:26+4 + assume {:print "$at(5,3752,3756)"} true; +L2: + + // $t7 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:25+15 + assume {:print "$at(5,3751,3766)"} true; + $t7 := $t0->$bit_field; + + // $t8 := vector::borrow($t7, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:10+42 + call $t8 := $1_vector_borrow'bool'($t7, $t1); + if ($abort_flag) { + assume {:print "$at(5,3736,3778)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(32,0):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:121:9+43 + assume {:print "$track_return(32,0,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 + assume {:print "$at(5,3783,3784)"} true; +L3: + + // assert Not(Ge($t1, bit_vector::$length[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:130:9+48 + assume {:print "$at(5,3998,4046)"} true; + assert {:msg "assert_failed(5,3998,4046): function does not abort under this condition"} + !($t1 >= $1_bit_vector_$length($t0)); + + // assert Eq($t8, Index(select bit_vector::BitVector.bit_field($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:125:9+44 + assume {:print "$at(5,3853,3897)"} true; + assert {:msg "assert_failed(5,3853,3897): post-condition does not hold"} + $IsEqual'bool'($t8, ReadVec($t0->$bit_field, $t1)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:125:9+44 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:122:5+1 + assume {:print "$at(5,3783,3784)"} true; +L4: + + // assert Ge($t1, bit_vector::$length[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:123:5+114 + assume {:print "$at(5,3789,3903)"} true; + assert {:msg "assert_failed(5,3789,3903): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $1_bit_vector_$length($t0)); + + // assert And(Ge($t1, bit_vector::$length[]($t0)), Eq(131072, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:123:5+114 + assert {:msg "assert_failed(5,3789,3903): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($t1 >= $1_bit_vector_$length($t0)) && $IsEqual'num'(131072, $t4)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:123:5+114 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun bit_vector::longest_set_sequence_starting_at [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:148:5+887 +procedure {:timeLimit 80} $1_bit_vector_longest_set_sequence_starting_at$verify(_$t0: $1_bit_vector_BitVector, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: $1_bit_vector_BitVector; + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:148:5+1 + assume {:print "$at(5,4615,4616)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($t0) && $IsEqual'u64'($t0->$length, LenVec($t0->$bit_field))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:148:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:148:5+1 + assume {:print "$track_local(32,2,0):", $t0} $t0 == $t0; + + // trace_local[start_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:148:5+1 + assume {:print "$track_local(32,2,1):", $t1} $t1 == $t1; + + // $t3 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:31+11 + assume {:print "$at(5,4732,4743)"} true; + $t3 := $t0->$length; + + // $t4 := <($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:29+1 + call $t4 := $Lt($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 + assume {:print "$at(5,4710,4752)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 +L0: + + // $t5 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:44+6 + assume {:print "$at(5,4745,4751)"} true; + $t5 := 131072; + assume $IsValid'u64'($t5); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 + assume {:print "$at(5,4710,4752)"} true; + assume {:print "$track_abort(32,2):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 + $t6 := $t5; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:149:9+42 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:150:21+11 + assume {:print "$at(5,4774,4785)"} true; +L2: + + // trace_local[index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:150:13+5 + assume {:print "$at(5,4766,4771)"} true; + assume {:print "$track_local(32,2,2):", $t1} $t1 == $t1; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:154:13+418 + assume {:print "$at(5,4910,5328)"} true; +L9: + + // assert Ge($t1, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:155:17+31 + assume {:print "$at(5,4933,4964)"} true; + assert {:msg "assert_failed(5,4933,4964): base case of the loop invariant does not hold"} + ($t1 >= $t1); + + // assert Or(Eq($t1, $t1), bit_vector::$is_index_set($t0, Sub($t1, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:156:17+64 + assume {:print "$at(5,4981,5045)"} true; + assert {:msg "assert_failed(5,4981,5045): base case of the loop invariant does not hold"} + ($IsEqual'u64'($t1, $t1) || $1_bit_vector_$is_index_set($t0, ($t1 - 1))); + + // assert Or(Eq($t1, $t1), Lt(Sub($t1, 1), vector::$length(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:157:17+77 + assume {:print "$at(5,5062,5139)"} true; + assert {:msg "assert_failed(5,5062,5139): base case of the loop invariant does not hold"} + ($IsEqual'u64'($t1, $t1) || (($t1 - 1) < $1_vector_$length'bool'($t0->$bit_field))); + + // assert forall j: num: Range($t1, $t1): bit_vector::$is_index_set($t0, j) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:158:17+64 + assume {:print "$at(5,5156,5220)"} true; + assert {:msg "assert_failed(5,5156,5220): base case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t1); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($1_bit_vector_$is_index_set($t0, j))))); + + // assert forall j: num: Range($t1, $t1): Lt(j, vector::$length(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume {:print "$at(5,5237,5314)"} true; + assert {:msg "assert_failed(5,5237,5314): base case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t1); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ((j < $1_vector_$length'bool'($t0->$bit_field)))))); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'u64'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'u64'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'bool'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume $IsValid'u64'($t12); + + // trace_local[index]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume {:print "$info(): enter loop, variable(s) index havocked and reassigned"} true; + assume {:print "$track_local(32,2,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Ge($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:155:17+31 + assume {:print "$at(5,4933,4964)"} true; + assume ($t2 >= $t1); + + // assume Or(Eq($t2, $t1), bit_vector::$is_index_set($t0, Sub($t2, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:156:17+64 + assume {:print "$at(5,4981,5045)"} true; + assume ($IsEqual'u64'($t2, $t1) || $1_bit_vector_$is_index_set($t0, ($t2 - 1))); + + // assume Or(Eq($t2, $t1), Lt(Sub($t2, 1), vector::$length(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:157:17+77 + assume {:print "$at(5,5062,5139)"} true; + assume ($IsEqual'u64'($t2, $t1) || (($t2 - 1) < $1_vector_$length'bool'($t0->$bit_field))); + + // assume forall j: num: Range($t1, $t2): bit_vector::$is_index_set($t0, j) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:158:17+64 + assume {:print "$at(5,5156,5220)"} true; + assume (var $range_0 := $Range($t1, $t2); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($1_bit_vector_$is_index_set($t0, j))))); + + // assume forall j: num: Range($t1, $t2): Lt(j, vector::$length(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume {:print "$at(5,5237,5314)"} true; + assume (var $range_0 := $Range($t1, $t2); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ((j < $1_vector_$length'bool'($t0->$bit_field)))))); + + // $t7 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:161:21+11 + assume {:print "$at(5,5350,5361)"} true; + $t7 := $t0->$length; + + // $t8 := <($t2, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:161:19+1 + call $t8 := $Lt($t2, $t7); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:153:9+577 + assume {:print "$at(5,4889,5466)"} true; + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:153:9+577 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:31+4 + assume {:print "$at(5,5405,5409)"} true; +L5: + + // $t9 := bit_vector::is_index_set($t0, $t2) on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:18+25 + assume {:print "$at(5,5392,5417)"} true; + call $t9 := $1_bit_vector_is_index_set($t0, $t2); + if ($abort_flag) { + assume {:print "$at(5,5392,5417)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,2):", $t6} $t6 == $t6; + goto L12; + } + + // $t10 := !($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:17+1 + call $t10 := $Not($t9); + + // if ($t10) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:13+37 + if ($t10) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:45+5 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:163:45+5 + assume {:print "$at(5,5419,5424)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:164:21+5 + assume {:print "$at(5,5446,5451)"} true; +L6: + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:164:29+1 + assume {:print "$at(5,5454,5455)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t2, $t11) on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:164:27+1 + call $t12 := $AddU64($t2, $t11); + if ($abort_flag) { + assume {:print "$at(5,5452,5453)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,2):", $t6} $t6 == $t6; + goto L12; + } + + // trace_local[index]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:164:13+5 + assume {:print "$track_local(32,2,2):", $t12} $t12 == $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:164:30+1 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:167:9+5 + assume {:print "$at(5,5477,5482)"} true; +L8: + + // $t13 := -($t2, $t1) on_abort goto L12 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:167:15+1 + assume {:print "$at(5,5483,5484)"} true; + call $t13 := $Sub($t2, $t1); + if ($abort_flag) { + assume {:print "$at(5,5483,5484)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,2):", $t6} $t6 == $t6; + goto L12; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:167:9+19 + assume {:print "$track_return(32,2,0):", $t13} $t13 == $t13; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:167:9+19 + goto L11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:153:9+577 + assume {:print "$at(5,4889,5466)"} true; +L3: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:153:9+577 + assume {:print "$at(5,4889,5466)"} true; + goto L8; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:153:9+577 + // Loop invariant checking block for the loop started with header: L9 +L10: + + // assert Ge($t12, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:155:17+31 + assume {:print "$at(5,4933,4964)"} true; + assert {:msg "assert_failed(5,4933,4964): induction case of the loop invariant does not hold"} + ($t12 >= $t1); + + // assert Or(Eq($t12, $t1), bit_vector::$is_index_set($t0, Sub($t12, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:156:17+64 + assume {:print "$at(5,4981,5045)"} true; + assert {:msg "assert_failed(5,4981,5045): induction case of the loop invariant does not hold"} + ($IsEqual'u64'($t12, $t1) || $1_bit_vector_$is_index_set($t0, ($t12 - 1))); + + // assert Or(Eq($t12, $t1), Lt(Sub($t12, 1), vector::$length(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:157:17+77 + assume {:print "$at(5,5062,5139)"} true; + assert {:msg "assert_failed(5,5062,5139): induction case of the loop invariant does not hold"} + ($IsEqual'u64'($t12, $t1) || (($t12 - 1) < $1_vector_$length'bool'($t0->$bit_field))); + + // assert forall j: num: Range($t1, $t12): bit_vector::$is_index_set($t0, j) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:158:17+64 + assume {:print "$at(5,5156,5220)"} true; + assert {:msg "assert_failed(5,5156,5220): induction case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t12); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($1_bit_vector_$is_index_set($t0, j))))); + + // assert forall j: num: Range($t1, $t12): Lt(j, vector::$length(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume {:print "$at(5,5237,5314)"} true; + assert {:msg "assert_failed(5,5237,5314): induction case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t12); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ((j < $1_vector_$length'bool'($t0->$bit_field)))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:159:17+77 + assume false; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:168:5+1 + assume {:print "$at(5,5501,5502)"} true; +L11: + + // assert Not(Ge($t1, select bit_vector::BitVector.length($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:171:9+37 + assume {:print "$at(5,5597,5634)"} true; + assert {:msg "assert_failed(5,5597,5634): function does not abort under this condition"} + !($t1 >= $t0->$length); + + // assert forall i: num: Range($t1, $t13): bit_vector::$is_index_set($t0, i) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:172:9+63 + assume {:print "$at(5,5643,5706)"} true; + assert {:msg "assert_failed(5,5643,5706): post-condition does not hold"} + (var $range_0 := $Range($t1, $t13); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($1_bit_vector_$is_index_set($t0, i))))); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:172:9+63 + $ret0 := $t13; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:168:5+1 + assume {:print "$at(5,5501,5502)"} true; +L12: + + // assert Ge($t1, select bit_vector::BitVector.length($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:170:5+204 + assume {:print "$at(5,5508,5712)"} true; + assert {:msg "assert_failed(5,5508,5712): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $t0->$length); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:170:5+204 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun bit_vector::shift_left_for_verification_only [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1917 +procedure {:timeLimit 80} $1_bit_vector_shift_left_for_verification_only$verify(_$t0: $Mutation ($1_bit_vector_BitVector), _$t1: int) returns ($ret0: $Mutation ($1_bit_vector_BitVector)) +{ + // declare local variables + var $t2: int; + var $t3: $Mutation (bool); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_bit_vector_BitVector; + var $t8: $1_bit_vector_BitVector; + var $t9: $1_bit_vector_BitVector; + var $t10: $1_bit_vector_BitVector; + var $t11: $1_bit_vector_BitVector; + var $t12: $1_bit_vector_BitVector; + var $t13: $1_bit_vector_BitVector; + var $t14: $1_bit_vector_BitVector; + var $t15: $1_bit_vector_BitVector; + var $t16: $1_bit_vector_BitVector; + var $t17: $1_bit_vector_BitVector; + var $t18: $1_bit_vector_BitVector; + var $t19: $1_bit_vector_BitVector; + var $t20: $1_bit_vector_BitVector; + var $t21: $1_bit_vector_BitVector; + var $t22: $1_bit_vector_BitVector; + var $t23: $1_bit_vector_BitVector; + var $t24: $1_bit_vector_BitVector; + var $t25: $1_bit_vector_BitVector; + var $t26: int; + var $t27: bool; + var $t28: Vec (bool); + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: bool; + var $t33: bool; + var $t34: int; + var $t35: int; + var $t36: $Mutation (Vec (bool)); + var $t37: $Mutation (bool); + var $t38: int; + var $t39: bool; + var $t40: $1_bit_vector_BitVector; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t0: $Mutation ($1_bit_vector_BitVector); + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + assume {:print "$at(5,5813,5814)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + assume $IsValid'u64'($t1); + + // $t7 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t7 := $Dereference($t0); + + // $t8 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t8 := $Dereference($t0); + + // $t9 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t9 := $Dereference($t0); + + // $t10 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t10 := $Dereference($t0); + + // $t11 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t11 := $Dereference($t0); + + // $t12 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t12 := $Dereference($t0); + + // $t13 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t13 := $Dereference($t0); + + // $t14 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t14 := $Dereference($t0); + + // $t15 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t15 := $Dereference($t0); + + // $t16 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t16 := $Dereference($t0); + + // $t17 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t17 := $Dereference($t0); + + // $t18 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t18 := $Dereference($t0); + + // $t19 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t19 := $Dereference($t0); + + // $t20 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t20 := $Dereference($t0); + + // $t21 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t21 := $Dereference($t0); + + // $t22 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t22 := $Dereference($t0); + + // $t23 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t23 := $Dereference($t0); + + // $t24 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t24 := $Dereference($t0); + + // $t25 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $t25 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:181:5+1 + assume {:print "$track_local(32,6,1):", $t1} $t1 == $t1; + + // $t26 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:23+11 + assume {:print "$at(5,5916,5927)"} true; + $t26 := $Dereference($t0)->$length; + + // $t27 := >=($t1, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:20+2 + call $t27 := $Ge($t1, $t26); + + // if ($t27) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + if ($t27) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:183:39+4 + assume {:print "$at(5,5969,5973)"} true; +L1: + + // $t28 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:183:38+15 + assume {:print "$at(5,5968,5983)"} true; + $t28 := $Dereference($t0)->$bit_field; + + // $t29 := vector::length($t28) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:183:23+31 + call $t29 := $1_vector_length'bool'($t28); + if ($abort_flag) { + assume {:print "$at(5,5953,5984)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[len]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:183:17+3 + assume {:print "$track_local(32,6,6):", $t29} $t29 == $t29; + + // $t31 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:184:21+1 + assume {:print "$at(5,6006,6007)"} true; + $t31 := 0; + assume $IsValid'u64'($t31); + + // trace_local[i]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:184:17+1 + assume {:print "$track_local(32,6,4):", $t31} $t31 == $t31; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:186:17+245 + assume {:print "$at(5,6046,6291)"} true; +L5: + + // assert Eq($t29, select bit_vector::BitVector.length($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:187:21+29 + assume {:print "$at(5,6073,6102)"} true; + assert {:msg "assert_failed(5,6073,6102): base case of the loop invariant does not hold"} + $IsEqual'u64'($t29, $Dereference($t0)->$length); + + // assert forall k: num: Range(0, $t31): Not(Index(select bit_vector::BitVector.bit_field($t0), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:188:21+47 + assume {:print "$at(5,6123,6170)"} true; + assert {:msg "assert_failed(5,6123,6170): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t31); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, k))))); + + // assert forall k: num: Range($t31, select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t14), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$at(5,6191,6273)"} true; + assert {:msg "assert_failed(5,6191,6273): base case of the loop invariant does not hold"} + (var $range_0 := $Range($t31, $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t14->$bit_field, k)))))); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'u64'($t4); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'bool'($t32); + + // $t33 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'bool'($t33); + + // $t34 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'u64'($t34); + + // $t35 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t35; + + // assume WellFormed($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'u64'($t35); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $temp_0'$1_bit_vector_BitVector'; + $t0 := $UpdateMutation($t0, $temp_0'$1_bit_vector_BitVector'); + + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // $t36 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t36; + + // assume WellFormed($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'vec'bool''($Dereference($t36)); + + // $t37 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + havoc $t37; + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume $IsValid'bool'($Dereference($t37)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$info(): enter loop, variable(s) self, i havocked and reassigned"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[i]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$track_local(32,6,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Eq($t29, select bit_vector::BitVector.length($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:187:21+29 + assume {:print "$at(5,6073,6102)"} true; + assume $IsEqual'u64'($t29, $Dereference($t0)->$length); + + // assume forall k: num: Range(0, $t4): Not(Index(select bit_vector::BitVector.bit_field($t0), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:188:21+47 + assume {:print "$at(5,6123,6170)"} true; + assume (var $range_0 := $Range(0, $t4); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, k))))); + + // assume forall k: num: Range($t4, select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t8), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$at(5,6191,6273)"} true; + assume (var $range_0 := $Range($t4, $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t8->$bit_field, k)))))); + + // $t32 := <($t4, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:191:19+1 + assume {:print "$at(5,6311,6312)"} true; + call $t32 := $Lt($t4, $t29); + + // if ($t32) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:185:13+455 + assume {:print "$at(5,6021,6476)"} true; + if ($t32) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:185:13+455 +L3: + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:193:52+4 + assume {:print "$at(5,6385,6389)"} true; +L4: + + // $t36 := borrow_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:193:47+19 + assume {:print "$at(5,6380,6399)"} true; + $t36 := $ChildMutation($t0, 1, $Dereference($t0)->$bit_field); + + // $t37 := vector::borrow_mut($t36, $t4) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:193:28+42 + call $t37,$t36 := $1_vector_borrow_mut'bool'($t36, $t4); + if ($abort_flag) { + assume {:print "$at(5,6361,6403)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[elem]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:193:21+4 + $temp_0'bool' := $Dereference($t37); + assume {:print "$track_local(32,6,3):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // $t33 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:194:25+5 + assume {:print "$at(5,6429,6434)"} true; + $t33 := false; + assume $IsValid'bool'($t33); + + // write_ref($t37, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:194:17+13 + $t37 := $UpdateMutation($t37, $t33); + + // write_back[Reference($t36)[]]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:194:17+13 + $t36 := $UpdateMutation($t36, UpdateVec($Dereference($t36), ReadVec($t37->p, LenVec($t36->p)), $Dereference($t37))); + + // write_back[Reference($t0).bit_field (vector)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:194:17+13 + $t0 := $UpdateMutation($t0, $Update'$1_bit_vector_BitVector'_bit_field($Dereference($t0), $Dereference($t36))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:194:17+13 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // $t34 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:195:25+1 + assume {:print "$at(5,6460,6461)"} true; + $t34 := 1; + assume $IsValid'u64'($t34); + + // $t35 := +($t4, $t34) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:195:23+1 + call $t35 := $AddU64($t4, $t34); + if ($abort_flag) { + assume {:print "$at(5,6458,6459)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[i]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:195:17+1 + assume {:print "$track_local(32,6,4):", $t35} $t35 == $t35; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:195:26+1 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; +L2: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:198:21+6 + assume {:print "$at(5,6515,6521)"} true; +L0: + + // trace_local[i#1]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:198:17+1 + assume {:print "$at(5,6511,6512)"} true; + assume {:print "$track_local(32,6,5):", $t1} $t1 == $t1; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:201:17+459 + assume {:print "$at(5,6561,7020)"} true; +L13: + + // assert Ge($t1, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:202:21+22 + assume {:print "$at(5,6588,6610)"} true; + assert {:msg "assert_failed(5,6588,6610): base case of the loop invariant does not hold"} + ($t1 >= $t1); + + // assert Eq(select bit_vector::BitVector.length($t0), select bit_vector::BitVector.length($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:203:21+42 + assume {:print "$at(5,6631,6673)"} true; + assert {:msg "assert_failed(5,6631,6673): base case of the loop invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, $t15->$length); + + // assert forall j: num: Range($t1, $t1): Eq(Index(select bit_vector::BitVector.bit_field($t16), j), Index(select bit_vector::BitVector.bit_field($t0), Sub(j, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:204:21+86 + assume {:print "$at(5,6694,6780)"} true; + assert {:msg "assert_failed(5,6694,6780): base case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t1); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t16->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, (j - $t1))))))); + + // assert forall j: num: Range(Sub($t1, $t1), select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t17), j), Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:205:21+92 + assume {:print "$at(5,6801,6893)"} true; + assert {:msg "assert_failed(5,6801,6893): base case of the loop invariant does not hold"} + (var $range_0 := $Range(($t1 - $t1), $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t17->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, j)))))); + + // assert forall k: num: Range(0, Sub($t1, $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t18), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$at(5,6914,7002)"} true; + assert {:msg "assert_failed(5,6914,7002): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, ($t1 - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t18->$bit_field, (k + $t1))))))); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t5); + + // $t38 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t38; + + // assume WellFormed($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t38); + + // $t39 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t39; + + // assume WellFormed($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'bool'($t39); + + // $t40 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t40; + + // assume And(WellFormed($t40), Eq(select bit_vector::BitVector.length($t40), Len(select bit_vector::BitVector.bit_field($t40)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume ($IsValid'$1_bit_vector_BitVector'($t40) && $IsEqual'u64'($t40->$length, LenVec($t40->$bit_field))); + + // $t41 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t41; + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'bool'($t41); + + // $t42 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t42; + + // assume WellFormed($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t42); + + // $t43 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t43; + + // assume WellFormed($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t43); + + // $t44 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t44; + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t44); + + // $t45 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $t45; + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume $IsValid'u64'($t45); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + havoc $temp_0'$1_bit_vector_BitVector'; + $t0 := $UpdateMutation($t0, $temp_0'$1_bit_vector_BitVector'); + + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$info(): enter loop, variable(s) self, i#1 havocked and reassigned"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[i#1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$track_local(32,6,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Ge($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:202:21+22 + assume {:print "$at(5,6588,6610)"} true; + assume ($t5 >= $t1); + + // assume Eq(select bit_vector::BitVector.length($t0), select bit_vector::BitVector.length($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:203:21+42 + assume {:print "$at(5,6631,6673)"} true; + assume $IsEqual'u64'($Dereference($t0)->$length, $t9->$length); + + // assume forall j: num: Range($t1, $t5): Eq(Index(select bit_vector::BitVector.bit_field($t10), j), Index(select bit_vector::BitVector.bit_field($t0), Sub(j, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:204:21+86 + assume {:print "$at(5,6694,6780)"} true; + assume (var $range_0 := $Range($t1, $t5); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t10->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, (j - $t1))))))); + + // assume forall j: num: Range(Sub($t5, $t1), select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t11), j), Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:205:21+92 + assume {:print "$at(5,6801,6893)"} true; + assume (var $range_0 := $Range(($t5 - $t1), $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t11->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, j)))))); + + // assume forall k: num: Range(0, Sub($t5, $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t12), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$at(5,6914,7002)"} true; + assume (var $range_0 := $Range(0, ($t5 - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t12->$bit_field, (k + $t1))))))); + + // $t38 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:208:21+11 + assume {:print "$at(5,7042,7053)"} true; + $t38 := $Dereference($t0)->$length; + + // $t39 := <($t5, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:208:19+1 + call $t39 := $Lt($t5, $t38); + + // if ($t39) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:200:13+686 + assume {:print "$at(5,6536,7222)"} true; + if ($t39) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:200:13+686 +L8: + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:34+4 + assume {:print "$at(5,7104,7108)"} true; +L9: + + // $t40 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:33+9 + assume {:print "$at(5,7103,7112)"} true; + $t40 := $Dereference($t0); + + // $t41 := bit_vector::is_index_set($t40, $t5) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:21+21 + call $t41 := $1_bit_vector_is_index_set($t40, $t5); + if ($abort_flag) { + assume {:print "$at(5,7091,7112)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // if ($t41) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:17+93 + if ($t41) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:48+4 +L11: + + // $t42 := -($t5, $t1) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:56+1 + assume {:print "$at(5,7126,7127)"} true; + call $t42 := $Sub($t5, $t1); + if ($abort_flag) { + assume {:print "$at(5,7126,7127)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // bit_vector::set($t0, $t42) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:44+21 + call $t0 := $1_bit_vector_set($t0, $t42); + if ($abort_flag) { + assume {:print "$at(5,7114,7135)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:210:44+21 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:211:28+4 + assume {:print "$at(5,7163,7167)"} true; +L10: + + // $t43 := -($t5, $t1) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:211:36+1 + assume {:print "$at(5,7171,7172)"} true; + call $t43 := $Sub($t5, $t1); + if ($abort_flag) { + assume {:print "$at(5,7171,7172)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // bit_vector::unset($t0, $t43) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:211:22+23 + call $t0 := $1_bit_vector_unset($t0, $t43); + if ($abort_flag) { + assume {:print "$at(5,7157,7180)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:212:21+1 + assume {:print "$at(5,7202,7203)"} true; +L12: + + // $t44 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:212:25+1 + assume {:print "$at(5,7206,7207)"} true; + $t44 := 1; + assume $IsValid'u64'($t44); + + // $t45 := +($t5, $t44) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:212:23+1 + call $t45 := $AddU64($t5, $t44); + if ($abort_flag) { + assume {:print "$at(5,7204,7205)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[i#1]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:212:17+1 + assume {:print "$track_local(32,6,5):", $t45} $t45 == $t45; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:212:26+1 + goto L19; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:216:17+4 + assume {:print "$at(5,7242,7246)"} true; +L7: + + // $t46 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:216:17+11 + assume {:print "$at(5,7242,7253)"} true; + $t46 := $Dereference($t0)->$length; + + // $t47 := -($t46, $t1) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:216:29+1 + call $t47 := $Sub($t46, $t1); + if ($abort_flag) { + assume {:print "$at(5,7254,7255)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[i#1]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:216:13+1 + assume {:print "$track_local(32,6,5):", $t47} $t47 == $t47; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:219:17+289 + assume {:print "$at(5,7302,7591)"} true; +L17: + + // assert forall j: num: Range(Sub(select bit_vector::BitVector.length($t0), $t1), $t47): Not(Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:220:21+66 + assume {:print "$at(5,7329,7395)"} true; + assert {:msg "assert_failed(5,7329,7395): base case of the loop invariant does not hold"} + (var $range_0 := $Range(($Dereference($t0)->$length - $t1), $t47); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, j))))); + + // assert forall k: num: Range(0, Sub(select bit_vector::BitVector.length($t0), $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t19), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:221:21+100 + assume {:print "$at(5,7416,7516)"} true; + assert {:msg "assert_failed(5,7416,7516): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, ($Dereference($t0)->$length - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t19->$bit_field, (k + $t1))))))); + + // assert Ge($t47, Sub(select bit_vector::BitVector.length($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$at(5,7537,7573)"} true; + assert {:msg "assert_failed(5,7537,7573): base case of the loop invariant does not hold"} + ($t47 >= ($Dereference($t0)->$length - $t1)); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume $IsValid'u64'($t5); + + // $t48 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $t48; + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume $IsValid'u64'($t48); + + // $t49 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $t49; + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume $IsValid'bool'($t49); + + // $t50 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $t50; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume $IsValid'u64'($t50); + + // $t51 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $t51; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume $IsValid'u64'($t51); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + havoc $temp_0'$1_bit_vector_BitVector'; + $t0 := $UpdateMutation($t0, $temp_0'$1_bit_vector_BitVector'); + + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$info(): enter loop, variable(s) self, i#1 havocked and reassigned"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[i#1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$track_local(32,6,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume forall j: num: Range(Sub(select bit_vector::BitVector.length($t0), $t1), $t5): Not(Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:220:21+66 + assume {:print "$at(5,7329,7395)"} true; + assume (var $range_0 := $Range(($Dereference($t0)->$length - $t1), $t5); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, j))))); + + // assume forall k: num: Range(0, Sub(select bit_vector::BitVector.length($t0), $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t13), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:221:21+100 + assume {:print "$at(5,7416,7516)"} true; + assume (var $range_0 := $Range(0, ($Dereference($t0)->$length - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t13->$bit_field, (k + $t1))))))); + + // assume Ge($t5, Sub(select bit_vector::BitVector.length($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$at(5,7537,7573)"} true; + assume ($t5 >= ($Dereference($t0)->$length - $t1)); + + // $t48 := get_field.length($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:224:21+11 + assume {:print "$at(5,7613,7624)"} true; + $t48 := $Dereference($t0)->$length; + + // $t49 := <($t5, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:224:19+1 + call $t49 := $Lt($t5, $t48); + + // if ($t49) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:218:13+437 + assume {:print "$at(5,7277,7714)"} true; + if ($t49) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:218:13+437 +L15: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:226:23+4 + assume {:print "$at(5,7664,7668)"} true; +L16: + + // bit_vector::unset($t0, $t5) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:226:17+14 + assume {:print "$at(5,7658,7672)"} true; + call $t0 := $1_bit_vector_unset($t0, $t5); + if ($abort_flag) { + assume {:print "$at(5,7658,7672)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // $t50 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:227:25+1 + assume {:print "$at(5,7698,7699)"} true; + $t50 := 1; + assume $IsValid'u64'($t50); + + // $t51 := +($t5, $t50) on_abort goto L22 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:227:23+1 + call $t51 := $AddU64($t5, $t50); + if ($abort_flag) { + assume {:print "$at(5,7696,7697)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(32,6):", $t30} $t30 == $t30; + goto L22; + } + + // trace_local[i#1]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:227:17+1 + assume {:print "$track_local(32,6,5):", $t51} $t51 == $t51; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:227:26+1 + goto L20; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; +L14: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 +L6: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,6,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // assert Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field)); + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + assume {:print "$at(5,5902,7724)"} true; + goto L21; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:182:9+1822 + // Loop invariant checking block for the loop started with header: L5 +L18: + + // assert Eq($t29, select bit_vector::BitVector.length($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:187:21+29 + assume {:print "$at(5,6073,6102)"} true; + assert {:msg "assert_failed(5,6073,6102): induction case of the loop invariant does not hold"} + $IsEqual'u64'($t29, $Dereference($t0)->$length); + + // assert forall k: num: Range(0, $t35): Not(Index(select bit_vector::BitVector.bit_field($t0), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:188:21+47 + assume {:print "$at(5,6123,6170)"} true; + assert {:msg "assert_failed(5,6123,6170): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t35); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, k))))); + + // assert forall k: num: Range($t35, select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t20), k)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume {:print "$at(5,6191,6273)"} true; + assert {:msg "assert_failed(5,6191,6273): induction case of the loop invariant does not hold"} + (var $range_0 := $Range($t35, $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t20->$bit_field, k)))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + assume false; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:189:21+82 + // Loop invariant checking block for the loop started with header: L13 +L19: + + // assert Ge($t45, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:202:21+22 + assume {:print "$at(5,6588,6610)"} true; + assert {:msg "assert_failed(5,6588,6610): induction case of the loop invariant does not hold"} + ($t45 >= $t1); + + // assert Eq(select bit_vector::BitVector.length($t0), select bit_vector::BitVector.length($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:203:21+42 + assume {:print "$at(5,6631,6673)"} true; + assert {:msg "assert_failed(5,6631,6673): induction case of the loop invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, $t21->$length); + + // assert forall j: num: Range($t1, $t45): Eq(Index(select bit_vector::BitVector.bit_field($t22), j), Index(select bit_vector::BitVector.bit_field($t0), Sub(j, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:204:21+86 + assume {:print "$at(5,6694,6780)"} true; + assert {:msg "assert_failed(5,6694,6780): induction case of the loop invariant does not hold"} + (var $range_0 := $Range($t1, $t45); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t22->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, (j - $t1))))))); + + // assert forall j: num: Range(Sub($t45, $t1), select bit_vector::BitVector.length($t0)): Eq(Index(select bit_vector::BitVector.bit_field($t23), j), Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:205:21+92 + assume {:print "$at(5,6801,6893)"} true; + assert {:msg "assert_failed(5,6801,6893): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(($t45 - $t1), $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + ($IsEqual'bool'(ReadVec($t23->$bit_field, j), ReadVec($Dereference($t0)->$bit_field, j)))))); + + // assert forall k: num: Range(0, Sub($t45, $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t24), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume {:print "$at(5,6914,7002)"} true; + assert {:msg "assert_failed(5,6914,7002): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, ($t45 - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t24->$bit_field, (k + $t1))))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:206:21+88 + // Loop invariant checking block for the loop started with header: L17 +L20: + + // assert forall j: num: Range(Sub(select bit_vector::BitVector.length($t0), $t1), $t51): Not(Index(select bit_vector::BitVector.bit_field($t0), j)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:220:21+66 + assume {:print "$at(5,7329,7395)"} true; + assert {:msg "assert_failed(5,7329,7395): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(($Dereference($t0)->$length - $t1), $t51); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var j := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, j))))); + + // assert forall k: num: Range(0, Sub(select bit_vector::BitVector.length($t0), $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), k), Index(select bit_vector::BitVector.bit_field($t25), Add(k, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:221:21+100 + assume {:print "$at(5,7416,7516)"} true; + assert {:msg "assert_failed(5,7416,7516): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, ($Dereference($t0)->$length - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, k), ReadVec($t25->$bit_field, (k + $t1))))))); + + // assert Ge($t51, Sub(select bit_vector::BitVector.length($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume {:print "$at(5,7537,7573)"} true; + assert {:msg "assert_failed(5,7537,7573): induction case of the loop invariant does not hold"} + ($t51 >= ($Dereference($t0)->$length - $t1)); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:222:21+36 + assume false; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:230:5+1 + assume {:print "$at(5,7729,7730)"} true; +L21: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:232:9+16 + assume {:print "$at(5,7783,7799)"} true; + assert {:msg "assert_failed(5,7783,7799): function does not abort under this condition"} + !false; + + // assert Implies(Ge($t1, select bit_vector::BitVector.length($t0)), forall k: num: Range(0, select bit_vector::BitVector.length($t0)): Not(Index(select bit_vector::BitVector.bit_field($t0), k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:233:9+83 + assume {:print "$at(5,7808,7891)"} true; + assert {:msg "assert_failed(5,7808,7891): post-condition does not hold"} + (($t1 >= $Dereference($t0)->$length) ==> (var $range_0 := $Range(0, $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, k)))))); + + // assert Implies(Lt($t1, select bit_vector::BitVector.length($t0)), forall i: num: Range(Sub(select bit_vector::BitVector.length($t0), $t1), select bit_vector::BitVector.length($t0)): Not(Index(select bit_vector::BitVector.bit_field($t0), i))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:234:9+113 + assume {:print "$at(5,7900,8013)"} true; + assert {:msg "assert_failed(5,7900,8013): post-condition does not hold"} + (($t1 < $Dereference($t0)->$length) ==> (var $range_0 := $Range(($Dereference($t0)->$length - $t1), $Dereference($t0)->$length); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + (!ReadVec($Dereference($t0)->$bit_field, i)))))); + + // assert Implies(Lt($t1, select bit_vector::BitVector.length($t0)), forall i: num: Range(0, Sub(select bit_vector::BitVector.length($t0), $t1)): Eq(Index(select bit_vector::BitVector.bit_field($t0), i), Index(select bit_vector::BitVector.bit_field($t7), Add(i, $t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:236:9+137 + assume {:print "$at(5,8022,8159)"} true; + assert {:msg "assert_failed(5,8022,8159): post-condition does not hold"} + (($t1 < $Dereference($t0)->$length) ==> (var $range_0 := $Range(0, ($Dereference($t0)->$length - $t1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'bool'(ReadVec($Dereference($t0)->$bit_field, i), ReadVec($t7->$bit_field, (i + $t1)))))))); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:236:9+137 + $ret0 := $t0; + return; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:230:5+1 + assume {:print "$at(5,7729,7730)"} true; +L22: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:231:5+430 + assume {:print "$at(5,7735,8165)"} true; + assert {:msg "assert_failed(5,7735,8165): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:231:5+430 + $abort_code := $t30; + $abort_flag := true; + return; + +} + +// fun bit_vector::unset [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+220 +procedure {:inline 1} $1_bit_vector_unset(_$t0: $Mutation ($1_bit_vector_BitVector), _$t1: int) returns ($ret0: $Mutation ($1_bit_vector_BitVector)) +{ + // declare local variables + var $t2: $Mutation (bool); + var $t3: Vec (bool); + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $Mutation (Vec (bool)); + var $t9: $Mutation (bool); + var $t10: bool; + var $t0: $Mutation ($1_bit_vector_BitVector); + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + assume {:print "$at(5,2057,2058)"} true; + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + assume {:print "$track_local(32,7,1):", $t1} $t1 == $t1; + + // $t3 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:44+15 + assume {:print "$at(5,2157,2172)"} true; + $t3 := $Dereference($t0)->$bit_field; + + // $t4 := vector::length($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:29+31 + call $t4 := $1_vector_length'bool'($t3); + if ($abort_flag) { + assume {:print "$at(5,2142,2173)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(32,7):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:27+1 + call $t6 := $Lt($t1, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + + // $t7 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:62+6 + $t7 := 131072; + assume $IsValid'u64'($t7); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + assume {:print "$track_abort(32,7):", $t7} $t7 == $t7; + + // $t5 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + $t5 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:41+4 + assume {:print "$at(5,2224,2228)"} true; +L2: + + // $t8 := borrow_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:36+19 + assume {:print "$at(5,2219,2238)"} true; + $t8 := $ChildMutation($t0, 1, $Dereference($t0)->$bit_field); + + // $t9 := vector::borrow_mut($t8, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:17+50 + call $t9,$t8 := $1_vector_borrow_mut'bool'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(5,2200,2250)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(32,7):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[x]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:13+1 + $temp_0'bool' := $Dereference($t9); + assume {:print "$track_local(32,7,2):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // $t10 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:14+5 + assume {:print "$at(5,2265,2270)"} true; + $t10 := false; + assume $IsValid'bool'($t10); + + // write_ref($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t9 := $UpdateMutation($t9, $t10); + + // write_back[Reference($t8)[]]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t8 := $UpdateMutation($t8, UpdateVec($Dereference($t8), ReadVec($t9->p, LenVec($t8->p)), $Dereference($t9))); + + // write_back[Reference($t0).bit_field (vector)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t0 := $UpdateMutation($t0, $Update'$1_bit_vector_BitVector'_bit_field($Dereference($t0), $Dereference($t8))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:19+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:19+1 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 + assume {:print "$at(5,2276,2277)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 + assume {:print "$at(5,2276,2277)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 + assume {:print "$at(5,2276,2277)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun bit_vector::unset [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+220 +procedure {:timeLimit 80} $1_bit_vector_unset$verify(_$t0: $Mutation ($1_bit_vector_BitVector), _$t1: int) returns ($ret0: $Mutation ($1_bit_vector_BitVector)) +{ + // declare local variables + var $t2: $Mutation (bool); + var $t3: $1_bit_vector_BitVector; + var $t4: Vec (bool); + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: $Mutation (Vec (bool)); + var $t10: $Mutation (bool); + var $t11: bool; + var $t0: $Mutation ($1_bit_vector_BitVector); + var $t1: int; + var $temp_0'$1_bit_vector_BitVector': $1_bit_vector_BitVector; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + assume {:print "$at(5,2057,2058)"} true; + assume ($IsValid'$1_bit_vector_BitVector'($Dereference($t0)) && $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + assume $IsValid'u64'($t1); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + $t3 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[bit_index]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:73:5+1 + assume {:print "$track_local(32,7,1):", $t1} $t1 == $t1; + + // $t4 := get_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:44+15 + assume {:print "$at(5,2157,2172)"} true; + $t4 := $Dereference($t0)->$bit_field; + + // $t5 := vector::length($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:29+31 + call $t5 := $1_vector_length'bool'($t4); + if ($abort_flag) { + assume {:print "$at(5,2142,2173)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,7):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := <($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:27+1 + call $t7 := $Lt($t1, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 +L0: + + // assert Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field)); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + + // $t8 := 131072 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:62+6 + $t8 := 131072; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + assume {:print "$at(5,2122,2182)"} true; + assume {:print "$track_abort(32,7):", $t8} $t8 == $t8; + + // $t6 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + $t6 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:74:9+60 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:41+4 + assume {:print "$at(5,2224,2228)"} true; +L2: + + // $t9 := borrow_field.bit_field($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:36+19 + assume {:print "$at(5,2219,2238)"} true; + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$bit_field); + + // $t10 := vector::borrow_mut($t9, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:17+50 + call $t10,$t9 := $1_vector_borrow_mut'bool'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(5,2200,2250)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(32,7):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[x]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:75:13+1 + $temp_0'bool' := $Dereference($t10); + assume {:print "$track_local(32,7,2):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // $t11 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:14+5 + assume {:print "$at(5,2265,2270)"} true; + $t11 := false; + assume $IsValid'bool'($t11); + + // write_ref($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t10 := $UpdateMutation($t10, $t11); + + // write_back[Reference($t9)[]]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t9 := $UpdateMutation($t9, UpdateVec($Dereference($t9), ReadVec($t10->p, LenVec($t9->p)), $Dereference($t10))); + + // write_back[Reference($t0).bit_field (vector)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $t0 := $UpdateMutation($t0, $Update'$1_bit_vector_BitVector'_bit_field($Dereference($t0), $Dereference($t9))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:9+10 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:76:19+1 + $temp_0'$1_bit_vector_BitVector' := $Dereference($t0); + assume {:print "$track_local(32,7,0):", $temp_0'$1_bit_vector_BitVector'} $temp_0'$1_bit_vector_BitVector' == $temp_0'$1_bit_vector_BitVector'; + + // assert Eq(select bit_vector::BitVector.length($t0), Len(select bit_vector::BitVector.bit_field($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:14:9+35 + assume {:print "$at(5,343,378)"} true; + assert {:msg "assert_failed(5,343,378): data invariant does not hold"} + $IsEqual'u64'($Dereference($t0)->$length, LenVec($Dereference($t0)->$bit_field)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 + assume {:print "$at(5,2276,2277)"} true; +L3: + + // assert Not(Ge($t1, bit_vector::$length[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:85:9+48 + assume {:print "$at(5,2465,2513)"} true; + assert {:msg "assert_failed(5,2465,2513): function does not abort under this condition"} + !($t1 >= $1_bit_vector_$length($t3)); + + // assert Not(Index(select bit_vector::BitVector.bit_field($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:80:9+35 + assume {:print "$at(5,2334,2369)"} true; + assert {:msg "assert_failed(5,2334,2369): post-condition does not hold"} + !ReadVec($Dereference($t0)->$bit_field, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:80:9+35 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:77:5+1 + assume {:print "$at(5,2276,2277)"} true; +L4: + + // assert Ge($t1, bit_vector::$length[]($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:78:5+93 + assume {:print "$at(5,2282,2375)"} true; + assert {:msg "assert_failed(5,2282,2375): abort not covered by any of the `aborts_if` clauses"} + ($t1 >= $1_bit_vector_$length($t3)); + + // assert And(Ge($t1, bit_vector::$length[]($t3)), Eq(131072, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:78:5+93 + assert {:msg "assert_failed(5,2282,2375): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($t1 >= $1_bit_vector_$length($t3)) && $IsEqual'num'(131072, $t6)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/bit_vector.move:78:5+93 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+92 +function {:inline} $1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory: $Memory $1_chain_status_GenesisEndMarker): bool { + !$ResourceExists($1_chain_status_GenesisEndMarker_$memory, 1) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+93 +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:12:5+34 +datatype $1_chain_status_GenesisEndMarker { + $1_chain_status_GenesisEndMarker($dummy_field: bool) +} +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'(s->$dummy_field) +} +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; + +// fun chain_status::assert_genesis [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45:5+104 +procedure {:timeLimit 80} $1_chain_status_assert_genesis$verify() returns () +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $1_chain_status_GenesisEndMarker_$memory#59: $Memory $1_chain_status_GenesisEndMarker; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45:5+1 + assume {:print "$at(29,1780,1781)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45:5+104 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45:5+104 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @59 := save_mem(chain_status::GenesisEndMarker) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:45:5+1 + $1_chain_status_GenesisEndMarker_$memory#59 := $1_chain_status_GenesisEndMarker_$memory; + + // $t0 := chain_status::is_genesis() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:17+12 + assume {:print "$at(29,1826,1838)"} true; + call $t0 := $1_chain_status_is_genesis(); + if ($abort_flag) { + assume {:print "$at(29,1826,1838)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(33,0):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 + assume {:print "$at(29,1818,1877)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:52+14 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:52+14 + assume {:print "$at(29,1861,1875)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:31+36 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(29,1840,1876)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(33,0):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 + assume {:print "$at(29,1818,1877)"} true; + assume {:print "$track_abort(33,0):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:9+59 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:46:68+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:47:5+1 + assume {:print "$at(29,1883,1884)"} true; +L3: + + // assert Not(Not(chain_status::$is_genesis[@59]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:51:9+24 + assume {:print "$at(30,2035,2059)"} true; + assert {:msg "assert_failed(30,2035,2059): function does not abort under this condition"} + !!$1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory#59); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:51:9+24 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:47:5+1 + assume {:print "$at(29,1883,1884)"} true; +L4: + + // assert Not(chain_status::$is_genesis[@59]()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:50:5+60 + assume {:print "$at(30,2005,2065)"} true; + assert {:msg "assert_failed(30,2005,2065): abort not covered by any of the `aborts_if` clauses"} + !$1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory#59); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:50:5+60 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun chain_status::assert_operating [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40:5+108 +procedure {:timeLimit 80} $1_chain_status_assert_operating$verify() returns () +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $1_chain_status_GenesisEndMarker_$memory#60: $Memory $1_chain_status_GenesisEndMarker; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40:5+1 + assume {:print "$at(29,1617,1618)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40:5+108 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40:5+108 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @60 := save_mem(chain_status::GenesisEndMarker) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:40:5+1 + $1_chain_status_GenesisEndMarker_$memory#60 := $1_chain_status_GenesisEndMarker_$memory; + + // $t0 := chain_status::is_operating() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:17+14 + assume {:print "$at(29,1665,1679)"} true; + call $t0 := $1_chain_status_is_operating(); + if ($abort_flag) { + assume {:print "$at(29,1665,1679)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(33,1):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 + assume {:print "$at(29,1657,1718)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:54+14 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:54+14 + assume {:print "$at(29,1702,1716)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:33+36 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(29,1681,1717)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(33,1):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 + assume {:print "$at(29,1657,1718)"} true; + assume {:print "$track_abort(33,1):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:9+61 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:41:70+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:42:5+1 + assume {:print "$at(29,1724,1725)"} true; +L3: + + // assert Not(Not(chain_status::$is_operating[@60]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:47:9+26 + assume {:print "$at(30,1967,1993)"} true; + assert {:msg "assert_failed(30,1967,1993): function does not abort under this condition"} + !!$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory#60); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:47:9+26 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:42:5+1 + assume {:print "$at(29,1724,1725)"} true; +L4: + + // assert Not(chain_status::$is_operating[@60]()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:46:5+64 + assume {:print "$at(30,1935,1999)"} true; + assert {:msg "assert_failed(30,1935,1999): abort not covered by any of the `aborts_if` clauses"} + !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory#60); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:46:5+64 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun chain_status::is_genesis [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+92 +procedure {:inline 1} $1_chain_status_is_genesis() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:35+19 + assume {:print "$at(29,1198,1217)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:10+6 + $t1 := $ResourceExists($1_chain_status_GenesisEndMarker_$memory, $t0); + + // $t2 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:9+1 + call $t2 := $Not($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:9+46 + assume {:print "$track_return(33,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:29:5+1 + assume {:print "$at(29,1223,1224)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:29:5+1 + assume {:print "$at(29,1223,1224)"} true; + $ret0 := $t2; + return; + +} + +// fun chain_status::is_genesis [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+92 +procedure {:timeLimit 80} $1_chain_status_is_genesis$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+1 + assume {:print "$at(29,1132,1133)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+92 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:27:5+92 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:35+19 + assume {:print "$at(29,1198,1217)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:10+6 + $t1 := $ResourceExists($1_chain_status_GenesisEndMarker_$memory, $t0); + + // $t2 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:9+1 + call $t2 := $Not($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:28:9+46 + assume {:print "$track_return(33,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:29:5+1 + assume {:print "$at(29,1223,1224)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:29:5+1 + assume {:print "$at(29,1223,1224)"} true; + assert {:msg "assert_failed(29,1223,1224): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:29:5+1 + $ret0 := $t2; + return; + +} + +// fun chain_status::is_operating [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+93 +procedure {:inline 1} $1_chain_status_is_operating() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:34+19 + assume {:print "$at(29,1520,1539)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:9+6 + $t1 := $ResourceExists($1_chain_status_GenesisEndMarker_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:9+45 + assume {:print "$track_return(33,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:37:5+1 + assume {:print "$at(29,1545,1546)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:37:5+1 + assume {:print "$at(29,1545,1546)"} true; + $ret0 := $t1; + return; + +} + +// fun chain_status::is_operating [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+93 +procedure {:timeLimit 80} $1_chain_status_is_operating$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+1 + assume {:print "$at(29,1453,1454)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+93 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:35:5+93 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:34+19 + assume {:print "$at(29,1520,1539)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:9+6 + $t1 := $ResourceExists($1_chain_status_GenesisEndMarker_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:36:9+45 + assume {:print "$track_return(33,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:37:5+1 + assume {:print "$at(29,1545,1546)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:37:5+1 + assume {:print "$at(29,1545,1546)"} true; + assert {:msg "assert_failed(29,1545,1546): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:37:5+1 + $ret0 := $t1; + return; + +} + +// fun chain_status::set_genesis_end [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20:5+202 +procedure {:timeLimit 80} $1_chain_status_set_genesis_end$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: $1_chain_status_GenesisEndMarker; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_chain_status_GenesisEndMarker_$memory#61: $Memory $1_chain_status_GenesisEndMarker; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20:5+1 + assume {:print "$at(29,842,843)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20:5+202 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:34:9+50 + assume {:print "$at(30,1535,1585)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // @61 := save_mem(chain_status::GenesisEndMarker) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20:5+1 + assume {:print "$at(29,842,843)"} true; + $1_chain_status_GenesisEndMarker_$memory#61 := $1_chain_status_GenesisEndMarker_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:20:5+1 + assume {:print "$track_local(33,4,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + assume {:print "$at(29,916,979)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + assume {:print "$at(29,916,979)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + assume {:print "$at(29,916,979)"} true; + assume {:print "$track_abort(33,4):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:21:9+63 + assume {:print "$at(29,916,979)"} true; + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:22:37+19 + assume {:print "$at(29,1017,1036)"} true; + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := pack chain_status::GenesisEndMarker($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:22:37+19 + $t5 := $1_chain_status_GenesisEndMarker($t4); + + // move_to($t5, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:22:9+7 + if ($ResourceExists($1_chain_status_GenesisEndMarker_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_chain_status_GenesisEndMarker_$memory := $ResourceUpdate($1_chain_status_GenesisEndMarker_$memory, $t0->$addr, $t5); + } + if ($abort_flag) { + assume {:print "$at(29,989,996)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(33,4):", $t3} $t3 == $t3; + goto L2; + } + + // assert Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume {:print "$at(30,1320,1362)"} true; + assert {:msg "assert_failed(30,1320,1362): global memory invariant does not hold"} + $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:23:5+1 + assume {:print "$at(29,1043,1044)"} true; +L1: + + // assert Not(Neq
($t1, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:35:9+38 + assume {:print "$at(30,1594,1632)"} true; + assert {:msg "assert_failed(30,1594,1632): function does not abort under this condition"} + !!$IsEqual'address'($t1, 1); + + // assert Not(exists[@61](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:37:9+56 + assume {:print "$at(30,1672,1728)"} true; + assert {:msg "assert_failed(30,1672,1728): function does not abort under this condition"} + !$ResourceExists($1_chain_status_GenesisEndMarker_$memory#61, 1); + + // assert Eq(global(0x1), pack chain_status::GenesisEndMarker(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:39:9+77 + assume {:print "$at(30,1768,1845)"} true; + assert {:msg "assert_failed(30,1768,1845): post-condition does not hold"} + $IsEqual'$1_chain_status_GenesisEndMarker'($ResourceValue($1_chain_status_GenesisEndMarker_$memory, 1), $1_chain_status_GenesisEndMarker(false)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:39:9+77 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.move:23:5+1 + assume {:print "$at(29,1043,1044)"} true; +L2: + + // assert Or(Neq
($t1, 0x1), exists[@61](0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:30:5+477 + assume {:print "$at(30,1374,1851)"} true; + assert {:msg "assert_failed(30,1374,1851): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($t1, 1) || $ResourceExists($1_chain_status_GenesisEndMarker_$memory#61, 1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:30:5+477 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:57:10+114 +function {:inline} $1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)->$microseconds +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:61:10+98 +function {:inline} $1_timestamp_spec_now_milliseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory) div 1000) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:65: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) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75:5+156 +function {:inline} $1_timestamp_$now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory: $Memory $1_timestamp_CurrentTimeMicroseconds): int { + $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)->$microseconds +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87: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) +} + +// struct timestamp::CurrentTimeMicroseconds at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:15:5+73 +datatype $1_timestamp_CurrentTimeMicroseconds { + $1_timestamp_CurrentTimeMicroseconds($microseconds: int) +} +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'(s->$microseconds) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75:5+156 +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:48+19 + assume {:print "$at(110,3187,3206)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76: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(110,3148,3161)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(34,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.microseconds($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:9+72 + $t3 := $t1->$microseconds; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:9+72 + assume {:print "$track_return(34,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun timestamp::now_microseconds [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75:5+156 +procedure {:timeLimit 80} $1_timestamp_now_microseconds$verify() 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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75:5+1 + assume {:print "$at(110,3070,3071)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:75:5+156 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t0 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:48+19 + assume {:print "$at(110,3187,3206)"} true; + $t0 := 1; + assume $IsValid'address'($t0); + + // $t1 := get_global($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76: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(110,3148,3161)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(34,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field.microseconds($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:9+72 + $t3 := $t1->$microseconds; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:76:9+72 + assume {:print "$track_return(34,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:77:5+1 + assume {:print "$at(110,3225,3226)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun timestamp::now_milliseconds [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:81:5+128 +procedure {:inline 1} $1_timestamp_now_milliseconds() 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:9+18 + assume {:print "$at(110,3369,3387)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(110,3369,3387)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:30+23 + $t2 := 1000; + assume $IsValid'u64'($t2); + + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(110,3388,3389)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,1):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:9+44 + assume {:print "$track_return(34,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun timestamp::now_milliseconds [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:81:5+128 +procedure {:timeLimit 80} $1_timestamp_now_milliseconds$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:81:5+1 + assume {:print "$at(110,3291,3292)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:81: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:81:5+128 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:9+18 + assume {:print "$at(110,3369,3387)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(110,3369,3387)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:30+23 + $t2 := 1000; + assume $IsValid'u64'($t2); + + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(110,3388,3389)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,1):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:82:9+44 + assume {:print "$track_return(34,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:83:5+1 + assume {:print "$at(110,3418,3419)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun timestamp::now_seconds [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:9+18 + assume {:print "$at(110,3552,3570)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(110,3552,3570)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1000000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:30+23 + $t2 := 1000000; + assume $IsValid'u64'($t2); + + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(110,3571,3572)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,2):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:9+44 + assume {:print "$track_return(34,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun timestamp::now_seconds [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87:5+123 +procedure {:timeLimit 80} $1_timestamp_now_seconds$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87:5+1 + assume {:print "$at(110,3479,3480)"} true; + 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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:87:5+123 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t0 := timestamp::now_microseconds() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:9+18 + assume {:print "$at(110,3552,3570)"} true; + call $t0 := $1_timestamp_now_microseconds(); + if ($abort_flag) { + assume {:print "$at(110,3552,3570)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1000000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:30+23 + $t2 := 1000000; + assume $IsValid'u64'($t2); + + // $t3 := /($t0, $t2) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:28+1 + call $t3 := $Div($t0, $t2); + if ($abort_flag) { + assume {:print "$at(110,3571,3572)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(34,2):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:88:9+44 + assume {:print "$track_return(34,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:89:5+1 + assume {:print "$at(110,3601,3602)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun timestamp::set_time_has_started [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31:5+258 +procedure {:timeLimit 80} $1_timestamp_set_time_has_started$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: $1_timestamp_CurrentTimeMicroseconds; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31:5+1 + assume {:print "$at(110,1151,1152)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31:5+258 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:31:5+1 + assume {:print "$track_local(34,3,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + assume {:print "$at(110,1230,1293)"} true; + + // assume Identical($t1, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + assume ($t1 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + assume {:print "$at(110,1230,1293)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + assume {:print "$at(110,1230,1293)"} true; + assume {:print "$track_abort(34,3):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:32:9+63 + assume {:print "$at(110,1230,1293)"} true; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:33:61+1 + assume {:print "$at(110,1355,1356)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := pack timestamp::CurrentTimeMicroseconds($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:33:21+43 + $t4 := $1_timestamp_CurrentTimeMicroseconds($t3); + + // move_to($t4, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:34:9+7 + assume {:print "$at(110,1368,1375)"} true; + if ($ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_timestamp_CurrentTimeMicroseconds_$memory := $ResourceUpdate($1_timestamp_CurrentTimeMicroseconds_$memory, $t0->$addr, $t4); + } + if ($abort_flag) { + assume {:print "$at(110,1368,1375)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(34,3):", $t2} $t2 == $t2; + goto L2; + } + + // assert Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume {:print "$at(111,1846,1956)"} true; + assert {:msg "assert_failed(111,1846,1956): global memory invariant does not hold"} + ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:35:5+1 + assume {:print "$at(110,1408,1409)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:35:5+1 + assume {:print "$at(110,1408,1409)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:35:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:35:5+1 + assume {:print "$at(110,1408,1409)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun timestamp::update_global_time [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1260 +procedure {:inline 1} $1_timestamp_update_global_time(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $Mutation ($1_timestamp_CurrentTimeMicroseconds); + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $Mutation ($1_timestamp_CurrentTimeMicroseconds); + var $t13: Vec (int); + var $t14: $1_string_String; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation (int); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_timestamp_CurrentTimeMicroseconds': $1_timestamp_CurrentTimeMicroseconds; + 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 + // assume chain_status::$is_operating() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:41:9+38 + assume {:print "$at(111,2048,2086)"} true; + assume $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$at(110,1530,1531)"} true; + assume {:print "$track_local(34,4,0):", $t0} $t0 == $t0; + + // trace_local[_proposer]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$track_local(34,4,1):", $t1} $t1 == $t1; + + // trace_local[timestamp]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$track_local(34,4,2):", $t2} $t2 == $t2; + + // $t7 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:41+42 + assume {:print "$at(110,1719,1761)"} true; + $t7 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t7); + + // $t8 := string::utf8($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:23+61 + call $t8 := $1_string_utf8($t7); + if ($abort_flag) { + assume {:print "$at(110,1701,1762)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t8) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:9+76 + call $1_debug_print'$1_string_String'($t8); + if ($abort_flag) { + assume {:print "$at(110,1687,1763)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t2) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:44:9+24 + assume {:print "$at(110,1773,1797)"} true; + call $1_debug_print'u64'($t2); + if ($abort_flag) { + assume {:print "$at(110,1773,1797)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + + // assume Identical($t10, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume ($t10 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t10) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + if ($t10) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + + // $t11 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:71+19 + assume {:print "$at(110,2035,2054)"} true; + $t11 := 1; + assume $IsValid'address'($t11); + + // $t12 := borrow_global($t11) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:28+17 + if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(110,1992,2009)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[global_timer]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:13+12 + $temp_0'$1_timestamp_CurrentTimeMicroseconds' := $Dereference($t12); + assume {:print "$track_local(34,4,6):", $temp_0'$1_timestamp_CurrentTimeMicroseconds'} $temp_0'$1_timestamp_CurrentTimeMicroseconds' == $temp_0'$1_timestamp_CurrentTimeMicroseconds'; + + // $t13 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 67, 117, 114, 114, 101, 110, 116, 32, 103, 108, 111, 98, 97, 108, 32, 116, 105, 109, 101, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:41+56 + assume {:print "$at(110,2428,2484)"} true; + $t13 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(67, 117, 114, 114)), MakeVec4(101, 110, 116, 32)), MakeVec4(103, 108, 111, 98)), MakeVec4(97, 108, 32, 116)), MakeVec4(105, 109, 101, 58)), MakeVec1(32)); + assume $IsValid'vec'u8''($t13); + + // $t14 := string::utf8($t13) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:23+75 + call $t14 := $1_string_utf8($t13); + if ($abort_flag) { + assume {:print "$at(110,2410,2485)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:9+90 + call $1_debug_print'$1_string_String'($t14); + if ($abort_flag) { + assume {:print "$at(110,2396,2486)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := get_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:58:22+26 + assume {:print "$at(110,2509,2535)"} true; + $t15 := $Dereference($t12)->$microseconds; + + // debug::print($t15) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:58:9+40 + call $1_debug_print'u64'($t15); + if ($abort_flag) { + assume {:print "$at(110,2496,2536)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // $t16 := get_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:17+25 + assume {:print "$at(110,2554,2579)"} true; + $t16 := $Dereference($t12)->$microseconds; + + // $t17 := <($t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:43+1 + call $t17 := $Lt($t16, $t2); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 +L0: + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + + // $t18 := 1014 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:80+18 + $t18 := 1014; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:56+43 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(110,2593,2636)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + assume {:print "$track_abort(34,4):", $t19} $t19 == $t19; + + // $t9 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + $t9 := $t19; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:37+9 + assume {:print "$at(110,2675,2684)"} true; +L2: + + // $t20 := borrow_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+25 + assume {:print "$at(110,2647,2672)"} true; + $t20 := $ChildMutation($t12, 0, $Dereference($t12)->$microseconds); + + // write_ref($t20, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $t20 := $UpdateMutation($t20, $t2); + + // write_back[Reference($t12).microseconds (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $t12 := $UpdateMutation($t12, $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds($Dereference($t12), $Dereference($t20))); + + // write_back[timestamp::CurrentTimeMicroseconds@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $1_timestamp_CurrentTimeMicroseconds_$memory := $ResourceUpdate($1_timestamp_CurrentTimeMicroseconds_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // $t21 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:41+41 + assume {:print "$at(110,2740,2781)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:23+60 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(110,2722,2782)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t22) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:9+75 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(110,2708,2783)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 + assume {:print "$at(110,2789,2790)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 + assume {:print "$at(110,2789,2790)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 + assume {:print "$at(110,2789,2790)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun timestamp::update_global_time [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1260 +procedure {:timeLimit 80} $1_timestamp_update_global_time$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $Mutation ($1_timestamp_CurrentTimeMicroseconds); + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $Mutation ($1_timestamp_CurrentTimeMicroseconds); + var $t13: Vec (int); + var $t14: $1_string_String; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation (int); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_timestamp_CurrentTimeMicroseconds': $1_timestamp_CurrentTimeMicroseconds; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#62: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$at(110,1530,1531)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38: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 Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1260 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1260 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume chain_status::$is_operating() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:41:9+38 + assume {:print "$at(111,2048,2086)"} true; + assume $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory); + + // @62 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:41:9+38 + $1_timestamp_CurrentTimeMicroseconds_$memory#62 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$at(110,1530,1531)"} true; + assume {:print "$track_local(34,4,0):", $t0} $t0 == $t0; + + // trace_local[_proposer]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$track_local(34,4,1):", $t1} $t1 == $t1; + + // trace_local[timestamp]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:38:5+1 + assume {:print "$track_local(34,4,2):", $t2} $t2 == $t2; + + // $t7 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:41+42 + assume {:print "$at(110,1719,1761)"} true; + $t7 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t7); + + // $t8 := string::utf8($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:23+61 + call $t8 := $1_string_utf8($t7); + if ($abort_flag) { + assume {:print "$at(110,1701,1762)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t8) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:43:9+76 + call $1_debug_print'$1_string_String'($t8); + if ($abort_flag) { + assume {:print "$at(110,1687,1763)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t2) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:44:9+24 + assume {:print "$at(110,1773,1797)"} true; + call $1_debug_print'u64'($t2); + if ($abort_flag) { + assume {:print "$at(110,1773,1797)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + + // assume Identical($t10, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume ($t10 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t10) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + if ($t10) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:48:9+52 + assume {:print "$at(110,1910,1962)"} true; + + // $t11 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:71+19 + assume {:print "$at(110,2035,2054)"} true; + $t11 := 1; + assume $IsValid'address'($t11); + + // $t12 := borrow_global($t11) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:28+17 + if (!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(110,1992,2009)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[global_timer]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:50:13+12 + $temp_0'$1_timestamp_CurrentTimeMicroseconds' := $Dereference($t12); + assume {:print "$track_local(34,4,6):", $temp_0'$1_timestamp_CurrentTimeMicroseconds'} $temp_0'$1_timestamp_CurrentTimeMicroseconds' == $temp_0'$1_timestamp_CurrentTimeMicroseconds'; + + // $t13 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 67, 117, 114, 114, 101, 110, 116, 32, 103, 108, 111, 98, 97, 108, 32, 116, 105, 109, 101, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:41+56 + assume {:print "$at(110,2428,2484)"} true; + $t13 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(67, 117, 114, 114)), MakeVec4(101, 110, 116, 32)), MakeVec4(103, 108, 111, 98)), MakeVec4(97, 108, 32, 116)), MakeVec4(105, 109, 101, 58)), MakeVec1(32)); + assume $IsValid'vec'u8''($t13); + + // $t14 := string::utf8($t13) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:23+75 + call $t14 := $1_string_utf8($t13); + if ($abort_flag) { + assume {:print "$at(110,2410,2485)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:57:9+90 + call $1_debug_print'$1_string_String'($t14); + if ($abort_flag) { + assume {:print "$at(110,2396,2486)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := get_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:58:22+26 + assume {:print "$at(110,2509,2535)"} true; + $t15 := $Dereference($t12)->$microseconds; + + // debug::print($t15) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:58:9+40 + call $1_debug_print'u64'($t15); + if ($abort_flag) { + assume {:print "$at(110,2496,2536)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // $t16 := get_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:17+25 + assume {:print "$at(110,2554,2579)"} true; + $t16 := $Dereference($t12)->$microseconds; + + // $t17 := <($t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:43+1 + call $t17 := $Lt($t16, $t2); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 +L0: + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + + // $t18 := 1014 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:80+18 + $t18 := 1014; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:56+43 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(110,2593,2636)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + assume {:print "$at(110,2546,2637)"} true; + assume {:print "$track_abort(34,4):", $t19} $t19 == $t19; + + // $t9 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + $t9 := $t19; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:59:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:37+9 + assume {:print "$at(110,2675,2684)"} true; +L2: + + // $t20 := borrow_field.microseconds($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+25 + assume {:print "$at(110,2647,2672)"} true; + $t20 := $ChildMutation($t12, 0, $Dereference($t12)->$microseconds); + + // write_ref($t20, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $t20 := $UpdateMutation($t20, $t2); + + // write_back[Reference($t12).microseconds (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $t12 := $UpdateMutation($t12, $Update'$1_timestamp_CurrentTimeMicroseconds'_microseconds($Dereference($t12), $Dereference($t20))); + + // write_back[timestamp::CurrentTimeMicroseconds@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:60:9+37 + $1_timestamp_CurrentTimeMicroseconds_$memory := $ResourceUpdate($1_timestamp_CurrentTimeMicroseconds_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // assert Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume {:print "$at(111,1846,1956)"} true; + assert {:msg "assert_failed(111,1846,1956): global memory invariant does not hold"} + ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t21 := [116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:41+41 + assume {:print "$at(110,2740,2781)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 105, 109, 101), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:23+60 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(110,2722,2782)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t22) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:63:9+75 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(110,2708,2783)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(34,4):", $t9} $t9 == $t9; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 + assume {:print "$at(110,2789,2790)"} true; +L3: + + // assert Not(Not(system_addresses::$is_vm[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:51:9+44 + assume {:print "$at(111,2383,2427)"} true; + assert {:msg "assert_failed(111,2383,2427): function does not abort under this condition"} + !!$1_system_addresses_$is_vm($t0); + + // assert Not(And(Eq
($t1, 0x0), Neq(timestamp::spec_now_microseconds[@62](), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:53:9+80 + assume {:print "$at(111,2467,2547)"} true; + assert {:msg "assert_failed(111,2467,2547): function does not abort under this condition"} + !($IsEqual'address'($t1, 0) && !$IsEqual'u64'($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory#62), $t2)); + + // assert Not(And(Neq
($t1, 0x0), Ge(timestamp::spec_now_microseconds[@62](), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:54:9+80 + assume {:print "$at(111,2556,2636)"} true; + assert {:msg "assert_failed(111,2556,2636): function does not abort under this condition"} + !(!$IsEqual'address'($t1, 0) && ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory#62) >= $t2)); + + // assert Implies(Neq
($t1, 0x0), Eq(timestamp::spec_now_microseconds(), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:43:9+79 + assume {:print "$at(111,2137,2216)"} true; + assert {:msg "assert_failed(111,2137,2216): post-condition does not hold"} + (!$IsEqual'address'($t1, 0) ==> $IsEqual'u64'($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory), $t2)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:43:9+79 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.move:64:5+1 + assume {:print "$at(110,2789,2790)"} true; +L4: + + // assert Or(Or(Not(system_addresses::$is_vm[]($t0)), And(Eq
($t1, 0x0), Neq(timestamp::spec_now_microseconds[@62](), $t2))), And(Neq
($t1, 0x0), Ge(timestamp::spec_now_microseconds[@62](), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:39:5+254 + assume {:print "$at(111,1968,2222)"} true; + assert {:msg "assert_failed(111,1968,2222): abort not covered by any of the `aborts_if` clauses"} + ((!$1_system_addresses_$is_vm($t0) || ($IsEqual'address'($t1, 0) && !$IsEqual'u64'($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory#62), $t2))) || (!$IsEqual'address'($t1, 0) && ($1_timestamp_spec_now_microseconds($1_timestamp_CurrentTimeMicroseconds_$memory#62) >= $t2))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:39:5+254 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_barnard [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:41:5+85 +procedure {:timeLimit 80} $1_stc_util_is_net_barnard$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:41:5+1 + assume {:print "$at(101,989,990)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:42:9+15 + assume {:print "$at(101,1033,1048)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,1033,1048)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,0):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 251 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:42:28+16 + $t2 := 251; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:42:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:42:9+35 + assume {:print "$track_return(35,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:43:5+1 + assume {:print "$at(101,1073,1074)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:43:5+1 + assume {:print "$at(101,1073,1074)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:43:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:43:5+1 + assume {:print "$at(101,1073,1074)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_dev [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:26:5+77 +procedure {:timeLimit 80} $1_stc_util_is_net_dev$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:26:5+1 + assume {:print "$at(101,696,697)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:27:9+15 + assume {:print "$at(101,736,751)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,736,751)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 254 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:27:28+12 + $t2 := 254; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:27:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:27:9+31 + assume {:print "$track_return(35,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:28:5+1 + assume {:print "$at(101,772,773)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:28:5+1 + assume {:print "$at(101,772,773)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:28:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:28:5+1 + assume {:print "$at(101,772,773)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_halley [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:36:5+83 +procedure {:timeLimit 80} $1_stc_util_is_net_halley$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:36:5+1 + assume {:print "$at(101,888,889)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:37:9+15 + assume {:print "$at(101,931,946)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,931,946)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 253 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:37:28+15 + $t2 := 253; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:37:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:37:9+34 + assume {:print "$track_return(35,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:38:5+1 + assume {:print "$at(101,970,971)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:38:5+1 + assume {:print "$at(101,970,971)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:38:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:38:5+1 + assume {:print "$at(101,970,971)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_main [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:47:5+79 +procedure {:timeLimit 80} $1_stc_util_is_net_main$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:47:5+1 + assume {:print "$at(101,1093,1094)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:48:9+15 + assume {:print "$at(101,1134,1149)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,1134,1149)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:48:28+13 + $t2 := 1; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:48:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:48:9+32 + assume {:print "$track_return(35,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:49:5+1 + assume {:print "$at(101,1171,1172)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:49:5+1 + assume {:print "$at(101,1171,1172)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:49:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:49:5+1 + assume {:print "$at(101,1171,1172)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_test [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:31:5+79 +procedure {:timeLimit 80} $1_stc_util_is_net_test$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:31:5+1 + assume {:print "$at(101,791,792)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:32:9+15 + assume {:print "$at(101,832,847)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,832,847)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,4):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 255 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:32:28+13 + $t2 := 255; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:32:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:32:9+32 + assume {:print "$track_return(35,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:33:5+1 + assume {:print "$at(101,869,870)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:33:5+1 + assume {:print "$at(101,869,870)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:33:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:33:5+1 + assume {:print "$at(101,869,870)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_net_vega [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:52:5+79 +procedure {:timeLimit 80} $1_stc_util_is_net_vega$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:52:5+1 + assume {:print "$at(101,1190,1191)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // $t0 := chain_id::get() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:53:9+15 + assume {:print "$at(101,1231,1246)"} true; + call $t0 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(101,1231,1246)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,5):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:53:28+13 + $t2 := 2; + assume $IsValid'u8'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:53:25+2 + $t3 := $IsEqual'u8'($t0, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:53:9+32 + assume {:print "$track_return(35,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:54:5+1 + assume {:print "$at(101,1268,1269)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:54:5+1 + assume {:print "$at(101,1268,1269)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:54:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:54:5+1 + assume {:print "$at(101,1268,1269)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::is_stc [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:16:5+151 +procedure {:timeLimit 80} $1_stc_util_is_stc$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_string_String; + var $t1: int; + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := type_info::type_name<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:17:9+28 + assume {:print "$at(101,439,467)"} true; + call $t0 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(101,439,467)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,6):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 97, 114, 99, 111, 105, 110, 95, 99, 111, 105, 110, 58, 58, 83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:17:54+57 + $t2 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 97, 114)), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 99, 111, 105)), MakeVec4(110, 58, 58, 83)), MakeVec2(84, 67)); + assume $IsValid'vec'u8''($t2); + + // $t3 := string::utf8($t2) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:17:41+71 + call $t3 := $1_string_utf8($t2); + if ($abort_flag) { + assume {:print "$at(101,471,542)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(35,6):", $t1} $t1 == $t1; + goto L2; + } + + // $t4 := ==($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:17:38+2 + $t4 := $IsEqual'$1_string_String'($t0, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:17:9+103 + assume {:print "$track_return(35,6,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:18:5+1 + assume {:print "$at(101,547,548)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:18:5+1 + assume {:print "$at(101,547,548)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:18:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:18:5+1 + assume {:print "$at(101,547,548)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_util::token_issuer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:21:5+112 +procedure {:inline 1} $1_stc_util_token_issuer'$1_starcoin_coin_STC'() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $temp_0'address': int; + + // bytecode translation starts here + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:37+26 + assume {:print "$at(101,645,671)"} true; + call $t1 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(101,645,671)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(101,617,672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + assume {:print "$track_return(35,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_util::token_issuer<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:21:5+112 +procedure {:inline 1} $1_stc_util_token_issuer'#0'() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $temp_0'address': int; + + // bytecode translation starts here + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:37+26 + assume {:print "$at(101,645,671)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(101,645,671)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(101,617,672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + assume {:print "$track_return(35,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_util::token_issuer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:21:5+112 +procedure {:timeLimit 80} $1_stc_util_token_issuer$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:37+26 + assume {:print "$at(101,645,671)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(101,645,671)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(101,617,672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(35,7):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:22:9+55 + assume {:print "$track_return(35,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_util.move:23:5+1 + assume {:print "$at(101,677,678)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:84:10+110 +function {:inline} $1_fixed_point64_spec_multiply_u128(val: int, multiplier: $1_fixed_point64_FixedPoint64): int { + $shr((val * multiplier->$value), 64) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:115:10+102 +function {:inline} $1_fixed_point64_spec_divide_u128(val: int, divisor: $1_fixed_point64_FixedPoint64): int { + ($shl(val, 64) div divisor->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:158:10+155 +function {:inline} $1_fixed_point64_spec_create_from_rational(numerator: int, denominator: int): $1_fixed_point64_FixedPoint64 { + $1_fixed_point64_FixedPoint64(($shl(numerator, 128) div $shl(denominator, 64))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:197:10+174 +function {:inline} $1_fixed_point64_spec_min(num1: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): $1_fixed_point64_FixedPoint64 { + (if ((num1->$value < num2->$value)) then (num1) else (num2)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:218:10+174 +function {:inline} $1_fixed_point64_spec_max(num1: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): $1_fixed_point64_FixedPoint64 { + (if ((num1->$value > num2->$value)) then (num1) else (num2)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:235:10+109 +function {:inline} $1_fixed_point64_spec_less_or_equal(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): bool { + (self->$value <= num2->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:248:10+99 +function {:inline} $1_fixed_point64_spec_less(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): bool { + (self->$value < num2->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:261:10+112 +function {:inline} $1_fixed_point64_spec_greater_or_equal(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): bool { + (self->$value >= num2->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:274:10+102 +function {:inline} $1_fixed_point64_spec_greater(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): bool { + (self->$value > num2->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:287:10+101 +function {:inline} $1_fixed_point64_spec_equal(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64): bool { + $IsEqual'u128'(self->$value, num2->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:304:10+280 +function {:inline} $1_fixed_point64_spec_almost_equal(self: $1_fixed_point64_FixedPoint64, num2: $1_fixed_point64_FixedPoint64, precision: $1_fixed_point64_FixedPoint64): bool { + (if ((self->$value > num2->$value)) then (((self->$value - num2->$value) <= precision->$value)) else (((num2->$value - self->$value) <= precision->$value))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:327:10+97 +function {:inline} $1_fixed_point64_spec_create_from_u128(val: int): $1_fixed_point64_FixedPoint64 { + $1_fixed_point64_FixedPoint64($shl(val, 64)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:340:10+228 +function {:inline} $1_fixed_point64_spec_floor(self: $1_fixed_point64_FixedPoint64): int { + (var fractional := (self->$value mod $shlU256(1, 64)); (if ($IsEqual'num'(fractional, 0)) then ($shr(self->$value, 64)) else ($shr((self->$value - fractional), 64)))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:365:10+260 +function {:inline} $1_fixed_point64_spec_ceil(self: $1_fixed_point64_FixedPoint64): int { + (var fractional := (self->$value mod $shlU256(1, 64)); (var one := $shlU256(1, 64); (if ($IsEqual'num'(fractional, 0)) then ($shr(self->$value, 64)) else ($shr(((self->$value - fractional) + one), 64))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:390:10+320 +function {:inline} $1_fixed_point64_spec_round(self: $1_fixed_point64_FixedPoint64): int { + (var fractional := (self->$value mod $shlU256(1, 64)); (var boundary := ($shlU256(1, 64) div 2); (var one := $shlU256(1, 64); (if ((fractional < boundary)) then ($shr((self->$value - fractional), 64)) else ($shr(((self->$value - fractional) + one), 64)))))) +} + +// struct fixed_point64::FixedPoint64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:15:5+57 +datatype $1_fixed_point64_FixedPoint64 { + $1_fixed_point64_FixedPoint64($value: int) +} +function {:inline} $Update'$1_fixed_point64_FixedPoint64'_value(s: $1_fixed_point64_FixedPoint64, x: int): $1_fixed_point64_FixedPoint64 { + $1_fixed_point64_FixedPoint64(x) +} +function $IsValid'$1_fixed_point64_FixedPoint64'(s: $1_fixed_point64_FixedPoint64): bool { + $IsValid'u128'(s->$value) +} +function {:inline} $IsEqual'$1_fixed_point64_FixedPoint64'(s1: $1_fixed_point64_FixedPoint64, s2: $1_fixed_point64_FixedPoint64): bool { + s1 == s2 +} + +// fun fixed_point64::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:46:5+314 +procedure {:timeLimit 80} $1_fixed_point64_add$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:46:5+1 + assume {:print "$at(154,2016,2017)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:46:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:46:5+1 + assume {:print "$track_local(36,0,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:46:5+1 + assume {:print "$track_local(36,0,1):", $t1} $t1 == $t1; + + // $t5 := fixed_point64::get_raw_value($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:47:21+19 + assume {:print "$at(154,2104,2123)"} true; + call $t5 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(154,2104,2123)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[x_raw]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:47:13+5 + assume {:print "$track_local(36,0,3):", $t5} $t5 == $t5; + + // $t7 := fixed_point64::get_raw_value($t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:48:21+16 + assume {:print "$at(154,2145,2161)"} true; + call $t7 := $1_fixed_point64_get_raw_value($t1); + if ($abort_flag) { + assume {:print "$at(154,2145,2161)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[y_raw]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:48:13+5 + assume {:print "$track_local(36,0,4):", $t7} $t7 == $t7; + + // $t8 := (u256)($t5) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:49:22+15 + assume {:print "$at(154,2184,2199)"} true; + call $t8 := $CastU256($t5); + if ($abort_flag) { + assume {:print "$at(154,2184,2199)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // $t9 := (u256)($t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:49:40+15 + call $t9 := $CastU256($t7); + if ($abort_flag) { + assume {:print "$at(154,2202,2217)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := +($t8, $t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:49:38+1 + call $t10 := $AddU256($t8, $t9); + if ($abort_flag) { + assume {:print "$at(154,2200,2201)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[result]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:49:13+6 + assume {:print "$track_local(36,0,2):", $t10} $t10 == $t10; + + // $t11 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:27+8 + assume {:print "$at(154,2245,2253)"} true; + $t11 := 340282366920938463463374607431768211455; + assume $IsValid'u256'($t11); + + // $t12 := <=($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:24+2 + call $t12 := $Le($t10, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 + assume {:print "$at(154,2227,2275)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:37+19 +L0: + + // $t13 := 131077 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:37+19 + assume {:print "$at(154,2255,2274)"} true; + $t13 := 131077; + assume $IsValid'u64'($t13); + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 + assume {:print "$at(154,2227,2275)"} true; + assume {:print "$track_abort(36,0):", $t13} $t13 == $t13; + + // $t6 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 + $t6 := $t13; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:50:9+48 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:32+6 + assume {:print "$at(154,2308,2314)"} true; +L2: + + // $t14 := (u128)($t10) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:31+16 + assume {:print "$at(154,2307,2323)"} true; + call $t14 := $CastU128($t10); + if ($abort_flag) { + assume {:print "$at(154,2307,2323)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(36,0):", $t6} $t6 == $t6; + goto L4; + } + + // $t15 := opaque begin: fixed_point64::create_from_raw_value($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:9+39 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:9+39 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t15); + + // assume Eq(select fixed_point64::FixedPoint64.value($t15), $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:9+39 + assume $IsEqual'u128'($t15->$value, $t14); + + // $t15 := opaque end: fixed_point64::create_from_raw_value($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:9+39 + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:51:9+39 + assume {:print "$track_return(36,0,0):", $t15} $t15 == $t15; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:52:5+1 + assume {:print "$at(154,2329,2330)"} true; +L3: + + // assert Not(Gt(Add(Cast(select fixed_point64::FixedPoint64.value($t0)), Cast(select fixed_point64::FixedPoint64.value($t1))), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:55:9+87 + assume {:print "$at(154,2377,2464)"} true; + assert {:msg "assert_failed(154,2377,2464): function does not abort under this condition"} + !(($t0->$value + $t1->$value) > 340282366920938463463374607431768211455); + + // assert Eq(select fixed_point64::FixedPoint64.value($t15), Add(select fixed_point64::FixedPoint64.value($t0), select fixed_point64::FixedPoint64.value($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:56:9+45 + assume {:print "$at(154,2473,2518)"} true; + assert {:msg "assert_failed(154,2473,2518): post-condition does not hold"} + $IsEqual'u128'($t15->$value, ($t0->$value + $t1->$value)); + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:56:9+45 + $ret0 := $t15; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:52:5+1 + assume {:print "$at(154,2329,2330)"} true; +L4: + + // assert Gt(Add(Cast(select fixed_point64::FixedPoint64.value($t0)), Cast(select fixed_point64::FixedPoint64.value($t1))), 340282366920938463463374607431768211455) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:53:5+189 + assume {:print "$at(154,2335,2524)"} true; + assert {:msg "assert_failed(154,2335,2524): abort not covered by any of the `aborts_if` clauses"} + (($t0->$value + $t1->$value) > 340282366920938463463374607431768211455); + + // assert And(Gt(Add(Cast(select fixed_point64::FixedPoint64.value($t0)), Cast(select fixed_point64::FixedPoint64.value($t1))), 340282366920938463463374607431768211455), Eq(131077, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:53:5+189 + assert {:msg "assert_failed(154,2335,2524): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ((($t0->$value + $t1->$value) > 340282366920938463463374607431768211455) && $IsEqual'num'(131077, $t6)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:53:5+189 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun fixed_point64::sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:33:5+248 +procedure {:timeLimit 80} $1_fixed_point64_sub$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:33:5+1 + assume {:print "$at(154,1532,1533)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:33:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:33:5+1 + assume {:print "$track_local(36,19,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:33:5+1 + assume {:print "$track_local(36,19,1):", $t1} $t1 == $t1; + + // $t4 := fixed_point64::get_raw_value($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:34:21+19 + assume {:print "$at(154,1620,1639)"} true; + call $t4 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(154,1620,1639)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(36,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[x_raw]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:34:13+5 + assume {:print "$track_local(36,19,2):", $t4} $t4 == $t4; + + // $t6 := fixed_point64::get_raw_value($t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:35:21+16 + assume {:print "$at(154,1661,1677)"} true; + call $t6 := $1_fixed_point64_get_raw_value($t1); + if ($abort_flag) { + assume {:print "$at(154,1661,1677)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(36,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[y_raw]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:35:13+5 + assume {:print "$track_local(36,19,3):", $t6} $t6 == $t6; + + // $t7 := >=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:23+2 + assume {:print "$at(154,1701,1703)"} true; + call $t7 := $Ge($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 + assume {:print "$at(154,1687,1728)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:33+16 +L0: + + // $t8 := 65542 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:33+16 + assume {:print "$at(154,1711,1727)"} true; + $t8 := 65542; + assume $IsValid'u64'($t8); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 + assume {:print "$at(154,1687,1728)"} true; + assume {:print "$track_abort(36,19):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:36:9+41 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:31+5 + assume {:print "$at(154,1760,1765)"} true; +L2: + + // $t9 := -($t4, $t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:37+1 + assume {:print "$at(154,1766,1767)"} true; + call $t9 := $Sub($t4, $t6); + if ($abort_flag) { + assume {:print "$at(154,1766,1767)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(36,19):", $t5} $t5 == $t5; + goto L4; + } + + // $t10 := opaque begin: fixed_point64::create_from_raw_value($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:9+36 + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:9+36 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t10); + + // assume Eq(select fixed_point64::FixedPoint64.value($t10), $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:9+36 + assume $IsEqual'u128'($t10->$value, $t9); + + // $t10 := opaque end: fixed_point64::create_from_raw_value($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:9+36 + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:37:9+36 + assume {:print "$track_return(36,19,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:38:5+1 + assume {:print "$at(154,1779,1780)"} true; +L3: + + // assert Not(Lt(select fixed_point64::FixedPoint64.value($t0), select fixed_point64::FixedPoint64.value($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:41:9+53 + assume {:print "$at(154,1827,1880)"} true; + assert {:msg "assert_failed(154,1827,1880): function does not abort under this condition"} + !($t0->$value < $t1->$value); + + // assert Eq(select fixed_point64::FixedPoint64.value($t10), Sub(select fixed_point64::FixedPoint64.value($t0), select fixed_point64::FixedPoint64.value($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:42:9+45 + assume {:print "$at(154,1889,1934)"} true; + assert {:msg "assert_failed(154,1889,1934): post-condition does not hold"} + $IsEqual'u128'($t10->$value, ($t0->$value - $t1->$value)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:42:9+45 + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:38:5+1 + assume {:print "$at(154,1779,1780)"} true; +L4: + + // assert Lt(select fixed_point64::FixedPoint64.value($t0), select fixed_point64::FixedPoint64.value($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:39:5+155 + assume {:print "$at(154,1785,1940)"} true; + assert {:msg "assert_failed(154,1785,1940): abort not covered by any of the `aborts_if` clauses"} + ($t0->$value < $t1->$value); + + // assert And(Lt(select fixed_point64::FixedPoint64.value($t0), select fixed_point64::FixedPoint64.value($t1)), Eq(65542, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:39:5+155 + assert {:msg "assert_failed(154,1785,1940): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($t0->$value < $t1->$value) && $IsEqual'num'(65542, $t5)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:39:5+155 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fixed_point64::almost_equal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+282 +procedure {:timeLimit 80} $1_fixed_point64_almost_equal$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64, _$t2: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: bool; + 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 $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $t2: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume {:print "$at(154,11339,11340)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume {:print "$track_local(36,1,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume {:print "$track_local(36,1,1):", $t1} $t1 == $t1; + + // trace_local[precision]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:292:5+1 + assume {:print "$track_local(36,1,2):", $t2} $t2 == $t2; + + // $t4 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:13+10 + assume {:print "$at(154,11448,11458)"} true; + $t4 := $t0->$value; + + // $t5 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:26+10 + $t5 := $t1->$value; + + // $t6 := >($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:24+1 + call $t6 := $Gt($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:9+171 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:14+4 + assume {:print "$at(154,11488,11492)"} true; +L1: + + // $t7 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:14+10 + assume {:print "$at(154,11488,11498)"} true; + $t7 := $t0->$value; + + // $t8 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:27+10 + $t8 := $t1->$value; + + // $t9 := -($t7, $t8) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:25+1 + call $t9 := $Sub($t7, $t8); + if ($abort_flag) { + assume {:print "$at(154,11499,11500)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(36,1):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := get_field.value($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:41+15 + $t11 := $t2->$value; + + // $t3 := <=($t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:294:38+2 + call $t3 := $Le($t9, $t11); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:9+171 + assume {:print "$at(154,11444,11615)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:14+4 + assume {:print "$at(154,11562,11566)"} true; +L0: + + // $t12 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:14+10 + assume {:print "$at(154,11562,11572)"} true; + $t12 := $t1->$value; + + // $t13 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:27+10 + $t13 := $t0->$value; + + // $t14 := -($t12, $t13) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:25+1 + call $t14 := $Sub($t12, $t13); + if ($abort_flag) { + assume {:print "$at(154,11573,11574)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(36,1):", $t10} $t10 == $t10; + goto L4; + } + + // $t15 := get_field.value($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:41+15 + $t15 := $t2->$value; + + // $t3 := <=($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:296:38+2 + call $t3 := $Le($t14, $t15); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:9+171 + assume {:print "$at(154,11444,11615)"} true; +L2: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:293:9+171 + assume {:print "$at(154,11444,11615)"} true; + assume {:print "$track_return(36,1,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:298:5+1 + assume {:print "$at(154,11620,11621)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:301:9+16 + assume {:print "$at(154,11677,11693)"} true; + assert {:msg "assert_failed(154,11677,11693): function does not abort under this condition"} + !false; + + // assert Eq($t3, fixed_point64::spec_almost_equal($t0, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:302:9+59 + assume {:print "$at(154,11702,11761)"} true; + assert {:msg "assert_failed(154,11702,11761): post-condition does not hold"} + $IsEqual'bool'($t3, $1_fixed_point64_spec_almost_equal($t0, $t1, $t2)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:302:9+59 + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:298:5+1 + assume {:print "$at(154,11620,11621)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:299:5+141 + assume {:print "$at(154,11626,11767)"} true; + assert {:msg "assert_failed(154,11626,11767): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:299:5+141 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun fixed_point64::create_from_raw_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:163:5+98 +procedure {:timeLimit 80} $1_fixed_point64_create_from_raw_value$verify(_$t0: int) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: $1_fixed_point64_FixedPoint64; + var $t0: int; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:163:5+1 + assume {:print "$at(154,7578,7579)"} true; + assume $IsValid'u128'($t0); + + // trace_local[value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:163:5+1 + assume {:print "$track_local(36,4,0):", $t0} $t0 == $t0; + + // $t1 := pack fixed_point64::FixedPoint64($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:164:9+22 + assume {:print "$at(154,7648,7670)"} true; + $t1 := $1_fixed_point64_FixedPoint64($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:164:9+22 + assume {:print "$track_return(36,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:165:5+1 + assume {:print "$at(154,7675,7676)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:168:9+16 + assume {:print "$at(154,7741,7757)"} true; + assert {:msg "assert_failed(154,7741,7757): function does not abort under this condition"} + !false; + + // assert Eq(select fixed_point64::FixedPoint64.value($t1), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:169:9+30 + assume {:print "$at(154,7766,7796)"} true; + assert {:msg "assert_failed(154,7766,7796): post-condition does not hold"} + $IsEqual'u128'($t1->$value, $t0); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:169:9+30 + $ret0 := $t1; + return; + +} + +// fun fixed_point64::create_from_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:312:5+204 +procedure {:timeLimit 80} $1_fixed_point64_create_from_u128$verify(_$t0: int) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_fixed_point64_FixedPoint64; + var $t0: int; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:312:5+1 + assume {:print "$at(154,12115,12116)"} true; + assume $IsValid'u128'($t0); + + // assume Identical($t2, Shl(Cast($t0), 64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:324:9+39 + assume {:print "$at(154,12536,12575)"} true; + assume ($t2 == $shlU256($t0, 64)); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:312:5+1 + assume {:print "$at(154,12115,12116)"} true; + assume {:print "$track_local(36,5,0):", $t0} $t0 == $t0; + + // $t3 := (u256)($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:313:21+13 + assume {:print "$at(154,12190,12203)"} true; + call $t3 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(154,12190,12203)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:313:38+2 + $t5 := 64; + assume $IsValid'u8'($t5); + + // $t6 := <<($t3, $t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:313:35+2 + call $t6 := $ShlU256($t3, $t5); + if ($abort_flag) { + assume {:print "$at(154,12204,12206)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[value]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:313:13+5 + assume {:print "$track_local(36,5,1):", $t6} $t6 == $t6; + + // $t7 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:26+8 + assume {:print "$at(154,12236,12244)"} true; + $t7 := 340282366920938463463374607431768211455; + assume $IsValid'u256'($t7); + + // $t8 := <=($t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:23+2 + call $t8 := $Le($t6, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 + assume {:print "$at(154,12219,12266)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:36+19 +L0: + + // $t9 := 131077 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:36+19 + assume {:print "$at(154,12246,12265)"} true; + $t9 := 131077; + assume $IsValid'u64'($t9); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 + assume {:print "$at(154,12219,12266)"} true; + assume {:print "$track_abort(36,5):", $t9} $t9 == $t9; + + // $t4 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 + $t4 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:314:9+47 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:315:31+5 + assume {:print "$at(154,12298,12303)"} true; +L2: + + // $t10 := (u128)($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:315:30+15 + assume {:print "$at(154,12297,12312)"} true; + call $t10 := $CastU128($t6); + if ($abort_flag) { + assume {:print "$at(154,12297,12312)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t11 := pack fixed_point64::FixedPoint64($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:315:9+37 + $t11 := $1_fixed_point64_FixedPoint64($t10); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:315:9+37 + assume {:print "$track_return(36,5,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:316:5+1 + assume {:print "$at(154,12318,12319)"} true; +L3: + + // assert Not(Gt($t2, 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:325:9+34 + assume {:print "$at(154,12584,12618)"} true; + assert {:msg "assert_failed(154,12584,12618): function does not abort under this condition"} + !($t2 > 340282366920938463463374607431768211455); + + // assert Eq($t11, fixed_point64::spec_create_from_u128($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:320:9+45 + assume {:print "$at(154,12418,12463)"} true; + assert {:msg "assert_failed(154,12418,12463): post-condition does not hold"} + $IsEqual'$1_fixed_point64_FixedPoint64'($t11, $1_fixed_point64_spec_create_from_u128($t0)); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:320:9+45 + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:316:5+1 + assume {:print "$at(154,12318,12319)"} true; +L4: + + // assert Gt($t2, 340282366920938463463374607431768211455) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:317:5+145 + assume {:print "$at(154,12324,12469)"} true; + assert {:msg "assert_failed(154,12324,12469): abort not covered by any of the `aborts_if` clauses"} + ($t2 > 340282366920938463463374607431768211455); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:317:5+145 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fixed_point64::divide_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:91:5+628 +procedure {:timeLimit 80} $1_fixed_point64_divide_u128$verify(_$t0: int, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + 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: bool; + var $t16: int; + var $t17: int; + var $t0: int; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:91:5+1 + assume {:print "$at(154,3983,3984)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:91:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:91:5+1 + assume {:print "$track_local(36,6,0):", $t0} $t0 == $t0; + + // trace_local[divisor]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:91:5+1 + assume {:print "$track_local(36,6,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:17+13 + assume {:print "$at(154,4103,4116)"} true; + $t3 := $t1->$value; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:34+1 + $t4 := 0; + assume $IsValid'u128'($t4); + + // $t5 := !=($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:31+2 + $t5 := !$IsEqual'u128'($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 + assume {:print "$at(154,4095,4141)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:37+17 +L0: + + // $t6 := 65540 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:37+17 + assume {:print "$at(154,4123,4140)"} true; + $t6 := 65540; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 + assume {:print "$at(154,4095,4141)"} true; + assume {:print "$track_abort(36,6):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:93:9+46 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:96:29+3 + assume {:print "$at(154,4287,4290)"} true; +L2: + + // $t8 := (u256)($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:96:28+13 + assume {:print "$at(154,4286,4299)"} true; + call $t8 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(154,4286,4299)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,6):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:96:45+2 + $t9 := 64; + assume $IsValid'u8'($t9); + + // $t10 := <<($t8, $t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:96:42+2 + call $t10 := $ShlU256($t8, $t9); + if ($abort_flag) { + assume {:print "$at(154,4300,4302)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,6):", $t7} $t7 == $t7; + goto L7; + } + + // $t11 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:97:40+13 + assume {:print "$at(154,4346,4359)"} true; + $t11 := $t1->$value; + + // $t12 := (u256)($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:97:39+23 + call $t12 := $CastU256($t11); + if ($abort_flag) { + assume {:print "$at(154,4345,4368)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,6):", $t7} $t7 == $t7; + goto L7; + } + + // $t13 := /($t10, $t12) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:97:37+1 + call $t13 := $Div($t10, $t12); + if ($abort_flag) { + assume {:print "$at(154,4343,4344)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,6):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[quotient]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:97:13+8 + assume {:print "$track_local(36,6,2):", $t13} $t13 == $t13; + + // $t14 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:29+8 + assume {:print "$at(154,4447,4455)"} true; + $t14 := 340282366920938463463374607431768211455; + assume $IsValid'u256'($t14); + + // $t15 := <=($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:26+2 + call $t15 := $Le($t13, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 + assume {:print "$at(154,4427,4467)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:39+9 +L3: + + // $t16 := 131074 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:39+9 + assume {:print "$at(154,4457,4466)"} true; + $t16 := 131074; + assume $IsValid'u64'($t16); + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 + assume {:print "$at(154,4427,4467)"} true; + assume {:print "$track_abort(36,6):", $t16} $t16 == $t16; + + // $t7 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 + $t7 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:99:9+40 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:102:10+8 + assume {:print "$at(154,4588,4596)"} true; +L5: + + // $t17 := (u128)($t13) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:102:9+18 + assume {:print "$at(154,4587,4605)"} true; + call $t17 := $CastU128($t13); + if ($abort_flag) { + assume {:print "$at(154,4587,4605)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,6):", $t7} $t7 == $t7; + goto L7; + } + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:102:9+18 + assume {:print "$track_return(36,6,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:103:5+1 + assume {:print "$at(154,4610,4611)"} true; +L6: + + // assert Not(Eq(select fixed_point64::FixedPoint64.value($t1), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:112:9+52 + assume {:print "$at(154,4844,4896)"} true; + assert {:msg "assert_failed(154,4844,4896): function does not abort under this condition"} + !$IsEqual'u128'($t1->$value, 0); + + // assert Not(Gt(fixed_point64::spec_divide_u128[]($t0, $t1), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:113:9+67 + assume {:print "$at(154,4905,4972)"} true; + assert {:msg "assert_failed(154,4905,4972): function does not abort under this condition"} + !($1_fixed_point64_spec_divide_u128($t0, $t1) > 340282366920938463463374607431768211455); + + // assert Eq($t17, fixed_point64::spec_divide_u128($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:107:9+49 + assume {:print "$at(154,4698,4747)"} true; + assert {:msg "assert_failed(154,4698,4747): post-condition does not hold"} + $IsEqual'u128'($t17, $1_fixed_point64_spec_divide_u128($t0, $t1)); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:107:9+49 + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:103:5+1 + assume {:print "$at(154,4610,4611)"} true; +L7: + + // assert Or(Eq(select fixed_point64::FixedPoint64.value($t1), 0), Gt(fixed_point64::spec_divide_u128[]($t0, $t1), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:104:5+137 + assume {:print "$at(154,4616,4753)"} true; + assert {:msg "assert_failed(154,4616,4753): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'u128'($t1->$value, 0) || ($1_fixed_point64_spec_divide_u128($t0, $t1) > 340282366920938463463374607431768211455)); + + // assert Or(And(Eq(select fixed_point64::FixedPoint64.value($t1), 0), Eq(65540, $t7)), And(Gt(fixed_point64::spec_divide_u128[]($t0, $t1), 340282366920938463463374607431768211455), Eq(131074, $t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:104:5+137 + assert {:msg "assert_failed(154,4616,4753): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($IsEqual'u128'($t1->$value, 0) && $IsEqual'num'(65540, $t7)) || (($1_fixed_point64_spec_divide_u128($t0, $t1) > 340282366920938463463374607431768211455) && $IsEqual'num'(131074, $t7))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:104:5+137 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun fixed_point64::equal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:279:5+103 +procedure {:timeLimit 80} $1_fixed_point64_equal$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:279:5+1 + assume {:print "$at(154,10906,10907)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:279:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:279:5+1 + assume {:print "$track_local(36,7,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:279:5+1 + assume {:print "$track_local(36,7,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:280:9+10 + assume {:print "$at(154,10979,10989)"} true; + $t2 := $t0->$value; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:280:23+10 + $t3 := $t1->$value; + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:280:20+2 + $t4 := $IsEqual'u128'($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:280:9+24 + assume {:print "$track_return(36,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:281:5+1 + assume {:print "$at(154,11008,11009)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:284:9+16 + assume {:print "$at(154,11058,11074)"} true; + assert {:msg "assert_failed(154,11058,11074): function does not abort under this condition"} + !false; + + // assert Eq($t4, fixed_point64::spec_equal($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:285:9+41 + assume {:print "$at(154,11083,11124)"} true; + assert {:msg "assert_failed(154,11083,11124): post-condition does not hold"} + $IsEqual'bool'($t4, $1_fixed_point64_spec_equal($t0, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:285:9+41 + $ret0 := $t4; + return; + +} + +// fun fixed_point64::floor [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:332:5+75 +procedure {:timeLimit 80} $1_fixed_point64_floor$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:332:5+1 + assume {:print "$at(154,12811,12812)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:332:5+1 + assume {:print "$track_local(36,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:333:9+10 + assume {:print "$at(154,12864,12874)"} true; + $t1 := $t0->$value; + + // $t2 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:333:23+2 + $t2 := 64; + assume $IsValid'u8'($t2); + + // $t3 := >>($t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:333:20+2 + call $t3 := $ShrU128($t1, $t2); + if ($abort_flag) { + assume {:print "$at(154,12875,12877)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,8):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:333:9+16 + assume {:print "$track_return(36,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:334:5+1 + assume {:print "$at(154,12885,12886)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:337:9+16 + assume {:print "$at(154,12935,12951)"} true; + assert {:msg "assert_failed(154,12935,12951): function does not abort under this condition"} + !false; + + // assert Eq($t3, fixed_point64::spec_floor($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:338:9+35 + assume {:print "$at(154,12960,12995)"} true; + assert {:msg "assert_failed(154,12960,12995): post-condition does not hold"} + $IsEqual'u128'($t3, $1_fixed_point64_spec_floor($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:338:9+35 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:334:5+1 + assume {:print "$at(154,12885,12886)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:335:5+110 + assume {:print "$at(154,12891,13001)"} true; + assert {:msg "assert_failed(154,12891,13001): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:335:5+110 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fixed_point64::get_raw_value [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:175:5+77 +procedure {:inline 1} $1_fixed_point64_get_raw_value(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:175:5+1 + assume {:print "$at(154,7989,7990)"} true; + assume {:print "$track_local(36,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:176:9+10 + assume {:print "$at(154,8050,8060)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:176:9+10 + assume {:print "$track_return(36,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:177:5+1 + assume {:print "$at(154,8065,8066)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:177:5+1 + assume {:print "$at(154,8065,8066)"} true; + $ret0 := $t1; + return; + +} + +// fun fixed_point64::get_raw_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:175:5+77 +procedure {:timeLimit 80} $1_fixed_point64_get_raw_value$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:175:5+1 + assume {:print "$at(154,7989,7990)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:175:5+1 + assume {:print "$track_local(36,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:176:9+10 + assume {:print "$at(154,8050,8060)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:176:9+10 + assume {:print "$track_return(36,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:177:5+1 + assume {:print "$at(154,8065,8066)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:177:5+1 + assume {:print "$at(154,8065,8066)"} true; + assert {:msg "assert_failed(154,8065,8066): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:177:5+1 + $ret0 := $t1; + return; + +} + +// fun fixed_point64::greater [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:266:5+104 +procedure {:timeLimit 80} $1_fixed_point64_greater$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:266:5+1 + assume {:print "$at(154,10523,10524)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:266:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:266:5+1 + assume {:print "$track_local(36,10,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:266:5+1 + assume {:print "$track_local(36,10,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:267:9+10 + assume {:print "$at(154,10598,10608)"} true; + $t2 := $t0->$value; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:267:22+10 + $t3 := $t1->$value; + + // $t4 := >($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:267:20+1 + call $t4 := $Gt($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:267:9+23 + assume {:print "$track_return(36,10,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:268:5+1 + assume {:print "$at(154,10626,10627)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:271:9+16 + assume {:print "$at(154,10678,10694)"} true; + assert {:msg "assert_failed(154,10678,10694): function does not abort under this condition"} + !false; + + // assert Eq($t4, fixed_point64::spec_greater($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:272:9+43 + assume {:print "$at(154,10703,10746)"} true; + assert {:msg "assert_failed(154,10703,10746): post-condition does not hold"} + $IsEqual'bool'($t4, $1_fixed_point64_spec_greater($t0, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:272:9+43 + $ret0 := $t4; + return; + +} + +// fun fixed_point64::greater_or_equal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:253:5+114 +procedure {:timeLimit 80} $1_fixed_point64_greater_or_equal$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:253:5+1 + assume {:print "$at(154,10102,10103)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:253:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:253:5+1 + assume {:print "$track_local(36,11,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:253:5+1 + assume {:print "$track_local(36,11,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:254:9+10 + assume {:print "$at(154,10186,10196)"} true; + $t2 := $t0->$value; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:254:23+10 + $t3 := $t1->$value; + + // $t4 := >=($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:254:20+2 + call $t4 := $Ge($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:254:9+24 + assume {:print "$track_return(36,11,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:255:5+1 + assume {:print "$at(154,10215,10216)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:258:9+16 + assume {:print "$at(154,10276,10292)"} true; + assert {:msg "assert_failed(154,10276,10292): function does not abort under this condition"} + !false; + + // assert Eq($t4, fixed_point64::spec_greater_or_equal($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:259:9+52 + assume {:print "$at(154,10301,10353)"} true; + assert {:msg "assert_failed(154,10301,10353): post-condition does not hold"} + $IsEqual'bool'($t4, $1_fixed_point64_spec_greater_or_equal($t0, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:259:9+52 + $ret0 := $t4; + return; + +} + +// fun fixed_point64::is_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:180:5+76 +procedure {:timeLimit 80} $1_fixed_point64_is_zero$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:180:5+1 + assume {:print "$at(154,8115,8116)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:180:5+1 + assume {:print "$track_local(36,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:181:9+10 + assume {:print "$at(154,8170,8180)"} true; + $t1 := $t0->$value; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:181:23+1 + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:181:20+2 + $t3 := $IsEqual'u128'($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:181:9+15 + assume {:print "$track_return(36,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:182:5+1 + assume {:print "$at(154,8190,8191)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:182:5+1 + assume {:print "$at(154,8190,8191)"} true; + assert {:msg "assert_failed(154,8190,8191): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:182:5+1 + $ret0 := $t3; + return; + +} + +// fun fixed_point64::less [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:240:5+101 +procedure {:timeLimit 80} $1_fixed_point64_less$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:240:5+1 + assume {:print "$at(154,9730,9731)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:240:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:240:5+1 + assume {:print "$track_local(36,13,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:240:5+1 + assume {:print "$track_local(36,13,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:241:9+10 + assume {:print "$at(154,9802,9812)"} true; + $t2 := $t0->$value; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:241:22+10 + $t3 := $t1->$value; + + // $t4 := <($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:241:20+1 + call $t4 := $Lt($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:241:9+23 + assume {:print "$track_return(36,13,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:242:5+1 + assume {:print "$at(154,9830,9831)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:245:9+16 + assume {:print "$at(154,9879,9895)"} true; + assert {:msg "assert_failed(154,9879,9895): function does not abort under this condition"} + !false; + + // assert Eq($t4, fixed_point64::spec_less($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:246:9+40 + assume {:print "$at(154,9904,9944)"} true; + assert {:msg "assert_failed(154,9904,9944): post-condition does not hold"} + $IsEqual'bool'($t4, $1_fixed_point64_spec_less($t0, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:246:9+40 + $ret0 := $t4; + return; + +} + +// fun fixed_point64::less_or_equal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:227:5+111 +procedure {:timeLimit 80} $1_fixed_point64_less_or_equal$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:227:5+1 + assume {:print "$at(154,9321,9322)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:227:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:227:5+1 + assume {:print "$track_local(36,14,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:227:5+1 + assume {:print "$track_local(36,14,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:228:9+10 + assume {:print "$at(154,9402,9412)"} true; + $t2 := $t0->$value; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:228:23+10 + $t3 := $t1->$value; + + // $t4 := <=($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:228:20+2 + call $t4 := $Le($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:228:9+24 + assume {:print "$track_return(36,14,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:229:5+1 + assume {:print "$at(154,9431,9432)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:232:9+16 + assume {:print "$at(154,9489,9505)"} true; + assert {:msg "assert_failed(154,9489,9505): function does not abort under this condition"} + !false; + + // assert Eq($t4, fixed_point64::spec_less_or_equal($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:233:9+49 + assume {:print "$at(154,9514,9563)"} true; + assert {:msg "assert_failed(154,9514,9563): post-condition does not hold"} + $IsEqual'bool'($t4, $1_fixed_point64_spec_less_or_equal($t0, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:233:9+49 + $ret0 := $t4; + return; + +} + +// fun fixed_point64::max [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:206:5+176 +procedure {:timeLimit 80} $1_fixed_point64_max$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t2: $1_fixed_point64_FixedPoint64; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:206:5+1 + assume {:print "$at(154,8801,8802)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:206:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[num1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:206:5+1 + assume {:print "$track_local(36,15,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:206:5+1 + assume {:print "$track_local(36,15,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:13+10 + assume {:print "$at(154,8884,8894)"} true; + $t3 := $t0->$value; + + // $t4 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:26+10 + $t4 := $t1->$value; + + // $t5 := >($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:24+1 + call $t5 := $Gt($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:208:13+4 + assume {:print "$at(154,8923,8927)"} true; +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 + assume {:print "$at(154,8880,8971)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:210:13+4 + assume {:print "$at(154,8957,8961)"} true; +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 + assume {:print "$at(154,8880,8971)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:207:9+91 + assume {:print "$at(154,8880,8971)"} true; + assume {:print "$track_return(36,15,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:212:5+1 + assume {:print "$at(154,8976,8977)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:215:9+16 + assume {:print "$at(154,9024,9040)"} true; + assert {:msg "assert_failed(154,9024,9040): function does not abort under this condition"} + !false; + + // assert Eq($t2, fixed_point64::spec_max($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:216:9+39 + assume {:print "$at(154,9049,9088)"} true; + assert {:msg "assert_failed(154,9049,9088): post-condition does not hold"} + $IsEqual'$1_fixed_point64_FixedPoint64'($t2, $1_fixed_point64_spec_max($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:216:9+39 + $ret0 := $t2; + return; + +} + +// fun fixed_point64::min [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:185:5+176 +procedure {:timeLimit 80} $1_fixed_point64_min$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t2: $1_fixed_point64_FixedPoint64; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:185:5+1 + assume {:print "$at(154,8258,8259)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:185:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[num1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:185:5+1 + assume {:print "$track_local(36,16,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:185:5+1 + assume {:print "$track_local(36,16,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:13+10 + assume {:print "$at(154,8341,8351)"} true; + $t3 := $t0->$value; + + // $t4 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:26+10 + $t4 := $t1->$value; + + // $t5 := <($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:24+1 + call $t5 := $Lt($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:187:13+4 + assume {:print "$at(154,8380,8384)"} true; +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 + assume {:print "$at(154,8337,8428)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:189:13+4 + assume {:print "$at(154,8414,8418)"} true; +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 + assume {:print "$at(154,8337,8428)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:186:9+91 + assume {:print "$at(154,8337,8428)"} true; + assume {:print "$track_return(36,16,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:191:5+1 + assume {:print "$at(154,8433,8434)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:194:9+16 + assume {:print "$at(154,8481,8497)"} true; + assert {:msg "assert_failed(154,8481,8497): function does not abort under this condition"} + !false; + + // assert Eq($t2, fixed_point64::spec_min($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:195:9+39 + assume {:print "$at(154,8506,8545)"} true; + assert {:msg "assert_failed(154,8506,8545): post-condition does not hold"} + $IsEqual'$1_fixed_point64_FixedPoint64'($t2, $1_fixed_point64_spec_min($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:195:9+39 + $ret0 := $t2; + return; + +} + +// fun fixed_point64::multiply_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:62:5+646 +procedure {:timeLimit 80} $1_fixed_point64_multiply_u128$verify(_$t0: int, _$t1: $1_fixed_point64_FixedPoint64) 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 $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t0: int; + var $t1: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:62:5+1 + assume {:print "$at(154,2692,2693)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:62:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:62:5+1 + assume {:print "$track_local(36,17,0):", $t0} $t0 == $t0; + + // trace_local[multiplier]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:62:5+1 + assume {:print "$track_local(36,17,1):", $t1} $t1 == $t1; + + // $t3 := (u256)($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:66:32+13 + assume {:print "$at(154,2980,2993)"} true; + call $t3 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(154,2980,2993)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,17):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:66:49+16 + $t5 := $t1->$value; + + // $t6 := (u256)($t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:66:48+26 + call $t6 := $CastU256($t5); + if ($abort_flag) { + assume {:print "$at(154,2996,3022)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,17):", $t4} $t4 == $t4; + goto L4; + } + + // $t7 := *($t3, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:66:46+1 + call $t7 := $MulU256($t3, $t6); + if ($abort_flag) { + assume {:print "$at(154,2994,2995)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,17):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:69:43+2 + assume {:print "$at(154,3199,3201)"} true; + $t8 := 64; + assume $IsValid'u8'($t8); + + // $t9 := >>($t7, $t8) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:69:40+2 + call $t9 := $ShrU256($t7, $t8); + if ($abort_flag) { + assume {:print "$at(154,3196,3198)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,17):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[product]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:69:13+7 + assume {:print "$track_local(36,17,2):", $t9} $t9 == $t9; + + // $t10 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:28+8 + assume {:print "$at(154,3279,3287)"} true; + $t10 := 340282366920938463463374607431768211455; + assume $IsValid'u256'($t10); + + // $t11 := <=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:25+2 + call $t11 := $Le($t9, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 + assume {:print "$at(154,3260,3305)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:38+15 +L0: + + // $t12 := 131075 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:38+15 + assume {:print "$at(154,3289,3304)"} true; + $t12 := 131075; + assume $IsValid'u64'($t12); + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 + assume {:print "$at(154,3260,3305)"} true; + assume {:print "$track_abort(36,17):", $t12} $t12 == $t12; + + // $t4 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 + $t4 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:71:9+45 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:72:10+7 + assume {:print "$at(154,3316,3323)"} true; +L2: + + // $t13 := (u128)($t9) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:72:9+17 + assume {:print "$at(154,3315,3332)"} true; + call $t13 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(154,3315,3332)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(36,17):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:72:9+17 + assume {:print "$track_return(36,17,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:73:5+1 + assume {:print "$at(154,3337,3338)"} true; +L3: + + // assert Not(Gt(fixed_point64::spec_multiply_u128[]($t0, $t1), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:82:9+78 + assume {:print "$at(154,3585,3663)"} true; + assert {:msg "assert_failed(154,3585,3663): function does not abort under this condition"} + !($1_fixed_point64_spec_multiply_u128($t0, $t1) > 340282366920938463463374607431768211455); + + // assert Eq($t13, fixed_point64::spec_multiply_u128($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:77:9+54 + assume {:print "$at(154,3429,3483)"} true; + assert {:msg "assert_failed(154,3429,3483): post-condition does not hold"} + $IsEqual'u128'($t13, $1_fixed_point64_spec_multiply_u128($t0, $t1)); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:77:9+54 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:73:5+1 + assume {:print "$at(154,3337,3338)"} true; +L4: + + // assert Gt(fixed_point64::spec_multiply_u128[]($t0, $t1), 340282366920938463463374607431768211455) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:74:5+146 + assume {:print "$at(154,3343,3489)"} true; + assert {:msg "assert_failed(154,3343,3489): abort not covered by any of the `aborts_if` clauses"} + ($1_fixed_point64_spec_multiply_u128($t0, $t1) > 340282366920938463463374607431768211455); + + // assert And(Gt(fixed_point64::spec_multiply_u128[]($t0, $t1), 340282366920938463463374607431768211455), Eq(131075, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:74:5+146 + assert {:msg "assert_failed(154,3343,3489): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($1_fixed_point64_spec_multiply_u128($t0, $t1) > 340282366920938463463374607431768211455) && $IsEqual'num'(131075, $t4)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:74:5+146 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fixed_point64::round [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:376:5+266 +procedure {:timeLimit 80} $1_fixed_point64_round$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:376:5+1 + assume {:print "$at(154,14145,14146)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:376:5+1 + assume {:print "$track_local(36,18,0):", $t0} $t0 == $t0; + + // $t4 := opaque begin: fixed_point64::floor($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:27+11 + assume {:print "$at(154,14216,14227)"} true; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:27+11 + assume $IsValid'u128'($t4); + + // assume Eq($t4, fixed_point64::spec_floor($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:27+11 + assume $IsEqual'u128'($t4, $1_fixed_point64_spec_floor($t0)); + + // $t4 := opaque end: fixed_point64::floor($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:27+11 + + // $t5 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:42+2 + $t5 := 64; + assume $IsValid'u8'($t5); + + // $t6 := <<($t4, $t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:39+2 + call $t6 := $ShlU128($t4, $t5); + if ($abort_flag) { + assume {:print "$at(154,14228,14230)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,18):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[floored_num]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:377:13+11 + assume {:print "$track_local(36,18,3):", $t6} $t6 == $t6; + + // $t8 := 9223372036854775808 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:378:38+15 + assume {:print "$at(154,14272,14287)"} true; + $t8 := 9223372036854775808; + assume $IsValid'u128'($t8); + + // $t9 := +($t6, $t8) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:378:36+1 + call $t9 := $AddU128($t6, $t8); + if ($abort_flag) { + assume {:print "$at(154,14270,14271)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,18):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[boundary]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:378:13+8 + assume {:print "$track_local(36,18,2):", $t9} $t9 == $t9; + + // $t10 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:13+10 + assume {:print "$at(154,14301,14311)"} true; + $t10 := $t0->$value; + + // $t11 := <($t10, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:24+1 + call $t11 := $Lt($t10, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:9+108 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:380:13+11 + assume {:print "$at(154,14338,14349)"} true; +L1: + + // $t12 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:380:28+2 + assume {:print "$at(154,14353,14355)"} true; + $t12 := 64; + assume $IsValid'u8'($t12); + + // $t1 := >>($t6, $t12) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:380:25+2 + call $t1 := $ShrU128($t6, $t12); + if ($abort_flag) { + assume {:print "$at(154,14350,14352)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(36,18):", $t7} $t7 == $t7; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:9+108 + assume {:print "$at(154,14297,14405)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:382:18+4 + assume {:print "$at(154,14390,14394)"} true; +L0: + + // $t1 := opaque begin: fixed_point64::ceil($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:382:13+10 + assume {:print "$at(154,14385,14395)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:382:13+10 + assume $IsValid'u128'($t1); + + // assume Eq($t1, fixed_point64::spec_ceil($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:382:13+10 + assume $IsEqual'u128'($t1, $1_fixed_point64_spec_ceil($t0)); + + // $t1 := opaque end: fixed_point64::ceil($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:382:13+10 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:9+108 + assume {:print "$at(154,14297,14405)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:379:9+108 + assume {:print "$at(154,14297,14405)"} true; + assume {:print "$track_return(36,18,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:384:5+1 + assume {:print "$at(154,14410,14411)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:387:9+16 + assume {:print "$at(154,14460,14476)"} true; + assert {:msg "assert_failed(154,14460,14476): function does not abort under this condition"} + !false; + + // assert Eq($t1, fixed_point64::spec_round($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:388:9+35 + assume {:print "$at(154,14485,14520)"} true; + assert {:msg "assert_failed(154,14485,14520): post-condition does not hold"} + $IsEqual'u128'($t1, $1_fixed_point64_spec_round($t0)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:388:9+35 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:384:5+1 + assume {:print "$at(154,14410,14411)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:385:5+110 + assume {:print "$at(154,14416,14526)"} true; + assert {:msg "assert_failed(154,14416,14526): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/fixed_point64.move:385:5+110 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/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 * multiplier->$value), 32) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:86:10+101 +function {:inline} $1_fixed_point32_spec_divide_u64(val: int, divisor: $1_fixed_point32_FixedPoint32): int { + ($shl(val, 32) div divisor->$value) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:130:10+154 +function {:inline} $1_fixed_point32_spec_create_from_rational(numerator: int, denominator: int): $1_fixed_point32_FixedPoint32 { + $1_fixed_point32_FixedPoint32(($shl(numerator, 64) div $shl(denominator, 32))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:169:10+174 +function {:inline} $1_fixed_point32_spec_min(num1: $1_fixed_point32_FixedPoint32, num2: $1_fixed_point32_FixedPoint32): $1_fixed_point32_FixedPoint32 { + (if ((num1->$value < num2->$value)) then (num1) else (num2)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:190:10+174 +function {:inline} $1_fixed_point32_spec_max(num1: $1_fixed_point32_FixedPoint32, num2: $1_fixed_point32_FixedPoint32): $1_fixed_point32_FixedPoint32 { + (if ((num1->$value > num2->$value)) then (num1) else (num2)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:214:10+96 +function {:inline} $1_fixed_point32_spec_create_from_u64(val: int): $1_fixed_point32_FixedPoint32 { + $1_fixed_point32_FixedPoint32($shl(val, 32)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:227:10+227 +function {:inline} $1_fixed_point32_spec_floor(self: $1_fixed_point32_FixedPoint32): int { + (var fractional := (self->$value mod $shlU256(1, 32)); (if ($IsEqual'num'(fractional, 0)) then ($shr(self->$value, 32)) else ($shr((self->$value - fractional), 32)))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:251:10+259 +function {:inline} $1_fixed_point32_spec_ceil(self: $1_fixed_point32_FixedPoint32): int { + (var fractional := (self->$value mod $shlU256(1, 32)); (var one := $shlU256(1, 32); (if ($IsEqual'num'(fractional, 0)) then ($shr(self->$value, 32)) else ($shr(((self->$value - fractional) + one), 32))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:277:10+319 +function {:inline} $1_fixed_point32_spec_round(self: $1_fixed_point32_FixedPoint32): int { + (var fractional := (self->$value mod $shlU256(1, 32)); (var boundary := ($shlU256(1, 32) div 2); (var one := $shlU256(1, 32); (if ((fractional < boundary)) then ($shr((self->$value - fractional), 32)) else ($shr(((self->$value - fractional) + one), 32)))))) +} + +// struct fixed_point32::FixedPoint32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:15:5+56 +datatype $1_fixed_point32_FixedPoint32 { + $1_fixed_point32_FixedPoint32($value: int) +} +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'(s->$value) +} +function {:inline} $IsEqual'$1_fixed_point32_FixedPoint32'(s1: $1_fixed_point32_FixedPoint32, s2: $1_fixed_point32_FixedPoint32): bool { + s1 == s2 +} + +// fun fixed_point32::create_from_rational [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:100:5+860 +procedure {:timeLimit 80} $1_fixed_point32_create_from_rational$verify(_$t0: int, _$t1: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: 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: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $t1: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:100:5+1 + assume {:print "$at(9,4641,4642)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:100:5+1 + assume $IsValid'u64'($t1); + + // assume Identical($t6, Shl(Cast($t0), 64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:123:9+48 + assume {:print "$at(9,5787,5835)"} true; + assume ($t6 == $shlU128($t0, 64)); + + // assume Identical($t7, Shl(Cast($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:124:9+53 + assume {:print "$at(9,5844,5897)"} true; + assume ($t7 == $shlU128($t1, 32)); + + // assume Identical($t8, Div($t6, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:125:9+53 + assume {:print "$at(9,5906,5959)"} true; + assume ($t8 == ($t6 div $t7)); + + // trace_local[numerator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:100:5+1 + assume {:print "$at(9,4641,4642)"} true; + assume {:print "$track_local(37,1,0):", $t0} $t0 == $t0; + + // trace_local[denominator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:100:5+1 + assume {:print "$track_local(37,1,1):", $t1} $t1 == $t1; + + // $t9 := (u128)($t0) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:105:32+19 + assume {:print "$at(9,4989,5008)"} true; + call $t9 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(9,4989,5008)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // $t11 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:105:55+2 + $t11 := 64; + assume $IsValid'u8'($t11); + + // $t12 := <<($t9, $t11) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:105:52+2 + call $t12 := $ShlU128($t9, $t11); + if ($abort_flag) { + assume {:print "$at(9,5009,5011)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[scaled_numerator]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:105:13+16 + assume {:print "$track_local(37,1,5):", $t12} $t12 == $t12; + + // $t13 := (u128)($t1) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:106:34+21 + assume {:print "$at(9,5049,5070)"} true; + call $t13 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(9,5049,5070)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // $t14 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:106:59+2 + $t14 := 32; + assume $IsValid'u8'($t14); + + // $t15 := <<($t13, $t14) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:106:56+2 + call $t15 := $ShlU128($t13, $t14); + if ($abort_flag) { + assume {:print "$at(9,5071,5073)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[scaled_denominator]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:106:13+18 + assume {:print "$track_local(37,1,4):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:39+1 + assume {:print "$at(9,5116,5117)"} true; + $t16 := 0; + assume $IsValid'u128'($t16); + + // $t17 := !=($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:36+2 + $t17 := !$IsEqual'u128'($t15, $t16); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 + assume {:print "$at(9,5086,5132)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:42+12 +L0: + + // $t18 := 65537 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:42+12 + assume {:print "$at(9,5119,5131)"} true; + $t18 := 65537; + assume $IsValid'u64'($t18); + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 + assume {:print "$at(9,5086,5132)"} true; + assume {:print "$track_abort(37,1):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 + $t10 := $t18; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:107:9+46 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:108:24+16 + assume {:print "$at(9,5157,5173)"} true; +L2: + + // $t19 := /($t12, $t15) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:108:41+1 + assume {:print "$at(9,5174,5175)"} true; + call $t19 := $Div($t12, $t15); + if ($abort_flag) { + assume {:print "$at(9,5174,5175)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[quotient]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:108:13+8 + assume {:print "$track_local(37,1,3):", $t19} $t19 == $t19; + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:29+1 + assume {:print "$at(9,5224,5225)"} true; + $t20 := 0; + assume $IsValid'u128'($t20); + + // $t21 := !=($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:26+2 + $t21 := !$IsEqual'u128'($t19, $t20); + + // if ($t21) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 + if ($t21) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 +L4: + + // $t22 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 + assume {:print "$at(9,5212,5243)"} true; + $t22 := true; + assume $IsValid'bool'($t22); + + // $t2 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 + $t2 := $t22; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:34+9 +L3: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:47+1 + assume {:print "$at(9,5242,5243)"} true; + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t2 := ==($t0, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:44+2 + $t2 := $IsEqual'u64'($t0, $t23); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:17+31 +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 + assume {:print "$at(9,5204,5265)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 + assume {:print "$at(9,5204,5265)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:50+19 +L6: + + // $t24 := 131077 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:50+19 + assume {:print "$at(9,5245,5264)"} true; + $t24 := 131077; + assume $IsValid'u64'($t24); + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 + assume {:print "$at(9,5204,5265)"} true; + assume {:print "$track_abort(37,1):", $t24} $t24 == $t24; + + // $t10 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 + $t10 := $t24; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:109:9+61 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:17+8 + assume {:print "$at(9,5403,5411)"} true; +L8: + + // $t25 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:29+7 + assume {:print "$at(9,5415,5422)"} true; + $t25 := 18446744073709551615; + assume $IsValid'u128'($t25); + + // $t26 := <=($t19, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:26+2 + call $t26 := $Le($t19, $t25); + + // if ($t26) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 + if ($t26) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 + assume {:print "$at(9,5395,5444)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:38+19 +L9: + + // $t27 := 131077 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:38+19 + assume {:print "$at(9,5424,5443)"} true; + $t27 := 131077; + assume $IsValid'u64'($t27); + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 + assume {:print "$at(9,5395,5444)"} true; + assume {:print "$track_abort(37,1):", $t27} $t27 == $t27; + + // $t10 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 + $t10 := $t27; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:112:9+49 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:113:32+8 + assume {:print "$at(9,5477,5485)"} true; +L11: + + // $t28 := (u64)($t19) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:113:31+17 + assume {:print "$at(9,5476,5493)"} true; + call $t28 := $CastU64($t19); + if ($abort_flag) { + assume {:print "$at(9,5476,5493)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(37,1):", $t10} $t10 == $t10; + goto L13; + } + + // $t29 := pack fixed_point32::FixedPoint32($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:113:9+41 + $t29 := $1_fixed_point32_FixedPoint32($t28); + + // trace_return[0]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:113:9+41 + assume {:print "$track_return(37,1,0):", $t29} $t29 == $t29; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:114:5+1 + assume {:print "$at(9,5500,5501)"} true; +L12: + + // assert Not(Eq($t7, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:126:9+52 + assume {:print "$at(9,5968,6020)"} true; + assert {:msg "assert_failed(9,5968,6020): function does not abort under this condition"} + !$IsEqual'num'($t7, 0); + + // assert Not(And(Eq($t8, 0), Neq($t6, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:127:9+74 + assume {:print "$at(9,6029,6103)"} true; + assert {:msg "assert_failed(9,6029,6103): function does not abort under this condition"} + !($IsEqual'num'($t8, 0) && !$IsEqual'num'($t6, 0)); + + // assert Not(Gt($t8, 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:128:9+54 + assume {:print "$at(9,6112,6166)"} true; + assert {:msg "assert_failed(9,6112,6166): function does not abort under this condition"} + !($t8 > 18446744073709551615); + + // assert Eq($t29, fixed_point32::spec_create_from_rational($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:118:9+68 + assume {:print "$at(9,5609,5677)"} true; + assert {:msg "assert_failed(9,5609,5677): post-condition does not hold"} + $IsEqual'$1_fixed_point32_FixedPoint32'($t29, $1_fixed_point32_spec_create_from_rational($t0, $t1)); + + // return $t29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:118:9+68 + $ret0 := $t29; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:114:5+1 + assume {:print "$at(9,5500,5501)"} true; +L13: + + // assert Or(Or(Eq($t7, 0), And(Eq($t8, 0), Neq($t6, 0))), Gt($t8, 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:115:5+177 + assume {:print "$at(9,5506,5683)"} true; + assert {:msg "assert_failed(9,5506,5683): abort not covered by any of the `aborts_if` clauses"} + (($IsEqual'num'($t7, 0) || ($IsEqual'num'($t8, 0) && !$IsEqual'num'($t6, 0))) || ($t8 > 18446744073709551615)); + + // assert Or(Or(And(Eq($t7, 0), Eq(65537, $t10)), And(And(Eq($t8, 0), Neq($t6, 0)), Eq(131077, $t10))), And(Gt($t8, 18446744073709551615), Eq(131077, $t10))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:115:5+177 + assert {:msg "assert_failed(9,5506,5683): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ((($IsEqual'num'($t7, 0) && $IsEqual'num'(65537, $t10)) || (($IsEqual'num'($t8, 0) && !$IsEqual'num'($t6, 0)) && $IsEqual'num'(131077, $t10))) || (($t8 > 18446744073709551615) && $IsEqual'num'(131077, $t10))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:115:5+177 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun fixed_point32::create_from_raw_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:135:5+97 +procedure {:timeLimit 80} $1_fixed_point32_create_from_raw_value$verify(_$t0: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:135:5+1 + assume {:print "$at(9,6394,6395)"} true; + assume $IsValid'u64'($t0); + + // trace_local[value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:135:5+1 + assume {:print "$track_local(37,2,0):", $t0} $t0 == $t0; + + // $t1 := pack fixed_point32::FixedPoint32($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:136:9+22 + assume {:print "$at(9,6463,6485)"} true; + $t1 := $1_fixed_point32_FixedPoint32($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:136:9+22 + assume {:print "$track_return(37,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:137:5+1 + assume {:print "$at(9,6490,6491)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:140:9+16 + assume {:print "$at(9,6556,6572)"} true; + assert {:msg "assert_failed(9,6556,6572): function does not abort under this condition"} + !false; + + // assert Eq(select fixed_point32::FixedPoint32.value($t1), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:141:9+30 + assume {:print "$at(9,6581,6611)"} true; + assert {:msg "assert_failed(9,6581,6611): post-condition does not hold"} + $IsEqual'u64'($t1->$value, $t0); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:141:9+30 + $ret0 := $t1; + return; + +} + +// fun fixed_point32::floor [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:219:5+74 +procedure {:timeLimit 80} $1_fixed_point32_floor$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:219:5+1 + assume {:print "$at(9,8837,8838)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:219:5+1 + assume {:print "$track_local(37,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:220:9+10 + assume {:print "$at(9,8889,8899)"} true; + $t1 := $t0->$value; + + // $t2 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:220:23+2 + $t2 := 32; + assume $IsValid'u8'($t2); + + // $t3 := >>($t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:220:20+2 + call $t3 := $ShrU64($t1, $t2); + if ($abort_flag) { + assume {:print "$at(9,8900,8902)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:220:9+16 + assume {:print "$track_return(37,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:221:5+1 + assume {:print "$at(9,8910,8911)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:224:9+16 + assume {:print "$at(9,8960,8976)"} true; + assert {:msg "assert_failed(9,8960,8976): function does not abort under this condition"} + !false; + + // assert Eq($t3, fixed_point32::spec_floor($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:225:9+35 + assume {:print "$at(9,8985,9020)"} true; + assert {:msg "assert_failed(9,8985,9020): post-condition does not hold"} + $IsEqual'u64'($t3, $1_fixed_point32_spec_floor($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:225:9+35 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:221:5+1 + assume {:print "$at(9,8910,8911)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:222:5+110 + assume {:print "$at(9,8916,9026)"} true; + assert {:msg "assert_failed(9,8916,9026): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:222:5+110 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fixed_point32::get_raw_value [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:147:5+76 +procedure {:inline 1} $1_fixed_point32_get_raw_value(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:147:5+1 + assume {:print "$at(9,6803,6804)"} true; + assume {:print "$track_local(37,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:148:9+10 + assume {:print "$at(9,6863,6873)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:148:9+10 + assume {:print "$track_return(37,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:149:5+1 + assume {:print "$at(9,6878,6879)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:149:5+1 + assume {:print "$at(9,6878,6879)"} true; + $ret0 := $t1; + return; + +} + +// fun fixed_point32::get_raw_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:147:5+76 +procedure {:timeLimit 80} $1_fixed_point32_get_raw_value$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:147:5+1 + assume {:print "$at(9,6803,6804)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:147:5+1 + assume {:print "$track_local(37,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:148:9+10 + assume {:print "$at(9,6863,6873)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:148:9+10 + assume {:print "$track_return(37,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:149:5+1 + assume {:print "$at(9,6878,6879)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:149:5+1 + assume {:print "$at(9,6878,6879)"} true; + assert {:msg "assert_failed(9,6878,6879): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:149:5+1 + $ret0 := $t1; + return; + +} + +// fun fixed_point32::is_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:152:5+76 +procedure {:timeLimit 80} $1_fixed_point32_is_zero$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:152:5+1 + assume {:print "$at(9,6928,6929)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:152:5+1 + assume {:print "$track_local(37,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:153:9+10 + assume {:print "$at(9,6983,6993)"} true; + $t1 := $t0->$value; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:153:23+1 + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:153:20+2 + $t3 := $IsEqual'u64'($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:153:9+15 + assume {:print "$track_return(37,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:154:5+1 + assume {:print "$at(9,7003,7004)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:154:5+1 + assume {:print "$at(9,7003,7004)"} true; + assert {:msg "assert_failed(9,7003,7004): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:154:5+1 + $ret0 := $t3; + return; + +} + +// fun fixed_point32::max [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:178:5+176 +procedure {:timeLimit 80} $1_fixed_point32_max$verify(_$t0: $1_fixed_point32_FixedPoint32, _$t1: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t2: $1_fixed_point32_FixedPoint32; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t0: $1_fixed_point32_FixedPoint32; + var $t1: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:178:5+1 + assume {:print "$at(9,7614,7615)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:178:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t1); + + // trace_local[num1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:178:5+1 + assume {:print "$track_local(37,8,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:178:5+1 + assume {:print "$track_local(37,8,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:13+10 + assume {:print "$at(9,7697,7707)"} true; + $t3 := $t0->$value; + + // $t4 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:26+10 + $t4 := $t1->$value; + + // $t5 := >($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:24+1 + call $t5 := $Gt($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:180:13+4 + assume {:print "$at(9,7736,7740)"} true; +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 + assume {:print "$at(9,7693,7784)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:182:13+4 + assume {:print "$at(9,7770,7774)"} true; +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 + assume {:print "$at(9,7693,7784)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:179:9+91 + assume {:print "$at(9,7693,7784)"} true; + assume {:print "$track_return(37,8,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:184:5+1 + assume {:print "$at(9,7789,7790)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:187:9+16 + assume {:print "$at(9,7837,7853)"} true; + assert {:msg "assert_failed(9,7837,7853): function does not abort under this condition"} + !false; + + // assert Eq($t2, fixed_point32::spec_max($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:188:9+39 + assume {:print "$at(9,7862,7901)"} true; + assert {:msg "assert_failed(9,7862,7901): post-condition does not hold"} + $IsEqual'$1_fixed_point32_FixedPoint32'($t2, $1_fixed_point32_spec_max($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:188:9+39 + $ret0 := $t2; + return; + +} + +// fun fixed_point32::min [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:157:5+176 +procedure {:timeLimit 80} $1_fixed_point32_min$verify(_$t0: $1_fixed_point32_FixedPoint32, _$t1: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t2: $1_fixed_point32_FixedPoint32; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t0: $1_fixed_point32_FixedPoint32; + var $t1: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:157:5+1 + assume {:print "$at(9,7071,7072)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:157:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t1); + + // trace_local[num1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:157:5+1 + assume {:print "$track_local(37,9,0):", $t0} $t0 == $t0; + + // trace_local[num2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:157:5+1 + assume {:print "$track_local(37,9,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:13+10 + assume {:print "$at(9,7154,7164)"} true; + $t3 := $t0->$value; + + // $t4 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:26+10 + $t4 := $t1->$value; + + // $t5 := <($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:24+1 + call $t5 := $Lt($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:159:13+4 + assume {:print "$at(9,7193,7197)"} true; +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 + assume {:print "$at(9,7150,7241)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:161:13+4 + assume {:print "$at(9,7227,7231)"} true; +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 + assume {:print "$at(9,7150,7241)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:158:9+91 + assume {:print "$at(9,7150,7241)"} true; + assume {:print "$track_return(37,9,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:163:5+1 + assume {:print "$at(9,7246,7247)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:166:9+16 + assume {:print "$at(9,7294,7310)"} true; + assert {:msg "assert_failed(9,7294,7310): function does not abort under this condition"} + !false; + + // assert Eq($t2, fixed_point32::spec_min($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:167:9+39 + assume {:print "$at(9,7319,7358)"} true; + assert {:msg "assert_failed(9,7319,7358): post-condition does not hold"} + $IsEqual'$1_fixed_point32_FixedPoint32'($t2, $1_fixed_point32_spec_min($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:167:9+39 + $ret0 := $t2; + return; + +} + +// fun fixed_point32::create_from_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:199:5+200 +procedure {:timeLimit 80} $1_fixed_point32_create_from_u64$verify(_$t0: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:199:5+1 + assume {:print "$at(9,8149,8150)"} true; + assume $IsValid'u64'($t0); + + // assume Identical($t2, Shl(Cast($t0), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:211:9+39 + assume {:print "$at(9,8564,8603)"} true; + assume ($t2 == $shlU128($t0, 32)); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:199:5+1 + assume {:print "$at(9,8149,8150)"} true; + assume {:print "$track_local(37,3,0):", $t0} $t0 == $t0; + + // $t3 := (u128)($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:200:21+13 + assume {:print "$at(9,8222,8235)"} true; + call $t3 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(9,8222,8235)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:200:38+2 + $t5 := 32; + assume $IsValid'u8'($t5); + + // $t6 := <<($t3, $t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:200:35+2 + call $t6 := $ShlU128($t3, $t5); + if ($abort_flag) { + assume {:print "$at(9,8236,8238)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[value]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:200:13+5 + assume {:print "$track_local(37,3,1):", $t6} $t6 == $t6; + + // $t7 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:26+7 + assume {:print "$at(9,8268,8275)"} true; + $t7 := 18446744073709551615; + assume $IsValid'u128'($t7); + + // $t8 := <=($t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:23+2 + call $t8 := $Le($t6, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 + assume {:print "$at(9,8251,8297)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:35+19 +L0: + + // $t9 := 131077 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:35+19 + assume {:print "$at(9,8277,8296)"} true; + $t9 := 131077; + assume $IsValid'u64'($t9); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 + assume {:print "$at(9,8251,8297)"} true; + assume {:print "$track_abort(37,3):", $t9} $t9 == $t9; + + // $t4 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 + $t4 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:201:9+46 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:202:31+5 + assume {:print "$at(9,8329,8334)"} true; +L2: + + // $t10 := (u64)($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:202:30+14 + assume {:print "$at(9,8328,8342)"} true; + call $t10 := $CastU64($t6); + if ($abort_flag) { + assume {:print "$at(9,8328,8342)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t11 := pack fixed_point32::FixedPoint32($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:202:9+36 + $t11 := $1_fixed_point32_FixedPoint32($t10); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:202:9+36 + assume {:print "$track_return(37,3,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:203:5+1 + assume {:print "$at(9,8348,8349)"} true; +L3: + + // assert Not(Gt($t2, 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:212:9+33 + assume {:print "$at(9,8612,8645)"} true; + assert {:msg "assert_failed(9,8612,8645): function does not abort under this condition"} + !($t2 > 18446744073709551615); + + // assert Eq($t11, fixed_point32::spec_create_from_u64($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:207:9+44 + assume {:print "$at(9,8447,8491)"} true; + assert {:msg "assert_failed(9,8447,8491): post-condition does not hold"} + $IsEqual'$1_fixed_point32_FixedPoint32'($t11, $1_fixed_point32_spec_create_from_u64($t0)); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:207:9+44 + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:203:5+1 + assume {:print "$at(9,8348,8349)"} true; +L4: + + // assert Gt($t2, 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:204:5+143 + assume {:print "$at(9,8354,8497)"} true; + assert {:msg "assert_failed(9,8354,8497): abort not covered by any of the `aborts_if` clauses"} + ($t2 > 18446744073709551615); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:204:5+143 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fixed_point32::divide_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:62:5+623 +procedure {:timeLimit 80} $1_fixed_point32_divide_u64$verify(_$t0: int, _$t1: $1_fixed_point32_FixedPoint32) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + 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: bool; + var $t16: int; + var $t17: int; + var $t0: int; + var $t1: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:62:5+1 + assume {:print "$at(9,2786,2787)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:62:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t1); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:62:5+1 + assume {:print "$track_local(37,4,0):", $t0} $t0 == $t0; + + // trace_local[divisor]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:62:5+1 + assume {:print "$track_local(37,4,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:17+13 + assume {:print "$at(9,2903,2916)"} true; + $t3 := $t1->$value; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:34+1 + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := !=($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:31+2 + $t5 := !$IsEqual'u64'($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 + assume {:print "$at(9,2895,2941)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:37+17 +L0: + + // $t6 := 65540 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:37+17 + assume {:print "$at(9,2923,2940)"} true; + $t6 := 65540; + assume $IsValid'u64'($t6); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 + assume {:print "$at(9,2895,2941)"} true; + assume {:print "$track_abort(37,4):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:64:9+46 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:67:29+3 + assume {:print "$at(9,3087,3090)"} true; +L2: + + // $t8 := (u128)($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:67:28+13 + assume {:print "$at(9,3086,3099)"} true; + call $t8 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(9,3086,3099)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(37,4):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:67:45+2 + $t9 := 32; + assume $IsValid'u8'($t9); + + // $t10 := <<($t8, $t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:67:42+2 + call $t10 := $ShlU128($t8, $t9); + if ($abort_flag) { + assume {:print "$at(9,3100,3102)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(37,4):", $t7} $t7 == $t7; + goto L7; + } + + // $t11 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:68:40+13 + assume {:print "$at(9,3146,3159)"} true; + $t11 := $t1->$value; + + // $t12 := (u128)($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:68:39+23 + call $t12 := $CastU128($t11); + if ($abort_flag) { + assume {:print "$at(9,3145,3168)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(37,4):", $t7} $t7 == $t7; + goto L7; + } + + // $t13 := /($t10, $t12) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:68:37+1 + call $t13 := $Div($t10, $t12); + if ($abort_flag) { + assume {:print "$at(9,3143,3144)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(37,4):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[quotient]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:68:13+8 + assume {:print "$track_local(37,4,2):", $t13} $t13 == $t13; + + // $t14 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:29+7 + assume {:print "$at(9,3247,3254)"} true; + $t14 := 18446744073709551615; + assume $IsValid'u128'($t14); + + // $t15 := <=($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:26+2 + call $t15 := $Le($t13, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 + assume {:print "$at(9,3227,3266)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:38+9 +L3: + + // $t16 := 131074 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:38+9 + assume {:print "$at(9,3256,3265)"} true; + $t16 := 131074; + assume $IsValid'u64'($t16); + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 + assume {:print "$at(9,3227,3266)"} true; + assume {:print "$track_abort(37,4):", $t16} $t16 == $t16; + + // $t7 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 + $t7 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:70:9+39 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:73:10+8 + assume {:print "$at(9,3387,3395)"} true; +L5: + + // $t17 := (u64)($t13) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:73:9+17 + assume {:print "$at(9,3386,3403)"} true; + call $t17 := $CastU64($t13); + if ($abort_flag) { + assume {:print "$at(9,3386,3403)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(37,4):", $t7} $t7 == $t7; + goto L7; + } + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:73:9+17 + assume {:print "$track_return(37,4,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:74:5+1 + assume {:print "$at(9,3408,3409)"} true; +L6: + + // assert Not(Eq(select fixed_point32::FixedPoint32.value($t1), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:83:9+52 + assume {:print "$at(9,3640,3692)"} true; + assert {:msg "assert_failed(9,3640,3692): function does not abort under this condition"} + !$IsEqual'u64'($t1->$value, 0); + + // assert Not(Gt(fixed_point32::spec_divide_u64[]($t0, $t1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:84:9+65 + assume {:print "$at(9,3701,3766)"} true; + assert {:msg "assert_failed(9,3701,3766): function does not abort under this condition"} + !($1_fixed_point32_spec_divide_u64($t0, $t1) > 18446744073709551615); + + // assert Eq($t17, fixed_point32::spec_divide_u64($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:78:9+48 + assume {:print "$at(9,3495,3543)"} true; + assert {:msg "assert_failed(9,3495,3543): post-condition does not hold"} + $IsEqual'u64'($t17, $1_fixed_point32_spec_divide_u64($t0, $t1)); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:78:9+48 + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:74:5+1 + assume {:print "$at(9,3408,3409)"} true; +L7: + + // assert Or(Eq(select fixed_point32::FixedPoint32.value($t1), 0), Gt(fixed_point32::spec_divide_u64[]($t0, $t1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:75:5+135 + assume {:print "$at(9,3414,3549)"} true; + assert {:msg "assert_failed(9,3414,3549): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'u64'($t1->$value, 0) || ($1_fixed_point32_spec_divide_u64($t0, $t1) > 18446744073709551615)); + + // assert Or(And(Eq(select fixed_point32::FixedPoint32.value($t1), 0), Eq(65540, $t7)), And(Gt(fixed_point32::spec_divide_u64[]($t0, $t1), 18446744073709551615), Eq(131074, $t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:75:5+135 + assert {:msg "assert_failed(9,3414,3549): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($IsEqual'u64'($t1->$value, 0) && $IsEqual'num'(65540, $t7)) || (($1_fixed_point32_spec_divide_u64($t0, $t1) > 18446744073709551615) && $IsEqual'num'(131074, $t7))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:75:5+135 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun fixed_point32::multiply_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:33:5+640 +procedure {:timeLimit 80} $1_fixed_point32_multiply_u64$verify(_$t0: int, _$t1: $1_fixed_point32_FixedPoint32) 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 $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t0: int; + var $t1: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:33:5+1 + assume {:print "$at(9,1507,1508)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:33:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t1); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:33:5+1 + assume {:print "$track_local(37,10,0):", $t0} $t0 == $t0; + + // trace_local[multiplier]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:33:5+1 + assume {:print "$track_local(37,10,1):", $t1} $t1 == $t1; + + // $t3 := (u128)($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:37:32+13 + assume {:print "$at(9,1791,1804)"} true; + call $t3 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(9,1791,1804)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,10):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := get_field.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:37:49+16 + $t5 := $t1->$value; + + // $t6 := (u128)($t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:37:48+26 + call $t6 := $CastU128($t5); + if ($abort_flag) { + assume {:print "$at(9,1807,1833)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,10):", $t4} $t4 == $t4; + goto L4; + } + + // $t7 := *($t3, $t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:37:46+1 + call $t7 := $MulU128($t3, $t6); + if ($abort_flag) { + assume {:print "$at(9,1805,1806)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,10):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:40:43+2 + assume {:print "$at(9,2010,2012)"} true; + $t8 := 32; + assume $IsValid'u8'($t8); + + // $t9 := >>($t7, $t8) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:40:40+2 + call $t9 := $ShrU128($t7, $t8); + if ($abort_flag) { + assume {:print "$at(9,2007,2009)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,10):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[product]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:40:13+7 + assume {:print "$track_local(37,10,2):", $t9} $t9 == $t9; + + // $t10 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:28+7 + assume {:print "$at(9,2090,2097)"} true; + $t10 := 18446744073709551615; + assume $IsValid'u128'($t10); + + // $t11 := <=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:25+2 + call $t11 := $Le($t9, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 + assume {:print "$at(9,2071,2115)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:37+15 +L0: + + // $t12 := 131075 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:37+15 + assume {:print "$at(9,2099,2114)"} true; + $t12 := 131075; + assume $IsValid'u64'($t12); + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 + assume {:print "$at(9,2071,2115)"} true; + assume {:print "$track_abort(37,10):", $t12} $t12 == $t12; + + // $t4 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 + $t4 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:42:9+44 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:43:10+7 + assume {:print "$at(9,2126,2133)"} true; +L2: + + // $t13 := (u64)($t9) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:43:9+16 + assume {:print "$at(9,2125,2141)"} true; + call $t13 := $CastU64($t9); + if ($abort_flag) { + assume {:print "$at(9,2125,2141)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(37,10):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:43:9+16 + assume {:print "$track_return(37,10,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:44:5+1 + assume {:print "$at(9,2146,2147)"} true; +L3: + + // assert Not(Gt(fixed_point32::spec_multiply_u64[]($t0, $t1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:53:9+76 + assume {:print "$at(9,2392,2468)"} true; + assert {:msg "assert_failed(9,2392,2468): function does not abort under this condition"} + !($1_fixed_point32_spec_multiply_u64($t0, $t1) > 18446744073709551615); + + // assert Eq($t13, fixed_point32::spec_multiply_u64($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:48:9+53 + assume {:print "$at(9,2237,2290)"} true; + assert {:msg "assert_failed(9,2237,2290): post-condition does not hold"} + $IsEqual'u64'($t13, $1_fixed_point32_spec_multiply_u64($t0, $t1)); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:48:9+53 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:44:5+1 + assume {:print "$at(9,2146,2147)"} true; +L4: + + // assert Gt(fixed_point32::spec_multiply_u64[]($t0, $t1), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:45:5+144 + assume {:print "$at(9,2152,2296)"} true; + assert {:msg "assert_failed(9,2152,2296): abort not covered by any of the `aborts_if` clauses"} + ($1_fixed_point32_spec_multiply_u64($t0, $t1) > 18446744073709551615); + + // assert And(Gt(fixed_point32::spec_multiply_u64[]($t0, $t1), 18446744073709551615), Eq(131075, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:45:5+144 + assert {:msg "assert_failed(9,2152,2296): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + (($1_fixed_point32_spec_multiply_u64($t0, $t1) > 18446744073709551615) && $IsEqual'num'(131075, $t4)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/fixed_point32.move:45:5+144 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// recursive spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:52:10+148 +function $1_math128_spec_pow(n: int, e: int): int { + (if ($IsEqual'u128'(e, 0)) then (1) else ((n * $1_math128_spec_pow(n, (e - 1))))) +} + +// fun math128::max [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+75 +procedure {:inline 1} $1_math128_max(_$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'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume {:print "$at(159,373,374)"} true; + assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume {:print "$track_local(38,5,1):", $t1} $t1 == $t1; + + // $t3 := >=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:15+2 + assume {:print "$at(159,428,430)"} true; + call $t3 := $Ge($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:21+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:28+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + assume {:print "$track_return(38,5,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:15:5+1 + assume {:print "$at(159,447,448)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:15:5+1 + assume {:print "$at(159,447,448)"} true; + $ret0 := $t2; + return; + +} + +// fun math128::max [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+75 +procedure {:timeLimit 80} $1_math128_max$verify(_$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'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume {:print "$at(159,373,374)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume $IsValid'u128'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume {:print "$track_local(38,5,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:13:5+1 + assume {:print "$track_local(38,5,1):", $t1} $t1 == $t1; + + // $t3 := >=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:15+2 + assume {:print "$at(159,428,430)"} true; + call $t3 := $Ge($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:21+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:28+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:14:9+20 + assume {:print "$at(159,422,442)"} true; + assume {:print "$track_return(38,5,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:15:5+1 + assume {:print "$at(159,447,448)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:4:9+16 + assume {:print "$at(160,77,93)"} true; + assert {:msg "assert_failed(160,77,93): function does not abort under this condition"} + !false; + + // assert Implies(Ge($t0, $t1), Eq($t2, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:5:9+31 + assume {:print "$at(160,102,133)"} true; + assert {:msg "assert_failed(160,102,133): post-condition does not hold"} + (($t0 >= $t1) ==> $IsEqual'u128'($t2, $t0)); + + // assert Implies(Lt($t0, $t1), Eq($t2, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:6:9+30 + assume {:print "$at(160,142,172)"} true; + assert {:msg "assert_failed(160,142,172): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u128'($t2, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:6:9+30 + $ret0 := $t2; + return; + +} + +// fun math128::min [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+74 +procedure {:inline 1} $1_math128_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'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume {:print "$at(159,498,499)"} true; + assume {:print "$track_local(38,6,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume {:print "$track_local(38,6,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:15+1 + assume {:print "$at(159,553,554)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:20+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:27+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + assume {:print "$track_return(38,6,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:20:5+1 + assume {:print "$at(159,571,572)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:20:5+1 + assume {:print "$at(159,571,572)"} true; + $ret0 := $t2; + return; + +} + +// fun math128::min [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+74 +procedure {:timeLimit 80} $1_math128_min$verify(_$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'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume {:print "$at(159,498,499)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume $IsValid'u128'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume {:print "$track_local(38,6,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:18:5+1 + assume {:print "$track_local(38,6,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:15+1 + assume {:print "$at(159,553,554)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:20+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:27+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:19:9+19 + assume {:print "$at(159,547,566)"} true; + assume {:print "$track_return(38,6,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:20:5+1 + assume {:print "$at(159,571,572)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:10:9+16 + assume {:print "$at(160,227,243)"} true; + assert {:msg "assert_failed(160,227,243): function does not abort under this condition"} + !false; + + // assert Implies(Lt($t0, $t1), Eq($t2, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:11:9+30 + assume {:print "$at(160,252,282)"} true; + assert {:msg "assert_failed(160,252,282): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u128'($t2, $t0)); + + // assert Implies(Ge($t0, $t1), Eq($t2, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:12:9+31 + assume {:print "$at(160,291,322)"} true; + assert {:msg "assert_failed(160,291,322): post-condition does not hold"} + (($t0 >= $t1) ==> $IsEqual'u128'($t2, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:12:9+31 + $ret0 := $t2; + return; + +} + +// fun math128::average [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:23:5+154 +procedure {:timeLimit 80} $1_math128_average$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: int; + var $t1: int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:23:5+1 + assume {:print "$at(159,613,614)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:23:5+1 + assume $IsValid'u128'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:23:5+1 + assume {:print "$track_local(38,0,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:23:5+1 + assume {:print "$track_local(38,0,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:24:15+1 + assume {:print "$at(159,672,673)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:24:9+95 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:25:13+1 + assume {:print "$at(159,691,692)"} true; +L1: + + // $t4 := -($t1, $t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:25:20+1 + assume {:print "$at(159,698,699)"} true; + call $t4 := $Sub($t1, $t0); + if ($abort_flag) { + assume {:print "$at(159,698,699)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:25:27+1 + $t6 := 2; + assume $IsValid'u128'($t6); + + // $t7 := /($t4, $t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:25:25+1 + call $t7 := $Div($t4, $t6); + if ($abort_flag) { + assume {:print "$at(159,703,704)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t2 := +($t0, $t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:25:15+1 + call $t2 := $AddU128($t0, $t7); + if ($abort_flag) { + assume {:print "$at(159,693,694)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:24:9+95 + assume {:print "$at(159,666,761)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:27:13+1 + assume {:print "$at(159,736,737)"} true; +L0: + + // $t8 := -($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:27:20+1 + assume {:print "$at(159,743,744)"} true; + call $t8 := $Sub($t0, $t1); + if ($abort_flag) { + assume {:print "$at(159,743,744)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t9 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:27:27+1 + $t9 := 2; + assume $IsValid'u128'($t9); + + // $t10 := /($t8, $t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:27:25+1 + call $t10 := $Div($t8, $t9); + if ($abort_flag) { + assume {:print "$at(159,748,749)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t2 := +($t1, $t10) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:27:15+1 + call $t2 := $AddU128($t1, $t10); + if ($abort_flag) { + assume {:print "$at(159,738,739)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(38,0):", $t5} $t5 == $t5; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:24:9+95 + assume {:print "$at(159,666,761)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:24:9+95 + assume {:print "$at(159,666,761)"} true; + assume {:print "$track_return(38,0,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:29:5+1 + assume {:print "$at(159,766,767)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:17:9+16 + assume {:print "$at(160,404,420)"} true; + assert {:msg "assert_failed(160,404,420): function does not abort under this condition"} + !false; + + // assert Eq($t2, Div(Add($t0, $t1), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:18:9+30 + assume {:print "$at(160,429,459)"} true; + assert {:msg "assert_failed(160,429,459): post-condition does not hold"} + $IsEqual'u128'($t2, (($t0 + $t1) div 2)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:18:9+30 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:29:5+1 + assume {:print "$at(159,766,767)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:15:5+131 + assume {:print "$at(160,334,465)"} true; + assert {:msg "assert_failed(160,334,465): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:15:5+131 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math128::clamp [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+99 +procedure {:timeLimit 80} $1_math128_clamp$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume {:print "$at(159,1754,1755)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume $IsValid'u128'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume $IsValid'u128'($t2); + + // assume Le($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:22:9+26 + assume {:print "$at(160,533,559)"} true; + assume ($t1 <= $t2); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume {:print "$at(159,1754,1755)"} true; + assume {:print "$track_local(38,1,0):", $t0} $t0 == $t0; + + // trace_local[lower]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume {:print "$track_local(38,1,1):", $t1} $t1 == $t1; + + // trace_local[upper]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:59:5+1 + assume {:print "$track_local(38,1,2):", $t2} $t2 == $t2; + + // $t3 := math128::max($t1, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:60:20+13 + assume {:print "$at(159,1833,1846)"} true; + call $t3 := $1_math128_max($t1, $t0); + if ($abort_flag) { + assume {:print "$at(159,1833,1846)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(38,1):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := math128::min($t2, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:60:9+25 + call $t5 := $1_math128_min($t2, $t3); + if ($abort_flag) { + assume {:print "$at(159,1822,1847)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(38,1):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:60:9+25 + assume {:print "$track_return(38,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:61:5+1 + assume {:print "$at(159,1852,1853)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:23:9+16 + assume {:print "$at(160,568,584)"} true; + assert {:msg "assert_failed(160,568,584): function does not abort under this condition"} + !false; + + // assert Implies(And(Le($t1, $t0), Le($t0, $t2)), Eq($t5, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:24:9+50 + assume {:print "$at(160,593,643)"} true; + assert {:msg "assert_failed(160,593,643): post-condition does not hold"} + ((($t1 <= $t0) && ($t0 <= $t2)) ==> $IsEqual'u128'($t5, $t0)); + + // assert Implies(Lt($t0, $t1), Eq($t5, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:25:9+40 + assume {:print "$at(160,652,692)"} true; + assert {:msg "assert_failed(160,652,692): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u128'($t5, $t1)); + + // assert Implies(Lt($t2, $t0), Eq($t5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:26:9+40 + assume {:print "$at(160,701,741)"} true; + assert {:msg "assert_failed(160,701,741): post-condition does not hold"} + (($t2 < $t0) ==> $IsEqual'u128'($t5, $t2)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:26:9+40 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:61:5+1 + assume {:print "$at(159,1852,1853)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:21:5+276 + assume {:print "$at(160,471,747)"} true; + assert {:msg "assert_failed(160,471,747): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:21:5+276 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun math128::floor_log2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:81:5+409 +procedure {:timeLimit 80} $1_math128_floor_log2$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t0: int; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:81:5+1 + assume {:print "$at(159,2275,2276)"} true; + assume $IsValid'u128'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:81:5+1 + assume {:print "$track_local(38,2,0):", $t0} $t0 == $t0; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:82:19+1 + assume {:print "$at(159,2330,2331)"} true; + $t3 := 0; + assume $IsValid'u8'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:82:13+3 + assume {:print "$track_local(38,2,2):", $t3} $t3 == $t3; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:22+1 + assume {:print "$at(159,2354,2355)"} true; + $t4 := 0; + assume $IsValid'u128'($t4); + + // $t5 := !=($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:19+2 + $t5 := !$IsEqual'u128'($t0, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 + assume {:print "$at(159,2341,2411)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:54+23 +L0: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:54+23 + assume {:print "$at(159,2386,2409)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:25+53 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(159,2357,2410)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(38,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 + assume {:print "$at(159,2341,2411)"} true; + assume {:print "$track_abort(38,2):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 + $t8 := $t7; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:83:9+70 + goto L11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:85:17+2 + assume {:print "$at(159,2497,2499)"} true; +L2: + + // $t9 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:85:17+2 + assume {:print "$at(159,2497,2499)"} true; + $t9 := 64; + assume $IsValid'u8'($t9); + + // trace_local[n]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:85:13+1 + assume {:print "$track_local(38,2,1):", $t9} $t9 == $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume {:print "$at(159,2516,2517)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume {:print "$at(159,2516,2517)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t2); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u128'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u128'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'bool'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u128'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume $IsValid'u8'($t18); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(38,2,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume {:print "$track_local(38,2,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume {:print "$track_local(38,2,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:16+1 + assume !$abort_flag; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:20+1 + $t10 := 0; + assume $IsValid'u8'($t10); + + // $t11 := >($t1, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:18+1 + call $t11 := $Gt($t1, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:9+156 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:86:9+156 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:87:17+1 + assume {:print "$at(159,2541,2542)"} true; +L5: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:87:23+1 + assume {:print "$at(159,2547,2548)"} true; + $t12 := 1; + assume $IsValid'u128'($t12); + + // $t13 := <<($t12, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:87:25+2 + call $t13 := $ShlU128($t12, $t1); + if ($abort_flag) { + assume {:print "$at(159,2549,2551)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(38,2):", $t8} $t8 == $t8; + goto L11; + } + + // $t14 := >=($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:87:19+2 + call $t14 := $Ge($t0, $t13); + + // if ($t14) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:87:13+93 + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:88:21+1 + assume {:print "$at(159,2578,2579)"} true; +L7: + + // $t15 := >>($t0, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:88:23+2 + assume {:print "$at(159,2580,2582)"} true; + call $t15 := $ShrU128($t0, $t1); + if ($abort_flag) { + assume {:print "$at(159,2580,2582)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(38,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[x]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:88:17+1 + assume {:print "$track_local(38,2,0):", $t15} $t15 == $t15; + + // $t16 := +($t2, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:89:27+1 + assume {:print "$at(159,2612,2613)"} true; + call $t16 := $AddU8($t2, $t1); + if ($abort_flag) { + assume {:print "$at(159,2612,2613)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(38,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[res]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:89:17+3 + assume {:print "$track_local(38,2,2):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:91:17+1 + assume {:print "$at(159,2648,2649)"} true; +L6: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:91:22+1 + assume {:print "$at(159,2653,2654)"} true; + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t1, $t17) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:91:19+2 + call $t18 := $ShrU8($t1, $t17); + if ($abort_flag) { + assume {:print "$at(159,2650,2652)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(38,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[n]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:91:13+1 + assume {:print "$track_local(38,2,1):", $t18} $t18 == $t18; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:91:23+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + assume {:print "$at(159,2675,2678)"} true; +L3: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + assume {:print "$at(159,2675,2678)"} true; + assume {:print "$track_return(38,2,0):", $t2} $t2 == $t2; + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + $t19 := $t2; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:93:9+3 + assume {:print "$at(159,2675,2678)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:94:5+1 + assume {:print "$at(159,2683,2684)"} true; +L10: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:94:5+1 + assume {:print "$at(159,2683,2684)"} true; + $ret0 := $t19; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:94:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:94:5+1 + assume {:print "$at(159,2683,2684)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun math128::log2 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:97:5+743 +procedure {:inline 1} $1_math128_log2(_$t0: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:97:5+1 + assume {:print "$at(159,2713,2714)"} true; + assume {:print "$track_local(38,3,0):", $t0} $t0 == $t0; + + // $t4 := opaque begin: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + + // assume Identical($t5, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($t5 == $IsEqual'u128'($t0, 0)); + + // if ($t5) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + if ($t5) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 +L13: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 +L12: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + assume $IsValid'u8'($t4); + + // assume Le(math128::spec_pow(2, $t4), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($1_math128_spec_pow(2, $t4) <= $t0); + + // assume Lt($t0, math128::spec_pow(2, Add($t4, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($t0 < $1_math128_spec_pow(2, ($t4 + 1))); + + // $t4 := opaque end: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + + // trace_local[integer_part]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:13+12 + assume {:print "$track_local(38,3,3):", $t4} $t4 == $t4; + + // $t7 := 4294967296 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:18+7 + assume {:print "$at(159,2865,2872)"} true; + $t7 := 4294967296; + assume $IsValid'u128'($t7); + + // $t8 := >=($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:15+2 + call $t8 := $Ge($t0, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:9+130 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:17+1 + assume {:print "$at(159,2892,2893)"} true; +L1: + + // $t9 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:38+2 + assume {:print "$at(159,2913,2915)"} true; + $t9 := 32; + assume $IsValid'u8'($t9); + + // $t10 := -($t4, $t9) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:36+1 + call $t10 := $Sub($t4, $t9); + if ($abort_flag) { + assume {:print "$at(159,2911,2912)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t11 := >>($t0, $t10) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:19+2 + call $t11 := $ShrU128($t0, $t10); + if ($abort_flag) { + assume {:print "$at(159,2894,2896)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:13+1 + assume {:print "$track_local(38,3,0):", $t11} $t11 == $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:41+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:17+1 + assume {:print "$at(159,2951,2952)"} true; +L0: + + // $t12 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:23+2 + assume {:print "$at(159,2957,2959)"} true; + $t12 := 32; + assume $IsValid'u8'($t12); + + // $t13 := -($t12, $t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:26+1 + call $t13 := $Sub($t12, $t4); + if ($abort_flag) { + assume {:print "$at(159,2960,2961)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t14 := <<($t0, $t13) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:19+2 + call $t14 := $ShlU128($t0, $t13); + if ($abort_flag) { + assume {:print "$at(159,2953,2955)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:13+1 + assume {:print "$track_local(38,3,0):", $t14} $t14 == $t14; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:20+1 + assume {:print "$at(159,3007,3008)"} true; +L2: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:20+1 + assume {:print "$at(159,3007,3008)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // trace_local[frac]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:13+4 + assume {:print "$track_local(38,3,2):", $t15} $t15 == $t15; + + // $t16 := 2147483648 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:106:21+7 + assume {:print "$at(159,3030,3037)"} true; + $t16 := 2147483648; + assume $IsValid'u64'($t16); + + // trace_local[delta]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:106:13+5 + assume {:print "$track_local(38,3,1):", $t16} $t16 == $t16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$at(159,3054,3059)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$at(159,3054,3059)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t2); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'bool'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t28); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$info(): enter loop, variable(s) x, delta, frac havocked and reassigned"} true; + assume {:print "$track_local(38,3,0):", $t0} $t0 == $t0; + + // trace_local[delta]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$track_local(38,3,1):", $t1} $t1 == $t1; + + // trace_local[frac]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$track_local(38,3,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume !$abort_flag; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:25+1 + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := !=($t1, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:22+2 + $t18 := !$IsEqual'u64'($t1, $t17); + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:9+318 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:9+318 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:18+1 + assume {:print "$at(159,3147,3148)"} true; +L5: + + // $t19 := *($t0, $t0) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:20+1 + assume {:print "$at(159,3149,3150)"} true; + call $t19 := $MulU128($t0, $t0); + if ($abort_flag) { + assume {:print "$at(159,3149,3150)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t20 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:28+2 + $t20 := 32; + assume $IsValid'u8'($t20); + + // $t21 := >>($t19, $t20) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:25+2 + call $t21 := $ShrU128($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,3154,3156)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:13+1 + assume {:print "$track_local(38,3,0):", $t21} $t21 == $t21; + + // $t22 := 8589934592 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:22+9 + assume {:print "$at(159,3275,3284)"} true; + $t22 := 8589934592; + assume $IsValid'u128'($t22); + + // $t23 := >=($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:19+2 + call $t23 := $Ge($t21, $t22); + + // if ($t23) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:13+56 + if ($t23) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:42+4 +L7: + + // $t24 := +($t2, $t1) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:47+1 + assume {:print "$at(159,3300,3301)"} true; + call $t24 := $AddU64($t2, $t1); + if ($abort_flag) { + assume {:print "$at(159,3300,3301)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[frac]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:35+4 + assume {:print "$track_local(38,3,2):", $t24} $t24 == $t24; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:65+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t21, $t25) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:62+2 + call $t26 := $ShrU128($t21, $t25); + if ($abort_flag) { + assume {:print "$at(159,3315,3317)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:56+1 + assume {:print "$track_local(38,3,0):", $t26} $t26 == $t26; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:21+5 + assume {:print "$at(159,3344,3349)"} true; +L6: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:30+1 + assume {:print "$at(159,3353,3354)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t28 := >>($t1, $t27) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:27+2 + call $t28 := $ShrU64($t1, $t27); + if ($abort_flag) { + assume {:print "$at(159,3350,3352)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[delta]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:13+5 + assume {:print "$track_local(38,3,1):", $t28} $t28 == $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:31+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + assume {:print "$at(159,3415,3427)"} true; +L3: + + // $t29 := (u64)($t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:48+21 + assume {:print "$at(159,3414,3435)"} true; + call $t29 := $CastU64($t4); + if ($abort_flag) { + assume {:print "$at(159,3414,3435)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t30 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:73+2 + $t30 := 32; + assume $IsValid'u8'($t30); + + // $t31 := <<($t29, $t30) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:70+2 + call $t31 := $ShlU64($t29, $t30); + if ($abort_flag) { + assume {:print "$at(159,3436,3438)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t32 := +($t31, $t2) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:77+1 + call $t32 := $AddU64($t31, $t2); + if ($abort_flag) { + assume {:print "$at(159,3443,3444)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t33 := opaque begin: fixed_point32::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t33); + + // assume Eq(select fixed_point32::FixedPoint32.value($t33), $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume $IsEqual'u64'($t33->$value, $t32); + + // $t33 := opaque end: fixed_point32::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume {:print "$track_return(38,3,0):", $t33} $t33 == $t33; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + assume {:print "$at(159,3415,3427)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; +L10: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; + $ret0 := $t33; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 +L11: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math128::log2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:97:5+743 +procedure {:timeLimit 80} $1_math128_log2$verify(_$t0: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:97:5+1 + assume {:print "$at(159,2713,2714)"} true; + assume $IsValid'u128'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:97:5+1 + assume {:print "$track_local(38,3,0):", $t0} $t0 == $t0; + + // $t4 := opaque begin: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + + // assume Identical($t5, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($t5 == $IsEqual'u128'($t0, 0)); + + // if ($t5) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + if ($t5) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 +L13: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 +L12: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume {:print "$at(159,2781,2794)"} true; + assume $IsValid'u8'($t4); + + // assume Le(math128::spec_pow(2, $t4), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($1_math128_spec_pow(2, $t4) <= $t0); + + // assume Lt($t0, math128::spec_pow(2, Add($t4, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + assume ($t0 < $1_math128_spec_pow(2, ($t4 + 1))); + + // $t4 := opaque end: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:28+13 + + // trace_local[integer_part]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:98:13+12 + assume {:print "$track_local(38,3,3):", $t4} $t4 == $t4; + + // $t7 := 4294967296 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:18+7 + assume {:print "$at(159,2865,2872)"} true; + $t7 := 4294967296; + assume $IsValid'u128'($t7); + + // $t8 := >=($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:15+2 + call $t8 := $Ge($t0, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:100:9+130 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:17+1 + assume {:print "$at(159,2892,2893)"} true; +L1: + + // $t9 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:38+2 + assume {:print "$at(159,2913,2915)"} true; + $t9 := 32; + assume $IsValid'u8'($t9); + + // $t10 := -($t4, $t9) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:36+1 + call $t10 := $Sub($t4, $t9); + if ($abort_flag) { + assume {:print "$at(159,2911,2912)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t11 := >>($t0, $t10) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:19+2 + call $t11 := $ShrU128($t0, $t10); + if ($abort_flag) { + assume {:print "$at(159,2894,2896)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:13+1 + assume {:print "$track_local(38,3,0):", $t11} $t11 == $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:101:41+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:17+1 + assume {:print "$at(159,2951,2952)"} true; +L0: + + // $t12 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:23+2 + assume {:print "$at(159,2957,2959)"} true; + $t12 := 32; + assume $IsValid'u8'($t12); + + // $t13 := -($t12, $t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:26+1 + call $t13 := $Sub($t12, $t4); + if ($abort_flag) { + assume {:print "$at(159,2960,2961)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t14 := <<($t0, $t13) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:19+2 + call $t14 := $ShlU128($t0, $t13); + if ($abort_flag) { + assume {:print "$at(159,2953,2955)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:103:13+1 + assume {:print "$track_local(38,3,0):", $t14} $t14 == $t14; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:20+1 + assume {:print "$at(159,3007,3008)"} true; +L2: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:20+1 + assume {:print "$at(159,3007,3008)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // trace_local[frac]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:105:13+4 + assume {:print "$track_local(38,3,2):", $t15} $t15 == $t15; + + // $t16 := 2147483648 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:106:21+7 + assume {:print "$at(159,3030,3037)"} true; + $t16 := 2147483648; + assume $IsValid'u64'($t16); + + // trace_local[delta]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:106:13+5 + assume {:print "$track_local(38,3,1):", $t16} $t16 == $t16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$at(159,3054,3059)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$at(159,3054,3059)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t2); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'bool'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u128'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u8'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume $IsValid'u64'($t28); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$info(): enter loop, variable(s) x, delta, frac havocked and reassigned"} true; + assume {:print "$track_local(38,3,0):", $t0} $t0 == $t0; + + // trace_local[delta]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$track_local(38,3,1):", $t1} $t1 == $t1; + + // trace_local[frac]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume {:print "$track_local(38,3,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:16+5 + assume !$abort_flag; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:25+1 + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := !=($t1, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:22+2 + $t18 := !$IsEqual'u64'($t1, $t17); + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:9+318 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:107:9+318 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:18+1 + assume {:print "$at(159,3147,3148)"} true; +L5: + + // $t19 := *($t0, $t0) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:20+1 + assume {:print "$at(159,3149,3150)"} true; + call $t19 := $MulU128($t0, $t0); + if ($abort_flag) { + assume {:print "$at(159,3149,3150)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t20 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:28+2 + $t20 := 32; + assume $IsValid'u8'($t20); + + // $t21 := >>($t19, $t20) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:25+2 + call $t21 := $ShrU128($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,3154,3156)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:110:13+1 + assume {:print "$track_local(38,3,0):", $t21} $t21 == $t21; + + // $t22 := 8589934592 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:22+9 + assume {:print "$at(159,3275,3284)"} true; + $t22 := 8589934592; + assume $IsValid'u128'($t22); + + // $t23 := >=($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:19+2 + call $t23 := $Ge($t21, $t22); + + // if ($t23) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:13+56 + if ($t23) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:42+4 +L7: + + // $t24 := +($t2, $t1) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:47+1 + assume {:print "$at(159,3300,3301)"} true; + call $t24 := $AddU64($t2, $t1); + if ($abort_flag) { + assume {:print "$at(159,3300,3301)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[frac]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:35+4 + assume {:print "$track_local(38,3,2):", $t24} $t24 == $t24; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:65+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t21, $t25) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:62+2 + call $t26 := $ShrU128($t21, $t25); + if ($abort_flag) { + assume {:print "$at(159,3315,3317)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:113:56+1 + assume {:print "$track_local(38,3,0):", $t26} $t26 == $t26; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:21+5 + assume {:print "$at(159,3344,3349)"} true; +L6: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:30+1 + assume {:print "$at(159,3353,3354)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t28 := >>($t1, $t27) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:27+2 + call $t28 := $ShrU64($t1, $t27); + if ($abort_flag) { + assume {:print "$at(159,3350,3352)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[delta]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:13+5 + assume {:print "$track_local(38,3,1):", $t28} $t28 == $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:114:31+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + assume {:print "$at(159,3415,3427)"} true; +L3: + + // $t29 := (u64)($t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:48+21 + assume {:print "$at(159,3414,3435)"} true; + call $t29 := $CastU64($t4); + if ($abort_flag) { + assume {:print "$at(159,3414,3435)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t30 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:73+2 + $t30 := 32; + assume $IsValid'u8'($t30); + + // $t31 := <<($t29, $t30) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:70+2 + call $t31 := $ShlU64($t29, $t30); + if ($abort_flag) { + assume {:print "$at(159,3436,3438)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t32 := +($t31, $t2) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:77+1 + call $t32 := $AddU64($t31, $t2); + if ($abort_flag) { + assume {:print "$at(159,3443,3444)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,3):", $t6} $t6 == $t6; + goto L11; + } + + // $t33 := opaque begin: fixed_point32::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t33); + + // assume Eq(select fixed_point32::FixedPoint32.value($t33), $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume $IsEqual'u64'($t33->$value, $t32); + + // $t33 := opaque end: fixed_point32::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + assume {:print "$track_return(38,3,0):", $t33} $t33 == $t33; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:9+75 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:116:49+12 + assume {:print "$at(159,3415,3427)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; +L10: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; + $ret0 := $t33; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 +L11: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:117:5+1 + assume {:print "$at(159,3455,3456)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math128::log2_64 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:120:5+781 +procedure {:inline 1} $1_math128_log2_64(_$t0: int) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_fixed_point64_FixedPoint64; + var $t0: int; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:120:5+1 + assume {:print "$at(159,3500,3501)"} true; + assume {:print "$track_local(38,4,0):", $t0} $t0 == $t0; + + // $t4 := opaque begin: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + + // assume Identical($t5, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($t5 == $IsEqual'u128'($t0, 0)); + + // if ($t5) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + if ($t5) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 +L13: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 +L12: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + assume $IsValid'u8'($t4); + + // assume Le(math128::spec_pow(2, $t4), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($1_math128_spec_pow(2, $t4) <= $t0); + + // assume Lt($t0, math128::spec_pow(2, Add($t4, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($t0 < $1_math128_spec_pow(2, ($t4 + 1))); + + // $t4 := opaque end: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + + // trace_local[integer_part]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:13+12 + assume {:print "$track_local(38,4,3):", $t4} $t4 == $t4; + + // $t7 := 9223372036854775808 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:18+7 + assume {:print "$at(159,3689,3696)"} true; + $t7 := 9223372036854775808; + assume $IsValid'u128'($t7); + + // $t8 := >=($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:15+2 + call $t8 := $Ge($t0, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:9+130 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:17+1 + assume {:print "$at(159,3716,3717)"} true; +L1: + + // $t9 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:38+2 + assume {:print "$at(159,3737,3739)"} true; + $t9 := 63; + assume $IsValid'u8'($t9); + + // $t10 := -($t4, $t9) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:36+1 + call $t10 := $Sub($t4, $t9); + if ($abort_flag) { + assume {:print "$at(159,3735,3736)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t11 := >>($t0, $t10) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:19+2 + call $t11 := $ShrU128($t0, $t10); + if ($abort_flag) { + assume {:print "$at(159,3718,3720)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:13+1 + assume {:print "$track_local(38,4,0):", $t11} $t11 == $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:41+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:17+1 + assume {:print "$at(159,3775,3776)"} true; +L0: + + // $t12 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:23+2 + assume {:print "$at(159,3781,3783)"} true; + $t12 := 63; + assume $IsValid'u8'($t12); + + // $t13 := -($t12, $t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:26+1 + call $t13 := $Sub($t12, $t4); + if ($abort_flag) { + assume {:print "$at(159,3784,3785)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t14 := <<($t0, $t13) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:19+2 + call $t14 := $ShlU128($t0, $t13); + if ($abort_flag) { + assume {:print "$at(159,3777,3779)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:13+1 + assume {:print "$track_local(38,4,0):", $t14} $t14 == $t14; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:20+1 + assume {:print "$at(159,3831,3832)"} true; +L2: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:20+1 + assume {:print "$at(159,3831,3832)"} true; + $t15 := 0; + assume $IsValid'u128'($t15); + + // trace_local[frac]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:13+4 + assume {:print "$track_local(38,4,2):", $t15} $t15 == $t15; + + // $t16 := 9223372036854775808 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:129:21+7 + assume {:print "$at(159,3854,3861)"} true; + $t16 := 9223372036854775808; + assume $IsValid'u128'($t16); + + // trace_local[delta]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:129:13+5 + assume {:print "$track_local(38,4,1):", $t16} $t16 == $t16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$at(159,3878,3883)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$at(159,3878,3883)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t2); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'bool'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t28); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$info(): enter loop, variable(s) x, delta, frac havocked and reassigned"} true; + assume {:print "$track_local(38,4,0):", $t0} $t0 == $t0; + + // trace_local[delta]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$track_local(38,4,1):", $t1} $t1 == $t1; + + // trace_local[frac]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$track_local(38,4,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume !$abort_flag; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:25+1 + $t17 := 0; + assume $IsValid'u128'($t17); + + // $t18 := !=($t1, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:22+2 + $t18 := !$IsEqual'u128'($t1, $t17); + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:9+318 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:9+318 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:18+1 + assume {:print "$at(159,3971,3972)"} true; +L5: + + // $t19 := *($t0, $t0) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:20+1 + assume {:print "$at(159,3973,3974)"} true; + call $t19 := $MulU128($t0, $t0); + if ($abort_flag) { + assume {:print "$at(159,3973,3974)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t20 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:28+2 + $t20 := 63; + assume $IsValid'u8'($t20); + + // $t21 := >>($t19, $t20) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:25+2 + call $t21 := $ShrU128($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,3978,3980)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:13+1 + assume {:print "$track_local(38,4,0):", $t21} $t21 == $t21; + + // $t22 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:22+9 + assume {:print "$at(159,4099,4108)"} true; + $t22 := 18446744073709551616; + assume $IsValid'u128'($t22); + + // $t23 := >=($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:19+2 + call $t23 := $Ge($t21, $t22); + + // if ($t23) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:13+56 + if ($t23) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:42+4 +L7: + + // $t24 := +($t2, $t1) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:47+1 + assume {:print "$at(159,4124,4125)"} true; + call $t24 := $AddU128($t2, $t1); + if ($abort_flag) { + assume {:print "$at(159,4124,4125)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[frac]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:35+4 + assume {:print "$track_local(38,4,2):", $t24} $t24 == $t24; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:65+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t21, $t25) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:62+2 + call $t26 := $ShrU128($t21, $t25); + if ($abort_flag) { + assume {:print "$at(159,4139,4141)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:56+1 + assume {:print "$track_local(38,4,0):", $t26} $t26 == $t26; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:21+5 + assume {:print "$at(159,4168,4173)"} true; +L6: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:30+1 + assume {:print "$at(159,4177,4178)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t28 := >>($t1, $t27) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:27+2 + call $t28 := $ShrU128($t1, $t27); + if ($abort_flag) { + assume {:print "$at(159,4174,4176)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[delta]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:13+5 + assume {:print "$track_local(38,4,1):", $t28} $t28 == $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:31+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + assume {:print "$at(159,4239,4251)"} true; +L3: + + // $t29 := (u128)($t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:48+22 + assume {:print "$at(159,4238,4260)"} true; + call $t29 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(159,4238,4260)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t30 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:74+2 + $t30 := 64; + assume $IsValid'u8'($t30); + + // $t31 := <<($t29, $t30) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:71+2 + call $t31 := $ShlU128($t29, $t30); + if ($abort_flag) { + assume {:print "$at(159,4261,4263)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t32 := +($t31, $t2) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:78+1 + call $t32 := $AddU128($t31, $t2); + if ($abort_flag) { + assume {:print "$at(159,4268,4269)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t33 := opaque begin: fixed_point64::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t33); + + // assume Eq(select fixed_point64::FixedPoint64.value($t33), $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume $IsEqual'u128'($t33->$value, $t32); + + // $t33 := opaque end: fixed_point64::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume {:print "$track_return(38,4,0):", $t33} $t33 == $t33; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + assume {:print "$at(159,4239,4251)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; +L10: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; + $ret0 := $t33; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 +L11: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math128::log2_64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:120:5+781 +procedure {:timeLimit 80} $1_math128_log2_64$verify(_$t0: int) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_fixed_point64_FixedPoint64; + var $t0: int; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:120:5+1 + assume {:print "$at(159,3500,3501)"} true; + assume $IsValid'u128'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:120:5+1 + assume {:print "$track_local(38,4,0):", $t0} $t0 == $t0; + + // $t4 := opaque begin: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + + // assume Identical($t5, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($t5 == $IsEqual'u128'($t0, 0)); + + // if ($t5) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + if ($t5) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 +L13: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 +L12: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume {:print "$at(159,3571,3584)"} true; + assume $IsValid'u8'($t4); + + // assume Le(math128::spec_pow(2, $t4), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($1_math128_spec_pow(2, $t4) <= $t0); + + // assume Lt($t0, math128::spec_pow(2, Add($t4, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + assume ($t0 < $1_math128_spec_pow(2, ($t4 + 1))); + + // $t4 := opaque end: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:28+13 + + // trace_local[integer_part]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:121:13+12 + assume {:print "$track_local(38,4,3):", $t4} $t4 == $t4; + + // $t7 := 9223372036854775808 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:18+7 + assume {:print "$at(159,3689,3696)"} true; + $t7 := 9223372036854775808; + assume $IsValid'u128'($t7); + + // $t8 := >=($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:15+2 + call $t8 := $Ge($t0, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:123:9+130 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:17+1 + assume {:print "$at(159,3716,3717)"} true; +L1: + + // $t9 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:38+2 + assume {:print "$at(159,3737,3739)"} true; + $t9 := 63; + assume $IsValid'u8'($t9); + + // $t10 := -($t4, $t9) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:36+1 + call $t10 := $Sub($t4, $t9); + if ($abort_flag) { + assume {:print "$at(159,3735,3736)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t11 := >>($t0, $t10) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:19+2 + call $t11 := $ShrU128($t0, $t10); + if ($abort_flag) { + assume {:print "$at(159,3718,3720)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:13+1 + assume {:print "$track_local(38,4,0):", $t11} $t11 == $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:124:41+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:17+1 + assume {:print "$at(159,3775,3776)"} true; +L0: + + // $t12 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:23+2 + assume {:print "$at(159,3781,3783)"} true; + $t12 := 63; + assume $IsValid'u8'($t12); + + // $t13 := -($t12, $t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:26+1 + call $t13 := $Sub($t12, $t4); + if ($abort_flag) { + assume {:print "$at(159,3784,3785)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t14 := <<($t0, $t13) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:19+2 + call $t14 := $ShlU128($t0, $t13); + if ($abort_flag) { + assume {:print "$at(159,3777,3779)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:126:13+1 + assume {:print "$track_local(38,4,0):", $t14} $t14 == $t14; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:20+1 + assume {:print "$at(159,3831,3832)"} true; +L2: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:20+1 + assume {:print "$at(159,3831,3832)"} true; + $t15 := 0; + assume $IsValid'u128'($t15); + + // trace_local[frac]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:128:13+4 + assume {:print "$track_local(38,4,2):", $t15} $t15 == $t15; + + // $t16 := 9223372036854775808 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:129:21+7 + assume {:print "$at(159,3854,3861)"} true; + $t16 := 9223372036854775808; + assume $IsValid'u128'($t16); + + // trace_local[delta]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:129:13+5 + assume {:print "$track_local(38,4,1):", $t16} $t16 == $t16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$at(159,3878,3883)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$at(159,3878,3883)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t2); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'bool'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u8'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume $IsValid'u128'($t28); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$info(): enter loop, variable(s) x, delta, frac havocked and reassigned"} true; + assume {:print "$track_local(38,4,0):", $t0} $t0 == $t0; + + // trace_local[delta]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$track_local(38,4,1):", $t1} $t1 == $t1; + + // trace_local[frac]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume {:print "$track_local(38,4,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:16+5 + assume !$abort_flag; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:25+1 + $t17 := 0; + assume $IsValid'u128'($t17); + + // $t18 := !=($t1, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:22+2 + $t18 := !$IsEqual'u128'($t1, $t17); + + // if ($t18) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:9+318 + if ($t18) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:130:9+318 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:18+1 + assume {:print "$at(159,3971,3972)"} true; +L5: + + // $t19 := *($t0, $t0) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:20+1 + assume {:print "$at(159,3973,3974)"} true; + call $t19 := $MulU128($t0, $t0); + if ($abort_flag) { + assume {:print "$at(159,3973,3974)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t20 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:28+2 + $t20 := 63; + assume $IsValid'u8'($t20); + + // $t21 := >>($t19, $t20) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:25+2 + call $t21 := $ShrU128($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,3978,3980)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:133:13+1 + assume {:print "$track_local(38,4,0):", $t21} $t21 == $t21; + + // $t22 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:22+9 + assume {:print "$at(159,4099,4108)"} true; + $t22 := 18446744073709551616; + assume $IsValid'u128'($t22); + + // $t23 := >=($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:19+2 + call $t23 := $Ge($t21, $t22); + + // if ($t23) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:13+56 + if ($t23) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:42+4 +L7: + + // $t24 := +($t2, $t1) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:47+1 + assume {:print "$at(159,4124,4125)"} true; + call $t24 := $AddU128($t2, $t1); + if ($abort_flag) { + assume {:print "$at(159,4124,4125)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[frac]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:35+4 + assume {:print "$track_local(38,4,2):", $t24} $t24 == $t24; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:65+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t21, $t25) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:62+2 + call $t26 := $ShrU128($t21, $t25); + if ($abort_flag) { + assume {:print "$at(159,4139,4141)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[x]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:136:56+1 + assume {:print "$track_local(38,4,0):", $t26} $t26 == $t26; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:21+5 + assume {:print "$at(159,4168,4173)"} true; +L6: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:30+1 + assume {:print "$at(159,4177,4178)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t28 := >>($t1, $t27) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:27+2 + call $t28 := $ShrU128($t1, $t27); + if ($abort_flag) { + assume {:print "$at(159,4174,4176)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // trace_local[delta]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:13+5 + assume {:print "$track_local(38,4,1):", $t28} $t28 == $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:137:31+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + assume {:print "$at(159,4239,4251)"} true; +L3: + + // $t29 := (u128)($t4) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:48+22 + assume {:print "$at(159,4238,4260)"} true; + call $t29 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(159,4238,4260)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t30 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:74+2 + $t30 := 64; + assume $IsValid'u8'($t30); + + // $t31 := <<($t29, $t30) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:71+2 + call $t31 := $ShlU128($t29, $t30); + if ($abort_flag) { + assume {:print "$at(159,4261,4263)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t32 := +($t31, $t2) on_abort goto L11 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:78+1 + call $t32 := $AddU128($t31, $t2); + if ($abort_flag) { + assume {:print "$at(159,4268,4269)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(38,4):", $t6} $t6 == $t6; + goto L11; + } + + // $t33 := opaque begin: fixed_point64::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t33); + + // assume Eq(select fixed_point64::FixedPoint64.value($t33), $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume $IsEqual'u128'($t33->$value, $t32); + + // $t33 := opaque end: fixed_point64::create_from_raw_value($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + assume {:print "$track_return(38,4,0):", $t33} $t33 == $t33; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:9+76 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:139:49+12 + assume {:print "$at(159,4239,4251)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; +L10: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; + $ret0 := $t33; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 +L11: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:140:5+1 + assume {:print "$at(159,4280,4281)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math128::pow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:64:5+331 +procedure {:timeLimit 80} $1_math128_pow$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t0: int; + var $t1: int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:64:5+1 + assume {:print "$at(159,1907,1908)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:64:5+1 + assume $IsValid'u128'($t1); + + // trace_local[n]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:64:5+1 + assume {:print "$track_local(38,7,0):", $t0} $t0 == $t0; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:64:5+1 + assume {:print "$track_local(38,7,1):", $t1} $t1 == $t1; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:18+1 + assume {:print "$at(159,1965,1966)"} true; + $t4 := 0; + assume $IsValid'u128'($t4); + + // $t5 := ==($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:15+2 + $t5 := $IsEqual'u128'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:66:13+1 + assume {:print "$at(159,1982,1983)"} true; +L1: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:66:13+1 + assume {:print "$at(159,1982,1983)"} true; + $t6 := 1; + assume $IsValid'u128'($t6); + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + assume {:print "$at(159,1956,2232)"} true; + $t2 := $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:68:21+1 + assume {:print "$at(159,2021,2022)"} true; +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:68:21+1 + assume {:print "$at(159,2021,2022)"} true; + $t7 := 1; + assume $IsValid'u128'($t7); + + // trace_local[p]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:68:17+1 + assume {:print "$track_local(38,7,3):", $t7} $t7 == $t7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume {:print "$at(159,2043,2044)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume {:print "$at(159,2043,2044)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'bool'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume $IsValid'u128'($t17); + + // trace_local[n]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume {:print "$info(): enter loop, variable(s) n, e, p havocked and reassigned"} true; + assume {:print "$track_local(38,7,0):", $t0} $t0 == $t0; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume {:print "$track_local(38,7,1):", $t1} $t1 == $t1; + + // trace_local[p]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume {:print "$track_local(38,7,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:20+1 + assume !$abort_flag; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:24+1 + $t8 := 1; + assume $IsValid'u128'($t8); + + // $t9 := >($t1, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:22+1 + call $t9 := $Gt($t1, $t8); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:13+167 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:69:13+167 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:21+1 + assume {:print "$at(159,2072,2073)"} true; +L5: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:25+1 + assume {:print "$at(159,2076,2077)"} true; + $t10 := 2; + assume $IsValid'u128'($t10); + + // $t11 := %($t1, $t10) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:23+1 + call $t11 := $Mod($t1, $t10); + if ($abort_flag) { + assume {:print "$at(159,2074,2075)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(38,7):", $t18} $t18 == $t18; + goto L11; + } + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:30+1 + $t12 := 1; + assume $IsValid'u128'($t12); + + // $t13 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:27+2 + $t13 := $IsEqual'u128'($t11, $t12); + + // if ($t13) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:70:17+66 + if ($t13) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:71:25+1 + assume {:print "$at(159,2110,2111)"} true; +L7: + + // $t14 := *($t3, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:71:27+1 + assume {:print "$at(159,2112,2113)"} true; + call $t14 := $MulU128($t3, $t0); + if ($abort_flag) { + assume {:print "$at(159,2112,2113)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(38,7):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[p]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:71:21+1 + assume {:print "$track_local(38,7,3):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:73:21+1 + assume {:print "$at(159,2156,2157)"} true; +L6: + + // $t15 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:73:25+1 + assume {:print "$at(159,2160,2161)"} true; + $t15 := 2; + assume $IsValid'u128'($t15); + + // $t16 := /($t1, $t15) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:73:23+1 + call $t16 := $Div($t1, $t15); + if ($abort_flag) { + assume {:print "$at(159,2158,2159)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(38,7):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[e]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:73:17+1 + assume {:print "$track_local(38,7,1):", $t16} $t16 == $t16; + + // $t17 := *($t0, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:74:23+1 + assume {:print "$at(159,2185,2186)"} true; + call $t17 := $MulU128($t0, $t0); + if ($abort_flag) { + assume {:print "$at(159,2185,2186)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(38,7):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[n]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:74:17+1 + assume {:print "$track_local(38,7,0):", $t17} $t17 == $t17; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:74:26+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:76:13+1 + assume {:print "$at(159,2217,2218)"} true; +L3: + + // $t2 := *($t3, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:76:15+1 + assume {:print "$at(159,2219,2220)"} true; + call $t2 := $MulU128($t3, $t0); + if ($abort_flag) { + assume {:print "$at(159,2219,2220)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(38,7):", $t18} $t18 == $t18; + goto L11; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + assume {:print "$at(159,1956,2232)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + assume {:print "$at(159,1956,2232)"} true; + assume {:print "$track_return(38,7,0):", $t2} $t2 == $t2; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:65:9+276 + assume {:print "$at(159,1956,2232)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:78:5+1 + assume {:print "$at(159,2237,2238)"} true; +L10: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:78:5+1 + assume {:print "$at(159,2237,2238)"} true; + $ret0 := $t2; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:78:5+1 +L11: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:78:5+1 + assume {:print "$at(159,2237,2238)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun math128::sqrt [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:143:5+1169 +procedure {:timeLimit 80} $1_math128_sqrt$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + 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 $t24: int; + var $t25: int; + 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 $t36: int; + var $t0: int; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:143:5+1 + assume {:print "$at(159,4346,4347)"} true; + assume $IsValid'u128'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:143:5+1 + assume {:print "$track_local(38,8,0):", $t0} $t0 == $t0; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:18+1 + assume {:print "$at(159,4396,4397)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:15+2 + $t3 := $IsEqual'u128'($t0, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:28+1 +L1: + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:28+1 + assume {:print "$at(159,4406,4407)"} true; + $t4 := 0; + assume $IsValid'u128'($t4); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:21+8 + assume {:print "$track_return(38,8,0):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:21+8 + $t5 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:144:21+8 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:19+1 + assume {:print "$at(159,4984,4985)"} true; +L0: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:19+1 + assume {:print "$at(159,4984,4985)"} true; + $t6 := 1; + assume $IsValid'u128'($t6); + + // $t7 := opaque begin: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + + // assume Identical($t8, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + assume ($t8 == $IsEqual'u128'($t0, 0)); + + // if ($t8) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + if ($t8) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 +L5: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + assume {:print "$at(159,4991,5004)"} true; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 +L4: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + assume {:print "$at(159,4991,5004)"} true; + assume $IsValid'u8'($t7); + + // assume Le(math128::spec_pow(2, $t7), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + assume ($1_math128_spec_pow(2, $t7) <= $t0); + + // assume Lt($t0, math128::spec_pow(2, Add($t7, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + assume ($t0 < $1_math128_spec_pow(2, ($t7 + 1))); + + // $t7 := opaque end: math128::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:26+13 + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:42+1 + $t10 := 1; + assume $IsValid'u8'($t10); + + // $t11 := +($t7, $t10) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:40+1 + call $t11 := $AddU8($t7, $t10); + if ($abort_flag) { + assume {:print "$at(159,5005,5006)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:48+1 + $t12 := 1; + assume $IsValid'u8'($t12); + + // $t13 := >>($t11, $t12) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:45+2 + call $t13 := $ShrU8($t11, $t12); + if ($abort_flag) { + assume {:print "$at(159,5010,5012)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t14 := <<($t6, $t13) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:21+2 + call $t14 := $ShlU128($t6, $t13); + if ($abort_flag) { + assume {:print "$at(159,4986,4988)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:150:13+3 + assume {:print "$track_local(38,8,1):", $t14} $t14 == $t14; + + // $t15 := /($t0, $t14) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:154:24+1 + assume {:print "$at(159,5327,5328)"} true; + call $t15 := $Div($t0, $t14); + if ($abort_flag) { + assume {:print "$at(159,5327,5328)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t16 := +($t14, $t15) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:154:20+1 + call $t16 := $AddU128($t14, $t15); + if ($abort_flag) { + assume {:print "$at(159,5323,5324)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:154:34+1 + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t16, $t17) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:154:31+2 + call $t18 := $ShrU128($t16, $t17); + if ($abort_flag) { + assume {:print "$at(159,5334,5336)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:154:9+3 + assume {:print "$track_local(38,8,1):", $t18} $t18 == $t18; + + // $t19 := /($t0, $t18) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:155:24+1 + assume {:print "$at(159,5363,5364)"} true; + call $t19 := $Div($t0, $t18); + if ($abort_flag) { + assume {:print "$at(159,5363,5364)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t20 := +($t18, $t19) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:155:20+1 + call $t20 := $AddU128($t18, $t19); + if ($abort_flag) { + assume {:print "$at(159,5359,5360)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t21 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:155:34+1 + $t21 := 1; + assume $IsValid'u8'($t21); + + // $t22 := >>($t20, $t21) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:155:31+2 + call $t22 := $ShrU128($t20, $t21); + if ($abort_flag) { + assume {:print "$at(159,5370,5372)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:155:9+3 + assume {:print "$track_local(38,8,1):", $t22} $t22 == $t22; + + // $t23 := /($t0, $t22) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:156:24+1 + assume {:print "$at(159,5399,5400)"} true; + call $t23 := $Div($t0, $t22); + if ($abort_flag) { + assume {:print "$at(159,5399,5400)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t24 := +($t22, $t23) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:156:20+1 + call $t24 := $AddU128($t22, $t23); + if ($abort_flag) { + assume {:print "$at(159,5395,5396)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:156:34+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t24, $t25) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:156:31+2 + call $t26 := $ShrU128($t24, $t25); + if ($abort_flag) { + assume {:print "$at(159,5406,5408)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:156:9+3 + assume {:print "$track_local(38,8,1):", $t26} $t26 == $t26; + + // $t27 := /($t0, $t26) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:157:24+1 + assume {:print "$at(159,5435,5436)"} true; + call $t27 := $Div($t0, $t26); + if ($abort_flag) { + assume {:print "$at(159,5435,5436)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t28 := +($t26, $t27) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:157:20+1 + call $t28 := $AddU128($t26, $t27); + if ($abort_flag) { + assume {:print "$at(159,5431,5432)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:157:34+1 + $t29 := 1; + assume $IsValid'u8'($t29); + + // $t30 := >>($t28, $t29) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:157:31+2 + call $t30 := $ShrU128($t28, $t29); + if ($abort_flag) { + assume {:print "$at(159,5442,5444)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:157:9+3 + assume {:print "$track_local(38,8,1):", $t30} $t30 == $t30; + + // $t31 := /($t0, $t30) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:158:24+1 + assume {:print "$at(159,5471,5472)"} true; + call $t31 := $Div($t0, $t30); + if ($abort_flag) { + assume {:print "$at(159,5471,5472)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t32 := +($t30, $t31) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:158:20+1 + call $t32 := $AddU128($t30, $t31); + if ($abort_flag) { + assume {:print "$at(159,5467,5468)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t33 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:158:34+1 + $t33 := 1; + assume $IsValid'u8'($t33); + + // $t34 := >>($t32, $t33) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:158:31+2 + call $t34 := $ShrU128($t32, $t33); + if ($abort_flag) { + assume {:print "$at(159,5478,5480)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:158:9+3 + assume {:print "$track_local(38,8,1):", $t34} $t34 == $t34; + + // $t35 := /($t0, $t34) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:159:20+1 + assume {:print "$at(159,5503,5504)"} true; + call $t35 := $Div($t0, $t34); + if ($abort_flag) { + assume {:print "$at(159,5503,5504)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // $t36 := math128::min($t34, $t35) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:159:9+17 + call $t36 := $1_math128_min($t34, $t35); + if ($abort_flag) { + assume {:print "$at(159,5492,5509)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(38,8):", $t9} $t9 == $t9; + goto L3; + } + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:159:9+17 + assume {:print "$track_return(38,8,0):", $t36} $t36 == $t36; + + // $t5 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:159:9+17 + $t5 := $t36; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:160:5+1 + assume {:print "$at(159,5514,5515)"} true; +L2: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:160:5+1 + assume {:print "$at(159,5514,5515)"} true; + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:160:5+1 +L3: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:160:5+1 + assume {:print "$at(159,5514,5515)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:50:10+36 +function $1_transaction_context_spec_get_txn_hash(): Vec (int); +axiom (var $$res := $1_transaction_context_spec_get_txn_hash(); +$IsValid'vec'u8''($$res)); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:63:10+44 +function $1_transaction_context_spec_generate_unique_address(): int; +axiom (var $$res := $1_transaction_context_spec_generate_unique_address(); +$IsValid'address'($$res)); + +// struct transaction_context::AUID at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:15:5+67 +datatype $1_transaction_context_AUID { + $1_transaction_context_AUID($unique_address: int) +} +function {:inline} $Update'$1_transaction_context_AUID'_unique_address(s: $1_transaction_context_AUID, x: int): $1_transaction_context_AUID { + $1_transaction_context_AUID(x) +} +function $IsValid'$1_transaction_context_AUID'(s: $1_transaction_context_AUID): bool { + $IsValid'address'(s->$unique_address) +} +function {:inline} $IsEqual'$1_transaction_context_AUID'(s1: $1_transaction_context_AUID, s2: $1_transaction_context_AUID): bool { + s1 == s2 +} + +// struct transaction_context::EntryFunctionPayload at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:20:5+217 +datatype $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload($account_address: int, $module_name: $1_string_String, $function_name: $1_string_String, $ty_args_names: Vec ($1_string_String), $args: Vec (Vec (int))) +} +function {:inline} $Update'$1_transaction_context_EntryFunctionPayload'_account_address(s: $1_transaction_context_EntryFunctionPayload, x: int): $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload(x, s->$module_name, s->$function_name, s->$ty_args_names, s->$args) +} +function {:inline} $Update'$1_transaction_context_EntryFunctionPayload'_module_name(s: $1_transaction_context_EntryFunctionPayload, x: $1_string_String): $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload(s->$account_address, x, s->$function_name, s->$ty_args_names, s->$args) +} +function {:inline} $Update'$1_transaction_context_EntryFunctionPayload'_function_name(s: $1_transaction_context_EntryFunctionPayload, x: $1_string_String): $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload(s->$account_address, s->$module_name, x, s->$ty_args_names, s->$args) +} +function {:inline} $Update'$1_transaction_context_EntryFunctionPayload'_ty_args_names(s: $1_transaction_context_EntryFunctionPayload, x: Vec ($1_string_String)): $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload(s->$account_address, s->$module_name, s->$function_name, x, s->$args) +} +function {:inline} $Update'$1_transaction_context_EntryFunctionPayload'_args(s: $1_transaction_context_EntryFunctionPayload, x: Vec (Vec (int))): $1_transaction_context_EntryFunctionPayload { + $1_transaction_context_EntryFunctionPayload(s->$account_address, s->$module_name, s->$function_name, s->$ty_args_names, x) +} +function $IsValid'$1_transaction_context_EntryFunctionPayload'(s: $1_transaction_context_EntryFunctionPayload): bool { + $IsValid'address'(s->$account_address) + && $IsValid'$1_string_String'(s->$module_name) + && $IsValid'$1_string_String'(s->$function_name) + && $IsValid'vec'$1_string_String''(s->$ty_args_names) + && $IsValid'vec'vec'u8'''(s->$args) +} +function {:inline} $IsEqual'$1_transaction_context_EntryFunctionPayload'(s1: $1_transaction_context_EntryFunctionPayload, s2: $1_transaction_context_EntryFunctionPayload): bool { + $IsEqual'address'(s1->$account_address, s2->$account_address) + && $IsEqual'$1_string_String'(s1->$module_name, s2->$module_name) + && $IsEqual'$1_string_String'(s1->$function_name, s2->$function_name) + && $IsEqual'vec'$1_string_String''(s1->$ty_args_names, s2->$ty_args_names) + && $IsEqual'vec'vec'u8'''(s1->$args, s2->$args)} + +// struct transaction_context::MultisigPayload at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:29:5+142 +datatype $1_transaction_context_MultisigPayload { + $1_transaction_context_MultisigPayload($multisig_address: int, $entry_function_payload: $1_option_Option'$1_transaction_context_EntryFunctionPayload') +} +function {:inline} $Update'$1_transaction_context_MultisigPayload'_multisig_address(s: $1_transaction_context_MultisigPayload, x: int): $1_transaction_context_MultisigPayload { + $1_transaction_context_MultisigPayload(x, s->$entry_function_payload) +} +function {:inline} $Update'$1_transaction_context_MultisigPayload'_entry_function_payload(s: $1_transaction_context_MultisigPayload, x: $1_option_Option'$1_transaction_context_EntryFunctionPayload'): $1_transaction_context_MultisigPayload { + $1_transaction_context_MultisigPayload(s->$multisig_address, x) +} +function $IsValid'$1_transaction_context_MultisigPayload'(s: $1_transaction_context_MultisigPayload): bool { + $IsValid'address'(s->$multisig_address) + && $IsValid'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(s->$entry_function_payload) +} +function {:inline} $IsEqual'$1_transaction_context_MultisigPayload'(s1: $1_transaction_context_MultisigPayload, s2: $1_transaction_context_MultisigPayload): bool { + $IsEqual'address'(s1->$multisig_address, s2->$multisig_address) + && $IsEqual'$1_option_Option'$1_transaction_context_EntryFunctionPayload''(s1->$entry_function_payload, s2->$entry_function_payload)} + +// fun transaction_context::account_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:136:5+241 +procedure {:timeLimit 80} $1_transaction_context_account_address$verify(_$t0: $1_transaction_context_EntryFunctionPayload) returns ($ret0: int) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: $1_transaction_context_EntryFunctionPayload; + var $temp_0'$1_transaction_context_EntryFunctionPayload': $1_transaction_context_EntryFunctionPayload; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:136:5+1 + assume {:print "$at(112,6463,6464)"} true; + assume $IsValid'$1_transaction_context_EntryFunctionPayload'($t0); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:136:5+1 + assume {:print "$track_local(39,0,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:17+49 + assume {:print "$at(112,6549,6598)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,6549,6598)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,0):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 + assume {:print "$at(112,6541,6665)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:89+42 + assume {:print "$at(112,6621,6663)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,6600,6664)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 + assume {:print "$at(112,6541,6665)"} true; + assume {:print "$track_abort(39,0):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:137:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:138:9+7 + assume {:print "$at(112,6675,6682)"} true; +L2: + + // $t5 := get_field.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:138:9+23 + assume {:print "$at(112,6675,6698)"} true; + $t5 := $t0->$account_address; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:138:9+23 + assume {:print "$track_return(39,0,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:139:5+1 + assume {:print "$at(112,6703,6704)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:139:5+1 + assume {:print "$at(112,6703,6704)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:139:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:139:5+1 + assume {:print "$at(112,6703,6704)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::chain_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:121:5+195 +procedure {:timeLimit 80} $1_transaction_context_chain_id$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $temp_0'u8': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:17+49 + assume {:print "$at(112,5641,5690)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,5641,5690)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,3):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 + assume {:print "$at(112,5633,5757)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:89+42 + assume {:print "$at(112,5713,5755)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,5692,5756)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,3):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 + assume {:print "$at(112,5633,5757)"} true; + assume {:print "$track_abort(39,3):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:122:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + assume {:print "$at(112,5767,5786)"} true; +L2: + + // $t4 := opaque begin: transaction_context::chain_id_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + assume {:print "$at(112,5767,5786)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + assume {:print "$at(112,5767,5786)"} true; + assume {:print "$track_abort(39,3):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + assume {:print "$at(112,5767,5786)"} true; + assume $IsValid'u8'($t4); + + // $t4 := opaque end: transaction_context::chain_id_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:123:9+19 + assume {:print "$track_return(39,3,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:124:5+1 + assume {:print "$at(112,5791,5792)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:124:5+1 + assume {:print "$at(112,5791,5792)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:124:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:124:5+1 + assume {:print "$at(112,5791,5792)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::module_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:142:5+232 +procedure {:timeLimit 80} $1_transaction_context_module_name$verify(_$t0: $1_transaction_context_EntryFunctionPayload) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_string_String; + var $t0: $1_transaction_context_EntryFunctionPayload; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_transaction_context_EntryFunctionPayload': $1_transaction_context_EntryFunctionPayload; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:142:5+1 + assume {:print "$at(112,6773,6774)"} true; + assume $IsValid'$1_transaction_context_EntryFunctionPayload'($t0); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:142:5+1 + assume {:print "$track_local(39,21,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:17+49 + assume {:print "$at(112,6854,6903)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,6854,6903)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,21):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 + assume {:print "$at(112,6846,6970)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:89+42 + assume {:print "$at(112,6926,6968)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,6905,6969)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,21):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 + assume {:print "$at(112,6846,6970)"} true; + assume {:print "$track_abort(39,21):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:143:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:144:9+7 + assume {:print "$at(112,6980,6987)"} true; +L2: + + // $t5 := get_field.module_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:144:9+19 + assume {:print "$at(112,6980,6999)"} true; + $t5 := $t0->$module_name; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:144:9+19 + assume {:print "$track_return(39,21,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:145:5+1 + assume {:print "$at(112,7004,7005)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:145:5+1 + assume {:print "$at(112,7004,7005)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:145:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:145:5+1 + assume {:print "$at(112,7004,7005)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::args [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:160:5+230 +procedure {:timeLimit 80} $1_transaction_context_args$verify(_$t0: $1_transaction_context_EntryFunctionPayload) returns ($ret0: Vec (Vec (int))) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Vec (Vec (int)); + var $t0: $1_transaction_context_EntryFunctionPayload; + var $temp_0'$1_transaction_context_EntryFunctionPayload': $1_transaction_context_EntryFunctionPayload; + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:160:5+1 + assume {:print "$at(112,7702,7703)"} true; + assume $IsValid'$1_transaction_context_EntryFunctionPayload'($t0); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:160:5+1 + assume {:print "$track_local(39,1,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:17+49 + assume {:print "$at(112,7788,7837)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,7788,7837)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,1):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 + assume {:print "$at(112,7780,7904)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:89+42 + assume {:print "$at(112,7860,7902)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,7839,7903)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,1):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 + assume {:print "$at(112,7780,7904)"} true; + assume {:print "$track_abort(39,1):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:161:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:162:9+7 + assume {:print "$at(112,7914,7921)"} true; +L2: + + // $t5 := get_field.args($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:162:9+12 + assume {:print "$at(112,7914,7926)"} true; + $t5 := $t0->$args; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:162:9+12 + assume {:print "$track_return(39,1,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:163:5+1 + assume {:print "$at(112,7931,7932)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:163:5+1 + assume {:print "$at(112,7931,7932)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:163:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:163:5+1 + assume {:print "$at(112,7931,7932)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::auid_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:72:5+81 +procedure {:timeLimit 80} $1_transaction_context_auid_address$verify(_$t0: $1_transaction_context_AUID) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_transaction_context_AUID; + var $temp_0'$1_transaction_context_AUID': $1_transaction_context_AUID; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:72:5+1 + assume {:print "$at(112,2802,2803)"} true; + assume $IsValid'$1_transaction_context_AUID'($t0); + + // trace_local[auid]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:72:5+1 + assume {:print "$track_local(39,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.unique_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:73:9+19 + assume {:print "$at(112,2858,2877)"} true; + $t1 := $t0->$unique_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:73:9+19 + assume {:print "$track_return(39,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:74:5+1 + assume {:print "$at(112,2882,2883)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:73:9+16 + assume {:print "$at(113,4001,4017)"} true; + assert {:msg "assert_failed(113,4001,4017): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:73:9+16 + $ret0 := $t1; + return; + +} + +// fun transaction_context::entry_function_payload [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:129:5+249 +procedure {:timeLimit 80} $1_transaction_context_entry_function_payload$verify() returns ($ret0: $1_option_Option'$1_transaction_context_EntryFunctionPayload') +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_option_Option'$1_transaction_context_EntryFunctionPayload'; + var $t5: bool; + var $temp_0'$1_option_Option'$1_transaction_context_EntryFunctionPayload'': $1_option_Option'$1_transaction_context_EntryFunctionPayload'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:17+49 + assume {:print "$at(112,6145,6194)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,6145,6194)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,5):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 + assume {:print "$at(112,6137,6261)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:89+42 + assume {:print "$at(112,6217,6259)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,6196,6260)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,5):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 + assume {:print "$at(112,6137,6261)"} true; + assume {:print "$track_abort(39,5):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:130:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + assume {:print "$at(112,6271,6304)"} true; +L2: + + // $t4 := opaque begin: transaction_context::entry_function_payload_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + assume {:print "$at(112,6271,6304)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + assume {:print "$at(112,6271,6304)"} true; + assume {:print "$track_abort(39,5):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 +L5: + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + assume {:print "$at(112,6271,6304)"} true; + assume ($IsValid'$1_option_Option'$1_transaction_context_EntryFunctionPayload''($t4) && (LenVec($t4->$vec) <= 1)); + + // $t4 := opaque end: transaction_context::entry_function_payload_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:131:9+33 + assume {:print "$track_return(39,5,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:132:5+1 + assume {:print "$at(112,6309,6310)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:132:5+1 + assume {:print "$at(112,6309,6310)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:132:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:132:5+1 + assume {:print "$at(112,6309,6310)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::function_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:148:5+236 +procedure {:timeLimit 80} $1_transaction_context_function_name$verify(_$t0: $1_transaction_context_EntryFunctionPayload) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_string_String; + var $t0: $1_transaction_context_EntryFunctionPayload; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_transaction_context_EntryFunctionPayload': $1_transaction_context_EntryFunctionPayload; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:148:5+1 + assume {:print "$at(112,7076,7077)"} true; + assume $IsValid'$1_transaction_context_EntryFunctionPayload'($t0); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:148:5+1 + assume {:print "$track_local(39,7,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:17+49 + assume {:print "$at(112,7159,7208)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,7159,7208)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,7):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 + assume {:print "$at(112,7151,7275)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:89+42 + assume {:print "$at(112,7231,7273)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,7210,7274)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,7):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 + assume {:print "$at(112,7151,7275)"} true; + assume {:print "$track_abort(39,7):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:149:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:150:9+7 + assume {:print "$at(112,7285,7292)"} true; +L2: + + // $t5 := get_field.function_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:150:9+21 + assume {:print "$at(112,7285,7306)"} true; + $t5 := $t0->$function_name; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:150:9+21 + assume {:print "$track_return(39,7,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:151:5+1 + assume {:print "$at(112,7311,7312)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:151:5+1 + assume {:print "$at(112,7311,7312)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:151:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:151:5+1 + assume {:print "$at(112,7311,7312)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::gas_payer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:97:5+202 +procedure {:timeLimit 80} $1_transaction_context_gas_payer$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:17+49 + assume {:print "$at(112,4298,4347)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,4298,4347)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,8):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 + assume {:print "$at(112,4290,4414)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:89+42 + assume {:print "$at(112,4370,4412)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,4349,4413)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,8):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 + assume {:print "$at(112,4290,4414)"} true; + assume {:print "$track_abort(39,8):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:98:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + assume {:print "$at(112,4424,4444)"} true; +L2: + + // $t4 := opaque begin: transaction_context::gas_payer_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + assume {:print "$at(112,4424,4444)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + assume {:print "$at(112,4424,4444)"} true; + assume {:print "$track_abort(39,8):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + assume {:print "$at(112,4424,4444)"} true; + assume $IsValid'address'($t4); + + // $t4 := opaque end: transaction_context::gas_payer_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:99:9+20 + assume {:print "$track_return(39,8,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:100:5+1 + assume {:print "$at(112,4449,4450)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:100:5+1 + assume {:print "$at(112,4449,4450)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:100:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:100:5+1 + assume {:print "$at(112,4449,4450)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::gas_unit_price [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:113:5+208 +procedure {:timeLimit 80} $1_transaction_context_gas_unit_price$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:17+49 + assume {:print "$at(112,5212,5261)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,5212,5261)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,10):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 + assume {:print "$at(112,5204,5328)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:89+42 + assume {:print "$at(112,5284,5326)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,5263,5327)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,10):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 + assume {:print "$at(112,5204,5328)"} true; + assume {:print "$track_abort(39,10):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:114:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + assume {:print "$at(112,5338,5363)"} true; +L2: + + // $t4 := opaque begin: transaction_context::gas_unit_price_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + assume {:print "$at(112,5338,5363)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + assume {:print "$at(112,5338,5363)"} true; + assume {:print "$track_abort(39,10):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + assume {:print "$at(112,5338,5363)"} true; + assume $IsValid'u64'($t4); + + // $t4 := opaque end: transaction_context::gas_unit_price_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:115:9+25 + assume {:print "$track_return(39,10,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:116:5+1 + assume {:print "$at(112,5368,5369)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:116:5+1 + assume {:print "$at(112,5368,5369)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:116:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:116:5+1 + assume {:print "$at(112,5368,5369)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::generate_auid [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:65:5+126 +procedure {:timeLimit 80} $1_transaction_context_generate_auid$verify() returns ($ret0: $1_transaction_context_AUID) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: int; + var $t3: $1_transaction_context_AUID; + var $temp_0'$1_transaction_context_AUID': $1_transaction_context_AUID; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := opaque begin: transaction_context::generate_unique_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + assume {:print "$at(112,2686,2711)"} true; + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + havoc $t1; + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + assume {:print "$at(112,2686,2711)"} true; + assume {:print "$track_abort(39,12):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 +L3: + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + assume {:print "$at(112,2686,2711)"} true; + assume $IsValid'address'($t0); + + // assume Eq
($t0, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + assume $IsEqual'address'($t0, $1_transaction_context_spec_generate_unique_address()); + + // $t0 := opaque end: transaction_context::generate_unique_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:67:29+25 + + // $t3 := pack transaction_context::AUID($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:66:16+70 + assume {:print "$at(112,2651,2721)"} true; + $t3 := $1_transaction_context_AUID($t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:66:9+77 + assume {:print "$track_return(39,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:69:5+1 + assume {:print "$at(112,2726,2727)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:69:5+1 + assume {:print "$at(112,2726,2727)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:69:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:69:5+1 + assume {:print "$at(112,2726,2727)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::generate_auid_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:56:5+85 +procedure {:timeLimit 80} $1_transaction_context_generate_auid_address$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: int; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := opaque begin: transaction_context::generate_unique_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + assume {:print "$at(112,2304,2329)"} true; + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + havoc $t1; + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + assume {:print "$at(112,2304,2329)"} true; + assume {:print "$track_abort(39,13):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 +L3: + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + assume {:print "$at(112,2304,2329)"} true; + assume $IsValid'address'($t0); + + // assume Eq
($t0, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + assume $IsEqual'address'($t0, $1_transaction_context_spec_generate_unique_address()); + + // $t0 := opaque end: transaction_context::generate_unique_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:57:9+25 + assume {:print "$track_return(39,13,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:58:5+1 + assume {:print "$at(112,2334,2335)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:58:5+1 + assume {:print "$at(112,2334,2335)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:58:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:58:5+1 + assume {:print "$at(112,2334,2335)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::get_transaction_hash [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:40:5+76 +procedure {:timeLimit 80} $1_transaction_context_get_transaction_hash$verify() returns ($ret0: Vec (int)) +{ + // declare local variables + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := opaque begin: transaction_context::get_txn_hash() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:41:9+14 + assume {:print "$at(112,1449,1463)"} true; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:41:9+14 + assume $IsValid'vec'u8''($t0); + + // assume Eq>($t0, transaction_context::spec_get_txn_hash()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:41:9+14 + assume $IsEqual'vec'u8''($t0, $1_transaction_context_spec_get_txn_hash()); + + // $t0 := opaque end: transaction_context::get_txn_hash() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:41:9+14 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:41:9+14 + assume {:print "$track_return(39,16,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:42:5+1 + assume {:print "$at(112,1468,1469)"} true; +L1: + + // assert Eq>($t0, transaction_context::spec_get_txn_hash()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:54:9+38 + assume {:print "$at(113,3096,3134)"} true; + assert {:msg "assert_failed(113,3096,3134): post-condition does not hold"} + $IsEqual'vec'u8''($t0, $1_transaction_context_spec_get_txn_hash()); + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.spec.move:54:9+38 + $ret0 := $t0; + return; + +} + +// fun transaction_context::inner_entry_function_payload [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:180:5+277 +procedure {:timeLimit 80} $1_transaction_context_inner_entry_function_payload$verify(_$t0: $1_transaction_context_MultisigPayload) returns ($ret0: $1_option_Option'$1_transaction_context_EntryFunctionPayload') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_option_Option'$1_transaction_context_EntryFunctionPayload'; + var $t0: $1_transaction_context_MultisigPayload; + var $temp_0'$1_option_Option'$1_transaction_context_EntryFunctionPayload'': $1_option_Option'$1_transaction_context_EntryFunctionPayload'; + var $temp_0'$1_transaction_context_MultisigPayload': $1_transaction_context_MultisigPayload; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len(select option::Option.vec(select transaction_context::MultisigPayload.entry_function_payload($t0))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:180:5+1 + assume {:print "$at(112,8850,8851)"} true; + assume ($IsValid'$1_transaction_context_MultisigPayload'($t0) && (LenVec($t0->$entry_function_payload->$vec) <= 1)); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:180:5+1 + assume {:print "$track_local(39,18,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:17+49 + assume {:print "$at(112,8965,9014)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,8965,9014)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,18):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 + assume {:print "$at(112,8957,9081)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:89+42 + assume {:print "$at(112,9037,9079)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,9016,9080)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,18):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 + assume {:print "$at(112,8957,9081)"} true; + assume {:print "$track_abort(39,18):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:181:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:182:9+7 + assume {:print "$at(112,9091,9098)"} true; +L2: + + // $t5 := get_field.entry_function_payload($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:182:9+30 + assume {:print "$at(112,9091,9121)"} true; + $t5 := $t0->$entry_function_payload; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:182:9+30 + assume {:print "$track_return(39,18,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:183:5+1 + assume {:print "$at(112,9126,9127)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:183:5+1 + assume {:print "$at(112,9126,9127)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:183:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:183:5+1 + assume {:print "$at(112,9126,9127)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::max_gas_amount [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:105:5+208 +procedure {:timeLimit 80} $1_transaction_context_max_gas_amount$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:17+49 + assume {:print "$at(112,4752,4801)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,4752,4801)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,19):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 + assume {:print "$at(112,4744,4868)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:89+42 + assume {:print "$at(112,4824,4866)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,4803,4867)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,19):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 + assume {:print "$at(112,4744,4868)"} true; + assume {:print "$track_abort(39,19):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:106:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + assume {:print "$at(112,4878,4903)"} true; +L2: + + // $t4 := opaque begin: transaction_context::max_gas_amount_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + assume {:print "$at(112,4878,4903)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + assume {:print "$at(112,4878,4903)"} true; + assume {:print "$track_abort(39,19):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + assume {:print "$at(112,4878,4903)"} true; + assume $IsValid'u64'($t4); + + // $t4 := opaque end: transaction_context::max_gas_amount_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:107:9+25 + assume {:print "$track_return(39,19,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:108:5+1 + assume {:print "$at(112,4908,4909)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:108:5+1 + assume {:print "$at(112,4908,4909)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:108:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:108:5+1 + assume {:print "$at(112,4908,4909)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::multisig_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:174:5+238 +procedure {:timeLimit 80} $1_transaction_context_multisig_address$verify(_$t0: $1_transaction_context_MultisigPayload) returns ($ret0: int) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: $1_transaction_context_MultisigPayload; + var $temp_0'$1_transaction_context_MultisigPayload': $1_transaction_context_MultisigPayload; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len(select option::Option.vec(select transaction_context::MultisigPayload.entry_function_payload($t0))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:174:5+1 + assume {:print "$at(112,8532,8533)"} true; + assume ($IsValid'$1_transaction_context_MultisigPayload'($t0) && (LenVec($t0->$entry_function_payload->$vec) <= 1)); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:174:5+1 + assume {:print "$track_local(39,22,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:17+49 + assume {:print "$at(112,8614,8663)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,8614,8663)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,22):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 + assume {:print "$at(112,8606,8730)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:89+42 + assume {:print "$at(112,8686,8728)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,8665,8729)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,22):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 + assume {:print "$at(112,8606,8730)"} true; + assume {:print "$track_abort(39,22):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:175:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:176:9+7 + assume {:print "$at(112,8740,8747)"} true; +L2: + + // $t5 := get_field.multisig_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:176:9+24 + assume {:print "$at(112,8740,8764)"} true; + $t5 := $t0->$multisig_address; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:176:9+24 + assume {:print "$track_return(39,22,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:177:5+1 + assume {:print "$at(112,8769,8770)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:177:5+1 + assume {:print "$at(112,8769,8770)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:177:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:177:5+1 + assume {:print "$at(112,8769,8770)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun transaction_context::multisig_payload [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:167:5+232 +procedure {:timeLimit 80} $1_transaction_context_multisig_payload$verify() returns ($ret0: $1_option_Option'$1_transaction_context_MultisigPayload') +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_option_Option'$1_transaction_context_MultisigPayload'; + var $t5: bool; + var $temp_0'$1_option_Option'$1_transaction_context_MultisigPayload'': $1_option_Option'$1_transaction_context_MultisigPayload'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:17+49 + assume {:print "$at(112,8228,8277)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,8228,8277)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,23):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 + assume {:print "$at(112,8220,8344)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:89+42 + assume {:print "$at(112,8300,8342)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,8279,8343)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,23):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 + assume {:print "$at(112,8220,8344)"} true; + assume {:print "$track_abort(39,23):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:168:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + assume {:print "$at(112,8354,8381)"} true; +L2: + + // $t4 := opaque begin: transaction_context::multisig_payload_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + assume {:print "$at(112,8354,8381)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + assume {:print "$at(112,8354,8381)"} true; + assume {:print "$track_abort(39,23):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 +L5: + + // assume And(WellFormed($t4), And(Le(Len(select option::Option.vec($t4)), 1), forall $elem: transaction_context::MultisigPayload: select option::Option.vec($t4): Le(Len(select option::Option.vec(select transaction_context::MultisigPayload.entry_function_payload($elem))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + assume {:print "$at(112,8354,8381)"} true; + assume ($IsValid'$1_option_Option'$1_transaction_context_MultisigPayload''($t4) && ((LenVec($t4->$vec) <= 1) && (var $range_0 := $t4->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$entry_function_payload->$vec) <= 1))))))); + + // $t4 := opaque end: transaction_context::multisig_payload_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:169:9+27 + assume {:print "$track_return(39,23,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:170:5+1 + assume {:print "$at(112,8386,8387)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:170:5+1 + assume {:print "$at(112,8386,8387)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:170:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:170:5+1 + assume {:print "$at(112,8386,8387)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::secondary_signers [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:87:5+226 +procedure {:timeLimit 80} $1_transaction_context_secondary_signers$verify() returns ($ret0: Vec (int)) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: bool; + var $temp_0'vec'address'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:17+49 + assume {:print "$at(112,3659,3708)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,3659,3708)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,25):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 + assume {:print "$at(112,3651,3775)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:89+42 + assume {:print "$at(112,3731,3773)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,3710,3774)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,25):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 + assume {:print "$at(112,3651,3775)"} true; + assume {:print "$track_abort(39,25):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:88:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + assume {:print "$at(112,3785,3813)"} true; +L2: + + // $t4 := opaque begin: transaction_context::secondary_signers_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + assume {:print "$at(112,3785,3813)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + assume {:print "$at(112,3785,3813)"} true; + assume {:print "$track_abort(39,25):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + assume {:print "$at(112,3785,3813)"} true; + assume $IsValid'vec'address''($t4); + + // $t4 := opaque end: transaction_context::secondary_signers_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:89:9+28 + assume {:print "$track_return(39,25,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:90:5+1 + assume {:print "$at(112,3818,3819)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:90:5+1 + assume {:print "$at(112,3818,3819)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:90:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:90:5+1 + assume {:print "$at(112,3818,3819)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::sender [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:78:5+196 +procedure {:timeLimit 80} $1_transaction_context_sender$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := features::transaction_context_extension_enabled() on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:17+49 + assume {:print "$at(112,3109,3158)"} true; + call $t0 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,3109,3158)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,27):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 + assume {:print "$at(112,3101,3225)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:89+42 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:89+42 + assume {:print "$at(112,3181,3223)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:68+64 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(112,3160,3224)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(39,27):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 + assume {:print "$at(112,3101,3225)"} true; + assume {:print "$track_abort(39,27):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 + $t1 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:79:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + assume {:print "$at(112,3235,3252)"} true; +L2: + + // $t4 := opaque begin: transaction_context::sender_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + assume {:print "$at(112,3235,3252)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + havoc $t5; + + // if ($t5) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + if ($t5) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 +L6: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + assume {:print "$at(112,3235,3252)"} true; + assume {:print "$track_abort(39,27):", $t1} $t1 == $t1; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + assume {:print "$at(112,3235,3252)"} true; + assume $IsValid'address'($t4); + + // $t4 := opaque end: transaction_context::sender_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:80:9+17 + assume {:print "$track_return(39,27,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:81:5+1 + assume {:print "$at(112,3257,3258)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:81:5+1 + assume {:print "$at(112,3257,3258)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:81:5+1 +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:81:5+1 + assume {:print "$at(112,3257,3258)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun transaction_context::type_arg_names [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:154:5+245 +procedure {:timeLimit 80} $1_transaction_context_type_arg_names$verify(_$t0: $1_transaction_context_EntryFunctionPayload) returns ($ret0: Vec ($1_string_String)) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: Vec ($1_string_String); + var $t0: $1_transaction_context_EntryFunctionPayload; + var $temp_0'$1_transaction_context_EntryFunctionPayload': $1_transaction_context_EntryFunctionPayload; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:154:5+1 + assume {:print "$at(112,7390,7391)"} true; + assume $IsValid'$1_transaction_context_EntryFunctionPayload'($t0); + + // trace_local[payload]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:154:5+1 + assume {:print "$track_local(39,29,0):", $t0} $t0 == $t0; + + // $t1 := features::transaction_context_extension_enabled() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:17+49 + assume {:print "$at(112,7482,7531)"} true; + call $t1 := $1_features_transaction_context_extension_enabled(); + if ($abort_flag) { + assume {:print "$at(112,7482,7531)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,29):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 + assume {:print "$at(112,7474,7598)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:89+42 + assume {:print "$at(112,7554,7596)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::invalid_state($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:68+64 + call $t4 := $1_error_invalid_state($t3); + if ($abort_flag) { + assume {:print "$at(112,7533,7597)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(39,29):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 + assume {:print "$at(112,7474,7598)"} true; + assume {:print "$track_abort(39,29):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:155:9+124 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:156:9+7 + assume {:print "$at(112,7608,7615)"} true; +L2: + + // $t5 := get_field.ty_args_names($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:156:9+21 + assume {:print "$at(112,7608,7629)"} true; + $t5 := $t0->$ty_args_names; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:156:9+21 + assume {:print "$track_return(39,29,0):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:157:5+1 + assume {:print "$at(112,7634,7635)"} true; +L3: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:157:5+1 + assume {:print "$at(112,7634,7635)"} true; + $ret0 := $t5; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:157:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/transaction_context.move:157:5+1 + assume {:print "$at(112,7634,7635)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_object_ObjectCore'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_object_ObjectCore'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_fungible_asset_FungibleStore'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_fungible_asset_FungibleStore'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_fungible_asset_Metadata'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_fungible_asset_Metadata'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_coin_PairedCoinType'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_coin_PairedCoinType'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_collection_Collection'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_collection_Collection'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_object_token_Token'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_object_token_Token'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_starcoin_token_StarcoinCollection'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_starcoin_token_StarcoinCollection'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'$1_starcoin_token_StarcoinToken'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'$1_starcoin_token_StarcoinToken'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'#0'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'#0'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:52:10+50 +function $1_object_spec_exists_at'#1'(object: int): bool; +axiom (forall object: int :: +(var $$res := $1_object_spec_exists_at'#1'(object); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:121:10+97 +function $1_object_spec_create_user_derived_object_address_impl(source: int, derive_from: int): int; +axiom (forall source: int, derive_from: int :: +(var $$res := $1_object_spec_create_user_derived_object_address_impl(source, derive_from); +$IsValid'address'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:548:10+75 +function $1_object_spec_create_object_address(source: int, seed: Vec (int)): int; +axiom (forall source: int, seed: Vec (int) :: +(var $$res := $1_object_spec_create_object_address(source, seed); +$IsValid'address'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:550:10+92 +function $1_object_spec_create_user_derived_object_address(source: int, derive_from: int): int; +axiom (forall source: int, derive_from: int :: +(var $$res := $1_object_spec_create_user_derived_object_address(source, derive_from); +$IsValid'address'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +function {:inline} $1_object_$owner'#0'($1_object_ObjectCore_$memory: $Memory $1_object_ObjectCore, object: $1_object_Object'#0'): int { + $ResourceValue($1_object_ObjectCore_$memory, object->$inner)->$owner +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +function {:inline} $1_object_$object_address'$1_fungible_asset_Metadata'(object: $1_object_Object'$1_fungible_asset_Metadata'): int { + object->$inner +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+100 +function {:inline} $1_object_$is_burnt'#0'($1_object_TombStone_$memory: $Memory $1_object_TombStone, object: $1_object_Object'#0'): bool { + $ResourceExists($1_object_TombStone_$memory, object->$inner) +} + +// struct object::ConstructorRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:138:5+167 +datatype $1_object_ConstructorRef { + $1_object_ConstructorRef($self: int, $can_delete: bool) +} +function {:inline} $Update'$1_object_ConstructorRef'_self(s: $1_object_ConstructorRef, x: int): $1_object_ConstructorRef { + $1_object_ConstructorRef(x, s->$can_delete) +} +function {:inline} $Update'$1_object_ConstructorRef'_can_delete(s: $1_object_ConstructorRef, x: bool): $1_object_ConstructorRef { + $1_object_ConstructorRef(s->$self, x) +} +function $IsValid'$1_object_ConstructorRef'(s: $1_object_ConstructorRef): bool { + $IsValid'address'(s->$self) + && $IsValid'bool'(s->$can_delete) +} +function {:inline} $IsEqual'$1_object_ConstructorRef'(s1: $1_object_ConstructorRef, s2: $1_object_ConstructorRef): bool { + s1 == s2 +} + +// struct object::DeleteRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:145:5+63 +datatype $1_object_DeleteRef { + $1_object_DeleteRef($self: int) +} +function {:inline} $Update'$1_object_DeleteRef'_self(s: $1_object_DeleteRef, x: int): $1_object_DeleteRef { + $1_object_DeleteRef(x) +} +function $IsValid'$1_object_DeleteRef'(s: $1_object_DeleteRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_DeleteRef'(s1: $1_object_DeleteRef, s2: $1_object_DeleteRef): bool { + s1 == s2 +} + +// struct object::DeriveRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:167:5+63 +datatype $1_object_DeriveRef { + $1_object_DeriveRef($self: int) +} +function {:inline} $Update'$1_object_DeriveRef'_self(s: $1_object_DeriveRef, x: int): $1_object_DeriveRef { + $1_object_DeriveRef(x) +} +function $IsValid'$1_object_DeriveRef'(s: $1_object_DeriveRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_DeriveRef'(s1: $1_object_DeriveRef, s2: $1_object_DeriveRef): bool { + s1 == s2 +} + +// struct object::ExtendRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:150:5+63 +datatype $1_object_ExtendRef { + $1_object_ExtendRef($self: int) +} +function {:inline} $Update'$1_object_ExtendRef'_self(s: $1_object_ExtendRef, x: int): $1_object_ExtendRef { + $1_object_ExtendRef(x) +} +function $IsValid'$1_object_ExtendRef'(s: $1_object_ExtendRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_ExtendRef'(s1: $1_object_ExtendRef, s2: $1_object_ExtendRef): bool { + s1 == s2 +} + +// struct object::LinearTransferRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:161:5+88 +datatype $1_object_LinearTransferRef { + $1_object_LinearTransferRef($self: int, $owner: int) +} +function {:inline} $Update'$1_object_LinearTransferRef'_self(s: $1_object_LinearTransferRef, x: int): $1_object_LinearTransferRef { + $1_object_LinearTransferRef(x, s->$owner) +} +function {:inline} $Update'$1_object_LinearTransferRef'_owner(s: $1_object_LinearTransferRef, x: int): $1_object_LinearTransferRef { + $1_object_LinearTransferRef(s->$self, x) +} +function $IsValid'$1_object_LinearTransferRef'(s: $1_object_LinearTransferRef): bool { + $IsValid'address'(s->$self) + && $IsValid'address'(s->$owner) +} +function {:inline} $IsEqual'$1_object_LinearTransferRef'(s1: $1_object_LinearTransferRef, s2: $1_object_LinearTransferRef): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_object_ObjectCore' { + $1_object_Object'$1_object_ObjectCore'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_object_ObjectCore''_inner(s: $1_object_Object'$1_object_ObjectCore', x: int): $1_object_Object'$1_object_ObjectCore' { + $1_object_Object'$1_object_ObjectCore'(x) +} +function $IsValid'$1_object_Object'$1_object_ObjectCore''(s: $1_object_Object'$1_object_ObjectCore'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_object_ObjectCore''(s1: $1_object_Object'$1_object_ObjectCore', s2: $1_object_Object'$1_object_ObjectCore'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_fungible_asset_FungibleStore' { + $1_object_Object'$1_fungible_asset_FungibleStore'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_fungible_asset_FungibleStore''_inner(s: $1_object_Object'$1_fungible_asset_FungibleStore', x: int): $1_object_Object'$1_fungible_asset_FungibleStore' { + $1_object_Object'$1_fungible_asset_FungibleStore'(x) +} +function $IsValid'$1_object_Object'$1_fungible_asset_FungibleStore''(s: $1_object_Object'$1_fungible_asset_FungibleStore'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_fungible_asset_FungibleStore''(s1: $1_object_Object'$1_fungible_asset_FungibleStore', s2: $1_object_Object'$1_fungible_asset_FungibleStore'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_fungible_asset_Metadata' { + $1_object_Object'$1_fungible_asset_Metadata'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_fungible_asset_Metadata''_inner(s: $1_object_Object'$1_fungible_asset_Metadata', x: int): $1_object_Object'$1_fungible_asset_Metadata' { + $1_object_Object'$1_fungible_asset_Metadata'(x) +} +function $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s: $1_object_Object'$1_fungible_asset_Metadata'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''(s1: $1_object_Object'$1_fungible_asset_Metadata', s2: $1_object_Object'$1_fungible_asset_Metadata'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_collection_Collection' { + $1_object_Object'$1_collection_Collection'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_collection_Collection''_inner(s: $1_object_Object'$1_collection_Collection', x: int): $1_object_Object'$1_collection_Collection' { + $1_object_Object'$1_collection_Collection'(x) +} +function $IsValid'$1_object_Object'$1_collection_Collection''(s: $1_object_Object'$1_collection_Collection'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_collection_Collection''(s1: $1_object_Object'$1_collection_Collection', s2: $1_object_Object'$1_collection_Collection'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_object_token_Token' { + $1_object_Object'$1_object_token_Token'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_object_token_Token''_inner(s: $1_object_Object'$1_object_token_Token', x: int): $1_object_Object'$1_object_token_Token' { + $1_object_Object'$1_object_token_Token'(x) +} +function $IsValid'$1_object_Object'$1_object_token_Token''(s: $1_object_Object'$1_object_token_Token'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_object_token_Token''(s1: $1_object_Object'$1_object_token_Token', s2: $1_object_Object'$1_object_token_Token'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_starcoin_token_StarcoinCollection' { + $1_object_Object'$1_starcoin_token_StarcoinCollection'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_starcoin_token_StarcoinCollection''_inner(s: $1_object_Object'$1_starcoin_token_StarcoinCollection', x: int): $1_object_Object'$1_starcoin_token_StarcoinCollection' { + $1_object_Object'$1_starcoin_token_StarcoinCollection'(x) +} +function $IsValid'$1_object_Object'$1_starcoin_token_StarcoinCollection''(s: $1_object_Object'$1_starcoin_token_StarcoinCollection'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_starcoin_token_StarcoinCollection''(s1: $1_object_Object'$1_starcoin_token_StarcoinCollection', s2: $1_object_Object'$1_starcoin_token_StarcoinCollection'): bool { + s1 == s2 +} + +// struct object::Object at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'$1_starcoin_token_StarcoinToken' { + $1_object_Object'$1_starcoin_token_StarcoinToken'($inner: int) +} +function {:inline} $Update'$1_object_Object'$1_starcoin_token_StarcoinToken''_inner(s: $1_object_Object'$1_starcoin_token_StarcoinToken', x: int): $1_object_Object'$1_starcoin_token_StarcoinToken' { + $1_object_Object'$1_starcoin_token_StarcoinToken'(x) +} +function $IsValid'$1_object_Object'$1_starcoin_token_StarcoinToken''(s: $1_object_Object'$1_starcoin_token_StarcoinToken'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'$1_starcoin_token_StarcoinToken''(s1: $1_object_Object'$1_starcoin_token_StarcoinToken', s2: $1_object_Object'$1_starcoin_token_StarcoinToken'): bool { + s1 == s2 +} + +// struct object::Object<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'#0' { + $1_object_Object'#0'($inner: int) +} +function {:inline} $Update'$1_object_Object'#0''_inner(s: $1_object_Object'#0', x: int): $1_object_Object'#0' { + $1_object_Object'#0'(x) +} +function $IsValid'$1_object_Object'#0''(s: $1_object_Object'#0'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'#0''(s1: $1_object_Object'#0', s2: $1_object_Object'#0'): bool { + s1 == s2 +} + +// struct object::Object<#1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:133:5+78 +datatype $1_object_Object'#1' { + $1_object_Object'#1'($inner: int) +} +function {:inline} $Update'$1_object_Object'#1''_inner(s: $1_object_Object'#1', x: int): $1_object_Object'#1' { + $1_object_Object'#1'(x) +} +function $IsValid'$1_object_Object'#1''(s: $1_object_Object'#1'): bool { + $IsValid'address'(s->$inner) +} +function {:inline} $IsEqual'$1_object_Object'#1''(s1: $1_object_Object'#1', s2: $1_object_Object'#1'): bool { + s1 == s2 +} + +// struct object::ObjectCore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:102:5+551 +datatype $1_object_ObjectCore { + $1_object_ObjectCore($guid_creation_num: int, $owner: int, $allow_ungated_transfer: bool, $transfer_events: $1_event_EventHandle'$1_object_TransferEvent') +} +function {:inline} $Update'$1_object_ObjectCore'_guid_creation_num(s: $1_object_ObjectCore, x: int): $1_object_ObjectCore { + $1_object_ObjectCore(x, s->$owner, s->$allow_ungated_transfer, s->$transfer_events) +} +function {:inline} $Update'$1_object_ObjectCore'_owner(s: $1_object_ObjectCore, x: int): $1_object_ObjectCore { + $1_object_ObjectCore(s->$guid_creation_num, x, s->$allow_ungated_transfer, s->$transfer_events) +} +function {:inline} $Update'$1_object_ObjectCore'_allow_ungated_transfer(s: $1_object_ObjectCore, x: bool): $1_object_ObjectCore { + $1_object_ObjectCore(s->$guid_creation_num, s->$owner, x, s->$transfer_events) +} +function {:inline} $Update'$1_object_ObjectCore'_transfer_events(s: $1_object_ObjectCore, x: $1_event_EventHandle'$1_object_TransferEvent'): $1_object_ObjectCore { + $1_object_ObjectCore(s->$guid_creation_num, s->$owner, s->$allow_ungated_transfer, x) +} +function $IsValid'$1_object_ObjectCore'(s: $1_object_ObjectCore): bool { + $IsValid'u64'(s->$guid_creation_num) + && $IsValid'address'(s->$owner) + && $IsValid'bool'(s->$allow_ungated_transfer) + && $IsValid'$1_event_EventHandle'$1_object_TransferEvent''(s->$transfer_events) +} +function {:inline} $IsEqual'$1_object_ObjectCore'(s1: $1_object_ObjectCore, s2: $1_object_ObjectCore): bool { + s1 == s2 +} +var $1_object_ObjectCore_$memory: $Memory $1_object_ObjectCore; + +// struct object::TombStone at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:116:5+170 +datatype $1_object_TombStone { + $1_object_TombStone($original_owner: int) +} +function {:inline} $Update'$1_object_TombStone'_original_owner(s: $1_object_TombStone, x: int): $1_object_TombStone { + $1_object_TombStone(x) +} +function $IsValid'$1_object_TombStone'(s: $1_object_TombStone): bool { + $IsValid'address'(s->$original_owner) +} +function {:inline} $IsEqual'$1_object_TombStone'(s1: $1_object_TombStone, s2: $1_object_TombStone): bool { + s1 == s2 +} +var $1_object_TombStone_$memory: $Memory $1_object_TombStone; + +// struct object::Transfer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:180:5+108 +datatype $1_object_Transfer { + $1_object_Transfer($object: int, $from: int, $to: int) +} +function {:inline} $Update'$1_object_Transfer'_object(s: $1_object_Transfer, x: int): $1_object_Transfer { + $1_object_Transfer(x, s->$from, s->$to) +} +function {:inline} $Update'$1_object_Transfer'_from(s: $1_object_Transfer, x: int): $1_object_Transfer { + $1_object_Transfer(s->$object, x, s->$to) +} +function {:inline} $Update'$1_object_Transfer'_to(s: $1_object_Transfer, x: int): $1_object_Transfer { + $1_object_Transfer(s->$object, s->$from, x) +} +function $IsValid'$1_object_Transfer'(s: $1_object_Transfer): bool { + $IsValid'address'(s->$object) + && $IsValid'address'(s->$from) + && $IsValid'address'(s->$to) +} +function {:inline} $IsEqual'$1_object_Transfer'(s1: $1_object_Transfer, s2: $1_object_Transfer): bool { + s1 == s2 +} + +// struct object::TransferEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:172:5+113 +datatype $1_object_TransferEvent { + $1_object_TransferEvent($object: int, $from: int, $to: int) +} +function {:inline} $Update'$1_object_TransferEvent'_object(s: $1_object_TransferEvent, x: int): $1_object_TransferEvent { + $1_object_TransferEvent(x, s->$from, s->$to) +} +function {:inline} $Update'$1_object_TransferEvent'_from(s: $1_object_TransferEvent, x: int): $1_object_TransferEvent { + $1_object_TransferEvent(s->$object, x, s->$to) +} +function {:inline} $Update'$1_object_TransferEvent'_to(s: $1_object_TransferEvent, x: int): $1_object_TransferEvent { + $1_object_TransferEvent(s->$object, s->$from, x) +} +function $IsValid'$1_object_TransferEvent'(s: $1_object_TransferEvent): bool { + $IsValid'address'(s->$object) + && $IsValid'address'(s->$from) + && $IsValid'address'(s->$to) +} +function {:inline} $IsEqual'$1_object_TransferEvent'(s1: $1_object_TransferEvent, s2: $1_object_TransferEvent): bool { + s1 == s2 +} + +// struct object::TransferRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:155:5+65 +datatype $1_object_TransferRef { + $1_object_TransferRef($self: int) +} +function {:inline} $Update'$1_object_TransferRef'_self(s: $1_object_TransferRef, x: int): $1_object_TransferRef { + $1_object_TransferRef(x) +} +function $IsValid'$1_object_TransferRef'(s: $1_object_TransferRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_TransferRef'(s1: $1_object_TransferRef, s2: $1_object_TransferRef): bool { + s1 == s2 +} + +// struct object::Untransferable at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:123:5+32 +datatype $1_object_Untransferable { + $1_object_Untransferable($dummy_field: bool) +} +function {:inline} $Update'$1_object_Untransferable'_dummy_field(s: $1_object_Untransferable, x: bool): $1_object_Untransferable { + $1_object_Untransferable(x) +} +function $IsValid'$1_object_Untransferable'(s: $1_object_Untransferable): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_object_Untransferable'(s1: $1_object_Untransferable, s2: $1_object_Untransferable): bool { + s1 == s2 +} +var $1_object_Untransferable_$memory: $Memory $1_object_Untransferable; + +// fun object::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+180 +procedure {:inline 1} $1_object_new_event_handle'$1_collection_MutationEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_collection_MutationEvent') +{ + // declare local variables + var $t1: $1_object_ObjectCore; + var $t2: $1_guid_GUID; + var $t3: $1_object_ObjectCore; + var $t4: $1_guid_GUID; + var $t5: int; + var $t6: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_collection_MutationEvent'': $1_event_EventHandle'$1_collection_MutationEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t1 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t2, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t1), signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t2 == $1_guid_GUID($1_guid_ID($t1->$guid_creation_num, $1_signer_$address_of($t0)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume {:print "$at(49,17988,17989)"} true; + assume {:print "$track_local(40,36,0):", $t0} $t0 == $t0; + + // assume Identical($t3, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // $t4 := object::create_guid($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:33+19 + assume {:print "$at(49,18142,18161)"} true; + call $t4 := $1_object_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,18142,18161)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := event::new_event_handle<#0>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + call $t6 := $1_event_new_event_handle'$1_collection_MutationEvent'($t4); + if ($abort_flag) { + assume {:print "$at(49,18118,18162)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + assume {:print "$track_return(40,36,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::new_event_handle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+180 +procedure {:inline 1} $1_object_new_event_handle'$1_object_token_MutationEvent'(_$t0: $signer) returns ($ret0: $1_event_EventHandle'$1_object_token_MutationEvent') +{ + // declare local variables + var $t1: $1_object_ObjectCore; + var $t2: $1_guid_GUID; + var $t3: $1_object_ObjectCore; + var $t4: $1_guid_GUID; + var $t5: int; + var $t6: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'$1_object_token_MutationEvent'': $1_event_EventHandle'$1_object_token_MutationEvent'; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t1 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t2, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t1), signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t2 == $1_guid_GUID($1_guid_ID($t1->$guid_creation_num, $1_signer_$address_of($t0)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume {:print "$at(49,17988,17989)"} true; + assume {:print "$track_local(40,36,0):", $t0} $t0 == $t0; + + // assume Identical($t3, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // $t4 := object::create_guid($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:33+19 + assume {:print "$at(49,18142,18161)"} true; + call $t4 := $1_object_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,18142,18161)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := event::new_event_handle<#0>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + call $t6 := $1_event_new_event_handle'$1_object_token_MutationEvent'($t4); + if ($abort_flag) { + assume {:print "$at(49,18118,18162)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + assume {:print "$track_return(40,36,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::new_event_handle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+180 +procedure {:timeLimit 80} $1_object_new_event_handle$verify(_$t0: $signer) returns ($ret0: $1_event_EventHandle'#0') +{ + // declare local variables + var $t1: $1_object_ObjectCore; + var $t2: $1_guid_GUID; + var $t3: $1_object_ObjectCore; + var $t4: $1_guid_GUID; + var $t5: int; + var $t6: $1_event_EventHandle'#0'; + var $t0: $signer; + var $temp_0'$1_event_EventHandle'#0'': $1_event_EventHandle'#0'; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#66: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume {:print "$at(49,17988,17989)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t1, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t1 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t2, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t1), signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t2 == $1_guid_GUID($1_guid_ID($t1->$guid_creation_num, $1_signer_$address_of($t0)))); + + // @66 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume {:print "$at(49,17988,17989)"} true; + $1_object_ObjectCore_$memory#66 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:411:5+1 + assume {:print "$track_local(40,36,0):", $t0} $t0 == $t0; + + // assume Identical($t3, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // $t4 := object::create_guid($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:33+19 + assume {:print "$at(49,18142,18161)"} true; + call $t4 := $1_object_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,18142,18161)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := event::new_event_handle<#0>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + call $t6 := $1_event_new_event_handle'#0'($t4); + if ($abort_flag) { + assume {:print "$at(49,18118,18162)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,36):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:414:9+44 + assume {:print "$track_return(40,36,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; +L1: + + // assert Not(Not(exists[@66](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:361:9+58 + assume {:print "$at(50,14807,14865)"} true; + assert {:msg "assert_failed(50,14807,14865): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#66, $1_signer_$address_of($t0)); + + // assert Not(Gt(Add(select object::ObjectCore.guid_creation_num($t1), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:364:9+54 + assume {:print "$at(50,14974,15028)"} true; + assert {:msg "assert_failed(50,14974,15028): function does not abort under this condition"} + !(($t1->$guid_creation_num + 1) > 18446744073709551615); + + // assert Eq>($t6, pack event::EventHandle<#0>(0, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:372:9+94 + assume {:print "$at(50,15232,15326)"} true; + assert {:msg "assert_failed(50,15232,15326): post-condition does not hold"} + $IsEqual'$1_event_EventHandle'#0''($t6, $1_event_EventHandle'#0'(0, $t2)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:372:9+94 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:415:5+1 + assume {:print "$at(49,18167,18168)"} true; +L2: + + // assert Or(Not(exists[@66](signer::$address_of[]($t0))), Gt(Add(select object::ObjectCore.guid_creation_num($t1), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:358:5+625 + assume {:print "$at(50,14707,15332)"} true; + assert {:msg "assert_failed(50,14707,15332): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#66, $1_signer_$address_of($t0)) || (($t1->$guid_creation_num + 1) > 18446744073709551615)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:358:5+625 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_guid [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+252 +procedure {:inline 1} $1_object_create_guid(_$t0: $signer) returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_object_ObjectCore); + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: int; + var $t6: $Mutation ($1_object_ObjectCore); + var $t7: $Mutation (int); + var $t8: $1_guid_GUID; + var $t0: $signer; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+1 + assume {:print "$at(49,17693,17694)"} true; + assume {:print "$track_local(40,7,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:405:20+26 + assume {:print "$at(49,17786,17812)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,17786,17812)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:405:13+4 + assume {:print "$track_local(40,7,1):", $t4} $t4 == $t4; + + // $t6 := borrow_global($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:406:27+17 + assume {:print "$at(49,17840,17857)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t4)); + } + if ($abort_flag) { + assume {:print "$at(49,17840,17857)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object_data]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:406:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t6); + assume {:print "$track_local(40,7,2):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t7 := borrow_field.guid_creation_num($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:28+34 + assume {:print "$at(49,17904,17938)"} true; + $t7 := $ChildMutation($t6, 0, $Dereference($t6)->$guid_creation_num); + + // $t8 := guid::create($t4, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + call $t8,$t7 := $1_guid_create($t4, $t7); + if ($abort_flag) { + assume {:print "$at(49,17885,17939)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t6).guid_creation_num (u64)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + $t6 := $UpdateMutation($t6, $Update'$1_object_ObjectCore'_guid_creation_num($Dereference($t6), $Dereference($t7))); + + // write_back[object::ObjectCore@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + assume {:print "$track_return(40,7,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 + assume {:print "$at(49,17944,17945)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 + assume {:print "$at(49,17944,17945)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 + assume {:print "$at(49,17944,17945)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_guid [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+252 +procedure {:timeLimit 80} $1_object_create_guid$verify(_$t0: $signer) returns ($ret0: $1_guid_GUID) +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_object_ObjectCore); + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: int; + var $t6: $Mutation ($1_object_ObjectCore); + var $t7: $Mutation (int); + var $t8: $1_guid_GUID; + var $t0: $signer; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#64: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+1 + assume {:print "$at(49,17693,17694)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t3, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // @64 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+1 + assume {:print "$at(49,17693,17694)"} true; + $1_object_ObjectCore_$memory#64 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:404:5+1 + assume {:print "$track_local(40,7,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:405:20+26 + assume {:print "$at(49,17786,17812)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,17786,17812)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:405:13+4 + assume {:print "$track_local(40,7,1):", $t4} $t4 == $t4; + + // $t6 := borrow_global($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:406:27+17 + assume {:print "$at(49,17840,17857)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t4)); + } + if ($abort_flag) { + assume {:print "$at(49,17840,17857)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object_data]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:406:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t6); + assume {:print "$track_local(40,7,2):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t7 := borrow_field.guid_creation_num($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:28+34 + assume {:print "$at(49,17904,17938)"} true; + $t7 := $ChildMutation($t6, 0, $Dereference($t6)->$guid_creation_num); + + // $t8 := guid::create($t4, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + call $t8,$t7 := $1_guid_create($t4, $t7); + if ($abort_flag) { + assume {:print "$at(49,17885,17939)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,7):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t6).guid_creation_num (u64)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + $t6 := $UpdateMutation($t6, $Update'$1_object_ObjectCore'_guid_creation_num($Dereference($t6), $Dereference($t7))); + + // write_back[object::ObjectCore@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:407:9+54 + assume {:print "$track_return(40,7,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 + assume {:print "$at(49,17944,17945)"} true; +L1: + + // assert Not(Not(exists[@64](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:345:9+58 + assume {:print "$at(50,14272,14330)"} true; + assert {:msg "assert_failed(50,14272,14330): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#64, $1_signer_$address_of($t0)); + + // assert Not(Gt(Add(select object::ObjectCore.guid_creation_num($t3), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:348:9+54 + assume {:print "$at(50,14439,14493)"} true; + assert {:msg "assert_failed(50,14439,14493): function does not abort under this condition"} + !(($t3->$guid_creation_num + 1) > 18446744073709551615); + + // assert Eq($t8, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t3), signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:350:9+192 + assume {:print "$at(50,14503,14695)"} true; + assert {:msg "assert_failed(50,14503,14695): post-condition does not hold"} + $IsEqual'$1_guid_GUID'($t8, $1_guid_GUID($1_guid_ID($t3->$guid_creation_num, $1_signer_$address_of($t0)))); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:350:9+192 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:408:5+1 + assume {:print "$at(49,17944,17945)"} true; +L2: + + // assert Or(Not(exists[@64](signer::$address_of[]($t0))), Gt(Add(select object::ObjectCore.guid_creation_num($t3), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:344:5+485 + assume {:print "$at(50,14216,14701)"} true; + assert {:msg "assert_failed(50,14216,14701): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#64, $1_signer_$address_of($t0)) || (($t3->$guid_creation_num + 1) > 18446744073709551615)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:344:5+485 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::address_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:387:5+95 +procedure {:inline 1} $1_object_address_from_constructor_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:387:5+1 + assume {:print "$at(49,17123,17124)"} true; + assume {:print "$track_local(40,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:388:9+8 + assume {:print "$at(49,17204,17212)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:388:9+8 + assume {:print "$track_return(40,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:389:5+1 + assume {:print "$at(49,17217,17218)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:389:5+1 + assume {:print "$at(49,17217,17218)"} true; + $ret0 := $t1; + return; + +} + +// fun object::address_from_constructor_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:387:5+95 +procedure {:timeLimit 80} $1_object_address_from_constructor_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:387:5+1 + assume {:print "$at(49,17123,17124)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:387:5+1 + assume {:print "$track_local(40,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:388:9+8 + assume {:print "$at(49,17204,17212)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:388:9+8 + assume {:print "$track_return(40,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:389:5+1 + assume {:print "$at(49,17217,17218)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:389:5+1 + assume {:print "$at(49,17217,17218)"} true; + assert {:msg "assert_failed(49,17217,17218): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:389:5+1 + $ret0 := $t1; + return; + +} + +// fun object::address_from_delete_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:420:5+85 +procedure {:inline 1} $1_object_address_from_delete_ref(_$t0: $1_object_DeleteRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_DeleteRef; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:420:5+1 + assume {:print "$at(49,18259,18260)"} true; + assume {:print "$track_local(40,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:421:9+8 + assume {:print "$at(49,18330,18338)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:421:9+8 + assume {:print "$track_return(40,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:422:5+1 + assume {:print "$at(49,18343,18344)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:422:5+1 + assume {:print "$at(49,18343,18344)"} true; + $ret0 := $t1; + return; + +} + +// fun object::address_from_delete_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:420:5+85 +procedure {:timeLimit 80} $1_object_address_from_delete_ref$verify(_$t0: $1_object_DeleteRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_DeleteRef; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:420:5+1 + assume {:print "$at(49,18259,18260)"} true; + assume $IsValid'$1_object_DeleteRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:420:5+1 + assume {:print "$track_local(40,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:421:9+8 + assume {:print "$at(49,18330,18338)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:421:9+8 + assume {:print "$track_return(40,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:422:5+1 + assume {:print "$at(49,18343,18344)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:422:5+1 + assume {:print "$at(49,18343,18344)"} true; + assert {:msg "assert_failed(49,18343,18344): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:422:5+1 + $ret0 := $t1; + return; + +} + +// fun object::address_from_extend_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:454:5+85 +procedure {:inline 1} $1_object_address_from_extend_ref(_$t0: $1_object_ExtendRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:454:5+1 + assume {:print "$at(49,19318,19319)"} true; + assume {:print "$track_local(40,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:455:9+8 + assume {:print "$at(49,19389,19397)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:455:9+8 + assume {:print "$track_return(40,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:456:5+1 + assume {:print "$at(49,19402,19403)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:456:5+1 + assume {:print "$at(49,19402,19403)"} true; + $ret0 := $t1; + return; + +} + +// fun object::address_from_extend_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:454:5+85 +procedure {:timeLimit 80} $1_object_address_from_extend_ref$verify(_$t0: $1_object_ExtendRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:454:5+1 + assume {:print "$at(49,19318,19319)"} true; + assume $IsValid'$1_object_ExtendRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:454:5+1 + assume {:print "$track_local(40,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:455:9+8 + assume {:print "$at(49,19389,19397)"} true; + $t1 := $t0->$self; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:455:9+8 + assume {:print "$track_return(40,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:456:5+1 + assume {:print "$at(49,19402,19403)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:456:5+1 + assume {:print "$at(49,19402,19403)"} true; + assert {:msg "assert_failed(49,19402,19403): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:456:5+1 + $ret0 := $t1; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_object_ObjectCore'(_$t0: int) returns ($ret0: $1_object_Object'$1_object_ObjectCore') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_object_ObjectCore'; + var $t0: int; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_object_ObjectCore'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_object_ObjectCore'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_fungible_asset_FungibleStore'(_$t0: int) returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t0: int; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_fungible_asset_FungibleStore'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_fungible_asset_FungibleStore'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_fungible_asset_Metadata'(_$t0: int) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: int; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_fungible_asset_Metadata'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_fungible_asset_Metadata'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_collection_Collection'(_$t0: int) returns ($ret0: $1_object_Object'$1_collection_Collection') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t0: int; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_collection_Collection'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_collection_Collection'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_object_token_Token'(_$t0: int) returns ($ret0: $1_object_Object'$1_object_token_Token') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_object_token_Token'; + var $t0: int; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_object_token_Token'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_object_token_Token'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'(_$t0: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinCollection') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t0: int; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_starcoin_token_StarcoinCollection'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_starcoin_token_StarcoinCollection'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'$1_starcoin_token_StarcoinToken'(_$t0: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t0: int; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'$1_starcoin_token_StarcoinToken'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'$1_starcoin_token_StarcoinToken'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'#0'(_$t0: int) returns ($ret0: $1_object_Object'#0') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'#0'; + var $t0: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'#0'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'#0'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object<#1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:inline 1} $1_object_address_to_object'#1'(_$t0: int) returns ($ret0: $1_object_Object'#1') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'#1'; + var $t0: int; + var $temp_0'$1_object_Object'#1'': $1_object_Object'#1'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'#1'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'#1'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::address_to_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+278 +procedure {:timeLimit 80} $1_object_address_to_object$verify(_$t0: int) returns ($ret0: $1_object_Object'#0') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'#0'; + var $t0: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $1_object_ObjectCore_$memory#68: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$at(49,8311,8312)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @68 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + $1_object_ObjectCore_$memory#68 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:197:5+1 + assume {:print "$track_local(40,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:17+6 + assume {:print "$at(49,8394,8400)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 +L0: + + // $t2 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:62+22 + assume {:print "$at(49,8439,8461)"} true; + $t2 := 2; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:45+40 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(49,8422,8462)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + assume {:print "$at(49,8386,8463)"} true; + assume {:print "$track_abort(40,3):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + $t4 := $t3; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:198:9+77 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:30+6 + assume {:print "$at(49,8494,8500)"} true; +L2: + + // $t5 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume {:print "$at(49,8481,8501)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsValid'bool'($t5); + + // assume Eq($t5, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + assume $IsEqual'bool'($t5, $1_object_spec_exists_at'#0'($t0)); + + // $t5 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:17+20 + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 +L3: + + // $t6 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:56+24 + assume {:print "$at(49,8520,8544)"} true; + $t6 := 7; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:39+42 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(49,8503,8545)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,3):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + assume {:print "$at(49,8473,8546)"} true; + assume {:print "$track_abort(40,3):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:199:9+73 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:28+6 + assume {:print "$at(49,8575,8581)"} true; +L5: + + // $t8 := pack object::Object<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$at(49,8556,8583)"} true; + $t8 := $1_object_Object'#0'($t0); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:200:9+27 + assume {:print "$track_return(40,3,0):", $t8} $t8 == $t8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L6: + + // assert Not(Not(exists[@68]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:61:9+38 + assume {:print "$at(50,2951,2989)"} true; + assert {:msg "assert_failed(50,2951,2989): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#68, $t0); + + // assert Not(Not(object::spec_exists_at[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:62:9+37 + assume {:print "$at(50,2998,3035)"} true; + assert {:msg "assert_failed(50,2998,3035): function does not abort under this condition"} + !!$1_object_spec_exists_at'#0'($t0); + + // assert Eq>($t8, pack object::Object<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:63:9+46 + assume {:print "$at(50,3044,3090)"} true; + assert {:msg "assert_failed(50,3044,3090): post-condition does not hold"} + $IsEqual'$1_object_Object'#0''($t8, $1_object_Object'#0'($t0)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:63:9+46 + $ret0 := $t8; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:201:5+1 + assume {:print "$at(49,8588,8589)"} true; +L7: + + // assert Or(Not(exists[@68]($t0)), Not(object::spec_exists_at[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:60:5+214 + assume {:print "$at(50,2882,3096)"} true; + assert {:msg "assert_failed(50,2882,3096): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#68, $t0) || !$1_object_spec_exists_at'#0'($t0)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:60:5+214 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::burn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+415 +procedure {:timeLimit 80} $1_object_burn$verify(_$t0: $signer, _$t1: $1_object_Object'#0') returns () +{ + // declare local variables + var $t2: $signer; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_object_ObjectCore); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $signer; + var $t16: $1_object_TombStone; + var $t17: int; + var $t18: $Mutation ($1_object_ObjectCore); + var $t19: int; + var $t20: bool; + var $t21: bool; + var $t22: int; + var $t23: $1_object_Transfer; + var $t24: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t25: int; + var $t26: $1_object_TransferEvent; + var $t27: $Mutation (int); + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#74: $Memory $1_object_ObjectCore; + var $1_object_TombStone_$memory#75: $Memory $1_object_TombStone; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume {:print "$at(49,26288,26289)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume Identical($t8, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:480:9+34 + assume {:print "$at(50,18920,18954)"} true; + assume ($t8 == $t1->$inner); + + // @74 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume {:print "$at(49,26288,26289)"} true; + $1_object_ObjectCore_$memory#74 := $1_object_ObjectCore_$memory; + + // @75 := save_mem(object::TombStone) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + $1_object_TombStone_$memory#75 := $1_object_TombStone_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume {:print "$track_local(40,4,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:631:5+1 + assume {:print "$track_local(40,4,1):", $t1} $t1 == $t1; + + // $t9 := signer::address_of($t0) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:632:30+25 + assume {:print "$at(49,26404,26429)"} true; + call $t9 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,26404,26429)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // trace_local[original_owner]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:632:13+14 + assume {:print "$track_local(40,4,6):", $t9} $t9 == $t9; + + // $t11 := object::is_owner<#0>($t1, $t9) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:17+32 + assume {:print "$at(49,26447,26479)"} true; + call $t11 := $1_object_is_owner'#0'($t1, $t9); + if ($abort_flag) { + assume {:print "$at(49,26447,26479)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 + assume {:print "$at(49,26439,26525)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:76+17 +L0: + + // $t12 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:76+17 + assume {:print "$at(49,26506,26523)"} true; + $t12 := 4; + assume $IsValid'u64'($t12); + + // $t13 := error::permission_denied($t12) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:51+43 + call $t13 := $1_error_permission_denied($t12); + if ($abort_flag) { + assume {:print "$at(49,26481,26524)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 + assume {:print "$at(49,26439,26525)"} true; + assume {:print "$track_abort(40,4):", $t13} $t13 == $t13; + + // $t10 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 + $t10 := $t13; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:633:9+86 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:634:27+6 + assume {:print "$at(49,26553,26559)"} true; +L2: + + // $t14 := get_field>.inner($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:634:27+12 + assume {:print "$at(49,26553,26565)"} true; + $t14 := $t1->$inner; + + // trace_local[object_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:634:13+11 + assume {:print "$track_local(40,4,4):", $t14} $t14 == $t14; + + // $t15 := opaque begin: create_signer::create_signer($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:18+26 + assume {:print "$at(49,26584,26610)"} true; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:18+26 + assume $IsValid'signer'($t15) && $1_signer_is_txn_signer($t15) && $1_signer_is_txn_signer_addr($t15->$addr); + + // assume Eq
(signer::$address_of($t15), $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:18+26 + assume $IsEqual'address'($1_signer_$address_of($t15), $t14); + + // $t15 := opaque end: create_signer::create_signer($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:18+26 + + // $t16 := pack object::TombStone($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:46+28 + $t16 := $1_object_TombStone($t9); + + // move_to($t16, $t15) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:635:9+7 + if ($ResourceExists($1_object_TombStone_$memory, $t15->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_TombStone_$memory := $ResourceUpdate($1_object_TombStone_$memory, $t15->$addr, $t16); + } + if ($abort_flag) { + assume {:print "$at(49,26575,26582)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // $t17 := 0xffffffffffffffffffffffffffffffff at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:636:41+12 + assume {:print "$at(49,26683,26695)"} true; + $t17 := 340282366920938463463374607431768211455; + assume $IsValid'address'($t17); + + // trace_local[to#224]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:52+2 + assume {:print "$at(49,23388,23390)"} true; + assume {:print "$track_local(40,4,7):", $t17} $t17 == $t17; + + // trace_local[object#223]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:35+6 + assume {:print "$track_local(40,4,3):", $t14} $t14 == $t14; + + // $t18 := borrow_global($t14) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:27+17 + assume {:print "$at(49,23449,23466)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(49,23449,23466)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // trace_local[object_core#225]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t18); + assume {:print "$track_local(40,4,5):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t19 := get_field.owner($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:13+17 + assume {:print "$at(49,23500,23517)"} true; + $t19 := $Dereference($t18)->$owner; + + // $t20 := !=($t19, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:31+2 + $t20 := !$IsEqual'address'($t19, $t17); + + // if ($t20) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + if ($t20) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; +L4: + + // $t21 := features::module_event_migration_enabled() on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; + call $t21 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,23543,23590)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,4):", $t10} $t10 == $t10; + goto L9; + } + + // if ($t21) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:13+279 + if ($t21) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:565:25+6 + assume {:print "$at(49,23678,23684)"} true; +L6: + + // $t22 := get_field.owner($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:566:31+17 + assume {:print "$at(49,23716,23733)"} true; + $t22 := $Dereference($t18)->$owner; + + // $t23 := pack object::Transfer($t14, $t22, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:564:21+141 + assume {:print "$at(49,23643,23784)"} true; + $t23 := $1_object_Transfer($t14, $t22, $t17); + + // opaque begin: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + assume {:print "$at(49,23610,23803)"} true; + + // opaque end: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:22+11 + assume {:print "$at(49,23872,23883)"} true; +L5: + + // $t24 := borrow_field.transfer_events($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:17+32 + assume {:print "$at(49,23867,23899)"} true; + $t24 := $ChildMutation($t18, 3, $Dereference($t18)->$transfer_events); + + // $t25 := get_field.owner($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:575:27+17 + assume {:print "$at(49,23987,24004)"} true; + $t25 := $Dereference($t18)->$owner; + + // $t26 := pack object::TransferEvent($t14, $t25, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:573:17+130 + assume {:print "$at(49,23917,24047)"} true; + $t26 := $1_object_TransferEvent($t14, $t25, $t17); + + // opaque begin: event::emit_event($t24, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + assume {:print "$at(49,23832,24062)"} true; + + // opaque end: event::emit_event($t24, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + + // write_back[Reference($t18).transfer_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + $t18 := $UpdateMutation($t18, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t18), $Dereference($t24))); + + // $t27 := borrow_field.owner($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+17 + assume {:print "$at(49,24076,24093)"} true; + $t27 := $ChildMutation($t18, 1, $Dereference($t18)->$owner); + + // write_ref($t27, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t27 := $UpdateMutation($t27, $t17); + + // write_back[Reference($t18).owner (address)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t18 := $UpdateMutation($t18, $Update'$1_object_ObjectCore'_owner($Dereference($t18), $Dereference($t27))); + + // write_back[object::ObjectCore@]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:35+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; +L3: + + // drop($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:636:54+1 + assume {:print "$at(49,26696,26697)"} true; +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:637:5+1 + assume {:print "$at(49,26702,26703)"} true; +L8: + + // assert Not(Not(exists[@74]($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:481:9+46 + assume {:print "$at(50,18963,19009)"} true; + assert {:msg "assert_failed(50,18963,19009): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#74, $t8); + + // assert Not(Neq
(object::$owner[@74]<#0>($t1), signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:482:9+53 + assume {:print "$at(50,19018,19071)"} true; + assert {:msg "assert_failed(50,19018,19071): function does not abort under this condition"} + !!$IsEqual'address'($1_object_$owner'#0'($1_object_ObjectCore_$memory#74, $t1), $1_signer_$address_of($t0)); + + // assert Not(object::$is_burnt[@75]<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:483:9+27 + assume {:print "$at(50,19080,19107)"} true; + assert {:msg "assert_failed(50,19080,19107): function does not abort under this condition"} + !$1_object_$is_burnt'#0'($1_object_TombStone_$memory#75, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:483:9+27 + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:637:5+1 + assume {:print "$at(49,26702,26703)"} true; +L9: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:637:5+1 + assume {:print "$at(49,26702,26703)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun object::owner [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +procedure {:inline 1} $1_object_owner'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$at(49,27745,27746)"} true; + assume {:print "$track_local(40,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:32+12 + assume {:print "$at(49,27868,27880)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27895,27935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + assume {:print "$track_abort(40,41):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+6 + assume {:print "$at(49,27982,27988)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+12 + assume {:print "$at(49,27982,27994)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27956,27969)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.owner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + $t8 := $t7->$owner; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + assume {:print "$track_return(40,41,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::owner [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +procedure {:inline 1} $1_object_owner'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: int; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$at(49,27745,27746)"} true; + assume {:print "$track_local(40,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:32+12 + assume {:print "$at(49,27868,27880)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27895,27935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + assume {:print "$track_abort(40,41):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+6 + assume {:print "$at(49,27982,27988)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+12 + assume {:print "$at(49,27982,27994)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27956,27969)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.owner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + $t8 := $t7->$owner; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + assume {:print "$track_return(40,41,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::owner [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +procedure {:inline 1} $1_object_owner'$1_object_token_Token'(_$t0: $1_object_Object'$1_object_token_Token') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: int; + var $t0: $1_object_Object'$1_object_token_Token'; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$at(49,27745,27746)"} true; + assume {:print "$track_local(40,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:32+12 + assume {:print "$at(49,27868,27880)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27895,27935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + assume {:print "$track_abort(40,41):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+6 + assume {:print "$at(49,27982,27988)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+12 + assume {:print "$at(49,27982,27994)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27956,27969)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.owner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + $t8 := $t7->$owner; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + assume {:print "$track_return(40,41,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::owner<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +procedure {:inline 1} $1_object_owner'#0'(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$at(49,27745,27746)"} true; + assume {:print "$track_local(40,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:32+12 + assume {:print "$at(49,27868,27880)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27895,27935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + assume {:print "$track_abort(40,41):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+6 + assume {:print "$at(49,27982,27988)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+12 + assume {:print "$at(49,27982,27994)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27956,27969)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.owner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + $t8 := $t7->$owner; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + assume {:print "$track_return(40,41,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+262 +procedure {:timeLimit 80} $1_object_owner$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $1_object_ObjectCore_$memory#70: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$at(49,27745,27746)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @70 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + $1_object_ObjectCore_$memory#70 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:663:5+1 + assume {:print "$track_local(40,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:32+12 + assume {:print "$at(49,27868,27880)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:665:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:30+22 + assume {:print "$at(49,27912,27934)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:666:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27895,27935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + assume {:print "$at(49,27828,27946)"} true; + assume {:print "$track_abort(40,41):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:664:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+6 + assume {:print "$at(49,27982,27988)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:35+12 + assume {:print "$at(49,27982,27994)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27956,27969)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,41):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.owner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + $t8 := $t7->$owner; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:668:9+45 + assume {:print "$track_return(40,41,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L3: + + // assert Not(Not(exists[@70](select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:530:9+44 + assume {:print "$at(50,21236,21280)"} true; + assert {:msg "assert_failed(50,21236,21280): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#70, $t0->$inner); + + // assert Eq
($t8, select object::ObjectCore.owner(global(select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:531:9+57 + assume {:print "$at(50,21289,21346)"} true; + assert {:msg "assert_failed(50,21289,21346): post-condition does not hold"} + $IsEqual'address'($t8, $ResourceValue($1_object_ObjectCore_$memory, $t0->$inner)->$owner); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:531:9+57 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:669:5+1 + assume {:print "$at(49,28006,28007)"} true; +L4: + + // assert Not(exists[@70](select object::Object.inner>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:529:5+173 + assume {:print "$at(50,21179,21352)"} true; + assert {:msg "assert_failed(50,21179,21352): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_object_ObjectCore_$memory#70, $t0->$inner); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:529:5+173 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::can_generate_delete_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:397:5+93 +procedure {:inline 1} $1_object_can_generate_delete_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:397:5+1 + assume {:print "$at(49,17496,17497)"} true; + assume {:print "$track_local(40,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.can_delete($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:398:9+14 + assume {:print "$at(49,17569,17583)"} true; + $t1 := $t0->$can_delete; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:398:9+14 + assume {:print "$track_return(40,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:399:5+1 + assume {:print "$at(49,17588,17589)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:399:5+1 + assume {:print "$at(49,17588,17589)"} true; + $ret0 := $t1; + return; + +} + +// fun object::can_generate_delete_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:397:5+93 +procedure {:timeLimit 80} $1_object_can_generate_delete_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:397:5+1 + assume {:print "$at(49,17496,17497)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:397:5+1 + assume {:print "$track_local(40,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.can_delete($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:398:9+14 + assume {:print "$at(49,17569,17583)"} true; + $t1 := $t0->$can_delete; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:398:9+14 + assume {:print "$track_return(40,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:399:5+1 + assume {:print "$at(49,17588,17589)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:399:5+1 + assume {:print "$at(49,17588,17589)"} true; + assert {:msg "assert_failed(49,17588,17589): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:399:5+1 + $ret0 := $t1; + return; + +} + +// fun object::convert [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+115 +procedure {:inline 1} $1_object_convert'$1_fungible_asset_Metadata_$1_fungible_asset_Metadata'(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+1 + assume {:print "$at(49,10846,10847)"} true; + assume {:print "$track_local(40,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:30+12 + assume {:print "$at(49,10942,10954)"} true; + $t1 := $t0->$inner; + + // $t2 := object::address_to_object<#1>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:9+34 + call $t2 := $1_object_address_to_object'$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(49,10921,10955)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,6):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:9+34 + assume {:print "$track_return(40,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 + assume {:print "$at(49,10960,10961)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 + assume {:print "$at(49,10960,10961)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 + assume {:print "$at(49,10960,10961)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::convert [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+115 +procedure {:timeLimit 80} $1_object_convert$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_object_Object'#1') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'#1'; + var $t3: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'#1'': $1_object_Object'#1'; + var $1_object_ObjectCore_$memory#76: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+1 + assume {:print "$at(49,10846,10847)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @76 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+1 + $1_object_ObjectCore_$memory#76 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:254:5+1 + assume {:print "$track_local(40,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:30+12 + assume {:print "$at(49,10942,10954)"} true; + $t1 := $t0->$inner; + + // $t2 := object::address_to_object<#1>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:9+34 + call $t2 := $1_object_address_to_object'#1'($t1); + if ($abort_flag) { + assume {:print "$at(49,10921,10955)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,6):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:255:9+34 + assume {:print "$track_return(40,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 + assume {:print "$at(49,10960,10961)"} true; +L1: + + // assert Not(Not(exists[@76](select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:148:9+44 + assume {:print "$at(50,6324,6368)"} true; + assert {:msg "assert_failed(50,6324,6368): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#76, $t0->$inner); + + // assert Not(Not(object::spec_exists_at[]<#1>(select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:149:9+43 + assume {:print "$at(50,6377,6420)"} true; + assert {:msg "assert_failed(50,6377,6420): function does not abort under this condition"} + !!$1_object_spec_exists_at'#1'($t0->$inner); + + // assert Eq>($t2, pack object::Object<#1>(select object::Object.inner>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:150:9+52 + assume {:print "$at(50,6429,6481)"} true; + assert {:msg "assert_failed(50,6429,6481): post-condition does not hold"} + $IsEqual'$1_object_Object'#1''($t2, $1_object_Object'#1'($t0->$inner)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:150:9+52 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:256:5+1 + assume {:print "$at(49,10960,10961)"} true; +L2: + + // assert Or(Not(exists[@76](select object::Object.inner>($t0))), Not(object::spec_exists_at[]<#1>(select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:147:5+232 + assume {:print "$at(50,6255,6487)"} true; + assert {:msg "assert_failed(50,6255,6487): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#76, $t0->$inner) || !$1_object_spec_exists_at'#1'($t0->$inner)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:147:5+232 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::create_guid_object_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:239:5+333 +procedure {:timeLimit 80} $1_object_create_guid_object_address$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_guid_ID; + var $t4: $1_guid_ID; + var $t5: int; + var $t6: $Mutation (Vec (int)); + var $t7: int; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: Vec (int); + var $t11: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_guid_ID': $1_guid_ID; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:239:5+1 + assume {:print "$at(49,10261,10262)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:239:5+1 + assume $IsValid'u64'($t1); + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:239:5+1 + assume {:print "$track_local(40,8,0):", $t0} $t0 == $t0; + + // trace_local[creation_num]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:239:5+1 + assume {:print "$track_local(40,8,1):", $t1} $t1 == $t1; + + // $t4 := guid::create_id($t0, $t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:240:18+37 + assume {:print "$at(49,10363,10400)"} true; + call $t4 := $1_guid_create_id($t0, $t1); + if ($abort_flag) { + assume {:print "$at(49,10363,10400)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[id]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:240:13+2 + assume {:print "$track_local(40,8,3):", $t4} $t4 == $t4; + + // $t2 := bcs::to_bytes($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:241:21+18 + assume {:print "$at(49,10422,10440)"} true; + call $t2 := $1_bcs_to_bytes'$1_guid_ID'($t4); + if ($abort_flag) { + assume {:print "$at(49,10422,10440)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:241:13+5 + assume {:print "$track_local(40,8,2):", $t2} $t2 == $t2; + + // $t6 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:242:27+10 + assume {:print "$at(49,10468,10478)"} true; + $t6 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t7 := 253 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:242:39+31 + $t7 := 253; + assume $IsValid'u8'($t7); + + // vector::push_back($t6, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:242:9+62 + call $t6 := $1_vector_push_back'u8'($t6, $t7); + if ($abort_flag) { + assume {:print "$at(49,10450,10512)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:242:9+62 + $t2 := $Dereference($t6); + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:242:9+62 + assume {:print "$track_local(40,8,2):", $t2} $t2 == $t2; + + // $t8 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:243:67+5 + assume {:print "$at(49,10580,10585)"} true; + $t8 := $t2; + + // $t9 := hash::sha3_256($t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:243:52+21 + call $t9 := $1_hash_sha3_256($t8); + if ($abort_flag) { + assume {:print "$at(49,10565,10586)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := bcs_util::truncate_16($t9) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:243:30+44 + call $t10 := $1_bcs_util_truncate_16($t9); + if ($abort_flag) { + assume {:print "$at(49,10543,10587)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // $t11 := from_bcs::to_address($t10) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:243:9+66 + call $t11 := $1_from_bcs_to_address($t10); + if ($abort_flag) { + assume {:print "$at(49,10522,10588)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,8):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:243:9+66 + assume {:print "$track_return(40,8,0):", $t11} $t11 == $t11; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:244:5+1 + assume {:print "$at(49,10593,10594)"} true; +L1: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:244:5+1 + assume {:print "$at(49,10593,10594)"} true; + $ret0 := $t11; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:244:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:244:5+1 + assume {:print "$at(49,10593,10594)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_named_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+470 +procedure {:inline 1} $1_object_create_named_object(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: $1_object_ConstructorRef; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, object::spec_create_object_address($t4, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t5 == $1_object_spec_create_object_address($t4, $t1)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$at(49,11167,11168)"} true; + assume {:print "$track_local(40,9,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$track_local(40,9,1):", $t1} $t1 == $t1; + + // $t6 := signer::address_of($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:262:31+27 + assume {:print "$at(49,11364,11391)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,11364,11391)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,9):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[creator_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:262:13+15 + assume {:print "$track_local(40,9,2):", $t6} $t6 == $t6; + + // $t8 := opaque begin: object::create_object_address($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume {:print "$at(49,11416,11461)"} true; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume $IsValid'address'($t8); + + // assume Eq
($t8, object::spec_create_object_address($t6, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume $IsEqual'address'($t8, $1_object_spec_create_object_address($t6, $t1)); + + // $t8 := opaque end: object::create_object_address($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + + // trace_local[obj_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:13+8 + assume {:print "$track_local(40,9,3):", $t8} $t8 == $t8; + + // $t9 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:264:69+5 + assume {:print "$at(49,11531,11536)"} true; + $t9 := false; + assume $IsValid'bool'($t9); + + // $t10 := object::create_object_internal($t6, $t8, $t9) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:264:19+56 + call $t10 := $1_object_create_object_internal($t6, $t8, $t9); + if ($abort_flag) { + assume {:print "$at(49,11481,11537)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,9):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:266:9+3 + assume {:print "$at(49,11628,11631)"} true; + assume {:print "$track_return(40,9,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 + assume {:print "$at(49,11636,11637)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 + assume {:print "$at(49,11636,11637)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 + assume {:print "$at(49,11636,11637)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::create_named_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+470 +procedure {:timeLimit 80} $1_object_create_named_object$verify(_$t0: $signer, _$t1: Vec (int)) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: $1_object_ConstructorRef; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_object_ObjectCore_$memory#80: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$at(49,11167,11168)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, object::spec_create_object_address($t4, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t5 == $1_object_spec_create_object_address($t4, $t1)); + + // @80 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$at(49,11167,11168)"} true; + $1_object_ObjectCore_$memory#80 := $1_object_ObjectCore_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$track_local(40,9,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:260:5+1 + assume {:print "$track_local(40,9,1):", $t1} $t1 == $t1; + + // $t6 := signer::address_of($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:262:31+27 + assume {:print "$at(49,11364,11391)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,11364,11391)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,9):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[creator_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:262:13+15 + assume {:print "$track_local(40,9,2):", $t6} $t6 == $t6; + + // $t8 := opaque begin: object::create_object_address($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume {:print "$at(49,11416,11461)"} true; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume $IsValid'address'($t8); + + // assume Eq
($t8, object::spec_create_object_address($t6, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + assume $IsEqual'address'($t8, $1_object_spec_create_object_address($t6, $t1)); + + // $t8 := opaque end: object::create_object_address($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:24+45 + + // trace_local[obj_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:263:13+8 + assume {:print "$track_local(40,9,3):", $t8} $t8 == $t8; + + // $t9 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:264:69+5 + assume {:print "$at(49,11531,11536)"} true; + $t9 := false; + assume $IsValid'bool'($t9); + + // $t10 := object::create_object_internal($t6, $t8, $t9) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:264:19+56 + call $t10 := $1_object_create_object_internal($t6, $t8, $t9); + if ($abort_flag) { + assume {:print "$at(49,11481,11537)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,9):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:266:9+3 + assume {:print "$at(49,11628,11631)"} true; + assume {:print "$track_return(40,9,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 + assume {:print "$at(49,11636,11637)"} true; +L1: + + // assert Not(exists[@80]($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:156:9+39 + assume {:print "$at(50,6713,6752)"} true; + assert {:msg "assert_failed(50,6713,6752): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#80, $t5); + + // assert exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:158:9+37 + assume {:print "$at(50,6762,6799)"} true; + assert {:msg "assert_failed(50,6762,6799): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t5); + + // assert Eq(global($t5), pack object::ObjectCore(Add(1125899906842624, 1), $t4, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t5))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:159:9+504 + assume {:print "$at(50,6808,7312)"} true; + assert {:msg "assert_failed(50,6808,7312): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t5), $1_object_ObjectCore((1125899906842624 + 1), $t4, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t5))))); + + // assert Eq($t10, pack object::ConstructorRef($t5, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:173:9+71 + assume {:print "$at(50,7321,7392)"} true; + assert {:msg "assert_failed(50,7321,7392): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t10, $1_object_ConstructorRef($t5, false)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:173:9+71 + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:267:5+1 + assume {:print "$at(49,11636,11637)"} true; +L2: + + // assert exists[@80]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:153:5+905 + assume {:print "$at(50,6493,7398)"} true; + assert {:msg "assert_failed(50,6493,7398): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_object_ObjectCore_$memory#80, $t5); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:153:5+905 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::create_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+215 +procedure {:inline 1} $1_object_create_object(_$t0: int) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_object_ConstructorRef; + var $t0: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t2 == $1_transaction_context_spec_generate_unique_address()); + + // trace_local[owner_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+1 + assume {:print "$at(49,12424,12425)"} true; + assume {:print "$track_local(40,10,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + assume {:print "$track_abort(40,10):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + assume $IsValid'address'($t3); + + // assume Eq
($t3, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume $IsEqual'address'($t3, $1_transaction_context_spec_generate_unique_address()); + + // $t3 := opaque end: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + + // trace_local[unique_address]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:13+14 + assume {:print "$track_local(40,10,1):", $t3} $t3 == $t3; + + // $t6 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:63+4 + assume {:print "$at(49,12628,12632)"} true; + $t6 := true; + assume $IsValid'bool'($t6); + + // $t7 := object::create_object_internal($t0, $t3, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:9+59 + call $t7 := $1_object_create_object_internal($t0, $t3, $t6); + if ($abort_flag) { + assume {:print "$at(49,12574,12633)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,10):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:9+59 + assume {:print "$track_return(40,10,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+215 +procedure {:timeLimit 80} $1_object_create_object$verify(_$t0: int) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_object_ConstructorRef; + var $t0: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $1_object_ObjectCore_$memory#82: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+1 + assume {:print "$at(49,12424,12425)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t2, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t2 == $1_transaction_context_spec_generate_unique_address()); + + // @82 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+1 + assume {:print "$at(49,12424,12425)"} true; + $1_object_ObjectCore_$memory#82 := $1_object_ObjectCore_$memory; + + // trace_local[owner_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:280:5+1 + assume {:print "$track_local(40,10,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + assume {:print "$track_abort(40,10):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume {:print "$at(49,12520,12564)"} true; + assume $IsValid'address'($t3); + + // assume Eq
($t3, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + assume $IsEqual'address'($t3, $1_transaction_context_spec_generate_unique_address()); + + // $t3 := opaque end: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:30+44 + + // trace_local[unique_address]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:281:13+14 + assume {:print "$track_local(40,10,1):", $t3} $t3 == $t3; + + // $t6 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:63+4 + assume {:print "$at(49,12628,12632)"} true; + $t6 := true; + assume $IsValid'bool'($t6); + + // $t7 := object::create_object_internal($t0, $t3, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:9+59 + call $t7 := $1_object_create_object_internal($t0, $t3, $t6); + if ($abort_flag) { + assume {:print "$at(49,12574,12633)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,10):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:282:9+59 + assume {:print "$track_return(40,10,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; +L1: + + // assert Not(exists[@82]($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:70:9+45 + assume {:print "$at(50,3291,3336)"} true; + assert {:msg "assert_failed(50,3291,3336): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#82, $t2); + + // assert exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:72:9+43 + assume {:print "$at(50,3346,3389)"} true; + assert {:msg "assert_failed(50,3346,3389): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t2); + + // assert Eq(global($t2), pack object::ObjectCore(Add(1125899906842624, 1), $t0, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:73:9+514 + assume {:print "$at(50,3398,3912)"} true; + assert {:msg "assert_failed(50,3398,3912): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t2), $1_object_ObjectCore((1125899906842624 + 1), $t0, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t2))))); + + // assert Eq($t7, pack object::ConstructorRef($t2, true)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:87:9+76 + assume {:print "$at(50,3921,3997)"} true; + assert {:msg "assert_failed(50,3921,3997): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t7, $1_object_ConstructorRef($t2, true)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:87:9+76 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:283:5+1 + assume {:print "$at(49,12638,12639)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_object_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:214:5+394 +procedure {:timeLimit 80} $1_object_create_object_address$verify(_$t0: int, _$t1: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: $Mutation (Vec (int)); + var $t5: $Mutation (Vec (int)); + var $t6: int; + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: int; + var $t0: int; + var $t1: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:214:5+1 + assume {:print "$at(49,9055,9056)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:214:5+1 + assume $IsValid'vec'u8''($t1); + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:214:5+1 + assume {:print "$track_local(40,11,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:214:5+1 + assume {:print "$track_local(40,11,1):", $t1} $t1 == $t1; + + // $t2 := bcs::to_bytes
($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:215:21+21 + assume {:print "$at(49,9155,9176)"} true; + call $t2 := $1_bcs_to_bytes'address'($t0); + if ($abort_flag) { + assume {:print "$at(49,9155,9176)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:215:13+5 + assume {:print "$track_local(40,11,2):", $t2} $t2 == $t2; + + // $t4 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:216:24+10 + assume {:print "$at(49,9201,9211)"} true; + $t4 := $Mutation($Local(2), EmptyVec(), $t2); + + // vector::append($t4, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:216:9+32 + call $t4 := $1_vector_append'u8'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(49,9186,9218)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:216:9+32 + $t2 := $Dereference($t4); + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:216:9+32 + assume {:print "$track_local(40,11,2):", $t2} $t2 == $t2; + + // $t5 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:217:27+10 + assume {:print "$at(49,9246,9256)"} true; + $t5 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t6 := 254 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:217:39+31 + $t6 := 254; + assume $IsValid'u8'($t6); + + // vector::push_back($t5, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:217:9+62 + call $t5 := $1_vector_push_back'u8'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(49,9228,9290)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:217:9+62 + $t2 := $Dereference($t5); + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:217:9+62 + assume {:print "$track_local(40,11,2):", $t2} $t2 == $t2; + + // $t7 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:219:71+5 + assume {:print "$at(49,9363,9368)"} true; + $t7 := $t2; + + // $t8 := hash::sha3_256($t7) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:219:56+21 + call $t8 := $1_hash_sha3_256($t7); + if ($abort_flag) { + assume {:print "$at(49,9348,9369)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t9 := bcs_util::truncate_16($t8) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:219:34+44 + call $t9 := $1_bcs_util_truncate_16($t8); + if ($abort_flag) { + assume {:print "$at(49,9326,9370)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t10 := from_bcs::to_address($t9) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:220:19+40 + assume {:print "$at(49,9390,9430)"} true; + call $t10 := $1_from_bcs_to_address($t9); + if ($abort_flag) { + assume {:print "$at(49,9390,9430)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,11):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:221:9+3 + assume {:print "$at(49,9440,9443)"} true; + assume {:print "$track_return(40,11,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:222:5+1 + assume {:print "$at(49,9448,9449)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:222:5+1 + assume {:print "$at(49,9448,9449)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:222:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:222:5+1 + assume {:print "$at(49,9448,9449)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::create_object_from_account [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+196 +procedure {:inline 1} $1_object_create_object_from_account(_$t0: $signer) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $1_guid_GUID; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_account_Account; + var $t13: $1_guid_GUID; + var $t14: int; + var $t15: int; + var $t16: Vec (int); + var $t17: Vec (int); + var $t18: Vec (int); + var $t19: int; + var $t20: $1_object_ConstructorRef; + var $t0: $signer; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:201:9+72 + assume {:print "$at(50,8477,8549)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t3, select account::Account.guid_creation_num($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:204:9+49 + assume {:print "$at(50,8708,8757)"} true; + assume ($t3 == $t2->$guid_creation_num); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:205:9+39 + assume {:print "$at(50,8766,8805)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, pack guid::GUID(pack guid::ID($t3, $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:207:9+127 + assume {:print "$at(50,8815,8942)"} true; + assume ($t5 == $1_guid_GUID($1_guid_ID($t3, $t4))); + + // assume Identical($t6, bcs::$to_bytes($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:214:9+37 + assume {:print "$at(50,8952,8989)"} true; + assume ($t6 == $1_bcs_$to_bytes'$1_guid_GUID'($t5)); + + // assume Identical($t7, ConcatVec($t6, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:215:9+73 + assume {:print "$at(50,8998,9071)"} true; + assume ($t7 == ConcatVec($t6, MakeVec1(253))); + + // assume Identical($t8, hash::$sha3_256($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:216:9+39 + assume {:print "$at(50,9080,9119)"} true; + assume ($t8 == $1_hash_$sha3_256($t7)); + + // assume Identical($t9, from_bcs::deserialize
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:217:9+58 + assume {:print "$at(50,9128,9186)"} true; + assume ($t9 == $1_from_bcs_deserialize'address'($t8)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + assume {:print "$at(49,13704,13705)"} true; + assume {:print "$track_local(40,12,0):", $t0} $t0 == $t0; + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // $t13 := account::create_guid($t0) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:307:20+29 + assume {:print "$at(49,13797,13826)"} true; + call $t13 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,13797,13826)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[guid]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:307:13+4 + assume {:print "$track_local(40,12,1):", $t13} $t13 == $t13; + + // $t15 := signer::address_of($t0) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:33+27 + assume {:print "$at(49,13860,13887)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,13860,13887)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // assume Identical($t16, bcs::$to_bytes($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:284:9+37 + assume {:print "$at(50,11842,11879)"} true; + assume ($t16 == $1_bcs_$to_bytes'$1_guid_GUID'($t13)); + + // assume Identical($t17, ConcatVec($t16, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:285:9+73 + assume {:print "$at(50,11888,11961)"} true; + assume ($t17 == ConcatVec($t16, MakeVec1(253))); + + // assume Identical($t18, hash::$sha3_256($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:286:9+39 + assume {:print "$at(50,11970,12009)"} true; + assume ($t18 == $1_hash_$sha3_256($t17)); + + // assume Identical($t19, from_bcs::deserialize
($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:287:9+58 + assume {:print "$at(50,12018,12076)"} true; + assume ($t19 == $1_from_bcs_deserialize'address'($t18)); + + // $t20 := object::create_object_from_guid($t15, $t13) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:9+58 + assume {:print "$at(49,13836,13894)"} true; + call $t20 := $1_object_create_object_from_guid($t15, $t13); + if ($abort_flag) { + assume {:print "$at(49,13836,13894)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:9+58 + assume {:print "$track_return(40,12,0):", $t20} $t20 == $t20; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 + assume {:print "$at(49,13899,13900)"} true; +L1: + + // return $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 + assume {:print "$at(49,13899,13900)"} true; + $ret0 := $t20; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 +L2: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 + assume {:print "$at(49,13899,13900)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun object::create_object_from_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+196 +procedure {:timeLimit 80} $1_object_create_object_from_account$verify(_$t0: $signer) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: $1_guid_GUID; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_account_Account; + var $t13: $1_guid_GUID; + var $t14: int; + var $t15: int; + var $t16: Vec (int); + var $t17: Vec (int); + var $t18: Vec (int); + var $t19: int; + var $t20: $1_object_ConstructorRef; + var $t0: $signer; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#86: $Memory $1_account_Account; + var $1_object_ObjectCore_$memory#87: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + assume {:print "$at(49,13704,13705)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t2, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:201:9+72 + assume {:print "$at(50,8477,8549)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t3, select account::Account.guid_creation_num($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:204:9+49 + assume {:print "$at(50,8708,8757)"} true; + assume ($t3 == $t2->$guid_creation_num); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:205:9+39 + assume {:print "$at(50,8766,8805)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, pack guid::GUID(pack guid::ID($t3, $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:207:9+127 + assume {:print "$at(50,8815,8942)"} true; + assume ($t5 == $1_guid_GUID($1_guid_ID($t3, $t4))); + + // assume Identical($t6, bcs::$to_bytes($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:214:9+37 + assume {:print "$at(50,8952,8989)"} true; + assume ($t6 == $1_bcs_$to_bytes'$1_guid_GUID'($t5)); + + // assume Identical($t7, ConcatVec($t6, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:215:9+73 + assume {:print "$at(50,8998,9071)"} true; + assume ($t7 == ConcatVec($t6, MakeVec1(253))); + + // assume Identical($t8, hash::$sha3_256($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:216:9+39 + assume {:print "$at(50,9080,9119)"} true; + assume ($t8 == $1_hash_$sha3_256($t7)); + + // assume Identical($t9, from_bcs::deserialize
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:217:9+58 + assume {:print "$at(50,9128,9186)"} true; + assume ($t9 == $1_from_bcs_deserialize'address'($t8)); + + // @86 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + assume {:print "$at(49,13704,13705)"} true; + $1_account_Account_$memory#86 := $1_account_Account_$memory; + + // @87 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + $1_object_ObjectCore_$memory#87 := $1_object_ObjectCore_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:306:5+1 + assume {:print "$track_local(40,12,0):", $t0} $t0 == $t0; + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:626:9+46 + assume {:print "$at(18,31579,31625)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // $t13 := account::create_guid($t0) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:307:20+29 + assume {:print "$at(49,13797,13826)"} true; + call $t13 := $1_account_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,13797,13826)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // trace_local[guid]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:307:13+4 + assume {:print "$track_local(40,12,1):", $t13} $t13 == $t13; + + // $t15 := signer::address_of($t0) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:33+27 + assume {:print "$at(49,13860,13887)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,13860,13887)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // assume Identical($t16, bcs::$to_bytes($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:284:9+37 + assume {:print "$at(50,11842,11879)"} true; + assume ($t16 == $1_bcs_$to_bytes'$1_guid_GUID'($t13)); + + // assume Identical($t17, ConcatVec($t16, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:285:9+73 + assume {:print "$at(50,11888,11961)"} true; + assume ($t17 == ConcatVec($t16, MakeVec1(253))); + + // assume Identical($t18, hash::$sha3_256($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:286:9+39 + assume {:print "$at(50,11970,12009)"} true; + assume ($t18 == $1_hash_$sha3_256($t17)); + + // assume Identical($t19, from_bcs::deserialize
($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:287:9+58 + assume {:print "$at(50,12018,12076)"} true; + assume ($t19 == $1_from_bcs_deserialize'address'($t18)); + + // $t20 := object::create_object_from_guid($t15, $t13) on_abort goto L2 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:9+58 + assume {:print "$at(49,13836,13894)"} true; + call $t20 := $1_object_create_object_from_guid($t15, $t13); + if ($abort_flag) { + assume {:print "$at(49,13836,13894)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(40,12):", $t14} $t14 == $t14; + goto L2; + } + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:308:9+58 + assume {:print "$track_return(40,12,0):", $t20} $t20 == $t20; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 + assume {:print "$at(49,13899,13900)"} true; +L1: + + // assert Not(Not(exists[@86](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:199:9+65 + assume {:print "$at(50,8377,8442)"} true; + assert {:msg "assert_failed(50,8377,8442): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#86, $1_signer_$address_of($t0)); + + // assert Not(Gt(Add(select account::Account.guid_creation_num($t2), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:202:9+54 + assume {:print "$at(50,8558,8612)"} true; + assert {:msg "assert_failed(50,8558,8612): function does not abort under this condition"} + !(($t2->$guid_creation_num + 1) > 18446744073709551615); + + // assert Not(Ge(Add(select account::Account.guid_creation_num($t2), 1), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:203:9+78 + assume {:print "$at(50,8621,8699)"} true; + assert {:msg "assert_failed(50,8621,8699): function does not abort under this condition"} + !(($t2->$guid_creation_num + 1) >= 1125899906842624); + + // assert Not(exists[@87]($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:218:9+39 + assume {:print "$at(50,9195,9234)"} true; + assert {:msg "assert_failed(50,9195,9234): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#87, $t9); + + // assert Not(Not(from_bcs::deserializable[]
($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:219:9+57 + assume {:print "$at(50,9243,9300)"} true; + assert {:msg "assert_failed(50,9243,9300): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t8); + + // assert Eq(select account::Account.guid_creation_num(global($t4)), Add(select account::Account.guid_creation_num(global[@86]($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:221:9+140 + assume {:print "$at(50,9310,9450)"} true; + assert {:msg "assert_failed(50,9310,9450): post-condition does not hold"} + $IsEqual'u64'($ResourceValue($1_account_Account_$memory, $t4)->$guid_creation_num, ($ResourceValue($1_account_Account_$memory#86, $t4)->$guid_creation_num + 1)); + + // assert exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:224:9+37 + assume {:print "$at(50,9459,9496)"} true; + assert {:msg "assert_failed(50,9459,9496): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t9); + + // assert Eq(global($t9), pack object::ObjectCore(Add(1125899906842624, 1), $t4, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t9))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:225:9+493 + assume {:print "$at(50,9505,9998)"} true; + assert {:msg "assert_failed(50,9505,9998): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t9), $1_object_ObjectCore((1125899906842624 + 1), $t4, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t9))))); + + // assert Eq($t20, pack object::ConstructorRef($t9, true)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:239:9+70 + assume {:print "$at(50,10007,10077)"} true; + assert {:msg "assert_failed(50,10007,10077): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t20, $1_object_ConstructorRef($t9, true)); + + // return $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:239:9+70 + $ret0 := $t20; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:309:5+1 + assume {:print "$at(49,13899,13900)"} true; +L2: + + // assert Or(Or(Or(Or(Not(exists[@86](signer::$address_of[]($t0))), Gt(Add(select account::Account.guid_creation_num($t2), 1), 18446744073709551615)), Ge(Add(select account::Account.guid_creation_num($t2), 1), 1125899906842624)), exists[@87]($t9)), Not(from_bcs::deserializable[]
($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:198:5+1782 + assume {:print "$at(50,8301,10083)"} true; + assert {:msg "assert_failed(50,8301,10083): abort not covered by any of the `aborts_if` clauses"} + ((((!$ResourceExists($1_account_Account_$memory#86, $1_signer_$address_of($t0)) || (($t2->$guid_creation_num + 1) > 18446744073709551615)) || (($t2->$guid_creation_num + 1) >= 1125899906842624)) || $ResourceExists($1_object_ObjectCore_$memory#87, $t9)) || !$1_from_bcs_deserializable'address'($t8)); + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:198:5+1782 + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun object::create_object_from_guid [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+364 +procedure {:inline 1} $1_object_create_object_from_guid(_$t0: int, _$t1: $1_guid_GUID) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: Vec (int); + var $t7: int; + var $t8: int; + var $t9: $Mutation (Vec (int)); + var $t10: int; + var $t11: Vec (int); + var $t12: Vec (int); + var $t13: Vec (int); + var $t14: int; + var $t15: bool; + var $t16: $1_object_ConstructorRef; + var $t0: int; + var $t1: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, bcs::$to_bytes($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:284:9+37 + assume {:print "$at(50,11842,11879)"} true; + assume ($t4 == $1_bcs_$to_bytes'$1_guid_GUID'($t1)); + + // assume Identical($t5, ConcatVec($t4, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:285:9+73 + assume {:print "$at(50,11888,11961)"} true; + assume ($t5 == ConcatVec($t4, MakeVec1(253))); + + // assume Identical($t6, hash::$sha3_256($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:286:9+39 + assume {:print "$at(50,11970,12009)"} true; + assume ($t6 == $1_hash_$sha3_256($t5)); + + // assume Identical($t7, from_bcs::deserialize
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:287:9+58 + assume {:print "$at(50,12018,12076)"} true; + assume ($t7 == $1_from_bcs_deserialize'address'($t6)); + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$at(49,14547,14548)"} true; + assume {:print "$track_local(40,13,0):", $t0} $t0 == $t0; + + // trace_local[guid]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$track_local(40,13,1):", $t1} $t1 == $t1; + + // $t2 := bcs::to_bytes($t1) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:324:21+20 + assume {:print "$at(49,14657,14677)"} true; + call $t2 := $1_bcs_to_bytes'$1_guid_GUID'($t1); + if ($abort_flag) { + assume {:print "$at(49,14657,14677)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:324:13+5 + assume {:print "$track_local(40,13,2):", $t2} $t2 == $t2; + + // $t9 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:27+10 + assume {:print "$at(49,14705,14715)"} true; + $t9 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t10 := 253 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:39+31 + $t10 := 253; + assume $IsValid'u8'($t10); + + // vector::push_back($t9, $t10) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + call $t9 := $1_vector_push_back'u8'($t9, $t10); + if ($abort_flag) { + assume {:print "$at(49,14687,14749)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + $t2 := $Dereference($t9); + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + assume {:print "$track_local(40,13,2):", $t2} $t2 == $t2; + + // $t11 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:82+5 + assume {:print "$at(49,14832,14837)"} true; + $t11 := $t2; + + // $t12 := hash::sha3_256($t11) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:67+21 + call $t12 := $1_hash_sha3_256($t11); + if ($abort_flag) { + assume {:print "$at(49,14817,14838)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // $t13 := bcs_util::truncate_16($t12) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:45+44 + call $t13 := $1_bcs_util_truncate_16($t12); + if ($abort_flag) { + assume {:print "$at(49,14795,14839)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // $t14 := from_bcs::to_address($t13) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:24+66 + call $t14 := $1_from_bcs_to_address($t13); + if ($abort_flag) { + assume {:print "$at(49,14774,14840)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[obj_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:13+8 + assume {:print "$track_local(40,13,3):", $t14} $t14 == $t14; + + // $t15 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:59+4 + assume {:print "$at(49,14900,14904)"} true; + $t15 := true; + assume $IsValid'bool'($t15); + + // $t16 := object::create_object_internal($t0, $t14, $t15) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:9+55 + call $t16 := $1_object_create_object_internal($t0, $t14, $t15); + if ($abort_flag) { + assume {:print "$at(49,14850,14905)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:9+55 + assume {:print "$track_return(40,13,0):", $t16} $t16 == $t16; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 + assume {:print "$at(49,14910,14911)"} true; +L1: + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 + assume {:print "$at(49,14910,14911)"} true; + $ret0 := $t16; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 + assume {:print "$at(49,14910,14911)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::create_object_from_guid [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+364 +procedure {:timeLimit 80} $1_object_create_object_from_guid$verify(_$t0: int, _$t1: $1_guid_GUID) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: Vec (int); + var $t7: int; + var $t8: int; + var $t9: $Mutation (Vec (int)); + var $t10: int; + var $t11: Vec (int); + var $t12: Vec (int); + var $t13: Vec (int); + var $t14: int; + var $t15: bool; + var $t16: $1_object_ConstructorRef; + var $t0: int; + var $t1: $1_guid_GUID; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + var $1_object_ObjectCore_$memory#84: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$at(49,14547,14548)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume $IsValid'$1_guid_GUID'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t4, bcs::$to_bytes($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:284:9+37 + assume {:print "$at(50,11842,11879)"} true; + assume ($t4 == $1_bcs_$to_bytes'$1_guid_GUID'($t1)); + + // assume Identical($t5, ConcatVec($t4, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:285:9+73 + assume {:print "$at(50,11888,11961)"} true; + assume ($t5 == ConcatVec($t4, MakeVec1(253))); + + // assume Identical($t6, hash::$sha3_256($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:286:9+39 + assume {:print "$at(50,11970,12009)"} true; + assume ($t6 == $1_hash_$sha3_256($t5)); + + // assume Identical($t7, from_bcs::deserialize
($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:287:9+58 + assume {:print "$at(50,12018,12076)"} true; + assume ($t7 == $1_from_bcs_deserialize'address'($t6)); + + // @84 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$at(49,14547,14548)"} true; + $1_object_ObjectCore_$memory#84 := $1_object_ObjectCore_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$track_local(40,13,0):", $t0} $t0 == $t0; + + // trace_local[guid]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:323:5+1 + assume {:print "$track_local(40,13,1):", $t1} $t1 == $t1; + + // $t2 := bcs::to_bytes($t1) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:324:21+20 + assume {:print "$at(49,14657,14677)"} true; + call $t2 := $1_bcs_to_bytes'$1_guid_GUID'($t1); + if ($abort_flag) { + assume {:print "$at(49,14657,14677)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:324:13+5 + assume {:print "$track_local(40,13,2):", $t2} $t2 == $t2; + + // $t9 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:27+10 + assume {:print "$at(49,14705,14715)"} true; + $t9 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t10 := 253 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:39+31 + $t10 := 253; + assume $IsValid'u8'($t10); + + // vector::push_back($t9, $t10) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + call $t9 := $1_vector_push_back'u8'($t9, $t10); + if ($abort_flag) { + assume {:print "$at(49,14687,14749)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // write_back[LocalRoot($t2)@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + $t2 := $Dereference($t9); + + // trace_local[bytes]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:325:9+62 + assume {:print "$track_local(40,13,2):", $t2} $t2 == $t2; + + // $t11 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:82+5 + assume {:print "$at(49,14832,14837)"} true; + $t11 := $t2; + + // $t12 := hash::sha3_256($t11) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:67+21 + call $t12 := $1_hash_sha3_256($t11); + if ($abort_flag) { + assume {:print "$at(49,14817,14838)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // $t13 := bcs_util::truncate_16($t12) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:45+44 + call $t13 := $1_bcs_util_truncate_16($t12); + if ($abort_flag) { + assume {:print "$at(49,14795,14839)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // $t14 := from_bcs::to_address($t13) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:24+66 + call $t14 := $1_from_bcs_to_address($t13); + if ($abort_flag) { + assume {:print "$at(49,14774,14840)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[obj_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:326:13+8 + assume {:print "$track_local(40,13,3):", $t14} $t14 == $t14; + + // $t15 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:59+4 + assume {:print "$at(49,14900,14904)"} true; + $t15 := true; + assume $IsValid'bool'($t15); + + // $t16 := object::create_object_internal($t0, $t14, $t15) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:9+55 + call $t16 := $1_object_create_object_internal($t0, $t14, $t15); + if ($abort_flag) { + assume {:print "$at(49,14850,14905)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,13):", $t8} $t8 == $t8; + goto L2; + } + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:327:9+55 + assume {:print "$track_return(40,13,0):", $t16} $t16 == $t16; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 + assume {:print "$at(49,14910,14911)"} true; +L1: + + // assert Not(exists[@84]($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:288:9+39 + assume {:print "$at(50,12085,12124)"} true; + assert {:msg "assert_failed(50,12085,12124): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#84, $t7); + + // assert Not(Not(from_bcs::deserializable[]
($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:289:9+57 + assume {:print "$at(50,12133,12190)"} true; + assert {:msg "assert_failed(50,12133,12190): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t6); + + // assert exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:291:9+37 + assume {:print "$at(50,12200,12237)"} true; + assert {:msg "assert_failed(50,12200,12237): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t7); + + // assert Eq(global($t7), pack object::ObjectCore(Add(1125899906842624, 1), $t0, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t7))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:292:9+504 + assume {:print "$at(50,12246,12750)"} true; + assert {:msg "assert_failed(50,12246,12750): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t7), $1_object_ObjectCore((1125899906842624 + 1), $t0, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t7))))); + + // assert Eq($t16, pack object::ConstructorRef($t7, true)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:306:9+70 + assume {:print "$at(50,12759,12829)"} true; + assert {:msg "assert_failed(50,12759,12829): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t16, $1_object_ConstructorRef($t7, true)); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:306:9+70 + $ret0 := $t16; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:328:5+1 + assume {:print "$at(49,14910,14911)"} true; +L2: + + // assert Or(exists[@84]($t7), Not(from_bcs::deserializable[]
($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:283:5+1092 + assume {:print "$at(50,11743,12835)"} true; + assert {:msg "assert_failed(50,11743,12835): abort not covered by any of the `aborts_if` clauses"} + ($ResourceExists($1_object_ObjectCore_$memory#84, $t7) || !$1_from_bcs_deserializable'address'($t6)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:283:5+1092 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::create_object_from_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:318:5+206 +procedure {:timeLimit 80} $1_object_create_object_from_object$verify(_$t0: $signer) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: $1_guid_GUID; + var $t2: $1_object_ObjectCore; + var $t3: int; + var $t4: int; + var $t5: $1_guid_GUID; + var $t6: Vec (int); + var $t7: Vec (int); + var $t8: Vec (int); + var $t9: int; + var $t10: $1_object_ObjectCore; + var $t11: $1_guid_GUID; + var $t12: int; + var $t13: int; + var $t14: Vec (int); + var $t15: Vec (int); + var $t16: Vec (int); + var $t17: int; + var $t18: $1_object_ConstructorRef; + var $t0: $signer; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#92: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:318:5+1 + assume {:print "$at(49,14335,14336)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:318:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t2, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:245:9+66 + assume {:print "$at(50,10258,10324)"} true; + assume ($t2 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t3, select object::ObjectCore.guid_creation_num($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:247:9+49 + assume {:print "$at(50,10396,10445)"} true; + assume ($t3 == $t2->$guid_creation_num); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:248:9+39 + assume {:print "$at(50,10454,10493)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, pack guid::GUID(pack guid::ID($t3, $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:250:9+127 + assume {:print "$at(50,10503,10630)"} true; + assume ($t5 == $1_guid_GUID($1_guid_ID($t3, $t4))); + + // assume Identical($t6, bcs::$to_bytes($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:257:9+37 + assume {:print "$at(50,10640,10677)"} true; + assume ($t6 == $1_bcs_$to_bytes'$1_guid_GUID'($t5)); + + // assume Identical($t7, ConcatVec($t6, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:258:9+73 + assume {:print "$at(50,10686,10759)"} true; + assume ($t7 == ConcatVec($t6, MakeVec1(253))); + + // assume Identical($t8, hash::$sha3_256($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:259:9+39 + assume {:print "$at(50,10768,10807)"} true; + assume ($t8 == $1_hash_$sha3_256($t7)); + + // assume Identical($t9, from_bcs::deserialize
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:260:9+58 + assume {:print "$at(50,10816,10874)"} true; + assume ($t9 == $1_from_bcs_deserialize'address'($t8)); + + // @92 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:318:5+1 + assume {:print "$at(49,14335,14336)"} true; + $1_object_ObjectCore_$memory#92 := $1_object_ObjectCore_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:318:5+1 + assume {:print "$track_local(40,14,0):", $t0} $t0 == $t0; + + // assume Identical($t10, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:347:9+65 + assume {:print "$at(50,14365,14430)"} true; + assume ($t10 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t0))); + + // $t11 := object::create_guid($t0) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:319:20+20 + assume {:print "$at(49,14447,14467)"} true; + call $t11 := $1_object_create_guid($t0); + if ($abort_flag) { + assume {:print "$at(49,14447,14467)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(40,14):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[guid]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:319:13+4 + assume {:print "$track_local(40,14,1):", $t11} $t11 == $t11; + + // $t13 := signer::address_of($t0) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:320:33+27 + assume {:print "$at(49,14501,14528)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,14501,14528)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(40,14):", $t12} $t12 == $t12; + goto L2; + } + + // assume Identical($t14, bcs::$to_bytes($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:284:9+37 + assume {:print "$at(50,11842,11879)"} true; + assume ($t14 == $1_bcs_$to_bytes'$1_guid_GUID'($t11)); + + // assume Identical($t15, ConcatVec($t14, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:285:9+73 + assume {:print "$at(50,11888,11961)"} true; + assume ($t15 == ConcatVec($t14, MakeVec1(253))); + + // assume Identical($t16, hash::$sha3_256($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:286:9+39 + assume {:print "$at(50,11970,12009)"} true; + assume ($t16 == $1_hash_$sha3_256($t15)); + + // assume Identical($t17, from_bcs::deserialize
($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:287:9+58 + assume {:print "$at(50,12018,12076)"} true; + assume ($t17 == $1_from_bcs_deserialize'address'($t16)); + + // $t18 := object::create_object_from_guid($t13, $t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:320:9+58 + assume {:print "$at(49,14477,14535)"} true; + call $t18 := $1_object_create_object_from_guid($t13, $t11); + if ($abort_flag) { + assume {:print "$at(49,14477,14535)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(40,14):", $t12} $t12 == $t12; + goto L2; + } + + // trace_return[0]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:320:9+58 + assume {:print "$track_return(40,14,0):", $t18} $t18 == $t18; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:321:5+1 + assume {:print "$at(49,14540,14541)"} true; +L1: + + // assert Not(Not(exists[@92](signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:243:9+59 + assume {:print "$at(50,10164,10223)"} true; + assert {:msg "assert_failed(50,10164,10223): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#92, $1_signer_$address_of($t0)); + + // assert Not(Gt(Add(select object::ObjectCore.guid_creation_num($t2), 1), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:246:9+54 + assume {:print "$at(50,10333,10387)"} true; + assert {:msg "assert_failed(50,10333,10387): function does not abort under this condition"} + !(($t2->$guid_creation_num + 1) > 18446744073709551615); + + // assert Not(exists[@92]($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:261:9+39 + assume {:print "$at(50,10883,10922)"} true; + assert {:msg "assert_failed(50,10883,10922): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#92, $t9); + + // assert Not(Not(from_bcs::deserializable[]
($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:262:9+57 + assume {:print "$at(50,10931,10988)"} true; + assert {:msg "assert_failed(50,10931,10988): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t8); + + // assert Eq(select object::ObjectCore.guid_creation_num(global($t4)), Add(select object::ObjectCore.guid_creation_num(global[@92]($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:264:9+106 + assume {:print "$at(50,10998,11104)"} true; + assert {:msg "assert_failed(50,10998,11104): post-condition does not hold"} + $IsEqual'u64'($ResourceValue($1_object_ObjectCore_$memory, $t4)->$guid_creation_num, ($ResourceValue($1_object_ObjectCore_$memory#92, $t4)->$guid_creation_num + 1)); + + // assert exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:265:9+37 + assume {:print "$at(50,11113,11150)"} true; + assert {:msg "assert_failed(50,11113,11150): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t9); + + // assert Eq(global($t9), pack object::ObjectCore(Add(1125899906842624, 1), $t4, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t9))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:266:9+493 + assume {:print "$at(50,11159,11652)"} true; + assert {:msg "assert_failed(50,11159,11652): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t9), $1_object_ObjectCore((1125899906842624 + 1), $t4, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t9))))); + + // assert Eq($t18, pack object::ConstructorRef($t9, true)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:280:9+70 + assume {:print "$at(50,11661,11731)"} true; + assert {:msg "assert_failed(50,11661,11731): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t18, $1_object_ConstructorRef($t9, true)); + + // return $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:280:9+70 + $ret0 := $t18; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:321:5+1 + assume {:print "$at(49,14540,14541)"} true; +L2: + + // assert Or(Or(Or(Not(exists[@92](signer::$address_of[]($t0))), Gt(Add(select object::ObjectCore.guid_creation_num($t2), 1), 18446744073709551615)), exists[@92]($t9)), Not(from_bcs::deserializable[]
($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:242:5+1648 + assume {:print "$at(50,10089,11737)"} true; + assert {:msg "assert_failed(50,10089,11737): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_object_ObjectCore_$memory#92, $1_signer_$address_of($t0)) || (($t2->$guid_creation_num + 1) > 18446744073709551615)) || $ResourceExists($1_object_ObjectCore_$memory#92, $t9)) || !$1_from_bcs_deserializable'address'($t8)); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:242:5+1648 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun object::create_object_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+937 +procedure {:inline 1} $1_object_create_object_internal(_$t0: int, _$t1: int, _$t2: bool) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t3: int; + var $t4: $signer; + var $t5: $1_guid_GUID; + var $t6: bool; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $signer; + var $t12: int; + var $t13: $Mutation (int); + var $t14: $1_guid_GUID; + var $t15: int; + var $t16: bool; + var $t17: $1_event_EventHandle'$1_object_TransferEvent'; + var $t18: $1_object_ObjectCore; + var $t19: $1_object_ConstructorRef; + var $t0: int; + var $t1: int; + var $t2: bool; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$at(49,14917,14918)"} true; + assume {:print "$track_local(40,15,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$track_local(40,15,1):", $t1} $t1 == $t1; + + // trace_local[can_delete]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$track_local(40,15,2):", $t2} $t2 == $t2; + + // $t6 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:18+6 + assume {:print "$at(49,15157,15163)"} true; + $t6 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // $t7 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:17+1 + call $t7 := $Not($t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + assume {:print "$at(49,15148,15223)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:68+14 +L0: + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:68+14 + assume {:print "$at(49,15207,15221)"} true; + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := error::already_exists($t8) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:46+37 + call $t9 := $1_error_already_exists($t8); + if ($abort_flag) { + assume {:print "$at(49,15185,15222)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + assume {:print "$at(49,15148,15223)"} true; + assume {:print "$track_abort(40,15):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + $t10 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:43+6 + assume {:print "$at(49,15268,15274)"} true; +L2: + + // $t11 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume {:print "$at(49,15254,15275)"} true; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume $IsValid'signer'($t11) && $1_signer_is_txn_signer($t11) && $1_signer_is_txn_signer_addr($t11->$addr); + + // assume Eq
(signer::$address_of($t11), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume $IsEqual'address'($1_signer_$address_of($t11), $t1); + + // $t11 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + + // trace_local[object_signer]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:13+13 + assume {:print "$track_local(40,15,4):", $t11} $t11 == $t11; + + // $t12 := 1125899906842624 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:33+22 + assume {:print "$at(49,15309,15331)"} true; + $t12 := 1125899906842624; + assume $IsValid'u64'($t12); + + // $t3 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:13+17 + $t3 := $t12; + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:13+17 + assume {:print "$track_local(40,15,3):", $t3} $t3 == $t3; + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:57+22 + assume {:print "$at(49,15389,15411)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t14 := guid::create($t1, $t13) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + call $t14,$t13 := $1_guid_create($t1, $t13); + if ($abort_flag) { + assume {:print "$at(49,15368,15412)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + $t3 := $Dereference($t13); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + assume {:print "$track_local(40,15,3):", $t3} $t3 == $t3; + + // trace_local[transfer_events_guid]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:13+20 + assume {:print "$track_local(40,15,5):", $t14} $t14 == $t14; + + // $t15 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:346:17+17 + assume {:print "$at(49,15501,15518)"} true; + $t15 := $t3; + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:348:41+4 + assume {:print "$at(49,15600,15604)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t17 := event::new_event_handle($t14) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:349:34+45 + assume {:print "$at(49,15639,15684)"} true; + call $t17 := $1_event_new_event_handle'$1_object_TransferEvent'($t14); + if ($abort_flag) { + assume {:print "$at(49,15639,15684)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // $t18 := pack object::ObjectCore($t15, $t0, $t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:345:13+227 + assume {:print "$at(49,15472,15699)"} true; + $t18 := $1_object_ObjectCore($t15, $t0, $t16, $t17); + + // move_to($t18, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:343:9+7 + assume {:print "$at(49,15423,15430)"} true; + if ($ResourceExists($1_object_ObjectCore_$memory, $t11->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $t11->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(49,15423,15430)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // $t19 := pack object::ConstructorRef($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:354:9+43 + assume {:print "$at(49,15805,15848)"} true; + $t19 := $1_object_ConstructorRef($t1, $t2); + + // trace_return[0]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:354:9+43 + assume {:print "$track_return(40,15,0):", $t19} $t19 == $t19; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 + assume {:print "$at(49,15853,15854)"} true; +L3: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 + assume {:print "$at(49,15853,15854)"} true; + $ret0 := $t19; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 + assume {:print "$at(49,15853,15854)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun object::create_object_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+937 +procedure {:timeLimit 80} $1_object_create_object_internal$verify(_$t0: int, _$t1: int, _$t2: bool) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t3: int; + var $t4: $signer; + var $t5: $1_guid_GUID; + var $t6: bool; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $signer; + var $t12: int; + var $t13: $Mutation (int); + var $t14: $1_guid_GUID; + var $t15: int; + var $t16: bool; + var $t17: $1_event_EventHandle'$1_object_TransferEvent'; + var $t18: $1_object_ObjectCore; + var $t19: $1_object_ConstructorRef; + var $t0: int; + var $t1: int; + var $t2: bool; + var $temp_0'$1_guid_GUID': $1_guid_GUID; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_object_ObjectCore_$memory#78: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$at(49,14917,14918)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume $IsValid'bool'($t2); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @78 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + $1_object_ObjectCore_$memory#78 := $1_object_ObjectCore_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$track_local(40,15,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$track_local(40,15,1):", $t1} $t1 == $t1; + + // trace_local[can_delete]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:330:5+1 + assume {:print "$track_local(40,15,2):", $t2} $t2 == $t2; + + // $t6 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:18+6 + assume {:print "$at(49,15157,15163)"} true; + $t6 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // $t7 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:17+1 + call $t7 := $Not($t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + assume {:print "$at(49,15148,15223)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:68+14 +L0: + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:68+14 + assume {:print "$at(49,15207,15221)"} true; + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := error::already_exists($t8) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:46+37 + call $t9 := $1_error_already_exists($t8); + if ($abort_flag) { + assume {:print "$at(49,15185,15222)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + assume {:print "$at(49,15148,15223)"} true; + assume {:print "$track_abort(40,15):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + $t10 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:337:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:43+6 + assume {:print "$at(49,15268,15274)"} true; +L2: + + // $t11 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume {:print "$at(49,15254,15275)"} true; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume $IsValid'signer'($t11) && $1_signer_is_txn_signer($t11) && $1_signer_is_txn_signer_addr($t11->$addr); + + // assume Eq
(signer::$address_of($t11), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + assume $IsEqual'address'($1_signer_$address_of($t11), $t1); + + // $t11 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:29+21 + + // trace_local[object_signer]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:339:13+13 + assume {:print "$track_local(40,15,4):", $t11} $t11 == $t11; + + // $t12 := 1125899906842624 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:33+22 + assume {:print "$at(49,15309,15331)"} true; + $t12 := 1125899906842624; + assume $IsValid'u64'($t12); + + // $t3 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:13+17 + $t3 := $t12; + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:340:13+17 + assume {:print "$track_local(40,15,3):", $t3} $t3 == $t3; + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:57+22 + assume {:print "$at(49,15389,15411)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t14 := guid::create($t1, $t13) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + call $t14,$t13 := $1_guid_create($t1, $t13); + if ($abort_flag) { + assume {:print "$at(49,15368,15412)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + $t3 := $Dereference($t13); + + // trace_local[guid_creation_num]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:36+44 + assume {:print "$track_local(40,15,3):", $t3} $t3 == $t3; + + // trace_local[transfer_events_guid]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:341:13+20 + assume {:print "$track_local(40,15,5):", $t14} $t14 == $t14; + + // $t15 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:346:17+17 + assume {:print "$at(49,15501,15518)"} true; + $t15 := $t3; + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:348:41+4 + assume {:print "$at(49,15600,15604)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t17 := event::new_event_handle($t14) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:349:34+45 + assume {:print "$at(49,15639,15684)"} true; + call $t17 := $1_event_new_event_handle'$1_object_TransferEvent'($t14); + if ($abort_flag) { + assume {:print "$at(49,15639,15684)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // $t18 := pack object::ObjectCore($t15, $t0, $t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:345:13+227 + assume {:print "$at(49,15472,15699)"} true; + $t18 := $1_object_ObjectCore($t15, $t0, $t16, $t17); + + // move_to($t18, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:343:9+7 + assume {:print "$at(49,15423,15430)"} true; + if ($ResourceExists($1_object_ObjectCore_$memory, $t11->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $t11->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(49,15423,15430)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,15):", $t10} $t10 == $t10; + goto L4; + } + + // $t19 := pack object::ConstructorRef($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:354:9+43 + assume {:print "$at(49,15805,15848)"} true; + $t19 := $1_object_ConstructorRef($t1, $t2); + + // trace_return[0]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:354:9+43 + assume {:print "$track_return(40,15,0):", $t19} $t19 == $t19; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 + assume {:print "$at(49,15853,15854)"} true; +L3: + + // assert Not(exists[@78]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:321:9+37 + assume {:print "$at(50,13268,13305)"} true; + assert {:msg "assert_failed(50,13268,13305): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#78, $t1); + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:322:9+35 + assume {:print "$at(50,13314,13349)"} true; + assert {:msg "assert_failed(50,13314,13349): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // assert Eq(select object::ObjectCore.guid_creation_num(global($t1)), Add(1125899906842624, 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:324:9+83 + assume {:print "$at(50,13458,13541)"} true; + assert {:msg "assert_failed(50,13458,13541): post-condition does not hold"} + $IsEqual'u64'($ResourceValue($1_object_ObjectCore_$memory, $t1)->$guid_creation_num, (1125899906842624 + 1)); + + // assert Eq($t19, pack object::ConstructorRef($t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:325:9+62 + assume {:print "$at(50,13550,13612)"} true; + assert {:msg "assert_failed(50,13550,13612): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t19, $1_object_ConstructorRef($t1, $t2)); + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:325:9+62 + $ret0 := $t19; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:355:5+1 + assume {:print "$at(49,15853,15854)"} true; +L4: + + // assert exists[@78]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:314:5+601 + assume {:print "$at(50,13017,13618)"} true; + assert {:msg "assert_failed(50,13017,13618): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_object_ObjectCore_$memory#78, $t1); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:314:5+601 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun object::create_sticky_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:286:5+223 +procedure {:timeLimit 80} $1_object_create_sticky_object$verify(_$t0: int) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_object_ConstructorRef; + var $t0: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + var $1_object_ObjectCore_$memory#93: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:286:5+1 + assume {:print "$at(49,12730,12731)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:286:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t2, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:93:9+73 + assume {:print "$at(50,4123,4196)"} true; + assume ($t2 == $1_transaction_context_spec_generate_unique_address()); + + // @93 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:286:5+1 + assume {:print "$at(49,12730,12731)"} true; + $1_object_ObjectCore_$memory#93 := $1_object_ObjectCore_$memory; + + // trace_local[owner_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:286:5+1 + assume {:print "$track_local(40,16,0):", $t0} $t0 == $t0; + + // $t3 := opaque begin: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + assume {:print "$at(49,12833,12877)"} true; + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + assume {:print "$at(49,12833,12877)"} true; + assume {:print "$track_abort(40,16):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + assume {:print "$at(49,12833,12877)"} true; + assume $IsValid'address'($t3); + + // assume Eq
($t3, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + assume $IsEqual'address'($t3, $1_transaction_context_spec_generate_unique_address()); + + // $t3 := opaque end: transaction_context::generate_auid_address() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:30+44 + + // trace_local[unique_address]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:287:13+14 + assume {:print "$track_local(40,16,1):", $t3} $t3 == $t3; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:288:63+5 + assume {:print "$at(49,12941,12946)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t7 := object::create_object_internal($t0, $t3, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:288:9+60 + call $t7 := $1_object_create_object_internal($t0, $t3, $t6); + if ($abort_flag) { + assume {:print "$at(49,12887,12947)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,16):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:288:9+60 + assume {:print "$track_return(40,16,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:289:5+1 + assume {:print "$at(49,12952,12953)"} true; +L1: + + // assert Not(exists[@93]($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:94:9+45 + assume {:print "$at(50,4205,4250)"} true; + assert {:msg "assert_failed(50,4205,4250): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#93, $t2); + + // assert exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:96:9+43 + assume {:print "$at(50,4260,4303)"} true; + assert {:msg "assert_failed(50,4260,4303): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t2); + + // assert Eq(global($t2), pack object::ObjectCore(Add(1125899906842624, 1), $t0, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:97:9+514 + assume {:print "$at(50,4312,4826)"} true; + assert {:msg "assert_failed(50,4312,4826): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t2), $1_object_ObjectCore((1125899906842624 + 1), $t0, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t2))))); + + // assert Eq($t7, pack object::ConstructorRef($t2, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:111:9+77 + assume {:print "$at(50,4835,4912)"} true; + assert {:msg "assert_failed(50,4835,4912): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t7, $1_object_ConstructorRef($t2, false)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:111:9+77 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:289:5+1 + assume {:print "$at(49,12952,12953)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:289:5+1 + assume {:print "$at(49,12952,12953)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::create_sticky_object_at_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:292:5+215 +procedure {:inline 1} $1_object_create_sticky_object_at_address(_$t0: int, _$t1: int) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: bool; + var $t3: $1_object_ConstructorRef; + var $t4: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:292:5+1 + assume {:print "$at(49,13052,13053)"} true; + assume {:print "$track_local(40,17,0):", $t0} $t0 == $t0; + + // trace_local[object_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:292:5+1 + assume {:print "$track_local(40,17,1):", $t1} $t1 == $t1; + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:296:63+5 + assume {:print "$at(49,13255,13260)"} true; + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := object::create_object_internal($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:296:9+60 + call $t3 := $1_object_create_object_internal($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(49,13201,13261)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,17):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:296:9+60 + assume {:print "$track_return(40,17,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:297:5+1 + assume {:print "$at(49,13266,13267)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:297:5+1 + assume {:print "$at(49,13266,13267)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:297:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:297:5+1 + assume {:print "$at(49,13266,13267)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_fungible_asset_Metadata'(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_object_token_Token'(_$t0: $1_object_Object'$1_object_token_Token') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_object_token_Token'; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'$1_starcoin_token_StarcoinCollection'(_$t0: $1_object_Object'$1_starcoin_token_StarcoinCollection') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:inline 1} $1_object_object_address'#0'(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+91 +procedure {:timeLimit 80} $1_object_object_address$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$at(49,10709,10710)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:249:5+1 + assume {:print "$track_local(40,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$at(49,10782,10794)"} true; + $t1 := $t0->$inner; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:250:9+12 + assume {:print "$track_return(40,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:251:5+1 + assume {:print "$at(49,10799,10800)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:143:9+16 + assume {:print "$at(50,6187,6203)"} true; + assert {:msg "assert_failed(50,6187,6203): function does not abort under this condition"} + !false; + + // assert Eq
($t1, select object::Object.inner>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:144:9+31 + assume {:print "$at(50,6212,6243)"} true; + assert {:msg "assert_failed(50,6212,6243): post-condition does not hold"} + $IsEqual'address'($t1, $t0->$inner); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:144:9+31 + $ret0 := $t1; + return; + +} + +// fun object::create_user_derived_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+277 +procedure {:inline 1} $1_object_create_user_derived_object(_$t0: int, _$t1: $1_object_DeriveRef) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_object_ConstructorRef; + var $t8: int; + var $t0: int; + var $t1: $1_object_DeriveRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeriveRef': $1_object_DeriveRef; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, object::spec_create_user_derived_object_address($t0, select object::DeriveRef.self($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:177:9+89 + assume {:print "$at(50,7512,7601)"} true; + assume ($t3 == $1_object_spec_create_user_derived_object_address($t0, $t1->$self)); + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$at(49,11823,11824)"} true; + assume {:print "$track_local(40,18,0):", $t0} $t0 == $t0; + + // trace_local[derive_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$track_local(40,18,1):", $t1} $t1 == $t1; + + // $t4 := get_field.self($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:76+15 + assume {:print "$at(49,12012,12027)"} true; + $t4 := $t1->$self; + + // $t5 := opaque begin: object::create_user_derived_object_address($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + assume $IsValid'address'($t5); + + // assume Eq
($t5, object::spec_create_user_derived_object_address($t0, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + assume $IsEqual'address'($t5, $1_object_spec_create_user_derived_object_address($t0, $t4)); + + // $t5 := opaque end: object::create_user_derived_object_address($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + + // trace_local[obj_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:13+8 + assume {:print "$track_local(40,18,2):", $t5} $t5 == $t5; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:59+5 + assume {:print "$at(49,12088,12093)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t7 := object::create_object_internal($t0, $t5, $t6) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:9+56 + call $t7 := $1_object_create_object_internal($t0, $t5, $t6); + if ($abort_flag) { + assume {:print "$at(49,12038,12094)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,18):", $t8} $t8 == $t8; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:9+56 + assume {:print "$track_return(40,18,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 + assume {:print "$at(49,12099,12100)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 + assume {:print "$at(49,12099,12100)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 + assume {:print "$at(49,12099,12100)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::create_user_derived_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+277 +procedure {:timeLimit 80} $1_object_create_user_derived_object$verify(_$t0: int, _$t1: $1_object_DeriveRef) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_object_ConstructorRef; + var $t8: int; + var $t0: int; + var $t1: $1_object_DeriveRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeriveRef': $1_object_DeriveRef; + var $temp_0'address': int; + var $1_object_ObjectCore_$memory#94: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$at(49,11823,11824)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume $IsValid'$1_object_DeriveRef'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t3, object::spec_create_user_derived_object_address($t0, select object::DeriveRef.self($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:177:9+89 + assume {:print "$at(50,7512,7601)"} true; + assume ($t3 == $1_object_spec_create_user_derived_object_address($t0, $t1->$self)); + + // @94 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$at(49,11823,11824)"} true; + $1_object_ObjectCore_$memory#94 := $1_object_ObjectCore_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$track_local(40,18,0):", $t0} $t0 == $t0; + + // trace_local[derive_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:271:5+1 + assume {:print "$track_local(40,18,1):", $t1} $t1 == $t1; + + // $t4 := get_field.self($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:76+15 + assume {:print "$at(49,12012,12027)"} true; + $t4 := $t1->$self; + + // $t5 := opaque begin: object::create_user_derived_object_address($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + assume $IsValid'address'($t5); + + // assume Eq
($t5, object::spec_create_user_derived_object_address($t0, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + assume $IsEqual'address'($t5, $1_object_spec_create_user_derived_object_address($t0, $t4)); + + // $t5 := opaque end: object::create_user_derived_object_address($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:24+68 + + // trace_local[obj_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:272:13+8 + assume {:print "$track_local(40,18,2):", $t5} $t5 == $t5; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:59+5 + assume {:print "$at(49,12088,12093)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t7 := object::create_object_internal($t0, $t5, $t6) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:9+56 + call $t7 := $1_object_create_object_internal($t0, $t5, $t6); + if ($abort_flag) { + assume {:print "$at(49,12038,12094)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,18):", $t8} $t8 == $t8; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:273:9+56 + assume {:print "$track_return(40,18,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 + assume {:print "$at(49,12099,12100)"} true; +L1: + + // assert Not(exists[@94]($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:178:9+39 + assume {:print "$at(50,7610,7649)"} true; + assert {:msg "assert_failed(50,7610,7649): function does not abort under this condition"} + !$ResourceExists($1_object_ObjectCore_$memory#94, $t3); + + // assert exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:180:9+37 + assume {:print "$at(50,7659,7696)"} true; + assert {:msg "assert_failed(50,7659,7696): post-condition does not hold"} + $ResourceExists($1_object_ObjectCore_$memory, $t3); + + // assert Eq(global($t3), pack object::ObjectCore(Add(1125899906842624, 1), $t0, true, pack event::EventHandle(0, pack guid::GUID(pack guid::ID(1125899906842624, $t3))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:181:9+504 + assume {:print "$at(50,7705,8209)"} true; + assert {:msg "assert_failed(50,7705,8209): post-condition does not hold"} + $IsEqual'$1_object_ObjectCore'($ResourceValue($1_object_ObjectCore_$memory, $t3), $1_object_ObjectCore((1125899906842624 + 1), $t0, true, $1_event_EventHandle'$1_object_TransferEvent'(0, $1_guid_GUID($1_guid_ID(1125899906842624, $t3))))); + + // assert Eq($t7, pack object::ConstructorRef($t3, false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:195:9+71 + assume {:print "$at(50,8218,8289)"} true; + assert {:msg "assert_failed(50,8218,8289): post-condition does not hold"} + $IsEqual'$1_object_ConstructorRef'($t7, $1_object_ConstructorRef($t3, false)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:195:9+71 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:274:5+1 + assume {:print "$at(49,12099,12100)"} true; +L2: + + // assert exists[@94]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:176:5+891 + assume {:print "$at(50,7404,8295)"} true; + assert {:msg "assert_failed(50,7404,8295): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_object_ObjectCore_$memory#94, $t3); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:176:5+891 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::create_user_derived_object_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+533 +procedure {:timeLimit 80} $1_object_create_user_derived_object_address$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: Vec (int); + var $t4: bool; + var $t5: int; + var $t6: $Mutation (Vec (int)); + var $t7: Vec (int); + var $t8: $Mutation (Vec (int)); + var $t9: int; + var $t10: Vec (int); + var $t11: Vec (int); + var $t12: Vec (int); + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+1 + assume {:print "$at(49,9674,9675)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[source]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+1 + assume {:print "$track_local(40,19,0):", $t0} $t0 == $t0; + + // trace_local[derive_from]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:227:5+1 + assume {:print "$track_local(40,19,1):", $t1} $t1 == $t1; + + // $t4 := features::object_native_derived_address_enabled() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:228:13+54 + assume {:print "$at(49,9782,9836)"} true; + call $t4 := $1_features_object_native_derived_address_enabled(); + if ($abort_flag) { + assume {:print "$at(49,9782,9836)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:228:9+423 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:229:53+6 + assume {:print "$at(49,9892,9898)"} true; +L1: + + // $t2 := opaque begin: object::create_user_derived_object_address_impl($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:229:13+60 + assume {:print "$at(49,9852,9912)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:229:13+60 + assume $IsValid'address'($t2); + + // assume Eq
($t2, object::spec_create_user_derived_object_address_impl($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:229:13+60 + assume $IsEqual'address'($t2, $1_object_spec_create_user_derived_object_address_impl($t0, $t1)); + + // $t2 := opaque end: object::create_user_derived_object_address_impl($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:229:13+60 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:228:9+423 + assume {:print "$at(49,9778,10201)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:231:39+7 + assume {:print "$at(49,9968,9975)"} true; +L0: + + // $t3 := bcs::to_bytes
($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:231:25+22 + assume {:print "$at(49,9954,9976)"} true; + call $t3 := $1_bcs_to_bytes'address'($t0); + if ($abort_flag) { + assume {:print "$at(49,9954,9976)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:231:17+5 + assume {:print "$track_local(40,19,3):", $t3} $t3 == $t3; + + // $t6 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:232:28+10 + assume {:print "$at(49,10005,10015)"} true; + $t6 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t7 := bcs::to_bytes
($t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:232:40+27 + call $t7 := $1_bcs_to_bytes'address'($t1); + if ($abort_flag) { + assume {:print "$at(49,10017,10044)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // vector::append($t6, $t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:232:13+55 + call $t6 := $1_vector_append'u8'($t6, $t7); + if ($abort_flag) { + assume {:print "$at(49,9990,10045)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:232:13+55 + $t3 := $Dereference($t6); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:232:13+55 + assume {:print "$track_local(40,19,3):", $t3} $t3 == $t3; + + // $t8 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:233:31+10 + assume {:print "$at(49,10077,10087)"} true; + $t8 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t9 := 252 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:233:43+21 + $t9 := 252; + assume $IsValid'u8'($t9); + + // vector::push_back($t8, $t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:233:13+52 + call $t8 := $1_vector_push_back'u8'($t8, $t9); + if ($abort_flag) { + assume {:print "$at(49,10059,10111)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:233:13+52 + $t3 := $Dereference($t8); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:233:13+52 + assume {:print "$track_local(40,19,3):", $t3} $t3 == $t3; + + // $t10 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:234:71+5 + assume {:print "$at(49,10183,10188)"} true; + $t10 := $t3; + + // $t11 := hash::sha3_256($t10) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:234:56+21 + call $t11 := $1_hash_sha3_256($t10); + if ($abort_flag) { + assume {:print "$at(49,10168,10189)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // $t12 := bcs_util::truncate_16($t11) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:234:34+44 + call $t12 := $1_bcs_util_truncate_16($t11); + if ($abort_flag) { + assume {:print "$at(49,10146,10190)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // $t2 := from_bcs::to_address($t12) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:234:13+66 + call $t2 := $1_from_bcs_to_address($t12); + if ($abort_flag) { + assume {:print "$at(49,10125,10191)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,19):", $t5} $t5 == $t5; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:228:9+423 + assume {:print "$at(49,9778,10201)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:228:9+423 + assume {:print "$at(49,9778,10201)"} true; + assume {:print "$track_return(40,19,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:236:5+1 + assume {:print "$at(49,10206,10207)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:236:5+1 + assume {:print "$at(49,10206,10207)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:236:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:236:5+1 + assume {:print "$at(49,10206,10207)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::delete [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+492 +procedure {:inline 1} $1_object_delete(_$t0: $1_object_DeleteRef) returns () +{ + // declare local variables + var $t1: $1_event_EventHandle'$1_object_TransferEvent'; + var $t2: int; + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_event_EventHandle'$1_object_TransferEvent'; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $1_object_Untransferable; + var $t13: bool; + var $t0: $1_object_DeleteRef; + var $temp_0'$1_event_EventHandle'$1_object_TransferEvent'': $1_event_EventHandle'$1_object_TransferEvent'; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + assume {:print "$at(49,18589,18590)"} true; + assume {:print "$track_local(40,21,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:431:49+8 + assume {:print "$at(49,18709,18717)"} true; + $t2 := $t0->$self; + + // $t3 := move_from($t2) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:431:27+9 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_object_ObjectCore_$memory, $t2); + $1_object_ObjectCore_$memory := $ResourceRemove($1_object_ObjectCore_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(49,18687,18696)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // ($t5, $t6, $t7, $t8) := unpack object::ObjectCore($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:432:13+146 + assume {:print "$at(49,18732,18878)"} true; + $t5 := $t3->$guid_creation_num; + $t6 := $t3->$owner; + $t7 := $t3->$allow_ungated_transfer; + $t8 := $t3->$transfer_events; + + // trace_local[transfer_events]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:436:13+15 + assume {:print "$at(49,18852,18867)"} true; + assume {:print "$track_local(40,21,1):", $t8} $t8 == $t8; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:435:37+1 + assume {:print "$at(49,18837,18838)"} true; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:434:20+1 + assume {:print "$at(49,18798,18799)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:433:32+1 + assume {:print "$at(49,18776,18777)"} true; + + // $t9 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:36+8 + assume {:print "$at(49,18930,18938)"} true; + $t9 := $t0->$self; + + // $t10 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:13+6 + $t10 := $ResourceExists($1_object_Untransferable_$memory, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:9+122 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:63+3 + assume {:print "$at(49,19005,19008)"} true; +L1: + + // $t11 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:63+8 + assume {:print "$at(49,19005,19013)"} true; + $t11 := $t0->$self; + + // $t12 := move_from($t11) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:37+9 + if (!$ResourceExists($1_object_Untransferable_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $ResourceValue($1_object_Untransferable_$memory, $t11); + $1_object_Untransferable_$memory := $ResourceRemove($1_object_Untransferable_$memory, $t11); + } + if ($abort_flag) { + assume {:print "$at(49,18979,18988)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // $t13 := unpack object::Untransferable($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:17+17 + $t13 := $t12->$dummy_field; + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:17+17 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:443:31+15 + assume {:print "$at(49,19058,19073)"} true; +L0: + + // event::destroy_handle($t8) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:443:9+38 + assume {:print "$at(49,19036,19074)"} true; + call $1_event_destroy_handle'$1_object_TransferEvent'($t8); + if ($abort_flag) { + assume {:print "$at(49,19036,19074)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 + assume {:print "$at(49,19080,19081)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 + assume {:print "$at(49,19080,19081)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 +L3: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 + assume {:print "$at(49,19080,19081)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::delete [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+492 +procedure {:timeLimit 80} $1_object_delete$verify(_$t0: $1_object_DeleteRef) returns () +{ + // declare local variables + var $t1: $1_event_EventHandle'$1_object_TransferEvent'; + var $t2: int; + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_event_EventHandle'$1_object_TransferEvent'; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $1_object_Untransferable; + var $t13: bool; + var $t0: $1_object_DeleteRef; + var $temp_0'$1_event_EventHandle'$1_object_TransferEvent'': $1_event_EventHandle'$1_object_TransferEvent'; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $1_object_ObjectCore_$memory#96: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + assume {:print "$at(49,18589,18590)"} true; + assume $IsValid'$1_object_DeleteRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // @96 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + $1_object_ObjectCore_$memory#96 := $1_object_ObjectCore_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:430:5+1 + assume {:print "$track_local(40,21,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:431:49+8 + assume {:print "$at(49,18709,18717)"} true; + $t2 := $t0->$self; + + // $t3 := move_from($t2) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:431:27+9 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_object_ObjectCore_$memory, $t2); + $1_object_ObjectCore_$memory := $ResourceRemove($1_object_ObjectCore_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(49,18687,18696)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // ($t5, $t6, $t7, $t8) := unpack object::ObjectCore($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:432:13+146 + assume {:print "$at(49,18732,18878)"} true; + $t5 := $t3->$guid_creation_num; + $t6 := $t3->$owner; + $t7 := $t3->$allow_ungated_transfer; + $t8 := $t3->$transfer_events; + + // trace_local[transfer_events]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:436:13+15 + assume {:print "$at(49,18852,18867)"} true; + assume {:print "$track_local(40,21,1):", $t8} $t8 == $t8; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:435:37+1 + assume {:print "$at(49,18837,18838)"} true; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:434:20+1 + assume {:print "$at(49,18798,18799)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:433:32+1 + assume {:print "$at(49,18776,18777)"} true; + + // $t9 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:36+8 + assume {:print "$at(49,18930,18938)"} true; + $t9 := $t0->$self; + + // $t10 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:13+6 + $t10 := $ResourceExists($1_object_Untransferable_$memory, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:439:9+122 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:63+3 + assume {:print "$at(49,19005,19008)"} true; +L1: + + // $t11 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:63+8 + assume {:print "$at(49,19005,19013)"} true; + $t11 := $t0->$self; + + // $t12 := move_from($t11) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:37+9 + if (!$ResourceExists($1_object_Untransferable_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $ResourceValue($1_object_Untransferable_$memory, $t11); + $1_object_Untransferable_$memory := $ResourceRemove($1_object_Untransferable_$memory, $t11); + } + if ($abort_flag) { + assume {:print "$at(49,18979,18988)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // $t13 := unpack object::Untransferable($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:17+17 + $t13 := $t12->$dummy_field; + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:440:17+17 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:443:31+15 + assume {:print "$at(49,19058,19073)"} true; +L0: + + // event::destroy_handle($t8) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:443:9+38 + assume {:print "$at(49,19036,19074)"} true; + call $1_event_destroy_handle'$1_object_TransferEvent'($t8); + if ($abort_flag) { + assume {:print "$at(49,19036,19074)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,21):", $t4} $t4 == $t4; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 + assume {:print "$at(49,19080,19081)"} true; +L2: + + // assert Not(Not(exists[@96](select object::DeleteRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:385:9+40 + assume {:print "$at(50,15607,15647)"} true; + assert {:msg "assert_failed(50,15607,15647): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#96, $t0->$self); + + // assert Not(exists(select object::DeleteRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:386:9+38 + assume {:print "$at(50,15656,15694)"} true; + assert {:msg "assert_failed(50,15656,15694): post-condition does not hold"} + !$ResourceExists($1_object_ObjectCore_$memory, $t0->$self); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:386:9+38 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:444:5+1 + assume {:print "$at(49,19080,19081)"} true; +L3: + + // assert Not(exists[@96](select object::DeleteRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:384:5+131 + assume {:print "$at(50,15569,15700)"} true; + assert {:msg "assert_failed(50,15569,15700): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_object_ObjectCore_$memory#96, $t0->$self); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:384:5+131 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::disable_ungated_transfer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+191 +procedure {:inline 1} $1_object_disable_ungated_transfer(_$t0: $1_object_TransferRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: int; + var $t3: $Mutation ($1_object_ObjectCore); + var $t4: int; + var $t5: bool; + var $t6: $Mutation (bool); + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+1 + assume {:print "$at(49,19523,19524)"} true; + assume {:print "$track_local(40,22,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:52+8 + assume {:print "$at(49,19651,19659)"} true; + $t2 := $t0->$self; + + // $t3 := borrow_global($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t2)); + } + if ($abort_flag) { + assume {:print "$at(49,19621,19638)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,22):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[object]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t3); + assume {:print "$track_local(40,22,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t5 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:41+5 + assume {:print "$at(49,19702,19707)"} true; + $t5 := false; + assume $IsValid'bool'($t5); + + // $t6 := borrow_field.allow_ungated_transfer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+29 + $t6 := $ChildMutation($t3, 2, $Dereference($t3)->$allow_ungated_transfer); + + // write_ref($t6, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $t6 := $UpdateMutation($t6, $t5); + + // write_back[Reference($t3).allow_ungated_transfer (bool)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $t3 := $UpdateMutation($t3, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t3), $Dereference($t6))); + + // write_back[object::ObjectCore@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 + assume {:print "$at(49,19713,19714)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 + assume {:print "$at(49,19713,19714)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 + assume {:print "$at(49,19713,19714)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::disable_ungated_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+191 +procedure {:timeLimit 80} $1_object_disable_ungated_transfer$verify(_$t0: $1_object_TransferRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: int; + var $t3: $Mutation ($1_object_ObjectCore); + var $t4: int; + var $t5: bool; + var $t6: $Mutation (bool); + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $1_object_ObjectCore_$memory#98: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+1 + assume {:print "$at(49,19523,19524)"} true; + assume $IsValid'$1_object_TransferRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @98 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+1 + $1_object_ObjectCore_$memory#98 := $1_object_ObjectCore_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:461:5+1 + assume {:print "$track_local(40,22,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:52+8 + assume {:print "$at(49,19651,19659)"} true; + $t2 := $t0->$self; + + // $t3 := borrow_global($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t2)); + } + if ($abort_flag) { + assume {:print "$at(49,19621,19638)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,22):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[object]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:462:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t3); + assume {:print "$track_local(40,22,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t5 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:41+5 + assume {:print "$at(49,19702,19707)"} true; + $t5 := false; + assume $IsValid'bool'($t5); + + // $t6 := borrow_field.allow_ungated_transfer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+29 + $t6 := $ChildMutation($t3, 2, $Dereference($t3)->$allow_ungated_transfer); + + // write_ref($t6, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $t6 := $UpdateMutation($t6, $t5); + + // write_back[Reference($t3).allow_ungated_transfer (bool)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $t3 := $UpdateMutation($t3, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t3), $Dereference($t6))); + + // write_back[object::ObjectCore@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:463:9+37 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 + assume {:print "$at(49,19713,19714)"} true; +L1: + + // assert Not(Not(exists[@98](select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:334:9+40 + assume {:print "$at(50,13845,13885)"} true; + assert {:msg "assert_failed(50,13845,13885): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#98, $t0->$self); + + // assert Eq(select object::ObjectCore.allow_ungated_transfer(global(select object::TransferRef.self($t0))), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:335:9+69 + assume {:print "$at(50,13894,13963)"} true; + assert {:msg "assert_failed(50,13894,13963): post-condition does not hold"} + $IsEqual'bool'($ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$allow_ungated_transfer, false); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:335:9+69 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:464:5+1 + assume {:print "$at(49,19713,19714)"} true; +L2: + + // assert Not(exists[@98](select object::TransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:333:5+183 + assume {:print "$at(50,13786,13969)"} true; + assert {:msg "assert_failed(50,13786,13969): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_object_ObjectCore_$memory#98, $t0->$self); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:333:5+183 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::enable_ungated_transfer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+294 +procedure {:inline 1} $1_object_enable_ungated_transfer(_$t0: $1_object_TransferRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_object_ObjectCore); + var $t10: bool; + var $t11: $Mutation (bool); + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + assume {:print "$at(49,20085,20086)"} true; + assume {:print "$track_local(40,23,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:41+8 + assume {:print "$at(49,20201,20209)"} true; + $t2 := $t0->$self; + + // $t3 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:18+6 + $t3 := $ResourceExists($1_object_Untransferable_$memory, $t2); + + // $t4 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:17+1 + call $t4 := $Not($t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + assume {:print "$at(49,20169,20264)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 +L0: + + // $t5 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:77+25 + assume {:print "$at(49,20237,20262)"} true; + $t5 := 9; + assume $IsValid'u64'($t5); + + // $t6 := error::permission_denied($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:52+51 + call $t6 := $1_error_permission_denied($t5); + if ($abort_flag) { + assume {:print "$at(49,20212,20263)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + assume {:print "$at(49,20169,20264)"} true; + assume {:print "$track_abort(40,23):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + $t7 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:52+3 + assume {:print "$at(49,20317,20320)"} true; +L2: + + // $t8 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:52+8 + assume {:print "$at(49,20317,20325)"} true; + $t8 := $t0->$self; + + // $t9 := borrow_global($t8) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t8)); + } + if ($abort_flag) { + assume {:print "$at(49,20287,20304)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[object]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t9); + assume {:print "$track_local(40,23,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t10 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:41+4 + assume {:print "$at(49,20368,20372)"} true; + $t10 := true; + assume $IsValid'bool'($t10); + + // $t11 := borrow_field.allow_ungated_transfer($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+29 + $t11 := $ChildMutation($t9, 2, $Dereference($t9)->$allow_ungated_transfer); + + // write_ref($t11, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $t11 := $UpdateMutation($t11, $t10); + + // write_back[Reference($t9).allow_ungated_transfer (bool)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t9), $Dereference($t11))); + + // write_back[object::ObjectCore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 + assume {:print "$at(49,20378,20379)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 + assume {:print "$at(49,20378,20379)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 + assume {:print "$at(49,20378,20379)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::enable_ungated_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+294 +procedure {:timeLimit 80} $1_object_enable_ungated_transfer$verify(_$t0: $1_object_TransferRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_object_ObjectCore); + var $t10: bool; + var $t11: $Mutation (bool); + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $1_object_Untransferable_$memory#100: $Memory $1_object_Untransferable; + var $1_object_ObjectCore_$memory#101: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + assume {:print "$at(49,20085,20086)"} true; + assume $IsValid'$1_object_TransferRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // @101 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + $1_object_ObjectCore_$memory#101 := $1_object_ObjectCore_$memory; + + // @100 := save_mem(object::Untransferable) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + $1_object_Untransferable_$memory#100 := $1_object_Untransferable_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:475:5+1 + assume {:print "$track_local(40,23,0):", $t0} $t0 == $t0; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:41+8 + assume {:print "$at(49,20201,20209)"} true; + $t2 := $t0->$self; + + // $t3 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:18+6 + $t3 := $ResourceExists($1_object_Untransferable_$memory, $t2); + + // $t4 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:17+1 + call $t4 := $Not($t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + assume {:print "$at(49,20169,20264)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 +L0: + + // $t5 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:77+25 + assume {:print "$at(49,20237,20262)"} true; + $t5 := 9; + assume $IsValid'u64'($t5); + + // $t6 := error::permission_denied($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:52+51 + call $t6 := $1_error_permission_denied($t5); + if ($abort_flag) { + assume {:print "$at(49,20212,20263)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + assume {:print "$at(49,20169,20264)"} true; + assume {:print "$track_abort(40,23):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + $t7 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:476:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:52+3 + assume {:print "$at(49,20317,20320)"} true; +L2: + + // $t8 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:52+8 + assume {:print "$at(49,20317,20325)"} true; + $t8 := $t0->$self; + + // $t9 := borrow_global($t8) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t8)); + } + if ($abort_flag) { + assume {:print "$at(49,20287,20304)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,23):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[object]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:477:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t9); + assume {:print "$track_local(40,23,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t10 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:41+4 + assume {:print "$at(49,20368,20372)"} true; + $t10 := true; + assume $IsValid'bool'($t10); + + // $t11 := borrow_field.allow_ungated_transfer($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+29 + $t11 := $ChildMutation($t9, 2, $Dereference($t9)->$allow_ungated_transfer); + + // write_ref($t11, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $t11 := $UpdateMutation($t11, $t10); + + // write_back[Reference($t9).allow_ungated_transfer (bool)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t9), $Dereference($t11))); + + // write_back[object::ObjectCore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:478:9+36 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 + assume {:print "$at(49,20378,20379)"} true; +L3: + + // assert Not(exists[@100](select object::TransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:397:9+43 + assume {:print "$at(50,16052,16095)"} true; + assert {:msg "assert_failed(50,16052,16095): function does not abort under this condition"} + !$ResourceExists($1_object_Untransferable_$memory#100, $t0->$self); + + // assert Not(Not(exists[@101](select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:398:9+40 + assume {:print "$at(50,16104,16144)"} true; + assert {:msg "assert_failed(50,16104,16144): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#101, $t0->$self); + + // assert Eq(select object::ObjectCore.allow_ungated_transfer(global(select object::TransferRef.self($t0))), true) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:399:9+68 + assume {:print "$at(50,16153,16221)"} true; + assert {:msg "assert_failed(50,16153,16221): post-condition does not hold"} + $IsEqual'bool'($ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$allow_ungated_transfer, true); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:399:9+68 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:479:5+1 + assume {:print "$at(49,20378,20379)"} true; +L4: + + // assert Or(exists[@100](select object::TransferRef.self($t0)), Not(exists[@101](select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:396:5+233 + assume {:print "$at(50,15994,16227)"} true; + assert {:msg "assert_failed(50,15994,16227): abort not covered by any of the `aborts_if` clauses"} + ($ResourceExists($1_object_Untransferable_$memory#100, $t0->$self) || !$ResourceExists($1_object_ObjectCore_$memory#101, $t0->$self)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:396:5+233 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::generate_delete_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:360:5+183 +procedure {:inline 1} $1_object_generate_delete_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_DeleteRef) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_object_DeleteRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:360:5+1 + assume {:print "$at(49,15978,15979)"} true; + assume {:print "$track_local(40,25,0):", $t0} $t0 == $t0; + + // $t1 := get_field.can_delete($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:17+14 + assume {:print "$at(49,16060,16074)"} true; + $t1 := $t0->$can_delete; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + assume {:print "$at(49,16052,16117)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 +L0: + + // $t2 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:58+14 + assume {:print "$at(49,16101,16115)"} true; + $t2 := 5; + assume $IsValid'u64'($t2); + + // $t3 := error::permission_denied($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:33+40 + call $t3 := $1_error_permission_denied($t2); + if ($abort_flag) { + assume {:print "$at(49,16076,16116)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,25):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + assume {:print "$at(49,16052,16117)"} true; + assume {:print "$track_abort(40,25):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:27+3 + assume {:print "$at(49,16145,16148)"} true; +L2: + + // $t5 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:27+8 + assume {:print "$at(49,16145,16153)"} true; + $t5 := $t0->$self; + + // $t6 := pack object::DeleteRef($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:9+28 + $t6 := $1_object_DeleteRef($t5); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:9+28 + assume {:print "$track_return(40,25,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 + assume {:print "$at(49,16160,16161)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 + assume {:print "$at(49,16160,16161)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 + assume {:print "$at(49,16160,16161)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::generate_delete_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:360:5+183 +procedure {:timeLimit 80} $1_object_generate_delete_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_DeleteRef) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_object_DeleteRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:360:5+1 + assume {:print "$at(49,15978,15979)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:360:5+1 + assume {:print "$track_local(40,25,0):", $t0} $t0 == $t0; + + // $t1 := get_field.can_delete($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:17+14 + assume {:print "$at(49,16060,16074)"} true; + $t1 := $t0->$can_delete; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + assume {:print "$at(49,16052,16117)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 +L0: + + // $t2 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:58+14 + assume {:print "$at(49,16101,16115)"} true; + $t2 := 5; + assume $IsValid'u64'($t2); + + // $t3 := error::permission_denied($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:33+40 + call $t3 := $1_error_permission_denied($t2); + if ($abort_flag) { + assume {:print "$at(49,16076,16116)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(40,25):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + assume {:print "$at(49,16052,16117)"} true; + assume {:print "$track_abort(40,25):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:361:9+65 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:27+3 + assume {:print "$at(49,16145,16148)"} true; +L2: + + // $t5 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:27+8 + assume {:print "$at(49,16145,16153)"} true; + $t5 := $t0->$self; + + // $t6 := pack object::DeleteRef($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:9+28 + $t6 := $1_object_DeleteRef($t5); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:362:9+28 + assume {:print "$track_return(40,25,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 + assume {:print "$at(49,16160,16161)"} true; +L3: + + // assert Not(Not(select object::ConstructorRef.can_delete($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:329:9+26 + assume {:print "$at(50,13692,13718)"} true; + assert {:msg "assert_failed(50,13692,13718): function does not abort under this condition"} + !!$t0->$can_delete; + + // assert Eq($t6, pack object::DeleteRef(select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:330:9+47 + assume {:print "$at(50,13727,13774)"} true; + assert {:msg "assert_failed(50,13727,13774): post-condition does not hold"} + $IsEqual'$1_object_DeleteRef'($t6, $1_object_DeleteRef($t0->$self)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:330:9+47 + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:363:5+1 + assume {:print "$at(49,16160,16161)"} true; +L4: + + // assert Not(select object::ConstructorRef.can_delete($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:328:5+156 + assume {:print "$at(50,13624,13780)"} true; + assert {:msg "assert_failed(50,13624,13780): abort not covered by any of the `aborts_if` clauses"} + !$t0->$can_delete; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:328:5+156 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object::generate_derive_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:377:5+108 +procedure {:inline 1} $1_object_generate_derive_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_DeriveRef) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_DeriveRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeriveRef': $1_object_DeriveRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:377:5+1 + assume {:print "$at(49,16800,16801)"} true; + assume {:print "$track_local(40,26,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:27+8 + assume {:print "$at(49,16892,16900)"} true; + $t1 := $t0->$self; + + // $t2 := pack object::DeriveRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:9+28 + $t2 := $1_object_DeriveRef($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:9+28 + assume {:print "$track_return(40,26,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:379:5+1 + assume {:print "$at(49,16907,16908)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:379:5+1 + assume {:print "$at(49,16907,16908)"} true; + $ret0 := $t2; + return; + +} + +// fun object::generate_derive_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:377:5+108 +procedure {:timeLimit 80} $1_object_generate_derive_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_DeriveRef) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_DeriveRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeriveRef': $1_object_DeriveRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:377:5+1 + assume {:print "$at(49,16800,16801)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:377:5+1 + assume {:print "$track_local(40,26,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:27+8 + assume {:print "$at(49,16892,16900)"} true; + $t1 := $t0->$self; + + // $t2 := pack object::DeriveRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:9+28 + $t2 := $1_object_DeriveRef($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:378:9+28 + assume {:print "$track_return(40,26,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:379:5+1 + assume {:print "$at(49,16907,16908)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:379:5+1 + assume {:print "$at(49,16907,16908)"} true; + assert {:msg "assert_failed(49,16907,16908): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:379:5+1 + $ret0 := $t2; + return; + +} + +// fun object::generate_extend_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:366:5+108 +procedure {:inline 1} $1_object_generate_extend_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_ExtendRef) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_ExtendRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:366:5+1 + assume {:print "$at(49,16265,16266)"} true; + assume {:print "$track_local(40,27,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:27+8 + assume {:print "$at(49,16357,16365)"} true; + $t1 := $t0->$self; + + // $t2 := pack object::ExtendRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:9+28 + $t2 := $1_object_ExtendRef($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:9+28 + assume {:print "$track_return(40,27,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:368:5+1 + assume {:print "$at(49,16372,16373)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:368:5+1 + assume {:print "$at(49,16372,16373)"} true; + $ret0 := $t2; + return; + +} + +// fun object::generate_extend_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:366:5+108 +procedure {:timeLimit 80} $1_object_generate_extend_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_ExtendRef) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_ExtendRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:366:5+1 + assume {:print "$at(49,16265,16266)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:366:5+1 + assume {:print "$track_local(40,27,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:27+8 + assume {:print "$at(49,16357,16365)"} true; + $t1 := $t0->$self; + + // $t2 := pack object::ExtendRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:9+28 + $t2 := $1_object_ExtendRef($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:367:9+28 + assume {:print "$track_return(40,27,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:368:5+1 + assume {:print "$at(49,16372,16373)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:368:5+1 + assume {:print "$at(49,16372,16373)"} true; + assert {:msg "assert_failed(49,16372,16373): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:368:5+1 + $ret0 := $t2; + return; + +} + +// fun object::generate_linear_transfer_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+362 +procedure {:inline 1} $1_object_generate_linear_transfer_ref(_$t0: $1_object_TransferRef) returns ($ret0: $1_object_LinearTransferRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_object_ObjectCore'; + var $t11: int; + var $t12: int; + var $t13: $1_object_LinearTransferRef; + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_LinearTransferRef': $1_object_LinearTransferRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, select object::ObjectCore.owner(global(select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:412:9+47 + assume {:print "$at(50,16622,16669)"} true; + assume ($t2 == $ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$owner); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume {:print "$at(49,20550,20551)"} true; + assume {:print "$track_local(40,28,0):", $t0} $t0 == $t0; + + // $t3 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:41+8 + assume {:print "$at(49,20690,20698)"} true; + $t3 := $t0->$self; + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:18+6 + $t4 := $ResourceExists($1_object_Untransferable_$memory, $t3); + + // $t5 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:17+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + assume {:print "$at(49,20658,20753)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 +L0: + + // $t6 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:77+25 + assume {:print "$at(49,20726,20751)"} true; + $t6 := 9; + assume $IsValid'u64'($t6); + + // $t7 := error::permission_denied($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:52+51 + call $t7 := $1_error_permission_denied($t6); + if ($abort_flag) { + assume {:print "$at(49,20701,20752)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,28):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + assume {:print "$at(49,20658,20753)"} true; + assume {:print "$track_abort(40,28):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:55+3 + assume {:print "$at(49,20809,20812)"} true; +L2: + + // $t9 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:55+8 + assume {:print "$at(49,20809,20817)"} true; + $t9 := $t0->$self; + + // $t10 := pack object::Object($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:27+38 + $t10 := $1_object_Object'$1_object_ObjectCore'($t9); + + // $t11 := object::owner($t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:21+45 + call $t11 := $1_object_owner'$1_object_ObjectCore'($t10); + if ($abort_flag) { + assume {:print "$at(49,20775,20820)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,28):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[owner]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:13+5 + assume {:print "$track_local(40,28,1):", $t11} $t11 == $t11; + + // $t12 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:487:19+8 + assume {:print "$at(49,20868,20876)"} true; + $t12 := $t0->$self; + + // $t13 := pack object::LinearTransferRef($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:486:9+76 + assume {:print "$at(49,20830,20906)"} true; + $t13 := $1_object_LinearTransferRef($t12, $t11); + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:486:9+76 + assume {:print "$track_return(40,28,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 + assume {:print "$at(49,20911,20912)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 + assume {:print "$at(49,20911,20912)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 + assume {:print "$at(49,20911,20912)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::generate_linear_transfer_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+362 +procedure {:timeLimit 80} $1_object_generate_linear_transfer_ref$verify(_$t0: $1_object_TransferRef) returns ($ret0: $1_object_LinearTransferRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_object_ObjectCore'; + var $t11: int; + var $t12: int; + var $t13: $1_object_LinearTransferRef; + var $t0: $1_object_TransferRef; + var $temp_0'$1_object_LinearTransferRef': $1_object_LinearTransferRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'address': int; + var $1_object_Untransferable_$memory#104: $Memory $1_object_Untransferable; + var $1_object_ObjectCore_$memory#105: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume {:print "$at(49,20550,20551)"} true; + assume $IsValid'$1_object_TransferRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume Identical($t2, select object::ObjectCore.owner(global(select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:412:9+47 + assume {:print "$at(50,16622,16669)"} true; + assume ($t2 == $ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$owner); + + // @105 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume {:print "$at(49,20550,20551)"} true; + $1_object_ObjectCore_$memory#105 := $1_object_ObjectCore_$memory; + + // @104 := save_mem(object::Untransferable) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + $1_object_Untransferable_$memory#104 := $1_object_Untransferable_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:483:5+1 + assume {:print "$track_local(40,28,0):", $t0} $t0 == $t0; + + // $t3 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:41+8 + assume {:print "$at(49,20690,20698)"} true; + $t3 := $t0->$self; + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:18+6 + $t4 := $ResourceExists($1_object_Untransferable_$memory, $t3); + + // $t5 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:17+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + assume {:print "$at(49,20658,20753)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 +L0: + + // $t6 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:77+25 + assume {:print "$at(49,20726,20751)"} true; + $t6 := 9; + assume $IsValid'u64'($t6); + + // $t7 := error::permission_denied($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:52+51 + call $t7 := $1_error_permission_denied($t6); + if ($abort_flag) { + assume {:print "$at(49,20701,20752)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,28):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + assume {:print "$at(49,20658,20753)"} true; + assume {:print "$track_abort(40,28):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:484:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:55+3 + assume {:print "$at(49,20809,20812)"} true; +L2: + + // $t9 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:55+8 + assume {:print "$at(49,20809,20817)"} true; + $t9 := $t0->$self; + + // $t10 := pack object::Object($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:27+38 + $t10 := $1_object_Object'$1_object_ObjectCore'($t9); + + // $t11 := object::owner($t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:21+45 + call $t11 := $1_object_owner'$1_object_ObjectCore'($t10); + if ($abort_flag) { + assume {:print "$at(49,20775,20820)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,28):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[owner]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:485:13+5 + assume {:print "$track_local(40,28,1):", $t11} $t11 == $t11; + + // $t12 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:487:19+8 + assume {:print "$at(49,20868,20876)"} true; + $t12 := $t0->$self; + + // $t13 := pack object::LinearTransferRef($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:486:9+76 + assume {:print "$at(49,20830,20906)"} true; + $t13 := $1_object_LinearTransferRef($t12, $t11); + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:486:9+76 + assume {:print "$track_return(40,28,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 + assume {:print "$at(49,20911,20912)"} true; +L3: + + // assert Not(exists[@104](select object::TransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:410:9+43 + assume {:print "$at(50,16521,16564)"} true; + assert {:msg "assert_failed(50,16521,16564): function does not abort under this condition"} + !$ResourceExists($1_object_Untransferable_$memory#104, $t0->$self); + + // assert Not(Not(exists[@105](select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:411:9+40 + assume {:print "$at(50,16573,16613)"} true; + assert {:msg "assert_failed(50,16573,16613): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#105, $t0->$self); + + // assert Eq($t13, pack object::LinearTransferRef(select object::TransferRef.self($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:413:9+95 + assume {:print "$at(50,16678,16773)"} true; + assert {:msg "assert_failed(50,16678,16773): post-condition does not hold"} + $IsEqual'$1_object_LinearTransferRef'($t13, $1_object_LinearTransferRef($t0->$self, $t2)); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:413:9+95 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:490:5+1 + assume {:print "$at(49,20911,20912)"} true; +L4: + + // assert Or(exists[@104](select object::TransferRef.self($t0)), Not(exists[@105](select object::TransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:409:5+340 + assume {:print "$at(50,16439,16779)"} true; + assert {:msg "assert_failed(50,16439,16779): abort not covered by any of the `aborts_if` clauses"} + ($ResourceExists($1_object_Untransferable_$memory#104, $t0->$self) || !$ResourceExists($1_object_ObjectCore_$memory#105, $t0->$self)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:409:5+340 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::generate_signer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:382:5+96 +procedure {:inline 1} $1_object_generate_signer(_$t0: $1_object_ConstructorRef) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:382:5+1 + assume {:print "$at(49,16961,16962)"} true; + assume {:print "$track_local(40,29,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:23+8 + assume {:print "$at(49,17042,17050)"} true; + $t1 := $t0->$self; + + // $t2 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume $IsValid'signer'($t2) && $1_signer_is_txn_signer($t2) && $1_signer_is_txn_signer_addr($t2->$addr); + + // assume Eq
(signer::$address_of($t2), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume $IsEqual'address'($1_signer_$address_of($t2), $t1); + + // $t2 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume {:print "$track_return(40,29,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:384:5+1 + assume {:print "$at(49,17056,17057)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:384:5+1 + assume {:print "$at(49,17056,17057)"} true; + $ret0 := $t2; + return; + +} + +// fun object::generate_signer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:382:5+96 +procedure {:timeLimit 80} $1_object_generate_signer$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:382:5+1 + assume {:print "$at(49,16961,16962)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:382:5+1 + assume {:print "$track_local(40,29,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:23+8 + assume {:print "$at(49,17042,17050)"} true; + $t1 := $t0->$self; + + // $t2 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume $IsValid'signer'($t2) && $1_signer_is_txn_signer($t2) && $1_signer_is_txn_signer_addr($t2->$addr); + + // assume Eq
(signer::$address_of($t2), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume $IsEqual'address'($1_signer_$address_of($t2), $t1); + + // $t2 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:383:9+23 + assume {:print "$track_return(40,29,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:384:5+1 + assume {:print "$at(49,17056,17057)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:384:5+1 + assume {:print "$at(49,17056,17057)"} true; + assert {:msg "assert_failed(49,17056,17057): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:384:5+1 + $ret0 := $t2; + return; + +} + +// fun object::generate_signer_for_extending [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:449:5+105 +procedure {:inline 1} $1_object_generate_signer_for_extending(_$t0: $1_object_ExtendRef) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:449:5+1 + assume {:print "$at(49,19155,19156)"} true; + assume {:print "$track_local(40,30,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:23+8 + assume {:print "$at(49,19245,19253)"} true; + $t1 := $t0->$self; + + // $t2 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume $IsValid'signer'($t2) && $1_signer_is_txn_signer($t2) && $1_signer_is_txn_signer_addr($t2->$addr); + + // assume Eq
(signer::$address_of($t2), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume $IsEqual'address'($1_signer_$address_of($t2), $t1); + + // $t2 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume {:print "$track_return(40,30,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:451:5+1 + assume {:print "$at(49,19259,19260)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:451:5+1 + assume {:print "$at(49,19259,19260)"} true; + $ret0 := $t2; + return; + +} + +// fun object::generate_signer_for_extending [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:449:5+105 +procedure {:timeLimit 80} $1_object_generate_signer_for_extending$verify(_$t0: $1_object_ExtendRef) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:449:5+1 + assume {:print "$at(49,19155,19156)"} true; + assume $IsValid'$1_object_ExtendRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:449:5+1 + assume {:print "$track_local(40,30,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:23+8 + assume {:print "$at(49,19245,19253)"} true; + $t1 := $t0->$self; + + // $t2 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume $IsValid'signer'($t2) && $1_signer_is_txn_signer($t2) && $1_signer_is_txn_signer_addr($t2->$addr); + + // assume Eq
(signer::$address_of($t2), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume $IsEqual'address'($1_signer_$address_of($t2), $t1); + + // $t2 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:450:9+23 + assume {:print "$track_return(40,30,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:451:5+1 + assume {:print "$at(49,19259,19260)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:451:5+1 + assume {:print "$at(49,19259,19260)"} true; + assert {:msg "assert_failed(49,19259,19260): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:451:5+1 + $ret0 := $t2; + return; + +} + +// fun object::generate_transfer_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+219 +procedure {:inline 1} $1_object_generate_transfer_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_TransferRef) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_object_TransferRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+1 + assume {:print "$at(49,16460,16461)"} true; + assume {:print "$track_local(40,31,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:41+8 + assume {:print "$at(49,16570,16578)"} true; + $t1 := $t0->$self; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:18+6 + $t2 := $ResourceExists($1_object_Untransferable_$memory, $t1); + + // $t3 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:17+1 + call $t3 := $Not($t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + assume {:print "$at(49,16538,16633)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 +L0: + + // $t4 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:77+25 + assume {:print "$at(49,16606,16631)"} true; + $t4 := 9; + assume $IsValid'u64'($t4); + + // $t5 := error::permission_denied($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:52+51 + call $t5 := $1_error_permission_denied($t4); + if ($abort_flag) { + assume {:print "$at(49,16581,16632)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(40,31):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + assume {:print "$at(49,16538,16633)"} true; + assume {:print "$track_abort(40,31):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:29+3 + assume {:print "$at(49,16663,16666)"} true; +L2: + + // $t7 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:29+8 + assume {:print "$at(49,16663,16671)"} true; + $t7 := $t0->$self; + + // $t8 := pack object::TransferRef($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:9+30 + $t8 := $1_object_TransferRef($t7); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:9+30 + assume {:print "$track_return(40,31,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 + assume {:print "$at(49,16678,16679)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 + assume {:print "$at(49,16678,16679)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 + assume {:print "$at(49,16678,16679)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun object::generate_transfer_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+219 +procedure {:timeLimit 80} $1_object_generate_transfer_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_TransferRef) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_object_TransferRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $1_object_Untransferable_$memory#108: $Memory $1_object_Untransferable; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+1 + assume {:print "$at(49,16460,16461)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // @108 := save_mem(object::Untransferable) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+1 + $1_object_Untransferable_$memory#108 := $1_object_Untransferable_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:371:5+1 + assume {:print "$track_local(40,31,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:41+8 + assume {:print "$at(49,16570,16578)"} true; + $t1 := $t0->$self; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:18+6 + $t2 := $ResourceExists($1_object_Untransferable_$memory, $t1); + + // $t3 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:17+1 + call $t3 := $Not($t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + assume {:print "$at(49,16538,16633)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 +L0: + + // $t4 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:77+25 + assume {:print "$at(49,16606,16631)"} true; + $t4 := 9; + assume $IsValid'u64'($t4); + + // $t5 := error::permission_denied($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:52+51 + call $t5 := $1_error_permission_denied($t4); + if ($abort_flag) { + assume {:print "$at(49,16581,16632)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(40,31):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + assume {:print "$at(49,16538,16633)"} true; + assume {:print "$track_abort(40,31):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:372:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:29+3 + assume {:print "$at(49,16663,16666)"} true; +L2: + + // $t7 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:29+8 + assume {:print "$at(49,16663,16671)"} true; + $t7 := $t0->$self; + + // $t8 := pack object::TransferRef($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:9+30 + $t8 := $1_object_TransferRef($t7); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:373:9+30 + assume {:print "$track_return(40,31,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 + assume {:print "$at(49,16678,16679)"} true; +L3: + + // assert Not(exists[@108](select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:403:9+43 + assume {:print "$at(50,16305,16348)"} true; + assert {:msg "assert_failed(50,16305,16348): function does not abort under this condition"} + !$ResourceExists($1_object_Untransferable_$memory#108, $t0->$self); + + // assert Eq($t8, pack object::TransferRef(select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:404:9+70 + assume {:print "$at(50,16357,16427)"} true; + assert {:msg "assert_failed(50,16357,16427): post-condition does not hold"} + $IsEqual'$1_object_TransferRef'($t8, $1_object_TransferRef($t0->$self)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:404:9+70 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:374:5+1 + assume {:print "$at(49,16678,16679)"} true; +L4: + + // assert exists[@108](select object::ConstructorRef.self($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:402:5+200 + assume {:print "$at(50,16233,16433)"} true; + assert {:msg "assert_failed(50,16233,16433): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_object_Untransferable_$memory#108, $t0->$self); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:402:5+200 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun object::is_burnt [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+100 +procedure {:inline 1} $1_object_is_burnt'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+1 + assume {:print "$at(49,8130,8131)"} true; + assume {:print "$track_local(40,32,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:27+12 + assume {:print "$at(49,8211,8223)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:9+6 + $t2 := $ResourceExists($1_object_TombStone_$memory, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:9+31 + assume {:print "$track_return(40,32,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:194:5+1 + assume {:print "$at(49,8229,8230)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:194:5+1 + assume {:print "$at(49,8229,8230)"} true; + $ret0 := $t2; + return; + +} + +// fun object::is_burnt [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+100 +procedure {:timeLimit 80} $1_object_is_burnt$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+1 + assume {:print "$at(49,8130,8131)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:192:5+1 + assume {:print "$track_local(40,32,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:27+12 + assume {:print "$at(49,8211,8223)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:9+6 + $t2 := $ResourceExists($1_object_TombStone_$memory, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:193:9+31 + assume {:print "$track_return(40,32,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:194:5+1 + assume {:print "$at(49,8229,8230)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:194:5+1 + assume {:print "$at(49,8229,8230)"} true; + assert {:msg "assert_failed(49,8229,8230): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:194:5+1 + $ret0 := $t2; + return; + +} + +// fun object::is_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+86 +procedure {:inline 1} $1_object_is_object(_$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[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+1 + assume {:print "$at(49,8672,8673)"} true; + assume {:print "$track_local(40,33,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:205:9+6 + assume {:print "$at(49,8726,8732)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:205:9+26 + assume {:print "$track_return(40,33,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:206:5+1 + assume {:print "$at(49,8757,8758)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:206:5+1 + assume {:print "$at(49,8757,8758)"} true; + $ret0 := $t1; + return; + +} + +// fun object::is_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+86 +procedure {:timeLimit 80} $1_object_is_object$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+1 + assume {:print "$at(49,8672,8673)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:204:5+1 + assume {:print "$track_local(40,33,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:205:9+6 + assume {:print "$at(49,8726,8732)"} true; + $t1 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:205:9+26 + assume {:print "$track_return(40,33,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:206:5+1 + assume {:print "$at(49,8757,8758)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:206:5+1 + assume {:print "$at(49,8757,8758)"} true; + assert {:msg "assert_failed(49,8757,8758): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:206:5+1 + $ret0 := $t1; + return; + +} + +// fun object::is_owner<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+127 +procedure {:inline 1} $1_object_is_owner'#0'(_$t0: $1_object_Object'#0', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_object_Object'#0'; + var $t1: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume {:print "$at(49,28079,28080)"} true; + assume {:print "$track_local(40,34,0):", $t0} $t0 == $t0; + + // trace_local[owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume {:print "$track_local(40,34,1):", $t1} $t1 == $t1; + + // $t2 := object::owner<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:9+13 + assume {:print "$at(49,28178,28191)"} true; + call $t2 := $1_object_owner'#0'($t0); + if ($abort_flag) { + assume {:print "$at(49,28178,28191)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,34):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := ==($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:23+2 + $t4 := $IsEqual'address'($t2, $t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:9+22 + assume {:print "$track_return(40,34,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 + assume {:print "$at(49,28205,28206)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 + assume {:print "$at(49,28205,28206)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 + assume {:print "$at(49,28205,28206)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::is_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+127 +procedure {:timeLimit 80} $1_object_is_owner$verify(_$t0: $1_object_Object'#0', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_object_Object'#0'; + var $t1: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_object_ObjectCore_$memory#72: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume {:print "$at(49,28079,28080)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @72 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + $1_object_ObjectCore_$memory#72 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume {:print "$track_local(40,34,0):", $t0} $t0 == $t0; + + // trace_local[owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:672:5+1 + assume {:print "$track_local(40,34,1):", $t1} $t1 == $t1; + + // $t2 := object::owner<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:9+13 + assume {:print "$at(49,28178,28191)"} true; + call $t2 := $1_object_owner'#0'($t0); + if ($abort_flag) { + assume {:print "$at(49,28178,28191)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,34):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := ==($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:23+2 + $t4 := $IsEqual'address'($t2, $t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:673:9+22 + assume {:print "$track_return(40,34,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 + assume {:print "$at(49,28205,28206)"} true; +L1: + + // assert Not(Not(exists[@72](select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:525:9+44 + assume {:print "$at(50,21046,21090)"} true; + assert {:msg "assert_failed(50,21046,21090): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#72, $t0->$inner); + + // assert Eq($t4, Eq
(select object::ObjectCore.owner(global(select object::Object.inner>($t0))), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:526:9+68 + assume {:print "$at(50,21099,21167)"} true; + assert {:msg "assert_failed(50,21099,21167): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'address'($ResourceValue($1_object_ObjectCore_$memory, $t0->$inner)->$owner, $t1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:526:9+68 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:674:5+1 + assume {:print "$at(49,28205,28206)"} true; +L2: + + // assert Not(exists[@72](select object::Object.inner>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:524:5+200 + assume {:print "$at(50,20973,21173)"} true; + assert {:msg "assert_failed(50,20973,21173): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_object_ObjectCore_$memory#72, $t0->$inner); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:524:5+200 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::is_untransferable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:187:5+114 +procedure {:timeLimit 80} $1_object_is_untransferable$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:187:5+1 + assume {:print "$at(49,7998,7999)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:187:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:187:5+1 + assume {:print "$track_local(40,35,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:188:32+12 + assume {:print "$at(49,8093,8105)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:188:9+6 + $t2 := $ResourceExists($1_object_Untransferable_$memory, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:188:9+36 + assume {:print "$track_return(40,35,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:189:5+1 + assume {:print "$at(49,8111,8112)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:189:5+1 + assume {:print "$at(49,8111,8112)"} true; + assert {:msg "assert_failed(49,8111,8112): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:189:5+1 + $ret0 := $t2; + return; + +} + +// fun object::object_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+122 +procedure {:inline 1} $1_object_object_exists'$1_coin_PairedCoinType'(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+1 + assume {:print "$at(49,8828,8829)"} true; + assume {:print "$track_local(40,38,0):", $t0} $t0 == $t0; + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+6 + assume {:print "$at(49,8894,8900)"} true; + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:52+6 +L1: + + // $t1 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume {:print "$at(49,8924,8944)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume $IsValid'bool'($t1); + + // assume Eq($t1, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume $IsEqual'bool'($t1, $1_object_spec_exists_at'$1_coin_PairedCoinType'($t0)); + + // $t1 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 +L0: + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + assume {:print "$at(49,8894,8944)"} true; + $t3 := false; + assume $IsValid'bool'($t3); + + // $t1 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + $t1 := $t3; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + assume {:print "$at(49,8894,8944)"} true; + assume {:print "$track_return(40,38,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:211:5+1 + assume {:print "$at(49,8949,8950)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:211:5+1 + assume {:print "$at(49,8949,8950)"} true; + $ret0 := $t1; + return; + +} + +// fun object::object_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+122 +procedure {:timeLimit 80} $1_object_object_exists$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+1 + assume {:print "$at(49,8828,8829)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:209:5+1 + assume {:print "$track_local(40,38,0):", $t0} $t0 == $t0; + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+6 + assume {:print "$at(49,8894,8900)"} true; + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t0); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:52+6 +L1: + + // $t1 := opaque begin: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume {:print "$at(49,8924,8944)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume $IsValid'bool'($t1); + + // assume Eq($t1, object::spec_exists_at<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + assume $IsEqual'bool'($t1, $1_object_spec_exists_at'#0'($t0)); + + // $t1 := opaque end: object::exists_at<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:39+20 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 +L0: + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + assume {:print "$at(49,8894,8944)"} true; + $t3 := false; + assume $IsValid'bool'($t3); + + // $t1 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + $t1 := $t3; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:210:9+50 + assume {:print "$at(49,8894,8944)"} true; + assume {:print "$track_return(40,38,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:211:5+1 + assume {:print "$at(49,8949,8950)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:211:5+1 + assume {:print "$at(49,8949,8950)"} true; + assert {:msg "assert_failed(49,8949,8950): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:211:5+1 + $ret0 := $t1; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_fungible_asset_FungibleStore'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_collection_Collection'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_collection_Collection') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_collection_Collection'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_object_token_Token'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_object_token_Token') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_object_token_Token'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_object_token_Token'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinCollection'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinCollection') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:inline 1} $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinToken'(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'$1_starcoin_token_StarcoinToken'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_constructor_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+126 +procedure {:timeLimit 80} $1_object_object_from_constructor_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_Object'#0') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'#0'; + var $t3: int; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $1_object_ObjectCore_$memory#110: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$at(49,17282,17283)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @110 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + $1_object_ObjectCore_$memory#110 := $1_object_ObjectCore_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:392:5+1 + assume {:print "$track_local(40,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:30+8 + assume {:print "$at(49,17393,17401)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + call $t2 := $1_object_address_to_object'#0'($t1); + if ($abort_flag) { + assume {:print "$at(49,17372,17402)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,39):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:393:9+30 + assume {:print "$track_return(40,39,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L1: + + // assert Not(Not(exists[@110](select object::ConstructorRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:339:9+40 + assume {:print "$at(50,14059,14099)"} true; + assert {:msg "assert_failed(50,14059,14099): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#110, $t0->$self); + + // assert Not(Not(object::spec_exists_at[]<#0>(select object::ConstructorRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:340:9+39 + assume {:print "$at(50,14108,14147)"} true; + assert {:msg "assert_failed(50,14108,14147): function does not abort under this condition"} + !!$1_object_spec_exists_at'#0'($t0->$self); + + // assert Eq>($t2, pack object::Object<#0>(select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:341:9+48 + assume {:print "$at(50,14156,14204)"} true; + assert {:msg "assert_failed(50,14156,14204): post-condition does not hold"} + $IsEqual'$1_object_Object'#0''($t2, $1_object_Object'#0'($t0->$self)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:341:9+48 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:394:5+1 + assume {:print "$at(49,17407,17408)"} true; +L2: + + // assert Or(Not(exists[@110](select object::ConstructorRef.self($t0))), Not(object::spec_exists_at[]<#0>(select object::ConstructorRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:338:5+235 + assume {:print "$at(50,13975,14210)"} true; + assert {:msg "assert_failed(50,13975,14210): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#110, $t0->$self) || !$1_object_spec_exists_at'#0'($t0->$self)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:338:5+235 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::object_from_delete_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:425:5+116 +procedure {:timeLimit 80} $1_object_object_from_delete_ref$verify(_$t0: $1_object_DeleteRef) returns ($ret0: $1_object_Object'#0') +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'#0'; + var $t3: int; + var $t0: $1_object_DeleteRef; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $1_object_ObjectCore_$memory#112: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:425:5+1 + assume {:print "$at(49,18404,18405)"} true; + assume $IsValid'$1_object_DeleteRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:425:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @112 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:425:5+1 + $1_object_ObjectCore_$memory#112 := $1_object_ObjectCore_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:425:5+1 + assume {:print "$track_local(40,40,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:426:30+8 + assume {:print "$at(49,18505,18513)"} true; + $t1 := $t0->$self; + + // $t2 := object::address_to_object<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:426:9+30 + call $t2 := $1_object_address_to_object'#0'($t1); + if ($abort_flag) { + assume {:print "$at(49,18484,18514)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,40):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:426:9+30 + assume {:print "$track_return(40,40,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:427:5+1 + assume {:print "$at(49,18519,18520)"} true; +L1: + + // assert Not(Not(exists[@112](select object::DeleteRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:379:9+40 + assume {:print "$at(50,15412,15452)"} true; + assert {:msg "assert_failed(50,15412,15452): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#112, $t0->$self); + + // assert Not(Not(object::spec_exists_at[]<#0>(select object::DeleteRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:380:9+39 + assume {:print "$at(50,15461,15500)"} true; + assert {:msg "assert_failed(50,15461,15500): function does not abort under this condition"} + !!$1_object_spec_exists_at'#0'($t0->$self); + + // assert Eq>($t2, pack object::Object<#0>(select object::DeleteRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:381:9+48 + assume {:print "$at(50,15509,15557)"} true; + assert {:msg "assert_failed(50,15509,15557): post-condition does not hold"} + $IsEqual'$1_object_Object'#0''($t2, $1_object_Object'#0'($t0->$self)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:381:9+48 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:427:5+1 + assume {:print "$at(49,18519,18520)"} true; +L2: + + // assert Or(Not(exists[@112](select object::DeleteRef.self($t0))), Not(object::spec_exists_at[]<#0>(select object::DeleteRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:378:5+225 + assume {:print "$at(50,15338,15563)"} true; + assert {:msg "assert_failed(50,15338,15563): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#112, $t0->$self) || !$1_object_spec_exists_at'#0'($t0->$self)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:378:5+225 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::owns [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+892 +procedure {:inline 1} $1_object_owns'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_object_ObjectCore; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $1_object_ObjectCore; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: bool; + var $t25: bool; + var $t26: $1_object_ObjectCore; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: bool; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: int; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t5, select object::Object.inner>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:536:9+37 + assume {:print "$at(50,21464,21501)"} true; + assume ($t5 == $t0->$inner); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:537:9+53 + assume {:print "$at(50,21510,21563)"} true; + assume ($t6 == $ResourceValue($1_object_ObjectCore_$memory, $t5)); + + // assume Identical($t7, select object::ObjectCore.owner($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:538:9+37 + assume {:print "$at(50,21572,21609)"} true; + assume ($t7 == $t6->$owner); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$at(49,28313,28314)"} true; + assume {:print "$track_local(40,42,0):", $t0} $t0 == $t0; + + // trace_local[owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$track_local(40,42,1):", $t1} $t1 == $t1; + + // $t8 := object::object_address<#0>($t0) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:678:31+23 + assume {:print "$at(49,28430,28453)"} true; + call $t8 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(49,28430,28453)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[current_address]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:678:13+15 + assume {:print "$track_local(40,42,3):", $t8} $t8 == $t8; + + // $t10 := ==($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:679:29+2 + assume {:print "$at(49,28483,28485)"} true; + $t10 := $IsEqual'address'($t8, $t1); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:679:9+65 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:20+4 + assume {:print "$at(49,28514,28518)"} true; +L1: + + // $t11 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:20+4 + assume {:print "$at(49,28514,28518)"} true; + $t11 := true; + assume $IsValid'bool'($t11); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + assume {:print "$track_return(40,42,0):", $t11} $t11 == $t11; + + // $t12 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + $t12 := $t11; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + goto L15; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:684:32+15 + assume {:print "$at(49,28579,28594)"} true; +L0: + + // $t13 := exists($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:684:13+6 + assume {:print "$at(49,28560,28566)"} true; + $t13 := $ResourceExists($1_object_ObjectCore_$memory, $t8); + + // if ($t13) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + if ($t13) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:30+22 + assume {:print "$at(49,28626,28648)"} true; +L2: + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:30+22 + assume {:print "$at(49,28626,28648)"} true; + $t14 := 2; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:13+40 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(49,28609,28649)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + assume {:print "$track_abort(40,42):", $t15} $t15 == $t15; + + // $t9 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + $t9 := $t15; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + goto L16; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:688:48+15 + assume {:print "$at(49,28710,28725)"} true; +L4: + + // $t16 := get_global($t8) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:688:22+13 + assume {:print "$at(49,28684,28697)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t16 := $ResourceValue($1_object_ObjectCore_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(49,28684,28697)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // $t17 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:689:31+12 + assume {:print "$at(49,28758,28770)"} true; + $t17 := $t16->$owner; + + // trace_local[current_address#2]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:689:13+15 + assume {:print "$track_local(40,42,4):", $t17} $t17 == $t17; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:691:21+1 + assume {:print "$at(49,28793,28794)"} true; + $t18 := 0; + assume $IsValid'u8'($t18); + + // trace_local[count]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:691:13+5 + assume {:print "$track_local(40,42,2):", $t18} $t18 == $t18; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$at(49,28811,28816)"} true; +L13: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$at(49,28811,28816)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'address'($t4); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'$1_object_ObjectCore'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'address'($t27); + + // trace_local[count]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$info(): enter loop, variable(s) count, current_address#2 havocked and reassigned"} true; + assume {:print "$track_local(40,42,2):", $t2} $t2 == $t2; + + // trace_local[current_address#2]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$track_local(40,42,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume !$abort_flag; + + // $t19 := !=($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:22+2 + $t19 := !$IsEqual'address'($t1, $t4); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:9+381 + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:9+381 +L6: + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:21+5 + assume {:print "$at(49,28859,28864)"} true; +L7: + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:29+1 + assume {:print "$at(49,28867,28868)"} true; + $t20 := 1; + assume $IsValid'u8'($t20); + + // $t21 := +($t2, $t20) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:27+1 + call $t21 := $AddU8($t2, $t20); + if ($abort_flag) { + assume {:print "$at(49,28865,28866)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[count]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:13+5 + assume {:print "$track_local(40,42,2):", $t21} $t21 == $t21; + + // $t22 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:29+22 + assume {:print "$at(49,28898,28920)"} true; + $t22 := 8; + assume $IsValid'u8'($t22); + + // $t23 := <($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:27+1 + call $t23 := $Lt($t21, $t22); + + // if ($t23) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + if ($t23) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + assume {:print "$at(49,28882,28960)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:73+16 +L8: + + // $t28 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:73+16 + assume {:print "$at(49,28942,28958)"} true; + $t28 := 6; + assume $IsValid'u64'($t28); + + // $t29 := error::out_of_range($t28) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:53+37 + call $t29 := $1_error_out_of_range($t28); + if ($abort_flag) { + assume {:print "$at(49,28922,28959)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + assume {:print "$at(49,28882,28960)"} true; + assume {:print "$track_abort(40,42):", $t29} $t29 == $t29; + + // $t9 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + $t9 := $t29; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + goto L16; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:37+15 + assume {:print "$at(49,28998,29013)"} true; +L10: + + // $t24 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:18+6 + assume {:print "$at(49,28979,28985)"} true; + $t24 := $ResourceExists($1_object_ObjectCore_$memory, $t4); + + // $t25 := !($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:17+1 + call $t25 := $Not($t24); + + // if ($t25) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:13+86 + if ($t25) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:24+5 + assume {:print "$at(49,29041,29046)"} true; +L12: + + // $t30 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:24+5 + assume {:print "$at(49,29041,29046)"} true; + $t30 := false; + assume $IsValid'bool'($t30); + + // trace_return[0]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + assume {:print "$track_return(40,42,0):", $t30} $t30 == $t30; + + // $t12 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + $t12 := $t30; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:699:52+15 + assume {:print "$at(49,29114,29129)"} true; +L11: + + // $t26 := get_global($t4) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:699:26+13 + assume {:print "$at(49,29088,29101)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t26 := $ResourceValue($1_object_ObjectCore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(49,29088,29101)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // $t27 := get_field.owner($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:31+12 + assume {:print "$at(49,29162,29174)"} true; + $t27 := $t26->$owner; + + // trace_local[current_address#2]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:13+15 + assume {:print "$track_local(40,42,4):", $t27} $t27 == $t27; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:43+1 + goto L14; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; +L5: + + // $t31 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; + $t31 := true; + assume $IsValid'bool'($t31); + + // trace_return[0]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$track_return(40,42,0):", $t31} $t31 == $t31; + + // $t12 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + $t12 := $t31; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + goto L15; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + // Loop invariant checking block for the loop started with header: L13 +L14: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; + assume false; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; +L15: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; + $ret0 := $t12; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 +L16: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun object::owns [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+892 +procedure {:timeLimit 80} $1_object_owns$verify(_$t0: $1_object_Object'#0', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_object_ObjectCore; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $1_object_ObjectCore; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: bool; + var $t25: bool; + var $t26: $1_object_ObjectCore; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: bool; + var $t0: $1_object_Object'#0'; + var $t1: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u8': int; + var $1_object_ObjectCore_$memory#113: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$at(49,28313,28314)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t5, select object::Object.inner>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:536:9+37 + assume {:print "$at(50,21464,21501)"} true; + assume ($t5 == $t0->$inner); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:537:9+53 + assume {:print "$at(50,21510,21563)"} true; + assume ($t6 == $ResourceValue($1_object_ObjectCore_$memory, $t5)); + + // assume Identical($t7, select object::ObjectCore.owner($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:538:9+37 + assume {:print "$at(50,21572,21609)"} true; + assume ($t7 == $t6->$owner); + + // @113 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$at(49,28313,28314)"} true; + $1_object_ObjectCore_$memory#113 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$track_local(40,42,0):", $t0} $t0 == $t0; + + // trace_local[owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:677:5+1 + assume {:print "$track_local(40,42,1):", $t1} $t1 == $t1; + + // $t8 := object::object_address<#0>($t0) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:678:31+23 + assume {:print "$at(49,28430,28453)"} true; + call $t8 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(49,28430,28453)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[current_address]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:678:13+15 + assume {:print "$track_local(40,42,3):", $t8} $t8 == $t8; + + // $t10 := ==($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:679:29+2 + assume {:print "$at(49,28483,28485)"} true; + $t10 := $IsEqual'address'($t8, $t1); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:679:9+65 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:20+4 + assume {:print "$at(49,28514,28518)"} true; +L1: + + // $t11 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:20+4 + assume {:print "$at(49,28514,28518)"} true; + $t11 := true; + assume $IsValid'bool'($t11); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + assume {:print "$track_return(40,42,0):", $t11} $t11 == $t11; + + // $t12 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + $t12 := $t11; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:680:13+11 + goto L15; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:684:32+15 + assume {:print "$at(49,28579,28594)"} true; +L0: + + // $t13 := exists($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:684:13+6 + assume {:print "$at(49,28560,28566)"} true; + $t13 := $ResourceExists($1_object_ObjectCore_$memory, $t8); + + // if ($t13) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + if ($t13) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:30+22 + assume {:print "$at(49,28626,28648)"} true; +L2: + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:30+22 + assume {:print "$at(49,28626,28648)"} true; + $t14 := 2; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:685:13+40 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(49,28609,28649)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + assume {:print "$at(49,28539,28660)"} true; + assume {:print "$track_abort(40,42):", $t15} $t15 == $t15; + + // $t9 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + $t9 := $t15; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:683:9+121 + goto L16; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:688:48+15 + assume {:print "$at(49,28710,28725)"} true; +L4: + + // $t16 := get_global($t8) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:688:22+13 + assume {:print "$at(49,28684,28697)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t16 := $ResourceValue($1_object_ObjectCore_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(49,28684,28697)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // $t17 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:689:31+12 + assume {:print "$at(49,28758,28770)"} true; + $t17 := $t16->$owner; + + // trace_local[current_address#2]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:689:13+15 + assume {:print "$track_local(40,42,4):", $t17} $t17 == $t17; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:691:21+1 + assume {:print "$at(49,28793,28794)"} true; + $t18 := 0; + assume $IsValid'u8'($t18); + + // trace_local[count]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:691:13+5 + assume {:print "$track_local(40,42,2):", $t18} $t18 == $t18; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$at(49,28811,28816)"} true; +L13: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$at(49,28811,28816)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'address'($t4); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'u8'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'bool'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'$1_object_ObjectCore'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume $IsValid'address'($t27); + + // trace_local[count]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$info(): enter loop, variable(s) count, current_address#2 havocked and reassigned"} true; + assume {:print "$track_local(40,42,2):", $t2} $t2 == $t2; + + // trace_local[current_address#2]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume {:print "$track_local(40,42,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:16+5 + assume !$abort_flag; + + // $t19 := !=($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:22+2 + $t19 := !$IsEqual'address'($t1, $t4); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:9+381 + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:692:9+381 +L6: + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:21+5 + assume {:print "$at(49,28859,28864)"} true; +L7: + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:29+1 + assume {:print "$at(49,28867,28868)"} true; + $t20 := 1; + assume $IsValid'u8'($t20); + + // $t21 := +($t2, $t20) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:27+1 + call $t21 := $AddU8($t2, $t20); + if ($abort_flag) { + assume {:print "$at(49,28865,28866)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_local[count]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:693:13+5 + assume {:print "$track_local(40,42,2):", $t21} $t21 == $t21; + + // $t22 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:29+22 + assume {:print "$at(49,28898,28920)"} true; + $t22 := 8; + assume $IsValid'u8'($t22); + + // $t23 := <($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:27+1 + call $t23 := $Lt($t21, $t22); + + // if ($t23) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + if ($t23) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + assume {:print "$at(49,28882,28960)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:73+16 +L8: + + // $t28 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:73+16 + assume {:print "$at(49,28942,28958)"} true; + $t28 := 6; + assume $IsValid'u64'($t28); + + // $t29 := error::out_of_range($t28) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:53+37 + call $t29 := $1_error_out_of_range($t28); + if ($abort_flag) { + assume {:print "$at(49,28922,28959)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + assume {:print "$at(49,28882,28960)"} true; + assume {:print "$track_abort(40,42):", $t29} $t29 == $t29; + + // $t9 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + $t9 := $t29; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:694:13+78 + goto L16; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:37+15 + assume {:print "$at(49,28998,29013)"} true; +L10: + + // $t24 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:18+6 + assume {:print "$at(49,28979,28985)"} true; + $t24 := $ResourceExists($1_object_ObjectCore_$memory, $t4); + + // $t25 := !($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:17+1 + call $t25 := $Not($t24); + + // if ($t25) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:695:13+86 + if ($t25) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:24+5 + assume {:print "$at(49,29041,29046)"} true; +L12: + + // $t30 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:24+5 + assume {:print "$at(49,29041,29046)"} true; + $t30 := false; + assume $IsValid'bool'($t30); + + // trace_return[0]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + assume {:print "$track_return(40,42,0):", $t30} $t30 == $t30; + + // $t12 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + $t12 := $t30; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:696:17+12 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:699:52+15 + assume {:print "$at(49,29114,29129)"} true; +L11: + + // $t26 := get_global($t4) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:699:26+13 + assume {:print "$at(49,29088,29101)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t26 := $ResourceValue($1_object_ObjectCore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(49,29088,29101)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,42):", $t9} $t9 == $t9; + goto L16; + } + + // $t27 := get_field.owner($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:31+12 + assume {:print "$at(49,29162,29174)"} true; + $t27 := $t26->$owner; + + // trace_local[current_address#2]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:13+15 + assume {:print "$track_local(40,42,4):", $t27} $t27 == $t27; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:700:43+1 + goto L14; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; +L5: + + // $t31 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; + $t31 := true; + assume $IsValid'bool'($t31); + + // trace_return[0]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$track_return(40,42,0):", $t31} $t31 == $t31; + + // $t12 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + $t12 := $t31; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + goto L15; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + // Loop invariant checking block for the loop started with header: L13 +L14: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:702:9+4 + assume {:print "$at(49,29195,29199)"} true; + assume false; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; +L15: + + // assert Not(And(Neq
(select object::Object.inner>($t0), $t1), Not(exists[@113](select object::Object.inner>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:539:9+69 + assume {:print "$at(50,21618,21687)"} true; + assert {:msg "assert_failed(50,21618,21687): function does not abort under this condition"} + !(!$IsEqual'address'($t0->$inner, $t1) && !$ResourceExists($1_object_ObjectCore_$memory#113, $t0->$inner)); + + // assert Implies(Eq
($t5, $t1), Eq($t12, true)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:540:9+54 + assume {:print "$at(50,21696,21750)"} true; + assert {:msg "assert_failed(50,21696,21750): post-condition does not hold"} + ($IsEqual'address'($t5, $t1) ==> $IsEqual'bool'($t12, true)); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:540:9+54 + $ret0 := $t12; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; +L16: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:703:5+1 + assume {:print "$at(49,29204,29205)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun object::root_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:707:5+265 +procedure {:timeLimit 80} $1_object_root_owner$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_object_Object'$1_object_ObjectCore'; + var $t6: int; + var $t7: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:707:5+1 + assume {:print "$at(49,29380,29381)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:707:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:707:5+1 + assume {:print "$track_local(40,43,0):", $t0} $t0 == $t0; + + // $t2 := object::owner<#0>($t0) on_abort goto L6 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:708:25+13 + assume {:print "$at(49,29484,29497)"} true; + call $t2 := $1_object_owner'#0'($t0); + if ($abort_flag) { + assume {:print "$at(49,29484,29497)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,43):", $t3} $t3 == $t3; + goto L6; + } + + // trace_local[obj_owner]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:708:13+9 + assume {:print "$track_local(40,43,1):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume {:print "$at(49,29524,29533)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume {:print "$at(49,29524,29533)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume $IsValid'address'($t1); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume $IsValid'bool'($t4); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume $IsValid'$1_object_Object'$1_object_ObjectCore''($t5); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume $IsValid'address'($t6); + + // trace_local[obj_owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume {:print "$info(): enter loop, variable(s) obj_owner havocked and reassigned"} true; + assume {:print "$track_local(40,43,1):", $t1} $t1 == $t1; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:26+9 + assume !$abort_flag; + + // $t4 := object::is_object($t1) on_abort goto L6 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:16+20 + call $t4 := $1_object_is_object($t1); + if ($abort_flag) { + assume {:print "$at(49,29514,29534)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,43):", $t3} $t3 == $t3; + goto L6; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:9+113 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:709:9+113 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:710:61+9 + assume {:print "$at(49,29598,29607)"} true; +L2: + + // $t5 := object::address_to_object($t1) on_abort goto L6 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:710:31+40 + assume {:print "$at(49,29568,29608)"} true; + call $t5 := $1_object_address_to_object'$1_object_ObjectCore'($t1); + if ($abort_flag) { + assume {:print "$at(49,29568,29608)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,43):", $t3} $t3 == $t3; + goto L6; + } + + // $t6 := object::owner($t5) on_abort goto L6 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:710:25+47 + call $t6 := $1_object_owner'$1_object_ObjectCore'($t5); + if ($abort_flag) { + assume {:print "$at(49,29562,29609)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(40,43):", $t3} $t3 == $t3; + goto L6; + } + + // trace_local[obj_owner]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:710:13+9 + assume {:print "$track_local(40,43,1):", $t6} $t6 == $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:710:72+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + assume {:print "$at(49,29630,29639)"} true; +L0: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + assume {:print "$at(49,29630,29639)"} true; + assume {:print "$track_return(40,43,0):", $t1} $t1 == $t1; + + // $t7 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + $t7 := $t1; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:712:9+9 + assume {:print "$at(49,29630,29639)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:713:5+1 + assume {:print "$at(49,29644,29645)"} true; +L5: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:713:5+1 + assume {:print "$at(49,29644,29645)"} true; + assert {:msg "assert_failed(49,29644,29645): function does not abort under this condition"} + !false; + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:713:5+1 + $ret0 := $t7; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:713:5+1 +L6: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:713:5+1 + assume {:print "$at(49,29644,29645)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object::set_untransferable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+290 +procedure {:inline 1} $1_object_set_untransferable(_$t0: $1_object_ConstructorRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: $signer; + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: bool; + var $t7: $Mutation (bool); + var $t8: $signer; + var $t9: bool; + var $t10: $1_object_Untransferable; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + assume {:print "$at(49,19757,19758)"} true; + assume {:print "$track_local(40,44,0):", $t0} $t0 == $t0; + + // $t3 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:52+8 + assume {:print "$at(49,19882,19890)"} true; + $t3 := $t0->$self; + + // $t4 := borrow_global($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(49,19852,19869)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t4); + assume {:print "$track_local(40,44,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:41+5 + assume {:print "$at(49,19933,19938)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t7 := borrow_field.allow_ungated_transfer($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+29 + $t7 := $ChildMutation($t4, 2, $Dereference($t4)->$allow_ungated_transfer); + + // write_ref($t7, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $t7 := $UpdateMutation($t7, $t6); + + // write_back[Reference($t4).allow_ungated_transfer (bool)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $t4 := $UpdateMutation($t4, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t4), $Dereference($t7))); + + // write_back[object::ObjectCore@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // $t8 := object::generate_signer($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:470:29+20 + assume {:print "$at(49,19968,19988)"} true; + call $t8 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(49,19968,19988)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object_signer]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:470:13+13 + assume {:print "$track_local(40,44,2):", $t8} $t8 == $t8; + + // $t9 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:33+17 + assume {:print "$at(49,20022,20039)"} true; + $t9 := false; + assume $IsValid'bool'($t9); + + // $t10 := pack object::Untransferable($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:33+17 + $t10 := $1_object_Untransferable($t9); + + // move_to($t10, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:9+7 + if ($ResourceExists($1_object_Untransferable_$memory, $t8->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_Untransferable_$memory := $ResourceUpdate($1_object_Untransferable_$memory, $t8->$addr, $t10); + } + if ($abort_flag) { + assume {:print "$at(49,19998,20005)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 + assume {:print "$at(49,20046,20047)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 + assume {:print "$at(49,20046,20047)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 + assume {:print "$at(49,20046,20047)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::set_untransferable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+290 +procedure {:timeLimit 80} $1_object_set_untransferable$verify(_$t0: $1_object_ConstructorRef) returns () +{ + // declare local variables + var $t1: $Mutation ($1_object_ObjectCore); + var $t2: $signer; + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: bool; + var $t7: $Mutation (bool); + var $t8: $signer; + var $t9: bool; + var $t10: $1_object_Untransferable; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#115: $Memory $1_object_ObjectCore; + var $1_object_Untransferable_$memory#116: $Memory $1_object_Untransferable; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + assume {:print "$at(49,19757,19758)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // @115 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + $1_object_ObjectCore_$memory#115 := $1_object_ObjectCore_$memory; + + // @116 := save_mem(object::Untransferable) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + $1_object_Untransferable_$memory#116 := $1_object_Untransferable_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:467:5+1 + assume {:print "$track_local(40,44,0):", $t0} $t0 == $t0; + + // $t3 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:52+8 + assume {:print "$at(49,19882,19890)"} true; + $t3 := $t0->$self; + + // $t4 := borrow_global($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(49,19852,19869)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:468:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t4); + assume {:print "$track_local(40,44,1):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:41+5 + assume {:print "$at(49,19933,19938)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t7 := borrow_field.allow_ungated_transfer($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+29 + $t7 := $ChildMutation($t4, 2, $Dereference($t4)->$allow_ungated_transfer); + + // write_ref($t7, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $t7 := $UpdateMutation($t7, $t6); + + // write_back[Reference($t4).allow_ungated_transfer (bool)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $t4 := $UpdateMutation($t4, $Update'$1_object_ObjectCore'_allow_ungated_transfer($Dereference($t4), $Dereference($t7))); + + // write_back[object::ObjectCore@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:469:9+37 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // $t8 := object::generate_signer($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:470:29+20 + assume {:print "$at(49,19968,19988)"} true; + call $t8 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(49,19968,19988)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[object_signer]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:470:13+13 + assume {:print "$track_local(40,44,2):", $t8} $t8 == $t8; + + // $t9 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:33+17 + assume {:print "$at(49,20022,20039)"} true; + $t9 := false; + assume $IsValid'bool'($t9); + + // $t10 := pack object::Untransferable($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:33+17 + $t10 := $1_object_Untransferable($t9); + + // move_to($t10, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:471:9+7 + if ($ResourceExists($1_object_Untransferable_$memory, $t8->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_Untransferable_$memory := $ResourceUpdate($1_object_Untransferable_$memory, $t8->$addr, $t10); + } + if ($abort_flag) { + assume {:print "$at(49,19998,20005)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,44):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 + assume {:print "$at(49,20046,20047)"} true; +L1: + + // assert Not(Not(exists[@115](select object::ConstructorRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:390:9+40 + assume {:print "$at(50,15762,15802)"} true; + assert {:msg "assert_failed(50,15762,15802): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#115, $t0->$self); + + // assert Not(exists[@116](select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:391:9+43 + assume {:print "$at(50,15811,15854)"} true; + assert {:msg "assert_failed(50,15811,15854): function does not abort under this condition"} + !$ResourceExists($1_object_Untransferable_$memory#116, $t0->$self); + + // assert exists(select object::ConstructorRef.self($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:392:9+41 + assume {:print "$at(50,15863,15904)"} true; + assert {:msg "assert_failed(50,15863,15904): post-condition does not hold"} + $ResourceExists($1_object_Untransferable_$memory, $t0->$self); + + // assert Eq(select object::ObjectCore.allow_ungated_transfer(global(select object::ConstructorRef.self($t0))), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:393:9+69 + assume {:print "$at(50,15913,15982)"} true; + assert {:msg "assert_failed(50,15913,15982): post-condition does not hold"} + $IsEqual'bool'($ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$allow_ungated_transfer, false); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:393:9+69 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:472:5+1 + assume {:print "$at(49,20046,20047)"} true; +L2: + + // assert Or(Not(exists[@115](select object::ConstructorRef.self($t0))), exists[@116](select object::ConstructorRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:389:5+282 + assume {:print "$at(50,15706,15988)"} true; + assert {:msg "assert_failed(50,15706,15988): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_object_ObjectCore_$memory#115, $t0->$self) || $ResourceExists($1_object_Untransferable_$memory#116, $t0->$self)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:389:5+282 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::transfer<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+186 +procedure {:inline 1} $1_object_transfer'#0'(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:447:9+46 + assume {:print "$at(50,17738,17784)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:448:9+34 + assume {:print "$at(50,17793,17827)"} true; + assume ($t4 == $t1->$inner); + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$at(49,22563,22564)"} true; + assume {:print "$track_local(40,45,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$track_local(40,45,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$track_local(40,45,2):", $t2} $t2 == $t2; + + // $t5 := get_field>.inner($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:542:29+12 + assume {:print "$at(49,22726,22738)"} true; + $t5 := $t1->$inner; + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:460:9+46 + assume {:print "$at(50,18178,18224)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // object::transfer_raw($t0, $t5, $t2) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:542:9+37 + assume {:print "$at(49,22706,22743)"} true; + call $1_object_transfer_raw($t0, $t5, $t2); + if ($abort_flag) { + assume {:print "$at(49,22706,22743)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,45):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+186 +procedure {:timeLimit 80} $1_object_transfer$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#123: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$at(49,22563,22564)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:447:9+46 + assume {:print "$at(50,17738,17784)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:448:9+34 + assume {:print "$at(50,17793,17827)"} true; + assume ($t4 == $t1->$inner); + + // @123 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$at(49,22563,22564)"} true; + $1_object_ObjectCore_$memory#123 := $1_object_ObjectCore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$track_local(40,45,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$track_local(40,45,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:537:5+1 + assume {:print "$track_local(40,45,2):", $t2} $t2 == $t2; + + // $t5 := get_field>.inner($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:542:29+12 + assume {:print "$at(49,22726,22738)"} true; + $t5 := $t1->$inner; + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:460:9+46 + assume {:print "$at(50,18178,18224)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // object::transfer_raw($t0, $t5, $t2) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:542:9+37 + assume {:print "$at(49,22706,22743)"} true; + call $1_object_transfer_raw($t0, $t5, $t2); + if ($abort_flag) { + assume {:print "$at(49,22706,22743)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(40,45):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; +L1: + + // assert Not(Not(exists[@123]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:449:9+46 + assume {:print "$at(50,17836,17882)"} true; + assert {:msg "assert_failed(50,17836,17882): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#123, $t4); + + // assert Not(Not(select object::ObjectCore.allow_ungated_transfer(global[@123]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:450:9+69 + assume {:print "$at(50,17891,17960)"} true; + assert {:msg "assert_failed(50,17891,17960): function does not abort under this condition"} + !!$ResourceValue($1_object_ObjectCore_$memory#123, $t4)->$allow_ungated_transfer; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:450:9+69 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:543:5+1 + assume {:print "$at(49,22748,22749)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object::transfer_call [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+175 +procedure {:timeLimit 80} $1_object_transfer_call$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#125: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume {:print "$at(49,22241,22242)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:435:9+46 + assume {:print "$at(50,17351,17397)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // @125 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume {:print "$at(49,22241,22242)"} true; + $1_object_ObjectCore_$memory#125 := $1_object_ObjectCore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume {:print "$track_local(40,46,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume {:print "$track_local(40,46,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:527:5+1 + assume {:print "$track_local(40,46,2):", $t2} $t2 == $t2; + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:460:9+46 + assume {:print "$at(50,18178,18224)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // object::transfer_raw($t0, $t1, $t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:532:9+31 + assume {:print "$at(49,22379,22410)"} true; + call $1_object_transfer_raw($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(49,22379,22410)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,46):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:533:5+1 + assume {:print "$at(49,22415,22416)"} true; +L1: + + // assert Not(Not(exists[@125]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:436:9+38 + assume {:print "$at(50,17406,17444)"} true; + assert {:msg "assert_failed(50,17406,17444): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#125, $t1); + + // assert Not(Not(select object::ObjectCore.allow_ungated_transfer(global[@125]($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:437:9+61 + assume {:print "$at(50,17453,17514)"} true; + assert {:msg "assert_failed(50,17453,17514): function does not abort under this condition"} + !!$ResourceValue($1_object_ObjectCore_$memory#125, $t1)->$allow_ungated_transfer; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:437:9+61 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:533:5+1 + assume {:print "$at(49,22415,22416)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:533:5+1 + assume {:print "$at(49,22415,22416)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::transfer_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+285 +procedure {:inline 1} $1_object_transfer_raw(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_object_ObjectCore); + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: int; + var $t14: $1_object_Transfer; + var $t15: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t16: int; + var $t17: $1_object_TransferEvent; + var $t18: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:460:9+46 + assume {:print "$at(50,18178,18224)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$at(49,23050,23051)"} true; + assume {:print "$track_local(40,47,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$track_local(40,47,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$track_local(40,47,2):", $t2} $t2 == $t2; + + // $t7 := signer::address_of($t0) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:554:29+25 + assume {:print "$at(49,23201,23226)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,23201,23226)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // object::verify_ungated_and_descendant($t7, $t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:555:9+52 + assume {:print "$at(49,23236,23288)"} true; + call $1_object_verify_ungated_and_descendant($t7, $t1); + if ($abort_flag) { + assume {:print "$at(49,23236,23288)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[to#227]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:52+2 + assume {:print "$at(49,23388,23390)"} true; + assume {:print "$track_local(40,47,5):", $t2} $t2 == $t2; + + // trace_local[object#226]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:35+6 + assume {:print "$track_local(40,47,3):", $t1} $t1 == $t1; + + // $t9 := borrow_global($t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:27+17 + assume {:print "$at(49,23449,23466)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(49,23449,23466)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[object_core#228]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t9); + assume {:print "$track_local(40,47,4):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t10 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:13+17 + assume {:print "$at(49,23500,23517)"} true; + $t10 := $Dereference($t9)->$owner; + + // $t11 := !=($t10, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:31+2 + $t11 := !$IsEqual'address'($t10, $t2); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; +L1: + + // $t12 := features::module_event_migration_enabled() on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; + call $t12 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,23543,23590)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // if ($t12) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:13+279 + if ($t12) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:565:25+6 + assume {:print "$at(49,23678,23684)"} true; +L3: + + // $t13 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:566:31+17 + assume {:print "$at(49,23716,23733)"} true; + $t13 := $Dereference($t9)->$owner; + + // $t14 := pack object::Transfer($t1, $t13, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:564:21+141 + assume {:print "$at(49,23643,23784)"} true; + $t14 := $1_object_Transfer($t1, $t13, $t2); + + // opaque begin: event::emit($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + assume {:print "$at(49,23610,23803)"} true; + + // opaque end: event::emit($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:22+11 + assume {:print "$at(49,23872,23883)"} true; +L2: + + // $t15 := borrow_field.transfer_events($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:17+32 + assume {:print "$at(49,23867,23899)"} true; + $t15 := $ChildMutation($t9, 3, $Dereference($t9)->$transfer_events); + + // $t16 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:575:27+17 + assume {:print "$at(49,23987,24004)"} true; + $t16 := $Dereference($t9)->$owner; + + // $t17 := pack object::TransferEvent($t1, $t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:573:17+130 + assume {:print "$at(49,23917,24047)"} true; + $t17 := $1_object_TransferEvent($t1, $t16, $t2); + + // opaque begin: event::emit_event($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + assume {:print "$at(49,23832,24062)"} true; + + // opaque end: event::emit_event($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + + // write_back[Reference($t9).transfer_events (event::EventHandle)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t9), $Dereference($t15))); + + // $t18 := borrow_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+17 + assume {:print "$at(49,24076,24093)"} true; + $t18 := $ChildMutation($t9, 1, $Dereference($t9)->$owner); + + // write_ref($t18, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t18 := $UpdateMutation($t18, $t2); + + // write_back[Reference($t9).owner (address)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_owner($Dereference($t9), $Dereference($t18))); + + // write_back[object::ObjectCore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:35+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; +L0: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:556:39+1 + assume {:print "$at(49,23328,23329)"} true; +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; +L5: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 +L6: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::transfer_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+285 +procedure {:timeLimit 80} $1_object_transfer_raw$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_object_ObjectCore); + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: int; + var $t14: $1_object_Transfer; + var $t15: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t16: int; + var $t17: $1_object_TransferEvent; + var $t18: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#121: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$at(49,23050,23051)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:460:9+46 + assume {:print "$at(50,18178,18224)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // @121 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$at(49,23050,23051)"} true; + $1_object_ObjectCore_$memory#121 := $1_object_ObjectCore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$track_local(40,47,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$track_local(40,47,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:549:5+1 + assume {:print "$track_local(40,47,2):", $t2} $t2 == $t2; + + // $t7 := signer::address_of($t0) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:554:29+25 + assume {:print "$at(49,23201,23226)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,23201,23226)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // object::verify_ungated_and_descendant($t7, $t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:555:9+52 + assume {:print "$at(49,23236,23288)"} true; + call $1_object_verify_ungated_and_descendant($t7, $t1); + if ($abort_flag) { + assume {:print "$at(49,23236,23288)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[to#227]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:52+2 + assume {:print "$at(49,23388,23390)"} true; + assume {:print "$track_local(40,47,5):", $t2} $t2 == $t2; + + // trace_local[object#226]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:35+6 + assume {:print "$track_local(40,47,3):", $t1} $t1 == $t1; + + // $t9 := borrow_global($t1) on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:27+17 + assume {:print "$at(49,23449,23466)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(49,23449,23466)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // trace_local[object_core#228]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t9); + assume {:print "$track_local(40,47,4):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t10 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:13+17 + assume {:print "$at(49,23500,23517)"} true; + $t10 := $Dereference($t9)->$owner; + + // $t11 := !=($t10, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:31+2 + $t11 := !$IsEqual'address'($t10, $t2); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; +L1: + + // $t12 := features::module_event_migration_enabled() on_abort goto L6 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; + call $t12 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,23543,23590)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,47):", $t8} $t8 == $t8; + goto L6; + } + + // if ($t12) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:13+279 + if ($t12) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:565:25+6 + assume {:print "$at(49,23678,23684)"} true; +L3: + + // $t13 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:566:31+17 + assume {:print "$at(49,23716,23733)"} true; + $t13 := $Dereference($t9)->$owner; + + // $t14 := pack object::Transfer($t1, $t13, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:564:21+141 + assume {:print "$at(49,23643,23784)"} true; + $t14 := $1_object_Transfer($t1, $t13, $t2); + + // opaque begin: event::emit($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + assume {:print "$at(49,23610,23803)"} true; + + // opaque end: event::emit($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:22+11 + assume {:print "$at(49,23872,23883)"} true; +L2: + + // $t15 := borrow_field.transfer_events($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:17+32 + assume {:print "$at(49,23867,23899)"} true; + $t15 := $ChildMutation($t9, 3, $Dereference($t9)->$transfer_events); + + // $t16 := get_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:575:27+17 + assume {:print "$at(49,23987,24004)"} true; + $t16 := $Dereference($t9)->$owner; + + // $t17 := pack object::TransferEvent($t1, $t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:573:17+130 + assume {:print "$at(49,23917,24047)"} true; + $t17 := $1_object_TransferEvent($t1, $t16, $t2); + + // opaque begin: event::emit_event($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + assume {:print "$at(49,23832,24062)"} true; + + // opaque end: event::emit_event($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + + // write_back[Reference($t9).transfer_events (event::EventHandle)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t9), $Dereference($t15))); + + // $t18 := borrow_field.owner($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+17 + assume {:print "$at(49,24076,24093)"} true; + $t18 := $ChildMutation($t9, 1, $Dereference($t9)->$owner); + + // write_ref($t18, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t18 := $UpdateMutation($t18, $t2); + + // write_back[Reference($t9).owner (address)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t9 := $UpdateMutation($t9, $Update'$1_object_ObjectCore'_owner($Dereference($t9), $Dereference($t18))); + + // write_back[object::ObjectCore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:35+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; +L0: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:556:39+1 + assume {:print "$at(49,23328,23329)"} true; +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; +L5: + + // assert Not(Not(exists[@121]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:461:9+38 + assume {:print "$at(50,18233,18271)"} true; + assert {:msg "assert_failed(50,18233,18271): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#121, $t1); + + // assert Not(Not(select object::ObjectCore.allow_ungated_transfer(global[@121]($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:462:9+61 + assume {:print "$at(50,18280,18341)"} true; + assert {:msg "assert_failed(50,18280,18341): function does not abort under this condition"} + !!$ResourceValue($1_object_ObjectCore_$memory#121, $t1)->$allow_ungated_transfer; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:462:9+61 + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; +L6: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:557:5+1 + assume {:print "$at(49,23334,23335)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::transfer_to_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+202 +procedure {:timeLimit 80} $1_object_transfer_to_object$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_object_Object'#1') returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_object_Object'#1'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'#1'': $1_object_Object'#1'; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#126: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume {:print "$at(49,24212,24213)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume $IsValid'$1_object_Object'#1''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:472:9+46 + assume {:print "$at(50,18586,18632)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:473:9+34 + assume {:print "$at(50,18641,18675)"} true; + assume ($t4 == $t1->$inner); + + // @126 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume {:print "$at(49,24212,24213)"} true; + $1_object_ObjectCore_$memory#126 := $1_object_ObjectCore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume {:print "$track_local(40,48,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume {:print "$track_local(40,48,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:584:5+1 + assume {:print "$track_local(40,48,2):", $t2} $t2 == $t2; + + // $t5 := get_field>.inner($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:589:33+8 + assume {:print "$at(49,24399,24407)"} true; + $t5 := $t2->$inner; + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:447:9+46 + assume {:print "$at(50,17738,17784)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:448:9+34 + assume {:print "$at(50,17793,17827)"} true; + assume ($t7 == $t1->$inner); + + // object::transfer<#0>($t0, $t1, $t5) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:589:9+33 + assume {:print "$at(49,24375,24408)"} true; + call $1_object_transfer'#0'($t0, $t1, $t5); + if ($abort_flag) { + assume {:print "$at(49,24375,24408)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(40,48):", $t8} $t8 == $t8; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:590:5+1 + assume {:print "$at(49,24413,24414)"} true; +L1: + + // assert Not(Not(exists[@126]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:474:9+46 + assume {:print "$at(50,18684,18730)"} true; + assert {:msg "assert_failed(50,18684,18730): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#126, $t4); + + // assert Not(Not(select object::ObjectCore.allow_ungated_transfer(global[@126]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:475:9+69 + assume {:print "$at(50,18739,18808)"} true; + assert {:msg "assert_failed(50,18739,18808): function does not abort under this condition"} + !!$ResourceValue($1_object_ObjectCore_$memory#126, $t4)->$allow_ungated_transfer; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:475:9+69 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:590:5+1 + assume {:print "$at(49,24413,24414)"} true; +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:590:5+1 + assume {:print "$at(49,24413,24414)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object::transfer_with_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1154 +procedure {:inline 1} $1_object_transfer_with_ref(_$t0: $1_object_LinearTransferRef, _$t1: int) returns () +{ + // declare local variables + var $t2: $Mutation ($1_object_ObjectCore); + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: $1_object_TombStone; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_object_ObjectCore); + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: $1_object_Transfer; + var $t26: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t27: int; + var $t28: int; + var $t29: $1_object_TransferEvent; + var $t30: $Mutation (int); + var $t0: $1_object_LinearTransferRef; + var $t1: int; + var $temp_0'$1_object_LinearTransferRef': $1_object_LinearTransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, global(select object::LinearTransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:421:9+42 + assume {:print "$at(50,16907,16949)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $t0->$self)); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$at(49,20989,20990)"} true; + assume {:print "$track_local(40,49,0):", $t0} $t0 == $t0; + + // trace_local[to]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$track_local(40,49,1):", $t1} $t1 == $t1; + + // $t4 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:41+8 + assume {:print "$at(49,21128,21136)"} true; + $t4 := $t0->$self; + + // $t5 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:18+6 + $t5 := $ResourceExists($1_object_Untransferable_$memory, $t4); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:17+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + assume {:print "$at(49,21096,21191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:77+25 +L0: + + // $t7 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:77+25 + assume {:print "$at(49,21164,21189)"} true; + $t7 := 9; + assume $IsValid'u64'($t7); + + // $t8 := error::permission_denied($t7) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:52+51 + call $t8 := $1_error_permission_denied($t7); + if ($abort_flag) { + assume {:print "$at(49,21139,21190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + assume {:print "$at(49,21096,21191)"} true; + assume {:print "$track_abort(40,49):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + $t9 := $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + goto L11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:31+3 + assume {:print "$at(49,21344,21347)"} true; +L2: + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:31+8 + assume {:print "$at(49,21344,21352)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:13+6 + $t11 := $ResourceExists($1_object_TombStone_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:9+126 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:72+3 + assume {:print "$at(49,21428,21431)"} true; +L4: + + // $t12 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:72+8 + assume {:print "$at(49,21428,21436)"} true; + $t12 := $t0->$self; + + // $t13 := move_from($t12) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:51+9 + if (!$ResourceExists($1_object_TombStone_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_object_TombStone_$memory, $t12); + $1_object_TombStone_$memory := $ResourceRemove($1_object_TombStone_$memory, $t12); + } + if ($abort_flag) { + assume {:print "$at(49,21407,21416)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // $t14 := unpack object::TombStone($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:17+31 + $t14 := $t13->$original_owner; + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:45+1 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:52+3 + assume {:print "$at(49,21502,21505)"} true; +L3: + + // $t15 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:52+8 + assume {:print "$at(49,21502,21510)"} true; + $t15 := $t0->$self; + + // $t16 := borrow_global($t15) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(49,21472,21489)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_local[object]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t16); + assume {:print "$track_local(40,49,2):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t17 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:13+12 + assume {:print "$at(49,21542,21554)"} true; + $t17 := $Dereference($t16)->$owner; + + // $t18 := get_field.owner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:29+9 + $t18 := $t0->$owner; + + // $t19 := ==($t17, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:26+2 + $t19 := $IsEqual'address'($t17, $t18); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 +L5: + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:504:38+17 + assume {:print "$at(49,21606,21623)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:504:13+43 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(49,21581,21624)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + assume {:print "$track_abort(40,49):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + $t9 := $t21; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + goto L11; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:13+47 + assume {:print "$at(49,21649,21696)"} true; +L7: + + // $t22 := features::module_event_migration_enabled() on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:13+47 + assume {:print "$at(49,21649,21696)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,21649,21696)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // if ($t22) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:9+252 + if ($t22) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:509:29+3 + assume {:print "$at(49,21780,21783)"} true; +L9: + + // $t23 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:509:29+8 + assume {:print "$at(49,21780,21788)"} true; + $t23 := $t0->$self; + + // $t24 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:510:27+12 + assume {:print "$at(49,21816,21828)"} true; + $t24 := $Dereference($t16)->$owner; + + // $t25 := pack object::Transfer($t23, $t24, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:508:17+130 + assume {:print "$at(49,21741,21871)"} true; + $t25 := $1_object_Transfer($t23, $t24, $t1); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:507:13+174 + assume {:print "$at(49,21712,21886)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:507:13+174 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:516:18+6 + assume {:print "$at(49,21943,21949)"} true; +L8: + + // $t26 := borrow_field.transfer_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:516:13+27 + assume {:print "$at(49,21938,21965)"} true; + $t26 := $ChildMutation($t16, 3, $Dereference($t16)->$transfer_events); + + // $t27 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:518:25+8 + assume {:print "$at(49,22019,22027)"} true; + $t27 := $t0->$self; + + // $t28 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:519:23+12 + assume {:print "$at(49,22051,22063)"} true; + $t28 := $Dereference($t16)->$owner; + + // $t29 := pack object::TransferEvent($t27, $t28, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:517:13+119 + assume {:print "$at(49,21979,22098)"} true; + $t29 := $1_object_TransferEvent($t27, $t28, $t1); + + // opaque begin: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + assume {:print "$at(49,21907,22109)"} true; + + // opaque end: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + + // write_back[Reference($t16).transfer_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + $t16 := $UpdateMutation($t16, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t16), $Dereference($t26))); + + // $t30 := borrow_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+12 + assume {:print "$at(49,22119,22131)"} true; + $t30 := $ChildMutation($t16, 1, $Dereference($t16)->$owner); + + // write_ref($t30, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $t30 := $UpdateMutation($t30, $t1); + + // write_back[Reference($t16).owner (address)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $t16 := $UpdateMutation($t16, $Update'$1_object_ObjectCore'_owner($Dereference($t16), $Dereference($t30))); + + // write_back[object::ObjectCore@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 + assume {:print "$at(49,22142,22143)"} true; +L10: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 + assume {:print "$at(49,22142,22143)"} true; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 +L11: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 + assume {:print "$at(49,22142,22143)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun object::transfer_with_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1154 +procedure {:timeLimit 80} $1_object_transfer_with_ref$verify(_$t0: $1_object_LinearTransferRef, _$t1: int) returns () +{ + // declare local variables + var $t2: $Mutation ($1_object_ObjectCore); + var $t3: $1_object_ObjectCore; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: $1_object_TombStone; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_object_ObjectCore); + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: $1_object_Transfer; + var $t26: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t27: int; + var $t28: int; + var $t29: $1_object_TransferEvent; + var $t30: $Mutation (int); + var $t0: $1_object_LinearTransferRef; + var $t1: int; + var $temp_0'$1_object_LinearTransferRef': $1_object_LinearTransferRef; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $1_object_Untransferable_$memory#127: $Memory $1_object_Untransferable; + var $1_object_ObjectCore_$memory#128: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$at(49,20989,20990)"} true; + assume $IsValid'$1_object_LinearTransferRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume Identical($t3, global(select object::LinearTransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:421:9+42 + assume {:print "$at(50,16907,16949)"} true; + assume ($t3 == $ResourceValue($1_object_ObjectCore_$memory, $t0->$self)); + + // @128 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$at(49,20989,20990)"} true; + $1_object_ObjectCore_$memory#128 := $1_object_ObjectCore_$memory; + + // @127 := save_mem(object::Untransferable) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + $1_object_Untransferable_$memory#127 := $1_object_Untransferable_$memory; + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$track_local(40,49,0):", $t0} $t0 == $t0; + + // trace_local[to]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:493:5+1 + assume {:print "$track_local(40,49,1):", $t1} $t1 == $t1; + + // $t4 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:41+8 + assume {:print "$at(49,21128,21136)"} true; + $t4 := $t0->$self; + + // $t5 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:18+6 + $t5 := $ResourceExists($1_object_Untransferable_$memory, $t4); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:17+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + assume {:print "$at(49,21096,21191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:77+25 +L0: + + // $t7 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:77+25 + assume {:print "$at(49,21164,21189)"} true; + $t7 := 9; + assume $IsValid'u64'($t7); + + // $t8 := error::permission_denied($t7) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:52+51 + call $t8 := $1_error_permission_denied($t7); + if ($abort_flag) { + assume {:print "$at(49,21139,21190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + assume {:print "$at(49,21096,21191)"} true; + assume {:print "$track_abort(40,49):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + $t9 := $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:494:9+95 + goto L11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:31+3 + assume {:print "$at(49,21344,21347)"} true; +L2: + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:31+8 + assume {:print "$at(49,21344,21352)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:13+6 + $t11 := $ResourceExists($1_object_TombStone_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:497:9+126 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:72+3 + assume {:print "$at(49,21428,21431)"} true; +L4: + + // $t12 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:72+8 + assume {:print "$at(49,21428,21436)"} true; + $t12 := $t0->$self; + + // $t13 := move_from($t12) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:51+9 + if (!$ResourceExists($1_object_TombStone_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_object_TombStone_$memory, $t12); + $1_object_TombStone_$memory := $ResourceRemove($1_object_TombStone_$memory, $t12); + } + if ($abort_flag) { + assume {:print "$at(49,21407,21416)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // $t14 := unpack object::TombStone($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:17+31 + $t14 := $t13->$original_owner; + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:498:45+1 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:52+3 + assume {:print "$at(49,21502,21505)"} true; +L3: + + // $t15 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:52+8 + assume {:print "$at(49,21502,21510)"} true; + $t15 := $t0->$self; + + // $t16 := borrow_global($t15) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:22+17 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(49,21472,21489)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_local[object]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:501:13+6 + $temp_0'$1_object_ObjectCore' := $Dereference($t16); + assume {:print "$track_local(40,49,2):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t17 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:13+12 + assume {:print "$at(49,21542,21554)"} true; + $t17 := $Dereference($t16)->$owner; + + // $t18 := get_field.owner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:29+9 + $t18 := $t0->$owner; + + // $t19 := ==($t17, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:503:26+2 + $t19 := $IsEqual'address'($t17, $t18); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 +L5: + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:504:38+17 + assume {:print "$at(49,21606,21623)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:504:13+43 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(49,21581,21624)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + assume {:print "$at(49,21521,21635)"} true; + assume {:print "$track_abort(40,49):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + $t9 := $t21; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:502:9+114 + goto L11; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:13+47 + assume {:print "$at(49,21649,21696)"} true; +L7: + + // $t22 := features::module_event_migration_enabled() on_abort goto L11 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:13+47 + assume {:print "$at(49,21649,21696)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,21649,21696)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(40,49):", $t9} $t9 == $t9; + goto L11; + } + + // if ($t22) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:506:9+252 + if ($t22) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:509:29+3 + assume {:print "$at(49,21780,21783)"} true; +L9: + + // $t23 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:509:29+8 + assume {:print "$at(49,21780,21788)"} true; + $t23 := $t0->$self; + + // $t24 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:510:27+12 + assume {:print "$at(49,21816,21828)"} true; + $t24 := $Dereference($t16)->$owner; + + // $t25 := pack object::Transfer($t23, $t24, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:508:17+130 + assume {:print "$at(49,21741,21871)"} true; + $t25 := $1_object_Transfer($t23, $t24, $t1); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:507:13+174 + assume {:print "$at(49,21712,21886)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:507:13+174 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:516:18+6 + assume {:print "$at(49,21943,21949)"} true; +L8: + + // $t26 := borrow_field.transfer_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:516:13+27 + assume {:print "$at(49,21938,21965)"} true; + $t26 := $ChildMutation($t16, 3, $Dereference($t16)->$transfer_events); + + // $t27 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:518:25+8 + assume {:print "$at(49,22019,22027)"} true; + $t27 := $t0->$self; + + // $t28 := get_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:519:23+12 + assume {:print "$at(49,22051,22063)"} true; + $t28 := $Dereference($t16)->$owner; + + // $t29 := pack object::TransferEvent($t27, $t28, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:517:13+119 + assume {:print "$at(49,21979,22098)"} true; + $t29 := $1_object_TransferEvent($t27, $t28, $t1); + + // opaque begin: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + assume {:print "$at(49,21907,22109)"} true; + + // opaque end: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + + // write_back[Reference($t16).transfer_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:515:9+202 + $t16 := $UpdateMutation($t16, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t16), $Dereference($t26))); + + // $t30 := borrow_field.owner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+12 + assume {:print "$at(49,22119,22131)"} true; + $t30 := $ChildMutation($t16, 1, $Dereference($t16)->$owner); + + // write_ref($t30, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $t30 := $UpdateMutation($t30, $t1); + + // write_back[Reference($t16).owner (address)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $t16 := $UpdateMutation($t16, $Update'$1_object_ObjectCore'_owner($Dereference($t16), $Dereference($t30))); + + // write_back[object::ObjectCore@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:523:9+17 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 + assume {:print "$at(49,22142,22143)"} true; +L10: + + // assert Not(exists[@127](select object::LinearTransferRef.self($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:420:9+43 + assume {:print "$at(50,16855,16898)"} true; + assert {:msg "assert_failed(50,16855,16898): function does not abort under this condition"} + !$ResourceExists($1_object_Untransferable_$memory#127, $t0->$self); + + // assert Not(Not(exists[@128](select object::LinearTransferRef.self($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:422:9+40 + assume {:print "$at(50,16958,16998)"} true; + assert {:msg "assert_failed(50,16958,16998): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#128, $t0->$self); + + // assert Not(Neq
(select object::ObjectCore.owner($t3), select object::LinearTransferRef.owner($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:424:9+36 + assume {:print "$at(50,17038,17074)"} true; + assert {:msg "assert_failed(50,17038,17074): function does not abort under this condition"} + !!$IsEqual'address'($t3->$owner, $t0->$owner); + + // assert Eq
(select object::ObjectCore.owner(global(select object::LinearTransferRef.self($t0))), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:425:9+49 + assume {:print "$at(50,17083,17132)"} true; + assert {:msg "assert_failed(50,17083,17132): post-condition does not hold"} + $IsEqual'address'($ResourceValue($1_object_ObjectCore_$memory, $t0->$self)->$owner, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:425:9+49 + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:524:5+1 + assume {:print "$at(49,22142,22143)"} true; +L11: + + // assert Or(Or(exists[@127](select object::LinearTransferRef.self($t0)), Not(exists[@128](select object::LinearTransferRef.self($t0)))), Neq
(select object::ObjectCore.owner($t3), select object::LinearTransferRef.owner($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:419:5+353 + assume {:print "$at(50,16785,17138)"} true; + assert {:msg "assert_failed(50,16785,17138): abort not covered by any of the `aborts_if` clauses"} + (($ResourceExists($1_object_Untransferable_$memory#127, $t0->$self) || !$ResourceExists($1_object_ObjectCore_$memory#128, $t0->$self)) || !$IsEqual'address'($t3->$owner, $t0->$owner)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:419:5+353 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun object::unburn [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+553 +procedure {:inline 1} $1_object_unburn'$1_fungible_asset_FungibleStore'(_$t0: $signer, _$t1: $1_object_Object'$1_fungible_asset_FungibleStore') returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_object_TombStone; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_object_TombStone; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation ($1_object_ObjectCore); + var $t21: int; + var $t22: bool; + var $t23: bool; + var $t24: int; + var $t25: $1_object_Transfer; + var $t26: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t27: int; + var $t28: $1_object_TransferEvent; + var $t29: $Mutation (int); + var $t0: $signer; + var $t1: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t7, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:488:9+34 + assume {:print "$at(50,19230,19264)"} true; + assume ($t7 == $t1->$inner); + + // assume Identical($t8, global($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:491:9+58 + assume {:print "$at(50,19365,19423)"} true; + assume ($t8 == $ResourceValue($1_object_TombStone_$memory, $t7)); + + // trace_local[original_owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$at(49,26781,26782)"} true; + assume {:print "$track_local(40,50,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$track_local(40,50,1):", $t1} $t1 == $t1; + + // $t9 := get_field>.inner($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:644:27+12 + assume {:print "$at(49,26939,26951)"} true; + $t9 := $t1->$inner; + + // trace_local[object_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:644:13+11 + assume {:print "$track_local(40,50,3):", $t9} $t9 == $t9; + + // $t10 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:17+6 + assume {:print "$at(49,26969,26975)"} true; + $t10 := $ResourceExists($1_object_TombStone_$memory, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + assume {:print "$at(49,26961,27044)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 +L0: + + // $t11 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:73+17 + assume {:print "$at(49,27025,27042)"} true; + $t11 := 8; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:49+42 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(49,27001,27043)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + assume {:print "$at(49,26961,27044)"} true; + assume {:print "$track_abort(40,50):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + $t13 := $t12; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:86+11 + assume {:print "$at(49,27132,27143)"} true; +L2: + + // $t14 := move_from($t9) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:65+9 + assume {:print "$at(49,27111,27120)"} true; + if (!$ResourceExists($1_object_TombStone_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_object_TombStone_$memory, $t9); + $1_object_TombStone_$memory := $ResourceRemove($1_object_TombStone_$memory, $t9); + } + if ($abort_flag) { + assume {:print "$at(49,27111,27120)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // $t15 := unpack object::TombStone($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:13+49 + $t15 := $t14->$original_owner; + + // trace_local[original_owner_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:41+19 + assume {:print "$track_local(40,50,5):", $t15} $t15 == $t15; + + // $t16 := signer::address_of($t0) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:40+34 + assume {:print "$at(49,27185,27219)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,27185,27219)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // $t17 := ==($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:37+2 + $t17 := $IsEqual'address'($t15, $t16); + + // if ($t17) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + if ($t17) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + assume {:print "$at(49,27154,27265)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:101+17 +L3: + + // $t18 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:101+17 + assume {:print "$at(49,27246,27263)"} true; + $t18 := 4; + assume $IsValid'u64'($t18); + + // $t19 := error::permission_denied($t18) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:76+43 + call $t19 := $1_error_permission_denied($t18); + if ($abort_flag) { + assume {:print "$at(49,27221,27264)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + assume {:print "$at(49,27154,27265)"} true; + assume {:print "$track_abort(40,50):", $t19} $t19 == $t19; + + // $t13 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + $t13 := $t19; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + goto L12; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:649:28+11 + assume {:print "$at(49,27294,27305)"} true; +L5: + + // trace_local[to#230]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:52+2 + assume {:print "$at(49,23388,23390)"} true; + assume {:print "$track_local(40,50,6):", $t15} $t15 == $t15; + + // trace_local[object#229]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:35+6 + assume {:print "$track_local(40,50,2):", $t9} $t9 == $t9; + + // $t20 := borrow_global($t9) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:27+17 + assume {:print "$at(49,23449,23466)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(49,23449,23466)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[object_core#231]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t20); + assume {:print "$track_local(40,50,4):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t21 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:13+17 + assume {:print "$at(49,23500,23517)"} true; + $t21 := $Dereference($t20)->$owner; + + // $t22 := !=($t21, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:31+2 + $t22 := !$IsEqual'address'($t21, $t15); + + // if ($t22) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + if ($t22) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; +L7: + + // $t23 := features::module_event_migration_enabled() on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; + call $t23 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,23543,23590)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t23) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:13+279 + if ($t23) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:565:25+6 + assume {:print "$at(49,23678,23684)"} true; +L9: + + // $t24 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:566:31+17 + assume {:print "$at(49,23716,23733)"} true; + $t24 := $Dereference($t20)->$owner; + + // $t25 := pack object::Transfer($t9, $t24, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:564:21+141 + assume {:print "$at(49,23643,23784)"} true; + $t25 := $1_object_Transfer($t9, $t24, $t15); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + assume {:print "$at(49,23610,23803)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:22+11 + assume {:print "$at(49,23872,23883)"} true; +L8: + + // $t26 := borrow_field.transfer_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:17+32 + assume {:print "$at(49,23867,23899)"} true; + $t26 := $ChildMutation($t20, 3, $Dereference($t20)->$transfer_events); + + // $t27 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:575:27+17 + assume {:print "$at(49,23987,24004)"} true; + $t27 := $Dereference($t20)->$owner; + + // $t28 := pack object::TransferEvent($t9, $t27, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:573:17+130 + assume {:print "$at(49,23917,24047)"} true; + $t28 := $1_object_TransferEvent($t9, $t27, $t15); + + // opaque begin: event::emit_event($t26, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + assume {:print "$at(49,23832,24062)"} true; + + // opaque end: event::emit_event($t26, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + + // write_back[Reference($t20).transfer_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + $t20 := $UpdateMutation($t20, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t20), $Dereference($t26))); + + // $t29 := borrow_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+17 + assume {:print "$at(49,24076,24093)"} true; + $t29 := $ChildMutation($t20, 1, $Dereference($t20)->$owner); + + // write_ref($t29, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t29 := $UpdateMutation($t29, $t15); + + // write_back[Reference($t20).owner (address)]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t20 := $UpdateMutation($t20, $Update'$1_object_ObjectCore'_owner($Dereference($t20), $Dereference($t29))); + + // write_back[object::ObjectCore@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:35+1 + goto L10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; +L6: + + // drop($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:649:61+1 + assume {:print "$at(49,27327,27328)"} true; +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; +L11: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 +L12: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun object::unburn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+553 +procedure {:timeLimit 80} $1_object_unburn$verify(_$t0: $signer, _$t1: $1_object_Object'#0') returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_object_ObjectCore); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_object_TombStone; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_object_TombStone; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation ($1_object_ObjectCore); + var $t21: int; + var $t22: bool; + var $t23: bool; + var $t24: int; + var $t25: $1_object_Transfer; + var $t26: $Mutation ($1_event_EventHandle'$1_object_TransferEvent'); + var $t27: int; + var $t28: $1_object_TransferEvent; + var $t29: $Mutation (int); + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_object_ObjectCore_$memory#131: $Memory $1_object_ObjectCore; + var $1_object_TombStone_$memory#132: $Memory $1_object_TombStone; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$at(49,26781,26782)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume Identical($t7, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:488:9+34 + assume {:print "$at(50,19230,19264)"} true; + assume ($t7 == $t1->$inner); + + // assume Identical($t8, global($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:491:9+58 + assume {:print "$at(50,19365,19423)"} true; + assume ($t8 == $ResourceValue($1_object_TombStone_$memory, $t7)); + + // @131 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$at(49,26781,26782)"} true; + $1_object_ObjectCore_$memory#131 := $1_object_ObjectCore_$memory; + + // @132 := save_mem(object::TombStone) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + $1_object_TombStone_$memory#132 := $1_object_TombStone_$memory; + + // trace_local[original_owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$track_local(40,50,0):", $t0} $t0 == $t0; + + // trace_local[object]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:640:5+1 + assume {:print "$track_local(40,50,1):", $t1} $t1 == $t1; + + // $t9 := get_field>.inner($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:644:27+12 + assume {:print "$at(49,26939,26951)"} true; + $t9 := $t1->$inner; + + // trace_local[object_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:644:13+11 + assume {:print "$track_local(40,50,3):", $t9} $t9 == $t9; + + // $t10 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:17+6 + assume {:print "$at(49,26969,26975)"} true; + $t10 := $ResourceExists($1_object_TombStone_$memory, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + assume {:print "$at(49,26961,27044)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 +L0: + + // $t11 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:73+17 + assume {:print "$at(49,27025,27042)"} true; + $t11 := 8; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:49+42 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(49,27001,27043)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + assume {:print "$at(49,26961,27044)"} true; + assume {:print "$track_abort(40,50):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + $t13 := $t12; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:645:9+83 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:86+11 + assume {:print "$at(49,27132,27143)"} true; +L2: + + // $t14 := move_from($t9) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:65+9 + assume {:print "$at(49,27111,27120)"} true; + if (!$ResourceExists($1_object_TombStone_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_object_TombStone_$memory, $t9); + $1_object_TombStone_$memory := $ResourceRemove($1_object_TombStone_$memory, $t9); + } + if ($abort_flag) { + assume {:print "$at(49,27111,27120)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // $t15 := unpack object::TombStone($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:13+49 + $t15 := $t14->$original_owner; + + // trace_local[original_owner_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:647:41+19 + assume {:print "$track_local(40,50,5):", $t15} $t15 == $t15; + + // $t16 := signer::address_of($t0) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:40+34 + assume {:print "$at(49,27185,27219)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(49,27185,27219)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // $t17 := ==($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:37+2 + $t17 := $IsEqual'address'($t15, $t16); + + // if ($t17) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + if ($t17) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + assume {:print "$at(49,27154,27265)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:101+17 +L3: + + // $t18 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:101+17 + assume {:print "$at(49,27246,27263)"} true; + $t18 := 4; + assume $IsValid'u64'($t18); + + // $t19 := error::permission_denied($t18) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:76+43 + call $t19 := $1_error_permission_denied($t18); + if ($abort_flag) { + assume {:print "$at(49,27221,27264)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + assume {:print "$at(49,27154,27265)"} true; + assume {:print "$track_abort(40,50):", $t19} $t19 == $t19; + + // $t13 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + $t13 := $t19; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:648:9+111 + goto L12; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:649:28+11 + assume {:print "$at(49,27294,27305)"} true; +L5: + + // trace_local[to#230]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:52+2 + assume {:print "$at(49,23388,23390)"} true; + assume {:print "$track_local(40,50,6):", $t15} $t15 == $t15; + + // trace_local[object#229]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:559:35+6 + assume {:print "$track_local(40,50,2):", $t9} $t9 == $t9; + + // $t20 := borrow_global($t9) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:27+17 + assume {:print "$at(49,23449,23466)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_object_ObjectCore_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(49,23449,23466)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[object_core#231]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:560:13+11 + $temp_0'$1_object_ObjectCore' := $Dereference($t20); + assume {:print "$track_local(40,50,4):", $temp_0'$1_object_ObjectCore'} $temp_0'$1_object_ObjectCore' == $temp_0'$1_object_ObjectCore'; + + // $t21 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:13+17 + assume {:print "$at(49,23500,23517)"} true; + $t21 := $Dereference($t20)->$owner; + + // $t22 := !=($t21, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:31+2 + $t22 := !$IsEqual'address'($t21, $t15); + + // if ($t22) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + if ($t22) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; +L7: + + // $t23 := features::module_event_migration_enabled() on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:17+47 + assume {:print "$at(49,23543,23590)"} true; + call $t23 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(49,23543,23590)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(40,50):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t23) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:562:13+279 + if ($t23) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:565:25+6 + assume {:print "$at(49,23678,23684)"} true; +L9: + + // $t24 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:566:31+17 + assume {:print "$at(49,23716,23733)"} true; + $t24 := $Dereference($t20)->$owner; + + // $t25 := pack object::Transfer($t9, $t24, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:564:21+141 + assume {:print "$at(49,23643,23784)"} true; + $t25 := $1_object_Transfer($t9, $t24, $t15); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + assume {:print "$at(49,23610,23803)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:563:17+193 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:22+11 + assume {:print "$at(49,23872,23883)"} true; +L8: + + // $t26 := borrow_field.transfer_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:572:17+32 + assume {:print "$at(49,23867,23899)"} true; + $t26 := $ChildMutation($t20, 3, $Dereference($t20)->$transfer_events); + + // $t27 := get_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:575:27+17 + assume {:print "$at(49,23987,24004)"} true; + $t27 := $Dereference($t20)->$owner; + + // $t28 := pack object::TransferEvent($t9, $t27, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:573:17+130 + assume {:print "$at(49,23917,24047)"} true; + $t28 := $1_object_TransferEvent($t9, $t27, $t15); + + // opaque begin: event::emit_event($t26, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + assume {:print "$at(49,23832,24062)"} true; + + // opaque end: event::emit_event($t26, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + + // write_back[Reference($t20).transfer_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:571:13+230 + $t20 := $UpdateMutation($t20, $Update'$1_object_ObjectCore'_transfer_events($Dereference($t20), $Dereference($t26))); + + // $t29 := borrow_field.owner($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+17 + assume {:print "$at(49,24076,24093)"} true; + $t29 := $ChildMutation($t20, 1, $Dereference($t20)->$owner); + + // write_ref($t29, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t29 := $UpdateMutation($t29, $t15); + + // write_back[Reference($t20).owner (address)]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $t20 := $UpdateMutation($t20, $Update'$1_object_ObjectCore'_owner($Dereference($t20), $Dereference($t29))); + + // write_back[object::ObjectCore@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:13+22 + $1_object_ObjectCore_$memory := $ResourceUpdate($1_object_ObjectCore_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:579:35+1 + goto L10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; +L6: + + // drop($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:561:9+613 + assume {:print "$at(49,23496,24109)"} true; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:649:61+1 + assume {:print "$at(49,27327,27328)"} true; +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; +L11: + + // assert Not(Not(exists[@131]($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:489:9+46 + assume {:print "$at(50,19273,19319)"} true; + assert {:msg "assert_failed(50,19273,19319): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#131, $t7); + + // assert Not(Not(object::$is_burnt[@132]<#0>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:490:9+28 + assume {:print "$at(50,19328,19356)"} true; + assert {:msg "assert_failed(50,19328,19356): function does not abort under this condition"} + !!$1_object_$is_burnt'#0'($1_object_TombStone_$memory#132, $t1); + + // assert Not(Neq
(select object::TombStone.original_owner($t8), signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:492:9+74 + assume {:print "$at(50,19432,19506)"} true; + assert {:msg "assert_failed(50,19432,19506): function does not abort under this condition"} + !!$IsEqual'address'($t8->$original_owner, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:492:9+74 + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; +L12: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:650:5+1 + assume {:print "$at(49,27333,27334)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun object::ungated_transfer_allowed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:654:5+295 +procedure {:timeLimit 80} $1_object_ungated_transfer_allowed$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_ObjectCore; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + var $1_object_ObjectCore_$memory#135: $Memory $1_object_ObjectCore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:654:5+1 + assume {:print "$at(49,27410,27411)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:654:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @135 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:654:5+1 + $1_object_ObjectCore_$memory#135 := $1_object_ObjectCore_$memory; + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:654:5+1 + assume {:print "$track_local(40,51,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:656:32+12 + assume {:print "$at(49,27549,27561)"} true; + $t1 := $t0->$inner; + + // $t2 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:656:13+6 + $t2 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 + assume {:print "$at(49,27509,27627)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 + assume {:print "$at(49,27509,27627)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:657:30+22 + assume {:print "$at(49,27593,27615)"} true; +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:657:30+22 + assume {:print "$at(49,27593,27615)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:657:13+40 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(49,27576,27616)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,51):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 + assume {:print "$at(49,27509,27627)"} true; + assume {:print "$track_abort(40,51):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:655:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:659:35+6 + assume {:print "$at(49,27663,27669)"} true; +L2: + + // $t6 := get_field>.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:659:35+12 + assume {:print "$at(49,27663,27675)"} true; + $t6 := $t0->$inner; + + // $t7 := get_global($t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:659:9+13 + if (!$ResourceExists($1_object_ObjectCore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_ObjectCore_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(49,27637,27650)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(40,51):", $t5} $t5 == $t5; + goto L4; + } + + // $t8 := get_field.allow_ungated_transfer($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:659:9+62 + $t8 := $t7->$allow_ungated_transfer; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:659:9+62 + assume {:print "$track_return(40,51,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:660:5+1 + assume {:print "$at(49,27704,27705)"} true; +L3: + + // assert Not(Not(exists[@135](select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:520:9+44 + assume {:print "$at(50,20834,20878)"} true; + assert {:msg "assert_failed(50,20834,20878): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#135, $t0->$inner); + + // assert Eq($t8, select object::ObjectCore.allow_ungated_transfer(global(select object::Object.inner>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:521:9+74 + assume {:print "$at(50,20887,20961)"} true; + assert {:msg "assert_failed(50,20887,20961): post-condition does not hold"} + $IsEqual'bool'($t8, $ResourceValue($1_object_ObjectCore_$memory, $t0->$inner)->$allow_ungated_transfer); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:521:9+74 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:660:5+1 + assume {:print "$at(49,27704,27705)"} true; +L4: + + // assert Not(exists[@135](select object::Object.inner>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:519:5+206 + assume {:print "$at(50,20761,20967)"} true; + assert {:msg "assert_failed(50,20761,20967): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_object_ObjectCore_$memory#135, $t0->$inner); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:519:5+206 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object::verify_ungated_and_descendant [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1305 +procedure {:inline 1} $1_object_verify_ungated_and_descendant(_$t0: int, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_object_ObjectCore; + var $t6: $1_object_ObjectCore; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_object_ObjectCore; + var $t12: bool; + 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: bool; + var $t22: bool; + var $t23: $1_object_ObjectCore; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume {:print "$at(49,24661,24662)"} true; + assume {:print "$track_local(40,52,0):", $t0} $t0 == $t0; + + // trace_local[destination]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume {:print "$track_local(40,52,1):", $t1} $t1 == $t1; + + // trace_local[current_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:596:13+15 + assume {:print "$at(49,24767,24782)"} true; + assume {:print "$track_local(40,52,3):", $t1} $t1 == $t1; + + // $t7 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:598:13+6 + assume {:print "$at(49,24827,24833)"} true; + $t7 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:30+22 + assume {:print "$at(49,24893,24915)"} true; +L0: + + // $t8 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:30+22 + assume {:print "$at(49,24893,24915)"} true; + $t8 := 2; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:13+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(49,24876,24916)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + assume {:print "$track_abort(40,52):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + $t10 := $t9; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + goto L21; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:48+15 + assume {:print "$at(49,24977,24992)"} true; +L2: + + // $t11 := get_global($t1) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:22+13 + assume {:print "$at(49,24951,24964)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t11 := $ResourceValue($1_object_ObjectCore_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(49,24951,24964)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[object]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:13+6 + assume {:print "$track_local(40,52,5):", $t11} $t11 == $t11; + + // $t12 := get_field.allow_ungated_transfer($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:604:13+29 + assume {:print "$at(49,25024,25053)"} true; + $t12 := $t11->$allow_ungated_transfer; + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 +L3: + + // $t13 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:605:38+21 + assume {:print "$at(49,25092,25113)"} true; + $t13 := 3; + assume $IsValid'u64'($t13); + + // $t14 := error::permission_denied($t13) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:605:13+47 + call $t14 := $1_error_permission_denied($t13); + if ($abort_flag) { + assume {:print "$at(49,25067,25114)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + assume {:print "$track_abort(40,52):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + $t10 := $t14; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + goto L21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:31+6 + assume {:print "$at(49,25158,25164)"} true; +L5: + + // $t15 := get_field.owner($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:31+12 + assume {:print "$at(49,25158,25170)"} true; + $t15 := $t11->$owner; + + // trace_local[current_address#1]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:13+15 + assume {:print "$track_local(40,52,4):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:609:21+1 + assume {:print "$at(49,25192,25193)"} true; + $t16 := 0; + assume $IsValid'u8'($t16); + + // trace_local[count]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:609:13+5 + assume {:print "$track_local(40,52,2):", $t16} $t16 == $t16; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$at(49,25210,25215)"} true; +L18: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$at(49,25210,25215)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'address'($t4); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'$1_object_ObjectCore'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'address'($t25); + + // trace_local[count]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$info(): enter loop, variable(s) count, current_address#1 havocked and reassigned"} true; + assume {:print "$track_local(40,52,2):", $t2} $t2 == $t2; + + // trace_local[current_address#1]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$track_local(40,52,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume !$abort_flag; + + // $t17 := !=($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:22+2 + $t17 := !$IsEqual'address'($t0, $t4); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:9+756 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:9+756 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:21+5 + assume {:print "$at(49,25258,25263)"} true; +L8: + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:29+1 + assume {:print "$at(49,25266,25267)"} true; + $t18 := 1; + assume $IsValid'u8'($t18); + + // $t19 := +($t2, $t18) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:27+1 + call $t19 := $AddU8($t2, $t18); + if ($abort_flag) { + assume {:print "$at(49,25264,25265)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[count]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:13+5 + assume {:print "$track_local(40,52,2):", $t19} $t19 == $t19; + + // $t20 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:29+22 + assume {:print "$at(49,25297,25319)"} true; + $t20 := 8; + assume $IsValid'u8'($t20); + + // $t21 := <($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:27+1 + call $t21 := $Lt($t19, $t20); + + // if ($t21) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + if ($t21) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + assume {:print "$at(49,25281,25359)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:73+16 +L9: + + // $t26 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:73+16 + assume {:print "$at(49,25341,25357)"} true; + $t26 := 6; + assume $IsValid'u64'($t26); + + // $t27 := error::out_of_range($t26) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:53+37 + call $t27 := $1_error_out_of_range($t26); + if ($abort_flag) { + assume {:print "$at(49,25321,25358)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + assume {:print "$at(49,25281,25359)"} true; + assume {:print "$track_abort(40,52):", $t27} $t27 == $t27; + + // $t10 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + $t10 := $t27; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + goto L21; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:616:36+15 + assume {:print "$at(49,25595,25610)"} true; +L11: + + // $t22 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:616:17+6 + assume {:print "$at(49,25576,25582)"} true; + $t22 := $ResourceExists($1_object_ObjectCore_$memory, $t4); + + // if ($t22) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + if ($t22) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:42+17 + assume {:print "$at(49,25654,25671)"} true; +L12: + + // $t28 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:42+17 + assume {:print "$at(49,25654,25671)"} true; + $t28 := 4; + assume $IsValid'u64'($t28); + + // $t29 := error::permission_denied($t28) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:17+43 + call $t29 := $1_error_permission_denied($t28); + if ($abort_flag) { + assume {:print "$at(49,25629,25672)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + assume {:print "$track_abort(40,52):", $t29} $t29 == $t29; + + // $t10 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + $t10 := $t29; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + goto L21; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:52+15 + assume {:print "$at(49,25740,25755)"} true; +L14: + + // $t23 := get_global($t4) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:26+13 + assume {:print "$at(49,25714,25727)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t23 := $ResourceValue($1_object_ObjectCore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(49,25714,25727)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[object#2]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:17+6 + assume {:print "$track_local(40,52,6):", $t23} $t23 == $t23; + + // $t24 := get_field.allow_ungated_transfer($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:621:17+29 + assume {:print "$at(49,25795,25824)"} true; + $t24 := $t23->$allow_ungated_transfer; + + // if ($t24) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + if ($t24) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 +L16: + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 +L15: + + // $t30 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:622:42+21 + assume {:print "$at(49,25867,25888)"} true; + $t30 := 3; + assume $IsValid'u64'($t30); + + // $t31 := error::permission_denied($t30) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:622:17+47 + call $t31 := $1_error_permission_denied($t30); + if ($abort_flag) { + assume {:print "$at(49,25842,25889)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + assume {:print "$track_abort(40,52):", $t31} $t31 == $t31; + + // $t10 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + $t10 := $t31; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + goto L21; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:31+6 + assume {:print "$at(49,25936,25942)"} true; +L17: + + // $t25 := get_field.owner($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:31+12 + assume {:print "$at(49,25936,25948)"} true; + $t25 := $t23->$owner; + + // trace_local[current_address#1]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:13+15 + assume {:print "$track_local(40,52,4):", $t25} $t25 == $t25; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:43+1 + goto L19; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; +L6: + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; + goto L20; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + // Loop invariant checking block for the loop started with header: L18 +L19: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; +L20: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 +L21: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun object::verify_ungated_and_descendant [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1305 +procedure {:timeLimit 80} $1_object_verify_ungated_and_descendant$verify(_$t0: int, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_object_ObjectCore; + var $t6: $1_object_ObjectCore; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_object_ObjectCore; + var $t12: bool; + 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: bool; + var $t22: bool; + var $t23: $1_object_ObjectCore; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_object_ObjectCore': $1_object_ObjectCore; + var $temp_0'address': int; + var $temp_0'u8': int; + var $1_object_ObjectCore_$memory#119: $Memory $1_object_ObjectCore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume {:print "$at(49,24661,24662)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // @119 := save_mem(object::ObjectCore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + $1_object_ObjectCore_$memory#119 := $1_object_ObjectCore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume {:print "$track_local(40,52,0):", $t0} $t0 == $t0; + + // trace_local[destination]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:595:5+1 + assume {:print "$track_local(40,52,1):", $t1} $t1 == $t1; + + // trace_local[current_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:596:13+15 + assume {:print "$at(49,24767,24782)"} true; + assume {:print "$track_local(40,52,3):", $t1} $t1 == $t1; + + // $t7 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:598:13+6 + assume {:print "$at(49,24827,24833)"} true; + $t7 := $ResourceExists($1_object_ObjectCore_$memory, $t1); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:30+22 + assume {:print "$at(49,24893,24915)"} true; +L0: + + // $t8 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:30+22 + assume {:print "$at(49,24893,24915)"} true; + $t8 := 2; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:599:13+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(49,24876,24916)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + assume {:print "$at(49,24806,24927)"} true; + assume {:print "$track_abort(40,52):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + $t10 := $t9; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:597:9+121 + goto L21; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:48+15 + assume {:print "$at(49,24977,24992)"} true; +L2: + + // $t11 := get_global($t1) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:22+13 + assume {:print "$at(49,24951,24964)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t11 := $ResourceValue($1_object_ObjectCore_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(49,24951,24964)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[object]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:602:13+6 + assume {:print "$track_local(40,52,5):", $t11} $t11 == $t11; + + // $t12 := get_field.allow_ungated_transfer($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:604:13+29 + assume {:print "$at(49,25024,25053)"} true; + $t12 := $t11->$allow_ungated_transfer; + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 +L3: + + // $t13 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:605:38+21 + assume {:print "$at(49,25092,25113)"} true; + $t13 := 3; + assume $IsValid'u64'($t13); + + // $t14 := error::permission_denied($t13) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:605:13+47 + call $t14 := $1_error_permission_denied($t13); + if ($abort_flag) { + assume {:print "$at(49,25067,25114)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + assume {:print "$at(49,25003,25125)"} true; + assume {:print "$track_abort(40,52):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + $t10 := $t14; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:603:9+122 + goto L21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:31+6 + assume {:print "$at(49,25158,25164)"} true; +L5: + + // $t15 := get_field.owner($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:31+12 + assume {:print "$at(49,25158,25170)"} true; + $t15 := $t11->$owner; + + // trace_local[current_address#1]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:608:13+15 + assume {:print "$track_local(40,52,4):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:609:21+1 + assume {:print "$at(49,25192,25193)"} true; + $t16 := 0; + assume $IsValid'u8'($t16); + + // trace_local[count]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:609:13+5 + assume {:print "$track_local(40,52,2):", $t16} $t16 == $t16; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$at(49,25210,25215)"} true; +L18: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$at(49,25210,25215)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'address'($t4); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'u8'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'$1_object_ObjectCore'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume $IsValid'address'($t25); + + // trace_local[count]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$info(): enter loop, variable(s) count, current_address#1 havocked and reassigned"} true; + assume {:print "$track_local(40,52,2):", $t2} $t2 == $t2; + + // trace_local[current_address#1]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume {:print "$track_local(40,52,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:16+5 + assume !$abort_flag; + + // $t17 := !=($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:22+2 + $t17 := !$IsEqual'address'($t0, $t4); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:9+756 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:610:9+756 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:21+5 + assume {:print "$at(49,25258,25263)"} true; +L8: + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:29+1 + assume {:print "$at(49,25266,25267)"} true; + $t18 := 1; + assume $IsValid'u8'($t18); + + // $t19 := +($t2, $t18) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:27+1 + call $t19 := $AddU8($t2, $t18); + if ($abort_flag) { + assume {:print "$at(49,25264,25265)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[count]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:611:13+5 + assume {:print "$track_local(40,52,2):", $t19} $t19 == $t19; + + // $t20 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:29+22 + assume {:print "$at(49,25297,25319)"} true; + $t20 := 8; + assume $IsValid'u8'($t20); + + // $t21 := <($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:27+1 + call $t21 := $Lt($t19, $t20); + + // if ($t21) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + if ($t21) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + assume {:print "$at(49,25281,25359)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:73+16 +L9: + + // $t26 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:73+16 + assume {:print "$at(49,25341,25357)"} true; + $t26 := 6; + assume $IsValid'u64'($t26); + + // $t27 := error::out_of_range($t26) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:53+37 + call $t27 := $1_error_out_of_range($t26); + if ($abort_flag) { + assume {:print "$at(49,25321,25358)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + assume {:print "$at(49,25281,25359)"} true; + assume {:print "$track_abort(40,52):", $t27} $t27 == $t27; + + // $t10 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + $t10 := $t27; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:612:13+78 + goto L21; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:616:36+15 + assume {:print "$at(49,25595,25610)"} true; +L11: + + // $t22 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:616:17+6 + assume {:print "$at(49,25576,25582)"} true; + $t22 := $ResourceExists($1_object_ObjectCore_$memory, $t4); + + // if ($t22) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + if ($t22) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:42+17 + assume {:print "$at(49,25654,25671)"} true; +L12: + + // $t28 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:42+17 + assume {:print "$at(49,25654,25671)"} true; + $t28 := 4; + assume $IsValid'u64'($t28); + + // $t29 := error::permission_denied($t28) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:617:17+43 + call $t29 := $1_error_permission_denied($t28); + if ($abort_flag) { + assume {:print "$at(49,25629,25672)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + assume {:print "$at(49,25551,25687)"} true; + assume {:print "$track_abort(40,52):", $t29} $t29 == $t29; + + // $t10 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + $t10 := $t29; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:615:13+136 + goto L21; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:52+15 + assume {:print "$at(49,25740,25755)"} true; +L14: + + // $t23 := get_global($t4) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:26+13 + assume {:print "$at(49,25714,25727)"} true; + if (!$ResourceExists($1_object_ObjectCore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t23 := $ResourceValue($1_object_ObjectCore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(49,25714,25727)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_local[object#2]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:619:17+6 + assume {:print "$track_local(40,52,6):", $t23} $t23 == $t23; + + // $t24 := get_field.allow_ungated_transfer($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:621:17+29 + assume {:print "$at(49,25795,25824)"} true; + $t24 := $t23->$allow_ungated_transfer; + + // if ($t24) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + if ($t24) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 +L16: + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 +L15: + + // $t30 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:622:42+21 + assume {:print "$at(49,25867,25888)"} true; + $t30 := 3; + assume $IsValid'u64'($t30); + + // $t31 := error::permission_denied($t30) on_abort goto L21 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:622:17+47 + call $t31 := $1_error_permission_denied($t30); + if ($abort_flag) { + assume {:print "$at(49,25842,25889)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(40,52):", $t10} $t10 == $t10; + goto L21; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + assume {:print "$at(49,25770,25904)"} true; + assume {:print "$track_abort(40,52):", $t31} $t31 == $t31; + + // $t10 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + $t10 := $t31; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:620:13+134 + goto L21; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:31+6 + assume {:print "$at(49,25936,25942)"} true; +L17: + + // $t25 := get_field.owner($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:31+12 + assume {:print "$at(49,25936,25948)"} true; + $t25 := $t23->$owner; + + // trace_local[current_address#1]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:13+15 + assume {:print "$track_local(40,52,4):", $t25} $t25 == $t25; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:624:43+1 + goto L19; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; +L6: + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; + goto L20; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + // Loop invariant checking block for the loop started with header: L18 +L19: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:625:10+1 + assume {:print "$at(49,25959,25960)"} true; + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; +L20: + + // assert Not(Not(exists[@119]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:499:9+43 + assume {:print "$at(50,19762,19805)"} true; + assert {:msg "assert_failed(50,19762,19805): function does not abort under this condition"} + !!$ResourceExists($1_object_ObjectCore_$memory#119, $t1); + + // assert Not(Not(select object::ObjectCore.allow_ungated_transfer(global[@119]($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:500:9+66 + assume {:print "$at(50,19814,19880)"} true; + assert {:msg "assert_failed(50,19814,19880): function does not abort under this condition"} + !!$ResourceValue($1_object_ObjectCore_$memory#119, $t1)->$allow_ungated_transfer; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:500:9+66 + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; +L21: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.move:626:5+1 + assume {:print "$at(49,25965,25966)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:188:10+323 +function {:inline} $1_optional_aggregator_optional_aggregator_value(optional_aggregator: $1_optional_aggregator_OptionalAggregator): int { + (if ($1_optional_aggregator_$is_parallelizable(optional_aggregator)) then ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'(optional_aggregator->$aggregator))) else ($1_option_$borrow'$1_optional_aggregator_Integer'(optional_aggregator->$integer)->$value)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:196:10+314 +function {:inline} $1_optional_aggregator_optional_aggregator_limit(optional_aggregator: $1_optional_aggregator_OptionalAggregator): int { + (if ($1_optional_aggregator_$is_parallelizable(optional_aggregator)) then ($1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'(optional_aggregator->$aggregator))) else ($1_option_$borrow'$1_optional_aggregator_Integer'(optional_aggregator->$integer)->$limit)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+141 +function {:inline} $1_optional_aggregator_$is_parallelizable(optional_aggregator: $1_optional_aggregator_OptionalAggregator): bool { + $1_option_$is_some'$1_aggregator_Aggregator'(optional_aggregator->$aggregator) +} + +// struct optional_aggregator::Integer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:20:5+74 +datatype $1_optional_aggregator_Integer { + $1_optional_aggregator_Integer($value: int, $limit: int) +} +function {:inline} $Update'$1_optional_aggregator_Integer'_value(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { + $1_optional_aggregator_Integer(x, s->$limit) +} +function {:inline} $Update'$1_optional_aggregator_Integer'_limit(s: $1_optional_aggregator_Integer, x: int): $1_optional_aggregator_Integer { + $1_optional_aggregator_Integer(s->$value, x) +} +function $IsValid'$1_optional_aggregator_Integer'(s: $1_optional_aggregator_Integer): bool { + $IsValid'u128'(s->$value) + && $IsValid'u128'(s->$limit) +} +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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:64:5+175 +datatype $1_optional_aggregator_OptionalAggregator { + $1_optional_aggregator_OptionalAggregator($aggregator: $1_option_Option'$1_aggregator_Aggregator', $integer: $1_option_Option'$1_optional_aggregator_Integer') +} +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, s->$integer) +} +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(s->$aggregator, x) +} +function $IsValid'$1_optional_aggregator_OptionalAggregator'(s: $1_optional_aggregator_OptionalAggregator): bool { + $IsValid'$1_option_Option'$1_aggregator_Aggregator''(s->$aggregator) + && $IsValid'$1_option_Option'$1_optional_aggregator_Integer''(s->$integer) +} +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''(s1->$aggregator, s2->$aggregator) + && $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''(s1->$integer, s2->$integer)} + +// fun optional_aggregator::destroy [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:130:5+270 +procedure {:timeLimit 80} $1_optional_aggregator_destroy$verify(_$t0: $1_optional_aggregator_OptionalAggregator) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:130:5+1 + assume {:print "$at(23,4637,4638)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t0) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t0->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t0->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))))) && (LenVec($t0->$aggregator->$vec) <= 1)) && (LenVec($t0->$integer->$vec) <= 1))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:130:5+1 + assume {:print "$track_local(41,2,0):", $t0} $t0 == $t0; + + // $t1 := optional_aggregator::is_parallelizable($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:131:13+39 + assume {:print "$at(23,4711,4750)"} true; + call $t1 := $1_optional_aggregator_is_parallelizable($t0); + if ($abort_flag) { + assume {:print "$at(23,4711,4750)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(41,2):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:131:9+194 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:132:41+19 + assume {:print "$at(23,4794,4813)"} true; +L1: + + // $t3 := optional_aggregator::destroy_optional_aggregator($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:132:13+48 + assume {:print "$at(23,4766,4814)"} true; + call $t3 := $1_optional_aggregator_destroy_optional_aggregator($t0); + if ($abort_flag) { + assume {:print "$at(23,4766,4814)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(41,2):", $t2} $t2 == $t2; + goto L4; + } + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:132:13+48 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:131:9+194 + assume {:print "$at(23,4707,4901)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:134:38+19 + assume {:print "$at(23,4870,4889)"} true; +L0: + + // $t4 := optional_aggregator::destroy_optional_integer($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:134:13+45 + assume {:print "$at(23,4845,4890)"} true; + call $t4 := $1_optional_aggregator_destroy_optional_integer($t0); + if ($abort_flag) { + assume {:print "$at(23,4845,4890)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(41,2):", $t2} $t2 == $t2; + goto L4; + } + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:134:13+45 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:131:9+194 + assume {:print "$at(23,4707,4901)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:136:5+1 + assume {:print "$at(23,4906,4907)"} true; +L3: + + // assert Not(And(optional_aggregator::$is_parallelizable[]($t0), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:170:9+94 + assume {:print "$at(24,8715,8809)"} true; + assert {:msg "assert_failed(24,8715,8809): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t0) && !$IsEqual'num'(LenVec($t0->$integer->$vec), 0)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[]($t0)), Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:171:9+95 + assume {:print "$at(24,8818,8913)"} true; + assert {:msg "assert_failed(24,8818,8913): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t0) && $IsEqual'num'(LenVec($t0->$integer->$vec), 0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:171:9+95 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:136:5+1 + assume {:print "$at(23,4906,4907)"} true; +L4: + + // assert Or(And(optional_aggregator::$is_parallelizable[]($t0), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0)), And(Not(optional_aggregator::$is_parallelizable[]($t0)), Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:169:5+268 + assume {:print "$at(24,8651,8919)"} true; + assert {:msg "assert_failed(24,8651,8919): abort not covered by any of the `aborts_if` clauses"} + (($1_optional_aggregator_$is_parallelizable($t0) && !$IsEqual'num'(LenVec($t0->$integer->$vec), 0)) || (!$1_optional_aggregator_$is_parallelizable($t0) && $IsEqual'num'(LenVec($t0->$integer->$vec), 0))); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:169:5+268 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+427 +procedure {:inline 1} $1_optional_aggregator_add(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t2: $1_option_Option'$1_aggregator_Aggregator'; + var $t3: bool; + var $t4: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t5: $Mutation ($1_aggregator_Aggregator); + var $t6: int; + var $t7: $1_aggregator_Aggregator; + var $t8: bool; + var $t9: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t10: $Mutation ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + assume {:print "$at(23,5833,5834)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + assume {:print "$track_local(41,0,1):", $t1} $t1 == $t1; + + // $t2 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:29+31 + assume {:print "$at(23,5937,5968)"} true; + $t2 := $Dereference($t0)->$aggregator; + + // $t3 := opaque begin: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'$1_aggregator_Aggregator'($t2)); + + // $t3 := opaque end: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:54+19 + assume {:print "$at(23,6026,6045)"} true; +L1: + + // $t4 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:49+35 + assume {:print "$at(23,6021,6056)"} true; + $t4 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t5 := option::borrow_mut($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:30+55 + call $t5,$t4 := $1_option_borrow_mut'$1_aggregator_Aggregator'($t4); + if ($abort_flag) { + assume {:print "$at(23,6002,6057)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,0):", $t6} $t6 == $t6; + goto L4; + } + + // opaque begin: aggregator::add($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + + // $t7 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t7 := $Dereference($t5); + + // assume Identical($t8, Or(Gt(Add(aggregator::spec_aggregator_get_val($t5), $t1), aggregator::spec_get_limit($t5)), Gt(Add(aggregator::spec_aggregator_get_val($t5), $t1), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume ($t8 == ((($1_aggregator_spec_aggregator_get_val($Dereference($t5)) + $t1) > $1_aggregator_spec_get_limit($Dereference($t5))) || (($1_aggregator_spec_aggregator_get_val($Dereference($t5)) + $t1) > 340282366920938463463374607431768211455))); + + // if ($t8) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + if ($t8) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 +L6: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + assume {:print "$track_abort(41,0):", $t6} $t6 == $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 +L5: + + // $t5 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t5 := $UpdateMutation($t5, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t5)); + + // assume Eq(aggregator::spec_get_limit($t5), aggregator::spec_get_limit($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t5)), $1_aggregator_spec_get_limit($t7)); + + // assume Eq(Freeze(false)($t5), aggregator::spec_aggregator_set_val($t7, Add(aggregator::spec_aggregator_get_val($t7), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t5), $1_aggregator_spec_aggregator_set_val($t7, ($1_aggregator_spec_aggregator_get_val($t7) + $t1))); + + // opaque end: aggregator::add($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + + // write_back[Reference($t4).vec (vector)/[]]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t4 := $UpdateMutation($t4, (var $$sel0 := $Dereference($t4)->$vec; $Update'$1_option_Option'$1_aggregator_Aggregator''_vec($Dereference($t4), UpdateVec($$sel0, ReadVec($t5->p, LenVec($t4->p) + 1), $Dereference($t5))))); + + // write_back[Reference($t0).aggregator (option::Option)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t4))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:51+19 + assume {:print "$at(23,6174,6193)"} true; +L0: + + // $t9 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:46+32 + assume {:print "$at(23,6169,6201)"} true; + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t10 := option::borrow_mut($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:27+52 + call $t10,$t9 := $1_option_borrow_mut'$1_optional_aggregator_Integer'($t9); + if ($abort_flag) { + assume {:print "$at(23,6150,6202)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,0):", $t6} $t6 == $t6; + goto L4; + } + + // optional_aggregator::add_integer($t10, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + assume {:print "$at(23,6216,6243)"} true; + call $t10 := $1_optional_aggregator_add_integer($t10, $t1); + if ($abort_flag) { + assume {:print "$at(23,6216,6243)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,0):", $t6} $t6 == $t6; + goto L4; + } + + // write_back[Reference($t9).vec (vector)/[]]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $t9 := $UpdateMutation($t9, (var $$sel0 := $Dereference($t9)->$vec; $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec($Dereference($t9), UpdateVec($$sel0, ReadVec($t10->p, LenVec($t9->p) + 1), $Dereference($t10))))); + + // write_back[Reference($t0).integer (option::Option)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t9))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 + assume {:print "$at(23,6259,6260)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 + assume {:print "$at(23,6259,6260)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 + assume {:print "$at(23,6259,6260)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t4) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun optional_aggregator::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+427 +procedure {:timeLimit 80} $1_optional_aggregator_add$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: $1_option_Option'$1_aggregator_Aggregator'; + var $t4: bool; + var $t5: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t6: $Mutation ($1_aggregator_Aggregator); + var $t7: int; + var $t8: $1_aggregator_Aggregator; + var $t9: bool; + var $t10: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t11: $Mutation ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + assume {:print "$at(23,5833,5834)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + assume $IsValid'u128'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + $t2 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:157:5+1 + assume {:print "$track_local(41,0,1):", $t1} $t1 == $t1; + + // $t3 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:29+31 + assume {:print "$at(23,5937,5968)"} true; + $t3 := $Dereference($t0)->$aggregator; + + // $t4 := opaque begin: option::is_some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + assume $IsValid'bool'($t4); + + // assume Eq($t4, option::spec_is_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + assume $IsEqual'bool'($t4, $1_option_spec_is_some'$1_aggregator_Aggregator'($t3)); + + // $t4 := opaque end: option::is_some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:13+48 + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:54+19 + assume {:print "$at(23,6026,6045)"} true; +L1: + + // $t5 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:49+35 + assume {:print "$at(23,6021,6056)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t6 := option::borrow_mut($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:159:30+55 + call $t6,$t5 := $1_option_borrow_mut'$1_aggregator_Aggregator'($t5); + if ($abort_flag) { + assume {:print "$at(23,6002,6057)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,0):", $t7} $t7 == $t7; + goto L4; + } + + // opaque begin: aggregator::add($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t8 := $Dereference($t6); + + // assume Identical($t9, Or(Gt(Add(aggregator::spec_aggregator_get_val($t6), $t1), aggregator::spec_get_limit($t6)), Gt(Add(aggregator::spec_aggregator_get_val($t6), $t1), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume ($t9 == ((($1_aggregator_spec_aggregator_get_val($Dereference($t6)) + $t1) > $1_aggregator_spec_get_limit($Dereference($t6))) || (($1_aggregator_spec_aggregator_get_val($Dereference($t6)) + $t1) > 340282366920938463463374607431768211455))); + + // if ($t9) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + if ($t9) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 +L6: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + assume {:print "$track_abort(41,0):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 +L5: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume {:print "$at(23,6071,6105)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t6 := $UpdateMutation($t6, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t6)); + + // assume Eq(aggregator::spec_get_limit($t6), aggregator::spec_get_limit($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t6)), $1_aggregator_spec_get_limit($t8)); + + // assume Eq(Freeze(false)($t6), aggregator::spec_aggregator_set_val($t8, Add(aggregator::spec_aggregator_get_val($t8), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t6), $1_aggregator_spec_aggregator_set_val($t8, ($1_aggregator_spec_aggregator_get_val($t8) + $t1))); + + // opaque end: aggregator::add($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + + // write_back[Reference($t5).vec (vector)/[]]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t5 := $UpdateMutation($t5, (var $$sel0 := $Dereference($t5)->$vec; $Update'$1_option_Option'$1_aggregator_Aggregator''_vec($Dereference($t5), UpdateVec($$sel0, ReadVec($t6->p, LenVec($t5->p) + 1), $Dereference($t6))))); + + // write_back[Reference($t0).aggregator (option::Option)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t5))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:160:13+34 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:51+19 + assume {:print "$at(23,6174,6193)"} true; +L0: + + // $t10 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:46+32 + assume {:print "$at(23,6169,6201)"} true; + $t10 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t11 := option::borrow_mut($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:162:27+52 + call $t11,$t10 := $1_option_borrow_mut'$1_optional_aggregator_Integer'($t10); + if ($abort_flag) { + assume {:print "$at(23,6150,6202)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,0):", $t7} $t7 == $t7; + goto L4; + } + + // optional_aggregator::add_integer($t11, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + assume {:print "$at(23,6216,6243)"} true; + call $t11 := $1_optional_aggregator_add_integer($t11, $t1); + if ($abort_flag) { + assume {:print "$at(23,6216,6243)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,0):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t10).vec (vector)/[]]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $t10 := $UpdateMutation($t10, (var $$sel0 := $Dereference($t10)->$vec; $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec($Dereference($t10), UpdateVec($$sel0, ReadVec($t11->p, LenVec($t10->p) + 1), $Dereference($t11))))); + + // write_back[Reference($t0).integer (option::Option)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t10))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:163:13+27 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:158:9+337 + assume {:print "$at(23,5917,6254)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,0,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 + assume {:print "$at(23,6259,6260)"} true; +L3: + + // assert Not(And(optional_aggregator::$is_parallelizable[]($t2), Gt(Add(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1), aggregator::spec_get_limit[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2)))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:98:9+235 + assume {:print "$at(24,4220,4455)"} true; + assert {:msg "assert_failed(24,4220,4455): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t2) && (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) + $t1) > $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)))); + + // assert Not(And(optional_aggregator::$is_parallelizable[]($t2), Gt(Add(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:100:9+169 + assume {:print "$at(24,4464,4633)"} true; + assert {:msg "assert_failed(24,4464,4633): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t2) && (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) + $t1) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[]($t2)), Gt(Add(select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), $t1), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:102:9+136 + assume {:print "$at(24,4642,4778)"} true; + assert {:msg "assert_failed(24,4642,4778): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t2) && (($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value + $t1) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[]($t2)), Gt($t1, Sub(select optional_aggregator::Integer.limit(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:104:9+179 + assume {:print "$at(24,4787,4966)"} true; + assert {:msg "assert_failed(24,4787,4966): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t2) && ($t1 > ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$limit - $1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value))); + + // assert Eq(optional_aggregator::optional_aggregator_value($t0), Add(optional_aggregator::optional_aggregator_value($t2), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:92:9+122 + assume {:print "$at(24,3982,4104)"} true; + assert {:msg "assert_failed(24,3982,4104): post-condition does not hold"} + $IsEqual'u128'($1_optional_aggregator_optional_aggregator_value($Dereference($t0)), ($1_optional_aggregator_optional_aggregator_value($t2) + $t1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:92:9+122 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:165:5+1 + assume {:print "$at(23,6259,6260)"} true; +L4: + + // assert Or(Or(Or(And(optional_aggregator::$is_parallelizable[]($t2), Gt(Add(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1), aggregator::spec_get_limit[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))))), And(optional_aggregator::$is_parallelizable[]($t2), Gt(Add(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1), 340282366920938463463374607431768211455))), And(Not(optional_aggregator::$is_parallelizable[]($t2)), Gt(Add(select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), $t1), 340282366920938463463374607431768211455))), And(Not(optional_aggregator::$is_parallelizable[]($t2)), Gt($t1, Sub(select optional_aggregator::Integer.limit(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:90:5+235 + assume {:print "$at(24,3875,4110)"} true; + assert {:msg "assert_failed(24,3875,4110): abort not covered by any of the `aborts_if` clauses"} + (((($1_optional_aggregator_$is_parallelizable($t2) && (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) + $t1) > $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)))) || ($1_optional_aggregator_$is_parallelizable($t2) && (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) + $t1) > 340282366920938463463374607431768211455))) || (!$1_optional_aggregator_$is_parallelizable($t2) && (($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value + $t1) > 340282366920938463463374607431768211455))) || (!$1_optional_aggregator_$is_parallelizable($t2) && ($t1 > ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$limit - $1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value)))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:90:5+235 + $abort_code := $t7; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun optional_aggregator::new [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+477 +procedure {:inline 1} $1_optional_aggregator_new(_$t0: int, _$t1: bool) returns ($ret0: $1_optional_aggregator_OptionalAggregator) +{ + // declare local variables + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: $1_aggregator_Aggregator; + var $t4: int; + var $t5: $1_option_Option'$1_aggregator_Aggregator'; + var $t6: $1_option_Option'$1_optional_aggregator_Integer'; + var $t7: $1_option_Option'$1_aggregator_Aggregator'; + var $t8: $1_optional_aggregator_Integer; + var $t9: $1_option_Option'$1_optional_aggregator_Integer'; + var $t0: int; + var $t1: bool; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'bool': bool; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume {:print "$at(23,2321,2322)"} true; + assume {:print "$track_local(41,8,0):", $t0} $t0 == $t0; + + // trace_local[parallelizable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume {:print "$track_local(41,8,1):", $t1} $t1 == $t1; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:89+5 + assume {:print "$at(23,2552,2557)"} true; +L1: + + // $t3 := aggregator_factory::create_aggregator_internal($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:42+53 + assume {:print "$at(23,2505,2558)"} true; + call $t3 := $1_aggregator_factory_create_aggregator_internal($t0); + if ($abort_flag) { + assume {:print "$at(23,2505,2558)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,8):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume Eq>($t5, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + assume $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($t5, $1_option_spec_some'$1_aggregator_Aggregator'($t3)); + + // $t5 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + + // $t6 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume {:print "$at(23,2586,2600)"} true; + + // assume And(WellFormed($t6), Le(Len(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($t6) && (LenVec($t6->$vec) <= 1)); + + // assume Eq>($t6, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($t6, $1_option_spec_none'$1_optional_aggregator_Integer'()); + + // $t6 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + + // $t2 := pack optional_aggregator::OptionalAggregator($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:74:13+172 + assume {:print "$at(23,2443,2615)"} true; + $t2 := $1_optional_aggregator_OptionalAggregator($t5, $t6); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume {:print "$at(23,2694,2708)"} true; +L0: + + // $t7 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume {:print "$at(23,2694,2708)"} true; + + // assume And(WellFormed($t7), Le(Len(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($t7) && (LenVec($t7->$vec) <= 1)); + + // assume Eq>($t7, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($t7, $1_option_spec_none'$1_aggregator_Aggregator'()); + + // $t7 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + + // $t8 := optional_aggregator::new_integer($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:39+18 + assume {:print "$at(23,2748,2766)"} true; + call $t8 := $1_optional_aggregator_new_integer($t0); + if ($abort_flag) { + assume {:print "$at(23,2748,2766)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,8):", $t4} $t4 == $t4; + goto L4; + } + + // $t9 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + + // assume And(WellFormed($t9), Le(Len(select option::Option.vec($t9)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($t9) && (LenVec($t9->$vec) <= 1)); + + // assume Eq>($t9, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($t9, $1_option_spec_some'$1_optional_aggregator_Integer'($t8)); + + // $t9 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + + // $t2 := pack optional_aggregator::OptionalAggregator($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:79:13+137 + assume {:print "$at(23,2645,2782)"} true; + $t2 := $1_optional_aggregator_OptionalAggregator($t7, $t9); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + assume {:print "$track_return(41,8,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 + assume {:print "$at(23,2797,2798)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 + assume {:print "$at(23,2797,2798)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 + assume {:print "$at(23,2797,2798)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::new [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+477 +procedure {:timeLimit 80} $1_optional_aggregator_new$verify(_$t0: int, _$t1: bool) returns ($ret0: $1_optional_aggregator_OptionalAggregator) +{ + // declare local variables + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: $1_aggregator_Aggregator; + var $t4: int; + var $t5: $1_option_Option'$1_aggregator_Aggregator'; + var $t6: $1_option_Option'$1_optional_aggregator_Integer'; + var $t7: $1_option_Option'$1_aggregator_Aggregator'; + var $t8: $1_optional_aggregator_Integer; + var $t9: $1_option_Option'$1_optional_aggregator_Integer'; + var $t0: int; + var $t1: bool; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'bool': bool; + var $temp_0'u128': int; + var $1_aggregator_factory_AggregatorFactory_$memory#136: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume {:print "$at(23,2321,2322)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume $IsValid'bool'($t1); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // @136 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + $1_aggregator_factory_AggregatorFactory_$memory#136 := $1_aggregator_factory_AggregatorFactory_$memory; + + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume {:print "$track_local(41,8,0):", $t0} $t0 == $t0; + + // trace_local[parallelizable]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:72:5+1 + assume {:print "$track_local(41,8,1):", $t1} $t1 == $t1; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:89+5 + assume {:print "$at(23,2552,2557)"} true; +L1: + + // $t3 := aggregator_factory::create_aggregator_internal($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:42+53 + assume {:print "$at(23,2505,2558)"} true; + call $t3 := $1_aggregator_factory_create_aggregator_internal($t0); + if ($abort_flag) { + assume {:print "$at(23,2505,2558)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,8):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume Eq>($t5, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + assume $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($t5, $1_option_spec_some'$1_aggregator_Aggregator'($t3)); + + // $t5 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:75:29+67 + + // $t6 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume {:print "$at(23,2586,2600)"} true; + + // assume And(WellFormed($t6), Le(Len(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($t6) && (LenVec($t6->$vec) <= 1)); + + // assume Eq>($t6, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($t6, $1_option_spec_none'$1_optional_aggregator_Integer'()); + + // $t6 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:76:26+14 + + // $t2 := pack optional_aggregator::OptionalAggregator($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:74:13+172 + assume {:print "$at(23,2443,2615)"} true; + $t2 := $1_optional_aggregator_OptionalAggregator($t5, $t6); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t2)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($t2->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t2->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t2)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($t2->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t2->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t2)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t2))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($t2->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t2)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t2))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($t2->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)))); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume {:print "$at(23,2694,2708)"} true; +L0: + + // $t7 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume {:print "$at(23,2694,2708)"} true; + + // assume And(WellFormed($t7), Le(Len(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($t7) && (LenVec($t7->$vec) <= 1)); + + // assume Eq>($t7, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + assume $IsEqual'$1_option_Option'$1_aggregator_Aggregator''($t7, $1_option_spec_none'$1_aggregator_Aggregator'()); + + // $t7 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:80:29+14 + + // $t8 := optional_aggregator::new_integer($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:39+18 + assume {:print "$at(23,2748,2766)"} true; + call $t8 := $1_optional_aggregator_new_integer($t0); + if ($abort_flag) { + assume {:print "$at(23,2748,2766)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,8):", $t4} $t4 == $t4; + goto L4; + } + + // $t9 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + + // assume And(WellFormed($t9), Le(Len(select option::Option.vec($t9)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($t9) && (LenVec($t9->$vec) <= 1)); + + // assume Eq>($t9, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_Integer''($t9, $1_option_spec_some'$1_optional_aggregator_Integer'($t8)); + + // $t9 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:81:26+32 + + // $t2 := pack optional_aggregator::OptionalAggregator($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:79:13+137 + assume {:print "$at(23,2645,2782)"} true; + $t2 := $1_optional_aggregator_OptionalAggregator($t7, $t9); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t2)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($t2->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t2->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t2)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($t2->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t2->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t2)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t2))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($t2->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t2)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t2))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t2))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($t2->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)))); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:73:9+383 + assume {:print "$at(23,2409,2792)"} true; + assume {:print "$track_return(41,8,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 + assume {:print "$at(23,2797,2798)"} true; +L3: + + // assert Not(And($t1, Not(exists[@136](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:122:9+96 + assume {:print "$at(24,5754,5850)"} true; + assert {:msg "assert_failed(24,5754,5850): function does not abort under this condition"} + !($t1 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#136, 1)); + + // assert Implies($t1, optional_aggregator::$is_parallelizable($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:123:9+53 + assume {:print "$at(24,5859,5912)"} true; + assert {:msg "assert_failed(24,5859,5912): post-condition does not hold"} + ($t1 ==> $1_optional_aggregator_$is_parallelizable($t2)); + + // assert Implies(Not($t1), Not(optional_aggregator::$is_parallelizable($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:124:9+55 + assume {:print "$at(24,5921,5976)"} true; + assert {:msg "assert_failed(24,5921,5976): post-condition does not hold"} + (!$t1 ==> !$1_optional_aggregator_$is_parallelizable($t2)); + + // assert Eq(optional_aggregator::optional_aggregator_value($t2), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:125:9+47 + assume {:print "$at(24,5985,6032)"} true; + assert {:msg "assert_failed(24,5985,6032): post-condition does not hold"} + $IsEqual'u128'($1_optional_aggregator_optional_aggregator_value($t2), 0); + + // assert Le(optional_aggregator::optional_aggregator_value($t2), optional_aggregator::optional_aggregator_limit($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:126:9+79 + assume {:print "$at(24,6041,6120)"} true; + assert {:msg "assert_failed(24,6041,6120): post-condition does not hold"} + ($1_optional_aggregator_optional_aggregator_value($t2) <= $1_optional_aggregator_optional_aggregator_limit($t2)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:126:9+79 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:84:5+1 + assume {:print "$at(23,2797,2798)"} true; +L4: + + // assert And($t1, Not(exists[@136](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:121:5+446 + assume {:print "$at(24,5680,6126)"} true; + assert {:msg "assert_failed(24,5680,6126): abort not covered by any of the `aborts_if` clauses"} + ($t1 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#136, 1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:121:5+446 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::limit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:49:5+64 +procedure {:inline 1} $1_optional_aggregator_limit(_$t0: $1_optional_aggregator_Integer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:49:5+1 + assume {:print "$at(23,1682,1683)"} true; + assume {:print "$track_local(41,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:50:9+13 + assume {:print "$at(23,1727,1740)"} true; + $t1 := $t0->$limit; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:50:9+13 + assume {:print "$track_return(41,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:51:5+1 + assume {:print "$at(23,1745,1746)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:51:5+1 + assume {:print "$at(23,1745,1746)"} true; + $ret0 := $t1; + return; + +} + +// fun optional_aggregator::limit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:49:5+64 +procedure {:timeLimit 80} $1_optional_aggregator_limit$verify(_$t0: $1_optional_aggregator_Integer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:49:5+1 + assume {:print "$at(23,1682,1683)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t0); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:49:5+1 + assume {:print "$track_local(41,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:50:9+13 + assume {:print "$at(23,1727,1740)"} true; + $t1 := $t0->$limit; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:50:9+13 + assume {:print "$track_return(41,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:51:5+1 + assume {:print "$at(23,1745,1746)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:57:9+16 + assume {:print "$at(24,2673,2689)"} true; + assert {:msg "assert_failed(24,2673,2689): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:57:9+16 + $ret0 := $t1; + return; + +} + +// fun optional_aggregator::read [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:179:5+387 +procedure {:inline 1} $1_optional_aggregator_read(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_aggregator_Aggregator'; + var $t3: bool; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_aggregator_Aggregator; + var $t6: bool; + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_Integer'; + var $t9: $1_optional_aggregator_Integer; + var $t10: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:179:5+1 + assume {:print "$at(23,6838,6839)"} true; + assume {:print "$track_local(41,10,0):", $t0} $t0 == $t0; + + // $t2 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:29+31 + assume {:print "$at(23,6932,6963)"} true; + $t2 := $t0->$aggregator; + + // $t3 := opaque begin: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'$1_aggregator_Aggregator'($t2)); + + // $t3 := opaque end: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:46+19 + assume {:print "$at(23,7013,7032)"} true; +L1: + + // $t4 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:45+31 + assume {:print "$at(23,7012,7043)"} true; + $t4 := $t0->$aggregator; + + // $t5 := opaque begin: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + + // assume Identical($t6, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume ($t6 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 +L6: + + // assume And(option::spec_is_none($t4), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t5); + + // assume Eq($t5, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume $IsEqual'$1_aggregator_Aggregator'($t5, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t5 := opaque end: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + + // $t1 := opaque begin: aggregator::read($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume {:print "$at(23,7058,7086)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume $IsValid'u128'($t1); + + // assume Eq($t1, aggregator::spec_read($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume $IsEqual'u128'($t1, $1_aggregator_spec_read($t5)); + + // assume Le($t1, aggregator::spec_get_limit($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume ($t1 <= $1_aggregator_spec_get_limit($t5)); + + // $t1 := opaque end: aggregator::read($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:43+19 + assume {:print "$at(23,7146,7165)"} true; +L0: + + // $t8 := get_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:42+28 + assume {:print "$at(23,7145,7173)"} true; + $t8 := $t0->$integer; + + // $t9 := opaque begin: option::borrow($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + + // assume Identical($t10, option::spec_is_none($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume ($t10 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t8)); + + // if ($t10) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + if ($t10) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 +L8: + + // assume And(option::spec_is_none($t8), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t8) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + goto L4; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 +L7: + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t9); + + // assume Eq($t9, option::spec_borrow($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume $IsEqual'$1_optional_aggregator_Integer'($t9, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t8)); + + // $t9 := opaque end: option::borrow($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + + // $t1 := optional_aggregator::read_integer($t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:185:13+21 + assume {:print "$at(23,7188,7209)"} true; + call $t1 := $1_optional_aggregator_read_integer($t9); + if ($abort_flag) { + assume {:print "$at(23,7188,7209)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; + assume {:print "$track_return(41,10,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:179:5+387 +procedure {:timeLimit 80} $1_optional_aggregator_read$verify(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_aggregator_Aggregator'; + var $t3: bool; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_aggregator_Aggregator; + var $t6: bool; + var $t7: int; + var $t8: $1_option_Option'$1_optional_aggregator_Integer'; + var $t9: $1_optional_aggregator_Integer; + var $t10: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:179:5+1 + assume {:print "$at(23,6838,6839)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t0) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t0->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t0->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))))) && (LenVec($t0->$aggregator->$vec) <= 1)) && (LenVec($t0->$integer->$vec) <= 1))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:179:5+1 + assume {:print "$track_local(41,10,0):", $t0} $t0 == $t0; + + // $t2 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:29+31 + assume {:print "$at(23,6932,6963)"} true; + $t2 := $t0->$aggregator; + + // $t3 := opaque begin: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'$1_aggregator_Aggregator'($t2)); + + // $t3 := opaque end: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:13+48 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:46+19 + assume {:print "$at(23,7013,7032)"} true; +L1: + + // $t4 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:45+31 + assume {:print "$at(23,7012,7043)"} true; + $t4 := $t0->$aggregator; + + // $t5 := opaque begin: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + + // assume Identical($t6, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume ($t6 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 +L6: + + // assume And(option::spec_is_none($t4), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume {:print "$at(23,6997,7044)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t5); + + // assume Eq($t5, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + assume $IsEqual'$1_aggregator_Aggregator'($t5, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t5 := opaque end: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:181:30+47 + + // $t1 := opaque begin: aggregator::read($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume {:print "$at(23,7058,7086)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume $IsValid'u128'($t1); + + // assume Eq($t1, aggregator::spec_read($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume $IsEqual'u128'($t1, $1_aggregator_spec_read($t5)); + + // assume Le($t1, aggregator::spec_get_limit($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + assume ($t1 <= $1_aggregator_spec_get_limit($t5)); + + // $t1 := opaque end: aggregator::read($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:182:13+28 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:43+19 + assume {:print "$at(23,7146,7165)"} true; +L0: + + // $t8 := get_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:42+28 + assume {:print "$at(23,7145,7173)"} true; + $t8 := $t0->$integer; + + // $t9 := opaque begin: option::borrow($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + + // assume Identical($t10, option::spec_is_none($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume ($t10 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t8)); + + // if ($t10) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + if ($t10) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 +L8: + + // assume And(option::spec_is_none($t8), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t8) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + goto L4; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 +L7: + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume {:print "$at(23,7130,7174)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t9); + + // assume Eq($t9, option::spec_borrow($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + assume $IsEqual'$1_optional_aggregator_Integer'($t9, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t8)); + + // $t9 := opaque end: option::borrow($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:184:27+44 + + // $t1 := optional_aggregator::read_integer($t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:185:13+21 + assume {:print "$at(23,7188,7209)"} true; + call $t1 := $1_optional_aggregator_read_integer($t9); + if ($abort_flag) { + assume {:print "$at(23,7188,7209)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,10):", $t7} $t7 == $t7; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:180:9+307 + assume {:print "$at(23,6912,7219)"} true; + assume {:print "$track_return(41,10,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; + assert {:msg "assert_failed(23,7224,7225): function does not abort under this condition"} + !false; + + // assert Implies(Not(optional_aggregator::$is_parallelizable($t0)), Eq($t1, select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:85:9+112 + assume {:print "$at(24,3599,3711)"} true; + assert {:msg "assert_failed(24,3599,3711): post-condition does not hold"} + (!$1_optional_aggregator_$is_parallelizable($t0) ==> $IsEqual'u128'($t1, $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value)); + + // assert Implies(optional_aggregator::$is_parallelizable($t0), Eq($t1, aggregator::spec_read(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:86:9+143 + assume {:print "$at(24,3720,3863)"} true; + assert {:msg "assert_failed(24,3720,3863): post-condition does not hold"} + ($1_optional_aggregator_$is_parallelizable($t0) ==> $IsEqual'u128'($t1, $1_aggregator_spec_read($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)))); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:86:9+143 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:187:5+1 + assume {:print "$at(23,7224,7225)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:84:5+338 + assume {:print "$at(24,3531,3869)"} true; + assert {:msg "assert_failed(24,3531,3869): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:84:5+338 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::sub [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+427 +procedure {:inline 1} $1_optional_aggregator_sub(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t2: $1_option_Option'$1_aggregator_Aggregator'; + var $t3: bool; + var $t4: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t5: $Mutation ($1_aggregator_Aggregator); + var $t6: int; + var $t7: $1_aggregator_Aggregator; + var $t8: bool; + var $t9: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t10: $Mutation ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + assume {:print "$at(23,6348,6349)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + assume {:print "$track_local(41,12,1):", $t1} $t1 == $t1; + + // $t2 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:29+31 + assume {:print "$at(23,6452,6483)"} true; + $t2 := $Dereference($t0)->$aggregator; + + // $t3 := opaque begin: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'$1_aggregator_Aggregator'($t2)); + + // $t3 := opaque end: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:54+19 + assume {:print "$at(23,6541,6560)"} true; +L1: + + // $t4 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:49+35 + assume {:print "$at(23,6536,6571)"} true; + $t4 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t5 := option::borrow_mut($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:30+55 + call $t5,$t4 := $1_option_borrow_mut'$1_aggregator_Aggregator'($t4); + if ($abort_flag) { + assume {:print "$at(23,6517,6572)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,12):", $t6} $t6 == $t6; + goto L4; + } + + // opaque begin: aggregator::sub($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + + // $t7 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t7 := $Dereference($t5); + + // assume Identical($t8, Lt(aggregator::spec_aggregator_get_val($t5), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume ($t8 == ($1_aggregator_spec_aggregator_get_val($Dereference($t5)) < $t1)); + + // if ($t8) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + if ($t8) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 +L6: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + assume {:print "$track_abort(41,12):", $t6} $t6 == $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 +L5: + + // $t5 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t5 := $UpdateMutation($t5, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t5)); + + // assume Eq(aggregator::spec_get_limit($t5), aggregator::spec_get_limit($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t5)), $1_aggregator_spec_get_limit($t7)); + + // assume Eq(Freeze(false)($t5), aggregator::spec_aggregator_set_val($t7, Sub(aggregator::spec_aggregator_get_val($t7), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t5), $1_aggregator_spec_aggregator_set_val($t7, ($1_aggregator_spec_aggregator_get_val($t7) - $t1))); + + // opaque end: aggregator::sub($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + + // write_back[Reference($t4).vec (vector)/[]]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t4 := $UpdateMutation($t4, (var $$sel0 := $Dereference($t4)->$vec; $Update'$1_option_Option'$1_aggregator_Aggregator''_vec($Dereference($t4), UpdateVec($$sel0, ReadVec($t5->p, LenVec($t4->p) + 1), $Dereference($t5))))); + + // write_back[Reference($t0).aggregator (option::Option)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t4))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:51+19 + assume {:print "$at(23,6689,6708)"} true; +L0: + + // $t9 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:46+32 + assume {:print "$at(23,6684,6716)"} true; + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t10 := option::borrow_mut($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:27+52 + call $t10,$t9 := $1_option_borrow_mut'$1_optional_aggregator_Integer'($t9); + if ($abort_flag) { + assume {:print "$at(23,6665,6717)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,12):", $t6} $t6 == $t6; + goto L4; + } + + // optional_aggregator::sub_integer($t10, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + assume {:print "$at(23,6731,6758)"} true; + call $t10 := $1_optional_aggregator_sub_integer($t10, $t1); + if ($abort_flag) { + assume {:print "$at(23,6731,6758)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,12):", $t6} $t6 == $t6; + goto L4; + } + + // write_back[Reference($t9).vec (vector)/[]]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $t9 := $UpdateMutation($t9, (var $$sel0 := $Dereference($t9)->$vec; $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec($Dereference($t9), UpdateVec($$sel0, ReadVec($t10->p, LenVec($t9->p) + 1), $Dereference($t10))))); + + // write_back[Reference($t0).integer (option::Option)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t9))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 + assume {:print "$at(23,6774,6775)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 + assume {:print "$at(23,6774,6775)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 + assume {:print "$at(23,6774,6775)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t4) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun optional_aggregator::sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+427 +procedure {:timeLimit 80} $1_optional_aggregator_sub$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: $1_option_Option'$1_aggregator_Aggregator'; + var $t4: bool; + var $t5: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t6: $Mutation ($1_aggregator_Aggregator); + var $t7: int; + var $t8: $1_aggregator_Aggregator; + var $t9: bool; + var $t10: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t11: $Mutation ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t1: int; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + assume {:print "$at(23,6348,6349)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + assume $IsValid'u128'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + $t2 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:168:5+1 + assume {:print "$track_local(41,12,1):", $t1} $t1 == $t1; + + // $t3 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:29+31 + assume {:print "$at(23,6452,6483)"} true; + $t3 := $Dereference($t0)->$aggregator; + + // $t4 := opaque begin: option::is_some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + assume $IsValid'bool'($t4); + + // assume Eq($t4, option::spec_is_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + assume $IsEqual'bool'($t4, $1_option_spec_is_some'$1_aggregator_Aggregator'($t3)); + + // $t4 := opaque end: option::is_some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:13+48 + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:54+19 + assume {:print "$at(23,6541,6560)"} true; +L1: + + // $t5 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:49+35 + assume {:print "$at(23,6536,6571)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t6 := option::borrow_mut($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:170:30+55 + call $t6,$t5 := $1_option_borrow_mut'$1_aggregator_Aggregator'($t5); + if ($abort_flag) { + assume {:print "$at(23,6517,6572)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,12):", $t7} $t7 == $t7; + goto L4; + } + + // opaque begin: aggregator::sub($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t8 := $Dereference($t6); + + // assume Identical($t9, Lt(aggregator::spec_aggregator_get_val($t6), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume ($t9 == ($1_aggregator_spec_aggregator_get_val($Dereference($t6)) < $t1)); + + // if ($t9) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + if ($t9) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 +L6: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + assume {:print "$track_abort(41,12):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 +L5: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume {:print "$at(23,6586,6620)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t6 := $UpdateMutation($t6, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t6)); + + // assume Eq(aggregator::spec_get_limit($t6), aggregator::spec_get_limit($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t6)), $1_aggregator_spec_get_limit($t8)); + + // assume Eq(Freeze(false)($t6), aggregator::spec_aggregator_set_val($t8, Sub(aggregator::spec_aggregator_get_val($t8), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t6), $1_aggregator_spec_aggregator_set_val($t8, ($1_aggregator_spec_aggregator_get_val($t8) - $t1))); + + // opaque end: aggregator::sub($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + + // write_back[Reference($t5).vec (vector)/[]]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t5 := $UpdateMutation($t5, (var $$sel0 := $Dereference($t5)->$vec; $Update'$1_option_Option'$1_aggregator_Aggregator''_vec($Dereference($t5), UpdateVec($$sel0, ReadVec($t6->p, LenVec($t5->p) + 1), $Dereference($t6))))); + + // write_back[Reference($t0).aggregator (option::Option)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t5))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:171:13+34 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:51+19 + assume {:print "$at(23,6689,6708)"} true; +L0: + + // $t10 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:46+32 + assume {:print "$at(23,6684,6716)"} true; + $t10 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t11 := option::borrow_mut($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:173:27+52 + call $t11,$t10 := $1_option_borrow_mut'$1_optional_aggregator_Integer'($t10); + if ($abort_flag) { + assume {:print "$at(23,6665,6717)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,12):", $t7} $t7 == $t7; + goto L4; + } + + // optional_aggregator::sub_integer($t11, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + assume {:print "$at(23,6731,6758)"} true; + call $t11 := $1_optional_aggregator_sub_integer($t11, $t1); + if ($abort_flag) { + assume {:print "$at(23,6731,6758)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,12):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t10).vec (vector)/[]]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $t10 := $UpdateMutation($t10, (var $$sel0 := $Dereference($t10)->$vec; $Update'$1_option_Option'$1_optional_aggregator_Integer''_vec($Dereference($t10), UpdateVec($$sel0, ReadVec($t11->p, LenVec($t10->p) + 1), $Dereference($t11))))); + + // write_back[Reference($t0).integer (option::Option)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t10))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:174:13+27 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:169:9+337 + assume {:print "$at(23,6432,6769)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,12,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 + assume {:print "$at(23,6774,6775)"} true; +L3: + + // assert Not(And(optional_aggregator::$is_parallelizable[]($t2), Lt(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:78:9+158 + assume {:print "$at(24,3227,3385)"} true; + assert {:msg "assert_failed(24,3227,3385): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t2) && ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) < $t1)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[]($t2)), Lt(select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:80:9+125 + assume {:print "$at(24,3394,3519)"} true; + assert {:msg "assert_failed(24,3394,3519): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t2) && ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value < $t1)); + + // assert Eq(optional_aggregator::optional_aggregator_value($t0), Sub(optional_aggregator::optional_aggregator_value($t2), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:72:9+122 + assume {:print "$at(24,2989,3111)"} true; + assert {:msg "assert_failed(24,2989,3111): post-condition does not hold"} + $IsEqual'u128'($1_optional_aggregator_optional_aggregator_value($Dereference($t0)), ($1_optional_aggregator_optional_aggregator_value($t2) - $t1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:72:9+122 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:176:5+1 + assume {:print "$at(23,6774,6775)"} true; +L4: + + // assert Or(And(optional_aggregator::$is_parallelizable[]($t2), Lt(aggregator::spec_aggregator_get_val[](option::$borrow[](select optional_aggregator::OptionalAggregator.aggregator($t2))), $t1)), And(Not(optional_aggregator::$is_parallelizable[]($t2)), Lt(select optional_aggregator::Integer.value(option::$borrow[](select optional_aggregator::OptionalAggregator.integer($t2))), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:70:5+235 + assume {:print "$at(24,2882,3117)"} true; + assert {:msg "assert_failed(24,2882,3117): abort not covered by any of the `aborts_if` clauses"} + (($1_optional_aggregator_$is_parallelizable($t2) && ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t2->$aggregator)) < $t1)) || (!$1_optional_aggregator_$is_parallelizable($t2) && ($1_option_$borrow'$1_optional_aggregator_Integer'($t2->$integer)->$value < $t1))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:70:5+235 + $abort_code := $t7; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun optional_aggregator::add_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+242 +procedure {:inline 1} $1_optional_aggregator_add_integer(_$t0: $Mutation ($1_optional_aggregator_Integer), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_Integer)) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation (int); + var $t0: $Mutation ($1_optional_aggregator_Integer); + var $t1: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + assume {:print "$at(23,1123,1124)"} true; + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + assume {:print "$track_local(41,1,1):", $t1} $t1 == $t1; + + // $t2 := get_field.limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:23+13 + assume {:print "$at(23,1216,1229)"} true; + $t2 := $Dereference($t0)->$limit; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:39+13 + $t3 := $Dereference($t0)->$value; + + // $t4 := -($t2, $t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:37+1 + call $t4 := $Sub($t2, $t3); + if ($abort_flag) { + assume {:print "$at(23,1230,1231)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,1):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := <=($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:19+2 + call $t6 := $Le($t1, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:37:33+20 + assume {:print "$at(23,1280,1300)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::out_of_range($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:37:13+41 + call $t8 := $1_error_out_of_range($t7); + if ($abort_flag) { + assume {:print "$at(23,1260,1301)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,1):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + assume {:print "$track_abort(41,1):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:25+7 + assume {:print "$at(23,1337,1344)"} true; +L2: + + // $t9 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:25+13 + assume {:print "$at(23,1337,1350)"} true; + $t9 := $Dereference($t0)->$value; + + // $t10 := +($t9, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:39+1 + call $t10 := $AddU128($t9, $t1); + if ($abort_flag) { + assume {:print "$at(23,1351,1352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,1):", $t5} $t5 == $t5; + goto L4; + } + + // $t11 := borrow_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+13 + $t11 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t11, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $t11 := $UpdateMutation($t11, $t10); + + // write_back[Reference($t0).value (u128)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_Integer'_value($Dereference($t0), $Dereference($t11))); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:46+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 + assume {:print "$at(23,1364,1365)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 + assume {:print "$at(23,1364,1365)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 + assume {:print "$at(23,1364,1365)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::add_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+242 +procedure {:timeLimit 80} $1_optional_aggregator_add_integer$verify(_$t0: $Mutation ($1_optional_aggregator_Integer), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_Integer)) +{ + // declare local variables + var $t2: $1_optional_aggregator_Integer; + 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: $Mutation (int); + var $t0: $Mutation ($1_optional_aggregator_Integer); + var $t1: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + assume {:print "$at(23,1123,1124)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + assume $IsValid'u128'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + $t2 := $Dereference($t0); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:34:5+1 + assume {:print "$track_local(41,1,1):", $t1} $t1 == $t1; + + // $t3 := get_field.limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:23+13 + assume {:print "$at(23,1216,1229)"} true; + $t3 := $Dereference($t0)->$limit; + + // $t4 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:39+13 + $t4 := $Dereference($t0)->$value; + + // $t5 := -($t3, $t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:37+1 + call $t5 := $Sub($t3, $t4); + if ($abort_flag) { + assume {:print "$at(23,1230,1231)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,1):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := <=($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:36:19+2 + call $t7 := $Le($t1, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:37:33+20 + assume {:print "$at(23,1280,1300)"} true; + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:37:13+41 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(23,1260,1301)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,1):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + assume {:print "$at(23,1185,1311)"} true; + assume {:print "$track_abort(41,1):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + $t6 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:35:9+126 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:25+7 + assume {:print "$at(23,1337,1344)"} true; +L2: + + // $t10 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:25+13 + assume {:print "$at(23,1337,1350)"} true; + $t10 := $Dereference($t0)->$value; + + // $t11 := +($t10, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:39+1 + call $t11 := $AddU128($t10, $t1); + if ($abort_flag) { + assume {:print "$at(23,1351,1352)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,1):", $t6} $t6 == $t6; + goto L4; + } + + // $t12 := borrow_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+13 + $t12 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $t12 := $UpdateMutation($t12, $t11); + + // write_back[Reference($t0).value (u128)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_Integer'_value($Dereference($t0), $Dereference($t12))); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:9+37 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:39:46+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,1,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 + assume {:print "$at(23,1364,1365)"} true; +L3: + + // assert Not(Gt($t1, Sub(select optional_aggregator::Integer.limit($t2), select optional_aggregator::Integer.value($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:49:9+50 + assume {:print "$at(24,2396,2446)"} true; + assert {:msg "assert_failed(24,2396,2446): function does not abort under this condition"} + !($t1 > ($t2->$limit - $t2->$value)); + + // assert Not(Gt(Add(select optional_aggregator::Integer.value($t2), $t1), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:50:9+43 + assume {:print "$at(24,2455,2498)"} true; + assert {:msg "assert_failed(24,2455,2498): function does not abort under this condition"} + !(($t2->$value + $t1) > 340282366920938463463374607431768211455); + + // assert Le(select optional_aggregator::Integer.value($t0), select optional_aggregator::Integer.limit($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:51:9+39 + assume {:print "$at(24,2507,2546)"} true; + assert {:msg "assert_failed(24,2507,2546): post-condition does not hold"} + ($Dereference($t0)->$value <= $Dereference($t0)->$limit); + + // assert Eq(select optional_aggregator::Integer.value($t0), Add(select optional_aggregator::Integer.value($t2), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:52:9+52 + assume {:print "$at(24,2555,2607)"} true; + assert {:msg "assert_failed(24,2555,2607): post-condition does not hold"} + $IsEqual'u128'($Dereference($t0)->$value, ($t2->$value + $t1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:52:9+52 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:40:5+1 + assume {:print "$at(23,1364,1365)"} true; +L4: + + // assert Or(Gt($t1, Sub(select optional_aggregator::Integer.limit($t2), select optional_aggregator::Integer.value($t2))), Gt(Add(select optional_aggregator::Integer.value($t2), $t1), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:48:5+280 + assume {:print "$at(24,2333,2613)"} true; + assert {:msg "assert_failed(24,2333,2613): abort not covered by any of the `aborts_if` clauses"} + (($t1 > ($t2->$limit - $t2->$value)) || (($t2->$value + $t1) > 340282366920938463463374607431768211455)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:48:5+280 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::destroy_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:59:5+99 +procedure {:inline 1} $1_optional_aggregator_destroy_integer(_$t0: $1_optional_aggregator_Integer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:59:5+1 + assume {:print "$at(23,1906,1907)"} true; + assume {:print "$track_local(41,3,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack optional_aggregator::Integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:13+30 + assume {:print "$at(23,1958,1988)"} true; + $t1 := $t0->$value; + $t2 := $t0->$limit; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:40+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:30+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:61:5+1 + assume {:print "$at(23,2004,2005)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:61:5+1 + assume {:print "$at(23,2004,2005)"} true; + return; + +} + +// fun optional_aggregator::destroy_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:59:5+99 +procedure {:timeLimit 80} $1_optional_aggregator_destroy_integer$verify(_$t0: $1_optional_aggregator_Integer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:59:5+1 + assume {:print "$at(23,1906,1907)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t0); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:59:5+1 + assume {:print "$track_local(41,3,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack optional_aggregator::Integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:13+30 + assume {:print "$at(23,1958,1988)"} true; + $t1 := $t0->$value; + $t2 := $t0->$limit; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:40+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:60:30+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:61:5+1 + assume {:print "$at(23,2004,2005)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:67:9+16 + assume {:print "$at(24,2854,2870)"} true; + assert {:msg "assert_failed(24,2854,2870): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:67:9+16 + return; + +} + +// fun optional_aggregator::destroy_optional_aggregator [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:139:5+348 +procedure {:inline 1} $1_optional_aggregator_destroy_optional_aggregator(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: $1_option_Option'$1_optional_aggregator_Integer'; + var $t3: int; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_option_Option'$1_optional_aggregator_Integer'; + var $t6: $1_aggregator_Aggregator; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_aggregator_Aggregator; + var $t11: bool; + var $t12: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:139:5+1 + assume {:print "$at(23,4988,4989)"} true; + assume {:print "$track_local(41,4,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := unpack optional_aggregator::OptionalAggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:13+42 + assume {:print "$at(23,5081,5123)"} true; + $t4 := $t0->$aggregator; + $t5 := $t0->$integer; + + // trace_local[integer]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:46+7 + assume {:print "$track_local(41,4,2):", $t5} $t5 == $t5; + + // trace_local[aggregator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:34+10 + assume {:print "$track_local(41,4,1):", $t4} $t4 == $t4; + + // $t6 := opaque begin: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + + // assume Identical($t7, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume ($t7 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 +L4: + + // assume And(option::spec_is_none($t4), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t6); + + // assume Eq($t6, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume $IsEqual'$1_aggregator_Aggregator'($t6, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t6 := opaque end: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + + // $t9 := opaque begin: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + assume $IsValid'u128'($t9); + + // assume Eq($t9, aggregator::spec_get_limit($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + assume $IsEqual'u128'($t9, $1_aggregator_spec_get_limit($t6)); + + // $t9 := opaque end: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + + // trace_local[limit]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:13+5 + assume {:print "$track_local(41,4,3):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::destroy_some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + + // assume Identical($t11, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume ($t11 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 +L6: + + // assume And(option::spec_is_none($t4), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 +L5: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t10); + + // assume Eq($t10, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume $IsEqual'$1_aggregator_Aggregator'($t10, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t10 := opaque end: option::destroy_some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + + // opaque begin: aggregator::destroy($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:9+53 + + // opaque end: aggregator::destroy($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:9+53 + + // opaque begin: option::destroy_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + + // assume Identical($t12, option::spec_is_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume ($t12 == $1_option_spec_is_some'$1_optional_aggregator_Integer'($t5)); + + // if ($t12) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + if ($t12) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 +L8: + + // assume And(option::spec_is_some($t5), Eq(262144, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + assume ($1_option_spec_is_some'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262144, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + goto L2; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 +L7: + + // opaque end: option::destroy_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:144:9+5 + assume {:print "$at(23,5325,5330)"} true; + assume {:print "$track_return(41,4,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 + assume {:print "$at(23,5335,5336)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 + assume {:print "$at(23,5335,5336)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 + assume {:print "$at(23,5335,5336)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::destroy_optional_aggregator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:139:5+348 +procedure {:timeLimit 80} $1_optional_aggregator_destroy_optional_aggregator$verify(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: $1_option_Option'$1_optional_aggregator_Integer'; + var $t3: int; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_option_Option'$1_optional_aggregator_Integer'; + var $t6: $1_aggregator_Aggregator; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_aggregator_Aggregator; + var $t11: bool; + var $t12: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:139:5+1 + assume {:print "$at(23,4988,4989)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t0) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t0->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t0->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))))) && (LenVec($t0->$aggregator->$vec) <= 1)) && (LenVec($t0->$integer->$vec) <= 1))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:139:5+1 + assume {:print "$track_local(41,4,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := unpack optional_aggregator::OptionalAggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:13+42 + assume {:print "$at(23,5081,5123)"} true; + $t4 := $t0->$aggregator; + $t5 := $t0->$integer; + + // trace_local[integer]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:46+7 + assume {:print "$track_local(41,4,2):", $t5} $t5 == $t5; + + // trace_local[aggregator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:140:34+10 + assume {:print "$track_local(41,4,1):", $t4} $t4 == $t4; + + // $t6 := opaque begin: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + + // assume Identical($t7, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume ($t7 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 +L4: + + // assume And(option::spec_is_none($t4), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume {:print "$at(23,5185,5212)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t6); + + // assume Eq($t6, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + assume $IsEqual'$1_aggregator_Aggregator'($t6, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t6 := opaque end: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:39+27 + + // $t9 := opaque begin: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + assume $IsValid'u128'($t9); + + // assume Eq($t9, aggregator::spec_get_limit($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + assume $IsEqual'u128'($t9, $1_aggregator_spec_get_limit($t6)); + + // $t9 := opaque end: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:21+46 + + // trace_local[limit]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:141:13+5 + assume {:print "$track_local(41,4,3):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::destroy_some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + + // assume Identical($t11, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume ($t11 == $1_option_spec_is_none'$1_aggregator_Aggregator'($t4)); + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 +L6: + + // assume And(option::spec_is_none($t4), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 +L5: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume {:print "$at(23,5243,5275)"} true; + assume $IsValid'$1_aggregator_Aggregator'($t10); + + // assume Eq($t10, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + assume $IsEqual'$1_aggregator_Aggregator'($t10, $1_option_spec_borrow'$1_aggregator_Aggregator'($t4)); + + // $t10 := opaque end: option::destroy_some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:29+32 + + // opaque begin: aggregator::destroy($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:9+53 + + // opaque end: aggregator::destroy($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:142:9+53 + + // opaque begin: option::destroy_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + + // assume Identical($t12, option::spec_is_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume ($t12 == $1_option_spec_is_some'$1_optional_aggregator_Integer'($t5)); + + // if ($t12) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + if ($t12) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 +L8: + + // assume And(option::spec_is_some($t5), Eq(262144, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + assume ($1_option_spec_is_some'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262144, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + assume {:print "$track_abort(41,4):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + goto L2; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 +L7: + + // opaque end: option::destroy_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:143:9+29 + assume {:print "$at(23,5286,5315)"} true; + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:144:9+5 + assume {:print "$at(23,5325,5330)"} true; + assume {:print "$track_return(41,4,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 + assume {:print "$at(23,5335,5336)"} true; +L1: + + // assert Not(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:176:9+55 + assume {:print "$at(24,9105,9160)"} true; + assert {:msg "assert_failed(24,9105,9160): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0->$aggregator->$vec), 0); + + // assert Not(Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:177:9+52 + assume {:print "$at(24,9169,9221)"} true; + assert {:msg "assert_failed(24,9169,9221): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0->$integer->$vec), 0); + + // assert Eq($t9, aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:178:9+93 + assume {:print "$at(24,9230,9323)"} true; + assert {:msg "assert_failed(24,9230,9323): post-condition does not hold"} + $IsEqual'u128'($t9, $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))); + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:178:9+93 + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:145:5+1 + assume {:print "$at(23,5335,5336)"} true; +L2: + + // assert Or(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t0))), 0), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:175:5+314 + assume {:print "$at(24,9015,9329)"} true; + assert {:msg "assert_failed(24,9015,9329): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'num'(LenVec($t0->$aggregator->$vec), 0) || !$IsEqual'num'(LenVec($t0->$integer->$vec), 0)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:175:5+314 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::destroy_optional_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:148:5+326 +procedure {:inline 1} $1_optional_aggregator_destroy_optional_integer(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: $1_option_Option'$1_optional_aggregator_Integer'; + var $t3: int; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_option_Option'$1_optional_aggregator_Integer'; + var $t6: $1_optional_aggregator_Integer; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_optional_aggregator_Integer; + var $t11: bool; + var $t12: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:148:5+1 + assume {:print "$at(23,5421,5422)"} true; + assume {:print "$track_local(41,5,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := unpack optional_aggregator::OptionalAggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:13+42 + assume {:print "$at(23,5511,5553)"} true; + $t4 := $t0->$aggregator; + $t5 := $t0->$integer; + + // trace_local[integer]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:46+7 + assume {:print "$track_local(41,5,2):", $t5} $t5 == $t5; + + // trace_local[aggregator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:34+10 + assume {:print "$track_local(41,5,1):", $t4} $t4 == $t4; + + // $t6 := opaque begin: option::borrow($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + + // assume Identical($t7, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume ($t7 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t5)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 +L4: + + // assume And(option::spec_is_none($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t6); + + // assume Eq($t6, option::spec_borrow($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume $IsEqual'$1_optional_aggregator_Integer'($t6, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t5)); + + // $t6 := opaque end: option::borrow($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + + // $t9 := optional_aggregator::limit($t6) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:21+31 + call $t9 := $1_optional_aggregator_limit($t6); + if ($abort_flag) { + assume {:print "$at(23,5597,5628)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[limit]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:13+5 + assume {:print "$track_local(41,5,3):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::destroy_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + + // assume Identical($t11, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume ($t11 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t5)); + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 +L6: + + // assume And(option::spec_is_none($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 +L5: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t10); + + // assume Eq($t10, option::spec_borrow($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume $IsEqual'$1_optional_aggregator_Integer'($t10, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t5)); + + // $t10 := opaque end: option::destroy_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + + // optional_aggregator::destroy_integer($t10) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:9+46 + call $1_optional_aggregator_destroy_integer($t10); + if ($abort_flag) { + assume {:print "$at(23,5638,5684)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + goto L2; + } + + // opaque begin: option::destroy_none($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + + // assume Identical($t12, option::spec_is_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume ($t12 == $1_option_spec_is_some'$1_aggregator_Aggregator'($t4)); + + // if ($t12) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + if ($t12) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 +L8: + + // assume And(option::spec_is_some($t4), Eq(262144, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + assume ($1_option_spec_is_some'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262144, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + goto L2; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 +L7: + + // opaque end: option::destroy_none($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:153:9+5 + assume {:print "$at(23,5736,5741)"} true; + assume {:print "$track_return(41,5,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 + assume {:print "$at(23,5746,5747)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 + assume {:print "$at(23,5746,5747)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 + assume {:print "$at(23,5746,5747)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::destroy_optional_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:148:5+326 +procedure {:timeLimit 80} $1_optional_aggregator_destroy_optional_integer$verify(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: $1_option_Option'$1_optional_aggregator_Integer'; + var $t3: int; + var $t4: $1_option_Option'$1_aggregator_Aggregator'; + var $t5: $1_option_Option'$1_optional_aggregator_Integer'; + var $t6: $1_optional_aggregator_Integer; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_optional_aggregator_Integer; + var $t11: bool; + var $t12: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:148:5+1 + assume {:print "$at(23,5421,5422)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t0) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t0->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t0->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))))) && (LenVec($t0->$aggregator->$vec) <= 1)) && (LenVec($t0->$integer->$vec) <= 1))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:148:5+1 + assume {:print "$track_local(41,5,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := unpack optional_aggregator::OptionalAggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:13+42 + assume {:print "$at(23,5511,5553)"} true; + $t4 := $t0->$aggregator; + $t5 := $t0->$integer; + + // trace_local[integer]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:46+7 + assume {:print "$track_local(41,5,2):", $t5} $t5 == $t5; + + // trace_local[aggregator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:149:34+10 + assume {:print "$track_local(41,5,1):", $t4} $t4 == $t4; + + // $t6 := opaque begin: option::borrow($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + + // assume Identical($t7, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume ($t7 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t5)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 +L4: + + // assume And(option::spec_is_none($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume {:print "$at(23,5603,5627)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t6); + + // assume Eq($t6, option::spec_borrow($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + assume $IsEqual'$1_optional_aggregator_Integer'($t6, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t5)); + + // $t6 := opaque end: option::borrow($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:27+24 + + // $t9 := optional_aggregator::limit($t6) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:21+31 + call $t9 := $1_optional_aggregator_limit($t6); + if ($abort_flag) { + assume {:print "$at(23,5597,5628)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[limit]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:150:13+5 + assume {:print "$track_local(41,5,3):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::destroy_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + + // assume Identical($t11, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume ($t11 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($t5)); + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 +L6: + + // assume And(option::spec_is_none($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 +L5: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume {:print "$at(23,5654,5683)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t10); + + // assume Eq($t10, option::spec_borrow($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + assume $IsEqual'$1_optional_aggregator_Integer'($t10, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t5)); + + // $t10 := opaque end: option::destroy_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:25+29 + + // optional_aggregator::destroy_integer($t10) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:151:9+46 + call $1_optional_aggregator_destroy_integer($t10); + if ($abort_flag) { + assume {:print "$at(23,5638,5684)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + goto L2; + } + + // opaque begin: option::destroy_none($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + + // assume Identical($t12, option::spec_is_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume ($t12 == $1_option_spec_is_some'$1_aggregator_Aggregator'($t4)); + + // if ($t12) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + if ($t12) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 +L8: + + // assume And(option::spec_is_some($t4), Eq(262144, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + assume ($1_option_spec_is_some'$1_aggregator_Aggregator'($t4) && $IsEqual'num'(262144, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + assume {:print "$track_abort(41,5):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + goto L2; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 +L7: + + // opaque end: option::destroy_none($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:152:9+32 + assume {:print "$at(23,5694,5726)"} true; + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:153:9+5 + assume {:print "$at(23,5736,5741)"} true; + assume {:print "$track_return(41,5,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 + assume {:print "$at(23,5746,5747)"} true; +L1: + + // assert Not(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:183:9+52 + assume {:print "$at(24,9509,9561)"} true; + assert {:msg "assert_failed(24,9509,9561): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0->$integer->$vec), 0); + + // assert Not(Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:184:9+55 + assume {:print "$at(24,9570,9625)"} true; + assert {:msg "assert_failed(24,9570,9625): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0->$aggregator->$vec), 0); + + // assert Eq($t9, select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:185:9+68 + assume {:print "$at(24,9634,9702)"} true; + assert {:msg "assert_failed(24,9634,9702): post-condition does not hold"} + $IsEqual'u128'($t9, $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit); + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:185:9+68 + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:154:5+1 + assume {:print "$at(23,5746,5747)"} true; +L2: + + // assert Or(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))), 0), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t0))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:182:5+286 + assume {:print "$at(24,9422,9708)"} true; + assert {:msg "assert_failed(24,9422,9708): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'num'(LenVec($t0->$integer->$vec), 0) || !$IsEqual'num'(LenVec($t0->$aggregator->$vec), 0)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:182:5+286 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::is_parallelizable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+141 +procedure {:inline 1} $1_optional_aggregator_is_parallelizable(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+1 + assume {:print "$at(23,7311,7312)"} true; + assume {:print "$track_local(41,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:25+31 + assume {:print "$at(23,7414,7445)"} true; + $t1 := $t0->$aggregator; + + // $t2 := opaque begin: option::is_some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_aggregator_Aggregator'($t1)); + + // $t2 := opaque end: option::is_some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume {:print "$track_return(41,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:192:5+1 + assume {:print "$at(23,7451,7452)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:192:5+1 + assume {:print "$at(23,7451,7452)"} true; + $ret0 := $t2; + return; + +} + +// fun optional_aggregator::is_parallelizable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+141 +procedure {:timeLimit 80} $1_optional_aggregator_is_parallelizable$verify(_$t0: $1_optional_aggregator_OptionalAggregator) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_option_Option'$1_aggregator_Aggregator'; + var $t2: bool; + var $t0: $1_optional_aggregator_OptionalAggregator; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+1 + assume {:print "$at(23,7311,7312)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t0) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t0->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t0->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t0->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t0->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t0->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t0->$aggregator))))) && (LenVec($t0->$aggregator->$vec) <= 1)) && (LenVec($t0->$integer->$vec) <= 1))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:190:5+1 + assume {:print "$track_local(41,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:25+31 + assume {:print "$at(23,7414,7445)"} true; + $t1 := $t0->$aggregator; + + // $t2 := opaque begin: option::is_some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_aggregator_Aggregator'($t1)); + + // $t2 := opaque end: option::is_some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:191:9+48 + assume {:print "$track_return(41,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:192:5+1 + assume {:print "$at(23,7451,7452)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:192:5+1 + assume {:print "$at(23,7451,7452)"} true; + assert {:msg "assert_failed(23,7451,7452): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:192:5+1 + $ret0 := $t2; + return; + +} + +// fun optional_aggregator::new_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:26:5+114 +procedure {:inline 1} $1_optional_aggregator_new_integer(_$t0: int) returns ($ret0: $1_optional_aggregator_Integer) +{ + // declare local variables + var $t1: int; + var $t2: $1_optional_aggregator_Integer; + var $t0: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:26:5+1 + assume {:print "$at(23,937,938)"} true; + assume {:print "$track_local(41,9,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:28:20+1 + assume {:print "$at(23,1014,1015)"} true; + $t1 := 0; + assume $IsValid'u128'($t1); + + // $t2 := pack optional_aggregator::Integer($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:27:9+60 + assume {:print "$at(23,985,1045)"} true; + $t2 := $1_optional_aggregator_Integer($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:27:9+60 + assume {:print "$track_return(41,9,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:31:5+1 + assume {:print "$at(23,1050,1051)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:31:5+1 + assume {:print "$at(23,1050,1051)"} true; + $ret0 := $t2; + return; + +} + +// fun optional_aggregator::new_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:26:5+114 +procedure {:timeLimit 80} $1_optional_aggregator_new_integer$verify(_$t0: int) returns ($ret0: $1_optional_aggregator_Integer) +{ + // declare local variables + var $t1: int; + var $t2: $1_optional_aggregator_Integer; + var $t0: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:26:5+1 + assume {:print "$at(23,937,938)"} true; + assume $IsValid'u128'($t0); + + // trace_local[limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:26:5+1 + assume {:print "$track_local(41,9,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:28:20+1 + assume {:print "$at(23,1014,1015)"} true; + $t1 := 0; + assume $IsValid'u128'($t1); + + // $t2 := pack optional_aggregator::Integer($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:27:9+60 + assume {:print "$at(23,985,1045)"} true; + $t2 := $1_optional_aggregator_Integer($t1, $t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:27:9+60 + assume {:print "$track_return(41,9,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:31:5+1 + assume {:print "$at(23,1050,1051)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:41:9+16 + assume {:print "$at(24,2172,2188)"} true; + assert {:msg "assert_failed(24,2172,2188): function does not abort under this condition"} + !false; + + // assert Eq(select optional_aggregator::Integer.limit($t2), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:42:9+30 + assume {:print "$at(24,2197,2227)"} true; + assert {:msg "assert_failed(24,2197,2227): post-condition does not hold"} + $IsEqual'u128'($t2->$limit, $t0); + + // assert Eq(select optional_aggregator::Integer.value($t2), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:44:9+26 + assume {:print "$at(24,2267,2293)"} true; + assert {:msg "assert_failed(24,2267,2293): post-condition does not hold"} + $IsEqual'u128'($t2->$value, 0); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:44:9+26 + $ret0 := $t2; + return; + +} + +// fun optional_aggregator::read_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:54:5+71 +procedure {:inline 1} $1_optional_aggregator_read_integer(_$t0: $1_optional_aggregator_Integer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:54:5+1 + assume {:print "$at(23,1800,1801)"} true; + assume {:print "$track_local(41,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:55:9+13 + assume {:print "$at(23,1852,1865)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:55:9+13 + assume {:print "$track_return(41,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:56:5+1 + assume {:print "$at(23,1870,1871)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:56:5+1 + assume {:print "$at(23,1870,1871)"} true; + $ret0 := $t1; + return; + +} + +// fun optional_aggregator::read_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:54:5+71 +procedure {:timeLimit 80} $1_optional_aggregator_read_integer$verify(_$t0: $1_optional_aggregator_Integer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:54:5+1 + assume {:print "$at(23,1800,1801)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($t0); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:54:5+1 + assume {:print "$track_local(41,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:55:9+13 + assume {:print "$at(23,1852,1865)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:55:9+13 + assume {:print "$track_return(41,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:56:5+1 + assume {:print "$at(23,1870,1871)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:62:9+16 + assume {:print "$at(24,2762,2778)"} true; + assert {:msg "assert_failed(24,2762,2778): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:62:9+16 + $ret0 := $t1; + return; + +} + +// fun optional_aggregator::sub_integer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+191 +procedure {:inline 1} $1_optional_aggregator_sub_integer(_$t0: $Mutation ($1_optional_aggregator_Integer), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_Integer)) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation (int); + var $t0: $Mutation ($1_optional_aggregator_Integer); + var $t1: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + assume {:print "$at(23,1439,1440)"} true; + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + assume {:print "$track_local(41,13,1):", $t1} $t1 == $t1; + + // $t2 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:26+13 + assume {:print "$at(23,1518,1531)"} true; + $t2 := $Dereference($t0)->$value; + + // $t3 := <=($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:23+2 + call $t3 := $Le($t1, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + + // $t4 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:61+21 + $t4 := 2; + assume $IsValid'u64'($t4); + + // $t5 := error::out_of_range($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:41+42 + call $t5 := $1_error_out_of_range($t4); + if ($abort_flag) { + assume {:print "$at(23,1533,1575)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + assume {:print "$track_abort(41,13):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:25+7 + assume {:print "$at(23,1602,1609)"} true; +L2: + + // $t7 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:25+13 + assume {:print "$at(23,1602,1615)"} true; + $t7 := $Dereference($t0)->$value; + + // $t8 := -($t7, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:39+1 + call $t8 := $Sub($t7, $t1); + if ($abort_flag) { + assume {:print "$at(23,1616,1617)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,13):", $t6} $t6 == $t6; + goto L4; + } + + // $t9 := borrow_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+13 + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).value (u128)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_Integer'_value($Dereference($t0), $Dereference($t9))); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:46+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 + assume {:print "$at(23,1629,1630)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 + assume {:print "$at(23,1629,1630)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 + assume {:print "$at(23,1629,1630)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::sub_integer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+191 +procedure {:timeLimit 80} $1_optional_aggregator_sub_integer$verify(_$t0: $Mutation ($1_optional_aggregator_Integer), _$t1: int) returns ($ret0: $Mutation ($1_optional_aggregator_Integer)) +{ + // declare local variables + var $t2: $1_optional_aggregator_Integer; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation (int); + var $t0: $Mutation ($1_optional_aggregator_Integer); + var $t1: int; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + assume {:print "$at(23,1439,1440)"} true; + assume $IsValid'$1_optional_aggregator_Integer'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + assume $IsValid'u128'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + $t2 := $Dereference($t0); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:43:5+1 + assume {:print "$track_local(41,13,1):", $t1} $t1 == $t1; + + // $t3 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:26+13 + assume {:print "$at(23,1518,1531)"} true; + $t3 := $Dereference($t0)->$value; + + // $t4 := <=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:23+2 + call $t4 := $Le($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:61+21 + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:41+42 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(23,1533,1575)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,13):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + assume {:print "$at(23,1501,1576)"} true; + assume {:print "$track_abort(41,13):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + $t7 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:44:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:25+7 + assume {:print "$at(23,1602,1609)"} true; +L2: + + // $t8 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:25+13 + assume {:print "$at(23,1602,1615)"} true; + $t8 := $Dereference($t0)->$value; + + // $t9 := -($t8, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:39+1 + call $t9 := $Sub($t8, $t1); + if ($abort_flag) { + assume {:print "$at(23,1616,1617)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(41,13):", $t7} $t7 == $t7; + goto L4; + } + + // $t10 := borrow_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+13 + $t10 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t10, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $t10 := $UpdateMutation($t10, $t9); + + // write_back[Reference($t0).value (u128)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_Integer'_value($Dereference($t0), $Dereference($t10))); + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:9+37 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // trace_local[integer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:45:46+1 + $temp_0'$1_optional_aggregator_Integer' := $Dereference($t0); + assume {:print "$track_local(41,13,0):", $temp_0'$1_optional_aggregator_Integer'} $temp_0'$1_optional_aggregator_Integer' == $temp_0'$1_optional_aggregator_Integer'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 + assume {:print "$at(23,1629,1630)"} true; +L3: + + // assert Not(Gt($t1, select optional_aggregator::Integer.value($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:117:9+32 + assume {:print "$at(24,5575,5607)"} true; + assert {:msg "assert_failed(24,5575,5607): function does not abort under this condition"} + !($t1 > $t2->$value); + + // assert Eq(select optional_aggregator::Integer.value($t0), Sub(select optional_aggregator::Integer.value($t2), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:118:9+52 + assume {:print "$at(24,5616,5668)"} true; + assert {:msg "assert_failed(24,5616,5668): post-condition does not hold"} + $IsEqual'u128'($Dereference($t0)->$value, ($t2->$value - $t1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:118:9+52 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:46:5+1 + assume {:print "$at(23,1629,1630)"} true; +L4: + + // assert Gt($t1, select optional_aggregator::Integer.value($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:116:5+162 + assume {:print "$at(24,5512,5674)"} true; + assert {:msg "assert_failed(24,5512,5674): abort not covered by any of the `aborts_if` clauses"} + ($t1 > $t2->$value); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:116:5+162 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::switch [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+209 +procedure {:inline 1} $1_optional_aggregator_switch(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: int; + var $t2: Vec ($1_optional_aggregator_Integer); + var $t3: $1_optional_aggregator_OptionalAggregator; + var $t4: int; + var $t5: int; + var $t6: Vec ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:109:9+46 + assume {:print "$at(24,5046,5092)"} true; + assume ($t2 == $Dereference($t0)->$integer->$vec); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + assume {:print "$at(23,2884,2885)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,14,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:26+19 + assume {:print "$at(23,2975,2994)"} true; + $t3 := $Dereference($t0); + + // $t4 := optional_aggregator::read($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:21+25 + call $t4 := $1_optional_aggregator_read($t3); + if ($abort_flag) { + assume {:print "$at(23,2970,2995)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,14):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[value]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:13+5 + assume {:print "$track_local(41,14,1):", $t4} $t4 == $t4; + + // assume Identical($t6, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:133:9+46 + assume {:print "$at(24,6458,6504)"} true; + assume ($t6 == $Dereference($t0)->$integer->$vec); + + // optional_aggregator::switch_and_zero_out($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:89:9+40 + assume {:print "$at(23,3005,3045)"} true; + call $t0 := $1_optional_aggregator_switch_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3005,3045)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,14):", $t5} $t5 == $t5; + goto L2; + } + + // optional_aggregator::add($t0, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:90:9+31 + assume {:print "$at(23,3055,3086)"} true; + call $t0 := $1_optional_aggregator_add($t0, $t4); + if ($abort_flag) { + assume {:print "$at(23,3055,3086)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,14):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:90:40+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,14,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:90:40+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 + assume {:print "$at(23,3092,3093)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 + assume {:print "$at(23,3092,3093)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 + assume {:print "$at(23,3092,3093)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::switch [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+209 +procedure {:timeLimit 80} $1_optional_aggregator_switch$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: int; + var $t2: Vec ($1_optional_aggregator_Integer); + var $t3: $1_optional_aggregator_OptionalAggregator; + var $t4: $1_optional_aggregator_OptionalAggregator; + var $t5: int; + var $t6: int; + var $t7: Vec ($1_optional_aggregator_Integer); + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + var $1_aggregator_factory_AggregatorFactory_$memory#142: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + assume {:print "$at(23,2884,2885)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume Identical($t2, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:109:9+46 + assume {:print "$at(24,5046,5092)"} true; + assume ($t2 == $Dereference($t0)->$integer->$vec); + + // @142 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + assume {:print "$at(23,2884,2885)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#142 := $1_aggregator_factory_AggregatorFactory_$memory; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + $t3 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:87:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,14,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:26+19 + assume {:print "$at(23,2975,2994)"} true; + $t4 := $Dereference($t0); + + // $t5 := optional_aggregator::read($t4) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:21+25 + call $t5 := $1_optional_aggregator_read($t4); + if ($abort_flag) { + assume {:print "$at(23,2970,2995)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,14):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[value]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:88:13+5 + assume {:print "$track_local(41,14,1):", $t5} $t5 == $t5; + + // assume Identical($t7, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:133:9+46 + assume {:print "$at(24,6458,6504)"} true; + assume ($t7 == $Dereference($t0)->$integer->$vec); + + // optional_aggregator::switch_and_zero_out($t0) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:89:9+40 + assume {:print "$at(23,3005,3045)"} true; + call $t0 := $1_optional_aggregator_switch_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3005,3045)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,14):", $t6} $t6 == $t6; + goto L2; + } + + // optional_aggregator::add($t0, $t5) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:90:9+31 + assume {:print "$at(23,3055,3086)"} true; + call $t0 := $1_optional_aggregator_add($t0, $t5); + if ($abort_flag) { + assume {:print "$at(23,3055,3086)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(41,14):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:90:40+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,14,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 + assume {:print "$at(23,3092,3093)"} true; +L1: + + // assert Not(And(optional_aggregator::$is_parallelizable[](Freeze(false)($t3)), Neq(Len($t2), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:110:9+70 + assume {:print "$at(24,5101,5171)"} true; + assert {:msg "assert_failed(24,5101,5171): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t3) && !$IsEqual'num'(LenVec($t2), 0)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t3))), Eq(Len($t2), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:111:9+71 + assume {:print "$at(24,5180,5251)"} true; + assert {:msg "assert_failed(24,5180,5251): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t3) && $IsEqual'num'(LenVec($t2), 0)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t3))), Not(exists[@142](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:112:9+121 + assume {:print "$at(24,5260,5381)"} true; + assert {:msg "assert_failed(24,5260,5381): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t3) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#142, 1)); + + // assert Eq(optional_aggregator::optional_aggregator_value($t0), optional_aggregator::optional_aggregator_value($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:113:9+110 + assume {:print "$at(24,5390,5500)"} true; + assert {:msg "assert_failed(24,5390,5500): post-condition does not hold"} + $IsEqual'u128'($1_optional_aggregator_optional_aggregator_value($Dereference($t0)), $1_optional_aggregator_optional_aggregator_value($t3)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:113:9+110 + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:91:5+1 + assume {:print "$at(23,3092,3093)"} true; +L2: + + // assert Or(Or(And(optional_aggregator::$is_parallelizable[](Freeze(false)($t3)), Neq(Len($t2), 0)), And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t3))), Eq(Len($t2), 0))), And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t3))), Not(exists[@142](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:108:5+528 + assume {:print "$at(24,4978,5506)"} true; + assert {:msg "assert_failed(24,4978,5506): abort not covered by any of the `aborts_if` clauses"} + ((($1_optional_aggregator_$is_parallelizable($t3) && !$IsEqual'num'(LenVec($t2), 0)) || (!$1_optional_aggregator_$is_parallelizable($t3) && $IsEqual'num'(LenVec($t2), 0))) || (!$1_optional_aggregator_$is_parallelizable($t3) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#142, 1))); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:108:5+528 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::switch_and_zero_out [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+291 +procedure {:inline 1} $1_optional_aggregator_switch_and_zero_out(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: Vec ($1_optional_aggregator_Integer); + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:133:9+46 + assume {:print "$at(24,6458,6504)"} true; + assume ($t1 == $Dereference($t0)->$integer->$vec); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + assume {:print "$at(23,3245,3246)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,15,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:31+19 + assume {:print "$at(23,3347,3366)"} true; + $t2 := $Dereference($t0); + + // $t3 := optional_aggregator::is_parallelizable($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:13+38 + call $t3 := $1_optional_aggregator_is_parallelizable($t2); + if ($abort_flag) { + assume {:print "$at(23,3329,3367)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,15):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:44+19 + assume {:print "$at(23,3414,3433)"} true; +L1: + + // assume Identical($t5, aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:147:9+87 + assume {:print "$at(24,7361,7448)"} true; + assume ($t5 == $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))); + + // $t6 := optional_aggregator::switch_to_integer_and_zero_out($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:13+51 + assume {:print "$at(23,3383,3434)"} true; + call $t6,$t0 := $1_optional_aggregator_switch_to_integer_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3383,3434)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,15):", $t4} $t4 == $t4; + goto L4; + } + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:13+51 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:47+19 + assume {:print "$at(23,3499,3518)"} true; +L0: + + // assume Identical($t7, select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:160:9+62 + assume {:print "$at(24,8102,8164)"} true; + assume ($t7 == $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit); + + // $t8 := optional_aggregator::switch_to_aggregator_and_zero_out($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:13+54 + assume {:print "$at(23,3465,3519)"} true; + call $t8,$t0 := $1_optional_aggregator_switch_to_aggregator_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3465,3519)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(41,15):", $t4} $t4 == $t4; + goto L4; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:13+54 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,15,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 + assume {:print "$at(23,3535,3536)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 + assume {:print "$at(23,3535,3536)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 + assume {:print "$at(23,3535,3536)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::switch_and_zero_out [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+291 +procedure {:timeLimit 80} $1_optional_aggregator_switch_and_zero_out$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: Vec ($1_optional_aggregator_Integer); + var $t2: $1_optional_aggregator_OptionalAggregator; + var $t3: $1_optional_aggregator_OptionalAggregator; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $1_aggregator_factory_AggregatorFactory_$memory#140: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + assume {:print "$at(23,3245,3246)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume Identical($t1, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:133:9+46 + assume {:print "$at(24,6458,6504)"} true; + assume ($t1 == $Dereference($t0)->$integer->$vec); + + // @140 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + assume {:print "$at(23,3245,3246)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#140 := $1_aggregator_factory_AggregatorFactory_$memory; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + $t2 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:95:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,15,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:31+19 + assume {:print "$at(23,3347,3366)"} true; + $t3 := $Dereference($t0); + + // $t4 := optional_aggregator::is_parallelizable($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:13+38 + call $t4 := $1_optional_aggregator_is_parallelizable($t3); + if ($abort_flag) { + assume {:print "$at(23,3329,3367)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,15):", $t5} $t5 == $t5; + goto L4; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:44+19 + assume {:print "$at(23,3414,3433)"} true; +L1: + + // assume Identical($t6, aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:147:9+87 + assume {:print "$at(24,7361,7448)"} true; + assume ($t6 == $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))); + + // $t7 := optional_aggregator::switch_to_integer_and_zero_out($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:13+51 + assume {:print "$at(23,3383,3434)"} true; + call $t7,$t0 := $1_optional_aggregator_switch_to_integer_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3383,3434)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,15):", $t5} $t5 == $t5; + goto L4; + } + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:97:13+51 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:47+19 + assume {:print "$at(23,3499,3518)"} true; +L0: + + // assume Identical($t8, select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:160:9+62 + assume {:print "$at(24,8102,8164)"} true; + assume ($t8 == $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit); + + // $t9 := optional_aggregator::switch_to_aggregator_and_zero_out($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:13+54 + assume {:print "$at(23,3465,3519)"} true; + call $t9,$t0 := $1_optional_aggregator_switch_to_aggregator_and_zero_out($t0); + if ($abort_flag) { + assume {:print "$at(23,3465,3519)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(41,15):", $t5} $t5 == $t5; + goto L4; + } + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:99:13+54 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; +L2: + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:96:9+205 + assume {:print "$at(23,3325,3530)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,15,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 + assume {:print "$at(23,3535,3536)"} true; +L3: + + // assert Not(And(optional_aggregator::$is_parallelizable[](Freeze(false)($t2)), Neq(Len($t1), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:134:9+70 + assume {:print "$at(24,6513,6583)"} true; + assert {:msg "assert_failed(24,6513,6583): function does not abort under this condition"} + !($1_optional_aggregator_$is_parallelizable($t2) && !$IsEqual'num'(LenVec($t1), 0)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t2))), Eq(Len($t1), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:135:9+71 + assume {:print "$at(24,6592,6663)"} true; + assert {:msg "assert_failed(24,6592,6663): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t2) && $IsEqual'num'(LenVec($t1), 0)); + + // assert Not(And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t2))), Not(exists[@140](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:136:9+121 + assume {:print "$at(24,6672,6793)"} true; + assert {:msg "assert_failed(24,6672,6793): function does not abort under this condition"} + !(!$1_optional_aggregator_$is_parallelizable($t2) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#140, 1)); + + // assert Implies(optional_aggregator::$is_parallelizable($t2), Not(optional_aggregator::$is_parallelizable(Freeze(false)($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:138:9+96 + assume {:print "$at(24,6833,6929)"} true; + assert {:msg "assert_failed(24,6833,6929): post-condition does not hold"} + ($1_optional_aggregator_$is_parallelizable($t2) ==> !$1_optional_aggregator_$is_parallelizable($Dereference($t0))); + + // assert Implies(Not(optional_aggregator::$is_parallelizable($t2)), optional_aggregator::$is_parallelizable(Freeze(false)($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:139:9+96 + assume {:print "$at(24,6938,7034)"} true; + assert {:msg "assert_failed(24,6938,7034): post-condition does not hold"} + (!$1_optional_aggregator_$is_parallelizable($t2) ==> $1_optional_aggregator_$is_parallelizable($Dereference($t0))); + + // assert Eq(optional_aggregator::optional_aggregator_value($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:140:9+60 + assume {:print "$at(24,7043,7103)"} true; + assert {:msg "assert_failed(24,7043,7103): post-condition does not hold"} + $IsEqual'u128'($1_optional_aggregator_optional_aggregator_value($Dereference($t0)), 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:140:9+60 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:101:5+1 + assume {:print "$at(23,3535,3536)"} true; +L4: + + // assert Or(Or(And(optional_aggregator::$is_parallelizable[](Freeze(false)($t2)), Neq(Len($t1), 0)), And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t2))), Eq(Len($t1), 0))), And(Not(optional_aggregator::$is_parallelizable[](Freeze(false)($t2))), Not(exists[@140](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:132:5+732 + assume {:print "$at(24,6377,7109)"} true; + assert {:msg "assert_failed(24,6377,7109): abort not covered by any of the `aborts_if` clauses"} + ((($1_optional_aggregator_$is_parallelizable($t2) && !$IsEqual'num'(LenVec($t1), 0)) || (!$1_optional_aggregator_$is_parallelizable($t2) && $IsEqual'num'(LenVec($t1), 0))) || (!$1_optional_aggregator_$is_parallelizable($t2) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#140, 1))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:132:5+732 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun optional_aggregator::switch_to_aggregator_and_zero_out [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+420 +procedure {:inline 1} $1_optional_aggregator_switch_to_aggregator_and_zero_out(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: int, $ret1: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: $1_aggregator_Aggregator; + var $t2: $1_optional_aggregator_Integer; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t6: $1_optional_aggregator_Integer; + var $t7: $1_option_Option'$1_optional_aggregator_Integer'; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_aggregator_Aggregator; + var $t12: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t13: bool; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t4, select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:160:9+62 + assume {:print "$at(24,8102,8164)"} true; + assume ($t4 == $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + assume {:print "$at(23,4173,4174)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t5 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:39+32 + assume {:print "$at(23,4317,4349)"} true; + $t5 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t6 := opaque begin: option::extract($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + + // $t7 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $t7 := $Dereference($t5); + + // assume Identical($t8, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume ($t8 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t5))); + + // if ($t8) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + if ($t8) { goto L7; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 +L4: + + // assume And(option::spec_is_none($t5), Eq(262145, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t5)) && $IsEqual'num'(262145, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + assume {:print "$track_abort(41,16):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 +L3: + + // $t5 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + havoc $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + $t5 := $UpdateMutation($t5, $temp_0'$1_option_Option'$1_optional_aggregator_Integer''); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($Dereference($t5)) && (LenVec($Dereference($t5)->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $IsValid'$1_optional_aggregator_Integer'($t6); + + // assume Eq($t6, option::spec_borrow($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $IsEqual'$1_optional_aggregator_Integer'($t6, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t7)); + + // assume option::spec_is_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t5)); + + // $t6 := opaque end: option::extract($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + + // write_back[Reference($t0).integer (option::Option)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t5))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[integer]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:13+7 + assume {:print "$track_local(41,16,2):", $t6} $t6 == $t6; + + // $t10 := optional_aggregator::limit($t6) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:122:21+15 + assume {:print "$at(23,4372,4387)"} true; + call $t10 := $1_optional_aggregator_limit($t6); + if ($abort_flag) { + assume {:print "$at(23,4372,4387)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(41,16):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[limit]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:122:13+5 + assume {:print "$track_local(41,16,3):", $t10} $t10 == $t10; + + // optional_aggregator::destroy_integer($t6) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:123:9+24 + assume {:print "$at(23,4397,4421)"} true; + call $1_optional_aggregator_destroy_integer($t6); + if ($abort_flag) { + assume {:print "$at(23,4397,4421)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(41,16):", $t9} $t9 == $t9; + goto L2; + } + + // $t11 := aggregator_factory::create_aggregator_internal($t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:124:26+53 + assume {:print "$at(23,4448,4501)"} true; + call $t11 := $1_aggregator_factory_create_aggregator_internal($t10); + if ($abort_flag) { + assume {:print "$at(23,4448,4501)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(41,16):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[aggregator]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:124:13+10 + assume {:print "$track_local(41,16,1):", $t11} $t11 == $t11; + + // $t12 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:22+35 + assume {:print "$at(23,4524,4559)"} true; + $t12 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // opaque begin: option::fill($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + + // assume Identical($t13, option::spec_is_some($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume ($t13 == $1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t12))); + + // if ($t13) goto L9 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + if ($t13) { goto L9; } else { goto L10; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 +L6: + + // assume And(option::spec_is_some($t12), Eq(262144, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + assume ($1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t12)) && $IsEqual'num'(262144, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + assume {:print "$track_abort(41,16):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 +L5: + + // $t12 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + havoc $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + $t12 := $UpdateMutation($t12, $temp_0'$1_option_Option'$1_aggregator_Aggregator''); + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($Dereference($t12)) && (LenVec($Dereference($t12)->$vec) <= 1)); + + // assume option::spec_is_some($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume $1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t12)); + + // assume Eq(option::spec_borrow($t12), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume $IsEqual'$1_aggregator_Aggregator'($1_option_spec_borrow'$1_aggregator_Aggregator'($Dereference($t12)), $t11); + + // opaque end: option::fill($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + + // write_back[Reference($t0).aggregator (option::Option)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t12))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:126:9+5 + assume {:print "$at(23,4582,4587)"} true; + assume {:print "$track_return(41,16,0):", $t10} $t10 == $t10; + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:126:9+5 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:126:9+5 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 + assume {:print "$at(23,4592,4593)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 + assume {:print "$at(23,4592,4593)"} true; + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 + assume {:print "$at(23,4592,4593)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L8 at :1:1+10 +L8: + + // drop($t5) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L9 at :1:1+10 +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L10 at :1:1+10 +L10: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun optional_aggregator::switch_to_aggregator_and_zero_out [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+420 +procedure {:timeLimit 80} $1_optional_aggregator_switch_to_aggregator_and_zero_out$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: int, $ret1: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: $1_aggregator_Aggregator; + var $t2: $1_optional_aggregator_Integer; + var $t3: int; + var $t4: int; + var $t5: $1_optional_aggregator_OptionalAggregator; + var $t6: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t7: $1_optional_aggregator_Integer; + var $t8: $1_option_Option'$1_optional_aggregator_Integer'; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: $1_aggregator_Aggregator; + var $t13: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t14: bool; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + var $1_aggregator_factory_AggregatorFactory_$memory#138: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + assume {:print "$at(23,4173,4174)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume Identical($t4, select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:160:9+62 + assume {:print "$at(24,8102,8164)"} true; + assume ($t4 == $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit); + + // @138 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + assume {:print "$at(23,4173,4174)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#138 := $1_aggregator_factory_AggregatorFactory_$memory; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + $t5 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:118:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t6 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:39+32 + assume {:print "$at(23,4317,4349)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // $t7 := opaque begin: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume ($t9 == $1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t6))); + + // if ($t9) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + if ($t9) { goto L7; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 +L4: + + // assume And(option::spec_is_none($t6), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t6)) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + assume {:print "$track_abort(41,16):", $t10} $t10 == $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 +L3: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume {:print "$at(23,4301,4350)"} true; + havoc $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'$1_optional_aggregator_Integer''); + + // assume And(WellFormed($t6), Le(Len(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($Dereference($t6)) && (LenVec($Dereference($t6)->$vec) <= 1)); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $IsValid'$1_optional_aggregator_Integer'($t7); + + // assume Eq($t7, option::spec_borrow($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $IsEqual'$1_optional_aggregator_Integer'($t7, $1_option_spec_borrow'$1_optional_aggregator_Integer'($t8)); + + // assume option::spec_is_none($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + assume $1_option_spec_is_none'$1_optional_aggregator_Integer'($Dereference($t6)); + + // $t7 := opaque end: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + + // write_back[Reference($t0).integer (option::Option)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t6))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:23+49 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[integer]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:121:13+7 + assume {:print "$track_local(41,16,2):", $t7} $t7 == $t7; + + // $t11 := optional_aggregator::limit($t7) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:122:21+15 + assume {:print "$at(23,4372,4387)"} true; + call $t11 := $1_optional_aggregator_limit($t7); + if ($abort_flag) { + assume {:print "$at(23,4372,4387)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(41,16):", $t10} $t10 == $t10; + goto L2; + } + + // trace_local[limit]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:122:13+5 + assume {:print "$track_local(41,16,3):", $t11} $t11 == $t11; + + // optional_aggregator::destroy_integer($t7) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:123:9+24 + assume {:print "$at(23,4397,4421)"} true; + call $1_optional_aggregator_destroy_integer($t7); + if ($abort_flag) { + assume {:print "$at(23,4397,4421)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(41,16):", $t10} $t10 == $t10; + goto L2; + } + + // $t12 := aggregator_factory::create_aggregator_internal($t11) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:124:26+53 + assume {:print "$at(23,4448,4501)"} true; + call $t12 := $1_aggregator_factory_create_aggregator_internal($t11); + if ($abort_flag) { + assume {:print "$at(23,4448,4501)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(41,16):", $t10} $t10 == $t10; + goto L2; + } + + // trace_local[aggregator]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:124:13+10 + assume {:print "$track_local(41,16,1):", $t12} $t12 == $t12; + + // $t13 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:22+35 + assume {:print "$at(23,4524,4559)"} true; + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // opaque begin: option::fill($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + + // assume Identical($t14, option::spec_is_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume ($t14 == $1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t13))); + + // if ($t14) goto L9 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + if ($t14) { goto L9; } else { goto L10; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 +L6: + + // assume And(option::spec_is_some($t13), Eq(262144, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + assume ($1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t13)) && $IsEqual'num'(262144, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + assume {:print "$track_abort(41,16):", $t10} $t10 == $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 +L5: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume {:print "$at(23,4511,4572)"} true; + havoc $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + $t13 := $UpdateMutation($t13, $temp_0'$1_option_Option'$1_aggregator_Aggregator''); + + // assume And(WellFormed($t13), Le(Len(select option::Option.vec($t13)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($Dereference($t13)) && (LenVec($Dereference($t13)->$vec) <= 1)); + + // assume option::spec_is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume $1_option_spec_is_some'$1_aggregator_Aggregator'($Dereference($t13)); + + // assume Eq(option::spec_borrow($t13), $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + assume $IsEqual'$1_aggregator_Aggregator'($1_option_spec_borrow'$1_aggregator_Aggregator'($Dereference($t13)), $t12); + + // opaque end: option::fill($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + + // write_back[Reference($t0).aggregator (option::Option)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t13))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:125:9+61 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:126:9+5 + assume {:print "$at(23,4582,4587)"} true; + assume {:print "$track_return(41,16,0):", $t11} $t11 == $t11; + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:126:9+5 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,16,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 + assume {:print "$at(23,4592,4593)"} true; +L1: + + // assert Not(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:161:9+52 + assume {:print "$at(24,8173,8225)"} true; + assert {:msg "assert_failed(24,8173,8225): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t5->$integer->$vec), 0); + + // assert Not(Not(exists[@138](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:162:9+78 + assume {:print "$at(24,8234,8312)"} true; + assert {:msg "assert_failed(24,8234,8312): function does not abort under this condition"} + !!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#138, 1); + + // assert Not(Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:163:9+55 + assume {:print "$at(24,8321,8376)"} true; + assert {:msg "assert_failed(24,8321,8376): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t5->$aggregator->$vec), 0); + + // assert optional_aggregator::$is_parallelizable(Freeze(false)($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:164:9+47 + assume {:print "$at(24,8385,8432)"} true; + assert {:msg "assert_failed(24,8385,8432): post-condition does not hold"} + $1_optional_aggregator_$is_parallelizable($Dereference($t0)); + + // assert Eq(aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:165:9+92 + assume {:print "$at(24,8441,8533)"} true; + assert {:msg "assert_failed(24,8441,8533): post-condition does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)), $t4); + + // assert Eq(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:166:9+97 + assume {:print "$at(24,8542,8639)"} true; + assert {:msg "assert_failed(24,8542,8639): post-condition does not hold"} + $IsEqual'u128'($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)), 0); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:166:9+97 + $ret0 := $t11; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:127:5+1 + assume {:print "$at(23,4592,4593)"} true; +L2: + + // assert Or(Or(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t5))), 0), Not(exists[@138](0x1))), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:157:5+658 + assume {:print "$at(24,7987,8645)"} true; + assert {:msg "assert_failed(24,7987,8645): abort not covered by any of the `aborts_if` clauses"} + (($IsEqual'num'(LenVec($t5->$integer->$vec), 0) || !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#138, 1)) || !$IsEqual'num'(LenVec($t5->$aggregator->$vec), 0)); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:157:5+658 + $abort_code := $t10; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L8 at :1:1+10 +L8: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L9 at :1:1+10 +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L10 at :1:1+10 +L10: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun optional_aggregator::switch_to_integer_and_zero_out [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+401 +procedure {:inline 1} $1_optional_aggregator_switch_to_integer_and_zero_out(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: int, $ret1: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: $1_aggregator_Aggregator; + var $t2: $1_optional_aggregator_Integer; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t6: $1_aggregator_Aggregator; + var $t7: $1_option_Option'$1_aggregator_Aggregator'; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_optional_aggregator_Integer; + var $t12: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t13: bool; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t4, aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:147:9+87 + assume {:print "$at(24,7361,7448)"} true; + assume ($t4 == $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+1 + assume {:print "$at(23,3654,3655)"} true; + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t5 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:42+35 + assume {:print "$at(23,3798,3833)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t6 := opaque begin: option::extract($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + + // $t7 := read_ref($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $t7 := $Dereference($t5); + + // assume Identical($t8, option::spec_is_none($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume ($t8 == $1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t5))); + + // if ($t8) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + if ($t8) { goto L7; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 +L4: + + // assume And(option::spec_is_none($t5), Eq(262145, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t5)) && $IsEqual'num'(262145, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + assume {:print "$track_abort(41,17):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 +L3: + + // $t5 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + havoc $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + $t5 := $UpdateMutation($t5, $temp_0'$1_option_Option'$1_aggregator_Aggregator''); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($Dereference($t5)) && (LenVec($Dereference($t5)->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $IsValid'$1_aggregator_Aggregator'($t6); + + // assume Eq($t6, option::spec_borrow($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $IsEqual'$1_aggregator_Aggregator'($t6, $1_option_spec_borrow'$1_aggregator_Aggregator'($t7)); + + // assume option::spec_is_none($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t5)); + + // $t6 := opaque end: option::extract($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + + // write_back[Reference($t0).aggregator (option::Option)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t5))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[aggregator]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:13+10 + assume {:print "$track_local(41,17,1):", $t6} $t6 == $t6; + + // $t10 := opaque begin: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume {:print "$at(23,3856,3886)"} true; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume $IsValid'u128'($t10); + + // assume Eq($t10, aggregator::spec_get_limit($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume $IsEqual'u128'($t10, $1_aggregator_spec_get_limit($t6)); + + // $t10 := opaque end: aggregator::limit($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + + // trace_local[limit]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:13+5 + assume {:print "$track_local(41,17,3):", $t10} $t10 == $t10; + + // opaque begin: aggregator::destroy($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:110:9+31 + assume {:print "$at(23,3896,3927)"} true; + + // opaque end: aggregator::destroy($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:110:9+31 + + // $t11 := optional_aggregator::new_integer($t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:111:23+18 + assume {:print "$at(23,3951,3969)"} true; + call $t11 := $1_optional_aggregator_new_integer($t10); + if ($abort_flag) { + assume {:print "$at(23,3951,3969)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(41,17):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[integer]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:111:13+7 + assume {:print "$track_local(41,17,2):", $t11} $t11 == $t11; + + // $t12 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:22+32 + assume {:print "$at(23,3992,4024)"} true; + $t12 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // opaque begin: option::fill($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + + // assume Identical($t13, option::spec_is_some($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume ($t13 == $1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t12))); + + // if ($t13) goto L9 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + if ($t13) { goto L9; } else { goto L10; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 +L6: + + // assume And(option::spec_is_some($t12), Eq(262144, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + assume ($1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t12)) && $IsEqual'num'(262144, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + assume {:print "$track_abort(41,17):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 +L5: + + // $t12 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + havoc $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + $t12 := $UpdateMutation($t12, $temp_0'$1_option_Option'$1_optional_aggregator_Integer''); + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($Dereference($t12)) && (LenVec($Dereference($t12)->$vec) <= 1)); + + // assume option::spec_is_some($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume $1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t12)); + + // assume Eq(option::spec_borrow($t12), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume $IsEqual'$1_optional_aggregator_Integer'($1_option_spec_borrow'$1_optional_aggregator_Integer'($Dereference($t12)), $t11); + + // opaque end: option::fill($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + + // write_back[Reference($t0).integer (option::Option)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t12))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:113:9+5 + assume {:print "$at(23,4044,4049)"} true; + assume {:print "$track_return(41,17,0):", $t10} $t10 == $t10; + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:113:9+5 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:113:9+5 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 + assume {:print "$at(23,4054,4055)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 + assume {:print "$at(23,4054,4055)"} true; + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 + assume {:print "$at(23,4054,4055)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L8 at :1:1+10 +L8: + + // drop($t5) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L9 at :1:1+10 +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L10 at :1:1+10 +L10: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun optional_aggregator::switch_to_integer_and_zero_out [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+401 +procedure {:timeLimit 80} $1_optional_aggregator_switch_to_integer_and_zero_out$verify(_$t0: $Mutation ($1_optional_aggregator_OptionalAggregator)) returns ($ret0: int, $ret1: $Mutation ($1_optional_aggregator_OptionalAggregator)) +{ + // declare local variables + var $t1: $1_aggregator_Aggregator; + var $t2: $1_optional_aggregator_Integer; + var $t3: int; + var $t4: int; + var $t5: $1_optional_aggregator_OptionalAggregator; + var $t6: $Mutation ($1_option_Option'$1_aggregator_Aggregator'); + var $t7: $1_aggregator_Aggregator; + var $t8: $1_option_Option'$1_aggregator_Aggregator'; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: $1_optional_aggregator_Integer; + var $t13: $Mutation ($1_option_Option'$1_optional_aggregator_Integer'); + var $t14: bool; + var $t0: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_option_Option'$1_aggregator_Aggregator'': $1_option_Option'$1_aggregator_Aggregator'; + var $temp_0'$1_option_Option'$1_optional_aggregator_Integer'': $1_option_Option'$1_optional_aggregator_Integer'; + var $temp_0'$1_optional_aggregator_Integer': $1_optional_aggregator_Integer; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+1 + assume {:print "$at(23,3654,3655)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($Dereference($t0)) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))))) && (LenVec($Dereference($t0)->$aggregator->$vec) <= 1)) && (LenVec($Dereference($t0)->$integer->$vec) <= 1))); + + // assume Identical($t4, aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:147:9+87 + assume {:print "$at(24,7361,7448)"} true; + assume ($t4 == $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator))); + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+1 + assume {:print "$at(23,3654,3655)"} true; + $t5 := $Dereference($t0); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:105:5+1 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t6 := borrow_field.aggregator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:42+35 + assume {:print "$at(23,3798,3833)"} true; + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$aggregator); + + // $t7 := opaque begin: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume ($t9 == $1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t6))); + + // if ($t9) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + if ($t9) { goto L7; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 +L4: + + // assume And(option::spec_is_none($t6), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + assume ($1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t6)) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + assume {:print "$track_abort(41,17):", $t10} $t10 == $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 +L3: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume {:print "$at(23,3782,3834)"} true; + havoc $temp_0'$1_option_Option'$1_aggregator_Aggregator''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'$1_aggregator_Aggregator''); + + // assume And(WellFormed($t6), Le(Len(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume ($IsValid'$1_option_Option'$1_aggregator_Aggregator''($Dereference($t6)) && (LenVec($Dereference($t6)->$vec) <= 1)); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $IsValid'$1_aggregator_Aggregator'($t7); + + // assume Eq($t7, option::spec_borrow($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $IsEqual'$1_aggregator_Aggregator'($t7, $1_option_spec_borrow'$1_aggregator_Aggregator'($t8)); + + // assume option::spec_is_none($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + assume $1_option_spec_is_none'$1_aggregator_Aggregator'($Dereference($t6)); + + // $t7 := opaque end: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + + // write_back[Reference($t0).aggregator (option::Option)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_aggregator($Dereference($t0), $Dereference($t6))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:26+52 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_local[aggregator]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:108:13+10 + assume {:print "$track_local(41,17,1):", $t7} $t7 == $t7; + + // $t11 := opaque begin: aggregator::limit($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume {:print "$at(23,3856,3886)"} true; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume $IsValid'u128'($t11); + + // assume Eq($t11, aggregator::spec_get_limit($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + assume $IsEqual'u128'($t11, $1_aggregator_spec_get_limit($t7)); + + // $t11 := opaque end: aggregator::limit($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:21+30 + + // trace_local[limit]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:109:13+5 + assume {:print "$track_local(41,17,3):", $t11} $t11 == $t11; + + // opaque begin: aggregator::destroy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:110:9+31 + assume {:print "$at(23,3896,3927)"} true; + + // opaque end: aggregator::destroy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:110:9+31 + + // $t12 := optional_aggregator::new_integer($t11) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:111:23+18 + assume {:print "$at(23,3951,3969)"} true; + call $t12 := $1_optional_aggregator_new_integer($t11); + if ($abort_flag) { + assume {:print "$at(23,3951,3969)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(41,17):", $t10} $t10 == $t10; + goto L2; + } + + // trace_local[integer]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:111:13+7 + assume {:print "$track_local(41,17,2):", $t12} $t12 == $t12; + + // $t13 := borrow_field.integer($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:22+32 + assume {:print "$at(23,3992,4024)"} true; + $t13 := $ChildMutation($t0, 1, $Dereference($t0)->$integer); + + // opaque begin: option::fill($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + + // assume Identical($t14, option::spec_is_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume ($t14 == $1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t13))); + + // if ($t14) goto L9 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + if ($t14) { goto L9; } else { goto L10; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 +L6: + + // assume And(option::spec_is_some($t13), Eq(262144, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + assume ($1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t13)) && $IsEqual'num'(262144, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + assume {:print "$track_abort(41,17):", $t10} $t10 == $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + goto L2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 +L5: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume {:print "$at(23,3979,4034)"} true; + havoc $temp_0'$1_option_Option'$1_optional_aggregator_Integer''; + $t13 := $UpdateMutation($t13, $temp_0'$1_option_Option'$1_optional_aggregator_Integer''); + + // assume And(WellFormed($t13), Le(Len(select option::Option.vec($t13)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_Integer''($Dereference($t13)) && (LenVec($Dereference($t13)->$vec) <= 1)); + + // assume option::spec_is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume $1_option_spec_is_some'$1_optional_aggregator_Integer'($Dereference($t13)); + + // assume Eq(option::spec_borrow($t13), $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + assume $IsEqual'$1_optional_aggregator_Integer'($1_option_spec_borrow'$1_optional_aggregator_Integer'($Dereference($t13)), $t12); + + // opaque end: option::fill($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + + // write_back[Reference($t0).integer (option::Option)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + $t0 := $UpdateMutation($t0, $Update'$1_optional_aggregator_OptionalAggregator'_integer($Dereference($t0), $Dereference($t13))); + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:112:9+55 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:113:9+5 + assume {:print "$at(23,4044,4049)"} true; + assume {:print "$track_return(41,17,0):", $t11} $t11 == $t11; + + // trace_local[optional_aggregator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:113:9+5 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t0); + assume {:print "$track_local(41,17,0):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)); + + // assert Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:34:9+68 + assume {:print "$at(24,1747,1815)"} true; + assert {:msg "assert_failed(24,1747,1815): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t0)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:35:9+102 + assume {:print "$at(24,1824,1926)"} true; + assert {:msg "assert_failed(24,1824,1926): data invariant does not hold"} + ($1_option_$is_some'$1_optional_aggregator_Integer'($Dereference($t0)->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit)); + + // assert Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t0)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:36:9+176 + assume {:print "$at(24,1935,2111)"} true; + assert {:msg "assert_failed(24,1935,2111): data invariant does not hold"} + ($1_option_$is_some'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t0)->$aggregator)))); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$aggregator->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$integer->$vec) <= 1); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 + assume {:print "$at(23,4054,4055)"} true; +L1: + + // assert Not(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:148:9+55 + assume {:print "$at(24,7457,7512)"} true; + assert {:msg "assert_failed(24,7457,7512): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t5->$aggregator->$vec), 0); + + // assert Not(Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:149:9+52 + assume {:print "$at(24,7521,7573)"} true; + assert {:msg "assert_failed(24,7521,7573): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t5->$integer->$vec), 0); + + // assert Not(optional_aggregator::$is_parallelizable(Freeze(false)($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:150:9+48 + assume {:print "$at(24,7582,7630)"} true; + assert {:msg "assert_failed(24,7582,7630): post-condition does not hold"} + !$1_optional_aggregator_$is_parallelizable($Dereference($t0)); + + // assert Eq(select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:151:9+67 + assume {:print "$at(24,7639,7706)"} true; + assert {:msg "assert_failed(24,7639,7706): post-condition does not hold"} + $IsEqual'u128'($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$limit, $t4); + + // assert Eq(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t0))), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:152:9+63 + assume {:print "$at(24,7715,7778)"} true; + assert {:msg "assert_failed(24,7715,7778): post-condition does not hold"} + $IsEqual'u128'($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t0)->$integer)->$value, 0); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:152:9+63 + $ret0 := $t11; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.move:114:5+1 + assume {:print "$at(23,4054,4055)"} true; +L2: + + // assert Or(Eq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.aggregator($t5))), 0), Neq(Len(select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t5))), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:144:5+535 + assume {:print "$at(24,7249,7784)"} true; + assert {:msg "assert_failed(24,7249,7784): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'num'(LenVec($t5->$aggregator->$vec), 0) || !$IsEqual'num'(LenVec($t5->$integer->$vec), 0)); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:144:5+535 + $abort_code := $t10; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L8 at :1:1+10 +L8: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L9 at :1:1+10 +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L10 at :1:1+10 +L10: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// struct function_info::FunctionInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:19:5+142 +datatype $1_function_info_FunctionInfo { + $1_function_info_FunctionInfo($module_address: int, $module_name: $1_string_String, $function_name: $1_string_String) +} +function {:inline} $Update'$1_function_info_FunctionInfo'_module_address(s: $1_function_info_FunctionInfo, x: int): $1_function_info_FunctionInfo { + $1_function_info_FunctionInfo(x, s->$module_name, s->$function_name) +} +function {:inline} $Update'$1_function_info_FunctionInfo'_module_name(s: $1_function_info_FunctionInfo, x: $1_string_String): $1_function_info_FunctionInfo { + $1_function_info_FunctionInfo(s->$module_address, x, s->$function_name) +} +function {:inline} $Update'$1_function_info_FunctionInfo'_function_name(s: $1_function_info_FunctionInfo, x: $1_string_String): $1_function_info_FunctionInfo { + $1_function_info_FunctionInfo(s->$module_address, s->$module_name, x) +} +function $IsValid'$1_function_info_FunctionInfo'(s: $1_function_info_FunctionInfo): bool { + $IsValid'address'(s->$module_address) + && $IsValid'$1_string_String'(s->$module_name) + && $IsValid'$1_string_String'(s->$function_name) +} +function {:inline} $IsEqual'$1_function_info_FunctionInfo'(s1: $1_function_info_FunctionInfo, s2: $1_function_info_FunctionInfo): bool { + $IsEqual'address'(s1->$module_address, s2->$module_address) + && $IsEqual'$1_string_String'(s1->$module_name, s2->$module_name) + && $IsEqual'$1_string_String'(s1->$function_name, s2->$function_name)} + +// fun function_info::load_module_from_function [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:89:5+100 +procedure {:inline 1} $1_function_info_load_module_from_function(_$t0: $1_function_info_FunctionInfo) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t0: $1_function_info_FunctionInfo; + var $temp_0'$1_function_info_FunctionInfo': $1_function_info_FunctionInfo; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[f]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:89:5+1 + assume {:print "$at(41,3426,3427)"} true; + assume {:print "$track_local(42,4,0):", $t0} $t0 == $t0; + + // opaque begin: function_info::load_function_impl($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + assume {:print "$at(41,3499,3520)"} true; + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + havoc $t1; + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + assume {:print "$at(41,3499,3520)"} true; + assume {:print "$track_abort(42,4):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 +L3: + + // opaque end: function_info::load_function_impl($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:90:9+21 + assume {:print "$at(41,3499,3520)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:91:5+1 + assume {:print "$at(41,3525,3526)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:91:5+1 + assume {:print "$at(41,3525,3526)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:91:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/function_info.move:91:5+1 + assume {:print "$at(41,3525,3526)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:561:5+88 +function {:inline} $1_fungible_asset_$store_exists($1_fungible_asset_FungibleStore_$memory: $Memory $1_fungible_asset_FungibleStore, store: int): bool { + (var store := store; $ResourceExists($1_fungible_asset_FungibleStore_$memory, store)) +} + +// struct fungible_asset::TransferRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:187:5+77 +datatype $1_fungible_asset_TransferRef { + $1_fungible_asset_TransferRef($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_fungible_asset_TransferRef'_metadata(s: $1_fungible_asset_TransferRef, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_fungible_asset_TransferRef { + $1_fungible_asset_TransferRef(x) +} +function $IsValid'$1_fungible_asset_TransferRef'(s: $1_fungible_asset_TransferRef): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_fungible_asset_TransferRef'(s1: $1_fungible_asset_TransferRef, s2: $1_fungible_asset_TransferRef): bool { + s1 == s2 +} + +// struct fungible_asset::Untransferable at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:141:5+32 +datatype $1_fungible_asset_Untransferable { + $1_fungible_asset_Untransferable($dummy_field: bool) +} +function {:inline} $Update'$1_fungible_asset_Untransferable'_dummy_field(s: $1_fungible_asset_Untransferable, x: bool): $1_fungible_asset_Untransferable { + $1_fungible_asset_Untransferable(x) +} +function $IsValid'$1_fungible_asset_Untransferable'(s: $1_fungible_asset_Untransferable): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_fungible_asset_Untransferable'(s1: $1_fungible_asset_Untransferable, s2: $1_fungible_asset_Untransferable): bool { + s1 == s2 +} +var $1_fungible_asset_Untransferable_$memory: $Memory $1_fungible_asset_Untransferable; + +// struct fungible_asset::BurnRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:192:5+73 +datatype $1_fungible_asset_BurnRef { + $1_fungible_asset_BurnRef($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_fungible_asset_BurnRef'_metadata(s: $1_fungible_asset_BurnRef, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_fungible_asset_BurnRef { + $1_fungible_asset_BurnRef(x) +} +function $IsValid'$1_fungible_asset_BurnRef'(s: $1_fungible_asset_BurnRef): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_fungible_asset_BurnRef'(s1: $1_fungible_asset_BurnRef, s2: $1_fungible_asset_BurnRef): bool { + s1 == s2 +} + +// struct fungible_asset::ConcurrentFungibleBalance at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:168:5+132 +datatype $1_fungible_asset_ConcurrentFungibleBalance { + $1_fungible_asset_ConcurrentFungibleBalance($balance: $1_aggregator_v2_Aggregator'u64') +} +function {:inline} $Update'$1_fungible_asset_ConcurrentFungibleBalance'_balance(s: $1_fungible_asset_ConcurrentFungibleBalance, x: $1_aggregator_v2_Aggregator'u64'): $1_fungible_asset_ConcurrentFungibleBalance { + $1_fungible_asset_ConcurrentFungibleBalance(x) +} +function $IsValid'$1_fungible_asset_ConcurrentFungibleBalance'(s: $1_fungible_asset_ConcurrentFungibleBalance): bool { + $IsValid'$1_aggregator_v2_Aggregator'u64''(s->$balance) +} +function {:inline} $IsEqual'$1_fungible_asset_ConcurrentFungibleBalance'(s1: $1_fungible_asset_ConcurrentFungibleBalance, s2: $1_fungible_asset_ConcurrentFungibleBalance): bool { + s1 == s2 +} +var $1_fungible_asset_ConcurrentFungibleBalance_$memory: $Memory $1_fungible_asset_ConcurrentFungibleBalance; + +// struct fungible_asset::ConcurrentSupply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:115:5+74 +datatype $1_fungible_asset_ConcurrentSupply { + $1_fungible_asset_ConcurrentSupply($current: $1_aggregator_v2_Aggregator'u128') +} +function {:inline} $Update'$1_fungible_asset_ConcurrentSupply'_current(s: $1_fungible_asset_ConcurrentSupply, x: $1_aggregator_v2_Aggregator'u128'): $1_fungible_asset_ConcurrentSupply { + $1_fungible_asset_ConcurrentSupply(x) +} +function $IsValid'$1_fungible_asset_ConcurrentSupply'(s: $1_fungible_asset_ConcurrentSupply): bool { + $IsValid'$1_aggregator_v2_Aggregator'u128''(s->$current) +} +function {:inline} $IsEqual'$1_fungible_asset_ConcurrentSupply'(s1: $1_fungible_asset_ConcurrentSupply, s2: $1_fungible_asset_ConcurrentSupply): bool { + s1 == s2 +} +var $1_fungible_asset_ConcurrentSupply_$memory: $Memory $1_fungible_asset_ConcurrentSupply; + +// struct fungible_asset::Deposit at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:203:5+83 +datatype $1_fungible_asset_Deposit { + $1_fungible_asset_Deposit($store: int, $amount: int) +} +function {:inline} $Update'$1_fungible_asset_Deposit'_store(s: $1_fungible_asset_Deposit, x: int): $1_fungible_asset_Deposit { + $1_fungible_asset_Deposit(x, s->$amount) +} +function {:inline} $Update'$1_fungible_asset_Deposit'_amount(s: $1_fungible_asset_Deposit, x: int): $1_fungible_asset_Deposit { + $1_fungible_asset_Deposit(s->$store, x) +} +function $IsValid'$1_fungible_asset_Deposit'(s: $1_fungible_asset_Deposit): bool { + $IsValid'address'(s->$store) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_fungible_asset_Deposit'(s1: $1_fungible_asset_Deposit, s2: $1_fungible_asset_Deposit): bool { + s1 == s2 +} + +// struct fungible_asset::DispatchFunctionStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:155:5+185 +datatype $1_fungible_asset_DispatchFunctionStore { + $1_fungible_asset_DispatchFunctionStore($withdraw_function: $1_option_Option'$1_function_info_FunctionInfo', $deposit_function: $1_option_Option'$1_function_info_FunctionInfo', $derived_balance_function: $1_option_Option'$1_function_info_FunctionInfo') +} +function {:inline} $Update'$1_fungible_asset_DispatchFunctionStore'_withdraw_function(s: $1_fungible_asset_DispatchFunctionStore, x: $1_option_Option'$1_function_info_FunctionInfo'): $1_fungible_asset_DispatchFunctionStore { + $1_fungible_asset_DispatchFunctionStore(x, s->$deposit_function, s->$derived_balance_function) +} +function {:inline} $Update'$1_fungible_asset_DispatchFunctionStore'_deposit_function(s: $1_fungible_asset_DispatchFunctionStore, x: $1_option_Option'$1_function_info_FunctionInfo'): $1_fungible_asset_DispatchFunctionStore { + $1_fungible_asset_DispatchFunctionStore(s->$withdraw_function, x, s->$derived_balance_function) +} +function {:inline} $Update'$1_fungible_asset_DispatchFunctionStore'_derived_balance_function(s: $1_fungible_asset_DispatchFunctionStore, x: $1_option_Option'$1_function_info_FunctionInfo'): $1_fungible_asset_DispatchFunctionStore { + $1_fungible_asset_DispatchFunctionStore(s->$withdraw_function, s->$deposit_function, x) +} +function $IsValid'$1_fungible_asset_DispatchFunctionStore'(s: $1_fungible_asset_DispatchFunctionStore): bool { + $IsValid'$1_option_Option'$1_function_info_FunctionInfo''(s->$withdraw_function) + && $IsValid'$1_option_Option'$1_function_info_FunctionInfo''(s->$deposit_function) + && $IsValid'$1_option_Option'$1_function_info_FunctionInfo''(s->$derived_balance_function) +} +function {:inline} $IsEqual'$1_fungible_asset_DispatchFunctionStore'(s1: $1_fungible_asset_DispatchFunctionStore, s2: $1_fungible_asset_DispatchFunctionStore): bool { + $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''(s1->$withdraw_function, s2->$withdraw_function) + && $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''(s1->$deposit_function, s2->$deposit_function) + && $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''(s1->$derived_balance_function, s2->$derived_balance_function)} +var $1_fungible_asset_DispatchFunctionStore_$memory: $Memory $1_fungible_asset_DispatchFunctionStore; + +// struct fungible_asset::Frozen at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:217:5+83 +datatype $1_fungible_asset_Frozen { + $1_fungible_asset_Frozen($store: int, $frozen: bool) +} +function {:inline} $Update'$1_fungible_asset_Frozen'_store(s: $1_fungible_asset_Frozen, x: int): $1_fungible_asset_Frozen { + $1_fungible_asset_Frozen(x, s->$frozen) +} +function {:inline} $Update'$1_fungible_asset_Frozen'_frozen(s: $1_fungible_asset_Frozen, x: bool): $1_fungible_asset_Frozen { + $1_fungible_asset_Frozen(s->$store, x) +} +function $IsValid'$1_fungible_asset_Frozen'(s: $1_fungible_asset_Frozen): bool { + $IsValid'address'(s->$store) + && $IsValid'bool'(s->$frozen) +} +function {:inline} $IsEqual'$1_fungible_asset_Frozen'(s1: $1_fungible_asset_Frozen, s2: $1_fungible_asset_Frozen): bool { + s1 == s2 +} + +// struct fungible_asset::FungibleAsset at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:175:5+85 +datatype $1_fungible_asset_FungibleAsset { + $1_fungible_asset_FungibleAsset($metadata: $1_object_Object'$1_fungible_asset_Metadata', $amount: int) +} +function {:inline} $Update'$1_fungible_asset_FungibleAsset'_metadata(s: $1_fungible_asset_FungibleAsset, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_fungible_asset_FungibleAsset { + $1_fungible_asset_FungibleAsset(x, s->$amount) +} +function {:inline} $Update'$1_fungible_asset_FungibleAsset'_amount(s: $1_fungible_asset_FungibleAsset, x: int): $1_fungible_asset_FungibleAsset { + $1_fungible_asset_FungibleAsset(s->$metadata, x) +} +function $IsValid'$1_fungible_asset_FungibleAsset'(s: $1_fungible_asset_FungibleAsset): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_fungible_asset_FungibleAsset'(s1: $1_fungible_asset_FungibleAsset, s2: $1_fungible_asset_FungibleAsset): bool { + s1 == s2 +} + +// struct fungible_asset::FungibleStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:145:5+324 +datatype $1_fungible_asset_FungibleStore { + $1_fungible_asset_FungibleStore($metadata: $1_object_Object'$1_fungible_asset_Metadata', $balance: int, $frozen: bool) +} +function {:inline} $Update'$1_fungible_asset_FungibleStore'_metadata(s: $1_fungible_asset_FungibleStore, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_fungible_asset_FungibleStore { + $1_fungible_asset_FungibleStore(x, s->$balance, s->$frozen) +} +function {:inline} $Update'$1_fungible_asset_FungibleStore'_balance(s: $1_fungible_asset_FungibleStore, x: int): $1_fungible_asset_FungibleStore { + $1_fungible_asset_FungibleStore(s->$metadata, x, s->$frozen) +} +function {:inline} $Update'$1_fungible_asset_FungibleStore'_frozen(s: $1_fungible_asset_FungibleStore, x: bool): $1_fungible_asset_FungibleStore { + $1_fungible_asset_FungibleStore(s->$metadata, s->$balance, x) +} +function $IsValid'$1_fungible_asset_FungibleStore'(s: $1_fungible_asset_FungibleStore): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) + && $IsValid'u64'(s->$balance) + && $IsValid'bool'(s->$frozen) +} +function {:inline} $IsEqual'$1_fungible_asset_FungibleStore'(s1: $1_fungible_asset_FungibleStore, s2: $1_fungible_asset_FungibleStore): bool { + s1 == s2 +} +var $1_fungible_asset_FungibleStore_$memory: $Memory $1_fungible_asset_FungibleStore; + +// struct fungible_asset::Metadata at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:121:5+797 +datatype $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata($name: $1_string_String, $symbol: $1_string_String, $decimals: int, $icon_uri: $1_string_String, $project_uri: $1_string_String) +} +function {:inline} $Update'$1_fungible_asset_Metadata'_name(s: $1_fungible_asset_Metadata, x: $1_string_String): $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata(x, s->$symbol, s->$decimals, s->$icon_uri, s->$project_uri) +} +function {:inline} $Update'$1_fungible_asset_Metadata'_symbol(s: $1_fungible_asset_Metadata, x: $1_string_String): $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata(s->$name, x, s->$decimals, s->$icon_uri, s->$project_uri) +} +function {:inline} $Update'$1_fungible_asset_Metadata'_decimals(s: $1_fungible_asset_Metadata, x: int): $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata(s->$name, s->$symbol, x, s->$icon_uri, s->$project_uri) +} +function {:inline} $Update'$1_fungible_asset_Metadata'_icon_uri(s: $1_fungible_asset_Metadata, x: $1_string_String): $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata(s->$name, s->$symbol, s->$decimals, x, s->$project_uri) +} +function {:inline} $Update'$1_fungible_asset_Metadata'_project_uri(s: $1_fungible_asset_Metadata, x: $1_string_String): $1_fungible_asset_Metadata { + $1_fungible_asset_Metadata(s->$name, s->$symbol, s->$decimals, s->$icon_uri, x) +} +function $IsValid'$1_fungible_asset_Metadata'(s: $1_fungible_asset_Metadata): bool { + $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$symbol) + && $IsValid'u8'(s->$decimals) + && $IsValid'$1_string_String'(s->$icon_uri) + && $IsValid'$1_string_String'(s->$project_uri) +} +function {:inline} $IsEqual'$1_fungible_asset_Metadata'(s1: $1_fungible_asset_Metadata, s2: $1_fungible_asset_Metadata): bool { + $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$symbol, s2->$symbol) + && $IsEqual'u8'(s1->$decimals, s2->$decimals) + && $IsEqual'$1_string_String'(s1->$icon_uri, s2->$icon_uri) + && $IsEqual'$1_string_String'(s1->$project_uri, s2->$project_uri)} +var $1_fungible_asset_Metadata_$memory: $Memory $1_fungible_asset_Metadata; + +// struct fungible_asset::MintRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:181:5+73 +datatype $1_fungible_asset_MintRef { + $1_fungible_asset_MintRef($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_fungible_asset_MintRef'_metadata(s: $1_fungible_asset_MintRef, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_fungible_asset_MintRef { + $1_fungible_asset_MintRef(x) +} +function $IsValid'$1_fungible_asset_MintRef'(s: $1_fungible_asset_MintRef): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_fungible_asset_MintRef'(s1: $1_fungible_asset_MintRef, s2: $1_fungible_asset_MintRef): bool { + s1 == s2 +} + +// struct fungible_asset::Supply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:108:5+133 +datatype $1_fungible_asset_Supply { + $1_fungible_asset_Supply($current: int, $maximum: $1_option_Option'u128') +} +function {:inline} $Update'$1_fungible_asset_Supply'_current(s: $1_fungible_asset_Supply, x: int): $1_fungible_asset_Supply { + $1_fungible_asset_Supply(x, s->$maximum) +} +function {:inline} $Update'$1_fungible_asset_Supply'_maximum(s: $1_fungible_asset_Supply, x: $1_option_Option'u128'): $1_fungible_asset_Supply { + $1_fungible_asset_Supply(s->$current, x) +} +function $IsValid'$1_fungible_asset_Supply'(s: $1_fungible_asset_Supply): bool { + $IsValid'u128'(s->$current) + && $IsValid'$1_option_Option'u128''(s->$maximum) +} +function {:inline} $IsEqual'$1_fungible_asset_Supply'(s1: $1_fungible_asset_Supply, s2: $1_fungible_asset_Supply): bool { + $IsEqual'u128'(s1->$current, s2->$current) + && $IsEqual'$1_option_Option'u128''(s1->$maximum, s2->$maximum)} +var $1_fungible_asset_Supply_$memory: $Memory $1_fungible_asset_Supply; + +// struct fungible_asset::Withdraw at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:210:5+84 +datatype $1_fungible_asset_Withdraw { + $1_fungible_asset_Withdraw($store: int, $amount: int) +} +function {:inline} $Update'$1_fungible_asset_Withdraw'_store(s: $1_fungible_asset_Withdraw, x: int): $1_fungible_asset_Withdraw { + $1_fungible_asset_Withdraw(x, s->$amount) +} +function {:inline} $Update'$1_fungible_asset_Withdraw'_amount(s: $1_fungible_asset_Withdraw, x: int): $1_fungible_asset_Withdraw { + $1_fungible_asset_Withdraw(s->$store, x) +} +function $IsValid'$1_fungible_asset_Withdraw'(s: $1_fungible_asset_Withdraw): bool { + $IsValid'address'(s->$store) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_fungible_asset_Withdraw'(s1: $1_fungible_asset_Withdraw, s2: $1_fungible_asset_Withdraw): bool { + s1 == s2 +} + +// fun fungible_asset::generate_transfer_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:474:5+207 +procedure {:inline 1} $1_fungible_asset_generate_transfer_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_fungible_asset_TransferRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_fungible_asset_TransferRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:474:5+1 + assume {:print "$at(43,19865,19866)"} true; + assume {:print "$track_local(43,25,0):", $t0} $t0 == $t0; + + // $t1 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:475:24+62 + assume {:print "$at(43,19970,20032)"} true; + call $t1 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,19970,20032)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(43,25):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack fungible_asset::TransferRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:476:9+24 + assume {:print "$at(43,20042,20066)"} true; + $t3 := $1_fungible_asset_TransferRef($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:476:9+24 + assume {:print "$track_return(43,25,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:477:5+1 + assume {:print "$at(43,20071,20072)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:477:5+1 + assume {:print "$at(43,20071,20072)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:477:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:477:5+1 + assume {:print "$at(43,20071,20072)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun fungible_asset::is_untransferable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:307:5+137 +procedure {:inline 1} $1_fungible_asset_is_untransferable'$1_fungible_asset_Metadata'(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:307:5+1 + assume {:print "$at(43,12857,12858)"} true; + assume {:print "$track_local(43,34,0):", $t0} $t0 == $t0; + + // $t1 := object::object_address<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:308:32+33 + assume {:print "$at(43,12954,12987)"} true; + call $t1 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,12954,12987)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(43,34):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:308:9+6 + $t3 := $ResourceExists($1_fungible_asset_Untransferable_$memory, $t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:308:9+57 + assume {:print "$track_return(43,34,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:309:5+1 + assume {:print "$at(43,12993,12994)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:309:5+1 + assume {:print "$at(43,12993,12994)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:309:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:309:5+1 + assume {:print "$at(43,12993,12994)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun fungible_asset::add_fungibility [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+2215 +procedure {:inline 1} $1_fungible_asset_add_fungibility(_$t0: $1_object_ConstructorRef, _$t1: $1_option_Option'u128', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: $1_string_String, _$t6: $1_string_String) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $signer; + var $t9: $1_string_String; + var $t10: bool; + var $t11: $1_aggregator_v2_Aggregator'u128'; + var $t12: $signer; + var $t13: $1_string_String; + var $t14: $signer; + var $t15: $1_object_Object'$1_fungible_asset_Metadata'; + var $t16: bool; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $signer; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: $1_fungible_asset_Metadata; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: bool; + var $t53: bool; + var $t54: $1_option_Option'u128'; + var $t55: bool; + var $t56: bool; + var $t57: $Mutation ($1_option_Option'u128'); + var $t58: int; + var $t59: $1_option_Option'u128'; + var $t60: bool; + var $t61: bool; + var $t62: $1_fungible_asset_ConcurrentSupply; + var $t63: int; + var $t64: $1_option_Option'u128'; + var $t65: $1_fungible_asset_Supply; + var $t66: $1_object_Object'$1_fungible_asset_Metadata'; + var $t67: Vec (int); + var $t68: $1_string_String; + var $t0: $1_object_ConstructorRef; + var $t1: $1_option_Option'u128'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'u128'': $1_option_Option'u128'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$at(43,10105,10106)"} true; + assume {:print "$track_local(43,0,0):", $t0} $t0 == $t0; + + // trace_local[maximum_supply]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,2):", $t2} $t2 == $t2; + + // trace_local[symbol]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,3):", $t3} $t3 == $t3; + + // trace_local[decimals]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,4):", $t4} $t4 == $t4; + + // trace_local[icon_uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,5):", $t5} $t5 == $t5; + + // trace_local[project_uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:241:5+1 + assume {:print "$track_local(43,0,6):", $t6} $t6 == $t6; + + // $t17 := [102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 58, 58, 97, 100, 100, 95, 102, 117, 110, 103, 105, 98, 105, 108, 105, 116, 121, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:250:41+44 + assume {:print "$at(43,10402,10446)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(102, 117, 110, 103), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 97, 115, 115)), MakeVec4(101, 116, 58, 58)), MakeVec4(97, 100, 100, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 105, 108)), MakeVec4(105, 116, 121, 32)), MakeVec4(124, 32, 101, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:250:23+63 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(43,10384,10447)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // debug::print($t18) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:250:9+78 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(43,10370,10448)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t20 := object::can_generate_delete_ref($t0) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:18+48 + assume {:print "$at(43,10468,10516)"} true; + call $t20 := $1_object_can_generate_delete_ref($t0); + if ($abort_flag) { + assume {:print "$at(43,10468,10516)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t21 := !($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:17+1 + call $t21 := $Not($t20); + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 + assume {:print "$at(43,10459,10564)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 +L0: + + // $t22 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:92+20 + assume {:print "$at(43,10542,10562)"} true; + $t22 := 18; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:68+45 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(43,10518,10563)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 + assume {:print "$at(43,10459,10564)"} true; + assume {:print "$track_abort(43,0):", $t23} $t23 == $t23; + + // $t19 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 + $t19 := $t23; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:252:9+105 + goto L25; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:253:63+15 + assume {:print "$at(43,10628,10643)"} true; +L2: + + // $t24 := object::generate_signer($t0) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:253:39+40 + assume {:print "$at(43,10604,10644)"} true; + call $t24 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(43,10604,10644)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_local[metadata_object_signer]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:253:13+22 + assume {:print "$track_local(43,0,14):", $t24} $t24 == $t24; + + // $t25 := string::length($t2) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:17+21 + assume {:print "$at(43,10662,10683)"} true; + call $t25 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(43,10662,10683)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t26 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:42+15 + $t26 := 32; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:39+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 + if ($t27) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 + assume {:print "$at(43,10654,10740)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 +L3: + + // $t28 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:79+14 + assume {:print "$at(43,10724,10738)"} true; + $t28 := 15; + assume $IsValid'u64'($t28); + + // $t29 := error::out_of_range($t28) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:59+35 + call $t29 := $1_error_out_of_range($t28); + if ($abort_flag) { + assume {:print "$at(43,10704,10739)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 + assume {:print "$at(43,10654,10740)"} true; + assume {:print "$track_abort(43,0):", $t29} $t29 == $t29; + + // $t19 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 + $t19 := $t29; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:254:9+86 + goto L25; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:32+7 + assume {:print "$at(43,10773,10780)"} true; +L5: + + // $t30 := string::length($t3) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:17+23 + assume {:print "$at(43,10758,10781)"} true; + call $t30 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(43,10758,10781)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t31 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:44+17 + $t31 := 10; + assume $IsValid'u64'($t31); + + // $t32 := <=($t30, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:41+2 + call $t32 := $Le($t30, $t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 + assume {:print "$at(43,10750,10842)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 +L6: + + // $t33 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:83+16 + assume {:print "$at(43,10824,10840)"} true; + $t33 := 16; + assume $IsValid'u64'($t33); + + // $t34 := error::out_of_range($t33) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:63+37 + call $t34 := $1_error_out_of_range($t33); + if ($abort_flag) { + assume {:print "$at(43,10804,10841)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 + assume {:print "$at(43,10750,10842)"} true; + assume {:print "$track_abort(43,0):", $t34} $t34 == $t34; + + // $t19 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 + $t19 := $t34; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:255:9+92 + goto L25; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:17+8 + assume {:print "$at(43,10860,10868)"} true; +L8: + + // $t35 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:29+12 + assume {:print "$at(43,10872,10884)"} true; + $t35 := 32; + assume $IsValid'u8'($t35); + + // $t36 := <=($t4, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:26+2 + call $t36 := $Le($t4, $t35); + + // if ($t36) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 + if ($t36) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 + assume {:print "$at(43,10852,10927)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 +L9: + + // $t37 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:63+19 + assume {:print "$at(43,10906,10925)"} true; + $t37 := 17; + assume $IsValid'u64'($t37); + + // $t38 := error::out_of_range($t37) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:43+40 + call $t38 := $1_error_out_of_range($t37); + if ($abort_flag) { + assume {:print "$at(43,10886,10926)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 + assume {:print "$at(43,10852,10927)"} true; + assume {:print "$track_abort(43,0):", $t38} $t38 == $t38; + + // $t19 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 + $t19 := $t38; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:256:9+75 + goto L25; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:32+9 + assume {:print "$at(43,10960,10969)"} true; +L11: + + // $t39 := string::length($t5) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:17+25 + assume {:print "$at(43,10945,10970)"} true; + call $t39 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(43,10945,10970)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t40 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:46+14 + $t40 := 512; + assume $IsValid'u64'($t40); + + // $t41 := <=($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:43+2 + call $t41 := $Le($t39, $t40); + + // if ($t41) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 + if ($t41) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 + assume {:print "$at(43,10937,11025)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 +L12: + + // $t42 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:82+13 + assume {:print "$at(43,11010,11023)"} true; + $t42 := 19; + assume $IsValid'u64'($t42); + + // $t43 := error::out_of_range($t42) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:62+34 + call $t43 := $1_error_out_of_range($t42); + if ($abort_flag) { + assume {:print "$at(43,10990,11024)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 + assume {:print "$at(43,10937,11025)"} true; + assume {:print "$track_abort(43,0):", $t43} $t43 == $t43; + + // $t19 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 + $t19 := $t43; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:257:9+88 + goto L25; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:32+12 + assume {:print "$at(43,11058,11070)"} true; +L14: + + // $t44 := string::length($t6) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:17+28 + assume {:print "$at(43,11043,11071)"} true; + call $t44 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(43,11043,11071)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t45 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:49+14 + $t45 := 512; + assume $IsValid'u64'($t45); + + // $t46 := <=($t44, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:46+2 + call $t46 := $Le($t44, $t45); + + // if ($t46) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 + if ($t46) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 +L16: + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 + assume {:print "$at(43,11035,11126)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 +L15: + + // $t47 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:85+13 + assume {:print "$at(43,11111,11124)"} true; + $t47 := 19; + assume $IsValid'u64'($t47); + + // $t48 := error::out_of_range($t47) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:65+34 + call $t48 := $1_error_out_of_range($t47); + if ($abort_flag) { + assume {:print "$at(43,11091,11125)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 + assume {:print "$at(43,11035,11126)"} true; + assume {:print "$track_abort(43,0):", $t48} $t48 == $t48; + + // $t19 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 + $t19 := $t48; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:258:9+91 + goto L25; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:260:17+22 + assume {:print "$at(43,11145,11167)"} true; +L17: + + // $t49 := pack fungible_asset::Metadata($t2, $t3, $t4, $t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:261:13+151 + assume {:print "$at(43,11181,11332)"} true; + $t49 := $1_fungible_asset_Metadata($t2, $t3, $t4, $t5, $t6); + + // move_to($t49, $t24) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:260:9+7 + assume {:print "$at(43,11137,11144)"} true; + if ($ResourceExists($1_fungible_asset_Metadata_$memory, $t24->$addr)) { + call $ExecFailureAbort(); + } else { + $1_fungible_asset_Metadata_$memory := $ResourceUpdate($1_fungible_asset_Metadata_$memory, $t24->$addr, $t49); + } + if ($abort_flag) { + assume {:print "$at(43,11137,11144)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t50 := [102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 58, 58, 97, 100, 100, 95, 102, 117, 110, 103, 105, 98, 105, 108, 105, 116, 121, 32, 124, 32, 100, 101, 102, 97, 117, 108, 116, 95, 116, 111, 95, 99, 111, 110, 99, 117, 114, 114, 101, 110, 116, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 117, 112, 112, 108, 121] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:270:41+74 + assume {:print "$at(43,11385,11459)"} true; + $t50 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(102, 117, 110, 103), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 97, 115, 115)), MakeVec4(101, 116, 58, 58)), MakeVec4(97, 100, 100, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 105, 108)), MakeVec4(105, 116, 121, 32)), MakeVec4(124, 32, 100, 101)), MakeVec4(102, 97, 117, 108)), MakeVec4(116, 95, 116, 111)), MakeVec4(95, 99, 111, 110)), MakeVec4(99, 117, 114, 114)), MakeVec4(101, 110, 116, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 117, 112)), MakeVec3(112, 108, 121)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:270:23+93 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(43,11367,11460)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // debug::print($t51) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:270:9+108 + call $1_debug_print'$1_string_String'($t51); + if ($abort_flag) { + assume {:print "$at(43,11353,11461)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t52 := features::concurrent_fungible_assets_enabled() on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:223:9+46 + assume {:print "$at(43,9254,9300)"} true; + call $t52 := $1_features_concurrent_fungible_assets_enabled(); + if ($abort_flag) { + assume {:print "$at(43,9254,9300)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // debug::print($t52) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:271:9+54 + assume {:print "$at(43,11471,11525)"} true; + call $1_debug_print'bool'($t52); + if ($abort_flag) { + assume {:print "$at(43,11471,11525)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // $t53 := features::concurrent_fungible_assets_enabled() on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:223:9+46 + assume {:print "$at(43,9254,9300)"} true; + call $t53 := $1_features_concurrent_fungible_assets_enabled(); + if ($abort_flag) { + assume {:print "$at(43,9254,9300)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // if ($t53) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:273:9+593 + assume {:print "$at(43,11536,12129)"} true; + if ($t53) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:45+15 + assume {:print "$at(43,11627,11642)"} true; +L19: + + // $t54 := copy($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:45+15 + assume {:print "$at(43,11627,11642)"} true; + $t54 := $t1; + + // $t55 := opaque begin: option::is_none($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:29+32 + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:29+32 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_none($t54)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:29+32 + assume $IsEqual'bool'($t55, $1_option_spec_is_none'u128'($t54)); + + // $t55 := opaque end: option::is_none($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:29+32 + + // trace_local[unlimited]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:274:17+9 + assume {:print "$track_local(43,0,16):", $t55} $t55 == $t55; + + // if ($t55) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:276:26+215 + assume {:print "$at(43,11733,11948)"} true; + if ($t55) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + assume {:print "$at(43,11770,11814)"} true; +L21: + + // $t11 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + assume {:print "$at(43,11770,11814)"} true; + + // $t56 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + havoc $t56; + + // if ($t56) goto L27 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + if ($t56) { goto L27; } else { goto L26; } + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 +L27: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + assume {:print "$at(43,11770,11814)"} true; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + goto L25; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 +L26: + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + assume {:print "$at(43,11770,11814)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u128''($t11); + + // $t11 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:277:21+44 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:276:26+215 + assume {:print "$at(43,11733,11948)"} true; + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:70+19 + assume {:print "$at(43,11909,11928)"} true; +L20: + + // $t57 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:70+19 + assume {:print "$at(43,11909,11928)"} true; + $t57 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t58 := opaque begin: option::extract($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + + // $t59 := read_ref($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + $t59 := $Dereference($t57); + + // assume Identical($t60, option::spec_is_none($t57)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume ($t60 == $1_option_spec_is_none'u128'($Dereference($t57))); + + // if ($t60) goto L29 else goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + if ($t60) { goto L29; } else { goto L32; } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 +L29: + + // assume And(option::spec_is_none($t57), Eq(262145, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume {:print "$at(43,11893,11929)"} true; + assume ($1_option_spec_is_none'u128'($Dereference($t57)) && $IsEqual'num'(262145, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume {:print "$at(43,11893,11929)"} true; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + goto L25; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 +L28: + + // $t57 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume {:print "$at(43,11893,11929)"} true; + havoc $temp_0'$1_option_Option'u128''; + $t57 := $UpdateMutation($t57, $temp_0'$1_option_Option'u128''); + + // assume And(WellFormed($t57), Le(Len(select option::Option.vec($t57)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume ($IsValid'$1_option_Option'u128''($Dereference($t57)) && (LenVec($Dereference($t57)->$vec) <= 1)); + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume $IsValid'u128'($t58); + + // assume Eq($t58, option::spec_borrow($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume $IsEqual'u128'($t58, $1_option_spec_borrow'u128'($t59)); + + // assume option::spec_is_none($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume $1_option_spec_is_none'u128'($Dereference($t57)); + + // $t58 := opaque end: option::extract($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + + // pack_ref_deep($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + + // write_back[LocalRoot($t1)@]($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + $t1 := $Dereference($t57); + + // trace_local[maximum_supply]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:54+36 + assume {:print "$track_local(43,0,1):", $t1} $t1 == $t1; + + // $t11 := opaque begin: aggregator_v2::create_aggregator($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + + // $t61 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + havoc $t61; + + // if ($t61) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + if ($t61) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 +L31: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + assume {:print "$at(43,11860,11930)"} true; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + goto L25; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 +L30: + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + assume {:print "$at(43,11860,11930)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u128''($t11); + + // $t11 := opaque end: aggregator_v2::create_aggregator($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:279:21+70 + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:275:21+22 + assume {:print "$at(43,11665,11687)"} true; +L22: + + // $t62 := pack fungible_asset::ConcurrentSupply($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:275:45+274 + assume {:print "$at(43,11689,11963)"} true; + $t62 := $1_fungible_asset_ConcurrentSupply($t11); + + // move_to($t62, $t24) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:275:13+7 + if ($ResourceExists($1_fungible_asset_ConcurrentSupply_$memory, $t24->$addr)) { + call $ExecFailureAbort(); + } else { + $1_fungible_asset_ConcurrentSupply_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentSupply_$memory, $t24->$addr, $t62); + } + if ($abort_flag) { + assume {:print "$at(43,11657,11664)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:281:15+1 + assume {:print "$at(43,11964,11965)"} true; + goto L23; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:283:21+22 + assume {:print "$at(43,12003,12025)"} true; +L18: + + // $t63 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:284:26+1 + assume {:print "$at(43,12061,12062)"} true; + $t63 := 0; + assume $IsValid'u128'($t63); + + // $t64 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:285:26+14 + assume {:print "$at(43,12089,12103)"} true; + $t64 := $t1; + + // $t65 := pack fungible_asset::Supply($t63, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:283:45+90 + assume {:print "$at(43,12027,12117)"} true; + $t65 := $1_fungible_asset_Supply($t63, $t64); + + // move_to($t65, $t24) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:283:13+7 + if ($ResourceExists($1_fungible_asset_Supply_$memory, $t24->$addr)) { + call $ExecFailureAbort(); + } else { + $1_fungible_asset_Supply_$memory := $ResourceUpdate($1_fungible_asset_Supply_$memory, $t24->$addr, $t65); + } + if ($abort_flag) { + assume {:print "$at(43,11995,12002)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:289:65+15 + assume {:print "$at(43,12196,12211)"} true; +L23: + + // $t66 := object::object_from_constructor_ref($t0) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:289:19+62 + assume {:print "$at(43,12150,12212)"} true; + call $t66 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,12150,12212)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_local[ret]($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:289:13+3 + assume {:print "$track_local(43,0,15):", $t66} $t66 == $t66; + + // $t67 := [102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 58, 58, 97, 100, 100, 95, 102, 117, 110, 103, 105, 98, 105, 108, 105, 116, 121, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:291:41+43 + assume {:print "$at(43,12255,12298)"} true; + $t67 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(102, 117, 110, 103), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 97, 115, 115)), MakeVec4(101, 116, 58, 58)), MakeVec4(97, 100, 100, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 105, 108)), MakeVec4(105, 116, 121, 32)), MakeVec4(124, 32, 101, 120)), MakeVec4(105, 116, 101, 100)); + assume $IsValid'vec'u8''($t67); + + // $t68 := string::utf8($t67) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:291:23+62 + call $t68 := $1_string_utf8($t67); + if ($abort_flag) { + assume {:print "$at(43,12237,12299)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // debug::print($t68) on_abort goto L25 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:291:9+77 + call $1_debug_print'$1_string_String'($t68); + if ($abort_flag) { + assume {:print "$at(43,12223,12300)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(43,0):", $t19} $t19 == $t19; + goto L25; + } + + // trace_return[0]($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:293:9+3 + assume {:print "$at(43,12311,12314)"} true; + assume {:print "$track_return(43,0,0):", $t66} $t66 == $t66; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:294:5+1 + assume {:print "$at(43,12319,12320)"} true; +L24: + + // return $t66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:294:5+1 + assume {:print "$at(43,12319,12320)"} true; + $ret0 := $t66; + return; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:294:5+1 +L25: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:294:5+1 + assume {:print "$at(43,12319,12320)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + + // label L32 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L32: + + // drop($t57) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L28 at :1:1+10 + goto L28; + +} + +// fun fungible_asset::asset_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:707:5+91 +procedure {:inline 1} $1_fungible_asset_asset_metadata(_$t0: $1_fungible_asset_FungibleAsset) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[fa]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:707:5+1 + assume {:print "$at(43,29754,29755)"} true; + assume {:print "$track_local(43,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.metadata($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:708:9+11 + assume {:print "$at(43,29828,29839)"} true; + $t1 := $t0->$metadata; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:708:9+11 + assume {:print "$track_return(43,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:709:5+1 + assume {:print "$at(43,29844,29845)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:709:5+1 + assume {:print "$at(43,29844,29845)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::balance [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:594:5+639 +procedure {:inline 1} $1_fungible_asset_balance'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: int) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_fungible_asset_FungibleStore; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: bool; + var $t19: $1_fungible_asset_ConcurrentFungibleBalance; + var $t20: $1_aggregator_v2_Aggregator'u64'; + var $t21: bool; + var $t22: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:594:5+1 + assume {:print "$at(43,24540,24541)"} true; + assume {:print "$track_local(43,4,0):", $t0} $t0 == $t0; + + // $t7 := object::object_address<#0>($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:595:26+30 + assume {:print "$at(43,24667,24697)"} true; + call $t7 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,24667,24697)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[store_addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:595:13+10 + assume {:print "$track_local(43,4,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:567:9+6 + assume {:print "$at(43,23690,23696)"} true; + $t9 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 + assume {:print "$at(43,24707,25173)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:597:55+6 + assume {:print "$at(43,24800,24806)"} true; +L1: + + // $t10 := object::object_address<#0>($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t10 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[store_addr#164]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,4,5):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t11 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t10); + + // if ($t11) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t11) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L2: + + // $t12 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t12 := 23; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,4):", $t13} $t13 == $t13; + + // $t8 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t8 := $t13; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L13; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L4: + + // $t14 := get_global($t10) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + goto L13; + } + + // $t15 := get_field.balance($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:597:33+37 + assume {:print "$at(43,24778,24815)"} true; + $t15 := $t14->$balance; + + // trace_local[store_balance]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:597:17+13 + assume {:print "$track_local(43,4,6):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:34+1 + assume {:print "$at(43,24850,24851)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t17 := ==($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:31+2 + $t17 := $IsEqual'u64'($t15, $t16); + + // if ($t17) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 + if ($t17) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:81+10 +L6: + + // $t1 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:573:9+6 + assume {:print "$at(43,23945,23951)"} true; + $t1 := $ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t7); + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 + assume {:print "$at(43,24833,24908)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 +L5: + + // $t18 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 + assume {:print "$at(43,24833,24908)"} true; + $t18 := false; + assume $IsValid'bool'($t18); + + // $t1 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 + $t1 := $t18; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:17+75 +L7: + + // if ($t1) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:13+303 + assume {:print "$at(43,24829,25132)"} true; + if ($t1) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:599:81+10 + assume {:print "$at(43,24992,25002)"} true; +L9: + + // $t19 := get_global($t7) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:599:40+13 + assume {:print "$at(43,24951,24964)"} true; + if (!$ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(43,24951,24964)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + goto L13; + } + + // $t20 := get_field.balance($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:37+25 + assume {:print "$at(43,25041,25066)"} true; + $t20 := $t19->$balance; + + // $t2 := opaque begin: aggregator_v2::read($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + havoc $t21; + + // if ($t21) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + if ($t21) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 +L15: + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + assume {:print "$at(43,25021,25067)"} true; + assume {:print "$track_abort(43,4):", $t8} $t8 == $t8; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 +L14: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + assume {:print "$at(43,25021,25067)"} true; + assume $IsValid'u64'($t2); + + // $t2 := opaque end: aggregator_v2::read($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:600:17+46 + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:13+303 + assume {:print "$at(43,24829,25132)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:602:17+13 + assume {:print "$at(43,25105,25118)"} true; +L8: + + // $t2 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:13+303 + assume {:print "$at(43,24829,25132)"} true; + $t2 := $t15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:598:13+303 +L10: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 + assume {:print "$at(43,24707,25173)"} true; + $t3 := $t2; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 + goto L11; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:605:13+1 + assume {:print "$at(43,25162,25163)"} true; +L0: + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:605:13+1 + assume {:print "$at(43,25162,25163)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 + assume {:print "$at(43,24707,25173)"} true; + $t3 := $t22; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 +L11: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:596:9+466 + assume {:print "$at(43,24707,25173)"} true; + assume {:print "$track_return(43,4,0):", $t3} $t3 == $t3; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:607:5+1 + assume {:print "$at(43,25178,25179)"} true; +L12: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:607:5+1 + assume {:print "$at(43,25178,25179)"} true; + $ret0 := $t3; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:607:5+1 +L13: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:607:5+1 + assume {:print "$at(43,25178,25179)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun fungible_asset::burn_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:897:5+256 +procedure {:inline 1} $1_fungible_asset_burn_internal(_$t0: $1_fungible_asset_FungibleAsset) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: int; + var $t5: int; + var $t0: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[fa]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:897:5+1 + assume {:print "$at(43,37247,37248)"} true; + assume {:print "$track_local(43,7,0):", $t0} $t0 == $t0; + + // ($t3, $t4) := unpack fungible_asset::FungibleAsset($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:900:13+66 + assume {:print "$at(43,37366,37432)"} true; + $t3 := $t0->$metadata; + $t4 := $t0->$amount; + + // trace_local[amount]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:902:13+6 + assume {:print "$at(43,37416,37422)"} true; + assume {:print "$track_local(43,7,1):", $t4} $t4 == $t4; + + // trace_local[metadata]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:901:13+8 + assume {:print "$at(43,37394,37402)"} true; + assume {:print "$track_local(43,7,2):", $t3} $t3 == $t3; + + // fungible_asset::decrease_supply($t3, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:904:9+34 + assume {:print "$at(43,37447,37481)"} true; + call $1_fungible_asset_decrease_supply'$1_fungible_asset_Metadata'($t3, $t4); + if ($abort_flag) { + assume {:print "$at(43,37447,37481)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:905:9+6 + assume {:print "$at(43,37491,37497)"} true; + assume {:print "$track_return(43,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:906:5+1 + assume {:print "$at(43,37502,37503)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:906:5+1 + assume {:print "$at(43,37502,37503)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:906:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:906:5+1 + assume {:print "$at(43,37502,37503)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::burn_ref_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:722:5+90 +procedure {:inline 1} $1_fungible_asset_burn_ref_metadata(_$t0: $1_fungible_asset_BurnRef) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_fungible_asset_BurnRef; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:722:5+1 + assume {:print "$at(43,30244,30245)"} true; + assume {:print "$track_local(43,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.metadata($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:723:9+12 + assume {:print "$at(43,30316,30328)"} true; + $t1 := $t0->$metadata; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:723:9+12 + assume {:print "$track_return(43,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:724:5+1 + assume {:print "$at(43,30333,30334)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:724:5+1 + assume {:print "$at(43,30333,30334)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::create_store [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:745:5+765 +procedure {:inline 1} $1_fungible_asset_create_store'$1_fungible_asset_Metadata'(_$t0: $1_object_ConstructorRef, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: $signer; + var $t5: int; + var $t6: $1_object_Object'$1_fungible_asset_Metadata'; + var $t7: int; + var $t8: bool; + var $t9: $1_fungible_asset_FungibleStore; + var $t10: bool; + var $t11: bool; + var $t12: $1_aggregator_v2_Aggregator'u64'; + var $t13: bool; + var $t14: $1_fungible_asset_ConcurrentFungibleBalance; + var $t15: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t0: $1_object_ConstructorRef; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:745:5+1 + assume {:print "$at(43,31166,31167)"} true; + assume {:print "$track_local(43,9,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:745:5+1 + assume {:print "$track_local(43,9,1):", $t1} $t1 == $t1; + + // $t4 := object::generate_signer($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:749:26+40 + assume {:print "$at(43,31326,31366)"} true; + call $t4 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(43,31326,31366)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[store_obj]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:749:13+9 + assume {:print "$track_local(43,9,3):", $t4} $t4 == $t4; + + // $t6 := object::convert<#0, fungible_asset::Metadata>($t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:751:23+25 + assume {:print "$at(43,31433,31458)"} true; + call $t6 := $1_object_convert'$1_fungible_asset_Metadata_$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(43,31433,31458)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:752:22+1 + assume {:print "$at(43,31481,31482)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:753:21+5 + assume {:print "$at(43,31504,31509)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // $t9 := pack fungible_asset::FungibleStore($t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:750:28+125 + assume {:print "$at(43,31395,31520)"} true; + $t9 := $1_fungible_asset_FungibleStore($t6, $t7, $t8); + + // move_to($t9, $t4) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:750:9+7 + if ($ResourceExists($1_fungible_asset_FungibleStore_$memory, $t4->$addr)) { + call $ExecFailureAbort(); + } else { + $1_fungible_asset_FungibleStore_$memory := $ResourceUpdate($1_fungible_asset_FungibleStore_$memory, $t4->$addr, $t9); + } + if ($abort_flag) { + assume {:print "$at(43,31376,31383)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t10 := fungible_asset::is_untransferable<#0>($t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:756:13+27 + assume {:print "$at(43,31536,31563)"} true; + call $t10 := $1_fungible_asset_is_untransferable'$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(43,31536,31563)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:756:9+101 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:757:40+15 + assume {:print "$at(43,31606,31621)"} true; +L1: + + // object::set_untransferable($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:757:13+43 + assume {:print "$at(43,31579,31622)"} true; + call $1_object_set_untransferable($t0); + if ($abort_flag) { + assume {:print "$at(43,31579,31622)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:231:9+58 + assume {:print "$at(43,9513,9571)"} true; +L0: + + // $t11 := features::default_to_concurrent_fungible_balance_enabled() on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:231:9+58 + assume {:print "$at(43,9513,9571)"} true; + call $t11 := $1_features_default_to_concurrent_fungible_balance_enabled(); + if ($abort_flag) { + assume {:print "$at(43,9513,9571)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // if ($t11) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:760:9+203 + assume {:print "$at(43,31644,31847)"} true; + if ($t11) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:761:21+9 + assume {:print "$at(43,31712,31721)"} true; +L3: + + // $t12 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + assume {:print "$at(43,31776,31820)"} true; + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + havoc $t13; + + // if ($t13) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + if ($t13) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 +L8: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + assume {:print "$at(43,31776,31820)"} true; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + goto L6; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 +L7: + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + assume {:print "$at(43,31776,31820)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t12); + + // $t12 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:762:26+44 + + // $t14 := pack fungible_asset::ConcurrentFungibleBalance($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:761:32+112 + assume {:print "$at(43,31723,31835)"} true; + $t14 := $1_fungible_asset_ConcurrentFungibleBalance($t12); + + // move_to($t14, $t4) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:761:13+7 + if ($ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t4->$addr)) { + call $ExecFailureAbort(); + } else { + $1_fungible_asset_ConcurrentFungibleBalance_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t4->$addr, $t14); + } + if ($abort_flag) { + assume {:print "$at(43,31704,31711)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:763:15+1 + assume {:print "$at(43,31836,31837)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:760:9+203 + assume {:print "$at(43,31644,31847)"} true; +L2: + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:766:60+15 + assume {:print "$at(43,31909,31924)"} true; +L4: + + // $t15 := object::object_from_constructor_ref($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:766:9+67 + assume {:print "$at(43,31858,31925)"} true; + call $t15 := $1_object_object_from_constructor_ref'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,31858,31925)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:766:9+67 + assume {:print "$track_return(43,9,0):", $t15} $t15 == $t15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:767:5+1 + assume {:print "$at(43,31930,31931)"} true; +L5: + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:767:5+1 + assume {:print "$at(43,31930,31931)"} true; + $ret0 := $t15; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:767:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:767:5+1 + assume {:print "$at(43,31930,31931)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::decrease_supply [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1099:5+1053 +procedure {:inline 1} $1_fungible_asset_decrease_supply'$1_fungible_asset_Metadata'(_$t0: $1_object_Object'$1_fungible_asset_Metadata', _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_fungible_asset_Supply); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: $Mutation ($1_fungible_asset_ConcurrentSupply); + var $t10: $Mutation ($1_aggregator_v2_Aggregator'u128'); + var $t11: int; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $Mutation ($1_fungible_asset_Supply); + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: $Mutation (int); + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u128'': $1_aggregator_v2_Aggregator'u128'; + var $temp_0'$1_fungible_asset_Supply': $1_fungible_asset_Supply; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1099:5+1 + assume {:print "$at(43,45580,45581)"} true; + assume {:print "$track_local(43,11,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1099:5+1 + assume {:print "$track_local(43,11,1):", $t1} $t1 == $t1; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1100:23+1 + assume {:print "$at(43,45701,45702)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := ==($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1100:20+2 + $t5 := $IsEqual'u64'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1100:9+47 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1101:13+6 + assume {:print "$at(43,45718,45724)"} true; +L1: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1101:13+6 + assume {:print "$at(43,45718,45724)"} true; + goto L16; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1103:55+8 + assume {:print "$at(43,45790,45798)"} true; +L0: + + // $t6 := object::object_address<#0>($t0) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1103:32+32 + assume {:print "$at(43,45767,45799)"} true; + call $t6 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,45767,45799)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_local[metadata_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1103:13+16 + assume {:print "$track_local(43,11,2):", $t6} $t6 == $t6; + + // $t8 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1105:13+6 + assume {:print "$at(43,45814,45820)"} true; + $t8 := $ResourceExists($1_fungible_asset_ConcurrentSupply_$memory, $t6); + + // if ($t8) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1105:9+817 + if ($t8) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1106:62+16 + assume {:print "$at(43,45921,45937)"} true; +L3: + + // $t9 := borrow_global($t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1106:26+17 + assume {:print "$at(43,45885,45902)"} true; + if (!$ResourceExists($1_fungible_asset_ConcurrentSupply_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(43,45885,45902)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // $t10 := borrow_field.current($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:40+19 + assume {:print "$at(43,46001,46020)"} true; + $t10 := $ChildMutation($t9, 0, $Dereference($t9)->$current); + + // $t11 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:61+16 + call $t11 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,46022,46038)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // $t12 := opaque begin: aggregator_v2::try_sub($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + havoc $t13; + + // if ($t13) goto L20 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + if ($t13) { goto L20; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 +L19: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + assume {:print "$at(43,45978,46039)"} true; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + goto L17; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 +L18: + + // $t10 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + assume {:print "$at(43,45978,46039)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u128''; + $t10 := $UpdateMutation($t10, $temp_0'$1_aggregator_v2_Aggregator'u128''); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + assume $IsValid'$1_aggregator_v2_Aggregator'u128''($Dereference($t10)); + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + assume $IsValid'bool'($t12); + + // $t12 := opaque end: aggregator_v2::try_sub($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + + // write_back[Reference($t9).current (aggregator_v2::Aggregator)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + $t9 := $UpdateMutation($t9, $Update'$1_fungible_asset_ConcurrentSupply'_current($Dereference($t9), $Dereference($t10))); + + // write_back[fungible_asset::ConcurrentSupply@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1109:17+61 + $1_fungible_asset_ConcurrentSupply_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentSupply_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // if ($t12) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 + assume {:print "$at(43,45953,46109)"} true; + if ($t12) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 +L5: + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 + assume {:print "$at(43,45953,46109)"} true; + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1110:37+17 + assume {:print "$at(43,46077,46094)"} true; +L4: + + // $t14 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1110:37+17 + assume {:print "$at(43,46077,46094)"} true; + $t14 := 20; + assume $IsValid'u64'($t14); + + // $t15 := error::out_of_range($t14) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1110:17+38 + call $t15 := $1_error_out_of_range($t14); + if ($abort_flag) { + assume {:print "$at(43,46057,46095)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 + assume {:print "$at(43,45953,46109)"} true; + assume {:print "$track_abort(43,11):", $t15} $t15 == $t15; + + // $t7 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 + $t7 := $t15; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1108:13+156 + goto L17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1105:9+817 + assume {:print "$at(43,45810,46627)"} true; +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1105:9+817 + assume {:print "$at(43,45810,46627)"} true; + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1112:35+16 + assume {:print "$at(43,46145,46161)"} true; +L2: + + // $t16 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1112:20+6 + assume {:print "$at(43,46130,46136)"} true; + $t16 := $ResourceExists($1_fungible_asset_Supply_$memory, $t6); + + // if ($t16) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1112:16+501 + if ($t16) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:36+16 + assume {:print "$at(43,46201,46217)"} true; +L9: + + // $t17 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:21+6 + assume {:print "$at(43,46186,46192)"} true; + $t17 := $ResourceExists($1_fungible_asset_Supply_$memory, $t6); + + // if ($t17) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 + if ($t17) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 +L11: + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 + assume {:print "$at(43,46178,46256)"} true; + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:72+17 +L10: + + // $t18 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:72+17 + assume {:print "$at(43,46237,46254)"} true; + $t18 := 21; + assume $IsValid'u64'($t18); + + // $t19 := error::not_found($t18) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:55+35 + call $t19 := $1_error_not_found($t18); + if ($abort_flag) { + assume {:print "$at(43,46220,46255)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 + assume {:print "$at(43,46178,46256)"} true; + assume {:print "$track_abort(43,11):", $t19} $t19 == $t19; + + // $t7 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 + $t7 := $t19; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1113:13+78 + goto L17; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1114:52+16 + assume {:print "$at(43,46309,46325)"} true; +L12: + + // $t20 := borrow_global($t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1114:26+17 + assume {:print "$at(43,46283,46300)"} true; + if (!$ResourceExists($1_fungible_asset_Supply_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_fungible_asset_Supply_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(43,46283,46300)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_local[supply#1]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1114:17+6 + $temp_0'$1_fungible_asset_Supply' := $Dereference($t20); + assume {:print "$track_local(43,11,3):", $temp_0'$1_fungible_asset_Supply'} $temp_0'$1_fungible_asset_Supply' == $temp_0'$1_fungible_asset_Supply'; + + // $t21 := get_field.current($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1116:17+14 + assume {:print "$at(43,46365,46379)"} true; + $t21 := $Dereference($t20)->$current; + + // $t22 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1116:35+16 + call $t22 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,46383,46399)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // $t23 := >=($t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1116:32+2 + call $t23 := $Ge($t21, $t22); + + // if ($t23) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + assume {:print "$at(43,46340,46470)"} true; + if ($t23) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 +L14: + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + assume {:print "$at(43,46340,46470)"} true; + goto L15; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 +L13: + + // pack_ref_deep($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + assume {:print "$at(43,46340,46470)"} true; + + // drop($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + + // $t24 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1117:38+17 + assume {:print "$at(43,46438,46455)"} true; + $t24 := 20; + assume $IsValid'u64'($t24); + + // $t25 := error::invalid_state($t24) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1117:17+39 + call $t25 := $1_error_invalid_state($t24); + if ($abort_flag) { + assume {:print "$at(43,46417,46456)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + assume {:print "$at(43,46340,46470)"} true; + assume {:print "$track_abort(43,11):", $t25} $t25 == $t25; + + // $t7 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + $t7 := $t25; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1115:13+130 + goto L17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:45+17 + assume {:print "$at(43,46597,46614)"} true; +L8: + + // $t26 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:45+17 + assume {:print "$at(43,46597,46614)"} true; + $t26 := 21; + assume $IsValid'u64'($t26); + + // $t27 := error::not_found($t26) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:28+35 + call $t27 := $1_error_not_found($t26); + if ($abort_flag) { + assume {:print "$at(43,46580,46615)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:13+51 + assume {:print "$at(43,46565,46616)"} true; + assume {:print "$track_abort(43,11):", $t27} $t27 == $t27; + + // $t7 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:13+51 + $t7 := $t27; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1121:13+51 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:30+6 + assume {:print "$at(43,46501,46507)"} true; +L15: + + // $t28 := get_field.current($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:30+14 + assume {:print "$at(43,46501,46515)"} true; + $t28 := $Dereference($t20)->$current; + + // $t29 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:47+16 + call $t29 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,46518,46534)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // $t30 := -($t28, $t29) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:45+1 + call $t30 := $Sub($t28, $t29); + if ($abort_flag) { + assume {:print "$at(43,46516,46517)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,11):", $t7} $t7 == $t7; + goto L17; + } + + // $t31 := borrow_field.current($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:13+14 + $t31 := $ChildMutation($t20, 0, $Dereference($t20)->$current); + + // write_ref($t31, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:13+50 + $t31 := $UpdateMutation($t31, $t30); + + // write_back[Reference($t20).current (u128)]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:13+50 + $t20 := $UpdateMutation($t20, $Update'$1_fungible_asset_Supply'_current($Dereference($t20), $Dereference($t31))); + + // pack_ref_deep($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:13+50 + + // write_back[fungible_asset::Supply@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1119:13+50 + $1_fungible_asset_Supply_$memory := $ResourceUpdate($1_fungible_asset_Supply_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1105:9+817 + assume {:print "$at(43,45810,46627)"} true; +L7: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1123:5+1 + assume {:print "$at(43,46632,46633)"} true; +L16: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1123:5+1 + assume {:print "$at(43,46632,46633)"} true; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1123:5+1 +L17: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1123:5+1 + assume {:print "$at(43,46632,46633)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L20 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L20: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L19 at :1:1+10 + goto L19; + +} + +// fun fungible_asset::deposit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:834:5+249 +procedure {:inline 1} $1_fungible_asset_deposit'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: $1_fungible_asset_FungibleAsset) returns () +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:834:5+1 + assume {:print "$at(43,34892,34893)"} true; + assume {:print "$track_local(43,12,0):", $t0} $t0 == $t0; + + // trace_local[fa]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:834:5+1 + assume {:print "$track_local(43,12,1):", $t1} $t1 == $t1; + + // $t2 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:835:37+4 + assume {:print "$at(43,35067,35071)"} true; + $t2 := true; + assume $IsValid'bool'($t2); + + // fungible_asset::deposit_sanity_check<#0>($t0, $t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:835:9+33 + call $1_fungible_asset_deposit_sanity_check'$1_fungible_asset_FungibleStore'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(43,35039,35072)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := object::object_address<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:836:26+30 + assume {:print "$at(43,35099,35129)"} true; + call $t4 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,35099,35129)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,12):", $t3} $t3 == $t3; + goto L2; + } + + // fungible_asset::deposit_internal($t4, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:836:9+52 + call $1_fungible_asset_deposit_internal($t4, $t1); + if ($abort_flag) { + assume {:print "$at(43,35082,35134)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,12):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:837:5+1 + assume {:print "$at(43,35140,35141)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:837:5+1 + assume {:print "$at(43,35140,35141)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:837:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:837:5+1 + assume {:print "$at(43,35140,35141)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun fungible_asset::deposit_dispatch_function [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:648:5+458 +procedure {:inline 1} $1_fungible_asset_deposit_dispatch_function'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: $1_option_Option'$1_function_info_FunctionInfo') +{ + // declare local variables + var $t1: $1_option_Option'$1_function_info_FunctionInfo'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_fungible_asset_FungibleStore; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: int; + var $t12: bool; + var $t13: $1_fungible_asset_DispatchFunctionStore; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_option_Option'$1_function_info_FunctionInfo'': $1_option_Option'$1_function_info_FunctionInfo'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:648:5+1 + assume {:print "$at(43,27011,27012)"} true; + assume {:print "$track_local(43,13,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t4 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,13):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[store_addr#169]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,13,3):", $t4} $t4 == $t4; + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t6 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L0: + + // $t7 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t7 := 23; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,13):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,13):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t5 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L2: + + // $t9 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,13):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.metadata($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:650:52+18 + assume {:print "$at(43,27249,27267)"} true; + $t10 := $t9->$metadata; + + // $t11 := object::object_address($t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:650:29+42 + call $t11 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(43,27226,27268)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,13):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[metadata_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:650:13+13 + assume {:print "$track_local(43,13,2):", $t11} $t11 == $t11; + + // $t12 := exists($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:651:12+6 + assume {:print "$at(43,27281,27287)"} true; + $t12 := $ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:651:9+185 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:652:50+13 + assume {:print "$at(43,27378,27391)"} true; +L4: + + // $t13 := get_global($t11) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:652:13+13 + assume {:print "$at(43,27341,27354)"} true; + if (!$ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $t11); + } + if ($abort_flag) { + assume {:print "$at(43,27341,27354)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,13):", $t5} $t5 == $t5; + goto L7; + } + + // $t1 := get_field.deposit_function($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:652:13+68 + $t1 := $t13->$deposit_function; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:651:9+185 + assume {:print "$at(43,27278,27463)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:654:13+14 + assume {:print "$at(43,27439,27453)"} true; +L3: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:654:13+14 + assume {:print "$at(43,27439,27453)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:654:13+14 + assume ($IsValid'$1_option_Option'$1_function_info_FunctionInfo''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:654:13+14 + assume $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''($t1, $1_option_spec_none'$1_function_info_FunctionInfo'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:654:13+14 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:651:9+185 + assume {:print "$at(43,27278,27463)"} true; +L5: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:651:9+185 + assume {:print "$at(43,27278,27463)"} true; + assume {:print "$track_return(43,13,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:656:5+1 + assume {:print "$at(43,27468,27469)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:656:5+1 + assume {:print "$at(43,27468,27469)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:656:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:656:5+1 + assume {:print "$at(43,27468,27469)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::deposit_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1026:5+886 +procedure {:inline 1} $1_fungible_asset_deposit_internal(_$t0: int, _$t1: $1_fungible_asset_FungibleAsset) returns () +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: $Mutation ($1_fungible_asset_FungibleStore); + var $t6: $1_object_Object'$1_fungible_asset_Metadata'; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation ($1_fungible_asset_FungibleStore); + var $t13: $1_object_Object'$1_fungible_asset_Metadata'; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: $Mutation ($1_fungible_asset_ConcurrentFungibleBalance); + var $t24: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t28: $1_fungible_asset_Deposit; + var $t0: int; + var $t1: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleStore': $1_fungible_asset_FungibleStore; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1026:5+1 + assume {:print "$at(43,42283,42284)"} true; + assume {:print "$track_local(43,14,0):", $t0} $t0 == $t0; + + // trace_local[fa]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1026:5+1 + assume {:print "$track_local(43,14,1):", $t1} $t1 == $t1; + + // ($t6, $t7) := unpack fungible_asset::FungibleAsset($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1027:13+34 + assume {:print "$at(43,42423,42457)"} true; + $t6 := $t1->$metadata; + $t7 := $t1->$amount; + + // trace_local[amount]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1027:39+6 + assume {:print "$track_local(43,14,3):", $t7} $t7 == $t7; + + // trace_local[metadata]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1027:29+8 + assume {:print "$track_local(43,14,4):", $t6} $t6 == $t6; + + // $t8 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:17+6 + assume {:print "$at(43,42480,42486)"} true; + $t8 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 + assume {:print "$at(43,42472,42559)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:69+25 +L0: + + // $t9 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:69+25 + assume {:print "$at(43,42532,42557)"} true; + $t9 := 23; + assume $IsValid'u64'($t9); + + // $t10 := error::not_found($t9) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:52+43 + call $t10 := $1_error_not_found($t9); + if ($abort_flag) { + assume {:print "$at(43,42515,42558)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 + assume {:print "$at(43,42472,42559)"} true; + assume {:print "$track_abort(43,14):", $t10} $t10 == $t10; + + // $t11 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 + $t11 := $t10; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1028:9+87 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1029:54+10 + assume {:print "$at(43,42614,42624)"} true; +L2: + + // $t12 := borrow_global($t0) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1029:21+17 + assume {:print "$at(43,42581,42598)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(43,42581,42598)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // trace_local[store]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1029:13+5 + $temp_0'$1_fungible_asset_FungibleStore' := $Dereference($t12); + assume {:print "$track_local(43,14,5):", $temp_0'$1_fungible_asset_FungibleStore'} $temp_0'$1_fungible_asset_FungibleStore' == $temp_0'$1_fungible_asset_FungibleStore'; + + // $t13 := get_field.metadata($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:29+14 + assume {:print "$at(43,42655,42669)"} true; + $t13 := $Dereference($t12)->$metadata; + + // $t14 := ==($t6, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:26+2 + $t14 := $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t6, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + assume {:print "$at(43,42635,42731)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 +L3: + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + assume {:print "$at(43,42635,42731)"} true; + + // $t15 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:69+34 + $t15 := 11; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:45+59 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(43,42671,42730)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + assume {:print "$at(43,42635,42731)"} true; + assume {:print "$track_abort(43,14):", $t16} $t16 == $t16; + + // $t11 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + $t11 := $t16; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1030:9+96 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:13+6 + assume {:print "$at(43,42746,42752)"} true; +L5: + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:23+1 + assume {:print "$at(43,42756,42757)"} true; + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := ==($t7, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:20+2 + $t18 := $IsEqual'u64'($t7, $t17); + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:9+23 + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:26+6 +L7: + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:26+6 + assume {:print "$at(43,42759,42765)"} true; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1032:26+6 + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+5 + assume {:print "$at(43,42780,42785)"} true; +L6: + + // $t19 := get_field.balance($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+13 + assume {:print "$at(43,42780,42793)"} true; + $t19 := $Dereference($t12)->$balance; + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:30+1 + $t20 := 0; + assume $IsValid'u64'($t20); + + // $t21 := ==($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:27+2 + $t21 := $IsEqual'u64'($t19, $t20); + + // if ($t21) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 + if ($t21) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:77+10 +L9: + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:573:9+6 + assume {:print "$at(43,23945,23951)"} true; + $t2 := $ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 + assume {:print "$at(43,42780,42855)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 +L8: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 + assume {:print "$at(43,42780,42855)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t2 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 + $t2 := $t22; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:13+75 +L10: + + // if ($t2) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1034:9+325 + assume {:print "$at(43,42776,43101)"} true; + if ($t2) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1035:13+79 + assume {:print "$at(43,42871,42950)"} true; +L12: + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1035:13+79 + assume {:print "$at(43,42871,42950)"} true; + + // $t23 := borrow_global($t0) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1035:36+17 + if (!$ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(43,42894,42911)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // $t24 := borrow_field.balance($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1036:32+29 + assume {:print "$at(43,42983,43012)"} true; + $t24 := $ChildMutation($t23, 0, $Dereference($t23)->$balance); + + // aggregator_v2::add($t24, $t7) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1036:13+57 + call $t24 := $1_aggregator_v2_add'u64'($t24, $t7); + if ($abort_flag) { + assume {:print "$at(43,42964,43021)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // write_back[Reference($t23).balance (aggregator_v2::Aggregator)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1036:13+57 + $t23 := $UpdateMutation($t23, $Update'$1_fungible_asset_ConcurrentFungibleBalance'_balance($Dereference($t23), $Dereference($t24))); + + // write_back[fungible_asset::ConcurrentFungibleBalance@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1036:13+57 + $1_fungible_asset_ConcurrentFungibleBalance_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentFungibleBalance_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1036:70+1 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:29+5 + assume {:print "$at(43,43068,43073)"} true; +L11: + + // $t25 := get_field.balance($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:29+13 + assume {:print "$at(43,43068,43081)"} true; + $t25 := $Dereference($t12)->$balance; + + // $t26 := +($t25, $t7) on_abort goto L15 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:43+1 + call $t26 := $AddU64($t25, $t7); + if ($abort_flag) { + assume {:print "$at(43,43082,43083)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(43,14):", $t11} $t11 == $t11; + goto L15; + } + + // $t27 := borrow_field.balance($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:13+13 + $t27 := $ChildMutation($t12, 1, $Dereference($t12)->$balance); + + // write_ref($t27, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:13+38 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t12).balance (u64)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:13+38 + $t12 := $UpdateMutation($t12, $Update'$1_fungible_asset_FungibleStore'_balance($Dereference($t12), $Dereference($t27))); + + // write_back[fungible_asset::FungibleStore@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1038:13+38 + $1_fungible_asset_FungibleStore_$memory := $ResourceUpdate($1_fungible_asset_FungibleStore_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1041:38+10 + assume {:print "$at(43,43141,43151)"} true; +L13: + + // $t28 := pack fungible_asset::Deposit($t0, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1041:21+37 + assume {:print "$at(43,43124,43161)"} true; + $t28 := $1_fungible_asset_Deposit($t0, $t7); + + // opaque begin: event::emit($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1041:9+50 + + // opaque end: event::emit($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1041:9+50 + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1042:5+1 + assume {:print "$at(43,43168,43169)"} true; +L14: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1042:5+1 + assume {:print "$at(43,43168,43169)"} true; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1042:5+1 +L15: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1042:5+1 + assume {:print "$at(43,43168,43169)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun fungible_asset::deposit_sanity_check [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:821:5+474 +procedure {:inline 1} $1_fungible_asset_deposit_sanity_check'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: bool) returns () +{ + // declare local variables + var $t2: bool; + var $t3: $1_fungible_asset_FungibleStore; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_fungible_asset_FungibleStore; + var $t11: bool; + var $t12: bool; + var $t13: $1_object_Object'$1_fungible_asset_Metadata'; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: bool; + var $temp_0'$1_fungible_asset_FungibleStore': $1_fungible_asset_FungibleStore; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:821:5+1 + assume {:print "$at(43,34353,34354)"} true; + assume {:print "$track_local(43,15,0):", $t0} $t0 == $t0; + + // trace_local[abort_on_dispatch]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:821:5+1 + assume {:print "$track_local(43,15,1):", $t1} $t1 == $t1; + + // $t5 := object::object_address<#0>($t0) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t5 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // trace_local[store_addr#172]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,15,4):", $t5} $t5 == $t5; + + // $t7 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t7 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L0: + + // $t8 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t8 := 23; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,15):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t6 := $t9; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // trace_local[fa_store]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:825:13+8 + assume {:print "$at(43,34518,34526)"} true; + assume {:print "$track_local(43,15,3):", $t10} $t10 == $t10; + + // $t11 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+1 + assume {:print "$at(43,34589,34590)"} true; + call $t11 := $Not($t1); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 +L4: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 + assume {:print "$at(43,34589,34660)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t2 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 + $t2 := $t12; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:66+8 +L3: + + // $t13 := get_field.metadata($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:66+17 + assume {:print "$at(43,34642,34659)"} true; + $t13 := $t10->$metadata; + + // $t14 := fungible_asset::has_deposit_dispatch_function($t13) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:36+48 + call $t14 := $1_fungible_asset_has_deposit_dispatch_function($t13); + if ($abort_flag) { + assume {:print "$at(43,34612,34660)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // $t2 := !($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:35+1 + call $t2 := $Not($t14); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:827:13+71 +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 + assume {:print "$at(43,34568,34741)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 + assume {:print "$at(43,34568,34741)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 +L6: + + // $t15 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:828:37+32 + assume {:print "$at(43,34698,34730)"} true; + $t15 := 28; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:828:13+57 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(43,34674,34731)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 + assume {:print "$at(43,34568,34741)"} true; + assume {:print "$track_abort(43,15):", $t16} $t16 == $t16; + + // $t6 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 + $t6 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:826:9+173 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:18+8 + assume {:print "$at(43,34760,34768)"} true; +L8: + + // $t17 := get_field.frozen($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:18+15 + assume {:print "$at(43,34760,34775)"} true; + $t17 := $t10->$frozen; + + // $t18 := !($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:17+1 + call $t18 := $Not($t17); + + // if ($t18) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 + if ($t18) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 + assume {:print "$at(43,34751,34820)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:60+16 +L9: + + // $t19 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:60+16 + assume {:print "$at(43,34802,34818)"} true; + $t19 := 3; + assume $IsValid'u64'($t19); + + // $t20 := error::permission_denied($t19) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:35+42 + call $t20 := $1_error_permission_denied($t19); + if ($abort_flag) { + assume {:print "$at(43,34777,34819)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(43,15):", $t6} $t6 == $t6; + goto L13; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 + assume {:print "$at(43,34751,34820)"} true; + assume {:print "$track_abort(43,15):", $t20} $t20 == $t20; + + // $t6 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 + $t6 := $t20; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:9+69 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:830:78+1 +L11: + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:831:5+1 + assume {:print "$at(43,34826,34827)"} true; +L12: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:831:5+1 + assume {:print "$at(43,34826,34827)"} true; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:831:5+1 +L13: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:831:5+1 + assume {:print "$at(43,34826,34827)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun fungible_asset::generate_burn_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:466:5+195 +procedure {:inline 1} $1_fungible_asset_generate_burn_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_fungible_asset_BurnRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_fungible_asset_BurnRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:466:5+1 + assume {:print "$at(43,19415,19416)"} true; + assume {:print "$track_local(43,22,0):", $t0} $t0 == $t0; + + // $t1 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:467:24+62 + assume {:print "$at(43,19512,19574)"} true; + call $t1 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,19512,19574)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(43,22):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack fungible_asset::BurnRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:468:9+20 + assume {:print "$at(43,19584,19604)"} true; + $t3 := $1_fungible_asset_BurnRef($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:468:9+20 + assume {:print "$track_return(43,22,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:469:5+1 + assume {:print "$at(43,19609,19610)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:469:5+1 + assume {:print "$at(43,19609,19610)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:469:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:469:5+1 + assume {:print "$at(43,19609,19610)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun fungible_asset::generate_mint_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:459:5+195 +procedure {:inline 1} $1_fungible_asset_generate_mint_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_fungible_asset_MintRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_fungible_asset_MintRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:459:5+1 + assume {:print "$at(43,18997,18998)"} true; + assume {:print "$track_local(43,23,0):", $t0} $t0 == $t0; + + // $t1 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:460:24+62 + assume {:print "$at(43,19094,19156)"} true; + call $t1 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,19094,19156)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(43,23):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack fungible_asset::MintRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:461:9+20 + assume {:print "$at(43,19166,19186)"} true; + $t3 := $1_fungible_asset_MintRef($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:461:9+20 + assume {:print "$track_return(43,23,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:462:5+1 + assume {:print "$at(43,19191,19192)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:462:5+1 + assume {:print "$at(43,19191,19192)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:462:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:462:5+1 + assume {:print "$at(43,19191,19192)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun fungible_asset::has_deposit_dispatch_function [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:658:5+465 +procedure {:inline 1} $1_fungible_asset_has_deposit_dispatch_function(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: $1_fungible_asset_DispatchFunctionStore; + var $t10: $1_option_Option'$1_function_info_FunctionInfo'; + var $t11: bool; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:658:5+1 + assume {:print "$at(43,27475,27476)"} true; + assume {:print "$track_local(43,26,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:659:29+33 + assume {:print "$at(43,27604,27637)"} true; + call $t4 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,27604,27637)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,26):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[metadata_addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:659:13+13 + assume {:print "$track_local(43,26,3):", $t4} $t4 == $t4; + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:29+24 + assume {:print "$at(43,27715,27739)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // $t7 := !=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:26+2 + $t7 := !$IsEqual'address'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:87+13 +L1: + + // $t1 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:57+6 + assume {:print "$at(43,27743,27749)"} true; + $t1 := $ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t4); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 +L0: + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 + assume {:print "$at(43,27698,27787)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // $t1 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 + $t1 := $t8; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:12+89 +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:9+239 + assume {:print "$at(43,27695,27934)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:67+13 + assume {:print "$at(43,27857,27870)"} true; +L4: + + // $t9 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:30+13 + assume {:print "$at(43,27820,27833)"} true; + if (!$ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(43,27820,27833)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,26):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.deposit_function($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:29+69 + $t10 := $t9->$deposit_function; + + // $t2 := opaque begin: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:13+86 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:13+86 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:13+86 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_function_info_FunctionInfo'($t10)); + + // $t2 := opaque end: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:662:13+86 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:9+239 + assume {:print "$at(43,27695,27934)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:664:13+5 + assume {:print "$at(43,27919,27924)"} true; +L3: + + // $t11 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:664:13+5 + assume {:print "$at(43,27919,27924)"} true; + $t11 := false; + assume $IsValid'bool'($t11); + + // $t2 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:9+239 + assume {:print "$at(43,27695,27934)"} true; + $t2 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:9+239 +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:661:9+239 + assume {:print "$at(43,27695,27934)"} true; + assume {:print "$track_return(43,26,0):", $t2} $t2 == $t2; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:666:5+1 + assume {:print "$at(43,27939,27940)"} true; +L6: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:666:5+1 + assume {:print "$at(43,27939,27940)"} true; + $ret0 := $t2; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:666:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:666:5+1 + assume {:print "$at(43,27939,27940)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::has_withdraw_dispatch_function [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:678:5+468 +procedure {:inline 1} $1_fungible_asset_has_withdraw_dispatch_function(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: bool; + var $t9: $1_fungible_asset_DispatchFunctionStore; + var $t10: $1_option_Option'$1_function_info_FunctionInfo'; + var $t11: bool; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:678:5+1 + assume {:print "$at(43,28412,28413)"} true; + assume {:print "$track_local(43,27,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:679:29+33 + assume {:print "$at(43,28542,28575)"} true; + call $t4 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,28542,28575)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,27):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[metadata_addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:679:13+13 + assume {:print "$track_local(43,27,3):", $t4} $t4 == $t4; + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:30+24 + assume {:print "$at(43,28654,28678)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // $t7 := !=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:27+2 + $t7 := !$IsEqual'address'($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:88+13 +L1: + + // $t1 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:58+6 + assume {:print "$at(43,28682,28688)"} true; + $t1 := $ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t4); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 +L0: + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 + assume {:print "$at(43,28637,28726)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // $t1 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 + $t1 := $t8; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:13+89 +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:9+241 + assume {:print "$at(43,28633,28874)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:67+13 + assume {:print "$at(43,28796,28809)"} true; +L4: + + // $t9 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:30+13 + assume {:print "$at(43,28759,28772)"} true; + if (!$ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(43,28759,28772)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,27):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.withdraw_function($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:29+70 + $t10 := $t9->$withdraw_function; + + // $t2 := opaque begin: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:13+87 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:13+87 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:13+87 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_function_info_FunctionInfo'($t10)); + + // $t2 := opaque end: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:682:13+87 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:9+241 + assume {:print "$at(43,28633,28874)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:684:13+5 + assume {:print "$at(43,28859,28864)"} true; +L3: + + // $t11 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:684:13+5 + assume {:print "$at(43,28859,28864)"} true; + $t11 := false; + assume $IsValid'bool'($t11); + + // $t2 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:9+241 + assume {:print "$at(43,28633,28874)"} true; + $t2 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:9+241 +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:681:9+241 + assume {:print "$at(43,28633,28874)"} true; + assume {:print "$track_return(43,27,0):", $t2} $t2 == $t2; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:686:5+1 + assume {:print "$at(43,28879,28880)"} true; +L6: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:686:5+1 + assume {:print "$at(43,28879,28880)"} true; + $ret0 := $t2; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:686:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:686:5+1 + assume {:print "$at(43,28879,28880)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::increase_supply [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1071:5+1110 +procedure {:inline 1} $1_fungible_asset_increase_supply'$1_fungible_asset_Metadata'(_$t0: $1_object_Object'$1_fungible_asset_Metadata', _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_fungible_asset_Supply); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: $Mutation ($1_fungible_asset_ConcurrentSupply); + var $t10: $Mutation ($1_aggregator_v2_Aggregator'u128'); + var $t11: int; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: $Mutation ($1_fungible_asset_Supply); + var $t18: $1_option_Option'u128'; + var $t19: bool; + var $t20: $Mutation ($1_option_Option'u128'); + var $t21: $Mutation (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: int; + var $t32: int; + var $t33: int; + var $t34: $Mutation (int); + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u128'': $1_aggregator_v2_Aggregator'u128'; + var $temp_0'$1_fungible_asset_Supply': $1_fungible_asset_Supply; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1071:5+1 + assume {:print "$at(43,44404,44405)"} true; + assume {:print "$track_local(43,29,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1071:5+1 + assume {:print "$track_local(43,29,1):", $t1} $t1 == $t1; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1072:23+1 + assume {:print "$at(43,44525,44526)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := ==($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1072:20+2 + $t5 := $IsEqual'u64'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1072:9+47 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1073:13+6 + assume {:print "$at(43,44542,44548)"} true; +L1: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1073:13+6 + assume {:print "$at(43,44542,44548)"} true; + goto L16; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1075:55+8 + assume {:print "$at(43,44614,44622)"} true; +L0: + + // $t6 := object::object_address<#0>($t0) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1075:32+32 + assume {:print "$at(43,44591,44623)"} true; + call $t6 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(43,44591,44623)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // trace_local[metadata_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1075:13+16 + assume {:print "$track_local(43,29,2):", $t6} $t6 == $t6; + + // $t8 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1077:13+6 + assume {:print "$at(43,44638,44644)"} true; + $t8 := $ResourceExists($1_fungible_asset_ConcurrentSupply_$memory, $t6); + + // if ($t8) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1077:9+874 + if ($t8) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1078:62+16 + assume {:print "$at(43,44745,44761)"} true; +L3: + + // $t9 := borrow_global($t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1078:26+17 + assume {:print "$at(43,44709,44726)"} true; + if (!$ResourceExists($1_fungible_asset_ConcurrentSupply_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(43,44709,44726)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t10 := borrow_field.current($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:40+19 + assume {:print "$at(43,44824,44843)"} true; + $t10 := $ChildMutation($t9, 0, $Dereference($t9)->$current); + + // $t11 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:61+16 + call $t11 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,44845,44861)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t12 := opaque begin: aggregator_v2::try_add($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + havoc $t13; + + // if ($t13) goto L20 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + if ($t13) { goto L20; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 +L19: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + assume {:print "$at(43,44801,44862)"} true; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + goto L17; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 +L18: + + // $t10 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + assume {:print "$at(43,44801,44862)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u128''; + $t10 := $UpdateMutation($t10, $temp_0'$1_aggregator_v2_Aggregator'u128''); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + assume $IsValid'$1_aggregator_v2_Aggregator'u128''($Dereference($t10)); + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + assume $IsValid'bool'($t12); + + // $t12 := opaque end: aggregator_v2::try_add($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + + // write_back[Reference($t9).current (aggregator_v2::Aggregator)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + $t9 := $UpdateMutation($t9, $Update'$1_fungible_asset_ConcurrentSupply'_current($Dereference($t9), $Dereference($t10))); + + // write_back[fungible_asset::ConcurrentSupply@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1080:17+61 + $1_fungible_asset_ConcurrentSupply_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentSupply_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // if ($t12) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 + assume {:print "$at(43,44776,44935)"} true; + if ($t12) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 +L5: + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 + assume {:print "$at(43,44776,44935)"} true; + goto L6; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1081:37+20 + assume {:print "$at(43,44900,44920)"} true; +L4: + + // $t14 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1081:37+20 + assume {:print "$at(43,44900,44920)"} true; + $t14 := 5; + assume $IsValid'u64'($t14); + + // $t15 := error::out_of_range($t14) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1081:17+41 + call $t15 := $1_error_out_of_range($t14); + if ($abort_flag) { + assume {:print "$at(43,44880,44921)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 + assume {:print "$at(43,44776,44935)"} true; + assume {:print "$track_abort(43,29):", $t15} $t15 == $t15; + + // $t7 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 + $t7 := $t15; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1079:13+159 + goto L17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1077:9+874 + assume {:print "$at(43,44634,45508)"} true; +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1077:9+874 + assume {:print "$at(43,44634,45508)"} true; + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1083:35+16 + assume {:print "$at(43,44971,44987)"} true; +L2: + + // $t16 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1083:20+6 + assume {:print "$at(43,44956,44962)"} true; + $t16 := $ResourceExists($1_fungible_asset_Supply_$memory, $t6); + + // if ($t16) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1083:16+556 + if ($t16) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1084:52+16 + assume {:print "$at(43,45043,45059)"} true; +L9: + + // $t17 := borrow_global($t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1084:26+17 + assume {:print "$at(43,45017,45034)"} true; + if (!$ResourceExists($1_fungible_asset_Supply_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_fungible_asset_Supply_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(43,45017,45034)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // trace_local[supply#1]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1084:17+6 + $temp_0'$1_fungible_asset_Supply' := $Dereference($t17); + assume {:print "$track_local(43,29,3):", $temp_0'$1_fungible_asset_Supply'} $temp_0'$1_fungible_asset_Supply' == $temp_0'$1_fungible_asset_Supply'; + + // $t18 := get_field.maximum($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:33+15 + assume {:print "$at(43,45094,45109)"} true; + $t18 := $Dereference($t17)->$maximum; + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:17+32 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:17+32 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:17+32 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'u128'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:17+32 + + // if ($t19) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:13+288 + if ($t19) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1086:52+6 + assume {:print "$at(43,45165,45171)"} true; +L11: + + // $t20 := borrow_field.maximum($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1086:47+19 + assume {:print "$at(43,45160,45179)"} true; + $t20 := $ChildMutation($t17, 1, $Dereference($t17)->$maximum); + + // $t21 := option::borrow_mut($t20) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1086:28+39 + call $t21,$t20 := $1_option_borrow_mut'u128'($t20); + if ($abort_flag) { + assume {:print "$at(43,45141,45180)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t22 := read_ref($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1086:27+40 + $t22 := $Dereference($t21); + + // write_back[Reference($t17).maximum (option::Option)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1086:27+40 + $t17 := $UpdateMutation($t17, $Update'$1_fungible_asset_Supply'_maximum($Dereference($t17), $Dereference($t20))); + + // $t23 := get_field.current($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1088:27+14 + assume {:print "$at(43,45233,45247)"} true; + $t23 := $Dereference($t17)->$current; + + // $t24 := -($t22, $t23) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1088:25+1 + call $t24 := $Sub($t22, $t23); + if ($abort_flag) { + assume {:print "$at(43,45231,45232)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t25 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1088:45+16 + call $t25 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,45251,45267)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t26 := >=($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1088:42+2 + call $t26 := $Ge($t24, $t25); + + // if ($t26) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + assume {:print "$at(43,45198,45348)"} true; + if ($t26) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + assume {:print "$at(43,45198,45348)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 +L12: + + // pack_ref_deep($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + assume {:print "$at(43,45198,45348)"} true; + + // write_back[fungible_asset::Supply@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + $1_fungible_asset_Supply_$memory := $ResourceUpdate($1_fungible_asset_Supply_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + + // $t27 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1089:41+20 + assume {:print "$at(43,45309,45329)"} true; + $t27 := 5; + assume $IsValid'u64'($t27); + + // $t28 := error::out_of_range($t27) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1089:21+41 + call $t28 := $1_error_out_of_range($t27); + if ($abort_flag) { + assume {:print "$at(43,45289,45330)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + assume {:print "$at(43,45198,45348)"} true; + assume {:print "$track_abort(43,29):", $t28} $t28 == $t28; + + // $t7 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + $t7 := $t28; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + goto L17; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 +L14: + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1087:17+150 + assume {:print "$at(43,45198,45348)"} true; + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:13+288 + assume {:print "$at(43,45074,45362)"} true; +L10: + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1085:13+288 + assume {:print "$at(43,45074,45362)"} true; + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:36+17 + assume {:print "$at(43,45480,45497)"} true; +L8: + + // $t29 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:36+17 + assume {:print "$at(43,45480,45497)"} true; + $t29 := 21; + assume $IsValid'u64'($t29); + + // $t30 := error::not_found($t29) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:19+35 + call $t30 := $1_error_not_found($t29); + if ($abort_flag) { + assume {:print "$at(43,45463,45498)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:13+41 + assume {:print "$at(43,45457,45498)"} true; + assume {:print "$track_abort(43,29):", $t30} $t30 == $t30; + + // $t7 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:13+41 + $t7 := $t30; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1094:13+41 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:30+6 + assume {:print "$at(43,45393,45399)"} true; +L15: + + // $t31 := get_field.current($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:30+14 + assume {:print "$at(43,45393,45407)"} true; + $t31 := $Dereference($t17)->$current; + + // $t32 := (u128)($t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:47+16 + call $t32 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(43,45410,45426)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t33 := +($t31, $t32) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:45+1 + call $t33 := $AddU128($t31, $t32); + if ($abort_flag) { + assume {:print "$at(43,45408,45409)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,29):", $t7} $t7 == $t7; + goto L17; + } + + // $t34 := borrow_field.current($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:13+14 + $t34 := $ChildMutation($t17, 0, $Dereference($t17)->$current); + + // write_ref($t34, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:13+50 + $t34 := $UpdateMutation($t34, $t33); + + // write_back[Reference($t17).current (u128)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:13+50 + $t17 := $UpdateMutation($t17, $Update'$1_fungible_asset_Supply'_current($Dereference($t17), $Dereference($t34))); + + // pack_ref_deep($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:13+50 + + // write_back[fungible_asset::Supply@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1092:13+50 + $1_fungible_asset_Supply_$memory := $ResourceUpdate($1_fungible_asset_Supply_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1077:9+874 + assume {:print "$at(43,44634,45508)"} true; +L7: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1096:5+1 + assume {:print "$at(43,45513,45514)"} true; +L16: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1096:5+1 + assume {:print "$at(43,45513,45514)"} true; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1096:5+1 +L17: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1096:5+1 + assume {:print "$at(43,45513,45514)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L20 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L20: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L19 at :1:1+10 + goto L19; + +} + +// fun fungible_asset::is_address_balance_at_least [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:617:5+665 +procedure {:inline 1} $1_fungible_asset_is_address_balance_at_least(_$t0: int, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_fungible_asset_FungibleStore; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: $1_fungible_asset_ConcurrentFungibleBalance; + var $t14: $1_aggregator_v2_Aggregator'u64'; + var $t15: int; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:617:5+1 + assume {:print "$at(43,25583,25584)"} true; + assume {:print "$track_local(43,30,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:617:5+1 + assume {:print "$track_local(43,30,1):", $t1} $t1 == $t1; + + // $t6 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:567:9+6 + assume {:print "$at(43,23690,23696)"} true; + $t6 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:618:9+512 + assume {:print "$at(43,25730,26242)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:619:62+10 + assume {:print "$at(43,25830,25840)"} true; +L1: + + // $t7 := get_global($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:619:33+13 + assume {:print "$at(43,25801,25814)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(43,25801,25814)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,30):", $t8} $t8 == $t8; + goto L10; + } + + // $t9 := get_field.balance($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:619:33+48 + $t9 := $t7->$balance; + + // trace_local[store_balance]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:619:17+13 + assume {:print "$track_local(43,30,5):", $t9} $t9 == $t9; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:34+1 + assume {:print "$at(43,25884,25885)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := ==($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:31+2 + $t11 := $IsEqual'u64'($t9, $t10); + + // if ($t11) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 + if ($t11) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:81+10 +L3: + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:573:9+6 + assume {:print "$at(43,23945,23951)"} true; + $t2 := $ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 + assume {:print "$at(43,25867,25942)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 +L2: + + // $t12 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 + assume {:print "$at(43,25867,25942)"} true; + $t12 := false; + assume $IsValid'bool'($t12); + + // $t2 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 + $t2 := $t12; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:17+75 +L4: + + // if ($t2) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:13+328 + assume {:print "$at(43,25863,26191)"} true; + if ($t2) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:621:81+10 + assume {:print "$at(43,26026,26036)"} true; +L6: + + // $t13 := get_global($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:621:40+13 + assume {:print "$at(43,25985,25998)"} true; + if (!$ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(43,25985,25998)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,30):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := get_field.balance($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:622:44+25 + assume {:print "$at(43,26082,26107)"} true; + $t14 := $t13->$balance; + + // $t3 := aggregator_v2::is_at_least($t14, $t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:622:17+61 + call $t3 := $1_aggregator_v2_is_at_least'u64'($t14, $t1); + if ($abort_flag) { + assume {:print "$at(43,26055,26116)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,30):", $t8} $t8 == $t8; + goto L10; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:13+328 + assume {:print "$at(43,25863,26191)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:624:17+13 + assume {:print "$at(43,26154,26167)"} true; +L5: + + // $t3 := >=($t9, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:624:31+2 + assume {:print "$at(43,26168,26170)"} true; + call $t3 := $Ge($t9, $t1); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:620:13+328 + assume {:print "$at(43,25863,26191)"} true; +L7: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:618:9+512 + assume {:print "$at(43,25730,26242)"} true; + $t4 := $t3; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:618:9+512 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:627:13+6 + assume {:print "$at(43,26221,26227)"} true; +L0: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:627:23+1 + assume {:print "$at(43,26231,26232)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // $t4 := ==($t1, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:627:20+2 + $t4 := $IsEqual'u64'($t1, $t15); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:618:9+512 + assume {:print "$at(43,25730,26242)"} true; +L8: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:618:9+512 + assume {:print "$at(43,25730,26242)"} true; + assume {:print "$track_return(43,30,0):", $t4} $t4 == $t4; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:629:5+1 + assume {:print "$at(43,26247,26248)"} true; +L9: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:629:5+1 + assume {:print "$at(43,26247,26248)"} true; + $ret0 := $t4; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:629:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:629:5+1 + assume {:print "$at(43,26247,26248)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun fungible_asset::is_balance_at_least [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:611:5+246 +procedure {:inline 1} $1_fungible_asset_is_balance_at_least'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: int; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:611:5+1 + assume {:print "$at(43,25264,25265)"} true; + assume {:print "$track_local(43,31,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:611:5+1 + assume {:print "$track_local(43,31,1):", $t1} $t1 == $t1; + + // $t2 := object::object_address<#0>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:612:26+30 + assume {:print "$at(43,25417,25447)"} true; + call $t2 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,25417,25447)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,31):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := fungible_asset::is_address_balance_at_least($t2, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:613:9+47 + assume {:print "$at(43,25457,25504)"} true; + call $t4 := $1_fungible_asset_is_address_balance_at_least($t2, $t1); + if ($abort_flag) { + assume {:print "$at(43,25457,25504)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,31):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:613:9+47 + assume {:print "$track_return(43,31,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:614:5+1 + assume {:print "$at(43,25509,25510)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:614:5+1 + assume {:print "$at(43,25509,25510)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:614:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:614:5+1 + assume {:print "$at(43,25509,25510)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun fungible_asset::is_frozen [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:635:5+231 +procedure {:inline 1} $1_fungible_asset_is_frozen'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: $1_fungible_asset_FungibleStore; + var $t7: bool; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:635:5+1 + assume {:print "$at(43,26420,26421)"} true; + assume {:print "$track_local(43,32,0):", $t0} $t0 == $t0; + + // $t3 := object::object_address<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:636:26+30 + assume {:print "$at(43,26523,26553)"} true; + call $t3 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,26523,26553)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(43,32):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[store_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:636:13+10 + assume {:print "$track_local(43,32,2):", $t3} $t3 == $t3; + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:567:9+6 + assume {:print "$at(43,23690,23696)"} true; + $t5 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 + assume {:print "$at(43,26563,26645)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:73+10 +L1: + + // $t6 := get_global($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:44+13 + assume {:print "$at(43,26598,26611)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(43,26598,26611)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(43,32):", $t4} $t4 == $t4; + goto L4; + } + + // $t1 := get_field.frozen($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:44+47 + $t1 := $t6->$frozen; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 +L0: + + // $t7 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 + assume {:print "$at(43,26563,26645)"} true; + $t7 := false; + assume $IsValid'bool'($t7); + + // $t1 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 + $t1 := $t7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:637:9+82 + assume {:print "$at(43,26563,26645)"} true; + assume {:print "$track_return(43,32,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:638:5+1 + assume {:print "$at(43,26650,26651)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:638:5+1 + assume {:print "$at(43,26650,26651)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:638:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:638:5+1 + assume {:print "$at(43,26650,26651)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fungible_asset::metadata_from_asset [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:577:5+96 +procedure {:inline 1} $1_fungible_asset_metadata_from_asset(_$t0: $1_fungible_asset_FungibleAsset) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[fa]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:577:5+1 + assume {:print "$at(43,24043,24044)"} true; + assume {:print "$track_local(43,38,0):", $t0} $t0 == $t0; + + // $t1 := get_field.metadata($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:578:9+11 + assume {:print "$at(43,24122,24133)"} true; + $t1 := $t0->$metadata; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:578:9+11 + assume {:print "$track_return(43,38,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:579:5+1 + assume {:print "$at(43,24138,24139)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:579:5+1 + assume {:print "$at(43,24138,24139)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::mint_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:846:5+271 +procedure {:inline 1} $1_fungible_asset_mint_internal(_$t0: $1_object_Object'$1_fungible_asset_Metadata', _$t1: int) returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t2: int; + var $t3: $1_fungible_asset_FungibleAsset; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:846:5+1 + assume {:print "$at(43,35444,35445)"} true; + assume {:print "$track_local(43,40,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:846:5+1 + assume {:print "$track_local(43,40,1):", $t1} $t1 == $t1; + + // fungible_asset::increase_supply($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:850:9+34 + assume {:print "$at(43,35599,35633)"} true; + call $1_fungible_asset_increase_supply'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(43,35599,35633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(43,40):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack fungible_asset::FungibleAsset($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:851:9+66 + assume {:print "$at(43,35643,35709)"} true; + $t3 := $1_fungible_asset_FungibleAsset($t0, $t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:851:9+66 + assume {:print "$track_return(43,40,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:855:5+1 + assume {:print "$at(43,35714,35715)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:855:5+1 + assume {:print "$at(43,35714,35715)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:855:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:855:5+1 + assume {:print "$at(43,35714,35715)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun fungible_asset::mint_ref_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:712:5+90 +procedure {:inline 1} $1_fungible_asset_mint_ref_metadata(_$t0: $1_fungible_asset_MintRef) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_fungible_asset_MintRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:712:5+1 + assume {:print "$at(43,29914,29915)"} true; + assume {:print "$track_local(43,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field.metadata($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:713:9+12 + assume {:print "$at(43,29986,29998)"} true; + $t1 := $t0->$metadata; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:713:9+12 + assume {:print "$track_return(43,41,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:714:5+1 + assume {:print "$at(43,30003,30004)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:714:5+1 + assume {:print "$at(43,30003,30004)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::set_frozen_flag_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:877:5+323 +procedure {:inline 1} $1_fungible_asset_set_frozen_flag_internal'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: bool) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_fungible_asset_FungibleStore); + var $t6: $Mutation (bool); + var $t7: $1_fungible_asset_Frozen; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: bool; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:877:5+1 + assume {:print "$at(43,36551,36552)"} true; + assume {:print "$track_local(43,51,0):", $t0} $t0 == $t0; + + // trace_local[frozen]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:877:5+1 + assume {:print "$track_local(43,51,1):", $t1} $t1 == $t1; + + // $t3 := object::object_address<#0>($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:881:26+30 + assume {:print "$at(43,36707,36737)"} true; + call $t3 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,36707,36737)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(43,51):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[store_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:881:13+10 + assume {:print "$track_local(43,51,2):", $t3} $t3 == $t3; + + // $t5 := borrow_global($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:882:9+17 + assume {:print "$at(43,36747,36764)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(43,36747,36764)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(43,51):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.frozen($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:882:9+51 + $t6 := $ChildMutation($t5, 2, $Dereference($t5)->$frozen); + + // write_ref($t6, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:882:9+60 + $t6 := $UpdateMutation($t6, $t1); + + // write_back[Reference($t5).frozen (bool)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:882:9+60 + $t5 := $UpdateMutation($t5, $Update'$1_fungible_asset_FungibleStore'_frozen($Dereference($t5), $Dereference($t6))); + + // write_back[fungible_asset::FungibleStore@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:882:9+60 + $1_fungible_asset_FungibleStore_$memory := $ResourceUpdate($1_fungible_asset_FungibleStore_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // $t7 := pack fungible_asset::Frozen($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:884:21+36 + assume {:print "$at(43,36830,36866)"} true; + $t7 := $1_fungible_asset_Frozen($t3, $t1); + + // opaque begin: event::emit($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:884:9+49 + + // opaque end: event::emit($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:884:9+49 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:885:5+1 + assume {:print "$at(43,36873,36874)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:885:5+1 + assume {:print "$at(43,36873,36874)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:885:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:885:5+1 + assume {:print "$at(43,36873,36874)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun fungible_asset::store_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:561:5+88 +procedure {:inline 1} $1_fungible_asset_store_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[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:561:5+1 + assume {:print "$at(43,23464,23465)"} true; + assume {:print "$track_local(43,53,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:567:9+6 + assume {:print "$at(43,23690,23696)"} true; + $t1 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:567:9+28 + assume {:print "$track_return(43,53,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:563:5+1 + assume {:print "$at(43,23551,23552)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:563:5+1 + assume {:print "$at(43,23551,23552)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::store_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:583:5+147 +procedure {:inline 1} $1_fungible_asset_store_metadata'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_fungible_asset_FungibleStore; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:583:5+1 + assume {:print "$at(43,24204,24205)"} true; + assume {:print "$track_local(43,54,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t2 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,54):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[store_addr#209]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,54,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t4 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L0: + + // $t5 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t5 := 23; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,54):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,54):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(43,54):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.metadata($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:584:9+38 + assume {:print "$at(43,24307,24345)"} true; + $t8 := $t7->$metadata; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:584:9+38 + assume {:print "$track_return(43,54,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:585:5+1 + assume {:print "$at(43,24350,24351)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:585:5+1 + assume {:print "$at(43,24350,24351)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:585:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:585:5+1 + assume {:print "$at(43,24350,24351)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun fungible_asset::transfer_ref_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:717:5+98 +procedure {:inline 1} $1_fungible_asset_transfer_ref_metadata(_$t0: $1_fungible_asset_TransferRef) returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $1_fungible_asset_TransferRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:717:5+1 + assume {:print "$at(43,30077,30078)"} true; + assume {:print "$track_local(43,58,0):", $t0} $t0 == $t0; + + // $t1 := get_field.metadata($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:718:9+12 + assume {:print "$at(43,30157,30169)"} true; + $t1 := $t0->$metadata; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:718:9+12 + assume {:print "$track_return(43,58,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:719:5+1 + assume {:print "$at(43,30174,30175)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:719:5+1 + assume {:print "$at(43,30174,30175)"} true; + $ret0 := $t1; + return; + +} + +// fun fungible_asset::withdraw_dispatch_function [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:668:5+460 +procedure {:inline 1} $1_fungible_asset_withdraw_dispatch_function'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore') returns ($ret0: $1_option_Option'$1_function_info_FunctionInfo') +{ + // declare local variables + var $t1: $1_option_Option'$1_function_info_FunctionInfo'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_fungible_asset_FungibleStore; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: int; + var $t12: bool; + var $t13: $1_fungible_asset_DispatchFunctionStore; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_option_Option'$1_function_info_FunctionInfo'': $1_option_Option'$1_function_info_FunctionInfo'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:668:5+1 + assume {:print "$at(43,27946,27947)"} true; + assume {:print "$track_local(43,63,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t4 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,63):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[store_addr#213]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,63,3):", $t4} $t4 == $t4; + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t6 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L0: + + // $t7 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t7 := 23; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,63):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,63):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t5 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L2: + + // $t9 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,63):", $t5} $t5 == $t5; + goto L7; + } + + // $t10 := get_field.metadata($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:670:52+18 + assume {:print "$at(43,28185,28203)"} true; + $t10 := $t9->$metadata; + + // $t11 := object::object_address($t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:670:29+42 + call $t11 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(43,28162,28204)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,63):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[metadata_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:670:13+13 + assume {:print "$track_local(43,63,2):", $t11} $t11 == $t11; + + // $t12 := exists($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:671:12+6 + assume {:print "$at(43,28217,28223)"} true; + $t12 := $ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:671:9+186 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:672:50+13 + assume {:print "$at(43,28314,28327)"} true; +L4: + + // $t13 := get_global($t11) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:672:13+13 + assume {:print "$at(43,28277,28290)"} true; + if (!$ResourceExists($1_fungible_asset_DispatchFunctionStore_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t13 := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $t11); + } + if ($abort_flag) { + assume {:print "$at(43,28277,28290)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(43,63):", $t5} $t5 == $t5; + goto L7; + } + + // $t1 := get_field.withdraw_function($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:672:13+69 + $t1 := $t13->$withdraw_function; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:671:9+186 + assume {:print "$at(43,28214,28400)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:674:13+14 + assume {:print "$at(43,28376,28390)"} true; +L3: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:674:13+14 + assume {:print "$at(43,28376,28390)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:674:13+14 + assume ($IsValid'$1_option_Option'$1_function_info_FunctionInfo''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:674:13+14 + assume $IsEqual'$1_option_Option'$1_function_info_FunctionInfo''($t1, $1_option_spec_none'$1_function_info_FunctionInfo'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:674:13+14 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:671:9+186 + assume {:print "$at(43,28214,28400)"} true; +L5: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:671:9+186 + assume {:print "$at(43,28214,28400)"} true; + assume {:print "$track_return(43,63,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:676:5+1 + assume {:print "$at(43,28405,28406)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:676:5+1 + assume {:print "$at(43,28405,28406)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:676:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:676:5+1 + assume {:print "$at(43,28405,28406)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun fungible_asset::withdraw_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1045:5+1102 +procedure {:inline 1} $1_fungible_asset_withdraw_internal(_$t0: int, _$t1: int) returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t2: bool; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: $Mutation ($1_fungible_asset_FungibleStore); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_fungible_asset_FungibleStore); + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: $Mutation ($1_fungible_asset_ConcurrentFungibleBalance); + var $t18: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t19: bool; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: $Mutation (int); + var $t30: $1_fungible_asset_Withdraw; + var $t31: $1_fungible_asset_FungibleAsset; + var $t0: int; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleStore': $1_fungible_asset_FungibleStore; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1045:5+1 + assume {:print "$at(43,43236,43237)"} true; + assume {:print "$track_local(43,64,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1045:5+1 + assume {:print "$track_local(43,64,1):", $t1} $t1 == $t1; + + // $t5 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:17+6 + assume {:print "$at(43,43413,43419)"} true; + $t5 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 + assume {:print "$at(43,43405,43492)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:69+25 +L0: + + // $t6 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:69+25 + assume {:print "$at(43,43465,43490)"} true; + $t6 := 23; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:52+43 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(43,43448,43491)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 + assume {:print "$at(43,43405,43492)"} true; + assume {:print "$track_abort(43,64):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 + $t8 := $t7; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1049:9+87 + goto L19; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1051:54+10 + assume {:print "$at(43,43548,43558)"} true; +L2: + + // $t9 := borrow_global($t0) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1051:21+17 + assume {:print "$at(43,43515,43532)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(43,43515,43532)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // trace_local[store]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1051:13+5 + $temp_0'$1_fungible_asset_FungibleStore' := $Dereference($t9); + assume {:print "$track_local(43,64,4):", $temp_0'$1_fungible_asset_FungibleStore'} $temp_0'$1_fungible_asset_FungibleStore' == $temp_0'$1_fungible_asset_FungibleStore'; + + // $t10 := get_field.metadata($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1052:24+14 + assume {:print "$at(43,43584,43598)"} true; + $t10 := $Dereference($t9)->$metadata; + + // trace_local[metadata]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1052:13+8 + assume {:print "$track_local(43,64,3):", $t10} $t10 == $t10; + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1053:23+1 + assume {:print "$at(43,43622,43623)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := !=($t1, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1053:20+2 + $t12 := !$IsEqual'u64'($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1053:9+680 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+5 + assume {:print "$at(43,43643,43648)"} true; +L4: + + // $t13 := get_field.balance($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+13 + assume {:print "$at(43,43643,43656)"} true; + $t13 := $Dereference($t9)->$balance; + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:34+1 + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t15 := ==($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:31+2 + $t15 := $IsEqual'u64'($t13, $t14); + + // if ($t15) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 + if ($t15) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:81+10 +L6: + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:573:9+6 + assume {:print "$at(43,23945,23951)"} true; + $t2 := $ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0); + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 + assume {:print "$at(43,43643,43718)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 +L5: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 + assume {:print "$at(43,43643,43718)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 + $t2 := $t16; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:17+75 +L7: + + // if ($t2) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1054:13+562 + assume {:print "$at(43,43639,44201)"} true; + if ($t2) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1055:17+79 + assume {:print "$at(43,43738,43817)"} true; +L9: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1055:17+79 + assume {:print "$at(43,43738,43817)"} true; + + // $t17 := borrow_global($t0) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1055:40+17 + if (!$ResourceExists($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(43,43761,43778)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // $t18 := borrow_field.balance($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:44+29 + assume {:print "$at(43,43887,43916)"} true; + $t18 := $ChildMutation($t17, 0, $Dereference($t17)->$balance); + + // $t19 := opaque begin: aggregator_v2::try_sub($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + havoc $t20; + + // if ($t20) goto L22 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + if ($t20) { goto L22; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 +L21: + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + assume {:print "$at(43,43864,43925)"} true; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + goto L19; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 +L20: + + // $t18 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + assume {:print "$at(43,43864,43925)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u64''; + $t18 := $UpdateMutation($t18, $temp_0'$1_aggregator_v2_Aggregator'u64''); + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($Dereference($t18)); + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + assume $IsValid'bool'($t19); + + // $t19 := opaque end: aggregator_v2::try_sub($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + + // write_back[Reference($t17).balance (aggregator_v2::Aggregator)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + $t17 := $UpdateMutation($t17, $Update'$1_fungible_asset_ConcurrentFungibleBalance'_balance($Dereference($t17), $Dereference($t18))); + + // write_back[fungible_asset::ConcurrentFungibleBalance@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1057:21+61 + $1_fungible_asset_ConcurrentFungibleBalance_$memory := $ResourceUpdate($1_fungible_asset_ConcurrentFungibleBalance_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // if ($t19) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 + assume {:print "$at(43,43835,44011)"} true; + if ($t19) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 +L11: + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 + assume {:print "$at(43,43835,44011)"} true; + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1058:45+21 + assume {:print "$at(43,43971,43992)"} true; +L10: + + // $t21 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1058:45+21 + assume {:print "$at(43,43971,43992)"} true; + $t21 := 4; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_argument($t21) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1058:21+46 + call $t22 := $1_error_invalid_argument($t21); + if ($abort_flag) { + assume {:print "$at(43,43947,43993)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 + assume {:print "$at(43,43835,44011)"} true; + assume {:print "$track_abort(43,64):", $t22} $t22 == $t22; + + // $t8 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 + $t8 := $t22; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1056:17+176 + goto L19; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1059:18+1 + assume {:print "$at(43,44011,44012)"} true; +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1059:18+1 + assume {:print "$at(43,44011,44012)"} true; + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:25+5 + assume {:print "$at(43,44058,44063)"} true; +L8: + + // $t23 := get_field.balance($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:25+13 + assume {:print "$at(43,44058,44071)"} true; + $t23 := $Dereference($t9)->$balance; + + // $t24 := >=($t23, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:39+2 + call $t24 := $Ge($t23, $t1); + + // if ($t24) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + if ($t24) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + assume {:print "$at(43,44050,44130)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 +L14: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + assume {:print "$at(43,44050,44130)"} true; + + // $t25 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:74+21 + $t25 := 4; + assume $IsValid'u64'($t25); + + // $t26 := error::invalid_argument($t25) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:50+46 + call $t26 := $1_error_invalid_argument($t25); + if ($abort_flag) { + assume {:print "$at(43,44083,44129)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + assume {:print "$at(43,44050,44130)"} true; + assume {:print "$track_abort(43,64):", $t26} $t26 == $t26; + + // $t8 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + $t8 := $t26; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1061:17+80 + goto L19; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:33+5 + assume {:print "$at(43,44164,44169)"} true; +L16: + + // $t27 := get_field.balance($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:33+13 + assume {:print "$at(43,44164,44177)"} true; + $t27 := $Dereference($t9)->$balance; + + // $t28 := -($t27, $t1) on_abort goto L19 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:47+1 + call $t28 := $Sub($t27, $t1); + if ($abort_flag) { + assume {:print "$at(43,44178,44179)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(43,64):", $t8} $t8 == $t8; + goto L19; + } + + // $t29 := borrow_field.balance($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:17+13 + $t29 := $ChildMutation($t9, 1, $Dereference($t9)->$balance); + + // write_ref($t29, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:17+38 + $t29 := $UpdateMutation($t29, $t28); + + // write_back[Reference($t9).balance (u64)]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:17+38 + $t9 := $UpdateMutation($t9, $Update'$1_fungible_asset_FungibleStore'_balance($Dereference($t9), $Dereference($t29))); + + // write_back[fungible_asset::FungibleStore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1062:17+38 + $1_fungible_asset_FungibleStore_$memory := $ResourceUpdate($1_fungible_asset_FungibleStore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1065:53+10 + assume {:print "$at(43,44256,44266)"} true; +L13: + + // $t30 := pack fungible_asset::Withdraw($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1065:35+38 + assume {:print "$at(43,44238,44276)"} true; + $t30 := $1_fungible_asset_Withdraw($t0, $t1); + + // opaque begin: event::emit($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1065:13+61 + + // opaque end: event::emit($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1065:13+61 + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1065:74+1 + goto L17; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1053:9+680 + assume {:print "$at(43,43608,44288)"} true; +L3: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1053:9+680 + assume {:print "$at(43,43608,44288)"} true; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1067:25+8 + assume {:print "$at(43,44314,44322)"} true; +L17: + + // $t31 := pack fungible_asset::FungibleAsset($t10, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1067:9+34 + assume {:print "$at(43,44298,44332)"} true; + $t31 := $1_fungible_asset_FungibleAsset($t10, $t1); + + // trace_return[0]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1067:9+34 + assume {:print "$track_return(43,64,0):", $t31} $t31 == $t31; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1068:5+1 + assume {:print "$at(43,44337,44338)"} true; +L18: + + // return $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1068:5+1 + assume {:print "$at(43,44337,44338)"} true; + $ret0 := $t31; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1068:5+1 +L19: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1068:5+1 + assume {:print "$at(43,44337,44338)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun fungible_asset::withdraw_sanity_check [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:806:5+618 +procedure {:inline 1} $1_fungible_asset_withdraw_sanity_check'$1_fungible_asset_FungibleStore'(_$t0: $signer, _$t1: $1_object_Object'$1_fungible_asset_FungibleStore', _$t2: bool) returns () +{ + // declare local variables + var $t3: bool; + var $t4: $1_fungible_asset_FungibleStore; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_object_ObjectCore; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $1_fungible_asset_FungibleStore; + var $t19: bool; + var $t20: bool; + var $t21: $1_object_Object'$1_fungible_asset_Metadata'; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t0: $signer; + var $t1: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t2: bool; + var $temp_0'$1_fungible_asset_FungibleStore': $1_fungible_asset_FungibleStore; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:806:5+1 + assume {:print "$at(43,33670,33671)"} true; + assume {:print "$track_local(43,65,0):", $t0} $t0 == $t0; + + // trace_local[store]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:806:5+1 + assume {:print "$track_local(43,65,1):", $t1} $t1 == $t1; + + // trace_local[abort_on_dispatch]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:806:5+1 + assume {:print "$track_local(43,65,2):", $t2} $t2 == $t2; + + // $t6 := signer::address_of($t0) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:37+25 + assume {:print "$at(43,33893,33918)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(43,33893,33918)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // assume Identical($t8, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:536:9+37 + assume {:print "$at(50,21464,21501)"} true; + assume ($t8 == $t1->$inner); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:537:9+53 + assume {:print "$at(50,21510,21563)"} true; + assume ($t9 == $ResourceValue($1_object_ObjectCore_$memory, $t8)); + + // assume Identical($t10, select object::ObjectCore.owner($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:538:9+37 + assume {:print "$at(50,21572,21609)"} true; + assume ($t10 == $t9->$owner); + + // $t11 := object::owns<#0>($t1, $t6) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:17+46 + assume {:print "$at(43,33873,33919)"} true; + call $t11 := $1_object_owns'$1_fungible_asset_FungibleStore'($t1, $t6); + if ($abort_flag) { + assume {:print "$at(43,33873,33919)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 + assume {:print "$at(43,33865,33964)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:90+16 +L0: + + // $t12 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:90+16 + assume {:print "$at(43,33946,33962)"} true; + $t12 := 8; + assume $IsValid'u64'($t12); + + // $t13 := error::permission_denied($t12) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:65+42 + call $t13 := $1_error_permission_denied($t12); + if ($abort_flag) { + assume {:print "$at(43,33921,33963)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 + assume {:print "$at(43,33865,33964)"} true; + assume {:print "$track_abort(43,65):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 + $t7 := $t13; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:811:9+99 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:812:46+6 + assume {:print "$at(43,34011,34017)"} true; +L2: + + // $t14 := object::object_address<#0>($t1) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:26+29 + assume {:print "$at(43,47203,47232)"} true; + call $t14 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(43,47203,47232)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_local[store_addr#216]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1140:13+10 + assume {:print "$track_local(43,65,5):", $t14} $t14 == $t14; + + // $t15 := exists($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:17+6 + assume {:print "$at(43,47250,47256)"} true; + $t15 := $ResourceExists($1_fungible_asset_FungibleStore_$memory, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 +L3: + + // $t16 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:69+25 + assume {:print "$at(43,47302,47327)"} true; + $t16 := 23; + assume $IsValid'u64'($t16); + + // $t17 := error::not_found($t16) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:52+43 + call $t17 := $1_error_not_found($t16); + if ($abort_flag) { + assume {:print "$at(43,47285,47328)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + assume {:print "$at(43,47242,47329)"} true; + assume {:print "$track_abort(43,65):", $t17} $t17 == $t17; + + // $t7 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + $t7 := $t17; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1141:9+87 + goto L16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:38+10 + assume {:print "$at(43,47368,47378)"} true; +L5: + + // $t18 := get_global($t14) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:1142:9+13 + assume {:print "$at(43,47339,47352)"} true; + if (!$ResourceExists($1_fungible_asset_FungibleStore_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $t14); + } + if ($abort_flag) { + assume {:print "$at(43,47339,47352)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_local[fa_store]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:812:13+8 + assume {:print "$at(43,33978,33986)"} true; + assume {:print "$track_local(43,65,4):", $t18} $t18 == $t18; + + // $t19 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+1 + assume {:print "$at(43,34049,34050)"} true; + call $t19 := $Not($t2); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 +L7: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 + assume {:print "$at(43,34049,34121)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t3 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 + $t3 := $t20; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:67+8 +L6: + + // $t21 := get_field.metadata($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:67+17 + assume {:print "$at(43,34103,34120)"} true; + $t21 := $t18->$metadata; + + // $t22 := fungible_asset::has_withdraw_dispatch_function($t21) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:36+49 + call $t22 := $1_fungible_asset_has_withdraw_dispatch_function($t21); + if ($abort_flag) { + assume {:print "$at(43,34072,34121)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // $t3 := !($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:35+1 + call $t3 := $Not($t22); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:814:13+72 +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 + assume {:print "$at(43,34028,34202)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 + assume {:print "$at(43,34028,34202)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 +L9: + + // $t23 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:815:37+32 + assume {:print "$at(43,34159,34191)"} true; + $t23 := 28; + assume $IsValid'u64'($t23); + + // $t24 := error::invalid_argument($t23) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:815:13+57 + call $t24 := $1_error_invalid_argument($t23); + if ($abort_flag) { + assume {:print "$at(43,34135,34192)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 + assume {:print "$at(43,34028,34202)"} true; + assume {:print "$track_abort(43,65):", $t24} $t24 == $t24; + + // $t7 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 + $t7 := $t24; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:813:9+174 + goto L16; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:18+8 + assume {:print "$at(43,34221,34229)"} true; +L11: + + // $t25 := get_field.frozen($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:18+15 + assume {:print "$at(43,34221,34236)"} true; + $t25 := $t18->$frozen; + + // $t26 := !($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:17+1 + call $t26 := $Not($t25); + + // if ($t26) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 + if ($t26) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 + assume {:print "$at(43,34212,34281)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:60+16 +L12: + + // $t27 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:60+16 + assume {:print "$at(43,34263,34279)"} true; + $t27 := 3; + assume $IsValid'u64'($t27); + + // $t28 := error::permission_denied($t27) on_abort goto L16 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:35+42 + call $t28 := $1_error_permission_denied($t27); + if ($abort_flag) { + assume {:print "$at(43,34238,34280)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(43,65):", $t7} $t7 == $t7; + goto L16; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 + assume {:print "$at(43,34212,34281)"} true; + assume {:print "$track_abort(43,65):", $t28} $t28 == $t28; + + // $t7 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 + $t7 := $t28; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:9+69 + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:817:78+1 +L14: + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:818:5+1 + assume {:print "$at(43,34287,34288)"} true; +L15: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:818:5+1 + assume {:print "$at(43,34287,34288)"} true; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:818:5+1 +L16: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/fungible_asset.move:818:5+1 + assume {:print "$at(43,34287,34288)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// struct dispatchable_fungible_asset::TransferRefStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:36:5+73 +datatype $1_dispatchable_fungible_asset_TransferRefStore { + $1_dispatchable_fungible_asset_TransferRefStore($transfer_ref: $1_fungible_asset_TransferRef) +} +function {:inline} $Update'$1_dispatchable_fungible_asset_TransferRefStore'_transfer_ref(s: $1_dispatchable_fungible_asset_TransferRefStore, x: $1_fungible_asset_TransferRef): $1_dispatchable_fungible_asset_TransferRefStore { + $1_dispatchable_fungible_asset_TransferRefStore(x) +} +function $IsValid'$1_dispatchable_fungible_asset_TransferRefStore'(s: $1_dispatchable_fungible_asset_TransferRefStore): bool { + $IsValid'$1_fungible_asset_TransferRef'(s->$transfer_ref) +} +function {:inline} $IsEqual'$1_dispatchable_fungible_asset_TransferRefStore'(s1: $1_dispatchable_fungible_asset_TransferRefStore, s2: $1_dispatchable_fungible_asset_TransferRefStore): bool { + s1 == s2 +} +var $1_dispatchable_fungible_asset_TransferRefStore_$memory: $Memory $1_dispatchable_fungible_asset_TransferRefStore; + +// fun dispatchable_fungible_asset::deposit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:106:5+794 +procedure {:inline 1} $1_dispatchable_fungible_asset_deposit'$1_fungible_asset_FungibleStore'(_$t0: $1_object_Object'$1_fungible_asset_FungibleStore', _$t1: $1_fungible_asset_FungibleAsset) returns () +{ + // declare local variables + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: $1_fungible_asset_FungibleAsset; + var $t4: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t5: $1_function_info_FunctionInfo; + var $t6: $1_option_Option'$1_function_info_FunctionInfo'; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: $1_option_Option'$1_function_info_FunctionInfo'; + var $t11: bool; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_function_info_FunctionInfo; + var $t16: bool; + var $t17: $1_object_Object'$1_fungible_asset_Metadata'; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_dispatchable_fungible_asset_TransferRefStore; + var $t23: $1_fungible_asset_TransferRef; + var $t24: bool; + var $t25: int; + var $t0: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t1: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_function_info_FunctionInfo': $1_function_info_FunctionInfo; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_option_Option'$1_function_info_FunctionInfo'': $1_option_Option'$1_function_info_FunctionInfo'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[store]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:106:5+1 + assume {:print "$at(36,4365,4366)"} true; + assume {:print "$track_local(44,0,0):", $t0} $t0 == $t0; + + // trace_local[fa]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:106:5+1 + assume {:print "$track_local(44,0,1):", $t1} $t1 == $t1; + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:107:53+5 + assume {:print "$at(36,4509,4514)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // fungible_asset::deposit_sanity_check<#0>($t0, $t8) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:107:9+50 + call $1_fungible_asset_deposit_sanity_check'$1_fungible_asset_FungibleStore'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(36,4465,4515)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // $t10 := fungible_asset::deposit_dispatch_function<#0>($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:108:24+48 + assume {:print "$at(36,4540,4588)"} true; + call $t10 := $1_fungible_asset_deposit_dispatch_function'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(36,4540,4588)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[func_opt]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:108:13+8 + assume {:print "$track_local(44,0,6):", $t10} $t10 == $t10; + + // $t11 := opaque begin: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:13+26 + assume {:print "$at(36,4602,4628)"} true; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:13+26 + assume $IsValid'bool'($t11); + + // assume Eq($t11, option::spec_is_some($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:13+26 + assume $IsEqual'bool'($t11, $1_option_spec_is_some'$1_function_info_FunctionInfo'($t10)); + + // $t11 := opaque end: option::is_some($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:13+26 + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:9+555 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:111:17+47 + assume {:print "$at(36,4669,4716)"} true; +L1: + + // $t12 := features::dispatchable_fungible_asset_enabled() on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:111:17+47 + assume {:print "$at(36,4669,4716)"} true; + call $t12 := $1_features_dispatchable_fungible_asset_enabled(); + if ($abort_flag) { + assume {:print "$at(36,4669,4716)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t12) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 + assume {:print "$at(36,4644,4778)"} true; + if ($t12) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 + assume {:print "$at(36,4644,4778)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:112:32+14 + assume {:print "$at(36,4749,4763)"} true; +L2: + + // $t13 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:112:32+14 + assume {:print "$at(36,4749,4763)"} true; + $t13 := 3; + assume $IsValid'u64'($t13); + + // $t14 := error::aborted($t13) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:112:17+30 + call $t14 := $1_error_aborted($t13); + if ($abort_flag) { + assume {:print "$at(36,4734,4764)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 + assume {:print "$at(36,4644,4778)"} true; + assume {:print "$track_abort(44,0):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 + $t9 := $t14; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:110:13+134 + goto L10; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:39+9 + assume {:print "$at(36,4818,4827)"} true; +L4: + + // $t15 := opaque begin: option::borrow($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume {:print "$at(36,4803,4828)"} true; + + // assume Identical($t16, option::spec_is_none($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume ($t16 == $1_option_spec_is_none'$1_function_info_FunctionInfo'($t10)); + + // if ($t16) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + if ($t16) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 +L12: + + // assume And(option::spec_is_none($t10), Eq(262145, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume {:print "$at(36,4803,4828)"} true; + assume ($1_option_spec_is_none'$1_function_info_FunctionInfo'($t10) && $IsEqual'num'(262145, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume {:print "$at(36,4803,4828)"} true; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 +L11: + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume {:print "$at(36,4803,4828)"} true; + assume $IsValid'$1_function_info_FunctionInfo'($t15); + + // assume Eq($t15, option::spec_borrow($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + assume $IsEqual'$1_function_info_FunctionInfo'($t15, $1_option_spec_borrow'$1_function_info_FunctionInfo'($t10)); + + // $t15 := opaque end: option::borrow($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:24+25 + + // trace_local[func]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:114:17+4 + assume {:print "$track_local(44,0,5):", $t15} $t15 == $t15; + + // function_info::load_module_from_function($t15) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:115:13+46 + assume {:print "$at(36,4842,4888)"} true; + call $1_function_info_load_module_from_function($t15); + if ($abort_flag) { + assume {:print "$at(36,4842,4888)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // $t17 := fungible_asset::store_metadata<#0>($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:196:14+40 + assume {:print "$at(36,8026,8066)"} true; + call $t17 := $1_fungible_asset_store_metadata'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(36,8026,8066)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // $t18 := object::object_address($t17) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:195:29+87 + assume {:print "$at(36,7989,8076)"} true; + call $t18 := $1_object_object_address'$1_fungible_asset_Metadata'($t17); + if ($abort_flag) { + assume {:print "$at(36,7989,8076)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[metadata_addr#127]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:195:13+13 + assume {:print "$track_local(44,0,7):", $t18} $t18 == $t18; + + // $t19 := exists($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:199:13+6 + assume {:print "$at(36,8107,8113)"} true; + $t19 := $ResourceExists($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t18); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 +L5: + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:200:30+16 + assume {:print "$at(36,8177,8193)"} true; + $t20 := 1; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:200:13+34 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(36,8160,8194)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + assume {:print "$track_abort(44,0):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + goto L10; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:117:17+5 + assume {:print "$at(36,4940,4945)"} true; +L7: + + // $t22 := get_global($t18) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:202:10+13 + assume {:print "$at(36,8215,8228)"} true; + if (!$ResourceExists($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t22 := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t18); + } + if ($abort_flag) { + assume {:print "$at(36,8215,8228)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // $t23 := get_field.transfer_ref($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:202:9+60 + $t23 := $t22->$transfer_ref; + + // opaque begin: dispatchable_fungible_asset::dispatchable_deposit<#0>($t0, $t1, $t23, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + assume {:print "$at(36,4902,5045)"} true; + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + havoc $t24; + + // if ($t24) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + if ($t24) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 +L14: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + assume {:print "$at(36,4902,5045)"} true; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 +L13: + + // opaque end: dispatchable_fungible_asset::dispatchable_deposit<#0>($t0, $t1, $t23, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:116:13+143 + assume {:print "$at(36,4902,5045)"} true; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:9+555 + assume {:print "$at(36,4598,5153)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:123:69+6 + assume {:print "$at(36,5131,5137)"} true; +L0: + + // $t25 := object::object_address<#0>($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:123:46+30 + assume {:print "$at(36,5108,5138)"} true; + call $t25 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t0); + if ($abort_flag) { + assume {:print "$at(36,5108,5138)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // fungible_asset::deposit_internal($t25, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:123:13+68 + call $1_fungible_asset_deposit_internal($t25, $t1); + if ($abort_flag) { + assume {:print "$at(36,5075,5143)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(44,0):", $t9} $t9 == $t9; + goto L10; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:109:9+555 + assume {:print "$at(36,4598,5153)"} true; +L8: + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:125:5+1 + assume {:print "$at(36,5158,5159)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:125:5+1 + assume {:print "$at(36,5158,5159)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:125:5+1 +L10: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:125:5+1 + assume {:print "$at(36,5158,5159)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun dispatchable_fungible_asset::withdraw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:74:5+1116 +procedure {:inline 1} $1_dispatchable_fungible_asset_withdraw'$1_fungible_asset_FungibleStore'(_$t0: $signer, _$t1: $1_object_Object'$1_fungible_asset_FungibleStore', _$t2: int) returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: int; + var $t5: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t6: $1_fungible_asset_FungibleAsset; + var $t7: int; + var $t8: $1_fungible_asset_FungibleAsset; + var $t9: $1_function_info_FunctionInfo; + var $t10: $1_option_Option'$1_function_info_FunctionInfo'; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: $1_option_Option'$1_function_info_FunctionInfo'; + var $t16: bool; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $1_function_info_FunctionInfo; + var $t22: bool; + var $t23: $1_object_Object'$1_fungible_asset_Metadata'; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: $1_dispatchable_fungible_asset_TransferRefStore; + var $t29: $1_fungible_asset_TransferRef; + var $t30: $1_fungible_asset_FungibleAsset; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: bool; + var $t35: int; + var $t36: int; + var $t37: int; + var $t0: $signer; + var $t1: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t2: int; + var $temp_0'$1_function_info_FunctionInfo': $1_function_info_FunctionInfo; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_option_Option'$1_function_info_FunctionInfo'': $1_option_Option'$1_function_info_FunctionInfo'; + 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[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:74:5+1 + assume {:print "$at(36,3074,3075)"} true; + assume {:print "$track_local(44,11,0):", $t0} $t0 == $t0; + + // trace_local[store]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:74:5+1 + assume {:print "$track_local(44,11,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:74:5+1 + assume {:print "$track_local(44,11,2):", $t2} $t2 == $t2; + + // $t13 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:79:61+5 + assume {:print "$at(36,3283,3288)"} true; + $t13 := false; + assume $IsValid'bool'($t13); + + // fungible_asset::withdraw_sanity_check<#0>($t0, $t1, $t13) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:79:9+58 + call $1_fungible_asset_withdraw_sanity_check'$1_fungible_asset_FungibleStore'($t0, $t1, $t13); + if ($abort_flag) { + assume {:print "$at(36,3231,3289)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t15 := fungible_asset::withdraw_dispatch_function<#0>($t1) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:80:24+49 + assume {:print "$at(36,3314,3363)"} true; + call $t15 := $1_fungible_asset_withdraw_dispatch_function'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(36,3314,3363)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_local[func_opt]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:80:13+8 + assume {:print "$track_local(44,11,10):", $t15} $t15 == $t15; + + // $t16 := opaque begin: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:13+26 + assume {:print "$at(36,3377,3403)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:13+26 + assume $IsValid'bool'($t16); + + // assume Eq($t16, option::spec_is_some($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:13+26 + assume $IsEqual'bool'($t16, $1_option_spec_is_some'$1_function_info_FunctionInfo'($t15)); + + // $t16 := opaque end: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:13+26 + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:9+811 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:83:17+47 + assume {:print "$at(36,3444,3491)"} true; +L1: + + // $t17 := features::dispatchable_fungible_asset_enabled() on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:83:17+47 + assume {:print "$at(36,3444,3491)"} true; + call $t17 := $1_features_dispatchable_fungible_asset_enabled(); + if ($abort_flag) { + assume {:print "$at(36,3444,3491)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // if ($t17) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 + assume {:print "$at(36,3419,3553)"} true; + if ($t17) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 + assume {:print "$at(36,3419,3553)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:84:32+14 + assume {:print "$at(36,3524,3538)"} true; +L2: + + // $t18 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:84:32+14 + assume {:print "$at(36,3524,3538)"} true; + $t18 := 3; + assume $IsValid'u64'($t18); + + // $t19 := error::aborted($t18) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:84:17+30 + call $t19 := $1_error_aborted($t18); + if ($abort_flag) { + assume {:print "$at(36,3509,3539)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 + assume {:print "$at(36,3419,3553)"} true; + assume {:print "$track_abort(44,11):", $t19} $t19 == $t19; + + // $t14 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 + $t14 := $t19; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:82:13+134 + goto L13; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:86:57+5 + assume {:print "$at(36,3611,3616)"} true; +L4: + + // $t20 := fungible_asset::balance<#0>($t1) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:86:33+30 + assume {:print "$at(36,3587,3617)"} true; + call $t20 := $1_fungible_asset_balance'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(36,3587,3617)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_local[start_balance]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:86:17+13 + assume {:print "$track_local(44,11,12):", $t20} $t20 == $t20; + + // $t21 := opaque begin: option::borrow($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume {:print "$at(36,3642,3667)"} true; + + // assume Identical($t22, option::spec_is_none($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume ($t22 == $1_option_spec_is_none'$1_function_info_FunctionInfo'($t15)); + + // if ($t22) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + if ($t22) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 +L15: + + // assume And(option::spec_is_none($t15), Eq(262145, $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume {:print "$at(36,3642,3667)"} true; + assume ($1_option_spec_is_none'$1_function_info_FunctionInfo'($t15) && $IsEqual'num'(262145, $t14)); + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume {:print "$at(36,3642,3667)"} true; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 +L14: + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume {:print "$at(36,3642,3667)"} true; + assume $IsValid'$1_function_info_FunctionInfo'($t21); + + // assume Eq($t21, option::spec_borrow($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + assume $IsEqual'$1_function_info_FunctionInfo'($t21, $1_option_spec_borrow'$1_function_info_FunctionInfo'($t15)); + + // $t21 := opaque end: option::borrow($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:24+25 + + // trace_local[func]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:87:17+4 + assume {:print "$track_local(44,11,9):", $t21} $t21 == $t21; + + // function_info::load_module_from_function($t21) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:88:13+46 + assume {:print "$at(36,3681,3727)"} true; + call $1_function_info_load_module_from_function($t21); + if ($abort_flag) { + assume {:print "$at(36,3681,3727)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t23 := fungible_asset::store_metadata<#0>($t1) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:196:14+40 + assume {:print "$at(36,8026,8066)"} true; + call $t23 := $1_fungible_asset_store_metadata'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(36,8026,8066)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t24 := object::object_address($t23) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:195:29+87 + assume {:print "$at(36,7989,8076)"} true; + call $t24 := $1_object_object_address'$1_fungible_asset_Metadata'($t23); + if ($abort_flag) { + assume {:print "$at(36,7989,8076)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_local[metadata_addr#129]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:195:13+13 + assume {:print "$track_local(44,11,11):", $t24} $t24 == $t24; + + // $t25 := exists($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:199:13+6 + assume {:print "$at(36,8107,8113)"} true; + $t25 := $ResourceExists($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t24); + + // if ($t25) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + if ($t25) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 +L5: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:200:30+16 + assume {:print "$at(36,8177,8193)"} true; + $t26 := 1; + assume $IsValid'u64'($t26); + + // $t27 := error::not_found($t26) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:200:13+34 + call $t27 := $1_error_not_found($t26); + if ($abort_flag) { + assume {:print "$at(36,8160,8194)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + assume {:print "$at(36,8086,8204)"} true; + assume {:print "$track_abort(44,11):", $t27} $t27 == $t27; + + // $t14 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + $t14 := $t27; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:198:9+118 + goto L13; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:90:17+5 + assume {:print "$at(36,3789,3794)"} true; +L7: + + // $t28 := get_global($t24) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:202:10+13 + assume {:print "$at(36,8215,8228)"} true; + if (!$ResourceExists($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t24)) { + call $ExecFailureAbort(); + } else { + $t28 := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $t24); + } + if ($abort_flag) { + assume {:print "$at(36,8215,8228)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t29 := get_field.transfer_ref($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:202:9+60 + $t29 := $t28->$transfer_ref; + + // $t30 := opaque begin: dispatchable_fungible_asset::dispatchable_withdraw<#0>($t1, $t2, $t29, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + assume {:print "$at(36,3750,3899)"} true; + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + havoc $t31; + + // if ($t31) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + if ($t31) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 +L17: + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + assume {:print "$at(36,3750,3899)"} true; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + goto L13; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 +L16: + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + assume {:print "$at(36,3750,3899)"} true; + assume $IsValid'$1_fungible_asset_FungibleAsset'($t30); + + // $t30 := opaque end: dispatchable_fungible_asset::dispatchable_withdraw<#0>($t1, $t2, $t29, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:22+149 + + // trace_local[fa]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:89:17+2 + assume {:print "$track_local(44,11,8):", $t30} $t30 == $t30; + + // $t32 := fungible_asset::balance<#0>($t1) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:95:31+30 + assume {:print "$at(36,3931,3961)"} true; + call $t32 := $1_fungible_asset_balance'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(36,3931,3961)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_local[end_balance]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:95:17+11 + assume {:print "$track_local(44,11,7):", $t32} $t32 == $t32; + + // $t33 := -($t20, $t32) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:45+1 + assume {:print "$at(36,4007,4008)"} true; + call $t33 := $Sub($t20, $t32); + if ($abort_flag) { + assume {:print "$at(36,4007,4008)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t34 := <=($t2, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:28+2 + call $t34 := $Le($t2, $t33); + + // if ($t34) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 + if ($t34) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 + assume {:print "$at(36,3975,4055)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:75+16 +L8: + + // $t35 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:75+16 + assume {:print "$at(36,4037,4053)"} true; + $t35 := 2; + assume $IsValid'u64'($t35); + + // $t36 := error::aborted($t35) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:60+32 + call $t36 := $1_error_aborted($t35); + if ($abort_flag) { + assume {:print "$at(36,4022,4054)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 + assume {:print "$at(36,3975,4055)"} true; + assume {:print "$track_abort(44,11):", $t36} $t36 == $t36; + + // $t14 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 + $t14 := $t36; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:96:13+80 + goto L13; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:97:13+2 + assume {:print "$at(36,4069,4071)"} true; +L10: + + // $t6 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:9+811 + assume {:print "$at(36,3373,4184)"} true; + $t6 := $t30; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:9+811 + goto L11; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:99:70+6 + assume {:print "$at(36,4158,4164)"} true; +L0: + + // $t37 := object::object_address<#0>($t1) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:99:47+30 + assume {:print "$at(36,4135,4165)"} true; + call $t37 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(36,4135,4165)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // $t6 := fungible_asset::withdraw_internal($t37, $t2) on_abort goto L13 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:99:13+73 + call $t6 := $1_fungible_asset_withdraw_internal($t37, $t2); + if ($abort_flag) { + assume {:print "$at(36,4101,4174)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(44,11):", $t14} $t14 == $t14; + goto L13; + } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:9+811 + assume {:print "$at(36,3373,4184)"} true; +L11: + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:81:9+811 + assume {:print "$at(36,3373,4184)"} true; + assume {:print "$track_return(44,11,0):", $t6} $t6 == $t6; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:101:5+1 + assume {:print "$at(36,4189,4190)"} true; +L12: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:101:5+1 + assume {:print "$at(36,4189,4190)"} true; + $ret0 := $t6; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:101:5+1 +L13: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/dispatchable_fungible_asset.move:101:5+1 + assume {:print "$at(36,4189,4190)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.spec.move:132:10+174 +function {:inline} $1_primary_fungible_store_spec_primary_store_exists'$1_fungible_asset_Metadata'($1_fungible_asset_FungibleStore_$memory: $Memory $1_fungible_asset_FungibleStore, account: int, metadata: $1_object_Object'$1_fungible_asset_Metadata'): bool { + $1_fungible_asset_$store_exists($1_fungible_asset_FungibleStore_$memory, $1_primary_fungible_store_spec_primary_store_address'$1_fungible_asset_Metadata'(account, metadata)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.spec.move:136:10+232 +function {:inline} $1_primary_fungible_store_spec_primary_store_address'$1_fungible_asset_Metadata'(owner: int, metadata: $1_object_Object'$1_fungible_asset_Metadata'): int { + (var metadata_addr := $1_object_$object_address'$1_fungible_asset_Metadata'(metadata); $1_object_spec_create_user_derived_object_address(owner, metadata_addr)) +} + +// struct primary_fungible_store::DeriveRefPod at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:28:5+75 +datatype $1_primary_fungible_store_DeriveRefPod { + $1_primary_fungible_store_DeriveRefPod($metadata_derive_ref: $1_object_DeriveRef) +} +function {:inline} $Update'$1_primary_fungible_store_DeriveRefPod'_metadata_derive_ref(s: $1_primary_fungible_store_DeriveRefPod, x: $1_object_DeriveRef): $1_primary_fungible_store_DeriveRefPod { + $1_primary_fungible_store_DeriveRefPod(x) +} +function $IsValid'$1_primary_fungible_store_DeriveRefPod'(s: $1_primary_fungible_store_DeriveRefPod): bool { + $IsValid'$1_object_DeriveRef'(s->$metadata_derive_ref) +} +function {:inline} $IsEqual'$1_primary_fungible_store_DeriveRefPod'(s1: $1_primary_fungible_store_DeriveRefPod, s2: $1_primary_fungible_store_DeriveRefPod): bool { + s1 == s2 +} +var $1_primary_fungible_store_DeriveRefPod_$memory: $Memory $1_primary_fungible_store_DeriveRefPod; + +// fun primary_fungible_store::deposit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:177:5+433 +procedure {:inline 1} $1_primary_fungible_store_deposit(_$t0: int, _$t1: $1_fungible_asset_FungibleAsset) returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: Vec (int); + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t9: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t10: Vec (int); + var $t11: $1_string_String; + var $t0: int; + var $t1: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:177:5+1 + assume {:print "$at(51,8425,8426)"} true; + assume {:print "$track_local(45,4,0):", $t0} $t0 == $t0; + + // trace_local[fa]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:177:5+1 + assume {:print "$track_local(45,4,1):", $t1} $t1 == $t1; + + // $t5 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:178:36+44 + assume {:print "$at(51,8538,8582)"} true; + $t5 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(100, 101, 112, 111)), MakeVec4(115, 105, 116, 32)), MakeVec4(124, 32, 101, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t5); + + // $t6 := string::utf8($t5) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:178:23+58 + call $t6 := $1_string_utf8($t5); + if ($abort_flag) { + assume {:print "$at(51,8525,8583)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // debug::print($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:178:9+73 + call $1_debug_print'$1_string_String'($t6); + if ($abort_flag) { + assume {:print "$at(51,8511,8584)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := fungible_asset::asset_metadata($t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:180:24+35 + assume {:print "$at(51,8610,8645)"} true; + call $t8 := $1_fungible_asset_asset_metadata($t1); + if ($abort_flag) { + assume {:print "$at(51,8610,8645)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[metadata]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:180:13+8 + assume {:print "$track_local(45,4,4):", $t8} $t8 == $t8; + + // $t9 := primary_fungible_store::ensure_primary_store_exists($t0, $t8) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:181:21+44 + assume {:print "$at(51,8667,8711)"} true; + call $t9 := $1_primary_fungible_store_ensure_primary_store_exists'$1_fungible_asset_Metadata'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(51,8667,8711)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // dispatchable_fungible_asset::deposit($t9, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:182:9+47 + assume {:print "$at(51,8721,8768)"} true; + call $1_dispatchable_fungible_asset_deposit'$1_fungible_asset_FungibleStore'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(51,8721,8768)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // $t10 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:184:36+43 + assume {:print "$at(51,8806,8849)"} true; + $t10 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(100, 101, 112, 111)), MakeVec4(115, 105, 116, 32)), MakeVec4(124, 32, 101, 120)), MakeVec4(105, 116, 101, 100)); + assume $IsValid'vec'u8''($t10); + + // $t11 := string::utf8($t10) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:184:23+57 + call $t11 := $1_string_utf8($t10); + if ($abort_flag) { + assume {:print "$at(51,8793,8850)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // debug::print($t11) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:184:9+72 + call $1_debug_print'$1_string_String'($t11); + if ($abort_flag) { + assume {:print "$at(51,8779,8851)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(45,4):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:185:5+1 + assume {:print "$at(51,8857,8858)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:185:5+1 + assume {:print "$at(51,8857,8858)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:185:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:185:5+1 + assume {:print "$at(51,8857,8858)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::is_balance_at_least [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:150:5+300 +procedure {:inline 1} $1_primary_fungible_store_is_balance_at_least'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata', _$t2: int) returns ($ret0: bool) +{ + // declare local variables + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t7: int; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:150:5+1 + assume {:print "$at(51,7219,7220)"} true; + assume {:print "$track_local(45,8,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:150:5+1 + assume {:print "$track_local(45,8,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:150:5+1 + assume {:print "$track_local(45,8,2):", $t2} $t2 == $t2; + + // $t4 := primary_fungible_store::primary_store_exists<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:151:13+39 + assume {:print "$at(51,7330,7369)"} true; + call $t4 := $1_primary_fungible_store_primary_store_exists'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,7330,7369)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,8):", $t5} $t5 == $t5; + goto L4; + } + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:151:9+187 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:152:63+7 + assume {:print "$at(51,7435,7442)"} true; +L1: + + // $t6 := primary_fungible_store::primary_store<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:152:49+32 + assume {:print "$at(51,7421,7453)"} true; + call $t6 := $1_primary_fungible_store_primary_store'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,7421,7453)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,8):", $t5} $t5 == $t5; + goto L4; + } + + // $t3 := fungible_asset::is_balance_at_least($t6, $t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:152:13+77 + call $t3 := $1_fungible_asset_is_balance_at_least'$1_fungible_asset_FungibleStore'($t6, $t2); + if ($abort_flag) { + assume {:print "$at(51,7385,7462)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,8):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:151:9+187 + assume {:print "$at(51,7326,7513)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:154:13+6 + assume {:print "$at(51,7492,7498)"} true; +L0: + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:154:23+1 + assume {:print "$at(51,7502,7503)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t3 := ==($t2, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:154:20+2 + $t3 := $IsEqual'u64'($t2, $t7); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:151:9+187 + assume {:print "$at(51,7326,7513)"} true; +L2: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:151:9+187 + assume {:print "$at(51,7326,7513)"} true; + assume {:print "$track_return(45,8,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:156:5+1 + assume {:print "$at(51,7518,7519)"} true; +L3: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:156:5+1 + assume {:print "$at(51,7518,7519)"} true; + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:156:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:156:5+1 + assume {:print "$at(51,7518,7519)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::withdraw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:169:5+397 +procedure {:inline 1} $1_primary_fungible_store_withdraw'$1_fungible_asset_Metadata'(_$t0: $signer, _$t1: $1_object_Object'$1_fungible_asset_Metadata', _$t2: int) returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t3: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t4: int; + var $t5: int; + var $t6: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t7: $1_fungible_asset_FungibleAsset; + var $t0: $signer; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:169:5+1 + assume {:print "$at(51,7948,7949)"} true; + assume {:print "$track_local(45,19,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:169:5+1 + assume {:print "$track_local(45,19,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:169:5+1 + assume {:print "$track_local(45,19,2):", $t2} $t2 == $t2; + + // $t4 := signer::address_of($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:170:49+25 + assume {:print "$at(51,8113,8138)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(51,8113,8138)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,19):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := primary_fungible_store::ensure_primary_store_exists<#0>($t4, $t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:170:21+64 + call $t6 := $1_primary_fungible_store_ensure_primary_store_exists'$1_fungible_asset_Metadata'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(51,8085,8149)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,19):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[store]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:170:13+5 + assume {:print "$track_local(45,19,3):", $t6} $t6 == $t6; + + // primary_fungible_store::may_be_unburn($t0, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:172:9+27 + assume {:print "$at(51,8243,8270)"} true; + call $1_primary_fungible_store_may_be_unburn($t0, $t6); + if ($abort_flag) { + assume {:print "$at(51,8243,8270)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,19):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := dispatchable_fungible_asset::withdraw($t0, $t6, $t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:173:9+59 + assume {:print "$at(51,8280,8339)"} true; + call $t7 := $1_dispatchable_fungible_asset_withdraw'$1_fungible_asset_FungibleStore'($t0, $t6, $t2); + if ($abort_flag) { + assume {:print "$at(51,8280,8339)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(45,19):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:173:9+59 + assume {:print "$track_return(45,19,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:174:5+1 + assume {:print "$at(51,8344,8345)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:174:5+1 + assume {:print "$at(51,8344,8345)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:174:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:174:5+1 + assume {:print "$at(51,8344,8345)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::create_primary_store [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:76:5+1058 +procedure {:inline 1} $1_primary_fungible_store_create_primary_store'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_object_ConstructorRef; + var $t4: $1_object_TransferRef; + var $t5: $1_string_String; + var $t6: $1_object_ConstructorRef; + var $t7: $1_object_DeriveRef; + var $t8: int; + var $t9: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t10: Vec (int); + var $t11: $1_string_String; + var $t12: int; + var $t13: int; + var $t14: $1_object_Object'$1_fungible_asset_Metadata'; + var $t15: $1_primary_fungible_store_DeriveRefPod; + var $t16: $1_object_DeriveRef; + var $t17: int; + var $t18: $1_object_ConstructorRef; + var $t19: $1_object_TransferRef; + var $t20: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_DeriveRef': $1_object_DeriveRef; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:76:5+1 + assume {:print "$at(51,3723,3724)"} true; + assume {:print "$track_local(45,2,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:76:5+1 + assume {:print "$track_local(45,2,1):", $t1} $t1 == $t1; + + // $t10 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 99, 114, 101, 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:80:36+57 + assume {:print "$at(51,3910,3967)"} true; + $t10 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(99, 114, 101, 97)), MakeVec4(116, 101, 95, 112)), MakeVec4(114, 105, 109, 97)), MakeVec4(114, 121, 95, 115)), MakeVec4(116, 111, 114, 101)), MakeVec4(32, 124, 32, 101)), MakeVec4(110, 116, 101, 114)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t10); + + // $t11 := string::utf8($t10) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:80:23+71 + call $t11 := $1_string_utf8($t10); + if ($abort_flag) { + assume {:print "$at(51,3897,3968)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // debug::print($t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:80:9+86 + call $1_debug_print'$1_string_String'($t11); + if ($abort_flag) { + assume {:print "$at(51,3883,3969)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // debug::print
($t0) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:81:9+25 + assume {:print "$at(51,3979,4004)"} true; + call $1_debug_print'address'($t0); + if ($abort_flag) { + assume {:print "$at(51,3979,4004)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // debug::print>($t1) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:82:9+23 + assume {:print "$at(51,4014,4037)"} true; + call $1_debug_print'$1_object_Object'$1_fungible_asset_Metadata''($t1); + if ($abort_flag) { + assume {:print "$at(51,4014,4037)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // $t13 := object::object_address<#0>($t1) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:84:29+33 + assume {:print "$at(51,4068,4101)"} true; + call $t13 := $1_object_object_address'$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(51,4068,4101)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[metadata_addr]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:84:13+13 + assume {:print "$track_local(45,2,8):", $t13} $t13 == $t13; + + // $t14 := object::address_to_object($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:85:9+50 + assume {:print "$at(51,4111,4161)"} true; + call $t14 := $1_object_address_to_object'$1_fungible_asset_Metadata'($t13); + if ($abort_flag) { + assume {:print "$at(51,4111,4161)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:85:9+50 + + // $t15 := get_global($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:86:27+13 + assume {:print "$at(51,4189,4202)"} true; + if (!$ResourceExists($1_primary_fungible_store_DeriveRefPod_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t15 := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $t13); + } + if ($abort_flag) { + assume {:print "$at(51,4189,4202)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // $t16 := get_field.metadata_derive_ref($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:86:26+63 + $t16 := $t15->$metadata_derive_ref; + + // trace_local[derive_ref]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:86:13+10 + assume {:print "$track_local(45,2,7):", $t16} $t16 == $t16; + + // assume Identical($t17, object::spec_create_user_derived_object_address($t0, select object::DeriveRef.self($t16))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:177:9+89 + assume {:print "$at(50,7512,7601)"} true; + assume ($t17 == $1_object_spec_create_user_derived_object_address($t0, $t16->$self)); + + // $t18 := object::create_user_derived_object($t0, $t16) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:87:32+58 + assume {:print "$at(51,4284,4342)"} true; + call $t18 := $1_object_create_user_derived_object($t0, $t16); + if ($abort_flag) { + assume {:print "$at(51,4284,4342)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[constructor_ref]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:87:13+15 + assume {:print "$track_local(45,2,6):", $t18} $t18 == $t18; + + // $t19 := object::generate_transfer_ref($t18) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:89:29+46 + assume {:print "$at(51,4460,4506)"} true; + call $t19 := $1_object_generate_transfer_ref($t18); + if ($abort_flag) { + assume {:print "$at(51,4460,4506)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // object::disable_ungated_transfer($t19) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:90:9+46 + assume {:print "$at(51,4516,4562)"} true; + call $1_object_disable_ungated_transfer($t19); + if ($abort_flag) { + assume {:print "$at(51,4516,4562)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // $t20 := fungible_asset::create_store<#0>($t18, $t1) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:92:19+55 + assume {:print "$at(51,4583,4638)"} true; + call $t20 := $1_fungible_asset_create_store'$1_fungible_asset_Metadata'($t18, $t1); + if ($abort_flag) { + assume {:print "$at(51,4583,4638)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[ret]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:92:13+3 + assume {:print "$track_local(45,2,9):", $t20} $t20 == $t20; + + // $t21 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 99, 114, 101, 97, 116, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:93:36+56 + assume {:print "$at(51,4675,4731)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(99, 114, 101, 97)), MakeVec4(116, 101, 95, 112)), MakeVec4(114, 105, 109, 97)), MakeVec4(114, 121, 95, 115)), MakeVec4(116, 111, 114, 101)), MakeVec4(32, 124, 32, 101)), MakeVec4(120, 105, 116, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:93:23+70 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(51,4662,4732)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // debug::print($t22) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:93:9+85 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(51,4648,4733)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // debug::print>($t20) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:94:9+18 + assume {:print "$at(51,4743,4761)"} true; + call $1_debug_print'$1_object_Object'$1_fungible_asset_FungibleStore''($t20); + if ($abort_flag) { + assume {:print "$at(51,4743,4761)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(45,2):", $t12} $t12 == $t12; + goto L2; + } + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:96:9+3 + assume {:print "$at(51,4772,4775)"} true; + assume {:print "$track_return(45,2,0):", $t20} $t20 == $t20; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:97:5+1 + assume {:print "$at(51,4780,4781)"} true; +L1: + + // return $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:97:5+1 + assume {:print "$at(51,4780,4781)"} true; + $ret0 := $t20; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:97:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:97:5+1 + assume {:print "$at(51,4780,4781)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::create_primary_store_enabled_fungible_asset [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+694 +procedure {:inline 1} $1_primary_fungible_store_create_primary_store_enabled_fungible_asset(_$t0: $1_object_ConstructorRef, _$t1: $1_option_Option'u128', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: $1_string_String, _$t6: $1_string_String) returns () +{ + // declare local variables + var $t7: $signer; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t9: int; + var $t10: $signer; + var $t11: $1_object_DeriveRef; + var $t12: $1_primary_fungible_store_DeriveRefPod; + var $t0: $1_object_ConstructorRef; + var $t1: $1_option_Option'u128'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_option_Option'u128'': $1_option_Option'u128'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // bytecode translation starts here + // trace_local[constructor_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$at(51,2197,2198)"} true; + assume {:print "$track_local(45,3,0):", $t0} $t0 == $t0; + + // trace_local[maximum_supply]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,2):", $t2} $t2 == $t2; + + // trace_local[symbol]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,3):", $t3} $t3 == $t3; + + // trace_local[decimals]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,4):", $t4} $t4 == $t4; + + // trace_local[icon_uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,5):", $t5} $t5 == $t5; + + // trace_local[project_uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:35:5+1 + assume {:print "$track_local(45,3,6):", $t6} $t6 == $t6; + + // $t8 := fungible_asset::add_fungibility($t0, $t1, $t2, $t3, $t4, $t5, $t6) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:44:9+206 + assume {:print "$at(51,2472,2678)"} true; + call $t8 := $1_fungible_asset_add_fungibility($t0, $t1, $t2, $t3, $t4, $t5, $t6); + if ($abort_flag) { + assume {:print "$at(51,2472,2678)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,3):", $t9} $t9 == $t9; + goto L2; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:44:9+206 + + // $t10 := object::generate_signer($t0) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:53:29+40 + assume {:print "$at(51,2708,2748)"} true; + call $t10 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(51,2708,2748)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,3):", $t9} $t9 == $t9; + goto L2; + } + + // $t11 := object::generate_derive_ref($t0) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:55:34+44 + assume {:print "$at(51,2828,2872)"} true; + call $t11 := $1_object_generate_derive_ref($t0); + if ($abort_flag) { + assume {:print "$at(51,2828,2872)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,3):", $t9} $t9 == $t9; + goto L2; + } + + // $t12 := pack primary_fungible_store::DeriveRefPod($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:54:31+103 + assume {:print "$at(51,2780,2883)"} true; + $t12 := $1_primary_fungible_store_DeriveRefPod($t11); + + // move_to($t12, $t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:54:9+7 + if ($ResourceExists($1_primary_fungible_store_DeriveRefPod_$memory, $t10->$addr)) { + call $ExecFailureAbort(); + } else { + $1_primary_fungible_store_DeriveRefPod_$memory := $ResourceUpdate($1_primary_fungible_store_DeriveRefPod_$memory, $t10->$addr, $t12); + } + if ($abort_flag) { + assume {:print "$at(51,2758,2765)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,3):", $t9} $t9 == $t9; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:57:5+1 + assume {:print "$at(51,2890,2891)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:57:5+1 + assume {:print "$at(51,2890,2891)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:57:5+1 +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:57:5+1 + assume {:print "$at(51,2890,2891)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::ensure_primary_store_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:60:5+635 +procedure {:inline 1} $1_primary_fungible_store_ensure_primary_store_exists'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t4: $1_string_String; + var $t5: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t6: int; + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: Vec (int); + var $t13: $1_string_String; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:60:5+1 + assume {:print "$at(51,2998,2999)"} true; + assume {:print "$track_local(45,6,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:60:5+1 + assume {:print "$track_local(45,6,1):", $t1} $t1 == $t1; + + // $t7 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 101, 110, 115, 117, 114, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 120, 105, 115, 116, 115, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:64:36+64 + assume {:print "$at(51,3187,3251)"} true; + $t7 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(101, 110, 115, 117)), MakeVec4(114, 101, 95, 112)), MakeVec4(114, 105, 109, 97)), MakeVec4(114, 121, 95, 115)), MakeVec4(116, 111, 114, 101)), MakeVec4(95, 101, 120, 105)), MakeVec4(115, 116, 115, 32)), MakeVec4(124, 32, 101, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t7); + + // $t8 := string::utf8($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:64:23+78 + call $t8 := $1_string_utf8($t7); + if ($abort_flag) { + assume {:print "$at(51,3174,3252)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t8) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:64:9+93 + call $1_debug_print'$1_string_String'($t8); + if ($abort_flag) { + assume {:print "$at(51,3160,3253)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := primary_fungible_store::primary_store_address<#0>($t0, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:65:26+38 + assume {:print "$at(51,3280,3318)"} true; + call $t10 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,3280,3318)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[store_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:65:13+10 + assume {:print "$track_local(45,6,6):", $t10} $t10 == $t10; + + // $t11 := fungible_asset::store_exists($t10) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:66:23+40 + assume {:print "$at(51,3342,3382)"} true; + call $t11 := $1_fungible_asset_store_exists($t10); + if ($abort_flag) { + assume {:print "$at(51,3342,3382)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:66:19+174 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:67:39+10 + assume {:print "$at(51,3424,3434)"} true; +L1: + + // $t3 := object::address_to_object($t10) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:67:13+37 + assume {:print "$at(51,3398,3435)"} true; + call $t3 := $1_object_address_to_object'$1_fungible_asset_FungibleStore'($t10); + if ($abort_flag) { + assume {:print "$at(51,3398,3435)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:66:19+174 + assume {:print "$at(51,3338,3512)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:69:34+5 + assume {:print "$at(51,3486,3491)"} true; +L0: + + // $t3 := primary_fungible_store::create_primary_store<#0>($t0, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:69:13+37 + assume {:print "$at(51,3465,3502)"} true; + call $t3 := $1_primary_fungible_store_create_primary_store'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,3465,3502)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:66:19+174 + assume {:print "$at(51,3338,3512)"} true; +L2: + + // trace_local[ret]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:66:13+3 + assume {:print "$at(51,3332,3335)"} true; + assume {:print "$track_local(45,6,5):", $t3} $t3 == $t3; + + // $t12 := [112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 58, 58, 101, 110, 115, 117, 114, 101, 95, 112, 114, 105, 109, 97, 114, 121, 95, 115, 116, 111, 114, 101, 95, 101, 120, 105, 115, 116, 115, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:71:36+63 + assume {:print "$at(51,3549,3612)"} true; + $t12 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(112, 114, 105, 109), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 58, 58)), MakeVec4(101, 110, 115, 117)), MakeVec4(114, 101, 95, 112)), MakeVec4(114, 105, 109, 97)), MakeVec4(114, 121, 95, 115)), MakeVec4(116, 111, 114, 101)), MakeVec4(95, 101, 120, 105)), MakeVec4(115, 116, 115, 32)), MakeVec4(124, 32, 101, 120)), MakeVec4(105, 116, 101, 100)); + assume $IsValid'vec'u8''($t12); + + // $t13 := string::utf8($t12) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:71:23+77 + call $t13 := $1_string_utf8($t12); + if ($abort_flag) { + assume {:print "$at(51,3536,3613)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // debug::print($t13) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:71:9+92 + call $1_debug_print'$1_string_String'($t13); + if ($abort_flag) { + assume {:print "$at(51,3522,3614)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(45,6):", $t9} $t9 == $t9; + goto L4; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:72:9+3 + assume {:print "$at(51,3624,3627)"} true; + assume {:print "$track_return(45,6,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:73:5+1 + assume {:print "$at(51,3632,3633)"} true; +L3: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:73:5+1 + assume {:print "$at(51,3632,3633)"} true; + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:73:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:73:5+1 + assume {:print "$at(51,3632,3633)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::may_be_unburn [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:275:5+163 +procedure {:inline 1} $1_primary_fungible_store_may_be_unburn(_$t0: $signer, _$t1: $1_object_Object'$1_fungible_asset_FungibleStore') returns () +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $1_object_TombStone; + var $t0: $signer; + var $t1: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:275:5+1 + assume {:print "$at(51,13264,13265)"} true; + assume {:print "$track_local(45,10,0):", $t0} $t0 == $t0; + + // trace_local[store]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:275:5+1 + assume {:print "$track_local(45,10,1):", $t1} $t1 == $t1; + + // $t2 := object::is_burnt($t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:276:13+23 + assume {:print "$at(51,13342,13365)"} true; + call $t2 := $1_object_is_burnt'$1_fungible_asset_FungibleStore'($t1); + if ($abort_flag) { + assume {:print "$at(51,13342,13365)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,10):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:276:9+82 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:277:28+5 + assume {:print "$at(51,13396,13401)"} true; +L1: + + // assume Identical($t4, select object::Object.inner>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:488:9+34 + assume {:print "$at(50,19230,19264)"} true; + assume ($t4 == $t1->$inner); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:491:9+58 + assume {:print "$at(50,19365,19423)"} true; + assume ($t5 == $ResourceValue($1_object_TombStone_$memory, $t4)); + + // object::unburn($t0, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:277:13+28 + assume {:print "$at(51,13381,13409)"} true; + call $1_object_unburn'$1_fungible_asset_FungibleStore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,13381,13409)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,10):", $t3} $t3 == $t3; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:277:41+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:276:9+82 + assume {:print "$at(51,13338,13420)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:278:10+1 + assume {:print "$at(51,13420,13421)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:279:5+1 + assume {:print "$at(51,13426,13427)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:279:5+1 + assume {:print "$at(51,13426,13427)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:279:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:279:5+1 + assume {:print "$at(51,13426,13427)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::primary_store [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:108:5+216 +procedure {:inline 1} $1_primary_fungible_store_primary_store'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_object_Object'$1_fungible_asset_FungibleStore') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:108:5+1 + assume {:print "$at(51,5175,5176)"} true; + assume {:print "$track_local(45,12,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:108:5+1 + assume {:print "$track_local(45,12,1):", $t1} $t1 == $t1; + + // $t2 := primary_fungible_store::primary_store_address<#0>($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:109:21+38 + assume {:print "$at(51,5290,5328)"} true; + call $t2 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,5290,5328)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := object::address_to_object($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:110:9+47 + assume {:print "$at(51,5338,5385)"} true; + call $t4 := $1_object_address_to_object'$1_fungible_asset_FungibleStore'($t2); + if ($abort_flag) { + assume {:print "$at(51,5338,5385)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,12):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:110:9+47 + assume {:print "$track_return(45,12,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:111:5+1 + assume {:print "$at(51,5390,5391)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:111:5+1 + assume {:print "$at(51,5390,5391)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:111:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:111:5+1 + assume {:print "$at(51,5390,5391)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::primary_store_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:101:5+230 +procedure {:inline 1} $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:101:5+1 + assume {:print "$at(51,4867,4868)"} true; + assume {:print "$track_local(45,13,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:101:5+1 + assume {:print "$track_local(45,13,1):", $t1} $t1 == $t1; + + // $t3 := object::object_address<#0>($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:102:29+33 + assume {:print "$at(51,4984,5017)"} true; + call $t3 := $1_object_object_address'$1_fungible_asset_Metadata'($t1); + if ($abort_flag) { + assume {:print "$at(51,4984,5017)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(45,13):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[metadata_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:102:13+13 + assume {:print "$track_local(45,13,2):", $t3} $t3 == $t3; + + // $t5 := opaque begin: object::create_user_derived_object_address($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:103:9+64 + assume {:print "$at(51,5027,5091)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:103:9+64 + assume $IsValid'address'($t5); + + // assume Eq
($t5, object::spec_create_user_derived_object_address($t0, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:103:9+64 + assume $IsEqual'address'($t5, $1_object_spec_create_user_derived_object_address($t0, $t3)); + + // $t5 := opaque end: object::create_user_derived_object_address($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:103:9+64 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:103:9+64 + assume {:print "$track_return(45,13,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:104:5+1 + assume {:print "$at(51,5096,5097)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:104:5+1 + assume {:print "$at(51,5096,5097)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:104:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:104:5+1 + assume {:print "$at(51,5096,5097)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun primary_fungible_store::primary_store_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:115:5+171 +procedure {:inline 1} $1_primary_fungible_store_primary_store_exists'$1_fungible_asset_Metadata'(_$t0: int, _$t1: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: int; + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:115:5+1 + assume {:print "$at(51,5474,5475)"} true; + assume {:print "$track_local(45,14,0):", $t0} $t0 == $t0; + + // trace_local[metadata]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:115:5+1 + assume {:print "$track_local(45,14,1):", $t1} $t1 == $t1; + + // $t2 := primary_fungible_store::primary_store_address<#0>($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:116:38+40 + assume {:print "$at(51,5598,5638)"} true; + call $t2 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(51,5598,5638)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,14):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := fungible_asset::store_exists($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:116:9+70 + call $t4 := $1_fungible_asset_store_exists($t2); + if ($abort_flag) { + assume {:print "$at(51,5569,5639)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(45,14):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:116:9+70 + assume {:print "$track_return(45,14,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:117:5+1 + assume {:print "$at(51,5644,5645)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:117:5+1 + assume {:print "$at(51,5644,5645)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:117:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/primary_fungible_store.move:117:5+1 + assume {:print "$at(51,5644,5645)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:72:10+234 +function {:inline} $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(val: int, supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + ($1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'(supply) ==> $IsEqual'u64'(val, $1_optional_aggregator_optional_aggregator_value($1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'(supply)))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:72:10+234 +function {:inline} $1_coin_spec_fun_supply_tracked'#0'(val: int, supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): bool { + ($1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'(supply) ==> $IsEqual'u64'(val, $1_optional_aggregator_optional_aggregator_value($1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'(supply)))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:163:10+565 +function {:inline} $1_coin_spec_paired_metadata'$1_starcoin_coin_STC'($1_coin_CoinConversionMap_$memory: $Memory $1_coin_CoinConversionMap): $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'' { + (if ($ResourceExists($1_coin_CoinConversionMap_$memory, 1)) then ((var map := $ResourceValue($1_coin_CoinConversionMap_$memory, 1)->$coin_to_fungible_asset_map; (if ($1_table_spec_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(map, $1_type_info_$type_of'$1_starcoin_coin_STC'())) then ((var metadata := $1_table_spec_get'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(map, $1_type_info_$type_of'$1_starcoin_coin_STC'()); $1_option_spec_some'$1_object_Object'$1_fungible_asset_Metadata''(metadata))) else ($1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''())))) else ($1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''())) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:177:10+373 +function {:inline} $1_coin_spec_is_account_registered'$1_starcoin_coin_STC'($1_fungible_asset_FungibleStore_$memory: $Memory $1_fungible_asset_FungibleStore, $1_coin_CoinConversionMap_$memory: $Memory $1_coin_CoinConversionMap, $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory: $Memory $1_coin_CoinStore'$1_starcoin_coin_STC', account_addr: int): bool { + (var paired_metadata_opt := $1_coin_spec_paired_metadata'$1_starcoin_coin_STC'($1_coin_CoinConversionMap_$memory); ($ResourceExists($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, account_addr) || ($1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''(paired_metadata_opt) && $1_primary_fungible_store_spec_primary_store_exists'$1_fungible_asset_Metadata'($1_fungible_asset_FungibleStore_$memory, account_addr, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''(paired_metadata_opt))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+81 +function {:inline} $1_coin_$value'#0'(coin: $1_coin_Coin'#0'): int { + coin->$value +} + +// struct coin::Coin at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:122:5+112 +datatype $1_coin_Coin'$1_starcoin_coin_STC' { + $1_coin_Coin'$1_starcoin_coin_STC'($value: int) +} +function {:inline} $Update'$1_coin_Coin'$1_starcoin_coin_STC''_value(s: $1_coin_Coin'$1_starcoin_coin_STC', x: int): $1_coin_Coin'$1_starcoin_coin_STC' { + $1_coin_Coin'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''(s: $1_coin_Coin'$1_starcoin_coin_STC'): bool { + $IsValid'u64'(s->$value) +} +function {:inline} $IsEqual'$1_coin_Coin'$1_starcoin_coin_STC''(s1: $1_coin_Coin'$1_starcoin_coin_STC', s2: $1_coin_Coin'$1_starcoin_coin_STC'): bool { + s1 == s2 +} + +// struct coin::Coin<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:122:5+112 +datatype $1_coin_Coin'#0' { + $1_coin_Coin'#0'($value: int) +} +function {:inline} $Update'$1_coin_Coin'#0''_value(s: $1_coin_Coin'#0', x: int): $1_coin_Coin'#0' { + $1_coin_Coin'#0'(x) +} +function $IsValid'$1_coin_Coin'#0''(s: $1_coin_Coin'#0'): bool { + $IsValid'u64'(s->$value) +} +function {:inline} $IsEqual'$1_coin_Coin'#0''(s1: $1_coin_Coin'#0', s2: $1_coin_Coin'#0'): bool { + s1 == s2 +} + +// struct coin::DepositEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:204:5+64 +datatype $1_coin_DepositEvent { + $1_coin_DepositEvent($amount: int) +} +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'(s->$amount) +} +function {:inline} $IsEqual'$1_coin_DepositEvent'(s1: $1_coin_DepositEvent, s2: $1_coin_DepositEvent): bool { + s1 == s2 +} + +// struct coin::WithdrawEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:209:5+65 +datatype $1_coin_WithdrawEvent { + $1_coin_WithdrawEvent($amount: int) +} +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'(s->$amount) +} +function {:inline} $IsEqual'$1_coin_WithdrawEvent'(s1: $1_coin_WithdrawEvent, s2: $1_coin_WithdrawEvent): bool { + s1 == s2 +} + +// struct coin::AggregatableCoin<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:130:5+144 +datatype $1_coin_AggregatableCoin'#0' { + $1_coin_AggregatableCoin'#0'($value: $1_aggregator_Aggregator) +} +function {:inline} $Update'$1_coin_AggregatableCoin'#0''_value(s: $1_coin_AggregatableCoin'#0', x: $1_aggregator_Aggregator): $1_coin_AggregatableCoin'#0' { + $1_coin_AggregatableCoin'#0'(x) +} +function $IsValid'$1_coin_AggregatableCoin'#0''(s: $1_coin_AggregatableCoin'#0'): bool { + $IsValid'$1_aggregator_Aggregator'(s->$value) +} +function {:inline} $IsEqual'$1_coin_AggregatableCoin'#0''(s1: $1_coin_AggregatableCoin'#0', s2: $1_coin_AggregatableCoin'#0'): bool { + s1 == s2 +} + +// struct coin::BurnCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:240:5+58 +datatype $1_coin_BurnCapability'$1_starcoin_coin_STC' { + $1_coin_BurnCapability'$1_starcoin_coin_STC'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_BurnCapability'$1_starcoin_coin_STC''_dummy_field(s: $1_coin_BurnCapability'$1_starcoin_coin_STC', x: bool): $1_coin_BurnCapability'$1_starcoin_coin_STC' { + $1_coin_BurnCapability'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_BurnCapability'$1_starcoin_coin_STC''(s: $1_coin_BurnCapability'$1_starcoin_coin_STC'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_BurnCapability'$1_starcoin_coin_STC''(s1: $1_coin_BurnCapability'$1_starcoin_coin_STC', s2: $1_coin_BurnCapability'$1_starcoin_coin_STC'): bool { + s1 == s2 +} + +// struct coin::BurnCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:240:5+58 +datatype $1_coin_BurnCapability'#0' { + $1_coin_BurnCapability'#0'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_BurnCapability'#0''_dummy_field(s: $1_coin_BurnCapability'#0', x: bool): $1_coin_BurnCapability'#0' { + $1_coin_BurnCapability'#0'(x) +} +function $IsValid'$1_coin_BurnCapability'#0''(s: $1_coin_BurnCapability'#0'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_BurnCapability'#0''(s1: $1_coin_BurnCapability'#0', s2: $1_coin_BurnCapability'#0'): bool { + s1 == s2 +} + +// struct coin::BurnRefReceipt at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:272:5+65 +datatype $1_coin_BurnRefReceipt { + $1_coin_BurnRefReceipt($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_coin_BurnRefReceipt'_metadata(s: $1_coin_BurnRefReceipt, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_coin_BurnRefReceipt { + $1_coin_BurnRefReceipt(x) +} +function $IsValid'$1_coin_BurnRefReceipt'(s: $1_coin_BurnRefReceipt): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_coin_BurnRefReceipt'(s1: $1_coin_BurnRefReceipt, s2: $1_coin_BurnRefReceipt): bool { + s1 == s2 +} + +// struct coin::CoinConversionMap at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:243:5+111 +datatype $1_coin_CoinConversionMap { + $1_coin_CoinConversionMap($coin_to_fungible_asset_map: Table int ($1_object_Object'$1_fungible_asset_Metadata')) +} +function {:inline} $Update'$1_coin_CoinConversionMap'_coin_to_fungible_asset_map(s: $1_coin_CoinConversionMap, x: Table int ($1_object_Object'$1_fungible_asset_Metadata')): $1_coin_CoinConversionMap { + $1_coin_CoinConversionMap(x) +} +function $IsValid'$1_coin_CoinConversionMap'(s: $1_coin_CoinConversionMap): bool { + $IsValid'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata'''(s->$coin_to_fungible_asset_map) +} +function {:inline} $IsEqual'$1_coin_CoinConversionMap'(s1: $1_coin_CoinConversionMap, s2: $1_coin_CoinConversionMap): bool { + s1 == s2 +} +var $1_coin_CoinConversionMap_$memory: $Memory $1_coin_CoinConversionMap; + +// struct coin::CoinDeposit at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:173:5+116 +datatype $1_coin_CoinDeposit { + $1_coin_CoinDeposit($coin_type: $1_string_String, $account: int, $amount: int) +} +function {:inline} $Update'$1_coin_CoinDeposit'_coin_type(s: $1_coin_CoinDeposit, x: $1_string_String): $1_coin_CoinDeposit { + $1_coin_CoinDeposit(x, s->$account, s->$amount) +} +function {:inline} $Update'$1_coin_CoinDeposit'_account(s: $1_coin_CoinDeposit, x: int): $1_coin_CoinDeposit { + $1_coin_CoinDeposit(s->$coin_type, x, s->$amount) +} +function {:inline} $Update'$1_coin_CoinDeposit'_amount(s: $1_coin_CoinDeposit, x: int): $1_coin_CoinDeposit { + $1_coin_CoinDeposit(s->$coin_type, s->$account, x) +} +function $IsValid'$1_coin_CoinDeposit'(s: $1_coin_CoinDeposit): bool { + $IsValid'$1_string_String'(s->$coin_type) + && $IsValid'address'(s->$account) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_coin_CoinDeposit'(s1: $1_coin_CoinDeposit, s2: $1_coin_CoinDeposit): bool { + $IsEqual'$1_string_String'(s1->$coin_type, s2->$coin_type) + && $IsEqual'address'(s1->$account, s2->$account) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct coin::CoinEventHandleDeletion at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:216:5+221 +datatype $1_coin_CoinEventHandleDeletion { + $1_coin_CoinEventHandleDeletion($event_handle_creation_address: int, $deleted_deposit_event_handle_creation_number: int, $deleted_withdraw_event_handle_creation_number: int) +} +function {:inline} $Update'$1_coin_CoinEventHandleDeletion'_event_handle_creation_address(s: $1_coin_CoinEventHandleDeletion, x: int): $1_coin_CoinEventHandleDeletion { + $1_coin_CoinEventHandleDeletion(x, s->$deleted_deposit_event_handle_creation_number, s->$deleted_withdraw_event_handle_creation_number) +} +function {:inline} $Update'$1_coin_CoinEventHandleDeletion'_deleted_deposit_event_handle_creation_number(s: $1_coin_CoinEventHandleDeletion, x: int): $1_coin_CoinEventHandleDeletion { + $1_coin_CoinEventHandleDeletion(s->$event_handle_creation_address, x, s->$deleted_withdraw_event_handle_creation_number) +} +function {:inline} $Update'$1_coin_CoinEventHandleDeletion'_deleted_withdraw_event_handle_creation_number(s: $1_coin_CoinEventHandleDeletion, x: int): $1_coin_CoinEventHandleDeletion { + $1_coin_CoinEventHandleDeletion(s->$event_handle_creation_address, s->$deleted_deposit_event_handle_creation_number, x) +} +function $IsValid'$1_coin_CoinEventHandleDeletion'(s: $1_coin_CoinEventHandleDeletion): bool { + $IsValid'address'(s->$event_handle_creation_address) + && $IsValid'u64'(s->$deleted_deposit_event_handle_creation_number) + && $IsValid'u64'(s->$deleted_withdraw_event_handle_creation_number) +} +function {:inline} $IsEqual'$1_coin_CoinEventHandleDeletion'(s1: $1_coin_CoinEventHandleDeletion, s2: $1_coin_CoinEventHandleDeletion): bool { + s1 == s2 +} + +// struct coin::CoinInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:157:5+548 +datatype $1_coin_CoinInfo'$1_starcoin_coin_STC' { + $1_coin_CoinInfo'$1_starcoin_coin_STC'($name: $1_string_String, $symbol: $1_string_String, $decimals: int, $supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator') +} +function {:inline} $Update'$1_coin_CoinInfo'$1_starcoin_coin_STC''_name(s: $1_coin_CoinInfo'$1_starcoin_coin_STC', x: $1_string_String): $1_coin_CoinInfo'$1_starcoin_coin_STC' { + $1_coin_CoinInfo'$1_starcoin_coin_STC'(x, s->$symbol, s->$decimals, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_starcoin_coin_STC''_symbol(s: $1_coin_CoinInfo'$1_starcoin_coin_STC', x: $1_string_String): $1_coin_CoinInfo'$1_starcoin_coin_STC' { + $1_coin_CoinInfo'$1_starcoin_coin_STC'(s->$name, x, s->$decimals, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_starcoin_coin_STC''_decimals(s: $1_coin_CoinInfo'$1_starcoin_coin_STC', x: int): $1_coin_CoinInfo'$1_starcoin_coin_STC' { + $1_coin_CoinInfo'$1_starcoin_coin_STC'(s->$name, s->$symbol, x, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'$1_starcoin_coin_STC''_supply(s: $1_coin_CoinInfo'$1_starcoin_coin_STC', x: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'$1_starcoin_coin_STC' { + $1_coin_CoinInfo'$1_starcoin_coin_STC'(s->$name, s->$symbol, s->$decimals, x) +} +function $IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''(s: $1_coin_CoinInfo'$1_starcoin_coin_STC'): bool { + $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$symbol) + && $IsValid'u8'(s->$decimals) + && $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s->$supply) +} +function {:inline} $IsEqual'$1_coin_CoinInfo'$1_starcoin_coin_STC''(s1: $1_coin_CoinInfo'$1_starcoin_coin_STC', s2: $1_coin_CoinInfo'$1_starcoin_coin_STC'): bool { + $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$symbol, s2->$symbol) + && $IsEqual'u8'(s1->$decimals, s2->$decimals) + && $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s1->$supply, s2->$supply)} +var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + +// struct coin::CoinInfo<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:157:5+548 +datatype $1_coin_CoinInfo'#0' { + $1_coin_CoinInfo'#0'($name: $1_string_String, $symbol: $1_string_String, $decimals: int, $supply: $1_option_Option'$1_optional_aggregator_OptionalAggregator') +} +function {:inline} $Update'$1_coin_CoinInfo'#0''_name(s: $1_coin_CoinInfo'#0', x: $1_string_String): $1_coin_CoinInfo'#0' { + $1_coin_CoinInfo'#0'(x, s->$symbol, s->$decimals, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'#0''_symbol(s: $1_coin_CoinInfo'#0', x: $1_string_String): $1_coin_CoinInfo'#0' { + $1_coin_CoinInfo'#0'(s->$name, x, s->$decimals, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'#0''_decimals(s: $1_coin_CoinInfo'#0', x: int): $1_coin_CoinInfo'#0' { + $1_coin_CoinInfo'#0'(s->$name, s->$symbol, x, s->$supply) +} +function {:inline} $Update'$1_coin_CoinInfo'#0''_supply(s: $1_coin_CoinInfo'#0', x: $1_option_Option'$1_optional_aggregator_OptionalAggregator'): $1_coin_CoinInfo'#0' { + $1_coin_CoinInfo'#0'(s->$name, s->$symbol, s->$decimals, x) +} +function $IsValid'$1_coin_CoinInfo'#0''(s: $1_coin_CoinInfo'#0'): bool { + $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$symbol) + && $IsValid'u8'(s->$decimals) + && $IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s->$supply) +} +function {:inline} $IsEqual'$1_coin_CoinInfo'#0''(s1: $1_coin_CoinInfo'#0', s2: $1_coin_CoinInfo'#0'): bool { + $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$symbol, s2->$symbol) + && $IsEqual'u8'(s1->$decimals, s2->$decimals) + && $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''(s1->$supply, s2->$supply)} +var $1_coin_CoinInfo'#0'_$memory: $Memory $1_coin_CoinInfo'#0'; + +// struct coin::CoinStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:140:5+206 +datatype $1_coin_CoinStore'$1_starcoin_coin_STC' { + $1_coin_CoinStore'$1_starcoin_coin_STC'($coin: $1_coin_Coin'$1_starcoin_coin_STC', $frozen: bool, $deposit_events: $1_event_EventHandle'$1_coin_DepositEvent', $withdraw_events: $1_event_EventHandle'$1_coin_WithdrawEvent') +} +function {:inline} $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_coin(s: $1_coin_CoinStore'$1_starcoin_coin_STC', x: $1_coin_Coin'$1_starcoin_coin_STC'): $1_coin_CoinStore'$1_starcoin_coin_STC' { + $1_coin_CoinStore'$1_starcoin_coin_STC'(x, s->$frozen, s->$deposit_events, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_frozen(s: $1_coin_CoinStore'$1_starcoin_coin_STC', x: bool): $1_coin_CoinStore'$1_starcoin_coin_STC' { + $1_coin_CoinStore'$1_starcoin_coin_STC'(s->$coin, x, s->$deposit_events, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_deposit_events(s: $1_coin_CoinStore'$1_starcoin_coin_STC', x: $1_event_EventHandle'$1_coin_DepositEvent'): $1_coin_CoinStore'$1_starcoin_coin_STC' { + $1_coin_CoinStore'$1_starcoin_coin_STC'(s->$coin, s->$frozen, x, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_withdraw_events(s: $1_coin_CoinStore'$1_starcoin_coin_STC', x: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'$1_starcoin_coin_STC' { + $1_coin_CoinStore'$1_starcoin_coin_STC'(s->$coin, s->$frozen, s->$deposit_events, x) +} +function $IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''(s: $1_coin_CoinStore'$1_starcoin_coin_STC'): bool { + $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''(s->$coin) + && $IsValid'bool'(s->$frozen) + && $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''(s->$deposit_events) + && $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''(s->$withdraw_events) +} +function {:inline} $IsEqual'$1_coin_CoinStore'$1_starcoin_coin_STC''(s1: $1_coin_CoinStore'$1_starcoin_coin_STC', s2: $1_coin_CoinStore'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory: $Memory $1_coin_CoinStore'$1_starcoin_coin_STC'; + +// struct coin::CoinStore<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:140:5+206 +datatype $1_coin_CoinStore'#0' { + $1_coin_CoinStore'#0'($coin: $1_coin_Coin'#0', $frozen: bool, $deposit_events: $1_event_EventHandle'$1_coin_DepositEvent', $withdraw_events: $1_event_EventHandle'$1_coin_WithdrawEvent') +} +function {:inline} $Update'$1_coin_CoinStore'#0''_coin(s: $1_coin_CoinStore'#0', x: $1_coin_Coin'#0'): $1_coin_CoinStore'#0' { + $1_coin_CoinStore'#0'(x, s->$frozen, s->$deposit_events, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'#0''_frozen(s: $1_coin_CoinStore'#0', x: bool): $1_coin_CoinStore'#0' { + $1_coin_CoinStore'#0'(s->$coin, x, s->$deposit_events, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'#0''_deposit_events(s: $1_coin_CoinStore'#0', x: $1_event_EventHandle'$1_coin_DepositEvent'): $1_coin_CoinStore'#0' { + $1_coin_CoinStore'#0'(s->$coin, s->$frozen, x, s->$withdraw_events) +} +function {:inline} $Update'$1_coin_CoinStore'#0''_withdraw_events(s: $1_coin_CoinStore'#0', x: $1_event_EventHandle'$1_coin_WithdrawEvent'): $1_coin_CoinStore'#0' { + $1_coin_CoinStore'#0'(s->$coin, s->$frozen, s->$deposit_events, x) +} +function $IsValid'$1_coin_CoinStore'#0''(s: $1_coin_CoinStore'#0'): bool { + $IsValid'$1_coin_Coin'#0''(s->$coin) + && $IsValid'bool'(s->$frozen) + && $IsValid'$1_event_EventHandle'$1_coin_DepositEvent''(s->$deposit_events) + && $IsValid'$1_event_EventHandle'$1_coin_WithdrawEvent''(s->$withdraw_events) +} +function {:inline} $IsEqual'$1_coin_CoinStore'#0''(s1: $1_coin_CoinStore'#0', s2: $1_coin_CoinStore'#0'): bool { + s1 == s2 +} +var $1_coin_CoinStore'#0'_$memory: $Memory $1_coin_CoinStore'#0'; + +// struct coin::CoinWithdraw at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:181:5+117 +datatype $1_coin_CoinWithdraw { + $1_coin_CoinWithdraw($coin_type: $1_string_String, $account: int, $amount: int) +} +function {:inline} $Update'$1_coin_CoinWithdraw'_coin_type(s: $1_coin_CoinWithdraw, x: $1_string_String): $1_coin_CoinWithdraw { + $1_coin_CoinWithdraw(x, s->$account, s->$amount) +} +function {:inline} $Update'$1_coin_CoinWithdraw'_account(s: $1_coin_CoinWithdraw, x: int): $1_coin_CoinWithdraw { + $1_coin_CoinWithdraw(s->$coin_type, x, s->$amount) +} +function {:inline} $Update'$1_coin_CoinWithdraw'_amount(s: $1_coin_CoinWithdraw, x: int): $1_coin_CoinWithdraw { + $1_coin_CoinWithdraw(s->$coin_type, s->$account, x) +} +function $IsValid'$1_coin_CoinWithdraw'(s: $1_coin_CoinWithdraw): bool { + $IsValid'$1_string_String'(s->$coin_type) + && $IsValid'address'(s->$account) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_coin_CoinWithdraw'(s1: $1_coin_CoinWithdraw, s2: $1_coin_CoinWithdraw): bool { + $IsEqual'$1_string_String'(s1->$coin_type, s2->$coin_type) + && $IsEqual'address'(s1->$account, s2->$account) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct coin::FreezeCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:237:5+60 +datatype $1_coin_FreezeCapability'$1_starcoin_coin_STC' { + $1_coin_FreezeCapability'$1_starcoin_coin_STC'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_FreezeCapability'$1_starcoin_coin_STC''_dummy_field(s: $1_coin_FreezeCapability'$1_starcoin_coin_STC', x: bool): $1_coin_FreezeCapability'$1_starcoin_coin_STC' { + $1_coin_FreezeCapability'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(s: $1_coin_FreezeCapability'$1_starcoin_coin_STC'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_FreezeCapability'$1_starcoin_coin_STC''(s1: $1_coin_FreezeCapability'$1_starcoin_coin_STC', s2: $1_coin_FreezeCapability'$1_starcoin_coin_STC'): bool { + s1 == s2 +} + +// struct coin::FreezeCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:237:5+60 +datatype $1_coin_FreezeCapability'#0' { + $1_coin_FreezeCapability'#0'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_FreezeCapability'#0''_dummy_field(s: $1_coin_FreezeCapability'#0', x: bool): $1_coin_FreezeCapability'#0' { + $1_coin_FreezeCapability'#0'(x) +} +function $IsValid'$1_coin_FreezeCapability'#0''(s: $1_coin_FreezeCapability'#0'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_FreezeCapability'#0''(s1: $1_coin_FreezeCapability'#0', s2: $1_coin_FreezeCapability'#0'): bool { + s1 == s2 +} + +// struct coin::MigrationFlag at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:231:5+31 +datatype $1_coin_MigrationFlag { + $1_coin_MigrationFlag($dummy_field: bool) +} +function {:inline} $Update'$1_coin_MigrationFlag'_dummy_field(s: $1_coin_MigrationFlag, x: bool): $1_coin_MigrationFlag { + $1_coin_MigrationFlag(x) +} +function $IsValid'$1_coin_MigrationFlag'(s: $1_coin_MigrationFlag): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_MigrationFlag'(s1: $1_coin_MigrationFlag, s2: $1_coin_MigrationFlag): bool { + s1 == s2 +} +var $1_coin_MigrationFlag_$memory: $Memory $1_coin_MigrationFlag; + +// struct coin::MintCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:234:5+58 +datatype $1_coin_MintCapability'$1_starcoin_coin_STC' { + $1_coin_MintCapability'$1_starcoin_coin_STC'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_MintCapability'$1_starcoin_coin_STC''_dummy_field(s: $1_coin_MintCapability'$1_starcoin_coin_STC', x: bool): $1_coin_MintCapability'$1_starcoin_coin_STC' { + $1_coin_MintCapability'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_MintCapability'$1_starcoin_coin_STC''(s: $1_coin_MintCapability'$1_starcoin_coin_STC'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_MintCapability'$1_starcoin_coin_STC''(s1: $1_coin_MintCapability'$1_starcoin_coin_STC', s2: $1_coin_MintCapability'$1_starcoin_coin_STC'): bool { + s1 == s2 +} + +// struct coin::MintCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:234:5+58 +datatype $1_coin_MintCapability'#0' { + $1_coin_MintCapability'#0'($dummy_field: bool) +} +function {:inline} $Update'$1_coin_MintCapability'#0''_dummy_field(s: $1_coin_MintCapability'#0', x: bool): $1_coin_MintCapability'#0' { + $1_coin_MintCapability'#0'(x) +} +function $IsValid'$1_coin_MintCapability'#0''(s: $1_coin_MintCapability'#0'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_coin_MintCapability'#0''(s1: $1_coin_MintCapability'#0', s2: $1_coin_MintCapability'#0'): bool { + s1 == s2 +} + +// struct coin::MintRefReceipt at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:262:5+65 +datatype $1_coin_MintRefReceipt { + $1_coin_MintRefReceipt($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_coin_MintRefReceipt'_metadata(s: $1_coin_MintRefReceipt, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_coin_MintRefReceipt { + $1_coin_MintRefReceipt(x) +} +function $IsValid'$1_coin_MintRefReceipt'(s: $1_coin_MintRefReceipt): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_coin_MintRefReceipt'(s1: $1_coin_MintRefReceipt, s2: $1_coin_MintRefReceipt): bool { + s1 == s2 +} + +// struct coin::PairCreation at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:224:5+122 +datatype $1_coin_PairCreation { + $1_coin_PairCreation($coin_type: $1_type_info_TypeInfo, $fungible_asset_metadata_address: int) +} +function {:inline} $Update'$1_coin_PairCreation'_coin_type(s: $1_coin_PairCreation, x: $1_type_info_TypeInfo): $1_coin_PairCreation { + $1_coin_PairCreation(x, s->$fungible_asset_metadata_address) +} +function {:inline} $Update'$1_coin_PairCreation'_fungible_asset_metadata_address(s: $1_coin_PairCreation, x: int): $1_coin_PairCreation { + $1_coin_PairCreation(s->$coin_type, x) +} +function $IsValid'$1_coin_PairCreation'(s: $1_coin_PairCreation): bool { + $IsValid'$1_type_info_TypeInfo'(s->$coin_type) + && $IsValid'address'(s->$fungible_asset_metadata_address) +} +function {:inline} $IsEqual'$1_coin_PairCreation'(s1: $1_coin_PairCreation, s2: $1_coin_PairCreation): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$coin_type, s2->$coin_type) + && $IsEqual'address'(s1->$fungible_asset_metadata_address, s2->$fungible_asset_metadata_address)} + +// struct coin::PairedCoinType at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:249:5+61 +datatype $1_coin_PairedCoinType { + $1_coin_PairedCoinType($type: $1_type_info_TypeInfo) +} +function {:inline} $Update'$1_coin_PairedCoinType'_type(s: $1_coin_PairedCoinType, x: $1_type_info_TypeInfo): $1_coin_PairedCoinType { + $1_coin_PairedCoinType(x) +} +function $IsValid'$1_coin_PairedCoinType'(s: $1_coin_PairedCoinType): bool { + $IsValid'$1_type_info_TypeInfo'(s->$type) +} +function {:inline} $IsEqual'$1_coin_PairedCoinType'(s1: $1_coin_PairedCoinType, s2: $1_coin_PairedCoinType): bool { + $IsEqual'$1_type_info_TypeInfo'(s1->$type, s2->$type)} +var $1_coin_PairedCoinType_$memory: $Memory $1_coin_PairedCoinType; + +// struct coin::PairedFungibleAssetRefs at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:255:5+171 +datatype $1_coin_PairedFungibleAssetRefs { + $1_coin_PairedFungibleAssetRefs($mint_ref_opt: $1_option_Option'$1_fungible_asset_MintRef', $transfer_ref_opt: $1_option_Option'$1_fungible_asset_TransferRef', $burn_ref_opt: $1_option_Option'$1_fungible_asset_BurnRef') +} +function {:inline} $Update'$1_coin_PairedFungibleAssetRefs'_mint_ref_opt(s: $1_coin_PairedFungibleAssetRefs, x: $1_option_Option'$1_fungible_asset_MintRef'): $1_coin_PairedFungibleAssetRefs { + $1_coin_PairedFungibleAssetRefs(x, s->$transfer_ref_opt, s->$burn_ref_opt) +} +function {:inline} $Update'$1_coin_PairedFungibleAssetRefs'_transfer_ref_opt(s: $1_coin_PairedFungibleAssetRefs, x: $1_option_Option'$1_fungible_asset_TransferRef'): $1_coin_PairedFungibleAssetRefs { + $1_coin_PairedFungibleAssetRefs(s->$mint_ref_opt, x, s->$burn_ref_opt) +} +function {:inline} $Update'$1_coin_PairedFungibleAssetRefs'_burn_ref_opt(s: $1_coin_PairedFungibleAssetRefs, x: $1_option_Option'$1_fungible_asset_BurnRef'): $1_coin_PairedFungibleAssetRefs { + $1_coin_PairedFungibleAssetRefs(s->$mint_ref_opt, s->$transfer_ref_opt, x) +} +function $IsValid'$1_coin_PairedFungibleAssetRefs'(s: $1_coin_PairedFungibleAssetRefs): bool { + $IsValid'$1_option_Option'$1_fungible_asset_MintRef''(s->$mint_ref_opt) + && $IsValid'$1_option_Option'$1_fungible_asset_TransferRef''(s->$transfer_ref_opt) + && $IsValid'$1_option_Option'$1_fungible_asset_BurnRef''(s->$burn_ref_opt) +} +function {:inline} $IsEqual'$1_coin_PairedFungibleAssetRefs'(s1: $1_coin_PairedFungibleAssetRefs, s2: $1_coin_PairedFungibleAssetRefs): bool { + $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''(s1->$mint_ref_opt, s2->$mint_ref_opt) + && $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''(s1->$transfer_ref_opt, s2->$transfer_ref_opt) + && $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''(s1->$burn_ref_opt, s2->$burn_ref_opt)} +var $1_coin_PairedFungibleAssetRefs_$memory: $Memory $1_coin_PairedFungibleAssetRefs; + +// struct coin::SupplyConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:152:5+65 +datatype $1_coin_SupplyConfig { + $1_coin_SupplyConfig($allow_upgrades: bool) +} +function {:inline} $Update'$1_coin_SupplyConfig'_allow_upgrades(s: $1_coin_SupplyConfig, x: bool): $1_coin_SupplyConfig { + $1_coin_SupplyConfig(x) +} +function $IsValid'$1_coin_SupplyConfig'(s: $1_coin_SupplyConfig): bool { + $IsValid'bool'(s->$allow_upgrades) +} +function {:inline} $IsEqual'$1_coin_SupplyConfig'(s1: $1_coin_SupplyConfig, s2: $1_coin_SupplyConfig): bool { + s1 == s2 +} +var $1_coin_SupplyConfig_$memory: $Memory $1_coin_SupplyConfig; + +// struct coin::TransferRefReceipt at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:267:5+69 +datatype $1_coin_TransferRefReceipt { + $1_coin_TransferRefReceipt($metadata: $1_object_Object'$1_fungible_asset_Metadata') +} +function {:inline} $Update'$1_coin_TransferRefReceipt'_metadata(s: $1_coin_TransferRefReceipt, x: $1_object_Object'$1_fungible_asset_Metadata'): $1_coin_TransferRefReceipt { + $1_coin_TransferRefReceipt(x) +} +function $IsValid'$1_coin_TransferRefReceipt'(s: $1_coin_TransferRefReceipt): bool { + $IsValid'$1_object_Object'$1_fungible_asset_Metadata''(s->$metadata) +} +function {:inline} $IsEqual'$1_coin_TransferRefReceipt'(s1: $1_coin_TransferRefReceipt, s2: $1_coin_TransferRefReceipt): bool { + s1 == s2 +} + +// struct coin::supply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:63:9+29 +datatype $1_coin_Ghost$supply'$1_starcoin_coin_STC' { + $1_coin_Ghost$supply'$1_starcoin_coin_STC'($v: int) +} +function {:inline} $Update'$1_coin_Ghost$supply'$1_starcoin_coin_STC''_v(s: $1_coin_Ghost$supply'$1_starcoin_coin_STC', x: int): $1_coin_Ghost$supply'$1_starcoin_coin_STC' { + $1_coin_Ghost$supply'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(s: $1_coin_Ghost$supply'$1_starcoin_coin_STC'): bool { + $IsValid'num'(s->$v) +} +function {:inline} $IsEqual'$1_coin_Ghost$supply'$1_starcoin_coin_STC''(s1: $1_coin_Ghost$supply'$1_starcoin_coin_STC', s2: $1_coin_Ghost$supply'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + +// struct coin::supply<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:63:9+29 +datatype $1_coin_Ghost$supply'#0' { + $1_coin_Ghost$supply'#0'($v: int) +} +function {:inline} $Update'$1_coin_Ghost$supply'#0''_v(s: $1_coin_Ghost$supply'#0', x: int): $1_coin_Ghost$supply'#0' { + $1_coin_Ghost$supply'#0'(x) +} +function $IsValid'$1_coin_Ghost$supply'#0''(s: $1_coin_Ghost$supply'#0'): bool { + $IsValid'num'(s->$v) +} +function {:inline} $IsEqual'$1_coin_Ghost$supply'#0''(s1: $1_coin_Ghost$supply'#0', s2: $1_coin_Ghost$supply'#0'): bool { + s1 == s2 +} +var $1_coin_Ghost$supply'#0'_$memory: $Memory $1_coin_Ghost$supply'#0'; + +// struct coin::aggregate_supply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:64:9+39 +datatype $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC' { + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'($v: int) +} +function {:inline} $Update'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''_v(s: $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC', x: int): $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC' { + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(s: $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'): bool { + $IsValid'num'(s->$v) +} +function {:inline} $IsEqual'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''(s1: $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC', s2: $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + +// struct coin::aggregate_supply<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:64:9+39 +datatype $1_coin_Ghost$aggregate_supply'#0' { + $1_coin_Ghost$aggregate_supply'#0'($v: int) +} +function {:inline} $Update'$1_coin_Ghost$aggregate_supply'#0''_v(s: $1_coin_Ghost$aggregate_supply'#0', x: int): $1_coin_Ghost$aggregate_supply'#0' { + $1_coin_Ghost$aggregate_supply'#0'(x) +} +function $IsValid'$1_coin_Ghost$aggregate_supply'#0''(s: $1_coin_Ghost$aggregate_supply'#0'): bool { + $IsValid'num'(s->$v) +} +function {:inline} $IsEqual'$1_coin_Ghost$aggregate_supply'#0''(s1: $1_coin_Ghost$aggregate_supply'#0', s2: $1_coin_Ghost$aggregate_supply'#0'): bool { + s1 == s2 +} +var $1_coin_Ghost$aggregate_supply'#0'_$memory: $Memory $1_coin_Ghost$aggregate_supply'#0'; + +// fun coin::extract [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+605 +procedure {:inline 1} $1_coin_extract'$1_starcoin_coin_STC'(_$t0: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'), _$t1: int) returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC', $ret1: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC')) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t12: int; + var $t13: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t14: int; + var $t15: int; + var $t16: $Mutation (int); + var $t17: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t18: int; + var $t19: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t20: Vec (int); + var $t21: $1_string_String; + var $t22: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t0: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t1: int; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$at(31,43303,43304)"} true; + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$track_local(46,20,1):", $t1} $t1 == $t1; + + // $t4 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:41+26 + assume {:print "$at(31,43430,43456)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t4); + + // $t5 := string::utf8($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:23+45 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(31,43412,43457)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t5) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:9+60 + call $1_debug_print'$1_string_String'($t5); + if ($abort_flag) { + assume {:print "$at(31,43398,43458)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1009:9+21 + assume {:print "$at(31,43468,43489)"} true; + call $1_debug_print'u64'($t1); + if ($abort_flag) { + assume {:print "$at(31,43468,43489)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:17+10 + assume {:print "$at(31,43508,43518)"} true; + $t7 := $Dereference($t0)->$value; + + // $t8 := >=($t7, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:28+2 + call $t8 := $Ge($t7, $t1); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + + // $t9 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:63+21 + $t9 := 6; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:39+46 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(31,43530,43576)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + assume {:print "$track_abort(46,20):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + $t6 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1012:9+81 + assume {:print "$at(31,43587,43668)"} true; +L2: + + // assume Identical($t11, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume {:print "$at(31,43606,43658)"} true; + assume ($t11 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v - $t1))); + + // assume Identical($t12, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume ($t12 == 0); + + // $t13 := borrow_global>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t12)); + } + + // write_ref($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $t13 := $UpdateMutation($t13, $t11); + + // write_back[coin::Ghost$supply<#0>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t14 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:22+10 + assume {:print "$at(31,43691,43701)"} true; + $t14 := $Dereference($t0)->$value; + + // $t15 := -($t14, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:33+1 + call $t15 := $Sub($t14, $t1); + if ($abort_flag) { + assume {:print "$at(31,43702,43703)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t16 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+10 + $t16 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t16, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t16 := $UpdateMutation($t16, $t15); + + // write_back[Reference($t0).value (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_starcoin_coin_STC''_value($Dereference($t0), $Dereference($t16))); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // assume Identical($t17, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume {:print "$at(31,43739,43791)"} true; + assume ($t17 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $t1))); + + // assume Identical($t18, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume ($t18 == 0); + + // $t19 := borrow_global>($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t18)); + } + + // write_ref($t19, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $t19 := $UpdateMutation($t19, $t17); + + // write_back[coin::Ghost$supply<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t20 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:41+25 + assume {:print "$at(31,43843,43868)"} true; + $t20 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:23+44 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(31,43825,43869)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t21) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:9+59 + call $1_debug_print'$1_string_String'($t21); + if ($abort_flag) { + assume {:print "$at(31,43811,43870)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t22 := pack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$at(31,43880,43902)"} true; + $t22 := $1_coin_Coin'$1_starcoin_coin_STC'($t1); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$track_return(46,20,0):", $t22} $t22 == $t22; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; +L3: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; + $ret0 := $t22; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun coin::extract<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+605 +procedure {:inline 1} $1_coin_extract'#0'(_$t0: $Mutation ($1_coin_Coin'#0'), _$t1: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_coin_Coin'#0')) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: $1_string_String; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_coin_Ghost$supply'#0'; + var $t12: int; + var $t13: $Mutation ($1_coin_Ghost$supply'#0'); + var $t14: int; + var $t15: int; + var $t16: $Mutation (int); + var $t17: $1_coin_Ghost$supply'#0'; + var $t18: int; + var $t19: $Mutation ($1_coin_Ghost$supply'#0'); + var $t20: Vec (int); + var $t21: $1_string_String; + var $t22: $1_coin_Coin'#0'; + var $t0: $Mutation ($1_coin_Coin'#0'); + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$at(31,43303,43304)"} true; + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$track_local(46,20,1):", $t1} $t1 == $t1; + + // $t4 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:41+26 + assume {:print "$at(31,43430,43456)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t4); + + // $t5 := string::utf8($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:23+45 + call $t5 := $1_string_utf8($t4); + if ($abort_flag) { + assume {:print "$at(31,43412,43457)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t5) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:9+60 + call $1_debug_print'$1_string_String'($t5); + if ($abort_flag) { + assume {:print "$at(31,43398,43458)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1009:9+21 + assume {:print "$at(31,43468,43489)"} true; + call $1_debug_print'u64'($t1); + if ($abort_flag) { + assume {:print "$at(31,43468,43489)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:17+10 + assume {:print "$at(31,43508,43518)"} true; + $t7 := $Dereference($t0)->$value; + + // $t8 := >=($t7, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:28+2 + call $t8 := $Ge($t7, $t1); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + + // $t9 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:63+21 + $t9 := 6; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:39+46 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(31,43530,43576)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + assume {:print "$track_abort(46,20):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + $t6 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1012:9+81 + assume {:print "$at(31,43587,43668)"} true; +L2: + + // assume Identical($t11, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume {:print "$at(31,43606,43658)"} true; + assume ($t11 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t1))); + + // assume Identical($t12, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume ($t12 == 0); + + // $t13 := borrow_global>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t12)); + } + + // write_ref($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $t13 := $UpdateMutation($t13, $t11); + + // write_back[coin::Ghost$supply<#0>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t14 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:22+10 + assume {:print "$at(31,43691,43701)"} true; + $t14 := $Dereference($t0)->$value; + + // $t15 := -($t14, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:33+1 + call $t15 := $Sub($t14, $t1); + if ($abort_flag) { + assume {:print "$at(31,43702,43703)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t16 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+10 + $t16 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t16, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t16 := $UpdateMutation($t16, $t15); + + // write_back[Reference($t0).value (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'#0''_value($Dereference($t0), $Dereference($t16))); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // assume Identical($t17, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume {:print "$at(31,43739,43791)"} true; + assume ($t17 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t1))); + + // assume Identical($t18, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume ($t18 == 0); + + // $t19 := borrow_global>($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t18)); + } + + // write_ref($t19, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $t19 := $UpdateMutation($t19, $t17); + + // write_back[coin::Ghost$supply<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t20 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:41+25 + assume {:print "$at(31,43843,43868)"} true; + $t20 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:23+44 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(31,43825,43869)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // debug::print($t21) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:9+59 + call $1_debug_print'$1_string_String'($t21); + if ($abort_flag) { + assume {:print "$at(31,43811,43870)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,20):", $t6} $t6 == $t6; + goto L4; + } + + // $t22 := pack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$at(31,43880,43902)"} true; + $t22 := $1_coin_Coin'#0'($t1); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$track_return(46,20,0):", $t22} $t22 == $t22; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; +L3: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; + $ret0 := $t22; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun coin::extract [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+605 +procedure {:timeLimit 80} $1_coin_extract$verify(_$t0: $Mutation ($1_coin_Coin'#0'), _$t1: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_coin_Coin'#0')) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_coin_Coin'#0'; + var $t5: Vec (int); + var $t6: $1_string_String; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: $1_coin_Ghost$supply'#0'; + var $t13: int; + var $t14: $Mutation ($1_coin_Ghost$supply'#0'); + var $t15: int; + var $t16: int; + var $t17: $Mutation (int); + var $t18: $1_coin_Ghost$supply'#0'; + var $t19: int; + var $t20: $Mutation ($1_coin_Ghost$supply'#0'); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: $1_coin_Coin'#0'; + var $t0: $Mutation ($1_coin_Coin'#0'); + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#144: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#145: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#146: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$at(31,43303,43304)"} true; + assume $IsValid'$1_coin_Coin'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @146 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + $1_coin_CoinInfo'#0'_$memory#146 := $1_coin_CoinInfo'#0'_$memory; + + // @144 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + $1_coin_Ghost$supply'#0'_$memory#144 := $1_coin_Ghost$supply'#0'_$memory; + + // @145 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#145 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + $t4 := $Dereference($t0); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1007:5+1 + assume {:print "$track_local(46,20,1):", $t1} $t1 == $t1; + + // $t5 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:41+26 + assume {:print "$at(31,43430,43456)"} true; + $t5 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t5); + + // $t6 := string::utf8($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:23+45 + call $t6 := $1_string_utf8($t5); + if ($abort_flag) { + assume {:print "$at(31,43412,43457)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // debug::print($t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1008:9+60 + call $1_debug_print'$1_string_String'($t6); + if ($abort_flag) { + assume {:print "$at(31,43398,43458)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // debug::print($t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1009:9+21 + assume {:print "$at(31,43468,43489)"} true; + call $1_debug_print'u64'($t1); + if ($abort_flag) { + assume {:print "$at(31,43468,43489)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // $t8 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:17+10 + assume {:print "$at(31,43508,43518)"} true; + $t8 := $Dereference($t0)->$value; + + // $t9 := >=($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:28+2 + call $t9 := $Ge($t8, $t1); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + + // $t10 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:63+21 + $t10 := 6; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:39+46 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(31,43530,43576)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + assume {:print "$at(31,43500,43577)"} true; + assume {:print "$track_abort(46,20):", $t11} $t11 == $t11; + + // $t7 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + $t7 := $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1011:9+77 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1012:9+81 + assume {:print "$at(31,43587,43668)"} true; +L2: + + // assume Identical($t12, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume {:print "$at(31,43606,43658)"} true; + assume ($t12 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t1))); + + // assume Identical($t13, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + assume ($t13 == 0); + + // $t14 := borrow_global>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t13)); + } + + // write_ref($t14, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $t14 := $UpdateMutation($t14, $t12); + + // write_back[coin::Ghost$supply<#0>@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1013:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // $t15 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:22+10 + assume {:print "$at(31,43691,43701)"} true; + $t15 := $Dereference($t0)->$value; + + // $t16 := -($t15, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:33+1 + call $t16 := $Sub($t15, $t1); + if ($abort_flag) { + assume {:print "$at(31,43702,43703)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // $t17 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+10 + $t17 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t17, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t17 := $UpdateMutation($t17, $t16); + + // write_back[Reference($t0).value (u64)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'#0''_value($Dereference($t0), $Dereference($t17))); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1015:9+32 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // assume Identical($t18, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume {:print "$at(31,43739,43791)"} true; + assume ($t18 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t1))); + + // assume Identical($t19, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + assume ($t19 == 0); + + // $t20 := borrow_global>($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t19)); + } + + // write_ref($t20, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $t20 := $UpdateMutation($t20, $t18); + + // write_back[coin::Ghost$supply<#0>@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1017:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // $t21 := [99, 111, 105, 110, 58, 58, 101, 120, 116, 114, 97, 99, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:41+25 + assume {:print "$at(31,43843,43868)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 101, 120)), MakeVec4(116, 114, 97, 99)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:23+44 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(31,43825,43869)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // debug::print($t22) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1019:9+59 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(31,43811,43870)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(46,20):", $t7} $t7 == $t7; + goto L4; + } + + // $t23 := pack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$at(31,43880,43902)"} true; + $t23 := $1_coin_Coin'#0'($t1); + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + assume {:print "$track_return(46,20,0):", $t23} $t23 == $t23; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1020:9+22 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,20,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; +L3: + + // assert Not(Lt(select coin::Coin.value>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:357:9+30 + assume {:print "$at(32,15905,15935)"} true; + assert {:msg "assert_failed(32,15905,15935): function does not abort under this condition"} + !($t4->$value < $t1); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@144]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@145]>(0x0))), select coin::CoinInfo.supply>(global[@146]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#144, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#145, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#146, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(select coin::Coin.value>($t23), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:358:9+31 + assume {:print "$at(32,15944,15975)"} true; + assert {:msg "assert_failed(32,15944,15975): post-condition does not hold"} + $IsEqual'u64'($t23->$value, $t1); + + // assert Eq(select coin::Coin.value>($t0), Sub(select coin::Coin.value>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:359:9+47 + assume {:print "$at(32,15984,16031)"} true; + assert {:msg "assert_failed(32,15984,16031): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$value, ($t4->$value - $t1)); + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:359:9+47 + $ret0 := $t23; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1021:5+1 + assume {:print "$at(31,43907,43908)"} true; +L4: + + // assert Lt(select coin::Coin.value>($t4), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:356:5+221 + assume {:print "$at(32,15816,16037)"} true; + assert {:msg "assert_failed(32,15816,16037): abort not covered by any of the `aborts_if` clauses"} + ($t4->$value < $t1); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:356:5+221 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun coin::value [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+81 +procedure {:inline 1} $1_coin_value'$1_starcoin_coin_STC'(_$t0: $1_coin_Coin'$1_starcoin_coin_STC') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume {:print "$at(31,51326,51327)"} true; + assume {:print "$track_local(46,59,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$at(31,51391,51401)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$track_return(46,59,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1209:5+1 + assume {:print "$at(31,51406,51407)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1209:5+1 + assume {:print "$at(31,51406,51407)"} true; + $ret0 := $t1; + return; + +} + +// fun coin::value<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+81 +procedure {:inline 1} $1_coin_value'#0'(_$t0: $1_coin_Coin'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume {:print "$at(31,51326,51327)"} true; + assume {:print "$track_local(46,59,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$at(31,51391,51401)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$track_return(46,59,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1209:5+1 + assume {:print "$at(31,51406,51407)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1209:5+1 + assume {:print "$at(31,51406,51407)"} true; + $ret0 := $t1; + return; + +} + +// fun coin::value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+81 +procedure {:timeLimit 80} $1_coin_value$verify(_$t0: $1_coin_Coin'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#150: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#151: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#152: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume {:print "$at(31,51326,51327)"} true; + assume $IsValid'$1_coin_Coin'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @152 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + $1_coin_CoinInfo'#0'_$memory#152 := $1_coin_CoinInfo'#0'_$memory; + + // @150 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + $1_coin_Ghost$supply'#0'_$memory#150 := $1_coin_Ghost$supply'#0'_$memory; + + // @151 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#151 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1207:5+1 + assume {:print "$track_local(46,59,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$at(31,51391,51401)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1208:9+10 + assume {:print "$track_return(46,59,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1209:5+1 + assume {:print "$at(31,51406,51407)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@150]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@151]>(0x0))), select coin::CoinInfo.supply>(global[@152]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#150, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#151, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#152, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t1; + return; + +} + +// fun coin::initialize<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+352 +procedure {:inline 1} $1_coin_initialize'#0'(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool) returns ($ret0: $1_coin_BurnCapability'#0', $ret1: $1_coin_FreezeCapability'#0', $ret2: $1_coin_MintCapability'#0') +{ + // declare local variables + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_coin_BurnCapability'#0'; + var $t11: $1_coin_FreezeCapability'#0'; + var $t12: $1_coin_MintCapability'#0'; + var $t13: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:426:9+47 + assume {:print "$at(32,18696,18743)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$at(31,46534,46535)"} true; + assume {:print "$track_local(46,28,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,4):", $t4} $t4 == $t4; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:78+5 + assume {:print "$at(31,46874,46879)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t9 == $1_type_info_$type_of'#0'()->$account_address); + + // ($t10, $t11, $t12) := coin::initialize_internal<#0>($t0, $t1, $t2, $t3, $t4, $t6) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$at(31,46805,46880)"} true; + call $t10,$t11,$t12 := $1_coin_initialize_internal'#0'($t0, $t1, $t2, $t3, $t4, $t6); + if ($abort_flag) { + assume {:print "$at(31,46805,46880)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,28):", $t13} $t13 == $t13; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,0):", $t10} $t10 == $t10; + + // trace_return[1]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,1):", $t11} $t11 == $t11; + + // trace_return[2]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,2):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 + assume {:print "$at(31,46885,46886)"} true; +L1: + + // return ($t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 + assume {:print "$at(31,46885,46886)"} true; + $ret0 := $t10; + $ret1 := $t11; + $ret2 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 +L2: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 + assume {:print "$at(31,46885,46886)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun coin::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+352 +procedure {:timeLimit 80} $1_coin_initialize$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool) returns ($ret0: $1_coin_BurnCapability'#0', $ret1: $1_coin_FreezeCapability'#0', $ret2: $1_coin_MintCapability'#0') +{ + // declare local variables + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_coin_BurnCapability'#0'; + var $t11: $1_coin_FreezeCapability'#0'; + var $t12: $1_coin_MintCapability'#0'; + var $t13: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_coin_CoinInfo'#0'_$memory#169: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$at(31,46534,46535)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $IsValid'bool'($t4); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:426:9+47 + assume {:print "$at(32,18696,18743)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // @169 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$at(31,46534,46535)"} true; + $1_coin_CoinInfo'#0'_$memory#169 := $1_coin_CoinInfo'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1087:5+1 + assume {:print "$track_local(46,28,4):", $t4} $t4 == $t4; + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:78+5 + assume {:print "$at(31,46874,46879)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t9 == $1_type_info_$type_of'#0'()->$account_address); + + // ($t10, $t11, $t12) := coin::initialize_internal<#0>($t0, $t1, $t2, $t3, $t4, $t6) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$at(31,46805,46880)"} true; + call $t10,$t11,$t12 := $1_coin_initialize_internal'#0'($t0, $t1, $t2, $t3, $t4, $t6); + if ($abort_flag) { + assume {:print "$at(31,46805,46880)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,28):", $t13} $t13 == $t13; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,0):", $t10} $t10 == $t10; + + // trace_return[1]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,1):", $t11} $t11 == $t11; + + // trace_return[2]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1094:9+75 + assume {:print "$track_return(46,28,2):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 + assume {:print "$at(31,46885,46886)"} true; +L1: + + // assert Not(Neq
(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>()), $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:428:9+73 + assume {:print "$at(32,18785,18858)"} true; + assert {:msg "assert_failed(32,18785,18858): function does not abort under this condition"} + !!$IsEqual'address'($1_type_info_$type_of'#0'()->$account_address, $t5); + + // assert Not(exists[@169]>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:430:9+51 + assume {:print "$at(32,18898,18949)"} true; + assert {:msg "assert_failed(32,18898,18949): function does not abort under this condition"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#169, $t5); + + // assert Not(Gt(string::$length[]($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:431:9+54 + assume {:print "$at(32,18958,19012)"} true; + assert {:msg "assert_failed(32,18958,19012): function does not abort under this condition"} + !($1_string_$length($t1) > 32); + + // assert Not(Gt(string::$length[]($t2), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:432:9+58 + assume {:print "$at(32,19021,19079)"} true; + assert {:msg "assert_failed(32,19021,19079): function does not abort under this condition"} + !($1_string_$length($t2) > 10); + + // return ($t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:432:9+58 + $ret0 := $t10; + $ret1 := $t11; + $ret2 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1095:5+1 + assume {:print "$at(31,46885,46886)"} true; +L2: + + // assert Or(Or(Or(Neq
(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>()), $t5), exists[@169]>($t5)), Gt(string::$length[]($t1), 32)), Gt(string::$length[]($t2), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:425:5+415 + assume {:print "$at(32,18670,19085)"} true; + assert {:msg "assert_failed(32,18670,19085): abort not covered by any of the `aborts_if` clauses"} + (((!$IsEqual'address'($1_type_info_$type_of'#0'()->$account_address, $t5) || $ResourceExists($1_coin_CoinInfo'#0'_$memory#169, $t5)) || ($1_string_$length($t1) > 32)) || ($1_string_$length($t2) > 10)); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:425:5+415 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun coin::transfer<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1195:5+400 +procedure {:inline 1} $1_coin_transfer'#0'(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_coin_Coin'#0'; + var $t6: int; + var $t7: $1_coin_CoinStore'#0'; + var $t8: $1_coin_CoinStore'#0'; + var $t9: Vec (int); + var $t10: $1_string_String; + var $t11: int; + var $t12: int; + var $t13: $1_coin_CoinStore'#0'; + var $t14: int; + var $t15: int; + var $t16: $1_coin_CoinStore'#0'; + var $t17: int; + var $t18: $1_coin_Coin'#0'; + var $t19: $1_coin_CoinStore'#0'; + var $t20: Vec (int); + var $t21: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + 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 + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:533:9+49 + assume {:print "$at(32,23392,23441)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:534:9+69 + assume {:print "$at(32,23450,23519)"} true; + assume ($t7 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t6)); + + // assume Identical($t8, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:536:9+52 + assume {:print "$at(32,23616,23668)"} true; + assume ($t8 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t1)); + + // trace_local[from]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1195:5+1 + assume {:print "$at(31,50874,50875)"} true; + assume {:print "$track_local(46,56,0):", $t0} $t0 == $t0; + + // trace_local[to]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1195:5+1 + assume {:print "$track_local(46,56,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1195:5+1 + assume {:print "$track_local(46,56,2):", $t2} $t2 == $t2; + + // $t9 := [99, 111, 105, 110, 58, 58, 116, 114, 97, 110, 115, 102, 101, 114, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1200:41+27 + assume {:print "$at(31,51088,51115)"} true; + $t9 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 116, 114)), MakeVec4(97, 110, 115, 102)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t9); + + // $t10 := string::utf8($t9) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1200:23+46 + call $t10 := $1_string_utf8($t9); + if ($abort_flag) { + assume {:print "$at(31,51070,51116)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // debug::print($t10) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1200:9+61 + call $1_debug_print'$1_string_String'($t10); + if ($abort_flag) { + assume {:print "$at(31,51056,51117)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:562:9+47 + assume {:print "$at(32,24737,24784)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:563:9+59 + assume {:print "$at(32,24793,24852)"} true; + assume ($t13 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t12)); + + // assume Identical($t14, select coin::Coin.value>(select coin::CoinStore.coin>($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:564:9+36 + assume {:print "$at(32,24861,24897)"} true; + assume ($t14 == $t13->$coin->$value); + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:572:9+47 + assume {:print "$at(32,25194,25241)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global>($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:573:9+59 + assume {:print "$at(32,25250,25309)"} true; + assume ($t16 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t15)); + + // assume Identical($t17, select coin::Coin.value>(select coin::CoinStore.coin>($t16))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:574:9+36 + assume {:print "$at(32,25318,25354)"} true; + assume ($t17 == $t16->$coin->$value); + + // $t18 := coin::withdraw<#0>($t0, $t2) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1201:20+32 + assume {:print "$at(31,51138,51170)"} true; + call $t18 := $1_coin_withdraw'#0'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(31,51138,51170)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // trace_local[coin]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1201:13+4 + assume {:print "$track_local(46,56,5):", $t18} $t18 == $t18; + + // assume Identical($t19, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t19 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t1)); + + // coin::deposit<#0>($t1, $t18) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1202:9+17 + assume {:print "$at(31,51180,51197)"} true; + call $1_coin_deposit'#0'($t1, $t18); + if ($abort_flag) { + assume {:print "$at(31,51180,51197)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // $t20 := [99, 111, 105, 110, 58, 58, 116, 114, 97, 110, 115, 102, 101, 114, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1203:41+26 + assume {:print "$at(31,51239,51265)"} true; + $t20 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 116, 114)), MakeVec4(97, 110, 115, 102)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec3(116, 101, 100)); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1203:23+45 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(31,51221,51266)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // debug::print($t21) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1203:9+60 + call $1_debug_print'$1_string_String'($t21); + if ($abort_flag) { + assume {:print "$at(31,51207,51267)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,56):", $t11} $t11 == $t11; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1204:5+1 + assume {:print "$at(31,51273,51274)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1204:5+1 + assume {:print "$at(31,51273,51274)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1204:5+1 +L2: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1204:5+1 + assume {:print "$at(31,51273,51274)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun coin::name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+142 +procedure {:inline 1} $1_coin_name'$1_starcoin_coin_STC'() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#271: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#272: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#273: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume {:print "$at(31,35104,35128)"} true; + + // @273 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#273 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @271 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#271 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @272 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#272 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@271]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@272]>(0x0))), select coin::CoinInfo.supply>(global[@273]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#271, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#272, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#273, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+13 + if (!$ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35070,35083)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,44):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.name($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + $t4 := $t2->$name; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + assume {:print "$track_return(46,44,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::name<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+142 +procedure {:inline 1} $1_coin_name'#0'() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_Ghost$supply'#0'_$memory#271: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#272: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#273: $Memory $1_coin_CoinInfo'#0'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume {:print "$at(31,35104,35128)"} true; + + // @273 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_CoinInfo'#0'_$memory#273 := $1_coin_CoinInfo'#0'_$memory; + + // @271 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$supply'#0'_$memory#271 := $1_coin_Ghost$supply'#0'_$memory; + + // @272 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#272 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@271]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@272]>(0x0))), select coin::CoinInfo.supply>(global[@273]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#271, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#272, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#273, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35070,35083)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,44):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.name($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + $t4 := $t2->$name; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + assume {:print "$track_return(46,44,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+142 +procedure {:timeLimit 80} $1_coin_name$verify() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_CoinInfo'#0'_$memory#262: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#263: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#264: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#265: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#266: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#267: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume {:print "$at(31,34998,34999)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // @262 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + assume {:print "$at(31,34998,34999)"} true; + $1_coin_CoinInfo'#0'_$memory#262 := $1_coin_CoinInfo'#0'_$memory; + + // @263 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + $1_coin_Ghost$supply'#0'_$memory#263 := $1_coin_Ghost$supply'#0'_$memory; + + // @264 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:819:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#264 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume {:print "$at(31,35104,35128)"} true; + + // @267 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_CoinInfo'#0'_$memory#267 := $1_coin_CoinInfo'#0'_$memory; + + // @265 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$supply'#0'_$memory#265 := $1_coin_Ghost$supply'#0'_$memory; + + // @266 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#266 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@265]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@266]>(0x0))), select coin::CoinInfo.supply>(global[@267]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#265, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#266, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#267, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35070,35083)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,44):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.name($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + $t4 := $t2->$name; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:820:9+64 + assume {:print "$track_return(46,44,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; +L1: + + // assert Not(Not(exists[@262]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:206:9+44 + assume {:print "$at(32,10293,10337)"} true; + assert {:msg "assert_failed(32,10293,10337): function does not abort under this condition"} + !!$ResourceExists($1_coin_CoinInfo'#0'_$memory#262, $t0); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@263]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@264]>(0x0))), select coin::CoinInfo.supply>(global[@262]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#263, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#264, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#262, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:821:5+1 + assume {:print "$at(31,35139,35140)"} true; +L2: + + // assert Not(exists[@262]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:209:5+130 + assume {:print "$at(32,10349,10479)"} true; + assert {:msg "assert_failed(32,10349,10479): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#262, $t0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:209:5+130 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::symbol [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+146 +procedure {:inline 1} $1_coin_symbol'$1_starcoin_coin_STC'() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#259: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#260: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#261: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume {:print "$at(31,35345,35369)"} true; + + // @261 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#261 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @259 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#259 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @260 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#260 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@259]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@260]>(0x0))), select coin::CoinInfo.supply>(global[@261]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#259, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#260, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#261, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+13 + if (!$ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35311,35324)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,55):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.symbol($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + $t4 := $t2->$symbol; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + assume {:print "$track_return(46,55,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::symbol<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+146 +procedure {:inline 1} $1_coin_symbol'#0'() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_Ghost$supply'#0'_$memory#259: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#260: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#261: $Memory $1_coin_CoinInfo'#0'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume {:print "$at(31,35345,35369)"} true; + + // @261 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_CoinInfo'#0'_$memory#261 := $1_coin_CoinInfo'#0'_$memory; + + // @259 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$supply'#0'_$memory#259 := $1_coin_Ghost$supply'#0'_$memory; + + // @260 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#260 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@259]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@260]>(0x0))), select coin::CoinInfo.supply>(global[@261]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#259, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#260, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#261, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35311,35324)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,55):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.symbol($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + $t4 := $t2->$symbol; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + assume {:print "$track_return(46,55,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::symbol [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+146 +procedure {:timeLimit 80} $1_coin_symbol$verify() returns ($ret0: $1_string_String) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $1_coin_CoinInfo'#0'_$memory#250: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#251: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#252: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#253: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#254: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#255: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume {:print "$at(31,35237,35238)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // @250 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + assume {:print "$at(31,35237,35238)"} true; + $1_coin_CoinInfo'#0'_$memory#250 := $1_coin_CoinInfo'#0'_$memory; + + // @251 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + $1_coin_Ghost$supply'#0'_$memory#251 := $1_coin_Ghost$supply'#0'_$memory; + + // @252 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:825:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#252 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume {:print "$at(31,35345,35369)"} true; + + // @255 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_CoinInfo'#0'_$memory#255 := $1_coin_CoinInfo'#0'_$memory; + + // @253 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$supply'#0'_$memory#253 := $1_coin_Ghost$supply'#0'_$memory; + + // @254 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#254 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@253]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@254]>(0x0))), select coin::CoinInfo.supply>(global[@255]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#253, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#254, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#255, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35311,35324)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,55):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.symbol($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + $t4 := $t2->$symbol; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:826:9+66 + assume {:print "$track_return(46,55,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; +L1: + + // assert Not(Not(exists[@250]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:206:9+44 + assume {:print "$at(32,10293,10337)"} true; + assert {:msg "assert_failed(32,10293,10337): function does not abort under this condition"} + !!$ResourceExists($1_coin_CoinInfo'#0'_$memory#250, $t0); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@251]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@252]>(0x0))), select coin::CoinInfo.supply>(global[@250]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#251, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#252, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#250, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:827:5+1 + assume {:print "$at(31,35382,35383)"} true; +L2: + + // assert Not(exists[@250]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:214:5+132 + assume {:print "$at(32,10485,10617)"} true; + assert {:msg "assert_failed(32,10485,10617): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#250, $t0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:214:5+132 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::decimals [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+138 +procedure {:inline 1} $1_coin_decimals'$1_starcoin_coin_STC'() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $t3: int; + var $t4: int; + var $temp_0'u8': int; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#247: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#248: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#249: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume {:print "$at(31,35714,35738)"} true; + + // @249 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#249 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @247 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#247 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @248 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#248 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@247]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@248]>(0x0))), select coin::CoinInfo.supply>(global[@249]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#247, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#248, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#249, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+13 + if (!$ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35680,35693)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.decimals($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + $t4 := $t2->$decimals; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + assume {:print "$track_return(46,12,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::decimals<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+138 +procedure {:inline 1} $1_coin_decimals'#0'() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: int; + var $temp_0'u8': int; + var $1_coin_Ghost$supply'#0'_$memory#247: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#248: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#249: $Memory $1_coin_CoinInfo'#0'; + + // bytecode translation starts here + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume {:print "$at(31,35714,35738)"} true; + + // @249 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_CoinInfo'#0'_$memory#249 := $1_coin_CoinInfo'#0'_$memory; + + // @247 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$supply'#0'_$memory#247 := $1_coin_Ghost$supply'#0'_$memory; + + // @248 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#248 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@247]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@248]>(0x0))), select coin::CoinInfo.supply>(global[@249]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#247, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#248, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#249, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35680,35693)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.decimals($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + $t4 := $t2->$decimals; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + assume {:print "$track_return(46,12,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::decimals [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+138 +procedure {:timeLimit 80} $1_coin_decimals$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_coin_CoinInfo'#0'; + var $t3: int; + var $t4: int; + var $temp_0'u8': int; + var $1_coin_CoinInfo'#0'_$memory#238: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#239: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#240: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#241: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#242: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#243: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume {:print "$at(31,35616,35617)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t0 == $1_type_info_$type_of'#0'()->$account_address); + + // @238 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + assume {:print "$at(31,35616,35617)"} true; + $1_coin_CoinInfo'#0'_$memory#238 := $1_coin_CoinInfo'#0'_$memory; + + // @239 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + $1_coin_Ghost$supply'#0'_$memory#239 := $1_coin_Ghost$supply'#0'_$memory; + + // @240 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:833:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#240 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t1 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume {:print "$at(31,35714,35738)"} true; + + // @243 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_CoinInfo'#0'_$memory#243 := $1_coin_CoinInfo'#0'_$memory; + + // @241 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$supply'#0'_$memory#241 := $1_coin_Ghost$supply'#0'_$memory; + + // @242 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#242 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsValid'address'($t1); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@241]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@242]>(0x0))), select coin::CoinInfo.supply>(global[@243]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#241, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#242, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#243, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t1, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + assume $IsEqual'address'($t1, $1_type_info_$type_of'#0'()->$account_address); + + // $t1 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:43+24 + + // $t2 := get_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(31,35680,35693)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field>.decimals($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + $t4 := $t2->$decimals; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:834:9+68 + assume {:print "$track_return(46,12,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; +L1: + + // assert Not(Not(exists[@238]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:206:9+44 + assume {:print "$at(32,10293,10337)"} true; + assert {:msg "assert_failed(32,10293,10337): function does not abort under this condition"} + !!$ResourceExists($1_coin_CoinInfo'#0'_$memory#238, $t0); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@239]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@240]>(0x0))), select coin::CoinInfo.supply>(global[@238]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#239, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#240, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#238, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:835:5+1 + assume {:print "$at(31,35753,35754)"} true; +L2: + + // assert Not(exists[@238]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:219:5+89 + assume {:print "$at(32,10623,10712)"} true; + assert {:msg "assert_failed(32,10623,10712): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#238, $t0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:219:5+89 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::burn_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1320:5+574 +procedure {:inline 1} $1_coin_burn_internal'$1_starcoin_coin_STC'(_$t0: $1_coin_Coin'$1_starcoin_coin_STC') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t3: int; + var $t4: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: $Mutation ($1_coin_CoinInfo'$1_starcoin_coin_STC'); + var $t12: int; + var $t13: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t15: bool; + var $t16: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t17: int; + var $t0: $1_coin_Coin'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#174: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#175: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#176: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:260:9+58 + assume {:print "$at(32,12063,12121)"} true; + assume ($t3 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1320:5+1 + assume {:print "$at(31,55731,55732)"} true; + assume {:print "$track_local(46,4,0):", $t0} $t0 == $t0; + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + assume {:print "$at(31,55833,55889)"} true; + assume ($t4 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v - $t0->$value))); + + // assume Identical($t5, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := unpack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1324:13+22 + assume {:print "$at(31,55913,55935)"} true; + $t7 := $t0->$value; + + // trace_local[amount]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1324:27+6 + assume {:print "$track_local(46,4,1):", $t7} $t7 == $t7; + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:23+1 + assume {:print "$at(31,55966,55967)"} true; + $t8 := 0; + assume $IsValid'u64'($t8); + + // $t9 := !=($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:20+2 + $t9 := !$IsEqual'u64'($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:9+331 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume {:print "$at(31,56045,56069)"} true; +L1: + + // $t10 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume {:print "$at(31,56045,56069)"} true; + + // @176 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#176 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @174 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#174 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @175 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#175 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume $IsValid'address'($t10); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@174]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@175]>(0x0))), select coin::CoinInfo.supply>(global[@176]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#174, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#175, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#176, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t10, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume $IsEqual'address'($t10, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t10 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + + // $t11 := borrow_global>($t10) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:37+17 + if (!$ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(31,56007,56024)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // $t13 := borrow_field>.supply($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:32+75 + $t13 := $ChildMutation($t11, 3, $Dereference($t11)->$supply); + + // trace_local[maybe_supply]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:17+12 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t13); + assume {:print "$track_local(46,4,2):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t14 := read_ref($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:33+12 + assume {:print "$at(31,56111,56123)"} true; + $t14 := $Dereference($t13); + + // $t15 := opaque begin: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + assume $IsValid'bool'($t15); + + // assume Eq($t15, option::spec_is_some($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + assume $IsEqual'bool'($t15, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t14)); + + // $t15 := opaque end: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1328:49+12 + assume {:print "$at(31,56176,56188)"} true; +L3: + + // $t16 := option::borrow_mut($t13) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1328:30+32 + assume {:print "$at(31,56157,56189)"} true; + call $t16,$t13 := $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t13); + if ($abort_flag) { + assume {:print "$at(31,56157,56189)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // $t17 := (u128)($t7) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:50+16 + assume {:print "$at(31,56240,56256)"} true; + call $t17 := $CastU128($t7); + if ($abort_flag) { + assume {:print "$at(31,56240,56256)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // optional_aggregator::sub($t16, $t17) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + call $t16 := $1_optional_aggregator_sub($t16, $t17); + if ($abort_flag) { + assume {:print "$at(31,56207,56257)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // write_back[Reference($t13).vec (vector)/[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $t13 := $UpdateMutation($t13, (var $$sel0 := $Dereference($t13)->$vec; $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec($Dereference($t13), UpdateVec($$sel0, ReadVec($t16->p, LenVec($t13->p) + 1), $Dereference($t16))))); + + // write_back[Reference($t11).supply (option::Option)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $t11 := $UpdateMutation($t11, $Update'$1_coin_CoinInfo'$1_starcoin_coin_STC''_supply($Dereference($t11), $Dereference($t13))); + + // pack_ref_deep($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + + // write_back[coin::CoinInfo<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:67+1 + goto L0; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + assume {:print "$at(31,56091,56272)"} true; +L2: + + // pack_ref_deep($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + assume {:print "$at(31,56091,56272)"} true; + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1332:9+6 + assume {:print "$at(31,56293,56299)"} true; +L0: + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1332:9+6 + assume {:print "$at(31,56293,56299)"} true; + assume {:print "$track_return(46,4,0):", $t7} $t7 == $t7; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; +L4: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; + $ret0 := $t7; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 +L5: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun coin::burn_internal<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1320:5+574 +procedure {:inline 1} $1_coin_burn_internal'#0'(_$t0: $1_coin_Coin'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t3: int; + var $t4: $1_coin_Ghost$supply'#0'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'#0'); + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: $Mutation ($1_coin_CoinInfo'#0'); + var $t12: int; + var $t13: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t14: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t15: bool; + var $t16: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t17: int; + var $t0: $1_coin_Coin'#0'; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#174: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#175: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#176: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:260:9+58 + assume {:print "$at(32,12063,12121)"} true; + assume ($t3 == $1_type_info_$type_of'#0'()->$account_address); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1320:5+1 + assume {:print "$at(31,55731,55732)"} true; + assume {:print "$track_local(46,4,0):", $t0} $t0 == $t0; + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + assume {:print "$at(31,55833,55889)"} true; + assume ($t4 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t0->$value))); + + // assume Identical($t5, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1322:13+56 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := unpack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1324:13+22 + assume {:print "$at(31,55913,55935)"} true; + $t7 := $t0->$value; + + // trace_local[amount]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1324:27+6 + assume {:print "$track_local(46,4,1):", $t7} $t7 == $t7; + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:23+1 + assume {:print "$at(31,55966,55967)"} true; + $t8 := 0; + assume $IsValid'u64'($t8); + + // $t9 := !=($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:20+2 + $t9 := !$IsEqual'u64'($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1325:9+331 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume {:print "$at(31,56045,56069)"} true; +L1: + + // $t10 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume {:print "$at(31,56045,56069)"} true; + + // @176 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_CoinInfo'#0'_$memory#176 := $1_coin_CoinInfo'#0'_$memory; + + // @174 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_Ghost$supply'#0'_$memory#174 := $1_coin_Ghost$supply'#0'_$memory; + + // @175 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#175 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume $IsValid'address'($t10); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@174]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@175]>(0x0))), select coin::CoinInfo.supply>(global[@176]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#174, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#175, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#176, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t10, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + assume $IsEqual'address'($t10, $1_type_info_$type_of'#0'()->$account_address); + + // $t10 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:75+24 + + // $t11 := borrow_global>($t10) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:37+17 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(31,56007,56024)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // $t13 := borrow_field>.supply($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:32+75 + $t13 := $ChildMutation($t11, 3, $Dereference($t11)->$supply); + + // trace_local[maybe_supply]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1326:17+12 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t13); + assume {:print "$track_local(46,4,2):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t14 := read_ref($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:33+12 + assume {:print "$at(31,56111,56123)"} true; + $t14 := $Dereference($t13); + + // $t15 := opaque begin: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + assume $IsValid'bool'($t15); + + // assume Eq($t15, option::spec_is_some($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + assume $IsEqual'bool'($t15, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t14)); + + // $t15 := opaque end: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:17+29 + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1328:49+12 + assume {:print "$at(31,56176,56188)"} true; +L3: + + // $t16 := option::borrow_mut($t13) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1328:30+32 + assume {:print "$at(31,56157,56189)"} true; + call $t16,$t13 := $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t13); + if ($abort_flag) { + assume {:print "$at(31,56157,56189)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // $t17 := (u128)($t7) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:50+16 + assume {:print "$at(31,56240,56256)"} true; + call $t17 := $CastU128($t7); + if ($abort_flag) { + assume {:print "$at(31,56240,56256)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // optional_aggregator::sub($t16, $t17) on_abort goto L5 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + call $t16 := $1_optional_aggregator_sub($t16, $t17); + if ($abort_flag) { + assume {:print "$at(31,56207,56257)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,4):", $t12} $t12 == $t12; + goto L5; + } + + // write_back[Reference($t13).vec (vector)/[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $t13 := $UpdateMutation($t13, (var $$sel0 := $Dereference($t13)->$vec; $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec($Dereference($t13), UpdateVec($$sel0, ReadVec($t16->p, LenVec($t13->p) + 1), $Dereference($t16))))); + + // write_back[Reference($t11).supply (option::Option)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $t11 := $UpdateMutation($t11, $Update'$1_coin_CoinInfo'#0''_supply($Dereference($t11), $Dereference($t13))); + + // pack_ref_deep($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + + // write_back[coin::CoinInfo<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:17+50 + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1329:67+1 + goto L0; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + assume {:print "$at(31,56091,56272)"} true; +L2: + + // pack_ref_deep($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + assume {:print "$at(31,56091,56272)"} true; + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1327:13+181 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1332:9+6 + assume {:print "$at(31,56293,56299)"} true; +L0: + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1332:9+6 + assume {:print "$at(31,56293,56299)"} true; + assume {:print "$track_return(46,4,0):", $t7} $t7 == $t7; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; +L4: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; + $ret0 := $t7; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 +L5: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1333:5+1 + assume {:print "$at(31,56304,56305)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun coin::deposit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1729 +procedure {:inline 1} $1_coin_deposit'$1_starcoin_coin_STC'(_$t0: int, _$t1: $1_coin_Coin'$1_starcoin_coin_STC') returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: int; + var $t4: $1_string_String; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $Mutation ($1_coin_CoinStore'$1_starcoin_coin_STC'); + var $t11: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t12: int; + var $t13: $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $t14: Vec (int); + var $t15: $1_string_String; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: $Mutation ($1_coin_CoinStore'$1_starcoin_coin_STC'); + var $t20: bool; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: $1_string_String; + var $t26: int; + var $t27: $1_coin_CoinDeposit; + var $t28: $Mutation ($1_event_EventHandle'$1_coin_DepositEvent'); + var $t29: int; + var $t30: $1_coin_DepositEvent; + var $t31: Vec (int); + var $t32: $1_string_String; + var $t33: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t34: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t35: bool; + var $t36: $1_object_Object'$1_fungible_asset_Metadata'; + var $t37: bool; + var $t38: int; + var $t39: bool; + var $t40: bool; + var $t41: bool; + var $t42: bool; + var $t43: bool; + var $t44: Vec (int); + var $t45: $1_string_String; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: $1_fungible_asset_FungibleAsset; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t0: int; + var $t1: $1_coin_Coin'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC'': $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t13, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t13 == $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0)); + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1 + assume {:print "$at(31,39180,39181)"} true; + assume {:print "$track_local(46,13,0):", $t0} $t0 == $t0; + + // trace_local[coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1 + assume {:print "$track_local(46,13,1):", $t1} $t1 == $t1; + + // $t14 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:41+26 + assume {:print "$at(31,39366,39392)"} true; + $t14 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t14); + + // $t15 := string::utf8($t14) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:23+45 + call $t15 := $1_string_utf8($t14); + if ($abort_flag) { + assume {:print "$at(31,39348,39393)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t15) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:9+60 + call $1_debug_print'$1_string_String'($t15); + if ($abort_flag) { + assume {:print "$at(31,39334,39394)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print
($t0) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:924:9+27 + assume {:print "$at(31,39404,39431)"} true; + call $1_debug_print'address'($t0); + if ($abort_flag) { + assume {:print "$at(31,39404,39431)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t17 := coin::value<#0>($t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:925:23+12 + assume {:print "$at(31,39455,39467)"} true; + call $t17 := $1_coin_value'$1_starcoin_coin_STC'($t1); + if ($abort_flag) { + assume {:print "$at(31,39455,39467)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t17) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:925:9+27 + call $1_debug_print'u64'($t17); + if ($abort_flag) { + assume {:print "$at(31,39441,39468)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t18 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:927:13+6 + assume {:print "$at(31,39483,39489)"} true; + $t18 := $ResourceExists($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:927:9+1354 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:69+12 + assume {:print "$at(31,39596,39608)"} true; +L1: + + // $t19 := borrow_global>($t0) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:30+17 + assume {:print "$at(31,39557,39574)"} true; + if (!$ResourceExists($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(31,39557,39574)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[coin_store]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:17+10 + $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC'' := $Dereference($t19); + assume {:print "$track_local(46,13,10):", $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC''} $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC'' == $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC''; + + // $t20 := get_field>.frozen($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:930:18+17 + assume {:print "$at(31,39649,39666)"} true; + $t20 := $Dereference($t19)->$frozen; + + // $t21 := !($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:930:17+1 + call $t21 := $Not($t20); + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 +L2: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + + // $t22 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:931:42+7 + assume {:print "$at(31,39709,39716)"} true; + $t22 := 10; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:931:17+33 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(31,39684,39717)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + assume {:print "$track_abort(46,13):", $t23} $t23 == $t23; + + // $t16 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + $t16 := $t23; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + goto L21; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:17+47 + assume {:print "$at(31,39750,39797)"} true; +L4: + + // $t24 := features::module_event_migration_enabled() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:17+47 + assume {:print "$at(31,39750,39797)"} true; + call $t24 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(31,39750,39797)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t24) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:13+228 + if ($t24) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:46+21 + assume {:print "$at(31,39875,39896)"} true; +L6: + + // $t25 := type_info::type_name<#0>() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:46+21 + assume {:print "$at(31,39875,39896)"} true; + call $t25 := $1_type_info_type_name'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,39875,39896)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t26 := get_field>.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:100+10 + $t26 := $t1->$value; + + // $t27 := pack coin::CoinDeposit($t25, $t0, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:21+91 + $t27 := $1_coin_CoinDeposit($t25, $t0, $t26); + + // opaque begin: event::emit($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:934:17+142 + assume {:print "$at(31,39817,39959)"} true; + + // opaque end: event::emit($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:934:17+142 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:939:22+10 + assume {:print "$at(31,40042,40052)"} true; +L5: + + // $t28 := borrow_field>.deposit_events($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:939:17+30 + assume {:print "$at(31,40037,40067)"} true; + $t28 := $ChildMutation($t19, 2, $Dereference($t19)->$deposit_events); + + // $t29 := get_field>.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:940:40+10 + assume {:print "$at(31,40108,40118)"} true; + $t29 := $t1->$value; + + // $t30 := pack coin::DepositEvent($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:940:17+35 + $t30 := $1_coin_DepositEvent($t29); + + // opaque begin: event::emit_event($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + assume {:print "$at(31,39988,40135)"} true; + + // opaque end: event::emit_event($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + + // write_back[Reference($t19).deposit_events (event::EventHandle)]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + $t19 := $UpdateMutation($t19, $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_deposit_events($Dereference($t19), $Dereference($t28))); + + // $t31 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 109, 101, 114, 103, 101, 32, 99, 111, 105, 110, 32, 116, 111, 32, 115, 116, 111, 114, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:45+38 + assume {:print "$at(31,40181,40219)"} true; + $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(109, 101, 114, 103)), MakeVec4(101, 32, 99, 111)), MakeVec4(105, 110, 32, 116)), MakeVec4(111, 32, 115, 116)), MakeVec3(111, 114, 101)); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:27+57 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(31,40163,40220)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t32) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:13+72 + call $1_debug_print'$1_string_String'($t32); + if ($abort_flag) { + assume {:print "$at(31,40149,40221)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t33 := borrow_field>.coin($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:19+20 + assume {:print "$at(31,40241,40261)"} true; + $t33 := $ChildMutation($t19, 0, $Dereference($t19)->$coin); + + // coin::merge<#0>($t33, $t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + call $t33 := $1_coin_merge'$1_starcoin_coin_STC'($t33, $t1); + if ($abort_flag) { + assume {:print "$at(31,40235,40268)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // write_back[Reference($t19).coin (coin::Coin<#0>)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + $t19 := $UpdateMutation($t19, $Update'$1_coin_CoinStore'$1_starcoin_coin_STC''_coin($Dereference($t19), $Dereference($t33))); + + // write_back[coin::CoinStore<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:46+1 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:28+27 + assume {:print "$at(31,40314,40341)"} true; +L0: + + // $t34 := coin::paired_metadata<#0>() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:28+27 + assume {:print "$at(31,40314,40341)"} true; + call $t34 := $1_coin_paired_metadata'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,40314,40341)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[metadata]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:17+8 + assume {:print "$track_local(46,13,11):", $t34} $t34 == $t34; + + // $t35 := opaque begin: option::is_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume {:print "$at(31,40359,40385)"} true; + + // assume WellFormed($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume $IsValid'bool'($t35); + + // assume Eq($t35, option::spec_is_some>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume $IsEqual'bool'($t35, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // $t35 := opaque end: option::is_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + + // if ($t35) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + if ($t35) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:947:17+12 + assume {:print "$at(31,40445,40457)"} true; +L9: + + // $t36 := opaque begin: option::destroy_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + + // assume Identical($t37, option::spec_is_none>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume ($t37 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // if ($t37) goto L23 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + if ($t37) { goto L23; } else { goto L22; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 +L23: + + // assume And(option::spec_is_none>($t34), Eq(262145, $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t34) && $IsEqual'num'(262145, $t16)); + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + goto L21; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 +L22: + + // assume WellFormed($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t36); + + // assume Eq>($t36, option::spec_borrow>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t36, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // $t36 := opaque end: option::destroy_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + + // $t38 := primary_fungible_store::primary_store_address($t0, $t36) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:37+82 + assume {:print "$at(31,41085,41167)"} true; + call $t38 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t36); + if ($abort_flag) { + assume {:print "$at(31,41085,41167)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[primary_store_address#39]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:13+21 + assume {:print "$track_local(46,13,12):", $t38} $t38 == $t38; + + // $t39 := fungible_asset::store_exists($t38) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+51 + assume {:print "$at(31,41177,41228)"} true; + call $t39 := $1_fungible_asset_store_exists($t38); + if ($abort_flag) { + assume {:print "$at(31,41177,41228)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t39) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + if ($t39) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; +L11: + + // $t40 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; + call $t40 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(31,41337,41393)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t40) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + if ($t40) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 +L13: + + // $t41 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + $t41 := true; + assume $IsValid'bool'($t41); + + // $t5 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + $t5 := $t41; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:95+21 + assume {:print "$at(31,41419,41440)"} true; +L12: + + // $t5 := exists($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:73+6 + assume {:print "$at(31,41397,41403)"} true; + $t5 := $ResourceExists($1_coin_MigrationFlag_$memory, $t38); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; +L14: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t6 := $t5; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L10: + + // $t42 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t42 := false; + assume $IsValid'bool'($t42); + + // $t6 := $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + $t6 := $t42; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L15: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + assume {:print "$at(31,40359,40519)"} true; + $t7 := $t6; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + goto L16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 +L8: + + // $t43 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + assume {:print "$at(31,40359,40519)"} true; + $t43 := false; + assume $IsValid'bool'($t43); + + // $t7 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + $t7 := $t43; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 +L16: + + // if ($t7) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 + assume {:print "$at(31,40355,40822)"} true; + if ($t7) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 + assume {:print "$at(31,40355,40822)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:49+54 + assume {:print "$at(31,40685,40739)"} true; +L17: + + // $t44 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 97, 98, 111, 114, 116, 32, 119, 105, 116, 104, 32, 99, 111, 105, 110, 32, 109, 101, 116, 97, 100, 97, 116, 97, 32, 110, 111, 116, 32, 101, 120, 105, 115, 116, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:49+54 + assume {:print "$at(31,40685,40739)"} true; + $t44 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(97, 98, 111, 114)), MakeVec4(116, 32, 119, 105)), MakeVec4(116, 104, 32, 99)), MakeVec4(111, 105, 110, 32)), MakeVec4(109, 101, 116, 97)), MakeVec4(100, 97, 116, 97)), MakeVec4(32, 110, 111, 116)), MakeVec4(32, 101, 120, 105)), MakeVec3(115, 116, 115)); + assume $IsValid'vec'u8''($t44); + + // $t45 := string::utf8($t44) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:31+73 + call $t45 := $1_string_utf8($t44); + if ($abort_flag) { + assume {:print "$at(31,40667,40740)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t45) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:17+88 + call $1_debug_print'$1_string_String'($t45); + if ($abort_flag) { + assume {:print "$at(31,40653,40741)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t46 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:40+25 + assume {:print "$at(31,40782,40807)"} true; + $t46 := 5; + assume $IsValid'u64'($t46); + + // $t47 := error::not_found($t46) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:23+43 + call $t47 := $1_error_not_found($t46); + if ($abort_flag) { + assume {:print "$at(31,40765,40808)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + assume {:print "$at(31,40759,40808)"} true; + assume {:print "$track_abort(46,13):", $t47} $t47 == $t47; + + // $t16 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + $t16 := $t47; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + goto L21; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:49+12 + assume {:print "$at(31,40571,40583)"} true; +L19: + + // assume Identical($t48, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:318:9+58 + assume {:print "$at(32,14452,14510)"} true; + assume ($t48 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t49 := coin::coin_to_fungible_asset<#0>($t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:63+28 + assume {:print "$at(31,40585,40613)"} true; + call $t49 := $1_coin_coin_to_fungible_asset'$1_starcoin_coin_STC'($t1); + if ($abort_flag) { + assume {:print "$at(31,40585,40613)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // primary_fungible_store::deposit($t0, $t49) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:17+75 + call $1_primary_fungible_store_deposit($t0, $t49); + if ($abort_flag) { + assume {:print "$at(31,40539,40614)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:41+25 + assume {:print "$at(31,40875,40900)"} true; +L7: + + // $t50 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:41+25 + assume {:print "$at(31,40875,40900)"} true; + $t50 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:23+44 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(31,40857,40901)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t51) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:9+59 + call $1_debug_print'$1_string_String'($t51); + if ($abort_flag) { + assume {:print "$at(31,40843,40902)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; +L20: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 +L21: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun coin::deposit<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1729 +procedure {:inline 1} $1_coin_deposit'#0'(_$t0: int, _$t1: $1_coin_Coin'#0') returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: int; + var $t4: $1_string_String; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $Mutation ($1_coin_CoinStore'#0'); + var $t11: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t12: int; + var $t13: $1_coin_CoinStore'#0'; + var $t14: Vec (int); + var $t15: $1_string_String; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: $Mutation ($1_coin_CoinStore'#0'); + var $t20: bool; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: $1_string_String; + var $t26: int; + var $t27: $1_coin_CoinDeposit; + var $t28: $Mutation ($1_event_EventHandle'$1_coin_DepositEvent'); + var $t29: int; + var $t30: $1_coin_DepositEvent; + var $t31: Vec (int); + var $t32: $1_string_String; + var $t33: $Mutation ($1_coin_Coin'#0'); + var $t34: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t35: bool; + var $t36: $1_object_Object'$1_fungible_asset_Metadata'; + var $t37: bool; + var $t38: int; + var $t39: bool; + var $t40: bool; + var $t41: bool; + var $t42: bool; + var $t43: bool; + var $t44: Vec (int); + var $t45: $1_string_String; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: $1_fungible_asset_FungibleAsset; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t0: int; + var $t1: $1_coin_Coin'#0'; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_coin_CoinStore'#0'': $1_coin_CoinStore'#0'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t13, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t13 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t0)); + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1 + assume {:print "$at(31,39180,39181)"} true; + assume {:print "$track_local(46,13,0):", $t0} $t0 == $t0; + + // trace_local[coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:919:5+1 + assume {:print "$track_local(46,13,1):", $t1} $t1 == $t1; + + // $t14 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:41+26 + assume {:print "$at(31,39366,39392)"} true; + $t14 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t14); + + // $t15 := string::utf8($t14) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:23+45 + call $t15 := $1_string_utf8($t14); + if ($abort_flag) { + assume {:print "$at(31,39348,39393)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t15) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:923:9+60 + call $1_debug_print'$1_string_String'($t15); + if ($abort_flag) { + assume {:print "$at(31,39334,39394)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print
($t0) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:924:9+27 + assume {:print "$at(31,39404,39431)"} true; + call $1_debug_print'address'($t0); + if ($abort_flag) { + assume {:print "$at(31,39404,39431)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t17 := coin::value<#0>($t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:925:23+12 + assume {:print "$at(31,39455,39467)"} true; + call $t17 := $1_coin_value'#0'($t1); + if ($abort_flag) { + assume {:print "$at(31,39455,39467)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t17) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:925:9+27 + call $1_debug_print'u64'($t17); + if ($abort_flag) { + assume {:print "$at(31,39441,39468)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t18 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:927:13+6 + assume {:print "$at(31,39483,39489)"} true; + $t18 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t0); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:927:9+1354 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:69+12 + assume {:print "$at(31,39596,39608)"} true; +L1: + + // $t19 := borrow_global>($t0) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:30+17 + assume {:print "$at(31,39557,39574)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_coin_CoinStore'#0'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(31,39557,39574)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[coin_store]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:928:17+10 + $temp_0'$1_coin_CoinStore'#0'' := $Dereference($t19); + assume {:print "$track_local(46,13,10):", $temp_0'$1_coin_CoinStore'#0''} $temp_0'$1_coin_CoinStore'#0'' == $temp_0'$1_coin_CoinStore'#0''; + + // $t20 := get_field>.frozen($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:930:18+17 + assume {:print "$at(31,39649,39666)"} true; + $t20 := $Dereference($t19)->$frozen; + + // $t21 := !($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:930:17+1 + call $t21 := $Not($t20); + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 +L2: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + + // $t22 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:931:42+7 + assume {:print "$at(31,39709,39716)"} true; + $t22 := 10; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:931:17+33 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(31,39684,39717)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + assume {:print "$at(31,39623,39732)"} true; + assume {:print "$track_abort(46,13):", $t23} $t23 == $t23; + + // $t16 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + $t16 := $t23; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:929:13+109 + goto L21; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:17+47 + assume {:print "$at(31,39750,39797)"} true; +L4: + + // $t24 := features::module_event_migration_enabled() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:17+47 + assume {:print "$at(31,39750,39797)"} true; + call $t24 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(31,39750,39797)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t24) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:933:13+228 + if ($t24) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:46+21 + assume {:print "$at(31,39875,39896)"} true; +L6: + + // $t25 := type_info::type_name<#0>() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:46+21 + assume {:print "$at(31,39875,39896)"} true; + call $t25 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,39875,39896)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t26 := get_field>.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:100+10 + $t26 := $t1->$value; + + // $t27 := pack coin::CoinDeposit($t25, $t0, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:935:21+91 + $t27 := $1_coin_CoinDeposit($t25, $t0, $t26); + + // opaque begin: event::emit($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:934:17+142 + assume {:print "$at(31,39817,39959)"} true; + + // opaque end: event::emit($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:934:17+142 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:939:22+10 + assume {:print "$at(31,40042,40052)"} true; +L5: + + // $t28 := borrow_field>.deposit_events($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:939:17+30 + assume {:print "$at(31,40037,40067)"} true; + $t28 := $ChildMutation($t19, 2, $Dereference($t19)->$deposit_events); + + // $t29 := get_field>.value($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:940:40+10 + assume {:print "$at(31,40108,40118)"} true; + $t29 := $t1->$value; + + // $t30 := pack coin::DepositEvent($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:940:17+35 + $t30 := $1_coin_DepositEvent($t29); + + // opaque begin: event::emit_event($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + assume {:print "$at(31,39988,40135)"} true; + + // opaque end: event::emit_event($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + + // write_back[Reference($t19).deposit_events (event::EventHandle)]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:938:13+147 + $t19 := $UpdateMutation($t19, $Update'$1_coin_CoinStore'#0''_deposit_events($Dereference($t19), $Dereference($t28))); + + // $t31 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 109, 101, 114, 103, 101, 32, 99, 111, 105, 110, 32, 116, 111, 32, 115, 116, 111, 114, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:45+38 + assume {:print "$at(31,40181,40219)"} true; + $t31 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(109, 101, 114, 103)), MakeVec4(101, 32, 99, 111)), MakeVec4(105, 110, 32, 116)), MakeVec4(111, 32, 115, 116)), MakeVec3(111, 114, 101)); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:27+57 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(31,40163,40220)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t32) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:942:13+72 + call $1_debug_print'$1_string_String'($t32); + if ($abort_flag) { + assume {:print "$at(31,40149,40221)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t33 := borrow_field>.coin($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:19+20 + assume {:print "$at(31,40241,40261)"} true; + $t33 := $ChildMutation($t19, 0, $Dereference($t19)->$coin); + + // coin::merge<#0>($t33, $t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + call $t33 := $1_coin_merge'#0'($t33, $t1); + if ($abort_flag) { + assume {:print "$at(31,40235,40268)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // write_back[Reference($t19).coin (coin::Coin<#0>)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + $t19 := $UpdateMutation($t19, $Update'$1_coin_CoinStore'#0''_coin($Dereference($t19), $Dereference($t33))); + + // write_back[coin::CoinStore<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:13+33 + $1_coin_CoinStore'#0'_$memory := $ResourceUpdate($1_coin_CoinStore'#0'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:943:46+1 + goto L7; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:28+27 + assume {:print "$at(31,40314,40341)"} true; +L0: + + // $t34 := coin::paired_metadata<#0>() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:28+27 + assume {:print "$at(31,40314,40341)"} true; + call $t34 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,40314,40341)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[metadata]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:945:17+8 + assume {:print "$track_local(46,13,11):", $t34} $t34 == $t34; + + // $t35 := opaque begin: option::is_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume {:print "$at(31,40359,40385)"} true; + + // assume WellFormed($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume $IsValid'bool'($t35); + + // assume Eq($t35, option::spec_is_some>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + assume $IsEqual'bool'($t35, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // $t35 := opaque end: option::is_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+26 + + // if ($t35) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + if ($t35) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:947:17+12 + assume {:print "$at(31,40445,40457)"} true; +L9: + + // $t36 := opaque begin: option::destroy_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + + // assume Identical($t37, option::spec_is_none>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume ($t37 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // if ($t37) goto L23 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + if ($t37) { goto L23; } else { goto L22; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 +L23: + + // assume And(option::spec_is_none>($t34), Eq(262145, $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t34) && $IsEqual'num'(262145, $t16)); + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + goto L21; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 +L22: + + // assume WellFormed($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume {:print "$at(31,40475,40505)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t36); + + // assume Eq>($t36, option::spec_borrow>($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t36, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t34)); + + // $t36 := opaque end: option::destroy_some>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:948:17+30 + + // $t38 := primary_fungible_store::primary_store_address($t0, $t36) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:37+82 + assume {:print "$at(31,41085,41167)"} true; + call $t38 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t36); + if ($abort_flag) { + assume {:print "$at(31,41085,41167)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_local[primary_store_address#39]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:13+21 + assume {:print "$track_local(46,13,12):", $t38} $t38 == $t38; + + // $t39 := fungible_asset::store_exists($t38) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+51 + assume {:print "$at(31,41177,41228)"} true; + call $t39 := $1_fungible_asset_store_exists($t38); + if ($abort_flag) { + assume {:print "$at(31,41177,41228)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t39) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + if ($t39) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; +L11: + + // $t40 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; + call $t40 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(31,41337,41393)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // if ($t40) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + if ($t40) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 +L13: + + // $t41 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + $t41 := true; + assume $IsValid'bool'($t41); + + // $t5 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + $t5 := $t41; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:95+21 + assume {:print "$at(31,41419,41440)"} true; +L12: + + // $t5 := exists($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:73+6 + assume {:print "$at(31,41397,41403)"} true; + $t5 := $ResourceExists($1_coin_MigrationFlag_$memory, $t38); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; +L14: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t6 := $t5; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L10: + + // $t42 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t42 := false; + assume $IsValid'bool'($t42); + + // $t6 := $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + $t6 := $t42; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L15: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + assume {:print "$at(31,40359,40519)"} true; + $t7 := $t6; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + goto L16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 +L8: + + // $t43 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + assume {:print "$at(31,40359,40519)"} true; + $t43 := false; + assume $IsValid'bool'($t43); + + // $t7 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 + $t7 := $t43; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:17+160 +L16: + + // if ($t7) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 + assume {:print "$at(31,40355,40822)"} true; + if ($t7) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:946:13+467 + assume {:print "$at(31,40355,40822)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:49+54 + assume {:print "$at(31,40685,40739)"} true; +L17: + + // $t44 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 97, 98, 111, 114, 116, 32, 119, 105, 116, 104, 32, 99, 111, 105, 110, 32, 109, 101, 116, 97, 100, 97, 116, 97, 32, 110, 111, 116, 32, 101, 120, 105, 115, 116, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:49+54 + assume {:print "$at(31,40685,40739)"} true; + $t44 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(97, 98, 111, 114)), MakeVec4(116, 32, 119, 105)), MakeVec4(116, 104, 32, 99)), MakeVec4(111, 105, 110, 32)), MakeVec4(109, 101, 116, 97)), MakeVec4(100, 97, 116, 97)), MakeVec4(32, 110, 111, 116)), MakeVec4(32, 101, 120, 105)), MakeVec3(115, 116, 115)); + assume $IsValid'vec'u8''($t44); + + // $t45 := string::utf8($t44) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:31+73 + call $t45 := $1_string_utf8($t44); + if ($abort_flag) { + assume {:print "$at(31,40667,40740)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t45) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:952:17+88 + call $1_debug_print'$1_string_String'($t45); + if ($abort_flag) { + assume {:print "$at(31,40653,40741)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // $t46 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:40+25 + assume {:print "$at(31,40782,40807)"} true; + $t46 := 5; + assume $IsValid'u64'($t46); + + // $t47 := error::not_found($t46) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:23+43 + call $t47 := $1_error_not_found($t46); + if ($abort_flag) { + assume {:print "$at(31,40765,40808)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + assume {:print "$at(31,40759,40808)"} true; + assume {:print "$track_abort(46,13):", $t47} $t47 == $t47; + + // $t16 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + $t16 := $t47; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:953:17+49 + goto L21; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:49+12 + assume {:print "$at(31,40571,40583)"} true; +L19: + + // assume Identical($t48, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:318:9+58 + assume {:print "$at(32,14452,14510)"} true; + assume ($t48 == $1_type_info_$type_of'#0'()->$account_address); + + // $t49 := coin::coin_to_fungible_asset<#0>($t1) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:63+28 + assume {:print "$at(31,40585,40613)"} true; + call $t49 := $1_coin_coin_to_fungible_asset'#0'($t1); + if ($abort_flag) { + assume {:print "$at(31,40585,40613)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // primary_fungible_store::deposit($t0, $t49) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:950:17+75 + call $1_primary_fungible_store_deposit($t0, $t49); + if ($abort_flag) { + assume {:print "$at(31,40539,40614)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:41+25 + assume {:print "$at(31,40875,40900)"} true; +L7: + + // $t50 := [99, 111, 105, 110, 58, 58, 100, 101, 112, 111, 115, 105, 116, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:41+25 + assume {:print "$at(31,40875,40900)"} true; + $t50 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 100, 101)), MakeVec4(112, 111, 115, 105)), MakeVec4(116, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:23+44 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(31,40857,40901)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // debug::print($t51) on_abort goto L21 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:956:9+59 + call $1_debug_print'$1_string_String'($t51); + if ($abort_flag) { + assume {:print "$at(31,40843,40902)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,13):", $t16} $t16 == $t16; + goto L21; + } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; +L20: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 +L21: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:957:5+1 + assume {:print "$at(31,40908,40909)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun coin::destroy_zero [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+292 +procedure {:inline 1} $1_coin_destroy_zero'$1_starcoin_coin_STC'(_$t0: $1_coin_Coin'$1_starcoin_coin_STC') returns () +{ + // declare local variables + var $t1: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t2: int; + var $t3: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t0: $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[zero_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume {:print "$at(31,42905,42906)"} true; + assume {:print "$track_local(46,17,0):", $t0} $t0 == $t0; + + // assume Identical($t1, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume {:print "$at(31,42995,43056)"} true; + assume ($t1 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v - $t0->$value))); + + // assume Identical($t2, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume ($t2 == 0); + + // $t3 := borrow_global>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t2)); + } + + // write_ref($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[coin::Ghost$supply<#0>@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // $t4 := unpack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1002:13+14 + assume {:print "$at(31,43080,43094)"} true; + $t4 := $t0->$value; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:26+1 + assume {:print "$at(31,43133,43134)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:23+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 +L0: + + // $t7 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 + assume {:print "$at(31,43160,43189)"} true; + $t7 := 7; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:29+54 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,43136,43190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,17):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + assume {:print "$track_abort(46,17):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun coin::destroy_zero<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+292 +procedure {:inline 1} $1_coin_destroy_zero'#0'(_$t0: $1_coin_Coin'#0') returns () +{ + // declare local variables + var $t1: $1_coin_Ghost$supply'#0'; + var $t2: int; + var $t3: $Mutation ($1_coin_Ghost$supply'#0'); + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[zero_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume {:print "$at(31,42905,42906)"} true; + assume {:print "$track_local(46,17,0):", $t0} $t0 == $t0; + + // assume Identical($t1, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume {:print "$at(31,42995,43056)"} true; + assume ($t1 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t0->$value))); + + // assume Identical($t2, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume ($t2 == 0); + + // $t3 := borrow_global>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t2)); + } + + // write_ref($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[coin::Ghost$supply<#0>@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // $t4 := unpack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1002:13+14 + assume {:print "$at(31,43080,43094)"} true; + $t4 := $t0->$value; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:26+1 + assume {:print "$at(31,43133,43134)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:23+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 +L0: + + // $t7 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 + assume {:print "$at(31,43160,43189)"} true; + $t7 := 7; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:29+54 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,43136,43190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,17):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + assume {:print "$track_abort(46,17):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun coin::destroy_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+292 +procedure {:timeLimit 80} $1_coin_destroy_zero$verify(_$t0: $1_coin_Coin'#0') returns () +{ + // declare local variables + var $t1: $1_coin_Ghost$supply'#0'; + var $t2: int; + var $t3: $Mutation ($1_coin_Ghost$supply'#0'); + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $1_coin_Ghost$supply'#0'_$memory#334: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#335: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#336: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume {:print "$at(31,42905,42906)"} true; + assume $IsValid'$1_coin_Coin'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @336 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + $1_coin_CoinInfo'#0'_$memory#336 := $1_coin_CoinInfo'#0'_$memory; + + // @334 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + $1_coin_Ghost$supply'#0'_$memory#334 := $1_coin_Ghost$supply'#0'_$memory; + + // @335 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#335 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[zero_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:998:5+1 + assume {:print "$track_local(46,17,0):", $t0} $t0 == $t0; + + // assume Identical($t1, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume {:print "$at(31,42995,43056)"} true; + assume ($t1 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t0->$value))); + + // assume Identical($t2, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + assume ($t2 == 0); + + // $t3 := borrow_global>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t2)); + } + + // write_ref($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[coin::Ghost$supply<#0>@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1000:13+61 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // $t4 := unpack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1002:13+14 + assume {:print "$at(31,43080,43094)"} true; + $t4 := $t0->$value; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:26+1 + assume {:print "$at(31,43133,43134)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:23+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 +L0: + + // $t7 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:53+29 + assume {:print "$at(31,43160,43189)"} true; + $t7 := 7; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:29+54 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,43136,43190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,17):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + assume {:print "$at(31,43116,43191)"} true; + assume {:print "$track_abort(46,17):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1003:9+75 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; +L3: + + // assert Not(Gt(select coin::Coin.value>($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:353:9+30 + assume {:print "$at(32,15774,15804)"} true; + assert {:msg "assert_failed(32,15774,15804): function does not abort under this condition"} + !($t0->$value > 0); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@334]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@335]>(0x0))), select coin::CoinInfo.supply>(global[@336]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#334, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#335, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#336, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1004:5+1 + assume {:print "$at(31,43196,43197)"} true; +L4: + + // assert Gt(select coin::Coin.value>($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:352:5+101 + assume {:print "$at(32,15709,15810)"} true; + assert {:msg "assert_failed(32,15709,15810): abort not covered by any of the `aborts_if` clauses"} + ($t0->$value > 0); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:352:5+101 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun coin::is_balance_at_least [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+612 +procedure {:timeLimit 80} $1_coin_is_balance_at_least$verify(_$t0: int, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t8: bool; + var $t9: $1_coin_CoinStore'#0'; + var $t10: int; + var $t11: $1_coin_Coin'#0'; + var $t12: int; + var $t13: bool; + var $t14: bool; + var $t15: bool; + var $t16: int; + var $t17: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t18: bool; + var $t19: $Mutation ($1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''); + var $t20: $1_object_Object'$1_fungible_asset_Metadata'; + var $t21: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t22: bool; + var $t23: bool; + var $t0: int; + var $t1: int; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#340: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#341: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#342: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume {:print "$at(31,32805,32806)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @342 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + $1_coin_CoinInfo'#0'_$memory#342 := $1_coin_CoinInfo'#0'_$memory; + + // @340 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + $1_coin_Ghost$supply'#0'_$memory#340 := $1_coin_Ghost$supply'#0'_$memory; + + // @341 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#341 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume {:print "$track_local(46,35,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:759:5+1 + assume {:print "$track_local(46,35,1):", $t1} $t1 == $t1; + + // trace_local[owner#60]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:776:39+5 + assume {:print "$at(31,33457,33462)"} true; + assume {:print "$track_local(46,35,6):", $t0} $t0 == $t0; + + // $t8 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:13+6 + assume {:print "$at(31,33492,33498)"} true; + $t8 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t0); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:48+5 + assume {:print "$at(31,33577,33582)"} true; +L1: + + // $t9 := get_global>($t0) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+13 + assume {:print "$at(31,33542,33555)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_coin_CoinStore'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(31,33542,33555)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(46,35):", $t10} $t10 == $t10; + goto L9; + } + + // $t11 := get_field>.coin($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+46 + $t11 := $t9->$coin; + + // $t2 := get_field>.value($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+52 + $t2 := $t11->$value; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + assume {:print "$at(31,33488,33635)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:780:13+1 + assume {:print "$at(31,33624,33625)"} true; +L0: + + // $t12 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:780:13+1 + assume {:print "$at(31,33624,33625)"} true; + $t12 := 0; + assume $IsValid'u64'($t12); + + // $t2 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + assume {:print "$at(31,33488,33635)"} true; + $t2 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 +L2: + + // trace_local[coin_balance]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:760:13+12 + assume {:print "$at(31,32933,32945)"} true; + assume {:print "$track_local(46,35,4):", $t2} $t2 == $t2; + + // $t13 := >=($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:761:26+2 + assume {:print "$at(31,33004,33006)"} true; + call $t13 := $Ge($t2, $t1); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:761:9+63 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:762:20+4 + assume {:print "$at(31,33036,33040)"} true; +L4: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:762:20+4 + assume {:print "$at(31,33036,33040)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:762:13+11 + assume {:print "$track_return(46,35,0):", $t14} $t14 == $t14; + + // $t15 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:762:13+11 + $t15 := $t14; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:762:13+11 + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:765:31+27 + assume {:print "$at(31,33083,33110)"} true; +L3: + + // $t7 := coin::paired_metadata<#0>() on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:765:31+27 + assume {:print "$at(31,33083,33110)"} true; + call $t7 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,33083,33110)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(46,35):", $t10} $t10 == $t10; + goto L9; + } + + // trace_local[paired_metadata]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:765:13+15 + assume {:print "$track_local(46,35,7):", $t7} $t7 == $t7; + + // $t16 := -($t1, $t2) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:766:34+1 + assume {:print "$at(31,33145,33146)"} true; + call $t16 := $Sub($t1, $t2); + if ($abort_flag) { + assume {:print "$at(31,33145,33146)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(46,35):", $t10} $t10 == $t10; + goto L9; + } + + // trace_local[left_amount]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:766:13+11 + assume {:print "$track_local(46,35,5):", $t16} $t16 == $t16; + + // $t17 := copy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:29+16 + assume {:print "$at(31,33189,33205)"} true; + $t17 := $t7; + + // $t18 := opaque begin: option::is_some>($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:13+33 + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:13+33 + assume $IsValid'bool'($t18); + + // assume Eq($t18, option::spec_is_some>($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:13+33 + assume $IsEqual'bool'($t18, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t17)); + + // $t18 := opaque end: option::is_some>($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:13+33 + + // if ($t18) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 + if ($t18) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:769:17+5 + assume {:print "$at(31,33283,33288)"} true; +L6: + + // $t19 := borrow_local($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:33+20 + assume {:print "$at(31,33322,33342)"} true; + $t19 := $Mutation($Local(7), EmptyVec(), $t7); + + // $t20 := opaque begin: option::extract>($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + + // $t21 := read_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + $t21 := $Dereference($t19); + + // assume Identical($t22, option::spec_is_none>($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume ($t22 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($Dereference($t19))); + + // if ($t22) goto L11 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + if ($t22) { goto L11; } else { goto L12; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 +L11: + + // assume And(option::spec_is_none>($t19), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume {:print "$at(31,33306,33343)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($Dereference($t19)) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume {:print "$at(31,33306,33343)"} true; + assume {:print "$track_abort(46,35):", $t10} $t10 == $t10; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + goto L9; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 +L10: + + // $t19 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume {:print "$at(31,33306,33343)"} true; + havoc $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''; + $t19 := $UpdateMutation($t19, $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''); + + // assume And(WellFormed($t19), Le(Len>(select option::Option.vec($t19)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($Dereference($t19)) && (LenVec($Dereference($t19)->$vec) <= 1)); + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t20); + + // assume Eq>($t20, option::spec_borrow>($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t20, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t21)); + + // assume option::spec_is_none>($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($Dereference($t19)); + + // $t20 := opaque end: option::extract>($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + + // assert Le(Len>(select option::Option.vec($t19)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t19)->$vec) <= 1); + + // write_back[LocalRoot($t7)@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume {:print "$at(31,33306,33343)"} true; + $t7 := $Dereference($t19); + + // trace_local[paired_metadata]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:770:17+37 + assume {:print "$track_local(46,35,7):", $t7} $t7 == $t7; + + // $t3 := primary_fungible_store::is_balance_at_least($t0, $t20, $t16) on_abort goto L9 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:768:13+164 + assume {:print "$at(31,33222,33386)"} true; + call $t3 := $1_primary_fungible_store_is_balance_at_least'$1_fungible_asset_Metadata'($t0, $t20, $t16); + if ($abort_flag) { + assume {:print "$at(31,33222,33386)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(46,35):", $t10} $t10 == $t10; + goto L9; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 + assume {:print "$at(31,33169,33411)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:773:18+5 + assume {:print "$at(31,33404,33409)"} true; +L5: + + // $t23 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:773:18+5 + assume {:print "$at(31,33404,33409)"} true; + $t23 := false; + assume $IsValid'bool'($t23); + + // $t3 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 + assume {:print "$at(31,33169,33411)"} true; + $t3 := $t23; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 +L7: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 + assume {:print "$at(31,33169,33411)"} true; + assume {:print "$track_return(46,35,0):", $t3} $t3 == $t3; + + // $t15 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:767:9+242 + $t15 := $t3; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:774:5+1 + assume {:print "$at(31,33416,33417)"} true; +L8: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@340]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@341]>(0x0))), select coin::CoinInfo.supply>(global[@342]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#340, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#341, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#342, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t15; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:774:5+1 + assume {:print "$at(31,33416,33417)"} true; +L9: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:774:5+1 + assume {:print "$at(31,33416,33417)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // drop($t19) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + +} + +// fun coin::merge [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+469 +procedure {:inline 1} $1_coin_merge'$1_starcoin_coin_STC'(_$t0: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'), _$t1: $1_coin_Coin'$1_starcoin_coin_STC') returns ($ret0: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC')) +{ + // declare local variables + var $t2: int; + var $t3: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t4: int; + var $t5: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t6: int; + var $t7: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t8: int; + var $t9: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t0: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t1: $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$at(31,49041,49042)"} true; + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // trace_local[source_coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$track_local(46,39,1):", $t1} $t1 == $t1; + + // assume Le(Add(select coin::Coin.value>($t0), select coin::Coin.value>($t1)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1152:13+53 + assume {:print "$at(31,49157,49210)"} true; + assume (($Dereference($t0)->$value + $t1->$value) <= 18446744073709551615); + + // assume Identical($t3, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume {:print "$at(31,49249,49312)"} true; + assume ($t3 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v - $t1->$value))); + + // assume Identical($t4, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume ($t4 == 0); + + // $t5 := borrow_global>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t4)); + } + + // write_ref($t5, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $t5 := $UpdateMutation($t5, $t3); + + // write_back[coin::Ghost$supply<#0>@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // $t6 := unpack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:13+14 + assume {:print "$at(31,49336,49350)"} true; + $t6 := $t1->$value; + + // trace_local[value]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:20+5 + assume {:print "$track_local(46,39,2):", $t6} $t6 == $t6; + + // assume Identical($t7, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume {:print "$at(31,49393,49444)"} true; + assume ($t7 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $t6))); + + // assume Identical($t8, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume ($t8 == 0); + + // $t9 := borrow_global>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t8)); + } + + // write_ref($t9, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $t9 := $UpdateMutation($t9, $t7); + + // write_back[coin::Ghost$supply<#0>@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // $t10 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:26+14 + assume {:print "$at(31,49481,49495)"} true; + $t10 := $Dereference($t0)->$value; + + // $t11 := +($t10, $t6) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:41+1 + call $t11 := $AddU64($t10, $t6); + if ($abort_flag) { + assume {:print "$at(31,49496,49497)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,39):", $t12} $t12 == $t12; + goto L2; + } + + // $t13 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+14 + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t13 := $UpdateMutation($t13, $t11); + + // write_back[Reference($t0).value (u64)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'$1_starcoin_coin_STC''_value($Dereference($t0), $Dereference($t13))); + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:48+1 + $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''} $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'' == $temp_0'$1_coin_Coin'$1_starcoin_coin_STC''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun coin::merge<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+469 +procedure {:inline 1} $1_coin_merge'#0'(_$t0: $Mutation ($1_coin_Coin'#0'), _$t1: $1_coin_Coin'#0') returns ($ret0: $Mutation ($1_coin_Coin'#0')) +{ + // declare local variables + var $t2: int; + var $t3: $1_coin_Ghost$supply'#0'; + var $t4: int; + var $t5: $Mutation ($1_coin_Ghost$supply'#0'); + var $t6: int; + var $t7: $1_coin_Ghost$supply'#0'; + var $t8: int; + var $t9: $Mutation ($1_coin_Ghost$supply'#0'); + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t0: $Mutation ($1_coin_Coin'#0'); + var $t1: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$at(31,49041,49042)"} true; + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[source_coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$track_local(46,39,1):", $t1} $t1 == $t1; + + // assume Le(Add(select coin::Coin.value>($t0), select coin::Coin.value>($t1)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1152:13+53 + assume {:print "$at(31,49157,49210)"} true; + assume (($Dereference($t0)->$value + $t1->$value) <= 18446744073709551615); + + // assume Identical($t3, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume {:print "$at(31,49249,49312)"} true; + assume ($t3 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t1->$value))); + + // assume Identical($t4, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume ($t4 == 0); + + // $t5 := borrow_global>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t4)); + } + + // write_ref($t5, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $t5 := $UpdateMutation($t5, $t3); + + // write_back[coin::Ghost$supply<#0>@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // $t6 := unpack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:13+14 + assume {:print "$at(31,49336,49350)"} true; + $t6 := $t1->$value; + + // trace_local[value]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:20+5 + assume {:print "$track_local(46,39,2):", $t6} $t6 == $t6; + + // assume Identical($t7, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume {:print "$at(31,49393,49444)"} true; + assume ($t7 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t6))); + + // assume Identical($t8, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume ($t8 == 0); + + // $t9 := borrow_global>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t8)); + } + + // write_ref($t9, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $t9 := $UpdateMutation($t9, $t7); + + // write_back[coin::Ghost$supply<#0>@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // $t10 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:26+14 + assume {:print "$at(31,49481,49495)"} true; + $t10 := $Dereference($t0)->$value; + + // $t11 := +($t10, $t6) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:41+1 + call $t11 := $AddU64($t10, $t6); + if ($abort_flag) { + assume {:print "$at(31,49496,49497)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,39):", $t12} $t12 == $t12; + goto L2; + } + + // $t13 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+14 + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t13 := $UpdateMutation($t13, $t11); + + // write_back[Reference($t0).value (u64)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'#0''_value($Dereference($t0), $Dereference($t13))); + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:48+1 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun coin::merge [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+469 +procedure {:timeLimit 80} $1_coin_merge$verify(_$t0: $Mutation ($1_coin_Coin'#0'), _$t1: $1_coin_Coin'#0') returns ($ret0: $Mutation ($1_coin_Coin'#0')) +{ + // declare local variables + var $t2: int; + var $t3: $1_coin_Coin'#0'; + var $t4: $1_coin_Ghost$supply'#0'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'#0'); + var $t7: int; + var $t8: $1_coin_Ghost$supply'#0'; + var $t9: int; + var $t10: $Mutation ($1_coin_Ghost$supply'#0'); + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $Mutation (int); + var $t0: $Mutation ($1_coin_Coin'#0'); + var $t1: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#207: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#208: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#209: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$at(31,49041,49042)"} true; + assume $IsValid'$1_coin_Coin'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume $IsValid'$1_coin_Coin'#0''($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @209 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + $1_coin_CoinInfo'#0'_$memory#209 := $1_coin_CoinInfo'#0'_$memory; + + // @207 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + $1_coin_Ghost$supply'#0'_$memory#207 := $1_coin_Ghost$supply'#0'_$memory; + + // @208 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#208 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + $t3 := $Dereference($t0); + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[source_coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1150:5+1 + assume {:print "$track_local(46,39,1):", $t1} $t1 == $t1; + + // assume Le(Add(select coin::Coin.value>($t0), select coin::Coin.value>($t1)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1152:13+53 + assume {:print "$at(31,49157,49210)"} true; + assume (($Dereference($t0)->$value + $t1->$value) <= 18446744073709551615); + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume {:print "$at(31,49249,49312)"} true; + assume ($t4 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t1->$value))); + + // assume Identical($t5, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1155:13+63 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := unpack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:13+14 + assume {:print "$at(31,49336,49350)"} true; + $t7 := $t1->$value; + + // trace_local[value]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1157:20+5 + assume {:print "$track_local(46,39,2):", $t7} $t7 == $t7; + + // assume Identical($t8, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume {:print "$at(31,49393,49444)"} true; + assume ($t8 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t7))); + + // assume Identical($t9, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + assume ($t9 == 0); + + // $t10 := borrow_global>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t9)); + } + + // write_ref($t10, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $t10 := $UpdateMutation($t10, $t8); + + // write_back[coin::Ghost$supply<#0>@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1159:13+51 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // $t11 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:26+14 + assume {:print "$at(31,49481,49495)"} true; + $t11 := $Dereference($t0)->$value; + + // $t12 := +($t11, $t7) on_abort goto L2 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:41+1 + call $t12 := $AddU64($t11, $t7); + if ($abort_flag) { + assume {:print "$at(31,49496,49497)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,39):", $t13} $t13 == $t13; + goto L2; + } + + // $t14 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+14 + $t14 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t14, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t14 := $UpdateMutation($t14, $t12); + + // write_back[Reference($t0).value (u64)]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'#0''_value($Dereference($t0), $Dereference($t14))); + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:9+39 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1161:48+1 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,39,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@207]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@208]>(0x0))), select coin::CoinInfo.supply>(global[@209]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#207, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#208, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#209, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(select coin::Coin.value>($t0), Add(select coin::Coin.value>($t3), select coin::Coin.value>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:506:9+66 + assume {:print "$at(32,22169,22235)"} true; + assert {:msg "assert_failed(32,22169,22235): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$value, ($t3->$value + $t1->$value)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:506:9+66 + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; +L2: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1162:5+1 + assume {:print "$at(31,49509,49510)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun coin::mint [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+176 +procedure {:timeLimit 80} $1_coin_mint$verify(_$t0: int, _$t1: $1_coin_MintCapability'#0') returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_coin_Coin'#0'; + var $t5: int; + var $t0: int; + var $t1: $1_coin_MintCapability'#0'; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#346: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#347: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#348: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume {:print "$at(31,49679,49680)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume $IsValid'$1_coin_MintCapability'#0''($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t2, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:103:9+58 + assume {:print "$at(32,5941,5999)"} true; + assume ($t2 == $1_type_info_$type_of'#0'()->$account_address); + + // assume CanModify>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:104:9+42 + assume {:print "$at(32,6008,6050)"} true; + assume $1_coin_CoinInfo'#0'_$modifies[$t2]; + + // @348 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:104:9+42 + $1_coin_CoinInfo'#0'_$memory#348 := $1_coin_CoinInfo'#0'_$memory; + + // @346 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:104:9+42 + $1_coin_Ghost$supply'#0'_$memory#346 := $1_coin_Ghost$supply'#0'_$memory; + + // @347 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:104:9+42 + $1_coin_Ghost$aggregate_supply'#0'_$memory#347 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume {:print "$at(31,49679,49680)"} true; + assume {:print "$track_local(46,42,0):", $t0} $t0 == $t0; + + // trace_local[_cap]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1167:5+1 + assume {:print "$track_local(46,42,1):", $t1} $t1 == $t1; + + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:108:9+58 + assume {:print "$at(32,6091,6149)"} true; + assume ($t3 == $1_type_info_$type_of'#0'()->$account_address); + + // assert CanModify>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1171:9+31 + assume {:print "$at(31,49818,49849)"} true; + assert {:msg "assert_failed(31,49818,49849): caller does not have permission to modify `coin::CoinInfo<#0>` at given address"} + $1_coin_CoinInfo'#0'_$modifies[$t3]; + + // $t4 := coin::mint_internal<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1171:9+31 + call $t4 := $1_coin_mint_internal'#0'($t0); + if ($abort_flag) { + assume {:print "$at(31,49818,49849)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,42):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1171:9+31 + assume {:print "$track_return(46,42,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1172:5+1 + assume {:print "$at(31,49854,49855)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@346]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@347]>(0x0))), select coin::CoinInfo.supply>(global[@348]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#346, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#347, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#348, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1172:5+1 + assume {:print "$at(31,49854,49855)"} true; +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1172:5+1 + assume {:print "$at(31,49854,49855)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::mint_internal<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1222 +procedure {:inline 1} $1_coin_mint_internal'#0'(_$t0: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t2: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: $1_coin_Coin'#0'; + var $t8: $1_coin_Coin'#0'; + var $t9: int; + var $t10: $Mutation ($1_coin_CoinInfo'#0'); + var $t11: int; + var $t12: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t13: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t14: bool; + var $t15: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t16: int; + var $t17: $1_coin_Ghost$supply'#0'; + var $t18: int; + var $t19: $Mutation ($1_coin_Ghost$supply'#0'); + var $t20: $1_coin_Coin'#0'; + var $t0: int; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#192: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#193: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#194: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:108:9+58 + assume {:print "$at(32,6091,6149)"} true; + assume ($t3 == $1_type_info_$type_of'#0'()->$account_address); + + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume {:print "$at(31,54503,54504)"} true; + assume {:print "$track_local(46,43,0):", $t0} $t0 == $t0; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:23+1 + assume {:print "$at(31,54602,54603)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := ==($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:20+2 + $t5 := $IsEqual'u64'($t0, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:9+103 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1295:24+1 + assume {:print "$at(31,54666,54667)"} true; +L1: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1295:24+1 + assume {:print "$at(31,54666,54667)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := pack coin::Coin<#0>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:20+55 + assume {:print "$at(31,54626,54681)"} true; + $t7 := $1_coin_Coin'#0'($t6); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + assume {:print "$track_return(46,43,0):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + $t8 := $t7; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume {:print "$at(31,54764,54788)"} true; +L0: + + // $t9 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume {:print "$at(31,54764,54788)"} true; + + // @194 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_CoinInfo'#0'_$memory#194 := $1_coin_CoinInfo'#0'_$memory; + + // @192 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_Ghost$supply'#0'_$memory#192 := $1_coin_Ghost$supply'#0'_$memory; + + // @193 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#193 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume $IsValid'address'($t9); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@192]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@193]>(0x0))), select coin::CoinInfo.supply>(global[@194]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#192, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#193, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#194, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t9, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume $IsEqual'address'($t9, $1_type_info_$type_of'#0'()->$account_address); + + // $t9 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + + // $t10 := borrow_global>($t9) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:33+17 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(31,54726,54743)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // $t12 := borrow_field>.supply($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:28+75 + $t12 := $ChildMutation($t10, 3, $Dereference($t10)->$supply); + + // trace_local[maybe_supply]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:13+12 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t12); + assume {:print "$track_local(46,43,1):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t13 := read_ref($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:29+12 + assume {:print "$at(31,54826,54838)"} true; + $t13 := $Dereference($t12); + + // $t14 := opaque begin: option::is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t13)); + + // $t14 := opaque end: option::is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + + // if ($t14) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + if ($t14) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:45+12 + assume {:print "$at(31,54887,54899)"} true; +L3: + + // $t15 := option::borrow_mut($t12) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:26+32 + assume {:print "$at(31,54868,54900)"} true; + call $t15,$t12 := $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t12); + if ($abort_flag) { + assume {:print "$at(31,54868,54900)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // trace_local[supply]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:17+6 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t15); + assume {:print "$track_local(46,43,2):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assume Implies(optional_aggregator::$is_parallelizable(Freeze(false)($t15)), Le(Add(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t15))), $t0), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t15))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1305:17+263 + assume {:print "$at(31,55050,55313)"} true; + assume ($1_optional_aggregator_$is_parallelizable($Dereference($t15)) ==> (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t15)->$aggregator)) + $t0) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t15)->$aggregator)))); + + // assume Implies(Not(optional_aggregator::$is_parallelizable(Freeze(false)($t15))), Le(Add(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t15))), $t0), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t15))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1309:17+167 + assume {:print "$at(31,55330,55497)"} true; + assume (!$1_optional_aggregator_$is_parallelizable($Dereference($t15)) ==> (($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t15)->$integer)->$value + $t0) <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t15)->$integer)->$limit)); + + // $t16 := (u128)($t0) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:46+16 + assume {:print "$at(31,55558,55574)"} true; + call $t16 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(31,55558,55574)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // optional_aggregator::add($t15, $t16) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + call $t15 := $1_optional_aggregator_add($t15, $t16); + if ($abort_flag) { + assume {:print "$at(31,55525,55575)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // write_back[Reference($t12).vec (vector)/[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + $t12 := $UpdateMutation($t12, (var $$sel0 := $Dereference($t12)->$vec; $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec($Dereference($t12), UpdateVec($$sel0, ReadVec($t15->p, LenVec($t12->p) + 1), $Dereference($t15))))); + + // write_back[Reference($t10).supply (option::Option)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + $t10 := $UpdateMutation($t10, $Update'$1_coin_CoinInfo'#0''_supply($Dereference($t10), $Dereference($t12))); + + // pack_ref_deep($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + + // write_back[coin::CoinInfo<#0>@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:63+1 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + assume {:print "$at(31,54806,55586)"} true; +L2: + + // pack_ref_deep($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + assume {:print "$at(31,54806,55586)"} true; + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1314:9+81 + assume {:print "$at(31,55596,55677)"} true; +L4: + + // assume Identical($t17, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + assume {:print "$at(31,55615,55667)"} true; + assume ($t17 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t0))); + + // assume Identical($t18, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + assume ($t18 == 0); + + // $t19 := borrow_global>($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t18)); + } + + // write_ref($t19, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + $t19 := $UpdateMutation($t19, $t17); + + // write_back[coin::Ghost$supply<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t20 := pack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + assume {:print "$at(31,55687,55719)"} true; + $t20 := $1_coin_Coin'#0'($t0); + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + assume {:print "$track_return(46,43,0):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + $t8 := $t20; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 + assume {:print "$at(31,55724,55725)"} true; +L5: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 + assume {:print "$at(31,55724,55725)"} true; + $ret0 := $t8; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 +L6: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 + assume {:print "$at(31,55724,55725)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun coin::mint_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1222 +procedure {:timeLimit 80} $1_coin_mint_internal$verify(_$t0: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t2: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: $1_coin_Coin'#0'; + var $t8: $1_coin_Coin'#0'; + var $t9: int; + var $t10: $Mutation ($1_coin_CoinInfo'#0'); + var $t11: int; + var $t12: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t13: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t14: bool; + var $t15: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t16: int; + var $t17: $1_coin_Ghost$supply'#0'; + var $t18: int; + var $t19: $Mutation ($1_coin_Ghost$supply'#0'); + var $t20: $1_coin_Coin'#0'; + var $t0: int; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'u64': int; + var $1_coin_CoinInfo'#0'_$memory#183: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#184: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#185: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#186: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#187: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#188: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume {:print "$at(31,54503,54504)"} true; + assume $IsValid'u64'($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:108:9+58 + assume {:print "$at(32,6091,6149)"} true; + assume ($t3 == $1_type_info_$type_of'#0'()->$account_address); + + // assume CanModify>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:109:9+42 + assume {:print "$at(32,6158,6200)"} true; + assume $1_coin_CoinInfo'#0'_$modifies[$t3]; + + // @183 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:109:9+42 + $1_coin_CoinInfo'#0'_$memory#183 := $1_coin_CoinInfo'#0'_$memory; + + // @184 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:109:9+42 + $1_coin_Ghost$supply'#0'_$memory#184 := $1_coin_Ghost$supply'#0'_$memory; + + // @185 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:109:9+42 + $1_coin_Ghost$aggregate_supply'#0'_$memory#185 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1292:5+1 + assume {:print "$at(31,54503,54504)"} true; + assume {:print "$track_local(46,43,0):", $t0} $t0 == $t0; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:23+1 + assume {:print "$at(31,54602,54603)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := ==($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:20+2 + $t5 := $IsEqual'u64'($t0, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1293:9+103 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1295:24+1 + assume {:print "$at(31,54666,54667)"} true; +L1: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1295:24+1 + assume {:print "$at(31,54666,54667)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := pack coin::Coin<#0>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:20+55 + assume {:print "$at(31,54626,54681)"} true; + $t7 := $1_coin_Coin'#0'($t6); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + assume {:print "$track_return(46,43,0):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + $t8 := $t7; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1294:13+62 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume {:print "$at(31,54764,54788)"} true; +L0: + + // $t9 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume {:print "$at(31,54764,54788)"} true; + + // @188 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_CoinInfo'#0'_$memory#188 := $1_coin_CoinInfo'#0'_$memory; + + // @186 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_Ghost$supply'#0'_$memory#186 := $1_coin_Ghost$supply'#0'_$memory; + + // @187 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#187 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume $IsValid'address'($t9); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@186]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@187]>(0x0))), select coin::CoinInfo.supply>(global[@188]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#186, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#187, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#188, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t9, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + assume $IsEqual'address'($t9, $1_type_info_$type_of'#0'()->$account_address); + + // $t9 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:71+24 + + // assert CanModify>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:33+17 + assert {:msg "assert_failed(31,54726,54743): caller does not have permission to modify `coin::CoinInfo<#0>` at given address"} + $1_coin_CoinInfo'#0'_$modifies[$t9]; + + // $t10 := borrow_global>($t9) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:33+17 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(31,54726,54743)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // $t12 := borrow_field>.supply($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:28+75 + $t12 := $ChildMutation($t10, 3, $Dereference($t10)->$supply); + + // trace_local[maybe_supply]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1299:13+12 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t12); + assume {:print "$track_local(46,43,1):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t13 := read_ref($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:29+12 + assume {:print "$at(31,54826,54838)"} true; + $t13 := $Dereference($t12); + + // $t14 := opaque begin: option::is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t13)); + + // $t14 := opaque end: option::is_some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:13+29 + + // if ($t14) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + if ($t14) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:45+12 + assume {:print "$at(31,54887,54899)"} true; +L3: + + // $t15 := option::borrow_mut($t12) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:26+32 + assume {:print "$at(31,54868,54900)"} true; + call $t15,$t12 := $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t12); + if ($abort_flag) { + assume {:print "$at(31,54868,54900)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // trace_local[supply]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1301:17+6 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t15); + assume {:print "$track_local(46,43,2):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // assume Implies(optional_aggregator::$is_parallelizable(Freeze(false)($t15)), Le(Add(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t15))), $t0), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t15))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1305:17+263 + assume {:print "$at(31,55050,55313)"} true; + assume ($1_optional_aggregator_$is_parallelizable($Dereference($t15)) ==> (($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t15)->$aggregator)) + $t0) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($Dereference($t15)->$aggregator)))); + + // assume Implies(Not(optional_aggregator::$is_parallelizable(Freeze(false)($t15))), Le(Add(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t15))), $t0), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t15))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1309:17+167 + assume {:print "$at(31,55330,55497)"} true; + assume (!$1_optional_aggregator_$is_parallelizable($Dereference($t15)) ==> (($1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t15)->$integer)->$value + $t0) <= $1_option_$borrow'$1_optional_aggregator_Integer'($Dereference($t15)->$integer)->$limit)); + + // $t16 := (u128)($t0) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:46+16 + assume {:print "$at(31,55558,55574)"} true; + call $t16 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(31,55558,55574)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // optional_aggregator::add($t15, $t16) on_abort goto L6 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + call $t15 := $1_optional_aggregator_add($t15, $t16); + if ($abort_flag) { + assume {:print "$at(31,55525,55575)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(46,43):", $t11} $t11 == $t11; + goto L6; + } + + // write_back[Reference($t12).vec (vector)/[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + $t12 := $UpdateMutation($t12, (var $$sel0 := $Dereference($t12)->$vec; $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec($Dereference($t12), UpdateVec($$sel0, ReadVec($t15->p, LenVec($t12->p) + 1), $Dereference($t15))))); + + // write_back[Reference($t10).supply (option::Option)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + $t10 := $UpdateMutation($t10, $Update'$1_coin_CoinInfo'#0''_supply($Dereference($t10), $Dereference($t12))); + + // assert Le(Len(select option::Option.vec(select coin::CoinInfo.supply($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$supply->$vec) <= 1); + + // assert forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec(select coin::CoinInfo.supply($t10)): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + (var $range_0 := $Dereference($t10)->$supply->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))); + + // write_back[coin::CoinInfo<#0>@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:13+50 + assume {:print "$at(31,55525,55575)"} true; + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1312:63+1 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + assume {:print "$at(31,54806,55586)"} true; +L2: + + // assert Le(Len(select option::Option.vec(select coin::CoinInfo.supply($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$supply->$vec) <= 1); + + // assert forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec(select coin::CoinInfo.supply($t10)): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + (var $range_0 := $Dereference($t10)->$supply->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))); + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1300:9+780 + assume {:print "$at(31,54806,55586)"} true; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1314:9+81 + assume {:print "$at(31,55596,55677)"} true; +L4: + + // assume Identical($t17, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + assume {:print "$at(31,55615,55667)"} true; + assume ($t17 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t0))); + + // assume Identical($t18, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + assume ($t18 == 0); + + // $t19 := borrow_global>($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t18)); + } + + // write_ref($t19, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + $t19 := $UpdateMutation($t19, $t17); + + // write_back[coin::Ghost$supply<#0>@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1315:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t20 := pack coin::Coin<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + assume {:print "$at(31,55687,55719)"} true; + $t20 := $1_coin_Coin'#0'($t0); + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + assume {:print "$track_return(46,43,0):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1317:9+32 + $t8 := $t20; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 + assume {:print "$at(31,55724,55725)"} true; +L5: + + // assert Not(And(Neq($t0, 0), Not(exists[@183]>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:110:9+61 + assume {:print "$at(32,6209,6270)"} true; + assert {:msg "assert_failed(32,6209,6270): function does not abort under this condition"} + !(!$IsEqual'u64'($t0, 0) && !$ResourceExists($1_coin_CoinInfo'#0'_$memory#183, $t3)); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@184]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@185]>(0x0))), select coin::CoinInfo.supply>(global[@183]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#184, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#185, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#183, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(select coin::Ghost$supply.v<#0>(global>(0x0)), Add(select coin::Ghost$supply.v<#0>(global[@184]>(0x0)), $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:111:9+59 + assume {:print "$at(32,6279,6338)"} true; + assert {:msg "assert_failed(32,6279,6338): post-condition does not hold"} + $IsEqual'num'($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v, ($ResourceValue($1_coin_Ghost$supply'#0'_$memory#184, 0)->$v + $t0)); + + // assert Eq(select coin::Coin.value>($t8), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:112:9+31 + assume {:print "$at(32,6347,6378)"} true; + assert {:msg "assert_failed(32,6347,6378): post-condition does not hold"} + $IsEqual'u64'($t8->$value, $t0); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:112:9+31 + $ret0 := $t8; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1318:5+1 + assume {:print "$at(31,55724,55725)"} true; +L6: + + // assert And(Neq($t0, 0), Not(exists[@183]>($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:107:5+322 + assume {:print "$at(32,6062,6384)"} true; + assert {:msg "assert_failed(32,6062,6384): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'u64'($t0, 0) && !$ResourceExists($1_coin_CoinInfo'#0'_$memory#183, $t3)); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:107:5+322 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun coin::withdraw<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1212:5+2133 +procedure {:inline 1} $1_coin_withdraw'#0'(_$t0: $signer, _$t1: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t2: $1_string_String; + var $t3: int; + var $t4: int; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $1_coin_Coin'#0'; + var $t8: $1_string_String; + var $t9: int; + var $t10: int; + var $t11: $1_string_String; + var $t12: $1_string_String; + var $t13: $1_string_String; + var $t14: bool; + var $t15: $1_string_String; + var $t16: $1_string_String; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $Mutation ($1_coin_CoinStore'#0'); + var $t23: $1_fungible_asset_FungibleAsset; + var $t24: int; + var $t25: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t26: int; + var $t27: $1_coin_Coin'#0'; + var $t28: int; + var $t29: $1_coin_CoinStore'#0'; + var $t30: int; + var $t31: int; + var $t32: $1_coin_CoinStore'#0'; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t38: bool; + var $t39: $1_coin_CoinStore'#0'; + var $t40: $1_coin_Coin'#0'; + var $t41: int; + var $t42: Vec (int); + var $t43: $1_string_String; + var $t44: bool; + var $t45: Vec (int); + var $t46: $1_string_String; + var $t47: int; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t51: bool; + var $t52: $1_object_Object'$1_fungible_asset_Metadata'; + var $t53: bool; + var $t54: bool; + var $t55: Vec (int); + var $t56: $1_string_String; + var $t57: int; + var $t58: int; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: Vec (int); + var $t62: $1_string_String; + var $t63: Vec (int); + var $t64: $1_string_String; + var $t65: int; + var $t66: bool; + var $t67: $Mutation ($1_coin_CoinStore'#0'); + var $t68: bool; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: bool; + var $t73: $1_string_String; + var $t74: $1_coin_CoinWithdraw; + var $t75: $Mutation ($1_event_EventHandle'$1_coin_WithdrawEvent'); + var $t76: $1_coin_WithdrawEvent; + var $t77: $Mutation ($1_coin_Coin'#0'); + var $t78: int; + var $t79: bool; + var $t80: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t81: $1_object_Object'$1_fungible_asset_Metadata'; + var $t82: bool; + var $t83: $1_fungible_asset_FungibleAsset; + var $t84: $Mutation ($1_coin_Coin'#0'); + var $t85: $1_coin_Coin'#0'; + var $t86: Vec (int); + var $t87: $1_string_String; + var $t88: $1_coin_Coin'#0'; + var $t89: int; + var $t90: $1_coin_Coin'#0'; + var $t0: $signer; + var $t1: int; + var $1_coin_CoinStore'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_coin_CoinStore'#0'': $1_coin_CoinStore'#0'; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + 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($t28, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:562:9+47 + assume {:print "$at(32,24737,24784)"} true; + assume ($t28 == $1_signer_$address_of($t0)); + + // assume Identical($t29, global>($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:563:9+59 + assume {:print "$at(32,24793,24852)"} true; + assume ($t29 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t28)); + + // assume Identical($t30, select coin::Coin.value>(select coin::CoinStore.coin>($t29))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:564:9+36 + assume {:print "$at(32,24861,24897)"} true; + assume ($t30 == $t29->$coin->$value); + + // assume Identical($t31, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:572:9+47 + assume {:print "$at(32,25194,25241)"} true; + assume ($t31 == $1_signer_$address_of($t0)); + + // assume Identical($t32, global>($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:573:9+59 + assume {:print "$at(32,25250,25309)"} true; + assume ($t32 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t31)); + + // assume Identical($t33, select coin::Coin.value>(select coin::CoinStore.coin>($t32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:574:9+36 + assume {:print "$at(32,25318,25354)"} true; + assume ($t33 == $t32->$coin->$value); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1212:5+1 + assume {:print "$at(31,51494,51495)"} true; + assume {:print "$track_local(46,60,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1212:5+1 + assume {:print "$track_local(46,60,1):", $t1} $t1 == $t1; + + // $t34 := signer::address_of($t0) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1216:28+27 + assume {:print "$at(31,51687,51714)"} true; + call $t34 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,51687,51714)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_local[account_addr]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1216:13+12 + assume {:print "$track_local(46,60,17):", $t34} $t34 == $t34; + + // $t36 := [99, 111, 105, 110, 58, 58, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1218:41+27 + assume {:print "$at(31,51757,51784)"} true; + $t36 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1218:23+46 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(31,51739,51785)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t37) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1218:9+61 + call $1_debug_print'$1_string_String'($t37); + if ($abort_flag) { + assume {:print "$at(31,51725,51786)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print
($t34) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1219:9+27 + assume {:print "$at(31,51796,51823)"} true; + call $1_debug_print'address'($t34); + if ($abort_flag) { + assume {:print "$at(31,51796,51823)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t1) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1220:9+21 + assume {:print "$at(31,51833,51854)"} true; + call $1_debug_print'u64'($t1); + if ($abort_flag) { + assume {:print "$at(31,51833,51854)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_local[amount#65]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:654:9+6 + assume {:print "$at(31,27854,27860)"} true; + assume {:print "$track_local(46,60,19):", $t1} $t1 == $t1; + + // trace_local[account_addr#64]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:653:9+12 + assume {:print "$at(31,27823,27835)"} true; + assume {:print "$track_local(46,60,18):", $t34} $t34 == $t34; + + // trace_local[owner#68]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:776:39+5 + assume {:print "$at(31,33457,33462)"} true; + assume {:print "$track_local(46,60,26):", $t34} $t34 == $t34; + + // $t38 := exists>($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:13+6 + assume {:print "$at(31,33492,33498)"} true; + $t38 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t34); + + // if ($t38) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + if ($t38) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:48+5 + assume {:print "$at(31,33577,33582)"} true; +L1: + + // $t39 := get_global>($t34) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+13 + assume {:print "$at(31,33542,33555)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t34)) { + call $ExecFailureAbort(); + } else { + $t39 := $ResourceValue($1_coin_CoinStore'#0'_$memory, $t34); + } + if ($abort_flag) { + assume {:print "$at(31,33542,33555)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t40 := get_field>.coin($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+46 + $t40 := $t39->$coin; + + // $t10 := get_field>.value($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:778:13+52 + $t10 := $t40->$value; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + assume {:print "$at(31,33488,33635)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:780:13+1 + assume {:print "$at(31,33624,33625)"} true; +L0: + + // $t41 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:780:13+1 + assume {:print "$at(31,33624,33625)"} true; + $t41 := 0; + assume $IsValid'u64'($t41); + + // $t10 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 + assume {:print "$at(31,33488,33635)"} true; + $t10 := $t41; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:777:9+147 +L2: + + // trace_local[coin_balance#66]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:656:13+12 + assume {:print "$at(31,27898,27910)"} true; + assume {:print "$track_local(46,60,21):", $t10} $t10 == $t10; + + // $t42 := [99, 111, 105, 110, 58, 58, 99, 97, 108, 99, 117, 108, 97, 116, 101, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100, 44, 32, 99, 111, 105, 110, 32, 98, 97, 108, 97, 110, 99, 101, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:657:41+63 + assume {:print "$at(31,27991,28054)"} true; + $t42 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 97)), MakeVec4(108, 99, 117, 108)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)), MakeVec4(44, 32, 99, 111)), MakeVec4(105, 110, 32, 98)), MakeVec4(97, 108, 97, 110)), MakeVec4(99, 101, 58, 32)); + assume $IsValid'vec'u8''($t42); + + // $t43 := string::utf8($t42) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:657:23+82 + call $t43 := $1_string_utf8($t42); + if ($abort_flag) { + assume {:print "$at(31,27973,28055)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t43) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:657:9+97 + call $1_debug_print'$1_string_String'($t43); + if ($abort_flag) { + assume {:print "$at(31,27959,28056)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t10) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:658:9+27 + assume {:print "$at(31,28066,28093)"} true; + call $1_debug_print'u64'($t10); + if ($abort_flag) { + assume {:print "$at(31,28066,28093)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print
($t34) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:659:9+27 + assume {:print "$at(31,28103,28130)"} true; + call $1_debug_print'address'($t34); + if ($abort_flag) { + assume {:print "$at(31,28103,28130)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t44 := >=($t10, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:26+2 + assume {:print "$at(31,28158,28160)"} true; + call $t44 := $Ge($t10, $t1); + + // if ($t44) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 + if ($t44) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:662:45+71 + assume {:print "$at(31,28215,28286)"} true; +L4: + + // $t45 := [99, 111, 105, 110, 58, 58, 99, 97, 108, 99, 117, 108, 97, 116, 101, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 69, 120, 105, 116, 101, 100, 32, 119, 105, 116, 104, 32, 101, 110, 111, 117, 103, 104, 32, 99, 111, 105, 110, 32, 98, 97, 108, 97, 110, 99, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:662:45+71 + assume {:print "$at(31,28215,28286)"} true; + $t45 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 97)), MakeVec4(108, 99, 117, 108)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 32)), MakeVec4(119, 105, 116, 104)), MakeVec4(32, 101, 110, 111)), MakeVec4(117, 103, 104, 32)), MakeVec4(99, 111, 105, 110)), MakeVec4(32, 98, 97, 108)), MakeVec4(97, 110, 99, 101)); + assume $IsValid'vec'u8''($t45); + + // $t46 := string::utf8($t45) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:662:27+90 + call $t46 := $1_string_utf8($t45); + if ($abort_flag) { + assume {:print "$at(31,28197,28287)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t46) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:662:13+105 + call $1_debug_print'$1_string_String'($t46); + if ($abort_flag) { + assume {:print "$at(31,28183,28288)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t47 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:663:22+1 + assume {:print "$at(31,28311,28312)"} true; + $t47 := 0; + assume $IsValid'u64'($t47); + + // $t4 := $t47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 + assume {:print "$at(31,28141,29120)"} true; + $t4 := $t47; + + // $t3 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 + $t3 := $t1; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:665:45+68 + assume {:print "$at(31,28375,28443)"} true; +L3: + + // $t48 := [99, 111, 105, 110, 58, 58, 99, 97, 108, 99, 117, 108, 97, 116, 101, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 119, 105, 116, 104, 100, 114, 97, 119, 32, 102, 114, 111, 109, 32, 102, 117, 110, 103, 105, 98, 108, 101, 32, 97, 115, 115, 101, 116] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:665:45+68 + assume {:print "$at(31,28375,28443)"} true; + $t48 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 97)), MakeVec4(108, 99, 117, 108)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 119, 105, 116)), MakeVec4(104, 100, 114, 97)), MakeVec4(119, 32, 102, 114)), MakeVec4(111, 109, 32, 102)), MakeVec4(117, 110, 103, 105)), MakeVec4(98, 108, 101, 32)), MakeVec4(97, 115, 115, 101)), MakeVec1(116)); + assume $IsValid'vec'u8''($t48); + + // $t49 := string::utf8($t48) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:665:27+87 + call $t49 := $1_string_utf8($t48); + if ($abort_flag) { + assume {:print "$at(31,28357,28444)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t49) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:665:13+102 + call $1_debug_print'$1_string_String'($t49); + if ($abort_flag) { + assume {:print "$at(31,28343,28445)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t50 := coin::paired_metadata<#0>() on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:666:28+27 + assume {:print "$at(31,28474,28501)"} true; + call $t50 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,28474,28501)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_local[metadata#67]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:666:17+8 + assume {:print "$track_local(46,60,25):", $t50} $t50 == $t50; + + // $t51 := opaque begin: option::is_some>($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+26 + assume {:print "$at(31,28519,28545)"} true; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+26 + assume $IsValid'bool'($t51); + + // assume Eq($t51, option::spec_is_some>($t50)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+26 + assume $IsEqual'bool'($t51, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t50)); + + // $t51 := opaque end: option::is_some>($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+26 + + // if ($t51) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 + if ($t51) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:668:17+12 + assume {:print "$at(31,28611,28623)"} true; +L7: + + // $t52 := opaque begin: option::destroy_some>($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume {:print "$at(31,28641,28671)"} true; + + // assume Identical($t53, option::spec_is_none>($t50)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume ($t53 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t50)); + + // if ($t53) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + if ($t53) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 +L26: + + // assume And(option::spec_is_none>($t50), Eq(262145, $t35)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume {:print "$at(31,28641,28671)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t50) && $IsEqual'num'(262145, $t35)); + + // trace_abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume {:print "$at(31,28641,28671)"} true; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 +L25: + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume {:print "$at(31,28641,28671)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t52); + + // assume Eq>($t52, option::spec_borrow>($t50)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t52, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t50)); + + // $t52 := opaque end: option::destroy_some>($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:669:17+30 + + // $t14 := primary_fungible_store::primary_store_exists($t34, $t52) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:47+136 + assume {:print "$at(31,28549,28685)"} true; + call $t14 := $1_primary_fungible_store_primary_store_exists'$1_fungible_asset_Metadata'($t34, $t52); + if ($abort_flag) { + assume {:print "$at(31,28549,28685)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 +L6: + + // $t54 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 + assume {:print "$at(31,28519,28685)"} true; + $t54 := false; + assume $IsValid'bool'($t54); + + // $t14 := $t54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 + $t14 := $t54; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:17+166 +L8: + + // if ($t14) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:13+595 + assume {:print "$at(31,28515,29110)"} true; + if ($t14) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:13+595 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:667:13+595 + assume {:print "$at(31,28515,29110)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:674:31+108 + assume {:print "$at(31,28917,29025)"} true; +L9: + + // $t55 := [99, 111, 105, 110, 58, 58, 99, 97, 108, 99, 117, 108, 97, 116, 101, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 65, 98, 111, 114, 116, 32, 119, 105, 116, 104, 32, 112, 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 32, 99, 104, 101, 99, 107, 32, 110, 111, 116, 32, 118, 97, 108, 105, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:674:49+89 + assume {:print "$at(31,28935,29024)"} true; + $t55 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 97)), MakeVec4(108, 99, 117, 108)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 65, 98, 111)), MakeVec4(114, 116, 32, 119)), MakeVec4(105, 116, 104, 32)), MakeVec4(112, 114, 105, 109)), MakeVec4(97, 114, 121, 95)), MakeVec4(102, 117, 110, 103)), MakeVec4(105, 98, 108, 101)), MakeVec4(95, 115, 116, 111)), MakeVec4(114, 101, 32, 99)), MakeVec4(104, 101, 99, 107)), MakeVec4(32, 110, 111, 116)), MakeVec4(32, 118, 97, 108)), MakeVec2(105, 100)); + assume $IsValid'vec'u8''($t55); + + // $t56 := string::utf8($t55) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:674:31+108 + call $t56 := $1_string_utf8($t55); + if ($abort_flag) { + assume {:print "$at(31,28917,29025)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t56) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:674:17+123 + call $1_debug_print'$1_string_String'($t56); + if ($abort_flag) { + assume {:print "$at(31,28903,29026)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t57 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:675:47+21 + assume {:print "$at(31,29074,29095)"} true; + $t57 := 6; + assume $IsValid'u64'($t57); + + // $t58 := error::invalid_argument($t57) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:675:23+46 + call $t58 := $1_error_invalid_argument($t57); + if ($abort_flag) { + assume {:print "$at(31,29050,29096)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_abort($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:675:17+52 + assume {:print "$at(31,29044,29096)"} true; + assume {:print "$track_abort(46,60):", $t58} $t58 == $t58; + + // $t35 := move($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:675:17+52 + $t35 := $t58; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:675:17+52 + goto L24; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:671:49+71 + assume {:print "$at(31,28737,28808)"} true; +L11: + + // $t59 := [99, 111, 105, 110, 58, 58, 99, 97, 108, 99, 117, 108, 97, 116, 101, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 69, 120, 105, 116, 101, 100, 32, 119, 105, 116, 104, 32, 101, 110, 111, 117, 103, 104, 32, 99, 111, 105, 110, 32, 98, 97, 108, 97, 110, 99, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:671:49+71 + assume {:print "$at(31,28737,28808)"} true; + $t59 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 97)), MakeVec4(108, 99, 117, 108)), MakeVec4(97, 116, 101, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 32)), MakeVec4(119, 105, 116, 104)), MakeVec4(32, 101, 110, 111)), MakeVec4(117, 103, 104, 32)), MakeVec4(99, 111, 105, 110)), MakeVec4(32, 98, 97, 108)), MakeVec4(97, 110, 99, 101)); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:671:31+90 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(31,28719,28809)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t60) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:671:17+105 + call $1_debug_print'$1_string_String'($t60); + if ($abort_flag) { + assume {:print "$at(31,28705,28810)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t4 := -($t1, $t10) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:672:39+1 + assume {:print "$at(31,28850,28851)"} true; + call $t4 := $Sub($t1, $t10); + if ($abort_flag) { + assume {:print "$at(31,28850,28851)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t3 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 + assume {:print "$at(31,28141,29120)"} true; + $t3 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:661:9+979 +L5: + + // trace_local[fa_amount_to_withdraw]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1222:39+21 + assume {:print "$at(31,51895,51916)"} true; + assume {:print "$track_local(46,60,24):", $t4} $t4 == $t4; + + // trace_local[coin_amount_to_withdraw]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1222:14+23 + assume {:print "$track_local(46,60,20):", $t3} $t3 == $t3; + + // $t61 := [99, 111, 105, 110, 58, 58, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 99, 111, 105, 110, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1227:41+43 + assume {:print "$at(31,52057,52100)"} true; + $t61 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 99, 111, 105)), MakeVec4(110, 95, 97, 109)), MakeVec4(111, 117, 110, 116)), MakeVec4(95, 116, 111, 95)), MakeVec4(119, 105, 116, 104)), MakeVec4(100, 114, 97, 119)); + assume $IsValid'vec'u8''($t61); + + // $t62 := string::utf8($t61) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1227:23+62 + call $t62 := $1_string_utf8($t61); + if ($abort_flag) { + assume {:print "$at(31,52039,52101)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t62) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1227:9+77 + call $1_debug_print'$1_string_String'($t62); + if ($abort_flag) { + assume {:print "$at(31,52025,52102)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t3) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1228:9+38 + assume {:print "$at(31,52112,52150)"} true; + call $1_debug_print'u64'($t3); + if ($abort_flag) { + assume {:print "$at(31,52112,52150)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t63 := [99, 111, 105, 110, 58, 58, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 102, 97, 95, 97, 109, 111, 117, 110, 116, 95, 116, 111, 95, 119, 105, 116, 104, 100, 114, 97, 119] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1229:41+41 + assume {:print "$at(31,52192,52233)"} true; + $t63 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 102, 97, 95)), MakeVec4(97, 109, 111, 117)), MakeVec4(110, 116, 95, 116)), MakeVec4(111, 95, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec2(97, 119)); + assume $IsValid'vec'u8''($t63); + + // $t64 := string::utf8($t63) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1229:23+60 + call $t64 := $1_string_utf8($t63); + if ($abort_flag) { + assume {:print "$at(31,52174,52234)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t64) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1229:9+75 + call $1_debug_print'$1_string_String'($t64); + if ($abort_flag) { + assume {:print "$at(31,52160,52235)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t4) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1230:9+36 + assume {:print "$at(31,52245,52281)"} true; + call $1_debug_print'u64'($t4); + if ($abort_flag) { + assume {:print "$at(31,52245,52281)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t65 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:60+1 + assume {:print "$at(31,52343,52344)"} true; + $t65 := 0; + assume $IsValid'u64'($t65); + + // $t66 := >($t3, $t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:58+1 + call $t66 := $Gt($t3, $t65); + + // if ($t66) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:30+830 + if ($t66) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1233:69+12 + assume {:print "$at(31,52416,52428)"} true; +L13: + + // $t67 := borrow_global>($t34) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1233:30+17 + assume {:print "$at(31,52377,52394)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t34)) { + call $ExecFailureAbort(); + } else { + $t67 := $Mutation($Global($t34), EmptyVec(), $ResourceValue($1_coin_CoinStore'#0'_$memory, $t34)); + } + if ($abort_flag) { + assume {:print "$at(31,52377,52394)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_local[coin_store]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1233:17+10 + $temp_0'$1_coin_CoinStore'#0'' := $Dereference($t67); + assume {:print "$track_local(46,60,22):", $temp_0'$1_coin_CoinStore'#0''} $temp_0'$1_coin_CoinStore'#0'' == $temp_0'$1_coin_CoinStore'#0''; + + // $t68 := get_field>.frozen($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1235:18+17 + assume {:print "$at(31,52469,52486)"} true; + $t68 := $Dereference($t67)->$frozen; + + // $t69 := !($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1235:17+1 + call $t69 := $Not($t68); + + // if ($t69) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + assume {:print "$at(31,52443,52552)"} true; + if ($t69) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + assume {:print "$at(31,52443,52552)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 +L14: + + // drop($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + assume {:print "$at(31,52443,52552)"} true; + + // $t70 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1236:42+7 + assume {:print "$at(31,52529,52536)"} true; + $t70 := 10; + assume $IsValid'u64'($t70); + + // $t71 := error::permission_denied($t70) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1236:17+33 + call $t71 := $1_error_permission_denied($t70); + if ($abort_flag) { + assume {:print "$at(31,52504,52537)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_abort($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + assume {:print "$at(31,52443,52552)"} true; + assume {:print "$track_abort(46,60):", $t71} $t71 == $t71; + + // $t35 := move($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + $t35 := $t71; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1234:13+109 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1238:17+47 + assume {:print "$at(31,52570,52617)"} true; +L16: + + // $t72 := features::module_event_migration_enabled() on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1238:17+47 + assume {:print "$at(31,52570,52617)"} true; + call $t72 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(31,52570,52617)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // if ($t72) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1238:13+286 + if ($t72) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1241:36+21 + assume {:print "$at(31,52720,52741)"} true; +L18: + + // $t73 := type_info::type_name<#0>() on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1241:36+21 + assume {:print "$at(31,52720,52741)"} true; + call $t73 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,52720,52741)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t74 := pack coin::CoinWithdraw($t73, $t34, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1240:21+149 + assume {:print "$at(31,52670,52819)"} true; + $t74 := $1_coin_CoinWithdraw($t73, $t34, $t3); + + // opaque begin: event::emit($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1239:17+200 + assume {:print "$at(31,52637,52837)"} true; + + // opaque end: event::emit($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1239:17+200 + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1246:22+10 + assume {:print "$at(31,52921,52931)"} true; +L17: + + // $t75 := borrow_field>.withdraw_events($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1246:17+31 + assume {:print "$at(31,52916,52947)"} true; + $t75 := $ChildMutation($t67, 3, $Dereference($t67)->$withdraw_events); + + // $t76 := pack coin::WithdrawEvent($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1247:17+49 + assume {:print "$at(31,52965,53014)"} true; + $t76 := $1_coin_WithdrawEvent($t3); + + // opaque begin: event::emit_event($t75, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1245:13+163 + assume {:print "$at(31,52866,53029)"} true; + + // opaque end: event::emit_event($t75, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1245:13+163 + + // write_back[Reference($t67).withdraw_events (event::EventHandle)]($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1245:13+163 + $t67 := $UpdateMutation($t67, $Update'$1_coin_CoinStore'#0''_withdraw_events($Dereference($t67), $Dereference($t75))); + + // $t77 := borrow_field>.coin($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1249:21+20 + assume {:print "$at(31,53051,53071)"} true; + $t77 := $ChildMutation($t67, 0, $Dereference($t67)->$coin); + + // $t7 := coin::extract<#0>($t77, $t3) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1249:13+54 + call $t7,$t77 := $1_coin_extract'#0'($t77, $t3); + if ($abort_flag) { + assume {:print "$at(31,53043,53097)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // write_back[Reference($t67).coin (coin::Coin<#0>)]($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1249:13+54 + $t67 := $UpdateMutation($t67, $Update'$1_coin_CoinStore'#0''_coin($Dereference($t67), $Dereference($t77))); + + // write_back[coin::CoinStore<#0>@]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1249:13+54 + $1_coin_CoinStore'#0'_$memory := $ResourceUpdate($1_coin_CoinStore'#0'_$memory, $GlobalLocationAddress($t67), + $Dereference($t67)); + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:30+830 + assume {:print "$at(31,52313,53143)"} true; + goto L19; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1251:13+6 + assume {:print "$at(31,53127,53133)"} true; +L12: + + // $t7 := coin::zero<#0>() on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1251:13+6 + assume {:print "$at(31,53127,53133)"} true; + call $t7 := $1_coin_zero'#0'(); + if ($abort_flag) { + assume {:print "$at(31,53127,53133)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:30+830 + assume {:print "$at(31,52313,53143)"} true; +L19: + + // $t27 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:13+14 + assume {:print "$at(31,52296,52310)"} true; + $t27 := $t7; + + // trace_local[withdrawn_coin]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1232:13+14 + assume {:print "$track_local(46,60,27):", $t27} $t27 == $t27; + + // $t78 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1253:37+1 + assume {:print "$at(31,53181,53182)"} true; + $t78 := 0; + assume $IsValid'u64'($t78); + + // $t79 := >($t4, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1253:35+1 + call $t79 := $Gt($t4, $t78); + + // if ($t79) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1253:9+310 + if ($t79) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1255:17+7 + assume {:print "$at(31,53257,53264)"} true; +L21: + + // $t80 := coin::paired_metadata<#0>() on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:38+27 + assume {:print "$at(31,53303,53330)"} true; + call $t80 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,53303,53330)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t81 := opaque begin: option::destroy_some>($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + + // assume Identical($t82, option::spec_is_none>($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + assume ($t82 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t80)); + + // if ($t82) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + if ($t82) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 +L28: + + // assume And(option::spec_is_none>($t80), Eq(262145, $t35)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + assume {:print "$at(31,53282,53331)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t80) && $IsEqual'num'(262145, $t35)); + + // trace_abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + assume {:print "$at(31,53282,53331)"} true; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 +L27: + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + assume {:print "$at(31,53282,53331)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t81); + + // assume Eq>($t81, option::spec_borrow>($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t81, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t80)); + + // $t81 := opaque end: option::destroy_some>($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1256:17+49 + + // $t83 := primary_fungible_store::withdraw($t0, $t81, $t4) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1254:22+177 + assume {:print "$at(31,53207,53384)"} true; + call $t83 := $1_primary_fungible_store_withdraw'$1_fungible_asset_Metadata'($t0, $t81, $t4); + if ($abort_flag) { + assume {:print "$at(31,53207,53384)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // trace_local[fa]($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1254:17+2 + assume {:print "$track_local(46,60,23):", $t83} $t83 == $t83; + + // $t84 := borrow_local($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:19+19 + assume {:print "$at(31,53404,53423)"} true; + $t84 := $Mutation($Local(27), EmptyVec(), $t27); + + // $t85 := coin::fungible_asset_to_coin<#0>($t83) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:40+26 + call $t85 := $1_coin_fungible_asset_to_coin'#0'($t83); + if ($abort_flag) { + assume {:print "$at(31,53425,53451)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // coin::merge<#0>($t84, $t85) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:13+54 + call $t84 := $1_coin_merge'#0'($t84, $t85); + if ($abort_flag) { + assume {:print "$at(31,53398,53452)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // write_back[LocalRoot($t27)@]($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:13+54 + $t27 := $Dereference($t84); + + // trace_local[withdrawn_coin]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:13+54 + assume {:print "$track_local(46,60,27):", $t27} $t27 == $t27; + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1259:67+1 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1253:9+310 + assume {:print "$at(31,53153,53463)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1261:41+42 + assume {:print "$at(31,53505,53547)"} true; +L22: + + // $t86 := [99, 111, 105, 110, 58, 58, 119, 105, 116, 104, 100, 114, 97, 119, 32, 124, 32, 69, 120, 105, 116, 44, 32, 119, 105, 116, 104, 100, 114, 97, 119, 32, 97, 109, 111, 117, 110, 116, 58] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1261:41+42 + assume {:print "$at(31,53505,53547)"} true; + $t86 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 119, 105)), MakeVec4(116, 104, 100, 114)), MakeVec4(97, 119, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 44, 32, 119)), MakeVec4(105, 116, 104, 100)), MakeVec4(114, 97, 119, 32)), MakeVec4(97, 109, 111, 117)), MakeVec3(110, 116, 58)); + assume $IsValid'vec'u8''($t86); + + // $t87 := string::utf8($t86) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1261:23+61 + call $t87 := $1_string_utf8($t86); + if ($abort_flag) { + assume {:print "$at(31,53487,53548)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t87) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1261:9+76 + call $1_debug_print'$1_string_String'($t87); + if ($abort_flag) { + assume {:print "$at(31,53473,53549)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t88 := copy($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1262:29+15 + assume {:print "$at(31,53579,53594)"} true; + $t88 := $t27; + + // $t89 := coin::value<#0>($t88) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1262:23+22 + call $t89 := $1_coin_value'#0'($t88); + if ($abort_flag) { + assume {:print "$at(31,53573,53595)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // debug::print($t89) on_abort goto L24 with $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1262:9+37 + call $1_debug_print'u64'($t89); + if ($abort_flag) { + assume {:print "$at(31,53559,53596)"} true; + $t35 := $abort_code; + assume {:print "$track_abort(46,60):", $t35} $t35 == $t35; + goto L24; + } + + // $t90 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1264:9+14 + assume {:print "$at(31,53607,53621)"} true; + $t90 := $t27; + + // trace_return[0]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1264:9+14 + assume {:print "$track_return(46,60,0):", $t90} $t90 == $t90; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1265:5+1 + assume {:print "$at(31,53626,53627)"} true; +L23: + + // return $t90 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1265:5+1 + assume {:print "$at(31,53626,53627)"} true; + $ret0 := $t90; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1265:5+1 +L24: + + // abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1265:5+1 + assume {:print "$at(31,53626,53627)"} true; + $abort_code := $t35; + $abort_flag := true; + return; + +} + +// fun coin::zero [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+193 +procedure {:inline 1} $1_coin_zero'$1_starcoin_coin_STC'() returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC') +{ + // declare local variables + var $t0: $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $t1: int; + var $t2: $Mutation ($1_coin_Ghost$supply'$1_starcoin_coin_STC'); + var $t3: int; + var $t4: $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + + // bytecode translation starts here + // assume Identical($t0, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume {:print "$at(31,53765,53812)"} true; + assume ($t0 == $1_coin_Ghost$supply'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + 0))); + + // assume Identical($t1, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume ($t1 == 0); + + // $t2 := borrow_global>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + if (!$ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $t1)); + } + + // write_ref($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $t2 := $UpdateMutation($t2, $t0); + + // write_back[coin::Ghost$supply<#0>@]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t2), + $Dereference($t2)); + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1273:20+1 + assume {:print "$at(31,53868,53869)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := pack coin::Coin<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$at(31,53832,53879)"} true; + $t4 := $1_coin_Coin'$1_starcoin_coin_STC'($t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$track_return(46,61,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1275:5+1 + assume {:print "$at(31,53884,53885)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1275:5+1 + assume {:print "$at(31,53884,53885)"} true; + $ret0 := $t4; + return; + +} + +// fun coin::zero<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+193 +procedure {:inline 1} $1_coin_zero'#0'() returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t0: $1_coin_Ghost$supply'#0'; + var $t1: int; + var $t2: $Mutation ($1_coin_Ghost$supply'#0'); + var $t3: int; + var $t4: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + + // bytecode translation starts here + // assume Identical($t0, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume {:print "$at(31,53765,53812)"} true; + assume ($t0 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + 0))); + + // assume Identical($t1, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume ($t1 == 0); + + // $t2 := borrow_global>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t1)); + } + + // write_ref($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $t2 := $UpdateMutation($t2, $t0); + + // write_back[coin::Ghost$supply<#0>@]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t2), + $Dereference($t2)); + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1273:20+1 + assume {:print "$at(31,53868,53869)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := pack coin::Coin<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$at(31,53832,53879)"} true; + $t4 := $1_coin_Coin'#0'($t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$track_return(46,61,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1275:5+1 + assume {:print "$at(31,53884,53885)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1275:5+1 + assume {:print "$at(31,53884,53885)"} true; + $ret0 := $t4; + return; + +} + +// fun coin::zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+193 +procedure {:timeLimit 80} $1_coin_zero$verify() returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t0: $1_coin_Ghost$supply'#0'; + var $t1: int; + var $t2: $Mutation ($1_coin_Ghost$supply'#0'); + var $t3: int; + var $t4: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $1_coin_Ghost$supply'#0'_$memory#201: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#202: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#203: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + assume {:print "$at(31,53692,53693)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @203 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + $1_coin_CoinInfo'#0'_$memory#203 := $1_coin_CoinInfo'#0'_$memory; + + // @201 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + $1_coin_Ghost$supply'#0'_$memory#201 := $1_coin_Ghost$supply'#0'_$memory; + + // @202 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1268:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#202 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume Identical($t0, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume {:print "$at(31,53765,53812)"} true; + assume ($t0 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + 0))); + + // assume Identical($t1, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + assume ($t1 == 0); + + // $t2 := borrow_global>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t1)); + } + + // write_ref($t2, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $t2 := $UpdateMutation($t2, $t0); + + // write_back[coin::Ghost$supply<#0>@]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1270:13+47 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t2), + $Dereference($t2)); + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1273:20+1 + assume {:print "$at(31,53868,53869)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := pack coin::Coin<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$at(31,53832,53879)"} true; + $t4 := $1_coin_Coin'#0'($t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1272:9+47 + assume {:print "$track_return(46,61,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1275:5+1 + assume {:print "$at(31,53884,53885)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@201]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@202]>(0x0))), select coin::CoinInfo.supply>(global[@203]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#201, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#202, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#203, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + +} + +// fun coin::allow_supply_upgrades [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+317 +procedure {:timeLimit 80} $1_coin_allow_supply_upgrades$verify(_$t0: $signer, _$t1: bool) returns () +{ + // declare local variables + var $t2: $Mutation (bool); + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $Mutation ($1_coin_SupplyConfig); + var $t8: $Mutation (bool); + var $t9: $1_coin_SupplyConfig; + var $t0: $signer; + var $t1: bool; + var $1_coin_SupplyConfig_$modifies: [int]bool; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_coin_SupplyConfig_$memory#358: $Memory $1_coin_SupplyConfig; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+1 + assume {:print "$at(31,23948,23949)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+1 + assume $IsValid'bool'($t1); + + // assume forall $rsc: coin::SupplyConfig: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_SupplyConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_SupplyConfig_$memory, $a_0); + ($IsValid'$1_coin_SupplyConfig'($rsc)))); + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:135:9+59 + assume {:print "$at(32,7307,7366)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume CanModify(0x1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:134:9+51 + assume {:print "$at(32,7247,7298)"} true; + assume $1_coin_SupplyConfig_$modifies[1]; + + // @358 := save_mem(coin::SupplyConfig) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:134:9+51 + $1_coin_SupplyConfig_$memory#358 := $1_coin_SupplyConfig_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+1 + assume {:print "$at(31,23948,23949)"} true; + assume {:print "$track_local(46,0,0):", $t0} $t0 == $t0; + + // trace_local[allowed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:559:5+1 + assume {:print "$track_local(46,0,1):", $t1} $t1 == $t1; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + assume {:print "$at(31,24057,24120)"} true; + + // assume Identical($t4, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + assume ($t4 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + assume {:print "$at(31,24057,24120)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + assume {:print "$at(31,24057,24120)"} true; + assume {:print "$track_abort(46,0):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:560:9+63 + assume {:print "$at(31,24057,24120)"} true; + + // $t6 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:561:67+19 + assume {:print "$at(31,24188,24207)"} true; + $t6 := 1; + assume $IsValid'address'($t6); + + // assert CanModify($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:561:35+17 + assert {:msg "assert_failed(31,24156,24173): caller does not have permission to modify `coin::SupplyConfig` at given address"} + $1_coin_SupplyConfig_$modifies[$t6]; + + // $t7 := borrow_global($t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:561:35+17 + if (!$ResourceExists($1_coin_SupplyConfig_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_coin_SupplyConfig_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(31,24156,24173)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,0):", $t5} $t5 == $t5; + goto L2; + } + + // $t8 := borrow_field.allow_upgrades($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:561:30+72 + $t8 := $ChildMutation($t7, 0, $Dereference($t7)->$allow_upgrades); + + // trace_local[allow_upgrades]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:561:13+14 + $temp_0'bool' := $Dereference($t8); + assume {:print "$track_local(46,0,2):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // write_ref($t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:562:9+25 + assume {:print "$at(31,24233,24258)"} true; + $t8 := $UpdateMutation($t8, $t1); + + // write_back[Reference($t7).allow_upgrades (bool)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:562:9+25 + $t7 := $UpdateMutation($t7, $Update'$1_coin_SupplyConfig'_allow_upgrades($Dereference($t7), $Dereference($t8))); + + // write_back[coin::SupplyConfig@]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:562:9+25 + $1_coin_SupplyConfig_$memory := $ResourceUpdate($1_coin_SupplyConfig_$memory, $GlobalLocationAddress($t7), + $Dereference($t7)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:563:5+1 + assume {:print "$at(31,24264,24265)"} true; +L1: + + // assume Identical($t9, global(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:138:9+73 + assume {:print "$at(32,7514,7587)"} true; + assume ($t9 == $ResourceValue($1_coin_SupplyConfig_$memory, 1)); + + // assert Not(Not(system_addresses::$is_starcoin_framework_address[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:136:9+74 + assume {:print "$at(32,7375,7449)"} true; + assert {:msg "assert_failed(32,7375,7449): function does not abort under this condition"} + !!$1_system_addresses_$is_starcoin_framework_address($t3); + + // assert Not(Not(exists[@358]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:137:9+47 + assume {:print "$at(32,7458,7505)"} true; + assert {:msg "assert_failed(32,7458,7505): function does not abort under this condition"} + !!$ResourceExists($1_coin_SupplyConfig_$memory#358, $t3); + + // assert Eq(select coin::SupplyConfig.allow_upgrades($t9), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:139:9+54 + assume {:print "$at(32,7596,7650)"} true; + assert {:msg "assert_failed(32,7596,7650): post-condition does not hold"} + $IsEqual'bool'($t9->$allow_upgrades, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:139:9+54 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:563:5+1 + assume {:print "$at(31,24264,24265)"} true; +L2: + + // assert Or(Not(system_addresses::$is_starcoin_framework_address[]($t3)), Not(exists[@358]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:133:5+490 + assume {:print "$at(32,7166,7656)"} true; + assert {:msg "assert_failed(32,7166,7656): abort not covered by any of the `aborts_if` clauses"} + (!$1_system_addresses_$is_starcoin_framework_address($t3) || !$ResourceExists($1_coin_SupplyConfig_$memory#358, $t3)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:133:5+490 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::coin_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+148 +procedure {:timeLimit 80} $1_coin_coin_address$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + var $1_coin_Ghost$supply'#0'_$memory#156: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#157: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#158: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + assume {:print "$at(31,32032,32033)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @158 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + $1_coin_CoinInfo'#0'_$memory#158 := $1_coin_CoinInfo'#0'_$memory; + + // @156 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + $1_coin_Ghost$supply'#0'_$memory#156 := $1_coin_Ghost$supply'#0'_$memory; + + // @157 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:740:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#157 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:741:25+30 + assume {:print "$at(31,32096,32126)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,32096,32126)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,5):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[type_info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:741:13+9 + assume {:print "$track_local(46,5,0):", $t1} $t1 == $t1; + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:742:9+38 + assume {:print "$at(31,32136,32174)"} true; + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(31,32136,32174)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,5):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:742:9+38 + assume {:print "$track_return(46,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:743:5+1 + assume {:print "$at(31,32179,32180)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@156]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@157]>(0x0))), select coin::CoinInfo.supply>(global[@158]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#156, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#157, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#158, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:743:5+1 + assume {:print "$at(31,32179,32180)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:743:5+1 + assume {:print "$at(31,32179,32180)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun coin::coin_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+494 +procedure {:timeLimit 80} $1_coin_coin_supply$verify() returns ($ret0: $1_option_Option'u128') +{ + // declare local variables + var $t0: $1_option_Option'u128'; + var $t1: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t2: int; + var $t3: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t4: $1_optional_aggregator_OptionalAggregator; + var $t5: int; + var $t6: int; + var $t7: $1_coin_CoinInfo'#0'; + var $t8: int; + var $t9: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t10: bool; + var $t11: $1_optional_aggregator_OptionalAggregator; + var $t12: bool; + var $t13: int; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'$1_option_Option'u128'': $1_option_Option'u128'; + var $1_coin_CoinInfo'#0'_$memory#352: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#353: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#354: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#355: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#356: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#357: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume {:print "$at(31,36822,36823)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t2, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:229:9+63 + assume {:print "$at(32,10883,10946)"} true; + assume ($t2 == $1_type_info_$type_of'#0'()->$account_address); + + // assume Identical($t3, select coin::CoinInfo.supply>(global>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:232:9+64 + assume {:print "$at(32,11046,11110)"} true; + assume ($t3 == $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t2)->$supply); + + // assume Identical($t4, option::spec_borrow($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:233:9+47 + assume {:print "$at(32,11119,11166)"} true; + assume ($t4 == $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'($t3)); + + // assume Identical($t5, optional_aggregator::optional_aggregator_value($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:234:9+67 + assume {:print "$at(32,11175,11242)"} true; + assume ($t5 == $1_optional_aggregator_optional_aggregator_value($t4)); + + // @352 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + assume {:print "$at(31,36822,36823)"} true; + $1_coin_CoinInfo'#0'_$memory#352 := $1_coin_CoinInfo'#0'_$memory; + + // @353 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + $1_coin_Ghost$supply'#0'_$memory#353 := $1_coin_Ghost$supply'#0'_$memory; + + // @354 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:864:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#354 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t6 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + assume {:print "$at(31,36953,36977)"} true; + + // @357 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + $1_coin_CoinInfo'#0'_$memory#357 := $1_coin_CoinInfo'#0'_$memory; + + // @355 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + $1_coin_Ghost$supply'#0'_$memory#355 := $1_coin_Ghost$supply'#0'_$memory; + + // @356 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#356 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + assume $IsValid'address'($t6); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@355]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@356]>(0x0))), select coin::CoinInfo.supply>(global[@357]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#355, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#356, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#357, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t6, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + assume $IsEqual'address'($t6, $1_type_info_$type_of'#0'()->$account_address); + + // $t6 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:63+24 + + // $t7 := get_global>($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:29+13 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(31,36919,36932)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,6):", $t8} $t8 == $t8; + goto L4; + } + + // $t9 := get_field>.supply($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:28+67 + $t9 := $t7->$supply; + + // trace_local[maybe_supply]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:865:13+12 + assume {:print "$track_local(46,6,1):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::is_some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:13+29 + assume {:print "$at(31,36999,37028)"} true; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:13+29 + assume $IsValid'bool'($t10); + + // assume Eq($t10, option::spec_is_some($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:13+29 + assume $IsEqual'bool'($t10, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t9)); + + // $t10 := opaque end: option::is_some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:13+29 + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:9+315 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:41+12 + assume {:print "$at(31,37151,37163)"} true; +L1: + + // $t11 := opaque begin: option::borrow($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume {:print "$at(31,37136,37164)"} true; + + // assume Identical($t12, option::spec_is_none($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume ($t12 == $1_option_spec_is_none'$1_optional_aggregator_OptionalAggregator'($t9)); + + // if ($t12) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + if ($t12) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 +L6: + + // assume And(option::spec_is_none($t9), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume {:print "$at(31,37136,37164)"} true; + assume ($1_option_spec_is_none'$1_optional_aggregator_OptionalAggregator'($t9) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume {:print "$at(31,37136,37164)"} true; + assume {:print "$track_abort(46,6):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 +L5: + + // assume And(WellFormed($t11), And(And(And(And(And(Iff(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t11)), option::$is_none(select optional_aggregator::OptionalAggregator.integer($t11))), Iff(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t11)), option::$is_none(select optional_aggregator::OptionalAggregator.aggregator($t11)))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.integer($t11)), Le(select optional_aggregator::Integer.value(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t11))), select optional_aggregator::Integer.limit(option::$borrow(select optional_aggregator::OptionalAggregator.integer($t11)))))), Implies(option::$is_some(select optional_aggregator::OptionalAggregator.aggregator($t11)), Le(aggregator::spec_aggregator_get_val(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t11))), aggregator::spec_get_limit(option::$borrow(select optional_aggregator::OptionalAggregator.aggregator($t11)))))), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.aggregator($t11))), 1)), Le(Len(select option::Option.vec(select optional_aggregator::OptionalAggregator.integer($t11))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume {:print "$at(31,37136,37164)"} true; + assume ($IsValid'$1_optional_aggregator_OptionalAggregator'($t11) && (((((($1_option_$is_some'$1_aggregator_Aggregator'($t11->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($t11->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t11->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($t11->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($t11->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($t11->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($t11->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($t11->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($t11->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($t11->$aggregator))))) && (LenVec($t11->$aggregator->$vec) <= 1)) && (LenVec($t11->$integer->$vec) <= 1))); + + // assume Eq($t11, option::spec_borrow($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + assume $IsEqual'$1_optional_aggregator_OptionalAggregator'($t11, $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'($t9)); + + // $t11 := opaque end: option::borrow($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:868:26+28 + + // $t13 := optional_aggregator::read($t11) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:869:25+33 + assume {:print "$at(31,37190,37223)"} true; + call $t13 := $1_optional_aggregator_read($t11); + if ($abort_flag) { + assume {:print "$at(31,37190,37223)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,6):", $t8} $t8 == $t8; + goto L4; + } + + // $t0 := opaque begin: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:870:13+19 + assume {:print "$at(31,37237,37256)"} true; + + // assume And(WellFormed($t0), Le(Len(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:870:13+19 + assume ($IsValid'$1_option_Option'u128''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume Eq>($t0, option::spec_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:870:13+19 + assume $IsEqual'$1_option_Option'u128''($t0, $1_option_spec_some'u128'($t13)); + + // $t0 := opaque end: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:870:13+19 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:9+315 + assume {:print "$at(31,36995,37310)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:9+315 +L0: + + // $t0 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:872:13+14 + assume {:print "$at(31,37286,37300)"} true; + + // assume And(WellFormed($t0), Le(Len(select option::Option.vec($t0)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:872:13+14 + assume ($IsValid'$1_option_Option'u128''($t0) && (LenVec($t0->$vec) <= 1)); + + // assume Eq>($t0, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:872:13+14 + assume $IsEqual'$1_option_Option'u128''($t0, $1_option_spec_none'u128'()); + + // $t0 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:872:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:9+315 + assume {:print "$at(31,36995,37310)"} true; +L2: + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:866:9+315 + assume {:print "$at(31,36995,37310)"} true; + assume {:print "$track_return(46,6,0):", $t0} $t0 == $t0; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:874:5+1 + assume {:print "$at(31,37315,37316)"} true; +L3: + + // assert Not(Not(exists[@352]>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:231:9+49 + assume {:print "$at(32,10988,11037)"} true; + assert {:msg "assert_failed(32,10988,11037): function does not abort under this condition"} + !!$ResourceExists($1_coin_CoinInfo'#0'_$memory#352, $t2); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@353]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@354]>(0x0))), select coin::CoinInfo.supply>(global[@352]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#353, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#354, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#352, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert if option::spec_is_some($t3) { + // Eq>($t0, option::spec_some($t5)) + // } else { + // option::spec_is_none($t0) + // } at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:236:9+165 + assume {:print "$at(32,11252,11417)"} true; + assert {:msg "assert_failed(32,11252,11417): post-condition does not hold"} + (if ($1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t3)) then ($IsEqual'$1_option_Option'u128''($t0, $1_option_spec_some'u128'($t5))) else ($1_option_spec_is_none'u128'($t0))); + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:236:9+165 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:874:5+1 + assume {:print "$at(31,37315,37316)"} true; +L4: + + // assert Not(exists[@352]>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:228:5+593 + assume {:print "$at(32,10830,11423)"} true; + assert {:msg "assert_failed(32,10830,11423): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#352, $t2); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:228:5+593 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::coin_to_fungible_asset [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:388:5+296 +procedure {:inline 1} $1_coin_coin_to_fungible_asset'$1_starcoin_coin_STC'(_$t0: $1_coin_Coin'$1_starcoin_coin_STC') returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_fungible_asset_FungibleAsset; + var $t0: $1_coin_Coin'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:318:9+58 + assume {:print "$at(32,14452,14510)"} true; + assume ($t3 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:388:5+1 + assume {:print "$at(31,14858,14859)"} true; + assume {:print "$track_local(46,7,0):", $t0} $t0 == $t0; + + // $t4 := coin::ensure_paired_metadata<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:391:24+34 + assume {:print "$at(31,15015,15049)"} true; + call $t4 := $1_coin_ensure_paired_metadata'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,15015,15049)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[metadata]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:391:13+8 + assume {:print "$track_local(46,7,2):", $t4} $t4 == $t4; + + // assume Identical($t6, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:260:9+58 + assume {:print "$at(32,12063,12121)"} true; + assume ($t6 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t7 := coin::burn_internal<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:392:22+19 + assume {:print "$at(31,15072,15091)"} true; + call $t7 := $1_coin_burn_internal'$1_starcoin_coin_STC'($t0); + if ($abort_flag) { + assume {:print "$at(31,15072,15091)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[amount]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:392:13+6 + assume {:print "$track_local(46,7,1):", $t7} $t7 == $t7; + + // $t8 := fungible_asset::mint_internal($t4, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:393:9+47 + assume {:print "$at(31,15101,15148)"} true; + call $t8 := $1_fungible_asset_mint_internal($t4, $t7); + if ($abort_flag) { + assume {:print "$at(31,15101,15148)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:393:9+47 + assume {:print "$track_return(46,7,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::coin_to_fungible_asset<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:388:5+296 +procedure {:inline 1} $1_coin_coin_to_fungible_asset'#0'(_$t0: $1_coin_Coin'#0') returns ($ret0: $1_fungible_asset_FungibleAsset) +{ + // declare local variables + var $t1: int; + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_fungible_asset_FungibleAsset; + var $t0: $1_coin_Coin'#0'; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:318:9+58 + assume {:print "$at(32,14452,14510)"} true; + assume ($t3 == $1_type_info_$type_of'#0'()->$account_address); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:388:5+1 + assume {:print "$at(31,14858,14859)"} true; + assume {:print "$track_local(46,7,0):", $t0} $t0 == $t0; + + // $t4 := coin::ensure_paired_metadata<#0>() on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:391:24+34 + assume {:print "$at(31,15015,15049)"} true; + call $t4 := $1_coin_ensure_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,15015,15049)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[metadata]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:391:13+8 + assume {:print "$track_local(46,7,2):", $t4} $t4 == $t4; + + // assume Identical($t6, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:260:9+58 + assume {:print "$at(32,12063,12121)"} true; + assume ($t6 == $1_type_info_$type_of'#0'()->$account_address); + + // $t7 := coin::burn_internal<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:392:22+19 + assume {:print "$at(31,15072,15091)"} true; + call $t7 := $1_coin_burn_internal'#0'($t0); + if ($abort_flag) { + assume {:print "$at(31,15072,15091)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[amount]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:392:13+6 + assume {:print "$track_local(46,7,1):", $t7} $t7 == $t7; + + // $t8 := fungible_asset::mint_internal($t4, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:393:9+47 + assume {:print "$at(31,15101,15148)"} true; + call $t8 := $1_fungible_asset_mint_internal($t4, $t7); + if ($abort_flag) { + assume {:print "$at(31,15101,15148)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,7):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:393:9+47 + assume {:print "$track_return(46,7,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:394:5+1 + assume {:print "$at(31,15153,15154)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::convert_and_take_paired_burn_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+679 +procedure {:timeLimit 80} $1_coin_convert_and_take_paired_burn_ref$verify(_$t0: $1_coin_BurnCapability'#0') returns ($ret0: $1_fungible_asset_BurnRef) +{ + // declare local variables + var $t1: $Mutation ($1_option_Option'$1_fungible_asset_BurnRef'); + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t4: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t5: int; + var $t6: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: bool; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t17: $Mutation ($1_option_Option'$1_fungible_asset_BurnRef'); + var $t18: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_fungible_asset_BurnRef; + var $t23: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t24: bool; + var $t0: $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'': $1_option_Option'$1_fungible_asset_BurnRef'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $1_coin_Ghost$supply'#0'_$memory#368: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#369: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#370: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume {:print "$at(31,21518,21519)"} true; + assume $IsValid'$1_coin_BurnCapability'#0''($t0); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @370 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + $1_coin_CoinInfo'#0'_$memory#370 := $1_coin_CoinInfo'#0'_$memory; + + // @368 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + $1_coin_Ghost$supply'#0'_$memory#368 := $1_coin_Ghost$supply'#0'_$memory; + + // @369 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#369 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[burn_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:509:5+1 + assume {:print "$track_local(46,9,0):", $t0} $t0 == $t0; + + // coin::destroy_burn_cap<#0>($t0) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:512:9+26 + assume {:print "$at(31,21693,21719)"} true; + call $1_coin_destroy_burn_cap'#0'($t0); + if ($abort_flag) { + assume {:print "$at(31,21693,21719)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := coin::paired_metadata<#0>() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t6 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[metadata_opt#25]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,9,4):", $t6} $t6 == $t6; + + // $t7 := opaque begin: option::is_some>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t6)); + + // $t7 := opaque end: option::is_some>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t8 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,9):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t10 := opaque begin: option::destroy_some>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t11, option::spec_is_none>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t11 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t6)); + + // if ($t11) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t11) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L12: + + // assume And(option::spec_is_none>($t6), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t6) && $IsEqual'num'(262145, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L11: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t10); + + // assume Eq>($t10, option::spec_borrow>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t10, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t6)); + + // $t10 := opaque end: option::destroy_some>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:513:13+8 + assume {:print "$at(31,21733,21741)"} true; + assume {:print "$track_local(46,9,2):", $t10} $t10 == $t10; + + // $t12 := object::object_address($t10) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:514:29+25 + assume {:print "$at(31,21815,21840)"} true; + call $t12 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(31,21815,21840)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[metadata_addr]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:514:13+13 + assume {:print "$track_local(46,9,3):", $t12} $t12 == $t12; + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:17+6 + assume {:print "$at(31,21858,21864)"} true; + $t13 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 + assume {:print "$at(31,21850,21961)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:81+37 +L3: + + // $t14 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:81+37 + assume {:print "$at(31,21922,21959)"} true; + $t14 := 19; + assume $IsValid'u64'($t14); + + // $t15 := error::internal($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:65+54 + call $t15 := $1_error_internal($t14); + if ($abort_flag) { + assume {:print "$at(31,21906,21960)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 + assume {:print "$at(31,21850,21961)"} true; + assume {:print "$track_abort(46,9):", $t15} $t15 == $t15; + + // $t5 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 + $t5 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:515:9+111 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:516:76+13 + assume {:print "$at(31,22038,22051)"} true; +L5: + + // $t16 := borrow_global($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:516:33+17 + assume {:print "$at(31,21995,22012)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t12)); + } + if ($abort_flag) { + assume {:print "$at(31,21995,22012)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // $t17 := borrow_field.burn_ref_opt($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:516:28+75 + $t17 := $ChildMutation($t16, 2, $Dereference($t16)->$burn_ref_opt); + + // trace_local[burn_ref_opt]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:516:13+12 + $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'' := $Dereference($t17); + assume {:print "$track_local(46,9,1):", $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''} $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'' == $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''; + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:33+12 + assume {:print "$at(31,22099,22111)"} true; + $t18 := $Dereference($t17); + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:17+29 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:17+29 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:17+29 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_fungible_asset_BurnRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:17+29 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + assume {:print "$at(31,22075,22152)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 +L6: + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + assume {:print "$at(31,22075,22152)"} true; + + // $t20 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:65+19 + $t20 := 25; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:48+37 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(31,22114,22151)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + assume {:print "$at(31,22075,22152)"} true; + assume {:print "$track_abort(46,9):", $t21} $t21 == $t21; + + // $t5 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + $t5 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:517:9+77 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:25+12 + assume {:print "$at(31,22178,22190)"} true; +L8: + + // $t22 := opaque begin: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$at(31,22162,22191)"} true; + + // $t23 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + $t23 := $Dereference($t17); + + // assume Identical($t24, option::spec_is_none($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume ($t24 == $1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17))); + + // if ($t24) goto L15 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + if ($t24) { goto L15; } else { goto L16; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 +L14: + + // assume And(option::spec_is_none($t17), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$at(31,22162,22191)"} true; + assume ($1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17)) && $IsEqual'num'(262145, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$at(31,22162,22191)"} true; + assume {:print "$track_abort(46,9):", $t5} $t5 == $t5; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 +L13: + + // $t17 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$at(31,22162,22191)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''; + $t17 := $UpdateMutation($t17, $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''); + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($Dereference($t17)) && (LenVec($Dereference($t17)->$vec) <= 1)); + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume $IsValid'$1_fungible_asset_BurnRef'($t22); + + // assume Eq($t22, option::spec_borrow($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume $IsEqual'$1_fungible_asset_BurnRef'($t22, $1_option_spec_borrow'$1_fungible_asset_BurnRef'($t23)); + + // assume option::spec_is_none($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume $1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17)); + + // $t22 := opaque end: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + + // write_back[Reference($t16).burn_ref_opt (option::Option)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + $t16 := $UpdateMutation($t16, $Update'$1_coin_PairedFungibleAssetRefs'_burn_ref_opt($Dereference($t16), $Dereference($t17))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$at(31,22162,22191)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:518:9+29 + assume {:print "$track_return(46,9,0):", $t22} $t22 == $t22; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:519:5+1 + assume {:print "$at(31,22196,22197)"} true; +L9: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@368]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@369]>(0x0))), select coin::CoinInfo.supply>(global[@370]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#368, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#369, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#370, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t22; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:519:5+1 + assume {:print "$at(31,22196,22197)"} true; +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:519:5+1 + assume {:print "$at(31,22196,22197)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L16 at :1:1+10 +L16: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + +} + +// fun coin::create_coin_conversion_map [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:290:5+360 +procedure {:timeLimit 80} $1_coin_create_coin_conversion_map$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $t6: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t7: $1_coin_CoinConversionMap; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:290:5+1 + assume {:print "$at(31,10227,10228)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:290:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:290:5+1 + assume {:print "$track_local(46,10,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + assume {:print "$at(31,10310,10373)"} true; + + // assume Identical($t1, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + assume ($t1 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t1) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + if ($t1) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + assume {:print "$at(31,10310,10373)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + assume {:print "$at(31,10310,10373)"} true; + assume {:print "$track_abort(46,10):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:291:9+63 + assume {:print "$at(31,10310,10373)"} true; + + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:292:40+19 + assume {:print "$at(31,10414,10433)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:292:14+6 + $t4 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t3); + + // $t5 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:292:13+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:292:9+197 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:293:21+18 + assume {:print "$at(31,10458,10476)"} true; +L1: + + // $t6 := table::new>() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:294:45+12 + assume {:print "$at(31,10542,10554)"} true; + call $t6 := $1_table_new'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''(); + if ($abort_flag) { + assume {:print "$at(31,10542,10554)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,10):", $t2} $t2 == $t2; + goto L4; + } + + // $t7 := pack coin::CoinConversionMap($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:293:41+91 + assume {:print "$at(31,10478,10569)"} true; + $t7 := $1_coin_CoinConversionMap($t6); + + // move_to($t7, $t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:293:13+7 + if ($ResourceExists($1_coin_CoinConversionMap_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinConversionMap_$memory := $ResourceUpdate($1_coin_CoinConversionMap_$memory, $t0->$addr, $t7); + } + if ($abort_flag) { + assume {:print "$at(31,10450,10457)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,10):", $t2} $t2 == $t2; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:293:13+120 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:292:9+197 + assume {:print "$at(31,10383,10580)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:296:10+1 + assume {:print "$at(31,10580,10581)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:297:5+1 + assume {:print "$at(31,10586,10587)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:297:5+1 + assume {:print "$at(31,10586,10587)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:297:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:297:5+1 + assume {:print "$at(31,10586,10587)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun coin::create_pairing [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+274 +procedure {:timeLimit 80} $1_coin_create_pairing$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $signer; + var $t4: $signer; + var $t5: $1_object_ConstructorRef; + var $t6: $signer; + var $t7: $1_string_String; + var $t8: $1_fungible_asset_BurnRef; + var $t9: bool; + var $t10: $Mutation ($1_coin_CoinConversionMap); + var $t11: $1_object_Object'$1_fungible_asset_Metadata'; + var $t12: $1_object_ConstructorRef; + var $t13: $signer; + var $t14: $1_fungible_asset_MintRef; + var $t15: $1_fungible_asset_TransferRef; + var $t16: $1_type_info_TypeInfo; + var $t17: $1_type_info_TypeInfo; + var $t18: bool; + var $t19: int; + var $t20: Vec (int); + var $t21: $1_string_String; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: $Mutation ($1_coin_CoinConversionMap); + var $t31: $1_type_info_TypeInfo; + var $t32: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t33: bool; + var $t34: bool; + var $t35: $1_string_String; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t38: bool; + var $t39: bool; + var $t40: bool; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: $signer; + var $t48: $1_string_String; + var $t49: Vec (int); + var $t50: int; + var $t51: int; + var $t52: $1_option_Option'u128'; + var $t53: int; + var $t54: $1_string_String; + var $t55: int; + var $t56: $1_string_String; + var $t57: int; + var $t58: int; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: Vec (int); + var $t62: $1_string_String; + var $t63: $signer; + var $t64: $1_type_info_TypeInfo; + var $t65: $1_coin_PairedCoinType; + var $t66: $1_object_Object'$1_fungible_asset_Metadata'; + var $t67: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')); + var $t68: int; + var $t69: $1_coin_PairCreation; + var $t70: $1_fungible_asset_MintRef; + var $t71: $1_fungible_asset_TransferRef; + var $t72: $1_fungible_asset_BurnRef; + var $t73: $1_option_Option'$1_fungible_asset_MintRef'; + var $t74: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t75: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t76: $1_coin_PairedFungibleAssetRefs; + var $t77: Vec (int); + var $t78: $1_string_String; + var $t79: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t80: $1_object_Object'$1_fungible_asset_Metadata'; + var $t0: $signer; + var $temp_0'$1_coin_CoinConversionMap': $1_coin_CoinConversionMap; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_coin_Ghost$supply'#0'_$memory#377: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#378: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#379: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume {:print "$at(31,10647,10648)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @379 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + $1_coin_CoinInfo'#0'_$memory#379 := $1_coin_CoinInfo'#0'_$memory; + + // @377 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + $1_coin_Ghost$supply'#0'_$memory#377 := $1_coin_Ghost$supply'#0'_$memory; + + // @378 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#378 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:300:5+1 + assume {:print "$track_local(46,11,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + assume {:print "$at(31,10779,10842)"} true; + + // assume Identical($t18, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + assume ($t18 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t18) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + if ($t18) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 +L17: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + assume {:print "$at(31,10779,10842)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + assume {:print "$at(31,10779,10842)"} true; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + goto L15; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 +L16: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:303:9+63 + assume {:print "$at(31,10779,10842)"} true; + + // $t20 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:41+65 + assume {:print "$at(31,11246,11311)"} true; + $t20 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(110, 116, 101, 114)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:23+84 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(31,11228,11312)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t21) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:9+99 + call $1_debug_print'$1_string_String'($t21); + if ($abort_flag) { + assume {:print "$at(31,11214,11313)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t22 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:315:13+60 + assume {:print "$at(31,11345,11405)"} true; + call $t22 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,11345,11405)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; +L0: + + // $t23 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; + $t23 := 26; + assume $IsValid'u64'($t23); + + // $t24 := error::invalid_state($t23) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:13+54 + call $t24 := $1_error_invalid_state($t23); + if ($abort_flag) { + assume {:print "$at(31,11419,11473)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + assume {:print "$track_abort(46,11):", $t24} $t24 == $t24; + + // $t19 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + $t19 := $t24; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; +L2: + + // $t25 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; + $t25 := 1; + assume $IsValid'address'($t25); + + // $t26 := exists($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:17+6 + $t26 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t25); + + // if ($t26) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + if ($t26) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 +L3: + + // $t27 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 + assume {:print "$at(31,11566,11596)"} true; + $t27 := 27; + assume $IsValid'u64'($t27); + + // $t28 := error::not_found($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:65+48 + call $t28 := $1_error_not_found($t27); + if ($abort_flag) { + assume {:print "$at(31,11549,11597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + assume {:print "$track_abort(46,11):", $t28} $t28 == $t28; + + // $t19 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + $t19 := $t28; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; +L5: + + // $t29 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; + $t29 := 1; + assume $IsValid'address'($t29); + + // $t30 := borrow_global($t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:19+17 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t30 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_coin_CoinConversionMap_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(31,11619,11636)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[map#27]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:13+3 + $temp_0'$1_coin_CoinConversionMap' := $Dereference($t30); + assume {:print "$track_local(46,11,10):", $temp_0'$1_coin_CoinConversionMap'} $temp_0'$1_coin_CoinConversionMap' == $temp_0'$1_coin_CoinConversionMap'; + + // $t31 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:20+30 + assume {:print "$at(31,11697,11727)"} true; + call $t31 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,11697,11727)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#28]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:13+4 + assume {:print "$track_local(46,11,16):", $t31} $t31 == $t31; + + // $t32 := get_field.coin_to_fungible_asset_map($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:30+31 + assume {:print "$at(31,11758,11789)"} true; + $t32 := $Dereference($t30)->$coin_to_fungible_asset_map; + + // $t33 := table::contains>($t32, $t31) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:14+54 + call $t33 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t32, $t31); + if ($abort_flag) { + assume {:print "$at(31,11742,11796)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t34 := !($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:13+1 + call $t34 := $Not($t33); + + // if ($t34) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:9+2172 + if ($t34) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; +L7: + + // $t35 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; + call $t35 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,10973,11005)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t36 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 97, 114, 99, 111, 105, 110, 95, 99, 111, 105, 110, 58, 58, 83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:58+57 + $t36 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 97, 114)), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 99, 111, 105)), MakeVec4(110, 58, 58, 83)), MakeVec2(84, 67)); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:45+71 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(31,11009,11080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t38 := ==($t35, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:42+2 + $t38 := $IsEqual'$1_string_String'($t35, $t37); + + // trace_local[is_stc#29]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:323:17+6 + assume {:print "$at(31,11816,11822)"} true; + assume {:print "$track_local(46,11,9):", $t38} $t38 == $t38; + + // $t39 := !($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:21+1 + assume {:print "$at(31,11865,11866)"} true; + call $t39 := $Not($t38); + + // $t40 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:304:66+4 + assume {:print "$at(31,10909,10913)"} true; + $t40 := true; + assume $IsValid'bool'($t40); + + // $t41 := ||($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:29+2 + assume {:print "$at(31,11873,11875)"} true; + call $t41 := $Or($t39, $t40); + + // if ($t41) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + if ($t41) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L8: + + // drop($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + + // $t42 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:73+27 + $t42 := 28; + assume $IsValid'u64'($t42); + + // $t43 := error::invalid_state($t42) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:52+49 + call $t43 := $1_error_invalid_state($t42); + if ($abort_flag) { + assume {:print "$at(31,11896,11945)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + assume {:print "$track_abort(46,11):", $t43} $t43 == $t43; + + // $t19 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + $t19 := $t43; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:21+6 + assume {:print "$at(31,12007,12013)"} true; +L10: + + // if ($t38) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + if ($t38) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; +L12: + + // $t44 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; + $t44 := 1; + assume $IsValid'address'($t44); + + // $t45 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:82+24 + $t45 := 1; + assume $IsValid'address'($t45); + + // $t5 := object::create_sticky_object_at_address($t44, $t45) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:21+86 + call $t5 := $1_object_create_sticky_object_at_address($t44, $t45); + if ($abort_flag) { + assume {:print "$at(31,12037,12123)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; +L11: + + // $t46 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; + $t46 := 1; + assume $IsValid'address'($t46); + + // $t47 := opaque begin: create_signer::create_signer($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsValid'signer'($t47) && $1_signer_is_txn_signer($t47) && $1_signer_is_txn_signer_addr($t47->$addr); + + // assume Eq
(signer::$address_of($t47), $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsEqual'address'($1_signer_$address_of($t47), $t46); + + // $t47 := opaque end: create_signer::create_signer($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // $t48 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:41+32 + assume {:print "$at(31,12319,12351)"} true; + call $t48 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12319,12351)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t49 := string::bytes($t48) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:26+48 + call $t49 := $1_string_bytes($t48); + if ($abort_flag) { + assume {:print "$at(31,12304,12352)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t50, signer::$address_of($t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t50 == $1_signer_$address_of($t47)); + + // assume Identical($t51, object::spec_create_object_address($t50, $t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t51 == $1_object_spec_create_object_address($t50, $t49)); + + // $t5 := object::create_named_object($t47, $t49) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:329:21+205 + assume {:print "$at(31,12169,12374)"} true; + call $t5 := $1_object_create_named_object($t47, $t49); + if ($abort_flag) { + assume {:print "$at(31,12169,12374)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; +L13: + + // trace_local[metadata_object_cref#30]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:325:17+20 + assume {:print "$at(31,11964,11984)"} true; + assume {:print "$track_local(46,11,12):", $t5} $t5 == $t5; + + // $t52 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume {:print "$at(31,12531,12545)"} true; + + // assume And(WellFormed($t52), Le(Len(select option::Option.vec($t52)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume ($IsValid'$1_option_Option'u128''($t52) && (LenVec($t52->$vec) <= 1)); + + // assume Eq>($t52, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume $IsEqual'$1_option_Option'u128''($t52, $1_option_spec_none'u128'()); + + // $t52 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + + // assume Identical($t53, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t53 == $1_type_info_$type_of'#0'()->$account_address); + + // $t54 := coin::name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:338:17+16 + assume {:print "$at(31,12563,12579)"} true; + call $t54 := $1_coin_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12563,12579)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t55, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t55 == $1_type_info_$type_of'#0'()->$account_address); + + // $t56 := coin::symbol<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:339:17+18 + assume {:print "$at(31,12597,12615)"} true; + call $t56 := $1_coin_symbol'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12597,12615)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t57, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t57 == $1_type_info_$type_of'#0'()->$account_address); + + // $t58 := coin::decimals<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:340:17+20 + assume {:print "$at(31,12633,12653)"} true; + call $t58 := $1_coin_decimals'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12633,12653)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t59 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:30+3 + assume {:print "$at(31,12684,12687)"} true; + $t59 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:17+17 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(31,12671,12688)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t61 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:30+3 + assume {:print "$at(31,12719,12722)"} true; + $t61 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t61); + + // $t62 := string::utf8($t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:17+17 + call $t62 := $1_string_utf8($t61); + if ($abort_flag) { + assume {:print "$at(31,12706,12723)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // primary_fungible_store::create_primary_store_enabled_fungible_asset($t5, $t52, $t54, $t56, $t58, $t60, $t62) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:335:13+331 + assume {:print "$at(31,12407,12738)"} true; + call $1_primary_fungible_store_create_primary_store_enabled_fungible_asset($t5, $t52, $t54, $t56, $t58, $t60, $t62); + if ($abort_flag) { + assume {:print "$at(31,12407,12738)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t63 := object::generate_signer($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:43+46 + assume {:print "$at(31,12782,12828)"} true; + call $t63 := $1_object_generate_signer($t5); + if ($abort_flag) { + assume {:print "$at(31,12782,12828)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_object_signer#31]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:17+22 + assume {:print "$track_local(46,11,13):", $t63} $t63 == $t63; + + // $t64 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:24+30 + assume {:print "$at(31,12853,12883)"} true; + call $t64 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12853,12883)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#32]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:17+4 + assume {:print "$track_local(46,11,17):", $t64} $t64 == $t64; + + // $t65 := pack coin::PairedCoinType($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:45+23 + assume {:print "$at(31,12929,12952)"} true; + $t65 := $1_coin_PairedCoinType($t64); + + // move_to($t65, $t63) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:13+7 + if ($ResourceExists($1_coin_PairedCoinType_$memory, $t63->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedCoinType_$memory := $ResourceUpdate($1_coin_PairedCoinType_$memory, $t63->$addr, $t65); + } + if ($abort_flag) { + assume {:print "$at(31,12897,12904)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t66 := object::object_from_constructor_ref($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:32+58 + assume {:print "$at(31,12986,13044)"} true; + call $t66 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t5); + if ($abort_flag) { + assume {:print "$at(31,12986,13044)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_obj#33]($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:17+12 + assume {:print "$track_local(46,11,11):", $t66} $t66 == $t66; + + // $t67 := borrow_field.coin_to_fungible_asset_map($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:24+35 + assume {:print "$at(31,13070,13105)"} true; + $t67 := $ChildMutation($t30, 0, $Dereference($t30)->$coin_to_fungible_asset_map); + + // table::add>($t67, $t64, $t66) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + call $t67 := $1_table_add'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t67, $t64, $t66); + if ($abort_flag) { + assume {:print "$at(31,13059,13126)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t30).coin_to_fungible_asset_map (table::Table>)]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + $t30 := $UpdateMutation($t30, $Update'$1_coin_CoinConversionMap'_coin_to_fungible_asset_map($Dereference($t30), $Dereference($t67))); + + // $t68 := object::object_address($t66) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:352:50+29 + assume {:print "$at(31,13249,13278)"} true; + call $t68 := $1_object_object_address'$1_fungible_asset_Metadata'($t66); + if ($abort_flag) { + assume {:print "$at(31,13249,13278)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t69 := pack coin::PairCreation($t64, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:25+140 + assume {:print "$at(31,13152,13292)"} true; + $t69 := $1_coin_PairCreation($t64, $t68); + + // opaque begin: event::emit($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // opaque end: event::emit($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // $t70 := fungible_asset::generate_mint_ref($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:28+56 + assume {:print "$at(31,13363,13419)"} true; + call $t70 := $1_fungible_asset_generate_mint_ref($t5); + if ($abort_flag) { + assume {:print "$at(31,13363,13419)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mint_ref#34]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:17+8 + assume {:print "$track_local(46,11,14):", $t70} $t70 == $t70; + + // $t71 := fungible_asset::generate_transfer_ref($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:32+60 + assume {:print "$at(31,13452,13512)"} true; + call $t71 := $1_fungible_asset_generate_transfer_ref($t5); + if ($abort_flag) { + assume {:print "$at(31,13452,13512)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#35]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:17+12 + assume {:print "$track_local(46,11,15):", $t71} $t71 == $t71; + + // $t72 := fungible_asset::generate_burn_ref($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:28+56 + assume {:print "$at(31,13541,13597)"} true; + call $t72 := $1_fungible_asset_generate_burn_ref($t5); + if ($abort_flag) { + assume {:print "$at(31,13541,13597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[burn_ref#36]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:17+8 + assume {:print "$track_local(46,11,8):", $t72} $t72 == $t72; + + // $t73 := opaque begin: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume {:print "$at(31,13719,13741)"} true; + + // assume And(WellFormed($t73), Le(Len(select option::Option.vec($t73)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($t73) && (LenVec($t73->$vec) <= 1)); + + // assume Eq>($t73, option::spec_some($t70)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''($t73, $1_option_spec_some'$1_fungible_asset_MintRef'($t70)); + + // $t73 := opaque end: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + + // $t74 := opaque begin: option::some($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume {:print "$at(31,13781,13807)"} true; + + // assume And(WellFormed($t74), Le(Len(select option::Option.vec($t74)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($t74) && (LenVec($t74->$vec) <= 1)); + + // assume Eq>($t74, option::spec_some($t71)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''($t74, $1_option_spec_some'$1_fungible_asset_TransferRef'($t71)); + + // $t74 := opaque end: option::some($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + + // $t75 := opaque begin: option::some($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume {:print "$at(31,13843,13865)"} true; + + // assume And(WellFormed($t75), Le(Len(select option::Option.vec($t75)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($t75) && (LenVec($t75->$vec) <= 1)); + + // assume Eq>($t75, option::spec_some($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''($t75, $1_option_spec_some'$1_fungible_asset_BurnRef'($t72)); + + // $t75 := opaque end: option::some($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + + // $t76 := pack coin::PairedFungibleAssetRefs($t73, $t74, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:360:17+225 + assume {:print "$at(31,13659,13884)"} true; + $t76 := $1_coin_PairedFungibleAssetRefs($t73, $t74, $t75); + + // move_to($t76, $t63) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:359:13+7 + assume {:print "$at(31,13611,13618)"} true; + if ($ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t63->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $t63->$addr, $t76); + } + if ($abort_flag) { + assume {:print "$at(31,13611,13618)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; +L6: + + // $t77 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; + $t77 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(120, 105, 116, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t77); + + // $t78 := string::utf8($t77) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:23+83 + call $t78 := $1_string_utf8($t77); + if ($abort_flag) { + assume {:print "$at(31,13933,14016)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t78) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:9+98 + call $1_debug_print'$1_string_String'($t78); + if ($abort_flag) { + assume {:print "$at(31,13919,14017)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // $t79 := get_field.coin_to_fungible_asset_map($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + assume {:print "$at(31,14042,14073)"} true; + $t79 := $Dereference($t30)->$coin_to_fungible_asset_map; + + // write_back[coin::CoinConversionMap@]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + $1_coin_CoinConversionMap_$memory := $ResourceUpdate($1_coin_CoinConversionMap_$memory, $GlobalLocationAddress($t30), + $Dereference($t30)); + + // $t80 := table::borrow>($t79, $t31) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:10+52 + call $t80 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t79, $t31); + if ($abort_flag) { + assume {:print "$at(31,14028,14080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,11):", $t19} $t19 == $t19; + goto L15; + } + + // drop($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:9+53 + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:305:5+1 + assume {:print "$at(31,10920,10921)"} true; +L14: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@377]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@378]>(0x0))), select coin::CoinInfo.supply>(global[@379]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#377, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#378, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#379, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:305:5+1 + assume {:print "$at(31,10920,10921)"} true; +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:305:5+1 + assume {:print "$at(31,10920,10921)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun coin::destroy_burn_cap<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+133 +procedure {:inline 1} $1_coin_destroy_burn_cap'#0'(_$t0: $1_coin_BurnCapability'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[burn_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume {:print "$at(31,54364,54365)"} true; + assume {:print "$track_local(46,14,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::BurnCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1289:13+27 + assume {:print "$at(31,54452,54479)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1289:13+27 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1290:5+1 + assume {:print "$at(31,54496,54497)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1290:5+1 + assume {:print "$at(31,54496,54497)"} true; + return; + +} + +// fun coin::destroy_burn_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+133 +procedure {:timeLimit 80} $1_coin_destroy_burn_cap$verify(_$t0: $1_coin_BurnCapability'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $1_coin_Ghost$supply'#0'_$memory#362: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#363: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#364: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume {:print "$at(31,54364,54365)"} true; + assume $IsValid'$1_coin_BurnCapability'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @364 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + $1_coin_CoinInfo'#0'_$memory#364 := $1_coin_CoinInfo'#0'_$memory; + + // @362 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + $1_coin_Ghost$supply'#0'_$memory#362 := $1_coin_Ghost$supply'#0'_$memory; + + // @363 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#363 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[burn_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1288:5+1 + assume {:print "$track_local(46,14,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::BurnCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1289:13+27 + assume {:print "$at(31,54452,54479)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1289:13+27 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1290:5+1 + assume {:print "$at(31,54496,54497)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@362]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@363]>(0x0))), select coin::CoinInfo.supply>(global[@364]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#362, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#363, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#364, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + +} + +// fun coin::destroy_freeze_cap [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+143 +procedure {:inline 1} $1_coin_destroy_freeze_cap'$1_starcoin_coin_STC'(_$t0: $1_coin_FreezeCapability'$1_starcoin_coin_STC') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_FreezeCapability'$1_starcoin_coin_STC'': $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[freeze_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume {:print "$at(31,54006,54007)"} true; + assume {:print "$track_local(46,15,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::FreezeCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1279:13+29 + assume {:print "$at(31,54100,54129)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1279:13+29 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1280:5+1 + assume {:print "$at(31,54148,54149)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1280:5+1 + assume {:print "$at(31,54148,54149)"} true; + return; + +} + +// fun coin::destroy_freeze_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+143 +procedure {:timeLimit 80} $1_coin_destroy_freeze_cap$verify(_$t0: $1_coin_FreezeCapability'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $1_coin_Ghost$supply'#0'_$memory#389: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#390: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#391: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume {:print "$at(31,54006,54007)"} true; + assume $IsValid'$1_coin_FreezeCapability'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @391 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + $1_coin_CoinInfo'#0'_$memory#391 := $1_coin_CoinInfo'#0'_$memory; + + // @389 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + $1_coin_Ghost$supply'#0'_$memory#389 := $1_coin_Ghost$supply'#0'_$memory; + + // @390 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#390 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[freeze_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1278:5+1 + assume {:print "$track_local(46,15,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::FreezeCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1279:13+29 + assume {:print "$at(31,54100,54129)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1279:13+29 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1280:5+1 + assume {:print "$at(31,54148,54149)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@389]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@390]>(0x0))), select coin::CoinInfo.supply>(global[@391]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#389, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#390, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#391, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + +} + +// fun coin::destroy_mint_cap [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+133 +procedure {:inline 1} $1_coin_destroy_mint_cap'$1_starcoin_coin_STC'(_$t0: $1_coin_MintCapability'$1_starcoin_coin_STC') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_MintCapability'$1_starcoin_coin_STC'': $1_coin_MintCapability'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[mint_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume {:print "$at(31,54190,54191)"} true; + assume {:print "$track_local(46,16,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::MintCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1284:13+27 + assume {:print "$at(31,54278,54305)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1284:13+27 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1285:5+1 + assume {:print "$at(31,54322,54323)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1285:5+1 + assume {:print "$at(31,54322,54323)"} true; + return; + +} + +// fun coin::destroy_mint_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+133 +procedure {:timeLimit 80} $1_coin_destroy_mint_cap$verify(_$t0: $1_coin_MintCapability'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_coin_MintCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $1_coin_Ghost$supply'#0'_$memory#395: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#396: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#397: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume {:print "$at(31,54190,54191)"} true; + assume $IsValid'$1_coin_MintCapability'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @397 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + $1_coin_CoinInfo'#0'_$memory#397 := $1_coin_CoinInfo'#0'_$memory; + + // @395 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + $1_coin_Ghost$supply'#0'_$memory#395 := $1_coin_Ghost$supply'#0'_$memory; + + // @396 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#396 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[mint_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1283:5+1 + assume {:print "$track_local(46,16,0):", $t0} $t0 == $t0; + + // $t1 := unpack coin::MintCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1284:13+27 + assume {:print "$at(31,54278,54305)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1284:13+27 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1285:5+1 + assume {:print "$at(31,54322,54323)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@395]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@396]>(0x0))), select coin::CoinInfo.supply>(global[@397]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#395, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#396, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#397, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + +} + +// fun coin::drain_aggregatable_coin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+771 +procedure {:timeLimit 80} $1_coin_drain_aggregatable_coin$verify(_$t0: $Mutation ($1_coin_AggregatableCoin'#0')) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_coin_AggregatableCoin'#0')) +{ + // declare local variables + var $t1: int; + var $t2: $1_coin_AggregatableCoin'#0'; + var $t3: $1_aggregator_Aggregator; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_coin_Ghost$aggregate_supply'#0'; + var $t11: int; + var $t12: $Mutation ($1_coin_Ghost$aggregate_supply'#0'); + var $t13: $Mutation ($1_aggregator_Aggregator); + var $t14: $1_aggregator_Aggregator; + var $t15: bool; + var $t16: $1_coin_Ghost$supply'#0'; + var $t17: int; + var $t18: $Mutation ($1_coin_Ghost$supply'#0'); + var $t19: int; + var $t20: $1_coin_Coin'#0'; + var $t0: $Mutation ($1_coin_AggregatableCoin'#0'); + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_coin_AggregatableCoin'#0'': $1_coin_AggregatableCoin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u128': int; + var $1_coin_Ghost$supply'#0'_$memory#401: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#402: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#403: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume {:print "$at(31,25156,25157)"} true; + assume ($IsValid'$1_coin_AggregatableCoin'#0''($Dereference($t0)) && $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615)); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @403 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + $1_coin_CoinInfo'#0'_$memory#403 := $1_coin_CoinInfo'#0'_$memory; + + // @401 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + $1_coin_Ghost$supply'#0'_$memory#401 := $1_coin_Ghost$supply'#0'_$memory; + + // @402 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#402 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + $t2 := $Dereference($t0); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:585:5+1 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,18,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // assume Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value>($t0)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:588:13+57 + assume {:print "$at(31,25385,25442)"} true; + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615); + + // $t3 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:39+11 + assume {:print "$at(31,25492,25503)"} true; + $t3 := $Dereference($t0)->$value; + + // $t4 := opaque begin: aggregator::read($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:22+29 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:22+29 + assume $IsValid'u128'($t4); + + // assume Eq($t4, aggregator::spec_read($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:22+29 + assume $IsEqual'u128'($t4, $1_aggregator_spec_read($t3)); + + // assume Le($t4, aggregator::spec_get_limit($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:22+29 + assume ($t4 <= $1_aggregator_spec_get_limit($t3)); + + // $t4 := opaque end: aggregator::read($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:22+29 + + // trace_local[amount]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:590:13+6 + assume {:print "$track_local(46,18,1):", $t4} $t4 == $t4; + + // $t5 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:27+7 + assume {:print "$at(31,25532,25539)"} true; + $t5 := 18446744073709551615; + assume $IsValid'u128'($t5); + + // $t6 := <=($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:24+2 + call $t6 := $Le($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + assume {:print "$at(31,25514,25597)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 +L0: + + // assert Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + assume {:print "$at(32,5854,5909)"} true; + assert {:msg "assert_failed(32,5854,5909): data invariant does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + assume {:print "$at(31,25514,25597)"} true; + + // $t7 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:56+34 + $t7 := 14; + assume $IsValid'u64'($t7); + + // $t8 := error::out_of_range($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:36+55 + call $t8 := $1_error_out_of_range($t7); + if ($abort_flag) { + assume {:print "$at(31,25541,25596)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,18):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + assume {:print "$at(31,25514,25597)"} true; + assume {:print "$track_abort(46,18):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:591:9+83 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:592:9+101 + assume {:print "$at(31,25607,25708)"} true; +L2: + + // assume Identical($t10, pack coin::Ghost$aggregate_supply<#0>(Sub(select coin::Ghost$aggregate_supply.v<#0>(global>(0x0)), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:593:13+72 + assume {:print "$at(31,25626,25698)"} true; + assume ($t10 == $1_coin_Ghost$aggregate_supply'#0'(($ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v - $t4))); + + // assume Identical($t11, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:593:13+72 + assume ($t11 == 0); + + // $t12 := borrow_global>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:593:13+72 + if (!$ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $t11)); + } + + // write_ref($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:593:13+72 + $t12 := $UpdateMutation($t12, $t10); + + // write_back[coin::Ghost$aggregate_supply<#0>@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:593:13+72 + $1_coin_Ghost$aggregate_supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$aggregate_supply'#0'_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // $t13 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:25+15 + assume {:print "$at(31,25734,25749)"} true; + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // opaque begin: aggregator::sub($t13, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + + // $t14 := read_ref($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + $t14 := $Dereference($t13); + + // assume Identical($t15, Lt(aggregator::spec_aggregator_get_val($t13), $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume ($t15 == ($1_aggregator_spec_aggregator_get_val($Dereference($t13)) < $t4)); + + // if ($t15) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + if ($t15) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 +L6: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume {:print "$at(31,25718,25758)"} true; + assume {:print "$track_abort(46,18):", $t9} $t9 == $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 +L5: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume {:print "$at(31,25718,25758)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t13 := $UpdateMutation($t13, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t13)); + + // assume Eq(aggregator::spec_get_limit($t13), aggregator::spec_get_limit($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t13)), $1_aggregator_spec_get_limit($t14)); + + // assume Eq(Freeze(false)($t13), aggregator::spec_aggregator_set_val($t14, Sub(aggregator::spec_aggregator_get_val($t14), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t13), $1_aggregator_spec_aggregator_set_val($t14, ($1_aggregator_spec_aggregator_get_val($t14) - $t4))); + + // opaque end: aggregator::sub($t13, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + + // write_back[Reference($t0).value (aggregator::Aggregator)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + $t0 := $UpdateMutation($t0, $Update'$1_coin_AggregatableCoin'#0''_value($Dereference($t0), $Dereference($t13))); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:595:9+40 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,18,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // assume Identical($t16, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:597:13+52 + assume {:print "$at(31,25787,25839)"} true; + assume ($t16 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t4))); + + // assume Identical($t17, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:597:13+52 + assume ($t17 == 0); + + // $t18 := borrow_global>($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:597:13+52 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t17)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t17), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t17)); + } + + // write_ref($t18, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:597:13+52 + $t18 := $UpdateMutation($t18, $t16); + + // write_back[coin::Ghost$supply<#0>@]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:597:13+52 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t18), + $Dereference($t18)); + + // $t19 := (u64)($t4) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:600:20+15 + assume {:print "$at(31,25895,25910)"} true; + call $t19 := $CastU64($t4); + if ($abort_flag) { + assume {:print "$at(31,25895,25910)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,18):", $t9} $t9 == $t9; + goto L4; + } + + // $t20 := pack coin::Coin<#0>($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:599:9+62 + assume {:print "$at(31,25859,25921)"} true; + $t20 := $1_coin_Coin'#0'($t19); + + // trace_return[0]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:599:9+62 + assume {:print "$track_return(46,18,0):", $t20} $t20 == $t20; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:599:9+62 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,18,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // assert Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + assume {:print "$at(32,5854,5909)"} true; + assert {:msg "assert_failed(32,5854,5909): data invariant does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:602:5+1 + assume {:print "$at(31,25926,25927)"} true; +L3: + + // assert Not(Gt(aggregator::spec_read[](select coin::AggregatableCoin.value>($t2)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:593:9+54 + assume {:print "$at(32,26139,26193)"} true; + assert {:msg "assert_failed(32,26139,26193): function does not abort under this condition"} + !($1_aggregator_spec_read($t2->$value) > 18446744073709551615); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@401]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@402]>(0x0))), select coin::CoinInfo.supply>(global[@403]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#401, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#402, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#403, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(select coin::Coin.value>($t20), aggregator::spec_aggregator_get_val(select coin::AggregatableCoin.value>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:594:9+77 + assume {:print "$at(32,26202,26279)"} true; + assert {:msg "assert_failed(32,26202,26279): post-condition does not hold"} + $IsEqual'u64'($t20->$value, $1_aggregator_spec_aggregator_get_val($t2->$value)); + + // return $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:594:9+77 + $ret0 := $t20; + $ret1 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:602:5+1 + assume {:print "$at(31,25926,25927)"} true; +L4: + + // assert Gt(aggregator::spec_read[](select coin::AggregatableCoin.value>($t2)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:592:5+250 + assume {:print "$at(32,26035,26285)"} true; + assert {:msg "assert_failed(32,26035,26285): abort not covered by any of the `aborts_if` clauses"} + ($1_aggregator_spec_read($t2->$value) > 18446744073709551615); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:592:5+250 + $abort_code := $t9; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun coin::ensure_paired_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+188 +procedure {:inline 1} $1_coin_ensure_paired_metadata'$1_starcoin_coin_STC'() returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t0: $1_string_String; + var $t1: $1_string_String; + var $t2: $signer; + var $t3: $signer; + var $t4: $1_object_ConstructorRef; + var $t5: $signer; + var $t6: $1_string_String; + var $t7: $1_fungible_asset_BurnRef; + var $t8: bool; + var $t9: $Mutation ($1_coin_CoinConversionMap); + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: $1_object_ConstructorRef; + var $t12: $signer; + var $t13: $1_fungible_asset_MintRef; + var $t14: $1_fungible_asset_TransferRef; + var $t15: $1_type_info_TypeInfo; + var $t16: $1_type_info_TypeInfo; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $Mutation ($1_coin_CoinConversionMap); + var $t29: $1_type_info_TypeInfo; + var $t30: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t31: bool; + var $t32: bool; + var $t33: $1_string_String; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: bool; + var $t37: bool; + var $t38: bool; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: $signer; + var $t46: $1_string_String; + var $t47: Vec (int); + var $t48: int; + var $t49: int; + var $t50: $1_option_Option'u128'; + var $t51: int; + var $t52: $1_string_String; + var $t53: int; + var $t54: $1_string_String; + var $t55: int; + var $t56: int; + var $t57: Vec (int); + var $t58: $1_string_String; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: $signer; + var $t62: $1_type_info_TypeInfo; + var $t63: $1_coin_PairedCoinType; + var $t64: $1_object_Object'$1_fungible_asset_Metadata'; + var $t65: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')); + var $t66: int; + var $t67: $1_coin_PairCreation; + var $t68: $1_fungible_asset_MintRef; + var $t69: $1_fungible_asset_TransferRef; + var $t70: $1_fungible_asset_BurnRef; + var $t71: $1_option_Option'$1_fungible_asset_MintRef'; + var $t72: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t73: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t74: $1_coin_PairedFungibleAssetRefs; + var $t75: Vec (int); + var $t76: $1_string_String; + var $t77: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t78: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_coin_CoinConversionMap': $1_coin_CoinConversionMap; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + + // bytecode translation starts here + // $t17 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:41+65 + assume {:print "$at(31,11246,11311)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(110, 116, 101, 114)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:23+84 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(31,11228,11312)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t18) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:9+99 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(31,11214,11313)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t20 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:315:13+60 + assume {:print "$at(31,11345,11405)"} true; + call $t20 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,11345,11405)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; +L0: + + // $t21 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; + $t21 := 26; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_state($t21) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:13+54 + call $t22 := $1_error_invalid_state($t21); + if ($abort_flag) { + assume {:print "$at(31,11419,11473)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + assume {:print "$track_abort(46,19):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + $t19 := $t22; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; +L2: + + // $t23 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; + $t23 := 1; + assume $IsValid'address'($t23); + + // $t24 := exists($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:17+6 + $t24 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 +L3: + + // $t25 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 + assume {:print "$at(31,11566,11596)"} true; + $t25 := 27; + assume $IsValid'u64'($t25); + + // $t26 := error::not_found($t25) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:65+48 + call $t26 := $1_error_not_found($t25); + if ($abort_flag) { + assume {:print "$at(31,11549,11597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + assume {:print "$track_abort(46,19):", $t26} $t26 == $t26; + + // $t19 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + $t19 := $t26; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; +L5: + + // $t27 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; + $t27 := 1; + assume $IsValid'address'($t27); + + // $t28 := borrow_global($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:19+17 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t27)) { + call $ExecFailureAbort(); + } else { + $t28 := $Mutation($Global($t27), EmptyVec(), $ResourceValue($1_coin_CoinConversionMap_$memory, $t27)); + } + if ($abort_flag) { + assume {:print "$at(31,11619,11636)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[map#41]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:13+3 + $temp_0'$1_coin_CoinConversionMap' := $Dereference($t28); + assume {:print "$track_local(46,19,9):", $temp_0'$1_coin_CoinConversionMap'} $temp_0'$1_coin_CoinConversionMap' == $temp_0'$1_coin_CoinConversionMap'; + + // $t29 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:20+30 + assume {:print "$at(31,11697,11727)"} true; + call $t29 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,11697,11727)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#42]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:13+4 + assume {:print "$track_local(46,19,15):", $t29} $t29 == $t29; + + // $t30 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:30+31 + assume {:print "$at(31,11758,11789)"} true; + $t30 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // $t31 := table::contains>($t30, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:14+54 + call $t31 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t30, $t29); + if ($abort_flag) { + assume {:print "$at(31,11742,11796)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t32 := !($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:13+1 + call $t32 := $Not($t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:9+2172 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; +L7: + + // $t33 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; + call $t33 := $1_type_info_type_name'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,10973,11005)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t34 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 97, 114, 99, 111, 105, 110, 95, 99, 111, 105, 110, 58, 58, 83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:58+57 + $t34 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 97, 114)), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 99, 111, 105)), MakeVec4(110, 58, 58, 83)), MakeVec2(84, 67)); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:45+71 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(31,11009,11080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t36 := ==($t33, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:42+2 + $t36 := $IsEqual'$1_string_String'($t33, $t35); + + // trace_local[is_stc#43]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:323:17+6 + assume {:print "$at(31,11816,11822)"} true; + assume {:print "$track_local(46,19,8):", $t36} $t36 == $t36; + + // $t37 := !($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:21+1 + assume {:print "$at(31,11865,11866)"} true; + call $t37 := $Not($t36); + + // $t38 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:373:66+5 + assume {:print "$at(31,14359,14364)"} true; + $t38 := false; + assume $IsValid'bool'($t38); + + // $t39 := ||($t37, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:29+2 + assume {:print "$at(31,11873,11875)"} true; + call $t39 := $Or($t37, $t38); + + // if ($t39) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + if ($t39) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L8: + + // drop($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + + // $t40 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:73+27 + $t40 := 28; + assume $IsValid'u64'($t40); + + // $t41 := error::invalid_state($t40) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:52+49 + call $t41 := $1_error_invalid_state($t40); + if ($abort_flag) { + assume {:print "$at(31,11896,11945)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + assume {:print "$track_abort(46,19):", $t41} $t41 == $t41; + + // $t19 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + $t19 := $t41; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:21+6 + assume {:print "$at(31,12007,12013)"} true; +L10: + + // if ($t36) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + if ($t36) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; +L12: + + // $t42 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; + $t42 := 1; + assume $IsValid'address'($t42); + + // $t43 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:82+24 + $t43 := 1; + assume $IsValid'address'($t43); + + // $t4 := object::create_sticky_object_at_address($t42, $t43) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:21+86 + call $t4 := $1_object_create_sticky_object_at_address($t42, $t43); + if ($abort_flag) { + assume {:print "$at(31,12037,12123)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; +L11: + + // $t44 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; + $t44 := 1; + assume $IsValid'address'($t44); + + // $t45 := opaque begin: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsValid'signer'($t45) && $1_signer_is_txn_signer($t45) && $1_signer_is_txn_signer_addr($t45->$addr); + + // assume Eq
(signer::$address_of($t45), $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsEqual'address'($1_signer_$address_of($t45), $t44); + + // $t45 := opaque end: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // $t46 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:41+32 + assume {:print "$at(31,12319,12351)"} true; + call $t46 := $1_type_info_type_name'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,12319,12351)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t47 := string::bytes($t46) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:26+48 + call $t47 := $1_string_bytes($t46); + if ($abort_flag) { + assume {:print "$at(31,12304,12352)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t48, signer::$address_of($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t48 == $1_signer_$address_of($t45)); + + // assume Identical($t49, object::spec_create_object_address($t48, $t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t49 == $1_object_spec_create_object_address($t48, $t47)); + + // $t4 := object::create_named_object($t45, $t47) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:329:21+205 + assume {:print "$at(31,12169,12374)"} true; + call $t4 := $1_object_create_named_object($t45, $t47); + if ($abort_flag) { + assume {:print "$at(31,12169,12374)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; +L13: + + // trace_local[metadata_object_cref#44]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:325:17+20 + assume {:print "$at(31,11964,11984)"} true; + assume {:print "$track_local(46,19,11):", $t4} $t4 == $t4; + + // $t50 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume {:print "$at(31,12531,12545)"} true; + + // assume And(WellFormed($t50), Le(Len(select option::Option.vec($t50)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume ($IsValid'$1_option_Option'u128''($t50) && (LenVec($t50->$vec) <= 1)); + + // assume Eq>($t50, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume $IsEqual'$1_option_Option'u128''($t50, $1_option_spec_none'u128'()); + + // $t50 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + + // assume Identical($t51, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t51 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t52 := coin::name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:338:17+16 + assume {:print "$at(31,12563,12579)"} true; + call $t52 := $1_coin_name'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,12563,12579)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t53, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t53 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t54 := coin::symbol<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:339:17+18 + assume {:print "$at(31,12597,12615)"} true; + call $t54 := $1_coin_symbol'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,12597,12615)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t55, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t55 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t56 := coin::decimals<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:340:17+20 + assume {:print "$at(31,12633,12653)"} true; + call $t56 := $1_coin_decimals'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,12633,12653)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t57 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:30+3 + assume {:print "$at(31,12684,12687)"} true; + $t57 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t57); + + // $t58 := string::utf8($t57) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:17+17 + call $t58 := $1_string_utf8($t57); + if ($abort_flag) { + assume {:print "$at(31,12671,12688)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t59 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:30+3 + assume {:print "$at(31,12719,12722)"} true; + $t59 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:17+17 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(31,12706,12723)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // primary_fungible_store::create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:335:13+331 + assume {:print "$at(31,12407,12738)"} true; + call $1_primary_fungible_store_create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60); + if ($abort_flag) { + assume {:print "$at(31,12407,12738)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t61 := object::generate_signer($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:43+46 + assume {:print "$at(31,12782,12828)"} true; + call $t61 := $1_object_generate_signer($t4); + if ($abort_flag) { + assume {:print "$at(31,12782,12828)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_object_signer#45]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:17+22 + assume {:print "$track_local(46,19,12):", $t61} $t61 == $t61; + + // $t62 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:24+30 + assume {:print "$at(31,12853,12883)"} true; + call $t62 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,12853,12883)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#46]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:17+4 + assume {:print "$track_local(46,19,16):", $t62} $t62 == $t62; + + // $t63 := pack coin::PairedCoinType($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:45+23 + assume {:print "$at(31,12929,12952)"} true; + $t63 := $1_coin_PairedCoinType($t62); + + // move_to($t63, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:13+7 + if ($ResourceExists($1_coin_PairedCoinType_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedCoinType_$memory := $ResourceUpdate($1_coin_PairedCoinType_$memory, $t61->$addr, $t63); + } + if ($abort_flag) { + assume {:print "$at(31,12897,12904)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t64 := object::object_from_constructor_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:32+58 + assume {:print "$at(31,12986,13044)"} true; + call $t64 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t4); + if ($abort_flag) { + assume {:print "$at(31,12986,13044)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_obj#47]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:17+12 + assume {:print "$track_local(46,19,10):", $t64} $t64 == $t64; + + // $t65 := borrow_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:24+35 + assume {:print "$at(31,13070,13105)"} true; + $t65 := $ChildMutation($t28, 0, $Dereference($t28)->$coin_to_fungible_asset_map); + + // table::add>($t65, $t62, $t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + call $t65 := $1_table_add'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t65, $t62, $t64); + if ($abort_flag) { + assume {:print "$at(31,13059,13126)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t28).coin_to_fungible_asset_map (table::Table>)]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + $t28 := $UpdateMutation($t28, $Update'$1_coin_CoinConversionMap'_coin_to_fungible_asset_map($Dereference($t28), $Dereference($t65))); + + // $t66 := object::object_address($t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:352:50+29 + assume {:print "$at(31,13249,13278)"} true; + call $t66 := $1_object_object_address'$1_fungible_asset_Metadata'($t64); + if ($abort_flag) { + assume {:print "$at(31,13249,13278)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t67 := pack coin::PairCreation($t62, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:25+140 + assume {:print "$at(31,13152,13292)"} true; + $t67 := $1_coin_PairCreation($t62, $t66); + + // opaque begin: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // opaque end: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // $t68 := fungible_asset::generate_mint_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:28+56 + assume {:print "$at(31,13363,13419)"} true; + call $t68 := $1_fungible_asset_generate_mint_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13363,13419)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mint_ref#48]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:17+8 + assume {:print "$track_local(46,19,13):", $t68} $t68 == $t68; + + // $t69 := fungible_asset::generate_transfer_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:32+60 + assume {:print "$at(31,13452,13512)"} true; + call $t69 := $1_fungible_asset_generate_transfer_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13452,13512)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#49]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:17+12 + assume {:print "$track_local(46,19,14):", $t69} $t69 == $t69; + + // $t70 := fungible_asset::generate_burn_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:28+56 + assume {:print "$at(31,13541,13597)"} true; + call $t70 := $1_fungible_asset_generate_burn_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13541,13597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[burn_ref#50]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:17+8 + assume {:print "$track_local(46,19,7):", $t70} $t70 == $t70; + + // $t71 := opaque begin: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume {:print "$at(31,13719,13741)"} true; + + // assume And(WellFormed($t71), Le(Len(select option::Option.vec($t71)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($t71) && (LenVec($t71->$vec) <= 1)); + + // assume Eq>($t71, option::spec_some($t68)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''($t71, $1_option_spec_some'$1_fungible_asset_MintRef'($t68)); + + // $t71 := opaque end: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + + // $t72 := opaque begin: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume {:print "$at(31,13781,13807)"} true; + + // assume And(WellFormed($t72), Le(Len(select option::Option.vec($t72)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($t72) && (LenVec($t72->$vec) <= 1)); + + // assume Eq>($t72, option::spec_some($t69)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''($t72, $1_option_spec_some'$1_fungible_asset_TransferRef'($t69)); + + // $t72 := opaque end: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + + // $t73 := opaque begin: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume {:print "$at(31,13843,13865)"} true; + + // assume And(WellFormed($t73), Le(Len(select option::Option.vec($t73)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($t73) && (LenVec($t73->$vec) <= 1)); + + // assume Eq>($t73, option::spec_some($t70)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''($t73, $1_option_spec_some'$1_fungible_asset_BurnRef'($t70)); + + // $t73 := opaque end: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + + // $t74 := pack coin::PairedFungibleAssetRefs($t71, $t72, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:360:17+225 + assume {:print "$at(31,13659,13884)"} true; + $t74 := $1_coin_PairedFungibleAssetRefs($t71, $t72, $t73); + + // move_to($t74, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:359:13+7 + assume {:print "$at(31,13611,13618)"} true; + if ($ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr, $t74); + } + if ($abort_flag) { + assume {:print "$at(31,13611,13618)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; +L6: + + // $t75 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; + $t75 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(120, 105, 116, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t75); + + // $t76 := string::utf8($t75) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:23+83 + call $t76 := $1_string_utf8($t75); + if ($abort_flag) { + assume {:print "$at(31,13933,14016)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t76) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:9+98 + call $1_debug_print'$1_string_String'($t76); + if ($abort_flag) { + assume {:print "$at(31,13919,14017)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t77 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + assume {:print "$at(31,14042,14073)"} true; + $t77 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // write_back[coin::CoinConversionMap@]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + $1_coin_CoinConversionMap_$memory := $ResourceUpdate($1_coin_CoinConversionMap_$memory, $GlobalLocationAddress($t28), + $Dereference($t28)); + + // $t78 := table::borrow>($t77, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:10+52 + call $t78 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t77, $t29); + if ($abort_flag) { + assume {:print "$at(31,14028,14080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_return[0]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:9+53 + assume {:print "$track_return(46,19,0):", $t78} $t78 == $t78; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; +L14: + + // return $t78 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; + $ret0 := $t78; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun coin::ensure_paired_metadata<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+188 +procedure {:inline 1} $1_coin_ensure_paired_metadata'#0'() returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t0: $1_string_String; + var $t1: $1_string_String; + var $t2: $signer; + var $t3: $signer; + var $t4: $1_object_ConstructorRef; + var $t5: $signer; + var $t6: $1_string_String; + var $t7: $1_fungible_asset_BurnRef; + var $t8: bool; + var $t9: $Mutation ($1_coin_CoinConversionMap); + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: $1_object_ConstructorRef; + var $t12: $signer; + var $t13: $1_fungible_asset_MintRef; + var $t14: $1_fungible_asset_TransferRef; + var $t15: $1_type_info_TypeInfo; + var $t16: $1_type_info_TypeInfo; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $Mutation ($1_coin_CoinConversionMap); + var $t29: $1_type_info_TypeInfo; + var $t30: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t31: bool; + var $t32: bool; + var $t33: $1_string_String; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: bool; + var $t37: bool; + var $t38: bool; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: $signer; + var $t46: $1_string_String; + var $t47: Vec (int); + var $t48: int; + var $t49: int; + var $t50: $1_option_Option'u128'; + var $t51: int; + var $t52: $1_string_String; + var $t53: int; + var $t54: $1_string_String; + var $t55: int; + var $t56: int; + var $t57: Vec (int); + var $t58: $1_string_String; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: $signer; + var $t62: $1_type_info_TypeInfo; + var $t63: $1_coin_PairedCoinType; + var $t64: $1_object_Object'$1_fungible_asset_Metadata'; + var $t65: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')); + var $t66: int; + var $t67: $1_coin_PairCreation; + var $t68: $1_fungible_asset_MintRef; + var $t69: $1_fungible_asset_TransferRef; + var $t70: $1_fungible_asset_BurnRef; + var $t71: $1_option_Option'$1_fungible_asset_MintRef'; + var $t72: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t73: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t74: $1_coin_PairedFungibleAssetRefs; + var $t75: Vec (int); + var $t76: $1_string_String; + var $t77: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t78: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_coin_CoinConversionMap': $1_coin_CoinConversionMap; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + + // bytecode translation starts here + // $t17 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:41+65 + assume {:print "$at(31,11246,11311)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(110, 116, 101, 114)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:23+84 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(31,11228,11312)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t18) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:9+99 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(31,11214,11313)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t20 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:315:13+60 + assume {:print "$at(31,11345,11405)"} true; + call $t20 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,11345,11405)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; +L0: + + // $t21 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; + $t21 := 26; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_state($t21) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:13+54 + call $t22 := $1_error_invalid_state($t21); + if ($abort_flag) { + assume {:print "$at(31,11419,11473)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + assume {:print "$track_abort(46,19):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + $t19 := $t22; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; +L2: + + // $t23 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; + $t23 := 1; + assume $IsValid'address'($t23); + + // $t24 := exists($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:17+6 + $t24 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 +L3: + + // $t25 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 + assume {:print "$at(31,11566,11596)"} true; + $t25 := 27; + assume $IsValid'u64'($t25); + + // $t26 := error::not_found($t25) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:65+48 + call $t26 := $1_error_not_found($t25); + if ($abort_flag) { + assume {:print "$at(31,11549,11597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + assume {:print "$track_abort(46,19):", $t26} $t26 == $t26; + + // $t19 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + $t19 := $t26; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; +L5: + + // $t27 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; + $t27 := 1; + assume $IsValid'address'($t27); + + // $t28 := borrow_global($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:19+17 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t27)) { + call $ExecFailureAbort(); + } else { + $t28 := $Mutation($Global($t27), EmptyVec(), $ResourceValue($1_coin_CoinConversionMap_$memory, $t27)); + } + if ($abort_flag) { + assume {:print "$at(31,11619,11636)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[map#41]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:13+3 + $temp_0'$1_coin_CoinConversionMap' := $Dereference($t28); + assume {:print "$track_local(46,19,9):", $temp_0'$1_coin_CoinConversionMap'} $temp_0'$1_coin_CoinConversionMap' == $temp_0'$1_coin_CoinConversionMap'; + + // $t29 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:20+30 + assume {:print "$at(31,11697,11727)"} true; + call $t29 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,11697,11727)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#42]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:13+4 + assume {:print "$track_local(46,19,15):", $t29} $t29 == $t29; + + // $t30 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:30+31 + assume {:print "$at(31,11758,11789)"} true; + $t30 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // $t31 := table::contains>($t30, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:14+54 + call $t31 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t30, $t29); + if ($abort_flag) { + assume {:print "$at(31,11742,11796)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t32 := !($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:13+1 + call $t32 := $Not($t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:9+2172 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; +L7: + + // $t33 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; + call $t33 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,10973,11005)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t34 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 97, 114, 99, 111, 105, 110, 95, 99, 111, 105, 110, 58, 58, 83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:58+57 + $t34 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 97, 114)), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 99, 111, 105)), MakeVec4(110, 58, 58, 83)), MakeVec2(84, 67)); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:45+71 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(31,11009,11080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t36 := ==($t33, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:42+2 + $t36 := $IsEqual'$1_string_String'($t33, $t35); + + // trace_local[is_stc#43]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:323:17+6 + assume {:print "$at(31,11816,11822)"} true; + assume {:print "$track_local(46,19,8):", $t36} $t36 == $t36; + + // $t37 := !($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:21+1 + assume {:print "$at(31,11865,11866)"} true; + call $t37 := $Not($t36); + + // $t38 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:373:66+5 + assume {:print "$at(31,14359,14364)"} true; + $t38 := false; + assume $IsValid'bool'($t38); + + // $t39 := ||($t37, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:29+2 + assume {:print "$at(31,11873,11875)"} true; + call $t39 := $Or($t37, $t38); + + // if ($t39) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + if ($t39) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L8: + + // drop($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + + // $t40 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:73+27 + $t40 := 28; + assume $IsValid'u64'($t40); + + // $t41 := error::invalid_state($t40) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:52+49 + call $t41 := $1_error_invalid_state($t40); + if ($abort_flag) { + assume {:print "$at(31,11896,11945)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + assume {:print "$track_abort(46,19):", $t41} $t41 == $t41; + + // $t19 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + $t19 := $t41; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:21+6 + assume {:print "$at(31,12007,12013)"} true; +L10: + + // if ($t36) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + if ($t36) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; +L12: + + // $t42 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; + $t42 := 1; + assume $IsValid'address'($t42); + + // $t43 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:82+24 + $t43 := 1; + assume $IsValid'address'($t43); + + // $t4 := object::create_sticky_object_at_address($t42, $t43) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:21+86 + call $t4 := $1_object_create_sticky_object_at_address($t42, $t43); + if ($abort_flag) { + assume {:print "$at(31,12037,12123)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; +L11: + + // $t44 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; + $t44 := 1; + assume $IsValid'address'($t44); + + // $t45 := opaque begin: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsValid'signer'($t45) && $1_signer_is_txn_signer($t45) && $1_signer_is_txn_signer_addr($t45->$addr); + + // assume Eq
(signer::$address_of($t45), $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsEqual'address'($1_signer_$address_of($t45), $t44); + + // $t45 := opaque end: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // $t46 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:41+32 + assume {:print "$at(31,12319,12351)"} true; + call $t46 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12319,12351)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t47 := string::bytes($t46) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:26+48 + call $t47 := $1_string_bytes($t46); + if ($abort_flag) { + assume {:print "$at(31,12304,12352)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t48, signer::$address_of($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t48 == $1_signer_$address_of($t45)); + + // assume Identical($t49, object::spec_create_object_address($t48, $t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t49 == $1_object_spec_create_object_address($t48, $t47)); + + // $t4 := object::create_named_object($t45, $t47) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:329:21+205 + assume {:print "$at(31,12169,12374)"} true; + call $t4 := $1_object_create_named_object($t45, $t47); + if ($abort_flag) { + assume {:print "$at(31,12169,12374)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; +L13: + + // trace_local[metadata_object_cref#44]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:325:17+20 + assume {:print "$at(31,11964,11984)"} true; + assume {:print "$track_local(46,19,11):", $t4} $t4 == $t4; + + // $t50 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume {:print "$at(31,12531,12545)"} true; + + // assume And(WellFormed($t50), Le(Len(select option::Option.vec($t50)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume ($IsValid'$1_option_Option'u128''($t50) && (LenVec($t50->$vec) <= 1)); + + // assume Eq>($t50, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume $IsEqual'$1_option_Option'u128''($t50, $1_option_spec_none'u128'()); + + // $t50 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + + // assume Identical($t51, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t51 == $1_type_info_$type_of'#0'()->$account_address); + + // $t52 := coin::name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:338:17+16 + assume {:print "$at(31,12563,12579)"} true; + call $t52 := $1_coin_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12563,12579)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t53, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t53 == $1_type_info_$type_of'#0'()->$account_address); + + // $t54 := coin::symbol<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:339:17+18 + assume {:print "$at(31,12597,12615)"} true; + call $t54 := $1_coin_symbol'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12597,12615)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t55, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t55 == $1_type_info_$type_of'#0'()->$account_address); + + // $t56 := coin::decimals<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:340:17+20 + assume {:print "$at(31,12633,12653)"} true; + call $t56 := $1_coin_decimals'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12633,12653)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t57 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:30+3 + assume {:print "$at(31,12684,12687)"} true; + $t57 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t57); + + // $t58 := string::utf8($t57) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:17+17 + call $t58 := $1_string_utf8($t57); + if ($abort_flag) { + assume {:print "$at(31,12671,12688)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t59 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:30+3 + assume {:print "$at(31,12719,12722)"} true; + $t59 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:17+17 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(31,12706,12723)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // primary_fungible_store::create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:335:13+331 + assume {:print "$at(31,12407,12738)"} true; + call $1_primary_fungible_store_create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60); + if ($abort_flag) { + assume {:print "$at(31,12407,12738)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t61 := object::generate_signer($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:43+46 + assume {:print "$at(31,12782,12828)"} true; + call $t61 := $1_object_generate_signer($t4); + if ($abort_flag) { + assume {:print "$at(31,12782,12828)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_object_signer#45]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:17+22 + assume {:print "$track_local(46,19,12):", $t61} $t61 == $t61; + + // $t62 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:24+30 + assume {:print "$at(31,12853,12883)"} true; + call $t62 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12853,12883)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#46]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:17+4 + assume {:print "$track_local(46,19,16):", $t62} $t62 == $t62; + + // $t63 := pack coin::PairedCoinType($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:45+23 + assume {:print "$at(31,12929,12952)"} true; + $t63 := $1_coin_PairedCoinType($t62); + + // move_to($t63, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:13+7 + if ($ResourceExists($1_coin_PairedCoinType_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedCoinType_$memory := $ResourceUpdate($1_coin_PairedCoinType_$memory, $t61->$addr, $t63); + } + if ($abort_flag) { + assume {:print "$at(31,12897,12904)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t64 := object::object_from_constructor_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:32+58 + assume {:print "$at(31,12986,13044)"} true; + call $t64 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t4); + if ($abort_flag) { + assume {:print "$at(31,12986,13044)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_obj#47]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:17+12 + assume {:print "$track_local(46,19,10):", $t64} $t64 == $t64; + + // $t65 := borrow_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:24+35 + assume {:print "$at(31,13070,13105)"} true; + $t65 := $ChildMutation($t28, 0, $Dereference($t28)->$coin_to_fungible_asset_map); + + // table::add>($t65, $t62, $t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + call $t65 := $1_table_add'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t65, $t62, $t64); + if ($abort_flag) { + assume {:print "$at(31,13059,13126)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t28).coin_to_fungible_asset_map (table::Table>)]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + $t28 := $UpdateMutation($t28, $Update'$1_coin_CoinConversionMap'_coin_to_fungible_asset_map($Dereference($t28), $Dereference($t65))); + + // $t66 := object::object_address($t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:352:50+29 + assume {:print "$at(31,13249,13278)"} true; + call $t66 := $1_object_object_address'$1_fungible_asset_Metadata'($t64); + if ($abort_flag) { + assume {:print "$at(31,13249,13278)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t67 := pack coin::PairCreation($t62, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:25+140 + assume {:print "$at(31,13152,13292)"} true; + $t67 := $1_coin_PairCreation($t62, $t66); + + // opaque begin: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // opaque end: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // $t68 := fungible_asset::generate_mint_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:28+56 + assume {:print "$at(31,13363,13419)"} true; + call $t68 := $1_fungible_asset_generate_mint_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13363,13419)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mint_ref#48]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:17+8 + assume {:print "$track_local(46,19,13):", $t68} $t68 == $t68; + + // $t69 := fungible_asset::generate_transfer_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:32+60 + assume {:print "$at(31,13452,13512)"} true; + call $t69 := $1_fungible_asset_generate_transfer_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13452,13512)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#49]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:17+12 + assume {:print "$track_local(46,19,14):", $t69} $t69 == $t69; + + // $t70 := fungible_asset::generate_burn_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:28+56 + assume {:print "$at(31,13541,13597)"} true; + call $t70 := $1_fungible_asset_generate_burn_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13541,13597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[burn_ref#50]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:17+8 + assume {:print "$track_local(46,19,7):", $t70} $t70 == $t70; + + // $t71 := opaque begin: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume {:print "$at(31,13719,13741)"} true; + + // assume And(WellFormed($t71), Le(Len(select option::Option.vec($t71)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($t71) && (LenVec($t71->$vec) <= 1)); + + // assume Eq>($t71, option::spec_some($t68)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''($t71, $1_option_spec_some'$1_fungible_asset_MintRef'($t68)); + + // $t71 := opaque end: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + + // $t72 := opaque begin: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume {:print "$at(31,13781,13807)"} true; + + // assume And(WellFormed($t72), Le(Len(select option::Option.vec($t72)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($t72) && (LenVec($t72->$vec) <= 1)); + + // assume Eq>($t72, option::spec_some($t69)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''($t72, $1_option_spec_some'$1_fungible_asset_TransferRef'($t69)); + + // $t72 := opaque end: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + + // $t73 := opaque begin: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume {:print "$at(31,13843,13865)"} true; + + // assume And(WellFormed($t73), Le(Len(select option::Option.vec($t73)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($t73) && (LenVec($t73->$vec) <= 1)); + + // assume Eq>($t73, option::spec_some($t70)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''($t73, $1_option_spec_some'$1_fungible_asset_BurnRef'($t70)); + + // $t73 := opaque end: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + + // $t74 := pack coin::PairedFungibleAssetRefs($t71, $t72, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:360:17+225 + assume {:print "$at(31,13659,13884)"} true; + $t74 := $1_coin_PairedFungibleAssetRefs($t71, $t72, $t73); + + // move_to($t74, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:359:13+7 + assume {:print "$at(31,13611,13618)"} true; + if ($ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr, $t74); + } + if ($abort_flag) { + assume {:print "$at(31,13611,13618)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; +L6: + + // $t75 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; + $t75 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(120, 105, 116, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t75); + + // $t76 := string::utf8($t75) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:23+83 + call $t76 := $1_string_utf8($t75); + if ($abort_flag) { + assume {:print "$at(31,13933,14016)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t76) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:9+98 + call $1_debug_print'$1_string_String'($t76); + if ($abort_flag) { + assume {:print "$at(31,13919,14017)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t77 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + assume {:print "$at(31,14042,14073)"} true; + $t77 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // write_back[coin::CoinConversionMap@]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + $1_coin_CoinConversionMap_$memory := $ResourceUpdate($1_coin_CoinConversionMap_$memory, $GlobalLocationAddress($t28), + $Dereference($t28)); + + // $t78 := table::borrow>($t77, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:10+52 + call $t78 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t77, $t29); + if ($abort_flag) { + assume {:print "$at(31,14028,14080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_return[0]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:9+53 + assume {:print "$track_return(46,19,0):", $t78} $t78 == $t78; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; +L14: + + // return $t78 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; + $ret0 := $t78; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun coin::ensure_paired_metadata [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+188 +procedure {:timeLimit 80} $1_coin_ensure_paired_metadata$verify() returns ($ret0: $1_object_Object'$1_fungible_asset_Metadata') +{ + // declare local variables + var $t0: $1_string_String; + var $t1: $1_string_String; + var $t2: $signer; + var $t3: $signer; + var $t4: $1_object_ConstructorRef; + var $t5: $signer; + var $t6: $1_string_String; + var $t7: $1_fungible_asset_BurnRef; + var $t8: bool; + var $t9: $Mutation ($1_coin_CoinConversionMap); + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: $1_object_ConstructorRef; + var $t12: $signer; + var $t13: $1_fungible_asset_MintRef; + var $t14: $1_fungible_asset_TransferRef; + var $t15: $1_type_info_TypeInfo; + var $t16: $1_type_info_TypeInfo; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $Mutation ($1_coin_CoinConversionMap); + var $t29: $1_type_info_TypeInfo; + var $t30: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t31: bool; + var $t32: bool; + var $t33: $1_string_String; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: bool; + var $t37: bool; + var $t38: bool; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: $signer; + var $t46: $1_string_String; + var $t47: Vec (int); + var $t48: int; + var $t49: int; + var $t50: $1_option_Option'u128'; + var $t51: int; + var $t52: $1_string_String; + var $t53: int; + var $t54: $1_string_String; + var $t55: int; + var $t56: int; + var $t57: Vec (int); + var $t58: $1_string_String; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: $signer; + var $t62: $1_type_info_TypeInfo; + var $t63: $1_coin_PairedCoinType; + var $t64: $1_object_Object'$1_fungible_asset_Metadata'; + var $t65: $Mutation (Table int ($1_object_Object'$1_fungible_asset_Metadata')); + var $t66: int; + var $t67: $1_coin_PairCreation; + var $t68: $1_fungible_asset_MintRef; + var $t69: $1_fungible_asset_TransferRef; + var $t70: $1_fungible_asset_BurnRef; + var $t71: $1_option_Option'$1_fungible_asset_MintRef'; + var $t72: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t73: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t74: $1_coin_PairedFungibleAssetRefs; + var $t75: Vec (int); + var $t76: $1_string_String; + var $t77: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t78: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_coin_CoinConversionMap': $1_coin_CoinConversionMap; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_coin_Ghost$supply'#0'_$memory#274: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#275: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#276: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume {:print "$at(31,14183,14184)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @276 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + $1_coin_CoinInfo'#0'_$memory#276 := $1_coin_CoinInfo'#0'_$memory; + + // @274 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + $1_coin_Ghost$supply'#0'_$memory#274 := $1_coin_Ghost$supply'#0'_$memory; + + // @275 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:372:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#275 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t17 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:41+65 + assume {:print "$at(31,11246,11311)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(110, 116, 101, 114)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:23+84 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(31,11228,11312)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t18) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:312:9+99 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(31,11214,11313)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t20 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:315:13+60 + assume {:print "$at(31,11345,11405)"} true; + call $t20 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,11345,11405)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; +L0: + + // $t21 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:34+32 + assume {:print "$at(31,11440,11472)"} true; + $t21 := 26; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_state($t21) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:316:13+54 + call $t22 := $1_error_invalid_state($t21); + if ($abort_flag) { + assume {:print "$at(31,11419,11473)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + assume {:print "$at(31,11324,11483)"} true; + assume {:print "$track_abort(46,19):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + $t19 := $t22; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:314:9+159 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; +L2: + + // $t23 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:43+19 + assume {:print "$at(31,11527,11546)"} true; + $t23 := 1; + assume $IsValid'address'($t23); + + // $t24 := exists($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:17+6 + $t24 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 +L3: + + // $t25 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:82+30 + assume {:print "$at(31,11566,11596)"} true; + $t25 := 27; + assume $IsValid'u64'($t25); + + // $t26 := error::not_found($t25) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:65+48 + call $t26 := $1_error_not_found($t25); + if ($abort_flag) { + assume {:print "$at(31,11549,11597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + assume {:print "$at(31,11493,11598)"} true; + assume {:print "$track_abort(46,19):", $t26} $t26 == $t26; + + // $t19 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + $t19 := $t26; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:318:9+105 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; +L5: + + // $t27 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:56+19 + assume {:print "$at(31,11656,11675)"} true; + $t27 := 1; + assume $IsValid'address'($t27); + + // $t28 := borrow_global($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:19+17 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t27)) { + call $ExecFailureAbort(); + } else { + $t28 := $Mutation($Global($t27), EmptyVec(), $ResourceValue($1_coin_CoinConversionMap_$memory, $t27)); + } + if ($abort_flag) { + assume {:print "$at(31,11619,11636)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[map#41]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:320:13+3 + $temp_0'$1_coin_CoinConversionMap' := $Dereference($t28); + assume {:print "$track_local(46,19,9):", $temp_0'$1_coin_CoinConversionMap'} $temp_0'$1_coin_CoinConversionMap' == $temp_0'$1_coin_CoinConversionMap'; + + // $t29 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:20+30 + assume {:print "$at(31,11697,11727)"} true; + call $t29 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,11697,11727)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#42]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:321:13+4 + assume {:print "$track_local(46,19,15):", $t29} $t29 == $t29; + + // $t30 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:30+31 + assume {:print "$at(31,11758,11789)"} true; + $t30 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // $t31 := table::contains>($t30, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:14+54 + call $t31 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t30, $t29); + if ($abort_flag) { + assume {:print "$at(31,11742,11796)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t32 := !($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:13+1 + call $t32 := $Not($t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:322:9+2172 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; +L7: + + // $t33 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:9+32 + assume {:print "$at(31,10973,11005)"} true; + call $t33 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,10973,11005)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t34 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 97, 114, 99, 111, 105, 110, 95, 99, 111, 105, 110, 58, 58, 83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:58+57 + $t34 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 97, 114)), MakeVec4(99, 111, 105, 110)), MakeVec4(95, 99, 111, 105)), MakeVec4(110, 58, 58, 83)), MakeVec2(84, 67)); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:45+71 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(31,11009,11080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t36 := ==($t33, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:308:42+2 + $t36 := $IsEqual'$1_string_String'($t33, $t35); + + // trace_local[is_stc#43]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:323:17+6 + assume {:print "$at(31,11816,11822)"} true; + assume {:print "$track_local(46,19,8):", $t36} $t36 == $t36; + + // $t37 := !($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:21+1 + assume {:print "$at(31,11865,11866)"} true; + call $t37 := $Not($t36); + + // $t38 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:373:66+5 + assume {:print "$at(31,14359,14364)"} true; + $t38 := false; + assume $IsValid'bool'($t38); + + // $t39 := ||($t37, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:29+2 + assume {:print "$at(31,11873,11875)"} true; + call $t39 := $Or($t37, $t38); + + // if ($t39) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + if ($t39) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 +L8: + + // drop($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + + // $t40 := 28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:73+27 + $t40 := 28; + assume $IsValid'u64'($t40); + + // $t41 := error::invalid_state($t40) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:52+49 + call $t41 := $1_error_invalid_state($t40); + if ($abort_flag) { + assume {:print "$at(31,11896,11945)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + assume {:print "$at(31,11857,11946)"} true; + assume {:print "$track_abort(46,19):", $t41} $t41 == $t41; + + // $t19 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + $t19 := $t41; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:324:13+89 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:21+6 + assume {:print "$at(31,12007,12013)"} true; +L10: + + // if ($t36) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + if ($t36) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; +L12: + + // $t42 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:61+19 + assume {:print "$at(31,12077,12096)"} true; + $t42 := 1; + assume $IsValid'address'($t42); + + // $t43 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:82+24 + $t43 := 1; + assume $IsValid'address'($t43); + + // $t4 := object::create_sticky_object_at_address($t42, $t43) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:327:21+86 + call $t4 := $1_object_create_sticky_object_at_address($t42, $t43); + if ($abort_flag) { + assume {:print "$at(31,12037,12123)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; +L11: + + // $t44 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:55+24 + assume {:print "$at(31,12252,12276)"} true; + $t44 := 1; + assume $IsValid'address'($t44); + + // $t45 := opaque begin: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsValid'signer'($t45) && $1_signer_is_txn_signer($t45) && $1_signer_is_txn_signer_addr($t45->$addr); + + // assume Eq
(signer::$address_of($t45), $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + assume $IsEqual'address'($1_signer_$address_of($t45), $t44); + + // $t45 := opaque end: create_signer::create_signer($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:330:26+54 + + // $t46 := type_info::type_name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:41+32 + assume {:print "$at(31,12319,12351)"} true; + call $t46 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12319,12351)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t47 := string::bytes($t46) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:331:26+48 + call $t47 := $1_string_bytes($t46); + if ($abort_flag) { + assume {:print "$at(31,12304,12352)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t48, signer::$address_of($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t48 == $1_signer_$address_of($t45)); + + // assume Identical($t49, object::spec_create_object_address($t48, $t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t49 == $1_object_spec_create_object_address($t48, $t47)); + + // $t4 := object::create_named_object($t45, $t47) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:329:21+205 + assume {:print "$at(31,12169,12374)"} true; + call $t4 := $1_object_create_named_object($t45, $t47); + if ($abort_flag) { + assume {:print "$at(31,12169,12374)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:326:17+389 + assume {:print "$at(31,12003,12392)"} true; +L13: + + // trace_local[metadata_object_cref#44]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:325:17+20 + assume {:print "$at(31,11964,11984)"} true; + assume {:print "$track_local(46,19,11):", $t4} $t4 == $t4; + + // $t50 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume {:print "$at(31,12531,12545)"} true; + + // assume And(WellFormed($t50), Le(Len(select option::Option.vec($t50)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume ($IsValid'$1_option_Option'u128''($t50) && (LenVec($t50->$vec) <= 1)); + + // assume Eq>($t50, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + assume $IsEqual'$1_option_Option'u128''($t50, $1_option_spec_none'u128'()); + + // $t50 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:337:17+14 + + // assume Identical($t51, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t51 == $1_type_info_$type_of'#0'()->$account_address); + + // $t52 := coin::name<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:338:17+16 + assume {:print "$at(31,12563,12579)"} true; + call $t52 := $1_coin_name'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12563,12579)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t53, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t53 == $1_type_info_$type_of'#0'()->$account_address); + + // $t54 := coin::symbol<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:339:17+18 + assume {:print "$at(31,12597,12615)"} true; + call $t54 := $1_coin_symbol'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12597,12615)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t55, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t55 == $1_type_info_$type_of'#0'()->$account_address); + + // $t56 := coin::decimals<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:340:17+20 + assume {:print "$at(31,12633,12653)"} true; + call $t56 := $1_coin_decimals'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12633,12653)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t57 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:30+3 + assume {:print "$at(31,12684,12687)"} true; + $t57 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t57); + + // $t58 := string::utf8($t57) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:341:17+17 + call $t58 := $1_string_utf8($t57); + if ($abort_flag) { + assume {:print "$at(31,12671,12688)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t59 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:30+3 + assume {:print "$at(31,12719,12722)"} true; + $t59 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:342:17+17 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(31,12706,12723)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // primary_fungible_store::create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:335:13+331 + assume {:print "$at(31,12407,12738)"} true; + call $1_primary_fungible_store_create_primary_store_enabled_fungible_asset($t4, $t50, $t52, $t54, $t56, $t58, $t60); + if ($abort_flag) { + assume {:print "$at(31,12407,12738)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t61 := object::generate_signer($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:43+46 + assume {:print "$at(31,12782,12828)"} true; + call $t61 := $1_object_generate_signer($t4); + if ($abort_flag) { + assume {:print "$at(31,12782,12828)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_object_signer#45]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:344:17+22 + assume {:print "$track_local(46,19,12):", $t61} $t61 == $t61; + + // $t62 := type_info::type_of<#0>() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:24+30 + assume {:print "$at(31,12853,12883)"} true; + call $t62 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,12853,12883)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[type#46]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:345:17+4 + assume {:print "$track_local(46,19,16):", $t62} $t62 == $t62; + + // $t63 := pack coin::PairedCoinType($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:45+23 + assume {:print "$at(31,12929,12952)"} true; + $t63 := $1_coin_PairedCoinType($t62); + + // move_to($t63, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:346:13+7 + if ($ResourceExists($1_coin_PairedCoinType_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedCoinType_$memory := $ResourceUpdate($1_coin_PairedCoinType_$memory, $t61->$addr, $t63); + } + if ($abort_flag) { + assume {:print "$at(31,12897,12904)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t64 := object::object_from_constructor_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:32+58 + assume {:print "$at(31,12986,13044)"} true; + call $t64 := $1_object_object_from_constructor_ref'$1_fungible_asset_Metadata'($t4); + if ($abort_flag) { + assume {:print "$at(31,12986,13044)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[metadata_obj#47]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:347:17+12 + assume {:print "$track_local(46,19,10):", $t64} $t64 == $t64; + + // $t65 := borrow_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:24+35 + assume {:print "$at(31,13070,13105)"} true; + $t65 := $ChildMutation($t28, 0, $Dereference($t28)->$coin_to_fungible_asset_map); + + // table::add>($t65, $t62, $t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + call $t65 := $1_table_add'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t65, $t62, $t64); + if ($abort_flag) { + assume {:print "$at(31,13059,13126)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t28).coin_to_fungible_asset_map (table::Table>)]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:349:13+67 + $t28 := $UpdateMutation($t28, $Update'$1_coin_CoinConversionMap'_coin_to_fungible_asset_map($Dereference($t28), $Dereference($t65))); + + // $t66 := object::object_address($t64) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:352:50+29 + assume {:print "$at(31,13249,13278)"} true; + call $t66 := $1_object_object_address'$1_fungible_asset_Metadata'($t64); + if ($abort_flag) { + assume {:print "$at(31,13249,13278)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t67 := pack coin::PairCreation($t62, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:25+140 + assume {:print "$at(31,13152,13292)"} true; + $t67 := $1_coin_PairCreation($t62, $t66); + + // opaque begin: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // opaque end: event::emit($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:350:13+153 + + // $t68 := fungible_asset::generate_mint_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:28+56 + assume {:print "$at(31,13363,13419)"} true; + call $t68 := $1_fungible_asset_generate_mint_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13363,13419)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mint_ref#48]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:356:17+8 + assume {:print "$track_local(46,19,13):", $t68} $t68 == $t68; + + // $t69 := fungible_asset::generate_transfer_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:32+60 + assume {:print "$at(31,13452,13512)"} true; + call $t69 := $1_fungible_asset_generate_transfer_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13452,13512)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#49]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:357:17+12 + assume {:print "$track_local(46,19,14):", $t69} $t69 == $t69; + + // $t70 := fungible_asset::generate_burn_ref($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:28+56 + assume {:print "$at(31,13541,13597)"} true; + call $t70 := $1_fungible_asset_generate_burn_ref($t4); + if ($abort_flag) { + assume {:print "$at(31,13541,13597)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[burn_ref#50]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:358:17+8 + assume {:print "$track_local(46,19,7):", $t70} $t70 == $t70; + + // $t71 := opaque begin: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume {:print "$at(31,13719,13741)"} true; + + // assume And(WellFormed($t71), Le(Len(select option::Option.vec($t71)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($t71) && (LenVec($t71->$vec) <= 1)); + + // assume Eq>($t71, option::spec_some($t68)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_MintRef''($t71, $1_option_spec_some'$1_fungible_asset_MintRef'($t68)); + + // $t71 := opaque end: option::some($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:361:35+22 + + // $t72 := opaque begin: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume {:print "$at(31,13781,13807)"} true; + + // assume And(WellFormed($t72), Le(Len(select option::Option.vec($t72)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($t72) && (LenVec($t72->$vec) <= 1)); + + // assume Eq>($t72, option::spec_some($t69)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + assume $IsEqual'$1_option_Option'$1_fungible_asset_TransferRef''($t72, $1_option_spec_some'$1_fungible_asset_TransferRef'($t69)); + + // $t72 := opaque end: option::some($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:362:39+26 + + // $t73 := opaque begin: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume {:print "$at(31,13843,13865)"} true; + + // assume And(WellFormed($t73), Le(Len(select option::Option.vec($t73)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($t73) && (LenVec($t73->$vec) <= 1)); + + // assume Eq>($t73, option::spec_some($t70)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + assume $IsEqual'$1_option_Option'$1_fungible_asset_BurnRef''($t73, $1_option_spec_some'$1_fungible_asset_BurnRef'($t70)); + + // $t73 := opaque end: option::some($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:363:35+22 + + // $t74 := pack coin::PairedFungibleAssetRefs($t71, $t72, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:360:17+225 + assume {:print "$at(31,13659,13884)"} true; + $t74 := $1_coin_PairedFungibleAssetRefs($t71, $t72, $t73); + + // move_to($t74, $t61) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:359:13+7 + assume {:print "$at(31,13611,13618)"} true; + if ($ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $t61->$addr, $t74); + } + if ($abort_flag) { + assume {:print "$at(31,13611,13618)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; +L6: + + // $t75 := [99, 111, 105, 110, 58, 58, 99, 114, 101, 97, 116, 101, 95, 97, 110, 100, 95, 114, 101, 116, 117, 114, 110, 95, 112, 97, 105, 114, 101, 100, 95, 109, 101, 116, 97, 100, 97, 116, 97, 95, 105, 102, 95, 110, 111, 116, 95, 101, 120, 105, 115, 116, 32, 124, 32, 101, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:41+64 + assume {:print "$at(31,13951,14015)"} true; + $t75 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 99, 114)), MakeVec4(101, 97, 116, 101)), MakeVec4(95, 97, 110, 100)), MakeVec4(95, 114, 101, 116)), MakeVec4(117, 114, 110, 95)), MakeVec4(112, 97, 105, 114)), MakeVec4(101, 100, 95, 109)), MakeVec4(101, 116, 97, 100)), MakeVec4(97, 116, 97, 95)), MakeVec4(105, 102, 95, 110)), MakeVec4(111, 116, 95, 101)), MakeVec4(120, 105, 115, 116)), MakeVec4(32, 124, 32, 101)), MakeVec4(120, 105, 116, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t75); + + // $t76 := string::utf8($t75) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:23+83 + call $t76 := $1_string_utf8($t75); + if ($abort_flag) { + assume {:print "$at(31,13933,14016)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // debug::print($t76) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:367:9+98 + call $1_debug_print'$1_string_String'($t76); + if ($abort_flag) { + assume {:print "$at(31,13919,14017)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // $t77 := get_field.coin_to_fungible_asset_map($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + assume {:print "$at(31,14042,14073)"} true; + $t77 := $Dereference($t28)->$coin_to_fungible_asset_map; + + // write_back[coin::CoinConversionMap@]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:24+31 + $1_coin_CoinConversionMap_$memory := $ResourceUpdate($1_coin_CoinConversionMap_$memory, $GlobalLocationAddress($t28), + $Dereference($t28)); + + // $t78 := table::borrow>($t77, $t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:10+52 + call $t78 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t77, $t29); + if ($abort_flag) { + assume {:print "$at(31,14028,14080)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(46,19):", $t19} $t19 == $t19; + goto L15; + } + + // trace_return[0]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:368:9+53 + assume {:print "$track_return(46,19,0):", $t78} $t78 == $t78; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; +L14: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@274]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@275]>(0x0))), select coin::CoinInfo.supply>(global[@276]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#274, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#275, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#276, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t78 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t78; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:374:5+1 + assume {:print "$at(31,14370,14371)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun coin::extract_all [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+372 +procedure {:timeLimit 80} $1_coin_extract_all$verify(_$t0: $Mutation ($1_coin_Coin'#0')) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_coin_Coin'#0')) +{ + // declare local variables + var $t1: int; + var $t2: $1_coin_Coin'#0'; + var $t3: int; + var $t4: $1_coin_Ghost$supply'#0'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'#0'); + var $t7: int; + var $t8: $Mutation (int); + var $t9: $1_coin_Ghost$supply'#0'; + var $t10: int; + var $t11: $Mutation ($1_coin_Ghost$supply'#0'); + var $t12: $1_coin_Coin'#0'; + var $t0: $Mutation ($1_coin_Coin'#0'); + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u64': int; + var $1_coin_Ghost$supply'#0'_$memory#404: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#405: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#406: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume {:print "$at(31,44023,44024)"} true; + assume $IsValid'$1_coin_Coin'#0''($Dereference($t0)); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @406 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + $1_coin_CoinInfo'#0'_$memory#406 := $1_coin_CoinInfo'#0'_$memory; + + // @404 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + $1_coin_Ghost$supply'#0'_$memory#404 := $1_coin_Ghost$supply'#0'_$memory; + + // @405 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#405 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + $t2 := $Dereference($t0); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1024:5+1 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,21,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // $t3 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1025:27+10 + assume {:print "$at(31,44127,44137)"} true; + $t3 := $Dereference($t0)->$value; + + // trace_local[total_value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1025:13+11 + assume {:print "$track_local(46,21,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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1027:13+56 + assume {:print "$at(31,44166,44222)"} true; + assume ($t4 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $Dereference($t0)->$value))); + + // assume Identical($t5, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1027:13+56 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1027:13+56 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1027:13+56 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1027:13+56 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1029:22+1 + assume {:print "$at(31,44255,44256)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1029:9+10 + $t8 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // write_ref($t8, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1029:9+14 + $t8 := $UpdateMutation($t8, $t7); + + // write_back[Reference($t0).value (u64)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1029:9+14 + $t0 := $UpdateMutation($t0, $Update'$1_coin_Coin'#0''_value($Dereference($t0), $Dereference($t8))); + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1029:9+14 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,21,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // assume Identical($t9, pack coin::Ghost$supply<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), $t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1031:13+57 + assume {:print "$at(31,44285,44342)"} true; + assume ($t9 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $t3))); + + // assume Identical($t10, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1031:13+57 + assume ($t10 == 0); + + // $t11 := borrow_global>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1031:13+57 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t10)); + } + + // write_ref($t11, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1031:13+57 + $t11 := $UpdateMutation($t11, $t9); + + // write_back[coin::Ghost$supply<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1031:13+57 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // $t12 := pack coin::Coin<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1033:9+27 + assume {:print "$at(31,44362,44389)"} true; + $t12 := $1_coin_Coin'#0'($t3); + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1033:9+27 + assume {:print "$track_return(46,21,0):", $t12} $t12 == $t12; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1033:9+27 + $temp_0'$1_coin_Coin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,21,0):", $temp_0'$1_coin_Coin'#0''} $temp_0'$1_coin_Coin'#0'' == $temp_0'$1_coin_Coin'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1034:5+1 + assume {:print "$at(31,44394,44395)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@404]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@405]>(0x0))), select coin::CoinInfo.supply>(global[@406]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#404, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#405, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#406, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(select coin::Coin.value>($t12), select coin::Coin.value>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:363:9+40 + assume {:print "$at(32,16123,16163)"} true; + assert {:msg "assert_failed(32,16123,16163): post-condition does not hold"} + $IsEqual'u64'($t12->$value, $t2->$value); + + // assert Eq(select coin::Coin.value>($t0), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:364:9+24 + assume {:print "$at(32,16172,16196)"} true; + assert {:msg "assert_failed(32,16172,16196): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$value, 0); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:364:9+24 + $ret0 := $t12; + $ret1 := $t0; + return; + +} + +// fun coin::fungible_asset_to_coin<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:397:5+684 +procedure {:inline 1} $1_coin_fungible_asset_to_coin'#0'(_$t0: $1_fungible_asset_FungibleAsset) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_coin_PairedCoinType; + var $t10: $1_type_info_TypeInfo; + var $t11: $1_type_info_TypeInfo; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $1_coin_Coin'#0'; + var $t0: $1_fungible_asset_FungibleAsset; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_fungible_asset_FungibleAsset': $1_fungible_asset_FungibleAsset; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[fungible_asset]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:397:5+1 + assume {:print "$at(31,15248,15249)"} true; + assume {:print "$track_local(46,24,0):", $t0} $t0 == $t0; + + // $t3 := fungible_asset::metadata_from_asset($t0) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:400:53+52 + assume {:print "$at(31,15434,15486)"} true; + call $t3 := $1_fungible_asset_metadata_from_asset($t0); + if ($abort_flag) { + assume {:print "$at(31,15434,15486)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // $t5 := object::object_address($t3) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:400:29+77 + call $t5 := $1_object_object_address'$1_fungible_asset_Metadata'($t3); + if ($abort_flag) { + assume {:print "$at(31,15410,15487)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:400:13+13 + assume {:print "$track_local(46,24,2):", $t5} $t5 == $t5; + + // $t6 := object::object_exists($t5) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:402:13+52 + assume {:print "$at(31,15518,15570)"} true; + call $t6 := $1_object_object_exists'$1_coin_PairedCoinType'($t5); + if ($abort_flag) { + assume {:print "$at(31,15518,15570)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 + assume {:print "$at(31,15497,15624)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 + assume {:print "$at(31,15497,15624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:403:30+12 + assume {:print "$at(31,15601,15613)"} true; +L0: + + // $t7 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:403:30+12 + assume {:print "$at(31,15601,15613)"} true; + $t7 := 15; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:403:13+30 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(31,15584,15614)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 + assume {:print "$at(31,15497,15624)"} true; + assume {:print "$track_abort(46,24):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 + $t4 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:401:9+127 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:405:60+13 + assume {:print "$at(31,15685,15698)"} true; +L2: + + // $t9 := get_global($t5) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:405:30+13 + assume {:print "$at(31,15655,15668)"} true; + if (!$ResourceExists($1_coin_PairedCoinType_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_coin_PairedCoinType_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(31,15655,15668)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // $t10 := get_field.type($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:405:30+49 + $t10 := $t9->$type; + + // $t11 := type_info::type_of<#0>() on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:35+30 + assume {:print "$at(31,15740,15770)"} true; + call $t11 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,15740,15770)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // $t12 := ==($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:32+2 + $t12 := $IsEqual'$1_type_info_TypeInfo'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 + assume {:print "$at(31,15714,15817)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:91+19 +L3: + + // $t13 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:91+19 + assume {:print "$at(31,15796,15815)"} true; + $t13 := 17; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:67+44 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(31,15772,15816)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 + assume {:print "$at(31,15714,15817)"} true; + assume {:print "$track_abort(46,24):", $t14} $t14 == $t14; + + // $t4 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 + $t4 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:406:9+103 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:407:52+14 + assume {:print "$at(31,15870,15884)"} true; +L5: + + // $t15 := fungible_asset::burn_internal($t0) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:407:22+45 + assume {:print "$at(31,15840,15885)"} true; + call $t15 := $1_fungible_asset_burn_internal($t0); + if ($abort_flag) { + assume {:print "$at(31,15840,15885)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // assume Identical($t16, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:108:9+58 + assume {:print "$at(32,6091,6149)"} true; + assume ($t16 == $1_type_info_$type_of'#0'()->$account_address); + + // $t17 := coin::mint_internal<#0>($t15) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:408:9+31 + assume {:print "$at(31,15895,15926)"} true; + call $t17 := $1_coin_mint_internal'#0'($t15); + if ($abort_flag) { + assume {:print "$at(31,15895,15926)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,24):", $t4} $t4 == $t4; + goto L7; + } + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:408:9+31 + assume {:print "$track_return(46,24,0):", $t17} $t17 == $t17; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:409:5+1 + assume {:print "$at(31,15931,15932)"} true; +L6: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:409:5+1 + assume {:print "$at(31,15931,15932)"} true; + $ret0 := $t17; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:409:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:409:5+1 + assume {:print "$at(31,15931,15932)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::get_paired_burn_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+673 +procedure {:timeLimit 80} $1_coin_get_paired_burn_ref$verify(_$t0: $1_coin_BurnCapability'#0') returns ($ret0: $1_fungible_asset_BurnRef, $ret1: $1_coin_BurnRefReceipt) +{ + // declare local variables + var $t1: $Mutation ($1_option_Option'$1_fungible_asset_BurnRef'); + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: int; + var $t4: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: bool; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t17: $Mutation ($1_option_Option'$1_fungible_asset_BurnRef'); + var $t18: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_fungible_asset_BurnRef; + var $t23: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t24: bool; + var $t25: $1_coin_BurnRefReceipt; + var $t0: $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_BurnRefReceipt': $1_coin_BurnRefReceipt; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'': $1_option_Option'$1_fungible_asset_BurnRef'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $1_coin_Ghost$supply'#0'_$memory#407: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#408: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#409: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume {:print "$at(31,20707,20708)"} true; + assume $IsValid'$1_coin_BurnCapability'#0''($t0); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @409 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + $1_coin_CoinInfo'#0'_$memory#409 := $1_coin_CoinInfo'#0'_$memory; + + // @407 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + $1_coin_Ghost$supply'#0'_$memory#407 := $1_coin_Ghost$supply'#0'_$memory; + + // @408 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#408 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[_]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:496:5+1 + assume {:print "$track_local(46,25,0):", $t0} $t0 == $t0; + + // $t5 := coin::paired_metadata<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t5 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_opt#54]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,25,4):", $t5} $t5 == $t5; + + // $t7 := opaque begin: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t7 := opaque end: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t8 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,25):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t10 := opaque begin: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t11, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t11 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // if ($t11) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t11) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L12: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L11: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t10); + + // assume Eq>($t10, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t10, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t10 := opaque end: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:499:13+8 + assume {:print "$at(31,20885,20893)"} true; + assume {:print "$track_local(46,25,2):", $t10} $t10 == $t10; + + // $t12 := object::object_address($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:500:29+25 + assume {:print "$at(31,20967,20992)"} true; + call $t12 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(31,20967,20992)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_addr]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:500:13+13 + assume {:print "$track_local(46,25,3):", $t12} $t12 == $t12; + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:17+6 + assume {:print "$at(31,21010,21016)"} true; + $t13 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 + assume {:print "$at(31,21002,21113)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:81+37 +L3: + + // $t14 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:81+37 + assume {:print "$at(31,21074,21111)"} true; + $t14 := 19; + assume $IsValid'u64'($t14); + + // $t15 := error::internal($t14) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:65+54 + call $t15 := $1_error_internal($t14); + if ($abort_flag) { + assume {:print "$at(31,21058,21112)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 + assume {:print "$at(31,21002,21113)"} true; + assume {:print "$track_abort(46,25):", $t15} $t15 == $t15; + + // $t6 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 + $t6 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:501:9+111 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:502:76+13 + assume {:print "$at(31,21190,21203)"} true; +L5: + + // $t16 := borrow_global($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:502:33+17 + assume {:print "$at(31,21147,21164)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t12)); + } + if ($abort_flag) { + assume {:print "$at(31,21147,21164)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // $t17 := borrow_field.burn_ref_opt($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:502:28+75 + $t17 := $ChildMutation($t16, 2, $Dereference($t16)->$burn_ref_opt); + + // trace_local[burn_ref_opt]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:502:13+12 + $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'' := $Dereference($t17); + assume {:print "$track_local(46,25,1):", $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''} $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'' == $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''; + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:33+12 + assume {:print "$at(31,21251,21263)"} true; + $t18 := $Dereference($t17); + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:17+29 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:17+29 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:17+29 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_fungible_asset_BurnRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:17+29 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + assume {:print "$at(31,21227,21304)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 +L6: + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + assume {:print "$at(31,21227,21304)"} true; + + // $t20 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:65+19 + $t20 := 25; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:48+37 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(31,21266,21303)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + assume {:print "$at(31,21227,21304)"} true; + assume {:print "$track_abort(46,25):", $t21} $t21 == $t21; + + // $t6 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + $t6 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:503:9+77 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:26+12 + assume {:print "$at(31,21331,21343)"} true; +L8: + + // $t22 := opaque begin: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume {:print "$at(31,21315,21344)"} true; + + // $t23 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + $t23 := $Dereference($t17); + + // assume Identical($t24, option::spec_is_none($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume ($t24 == $1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17))); + + // if ($t24) goto L15 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + if ($t24) { goto L15; } else { goto L16; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 +L14: + + // assume And(option::spec_is_none($t17), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume {:print "$at(31,21315,21344)"} true; + assume ($1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17)) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume {:print "$at(31,21315,21344)"} true; + assume {:print "$track_abort(46,25):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 +L13: + + // $t17 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume {:print "$at(31,21315,21344)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''; + $t17 := $UpdateMutation($t17, $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''); + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($Dereference($t17)) && (LenVec($Dereference($t17)->$vec) <= 1)); + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume $IsValid'$1_fungible_asset_BurnRef'($t22); + + // assume Eq($t22, option::spec_borrow($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume $IsEqual'$1_fungible_asset_BurnRef'($t22, $1_option_spec_borrow'$1_fungible_asset_BurnRef'($t23)); + + // assume option::spec_is_none($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume $1_option_spec_is_none'$1_fungible_asset_BurnRef'($Dereference($t17)); + + // $t22 := opaque end: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + + // write_back[Reference($t16).burn_ref_opt (option::Option)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + $t16 := $UpdateMutation($t16, $Update'$1_coin_PairedFungibleAssetRefs'_burn_ref_opt($Dereference($t16), $Dereference($t17))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:10+29 + assume {:print "$at(31,21315,21344)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // $t25 := pack coin::BurnRefReceipt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:41+27 + $t25 := $1_coin_BurnRefReceipt($t10); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:9+60 + assume {:print "$track_return(46,25,0):", $t22} $t22 == $t22; + + // trace_return[1]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:504:9+60 + assume {:print "$track_return(46,25,1):", $t25} $t25 == $t25; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:505:5+1 + assume {:print "$at(31,21379,21380)"} true; +L9: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@407]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@408]>(0x0))), select coin::CoinInfo.supply>(global[@409]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#407, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#408, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#409, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return ($t22, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t22; + $ret1 := $t25; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:505:5+1 + assume {:print "$at(31,21379,21380)"} true; +L10: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:505:5+1 + assume {:print "$at(31,21379,21380)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L16 at :1:1+10 +L16: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + +} + +// fun coin::get_paired_mint_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+673 +procedure {:timeLimit 80} $1_coin_get_paired_mint_ref$verify(_$t0: $1_coin_MintCapability'#0') returns ($ret0: $1_fungible_asset_MintRef, $ret1: $1_coin_MintRefReceipt) +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t4: $Mutation ($1_option_Option'$1_fungible_asset_MintRef'); + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: bool; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t17: $Mutation ($1_option_Option'$1_fungible_asset_MintRef'); + var $t18: $1_option_Option'$1_fungible_asset_MintRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_fungible_asset_MintRef; + var $t23: $1_option_Option'$1_fungible_asset_MintRef'; + var $t24: bool; + var $t25: $1_coin_MintRefReceipt; + var $t0: $1_coin_MintCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_coin_MintRefReceipt': $1_coin_MintRefReceipt; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_MintRef'': $1_option_Option'$1_fungible_asset_MintRef'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $1_coin_Ghost$supply'#0'_$memory#413: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#414: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#415: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume {:print "$at(31,16817,16818)"} true; + assume $IsValid'$1_coin_MintCapability'#0''($t0); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @415 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + $1_coin_CoinInfo'#0'_$memory#415 := $1_coin_CoinInfo'#0'_$memory; + + // @413 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + $1_coin_Ghost$supply'#0'_$memory#413 := $1_coin_Ghost$supply'#0'_$memory; + + // @414 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#414 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[_]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:427:5+1 + assume {:print "$track_local(46,26,0):", $t0} $t0 == $t0; + + // $t5 := coin::paired_metadata<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t5 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_opt#55]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,26,3):", $t5} $t5 == $t5; + + // $t7 := opaque begin: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t7 := opaque end: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t8 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,26):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t10 := opaque begin: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t11, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t11 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // if ($t11) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t11) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L12: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L11: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t10); + + // assume Eq>($t10, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t10, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t10 := opaque end: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:430:13+8 + assume {:print "$at(31,16995,17003)"} true; + assume {:print "$track_local(46,26,1):", $t10} $t10 == $t10; + + // $t12 := object::object_address($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:431:29+25 + assume {:print "$at(31,17077,17102)"} true; + call $t12 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(31,17077,17102)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_addr]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:431:13+13 + assume {:print "$track_local(46,26,2):", $t12} $t12 == $t12; + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:17+6 + assume {:print "$at(31,17120,17126)"} true; + $t13 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 + assume {:print "$at(31,17112,17223)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:81+37 +L3: + + // $t14 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:81+37 + assume {:print "$at(31,17184,17221)"} true; + $t14 := 19; + assume $IsValid'u64'($t14); + + // $t15 := error::internal($t14) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:65+54 + call $t15 := $1_error_internal($t14); + if ($abort_flag) { + assume {:print "$at(31,17168,17222)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 + assume {:print "$at(31,17112,17223)"} true; + assume {:print "$track_abort(46,26):", $t15} $t15 == $t15; + + // $t6 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 + $t6 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:432:9+111 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:433:76+13 + assume {:print "$at(31,17300,17313)"} true; +L5: + + // $t16 := borrow_global($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:433:33+17 + assume {:print "$at(31,17257,17274)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t12)); + } + if ($abort_flag) { + assume {:print "$at(31,17257,17274)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // $t17 := borrow_field.mint_ref_opt($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:433:28+75 + $t17 := $ChildMutation($t16, 0, $Dereference($t16)->$mint_ref_opt); + + // trace_local[mint_ref_opt]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:433:13+12 + $temp_0'$1_option_Option'$1_fungible_asset_MintRef'' := $Dereference($t17); + assume {:print "$track_local(46,26,4):", $temp_0'$1_option_Option'$1_fungible_asset_MintRef''} $temp_0'$1_option_Option'$1_fungible_asset_MintRef'' == $temp_0'$1_option_Option'$1_fungible_asset_MintRef''; + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:33+12 + assume {:print "$at(31,17361,17373)"} true; + $t18 := $Dereference($t17); + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:17+29 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:17+29 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:17+29 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_fungible_asset_MintRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:17+29 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + assume {:print "$at(31,17337,17414)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 +L6: + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + assume {:print "$at(31,17337,17414)"} true; + + // $t20 := 21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:65+19 + $t20 := 21; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:48+37 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(31,17376,17413)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + assume {:print "$at(31,17337,17414)"} true; + assume {:print "$track_abort(46,26):", $t21} $t21 == $t21; + + // $t6 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + $t6 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:434:9+77 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:26+12 + assume {:print "$at(31,17441,17453)"} true; +L8: + + // $t22 := opaque begin: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume {:print "$at(31,17425,17454)"} true; + + // $t23 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + $t23 := $Dereference($t17); + + // assume Identical($t24, option::spec_is_none($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume ($t24 == $1_option_spec_is_none'$1_fungible_asset_MintRef'($Dereference($t17))); + + // if ($t24) goto L15 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + if ($t24) { goto L15; } else { goto L16; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 +L14: + + // assume And(option::spec_is_none($t17), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume {:print "$at(31,17425,17454)"} true; + assume ($1_option_spec_is_none'$1_fungible_asset_MintRef'($Dereference($t17)) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume {:print "$at(31,17425,17454)"} true; + assume {:print "$track_abort(46,26):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 +L13: + + // $t17 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume {:print "$at(31,17425,17454)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_MintRef''; + $t17 := $UpdateMutation($t17, $temp_0'$1_option_Option'$1_fungible_asset_MintRef''); + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($Dereference($t17)) && (LenVec($Dereference($t17)->$vec) <= 1)); + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume $IsValid'$1_fungible_asset_MintRef'($t22); + + // assume Eq($t22, option::spec_borrow($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume $IsEqual'$1_fungible_asset_MintRef'($t22, $1_option_spec_borrow'$1_fungible_asset_MintRef'($t23)); + + // assume option::spec_is_none($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume $1_option_spec_is_none'$1_fungible_asset_MintRef'($Dereference($t17)); + + // $t22 := opaque end: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + + // write_back[Reference($t16).mint_ref_opt (option::Option)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + $t16 := $UpdateMutation($t16, $Update'$1_coin_PairedFungibleAssetRefs'_mint_ref_opt($Dereference($t16), $Dereference($t17))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:10+29 + assume {:print "$at(31,17425,17454)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // $t25 := pack coin::MintRefReceipt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:41+27 + $t25 := $1_coin_MintRefReceipt($t10); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:9+60 + assume {:print "$track_return(46,26,0):", $t22} $t22 == $t22; + + // trace_return[1]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:435:9+60 + assume {:print "$track_return(46,26,1):", $t25} $t25 == $t25; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:436:5+1 + assume {:print "$at(31,17489,17490)"} true; +L9: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@413]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@414]>(0x0))), select coin::CoinInfo.supply>(global[@415]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#413, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#414, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#415, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return ($t22, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t22; + $ret1 := $t25; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:436:5+1 + assume {:print "$at(31,17489,17490)"} true; +L10: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:436:5+1 + assume {:print "$at(31,17489,17490)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L16 at :1:1+10 +L16: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + +} + +// fun coin::get_paired_transfer_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+711 +procedure {:timeLimit 80} $1_coin_get_paired_transfer_ref$verify(_$t0: $1_coin_FreezeCapability'#0') returns ($ret0: $1_fungible_asset_TransferRef, $ret1: $1_coin_TransferRefReceipt) +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_Metadata'; + var $t2: int; + var $t3: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t4: $Mutation ($1_option_Option'$1_fungible_asset_TransferRef'); + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_object_Object'$1_fungible_asset_Metadata'; + var $t11: bool; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t17: $Mutation ($1_option_Option'$1_fungible_asset_TransferRef'); + var $t18: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_fungible_asset_TransferRef; + var $t23: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t24: bool; + var $t25: $1_coin_TransferRefReceipt; + var $t0: $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_TransferRefReceipt': $1_coin_TransferRefReceipt; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_TransferRef'': $1_option_Option'$1_fungible_asset_TransferRef'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $1_coin_Ghost$supply'#0'_$memory#419: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#420: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#421: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume {:print "$at(31,18711,18712)"} true; + assume $IsValid'$1_coin_FreezeCapability'#0''($t0); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @421 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + $1_coin_CoinInfo'#0'_$memory#421 := $1_coin_CoinInfo'#0'_$memory; + + // @419 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + $1_coin_Ghost$supply'#0'_$memory#419 := $1_coin_Ghost$supply'#0'_$memory; + + // @420 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#420 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[_]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:460:5+1 + assume {:print "$track_local(46,27,0):", $t0} $t0 == $t0; + + // $t5 := coin::paired_metadata<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t5 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_opt#56]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,27,3):", $t5} $t5 == $t5; + + // $t7 := opaque begin: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t7); + + // assume Eq($t7, option::spec_is_some>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t7, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t7 := opaque end: option::is_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t8 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t8 := 16; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,27):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t10 := opaque begin: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t11, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t11 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // if ($t11) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t11) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L12: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t5) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L11: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t10); + + // assume Eq>($t10, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t10, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t5)); + + // $t10 := opaque end: option::destroy_some>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:463:13+8 + assume {:print "$at(31,18903,18911)"} true; + assume {:print "$track_local(46,27,1):", $t10} $t10 == $t10; + + // $t12 := object::object_address($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:464:29+25 + assume {:print "$at(31,18985,19010)"} true; + call $t12 := $1_object_object_address'$1_fungible_asset_Metadata'($t10); + if ($abort_flag) { + assume {:print "$at(31,18985,19010)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[metadata_addr]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:464:13+13 + assume {:print "$track_local(46,27,2):", $t12} $t12 == $t12; + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:17+6 + assume {:print "$at(31,19028,19034)"} true; + $t13 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 + assume {:print "$at(31,19020,19131)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:81+37 +L3: + + // $t14 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:81+37 + assume {:print "$at(31,19092,19129)"} true; + $t14 := 19; + assume $IsValid'u64'($t14); + + // $t15 := error::internal($t14) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:65+54 + call $t15 := $1_error_internal($t14); + if ($abort_flag) { + assume {:print "$at(31,19076,19130)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 + assume {:print "$at(31,19020,19131)"} true; + assume {:print "$track_abort(46,27):", $t15} $t15 == $t15; + + // $t6 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 + $t6 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:465:9+111 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:466:80+13 + assume {:print "$at(31,19212,19225)"} true; +L5: + + // $t16 := borrow_global($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:466:37+17 + assume {:print "$at(31,19169,19186)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t12)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t12), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t12)); + } + if ($abort_flag) { + assume {:print "$at(31,19169,19186)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // $t17 := borrow_field.transfer_ref_opt($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:466:32+79 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$transfer_ref_opt); + + // trace_local[transfer_ref_opt]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:466:13+16 + $temp_0'$1_option_Option'$1_fungible_asset_TransferRef'' := $Dereference($t17); + assume {:print "$track_local(46,27,4):", $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''} $temp_0'$1_option_Option'$1_fungible_asset_TransferRef'' == $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''; + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:33+16 + assume {:print "$at(31,19277,19293)"} true; + $t18 := $Dereference($t17); + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:17+33 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:17+33 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:17+33 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_fungible_asset_TransferRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:17+33 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + assume {:print "$at(31,19253,19338)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 +L6: + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + assume {:print "$at(31,19253,19338)"} true; + + // $t20 := 23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:69+23 + $t20 := 23; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:52+41 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(31,19296,19337)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + assume {:print "$at(31,19253,19338)"} true; + assume {:print "$track_abort(46,27):", $t21} $t21 == $t21; + + // $t6 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + $t6 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:467:9+85 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:26+16 + assume {:print "$at(31,19365,19381)"} true; +L8: + + // $t22 := opaque begin: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume {:print "$at(31,19349,19382)"} true; + + // $t23 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + $t23 := $Dereference($t17); + + // assume Identical($t24, option::spec_is_none($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume ($t24 == $1_option_spec_is_none'$1_fungible_asset_TransferRef'($Dereference($t17))); + + // if ($t24) goto L15 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + if ($t24) { goto L15; } else { goto L16; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 +L14: + + // assume And(option::spec_is_none($t17), Eq(262145, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume {:print "$at(31,19349,19382)"} true; + assume ($1_option_spec_is_none'$1_fungible_asset_TransferRef'($Dereference($t17)) && $IsEqual'num'(262145, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume {:print "$at(31,19349,19382)"} true; + assume {:print "$track_abort(46,27):", $t6} $t6 == $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 +L13: + + // $t17 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume {:print "$at(31,19349,19382)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''; + $t17 := $UpdateMutation($t17, $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''); + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($Dereference($t17)) && (LenVec($Dereference($t17)->$vec) <= 1)); + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume $IsValid'$1_fungible_asset_TransferRef'($t22); + + // assume Eq($t22, option::spec_borrow($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume $IsEqual'$1_fungible_asset_TransferRef'($t22, $1_option_spec_borrow'$1_fungible_asset_TransferRef'($t23)); + + // assume option::spec_is_none($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume $1_option_spec_is_none'$1_fungible_asset_TransferRef'($Dereference($t17)); + + // $t22 := opaque end: option::extract($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + + // write_back[Reference($t16).transfer_ref_opt (option::Option)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + $t16 := $UpdateMutation($t16, $Update'$1_coin_PairedFungibleAssetRefs'_transfer_ref_opt($Dereference($t16), $Dereference($t17))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:10+33 + assume {:print "$at(31,19349,19382)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // $t25 := pack coin::TransferRefReceipt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:45+31 + $t25 := $1_coin_TransferRefReceipt($t10); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:9+68 + assume {:print "$track_return(46,27,0):", $t22} $t22 == $t22; + + // trace_return[1]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:468:9+68 + assume {:print "$track_return(46,27,1):", $t25} $t25 == $t25; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:469:5+1 + assume {:print "$at(31,19421,19422)"} true; +L9: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@419]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@420]>(0x0))), select coin::CoinInfo.supply>(global[@421]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#419, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#420, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#421, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return ($t22, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t22; + $ret1 := $t25; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:469:5+1 + assume {:print "$at(31,19421,19422)"} true; +L10: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:469:5+1 + assume {:print "$at(31,19421,19422)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L16 at :1:1+10 +L16: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + +} + +// fun coin::initialize_aggregatable_coin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+293 +procedure {:timeLimit 80} $1_coin_initialize_aggregatable_coin$verify(_$t0: $signer) returns ($ret0: $1_coin_AggregatableCoin'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_aggregator_Aggregator; + var $t4: int; + var $t5: $1_coin_AggregatableCoin'#0'; + var $t0: $signer; + var $temp_0'$1_coin_AggregatableCoin'#0'': $1_coin_AggregatableCoin'#0'; + var $temp_0'signer': $signer; + var $1_aggregator_factory_AggregatorFactory_$memory#425: $Memory $1_aggregator_factory_AggregatorFactory; + var $1_coin_Ghost$supply'#0'_$memory#426: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#427: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#428: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume {:print "$at(31,24524,24525)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @425 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + $1_aggregator_factory_AggregatorFactory_$memory#425 := $1_aggregator_factory_AggregatorFactory_$memory; + + // @428 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + $1_coin_CoinInfo'#0'_$memory#428 := $1_coin_CoinInfo'#0'_$memory; + + // @426 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + $1_coin_Ghost$supply'#0'_$memory#426 := $1_coin_Ghost$supply'#0'_$memory; + + // @427 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#427 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:571:5+1 + assume {:print "$track_local(46,29,0):", $t0} $t0 == $t0; + + // $t1 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:572:84+7 + assume {:print "$at(31,24724,24731)"} true; + $t1 := 18446744073709551615; + assume $IsValid'u128'($t1); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:71:9+39 + assume {:print "$at(22,3349,3388)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // $t3 := aggregator_factory::create_aggregator($t0, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:572:26+66 + assume {:print "$at(31,24666,24732)"} true; + call $t3 := $1_aggregator_factory_create_aggregator($t0, $t1); + if ($abort_flag) { + assume {:print "$at(31,24666,24732)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,29):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := pack coin::AggregatableCoin<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:573:9+69 + assume {:print "$at(31,24742,24811)"} true; + $t5 := $1_coin_AggregatableCoin'#0'($t3); + + // assert Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t5)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + assume {:print "$at(32,5854,5909)"} true; + assert {:msg "assert_failed(32,5854,5909): data invariant does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($t5->$value), 18446744073709551615); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:573:9+69 + assume {:print "$at(31,24742,24811)"} true; + assume {:print "$track_return(46,29,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:576:5+1 + assume {:print "$at(31,24816,24817)"} true; +L1: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/system_addresses.spec.move:71:9+91 + assume {:print "$at(109,2819,2910)"} true; + assert {:msg "assert_failed(109,2819,2910): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 1); + + // assert Not(Not(exists[@425](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/aggregator_factory.spec.move:64:9+58 + assume {:print "$at(22,3029,3087)"} true; + assert {:msg "assert_failed(22,3029,3087): function does not abort under this condition"} + !!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#425, 1); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@426]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@427]>(0x0))), select coin::CoinInfo.supply>(global[@428]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#426, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#427, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#428, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:576:5+1 + assume {:print "$at(31,24816,24817)"} true; +L2: + + // assert Or(Neq
(signer::$address_of[]($t0), 0x1), Not(exists[@425](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:582:5+274 + assume {:print "$at(32,25567,25841)"} true; + assert {:msg "assert_failed(32,25567,25841): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), 1) || !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#425, 1)); + + // assert Or(And(Neq
(signer::$address_of[]($t0), 0x1), Eq(5, $t4)), Not(exists[@425](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:582:5+274 + assert {:msg "assert_failed(32,25567,25841): abort code not covered by any of the `aborts_if` or `aborts_with` clauses"} + ((!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)) || !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#425, 1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:582:5+274 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::initialize_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1435 +procedure {:inline 1} $1_coin_initialize_internal'$1_starcoin_coin_STC'(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool, _$t5: bool) returns ($ret0: $1_coin_BurnCapability'$1_starcoin_coin_STC', $ret1: $1_coin_FreezeCapability'$1_starcoin_coin_STC', $ret2: $1_coin_MintCapability'$1_starcoin_coin_STC') +{ + // declare local variables + var $t6: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t7: int; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: int; + var $t11: $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_optional_aggregator_OptionalAggregator; + var $t41: $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $t42: bool; + var $t43: $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $t44: bool; + var $t45: $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $t46: bool; + var $t47: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$modifies: [int]bool; + var $temp_0'$1_coin_BurnCapability'$1_starcoin_coin_STC'': $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_CoinInfo'$1_starcoin_coin_STC'': $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_FreezeCapability'$1_starcoin_coin_STC'': $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_MintCapability'$1_starcoin_coin_STC'': $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#166: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#167: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#168: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t14 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$at(31,47435,47436)"} true; + assume {:print "$track_local(46,30,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,4):", $t4} $t4 == $t4; + + // trace_local[parallelizable]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,5):", $t5} $t5 == $t5; + + // $t15 := signer::address_of($t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:28+27 + assume {:print "$at(31,47757,47784)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,47757,47784)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_local[account_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:13+12 + assume {:print "$track_local(46,30,10):", $t15} $t15 == $t15; + + // $t17 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume {:print "$at(31,47816,47840)"} true; + + // @168 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#168 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @166 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#166 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @167 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#167 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsValid'address'($t17); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@166]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@167]>(0x0))), select coin::CoinInfo.supply>(global[@168]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#166, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#167, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#168, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t17, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsEqual'address'($t17, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t17 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + + // $t18 := ==($t17, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:38+2 + $t18 := $IsEqual'address'($t17, $t15); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:37+27 + assume {:print "$at(31,47894,47921)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:13+52 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(31,47870,47922)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + assume {:print "$track_abort(46,30):", $t20} $t20 == $t20; + + // $t16 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + $t16 := $t20; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + goto L19; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:41+12 + assume {:print "$at(31,47993,48005)"} true; +L2: + + // $t21 := exists>($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:14+6 + assume {:print "$at(31,47966,47972)"} true; + $t21 := $ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t15); + + // $t22 := !($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:13+1 + call $t22 := $Not($t21); + + // if ($t22) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L3: + + // $t23 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:35+28 + assume {:print "$at(31,48042,48070)"} true; + $t23 := 2; + assume $IsValid'u64'($t23); + + // $t24 := error::already_exists($t23) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:13+51 + call $t24 := $1_error_already_exists($t23); + if ($abort_flag) { + assume {:print "$at(31,48020,48071)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + assume {:print "$track_abort(46,30):", $t24} $t24 == $t24; + + // $t16 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + $t16 := $t24; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + goto L19; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:32+5 + assume {:print "$at(31,48116,48121)"} true; +L5: + + // $t25 := string::length($t1) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:17+21 + assume {:print "$at(31,48101,48122)"} true; + call $t25 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(31,48101,48122)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t26 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:42+20 + $t26 := 32; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:39+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L6: + + // $t28 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:88+19 + assume {:print "$at(31,48172,48191)"} true; + $t28 := 12; + assume $IsValid'u64'($t28); + + // $t29 := error::invalid_argument($t28) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:64+44 + call $t29 := $1_error_invalid_argument($t28); + if ($abort_flag) { + assume {:print "$at(31,48148,48192)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + assume {:print "$track_abort(46,30):", $t29} $t29 == $t29; + + // $t16 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + $t16 := $t29; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + goto L19; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:32+7 + assume {:print "$at(31,48226,48233)"} true; +L8: + + // $t30 := string::length($t2) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:17+23 + assume {:print "$at(31,48211,48234)"} true; + call $t30 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(31,48211,48234)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t31 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:44+22 + $t31 := 10; + assume $IsValid'u64'($t31); + + // $t32 := <=($t30, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:41+2 + call $t32 := $Le($t30, $t31); + + // if ($t32) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + if ($t32) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L9: + + // $t33 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:92+21 + assume {:print "$at(31,48286,48307)"} true; + $t33 := 13; + assume $IsValid'u64'($t33); + + // $t34 := error::invalid_argument($t33) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:68+46 + call $t34 := $1_error_invalid_argument($t33); + if ($abort_flag) { + assume {:print "$at(31,48262,48308)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + assume {:print "$track_abort(46,30):", $t34} $t34 == $t34; + + // $t16 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + $t16 := $t34; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + goto L19; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:17+8 + assume {:print "$at(31,48327,48335)"} true; +L11: + + // $t35 := 38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:28+16 + assume {:print "$at(31,48338,48354)"} true; + $t35 := 38; + assume $IsValid'u8'($t35); + + // $t36 := <($t3, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:26+1 + call $t36 := $Lt($t3, $t35); + + // if ($t36) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + if ($t36) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L12: + + // $t37 := 29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:70+28 + assume {:print "$at(31,48380,48408)"} true; + $t37 := 29; + assume $IsValid'u64'($t37); + + // $t38 := error::invalid_argument($t37) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:46+53 + call $t38 := $1_error_invalid_argument($t37); + if ($abort_flag) { + assume {:print "$at(31,48356,48409)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + assume {:print "$track_abort(46,30):", $t38} $t38 == $t38; + + // $t16 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + $t16 := $t38; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + goto L19; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L14: + + // if ($t4) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + if ($t4) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; +L16: + + // $t39 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; + $t39 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t39); + + // $t40 := optional_aggregator::new($t39, $t5) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:21+50 + call $t40 := $1_optional_aggregator_new($t39, $t5); + if ($abort_flag) { + assume {:print "$at(31,48610,48660)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t6 := opaque begin: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume {:print "$at(31,48576,48678)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_some($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_some'$1_optional_aggregator_OptionalAggregator'($t40)); + + // $t6 := opaque end: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; +L15: + + // $t6 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_none'$1_optional_aggregator_OptionalAggregator'()); + + // $t6 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L17: + + // $t41 := pack coin::CoinInfo<#0>($t1, $t2, $t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:25+290 + assume {:print "$at(31,48437,48727)"} true; + $t41 := $1_coin_CoinInfo'$1_starcoin_coin_STC'($t1, $t2, $t3, $t6); + + // trace_local[coin_info]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:13+9 + assume {:print "$track_local(46,30,11):", $t41} $t41 == $t41; + + // move_to>($t41, $t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1143:9+7 + assume {:print "$at(31,48737,48744)"} true; + if ($ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t0->$addr, $t41); + } + if ($abort_flag) { + assume {:print "$at(31,48737,48744)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t42 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + assume {:print "$at(31,48776,48803)"} true; + $t42 := false; + assume $IsValid'bool'($t42); + + // $t43 := pack coin::BurnCapability<#0>($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + $t43 := $1_coin_BurnCapability'$1_starcoin_coin_STC'($t42); + + // $t44 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t44 := false; + assume $IsValid'bool'($t44); + + // $t45 := pack coin::FreezeCapability<#0>($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t45 := $1_coin_FreezeCapability'$1_starcoin_coin_STC'($t44); + + // $t46 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t46 := false; + assume $IsValid'bool'($t46); + + // $t47 := pack coin::MintCapability<#0>($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t47 := $1_coin_MintCapability'$1_starcoin_coin_STC'($t46); + + // trace_return[0]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,0):", $t43} $t43 == $t43; + + // trace_return[1]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,1):", $t45} $t45 == $t45; + + // trace_return[2]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,2):", $t47} $t47 == $t47; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; +L18: + + // return ($t43, $t45, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; + $ret0 := $t43; + $ret1 := $t45; + $ret2 := $t47; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 +L19: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun coin::initialize_internal<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1435 +procedure {:inline 1} $1_coin_initialize_internal'#0'(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool, _$t5: bool) returns ($ret0: $1_coin_BurnCapability'#0', $ret1: $1_coin_FreezeCapability'#0', $ret2: $1_coin_MintCapability'#0') +{ + // declare local variables + var $t6: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t7: int; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: int; + var $t11: $1_coin_CoinInfo'#0'; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_optional_aggregator_OptionalAggregator; + var $t41: $1_coin_CoinInfo'#0'; + var $t42: bool; + var $t43: $1_coin_BurnCapability'#0'; + var $t44: bool; + var $t45: $1_coin_FreezeCapability'#0'; + var $t46: bool; + var $t47: $1_coin_MintCapability'#0'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_CoinInfo'#0'': $1_coin_CoinInfo'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_coin_Ghost$supply'#0'_$memory#166: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#167: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#168: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t14 == $1_type_info_$type_of'#0'()->$account_address); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$at(31,47435,47436)"} true; + assume {:print "$track_local(46,30,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,4):", $t4} $t4 == $t4; + + // trace_local[parallelizable]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,5):", $t5} $t5 == $t5; + + // $t15 := signer::address_of($t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:28+27 + assume {:print "$at(31,47757,47784)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,47757,47784)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_local[account_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:13+12 + assume {:print "$track_local(46,30,10):", $t15} $t15 == $t15; + + // $t17 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume {:print "$at(31,47816,47840)"} true; + + // @168 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_CoinInfo'#0'_$memory#168 := $1_coin_CoinInfo'#0'_$memory; + + // @166 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$supply'#0'_$memory#166 := $1_coin_Ghost$supply'#0'_$memory; + + // @167 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#167 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsValid'address'($t17); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@166]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@167]>(0x0))), select coin::CoinInfo.supply>(global[@168]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#166, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#167, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#168, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t17, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsEqual'address'($t17, $1_type_info_$type_of'#0'()->$account_address); + + // $t17 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + + // $t18 := ==($t17, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:38+2 + $t18 := $IsEqual'address'($t17, $t15); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:37+27 + assume {:print "$at(31,47894,47921)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:13+52 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(31,47870,47922)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + assume {:print "$track_abort(46,30):", $t20} $t20 == $t20; + + // $t16 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + $t16 := $t20; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + goto L19; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:41+12 + assume {:print "$at(31,47993,48005)"} true; +L2: + + // $t21 := exists>($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:14+6 + assume {:print "$at(31,47966,47972)"} true; + $t21 := $ResourceExists($1_coin_CoinInfo'#0'_$memory, $t15); + + // $t22 := !($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:13+1 + call $t22 := $Not($t21); + + // if ($t22) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L3: + + // $t23 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:35+28 + assume {:print "$at(31,48042,48070)"} true; + $t23 := 2; + assume $IsValid'u64'($t23); + + // $t24 := error::already_exists($t23) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:13+51 + call $t24 := $1_error_already_exists($t23); + if ($abort_flag) { + assume {:print "$at(31,48020,48071)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + assume {:print "$track_abort(46,30):", $t24} $t24 == $t24; + + // $t16 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + $t16 := $t24; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + goto L19; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:32+5 + assume {:print "$at(31,48116,48121)"} true; +L5: + + // $t25 := string::length($t1) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:17+21 + assume {:print "$at(31,48101,48122)"} true; + call $t25 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(31,48101,48122)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t26 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:42+20 + $t26 := 32; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:39+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L6: + + // $t28 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:88+19 + assume {:print "$at(31,48172,48191)"} true; + $t28 := 12; + assume $IsValid'u64'($t28); + + // $t29 := error::invalid_argument($t28) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:64+44 + call $t29 := $1_error_invalid_argument($t28); + if ($abort_flag) { + assume {:print "$at(31,48148,48192)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + assume {:print "$track_abort(46,30):", $t29} $t29 == $t29; + + // $t16 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + $t16 := $t29; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + goto L19; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:32+7 + assume {:print "$at(31,48226,48233)"} true; +L8: + + // $t30 := string::length($t2) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:17+23 + assume {:print "$at(31,48211,48234)"} true; + call $t30 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(31,48211,48234)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t31 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:44+22 + $t31 := 10; + assume $IsValid'u64'($t31); + + // $t32 := <=($t30, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:41+2 + call $t32 := $Le($t30, $t31); + + // if ($t32) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + if ($t32) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L9: + + // $t33 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:92+21 + assume {:print "$at(31,48286,48307)"} true; + $t33 := 13; + assume $IsValid'u64'($t33); + + // $t34 := error::invalid_argument($t33) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:68+46 + call $t34 := $1_error_invalid_argument($t33); + if ($abort_flag) { + assume {:print "$at(31,48262,48308)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + assume {:print "$track_abort(46,30):", $t34} $t34 == $t34; + + // $t16 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + $t16 := $t34; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + goto L19; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:17+8 + assume {:print "$at(31,48327,48335)"} true; +L11: + + // $t35 := 38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:28+16 + assume {:print "$at(31,48338,48354)"} true; + $t35 := 38; + assume $IsValid'u8'($t35); + + // $t36 := <($t3, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:26+1 + call $t36 := $Lt($t3, $t35); + + // if ($t36) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + if ($t36) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L12: + + // $t37 := 29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:70+28 + assume {:print "$at(31,48380,48408)"} true; + $t37 := 29; + assume $IsValid'u64'($t37); + + // $t38 := error::invalid_argument($t37) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:46+53 + call $t38 := $1_error_invalid_argument($t37); + if ($abort_flag) { + assume {:print "$at(31,48356,48409)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + assume {:print "$track_abort(46,30):", $t38} $t38 == $t38; + + // $t16 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + $t16 := $t38; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + goto L19; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L14: + + // if ($t4) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + if ($t4) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; +L16: + + // $t39 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; + $t39 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t39); + + // $t40 := optional_aggregator::new($t39, $t5) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:21+50 + call $t40 := $1_optional_aggregator_new($t39, $t5); + if ($abort_flag) { + assume {:print "$at(31,48610,48660)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t6 := opaque begin: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume {:print "$at(31,48576,48678)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_some($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_some'$1_optional_aggregator_OptionalAggregator'($t40)); + + // $t6 := opaque end: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; +L15: + + // $t6 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_none'$1_optional_aggregator_OptionalAggregator'()); + + // $t6 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L17: + + // $t41 := pack coin::CoinInfo<#0>($t1, $t2, $t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:25+290 + assume {:print "$at(31,48437,48727)"} true; + $t41 := $1_coin_CoinInfo'#0'($t1, $t2, $t3, $t6); + + // trace_local[coin_info]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:13+9 + assume {:print "$track_local(46,30,11):", $t41} $t41 == $t41; + + // move_to>($t41, $t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1143:9+7 + assume {:print "$at(31,48737,48744)"} true; + if ($ResourceExists($1_coin_CoinInfo'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $t0->$addr, $t41); + } + if ($abort_flag) { + assume {:print "$at(31,48737,48744)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t42 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + assume {:print "$at(31,48776,48803)"} true; + $t42 := false; + assume $IsValid'bool'($t42); + + // $t43 := pack coin::BurnCapability<#0>($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + $t43 := $1_coin_BurnCapability'#0'($t42); + + // $t44 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t44 := false; + assume $IsValid'bool'($t44); + + // $t45 := pack coin::FreezeCapability<#0>($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t45 := $1_coin_FreezeCapability'#0'($t44); + + // $t46 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t46 := false; + assume $IsValid'bool'($t46); + + // $t47 := pack coin::MintCapability<#0>($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t47 := $1_coin_MintCapability'#0'($t46); + + // trace_return[0]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,0):", $t43} $t43 == $t43; + + // trace_return[1]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,1):", $t45} $t45 == $t45; + + // trace_return[2]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,2):", $t47} $t47 == $t47; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; +L18: + + // return ($t43, $t45, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; + $ret0 := $t43; + $ret1 := $t45; + $ret2 := $t47; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 +L19: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun coin::initialize_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1435 +procedure {:timeLimit 80} $1_coin_initialize_internal$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool, _$t5: bool) returns ($ret0: $1_coin_BurnCapability'#0', $ret1: $1_coin_FreezeCapability'#0', $ret2: $1_coin_MintCapability'#0') +{ + // declare local variables + var $t6: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t7: int; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: int; + var $t11: $1_coin_CoinInfo'#0'; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: $1_optional_aggregator_OptionalAggregator; + var $t41: $1_coin_CoinInfo'#0'; + var $t42: bool; + var $t43: $1_coin_BurnCapability'#0'; + var $t44: bool; + var $t45: $1_coin_FreezeCapability'#0'; + var $t46: bool; + var $t47: $1_coin_MintCapability'#0'; + var $t48: $1_coin_CoinInfo'#0'; + var $t49: $1_optional_aggregator_OptionalAggregator; + var $t50: int; + var $t51: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_CoinInfo'#0'': $1_coin_CoinInfo'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_coin_CoinInfo'#0'_$memory#159: $Memory $1_coin_CoinInfo'#0'; + var $1_aggregator_factory_AggregatorFactory_$memory#160: $Memory $1_aggregator_factory_AggregatorFactory; + var $1_coin_Ghost$supply'#0'_$memory#161: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#162: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#163: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$at(31,47435,47436)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $IsValid'bool'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $IsValid'bool'($t5); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t14 == $1_type_info_$type_of'#0'()->$account_address); + + // assume CanModify>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:485:9+50 + assume {:print "$at(32,21201,21251)"} true; + assume $1_coin_CoinInfo'#0'_$modifies[$t12]; + + // @160 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:485:9+50 + $1_aggregator_factory_AggregatorFactory_$memory#160 := $1_aggregator_factory_AggregatorFactory_$memory; + + // @159 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:485:9+50 + $1_coin_CoinInfo'#0'_$memory#159 := $1_coin_CoinInfo'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$at(31,47435,47436)"} true; + assume {:print "$track_local(46,30,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,4):", $t4} $t4 == $t4; + + // trace_local[parallelizable]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1109:5+1 + assume {:print "$track_local(46,30,5):", $t5} $t5 == $t5; + + // $t15 := signer::address_of($t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:28+27 + assume {:print "$at(31,47757,47784)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,47757,47784)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_local[account_addr]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1117:13+12 + assume {:print "$track_local(46,30,10):", $t15} $t15 == $t15; + + // $t17 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume {:print "$at(31,47816,47840)"} true; + + // @163 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_CoinInfo'#0'_$memory#163 := $1_coin_CoinInfo'#0'_$memory; + + // @161 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$supply'#0'_$memory#161 := $1_coin_Ghost$supply'#0'_$memory; + + // @162 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#162 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsValid'address'($t17); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@161]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@162]>(0x0))), select coin::CoinInfo.supply>(global[@163]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#161, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#162, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#163, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t17, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + assume $IsEqual'address'($t17, $1_type_info_$type_of'#0'()->$account_address); + + // $t17 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:13+24 + + // $t18 := ==($t17, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1120:38+2 + $t18 := $IsEqual'address'($t17, $t15); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:37+27 + assume {:print "$at(31,47894,47921)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1121:13+52 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(31,47870,47922)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + assume {:print "$at(31,47795,47933)"} true; + assume {:print "$track_abort(46,30):", $t20} $t20 == $t20; + + // $t16 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + $t16 := $t20; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1119:9+138 + goto L19; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:41+12 + assume {:print "$at(31,47993,48005)"} true; +L2: + + // $t21 := exists>($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:14+6 + assume {:print "$at(31,47966,47972)"} true; + $t21 := $ResourceExists($1_coin_CoinInfo'#0'_$memory, $t15); + + // $t22 := !($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1125:13+1 + call $t22 := $Not($t21); + + // if ($t22) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 +L3: + + // $t23 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:35+28 + assume {:print "$at(31,48042,48070)"} true; + $t23 := 2; + assume $IsValid'u64'($t23); + + // $t24 := error::already_exists($t23) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1126:13+51 + call $t24 := $1_error_already_exists($t23); + if ($abort_flag) { + assume {:print "$at(31,48020,48071)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + assume {:print "$at(31,47944,48082)"} true; + assume {:print "$track_abort(46,30):", $t24} $t24 == $t24; + + // $t16 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + $t16 := $t24; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1124:9+138 + goto L19; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:32+5 + assume {:print "$at(31,48116,48121)"} true; +L5: + + // $t25 := string::length($t1) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:17+21 + assume {:print "$at(31,48101,48122)"} true; + call $t25 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(31,48101,48122)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t26 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:42+20 + $t26 := 32; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:39+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 +L6: + + // $t28 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:88+19 + assume {:print "$at(31,48172,48191)"} true; + $t28 := 12; + assume $IsValid'u64'($t28); + + // $t29 := error::invalid_argument($t28) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:64+44 + call $t29 := $1_error_invalid_argument($t28); + if ($abort_flag) { + assume {:print "$at(31,48148,48192)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + assume {:print "$at(31,48093,48193)"} true; + assume {:print "$track_abort(46,30):", $t29} $t29 == $t29; + + // $t16 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + $t16 := $t29; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1129:9+100 + goto L19; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:32+7 + assume {:print "$at(31,48226,48233)"} true; +L8: + + // $t30 := string::length($t2) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:17+23 + assume {:print "$at(31,48211,48234)"} true; + call $t30 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(31,48211,48234)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t31 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:44+22 + $t31 := 10; + assume $IsValid'u64'($t31); + + // $t32 := <=($t30, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:41+2 + call $t32 := $Le($t30, $t31); + + // if ($t32) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + if ($t32) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 +L9: + + // $t33 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:92+21 + assume {:print "$at(31,48286,48307)"} true; + $t33 := 13; + assume $IsValid'u64'($t33); + + // $t34 := error::invalid_argument($t33) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:68+46 + call $t34 := $1_error_invalid_argument($t33); + if ($abort_flag) { + assume {:print "$at(31,48262,48308)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + assume {:print "$at(31,48203,48309)"} true; + assume {:print "$track_abort(46,30):", $t34} $t34 == $t34; + + // $t16 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + $t16 := $t34; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1130:9+106 + goto L19; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:17+8 + assume {:print "$at(31,48327,48335)"} true; +L11: + + // $t35 := 38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:28+16 + assume {:print "$at(31,48338,48354)"} true; + $t35 := 38; + assume $IsValid'u8'($t35); + + // $t36 := <($t3, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:26+1 + call $t36 := $Lt($t3, $t35); + + // if ($t36) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + if ($t36) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 +L12: + + // $t37 := 29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:70+28 + assume {:print "$at(31,48380,48408)"} true; + $t37 := 29; + assume $IsValid'u64'($t37); + + // $t38 := error::invalid_argument($t37) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:46+53 + call $t38 := $1_error_invalid_argument($t37); + if ($abort_flag) { + assume {:print "$at(31,48356,48409)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + assume {:print "$at(31,48319,48410)"} true; + assume {:print "$track_abort(46,30):", $t38} $t38 == $t38; + + // $t16 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + $t16 := $t38; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1131:9+91 + goto L19; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L14: + + // if ($t4) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + if ($t4) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; +L16: + + // $t39 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:46+8 + assume {:print "$at(31,48635,48643)"} true; + $t39 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t39); + + // $t40 := optional_aggregator::new($t39, $t5) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1139:21+50 + call $t40 := $1_optional_aggregator_new($t39, $t5); + if ($abort_flag) { + assume {:print "$at(31,48610,48660)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t6 := opaque begin: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume {:print "$at(31,48576,48678)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_some($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_some'$1_optional_aggregator_OptionalAggregator'($t40)); + + // $t6 := opaque end: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1138:17+102 + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1137:21+178 + assume {:print "$at(31,48538,48716)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; +L15: + + // $t6 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume {:print "$at(31,48700,48714)"} true; + + // assume And(WellFormed($t6), And(Le(Len(select option::Option.vec($t6)), 1), forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec($t6): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume ($IsValid'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6) && ((LenVec($t6->$vec) <= 1) && (var $range_0 := $t6->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))))); + + // assume Eq>($t6, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + assume $IsEqual'$1_option_Option'$1_optional_aggregator_OptionalAggregator''($t6, $1_option_spec_none'$1_optional_aggregator_OptionalAggregator'()); + + // $t6 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1141:22+14 + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1134:13+4 + assume {:print "$at(31,48470,48474)"} true; +L17: + + // $t41 := pack coin::CoinInfo<#0>($t1, $t2, $t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:25+290 + assume {:print "$at(31,48437,48727)"} true; + $t41 := $1_coin_CoinInfo'#0'($t1, $t2, $t3, $t6); + + // trace_local[coin_info]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1133:13+9 + assume {:print "$track_local(46,30,11):", $t41} $t41 == $t41; + + // assert CanModify>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1143:9+7 + assume {:print "$at(31,48737,48744)"} true; + assert {:msg "assert_failed(31,48737,48744): caller does not have permission to modify `coin::CoinInfo<#0>` at given address"} + $1_coin_CoinInfo'#0'_$modifies[$t0->$addr]; + + // move_to>($t41, $t0) on_abort goto L19 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1143:9+7 + if ($ResourceExists($1_coin_CoinInfo'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $t0->$addr, $t41); + } + if ($abort_flag) { + assume {:print "$at(31,48737,48744)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(46,30):", $t16} $t16 == $t16; + goto L19; + } + + // $t42 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + assume {:print "$at(31,48776,48803)"} true; + $t42 := false; + assume $IsValid'bool'($t42); + + // $t43 := pack coin::BurnCapability<#0>($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:10+27 + $t43 := $1_coin_BurnCapability'#0'($t42); + + // $t44 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t44 := false; + assume $IsValid'bool'($t44); + + // $t45 := pack coin::FreezeCapability<#0>($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:39+29 + $t45 := $1_coin_FreezeCapability'#0'($t44); + + // $t46 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t46 := false; + assume $IsValid'bool'($t46); + + // $t47 := pack coin::MintCapability<#0>($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:70+27 + $t47 := $1_coin_MintCapability'#0'($t46); + + // trace_return[0]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,0):", $t43} $t43 == $t43; + + // trace_return[1]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,1):", $t45} $t45 == $t45; + + // trace_return[2]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1145:9+89 + assume {:print "$track_return(46,30,2):", $t47} $t47 == $t47; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; +L18: + + // assume Identical($t48, global>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:481:9+62 + assume {:print "$at(32,20903,20965)"} true; + assume ($t48 == $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t12)); + + // assume Identical($t49, option::spec_borrow(select coin::CoinInfo.supply>($t48))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:482:9+56 + assume {:print "$at(32,20974,21030)"} true; + assume ($t49 == $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'($t48->$supply)); + + // assume Identical($t50, optional_aggregator::optional_aggregator_value($t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:483:9+72 + assume {:print "$at(32,21039,21111)"} true; + assume ($t50 == $1_optional_aggregator_optional_aggregator_value($t49)); + + // assume Identical($t51, optional_aggregator::optional_aggregator_limit($t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:484:9+72 + assume {:print "$at(32,21120,21192)"} true; + assume ($t51 == $1_optional_aggregator_optional_aggregator_limit($t49)); + + // assert Not(Neq
($t14, $t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:462:9+39 + assume {:print "$at(32,20221,20260)"} true; + assert {:msg "assert_failed(32,20221,20260): function does not abort under this condition"} + !!$IsEqual'address'($t14, $t13); + + // assert Not(exists[@159]>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:463:9+51 + assume {:print "$at(32,20269,20320)"} true; + assert {:msg "assert_failed(32,20269,20320): function does not abort under this condition"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#159, $t13); + + // assert Not(Gt(Len(select string::String.bytes($t1)), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:464:9+43 + assume {:print "$at(32,20329,20372)"} true; + assert {:msg "assert_failed(32,20329,20372): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 32); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:465:9+47 + assume {:print "$at(32,20381,20428)"} true; + assert {:msg "assert_failed(32,20381,20428): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 10); + + // assert Not(And(And($t4, $t5), Not(exists[@160](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:486:9+126 + assume {:print "$at(32,21260,21386)"} true; + assert {:msg "assert_failed(32,21260,21386): function does not abort under this condition"} + !(($t4 && $t5) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#160, 1)); + + // assert And(And(And(exists>($t12), Eq(select coin::CoinInfo.name>($t48), $t1)), Eq(select coin::CoinInfo.symbol>($t48), $t2)), Eq(select coin::CoinInfo.decimals>($t48), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:489:9+175 + assume {:print "$at(32,21440,21615)"} true; + assert {:msg "assert_failed(32,21440,21615): post-condition does not hold"} + ((($ResourceExists($1_coin_CoinInfo'#0'_$memory, $t12) && $IsEqual'$1_string_String'($t48->$name, $t1)) && $IsEqual'$1_string_String'($t48->$symbol, $t2)) && $IsEqual'u8'($t48->$decimals, $t3)); + + // assert if $t4 { + // And(And(Eq($t50, 0), Eq($t51, 340282366920938463463374607431768211455)), Eq($t5, optional_aggregator::$is_parallelizable($t49))) + // } else { + // option::spec_is_none(select coin::CoinInfo.supply>($t48)) + // } at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:493:9+238 + assume {:print "$at(32,21624,21862)"} true; + assert {:msg "assert_failed(32,21624,21862): post-condition does not hold"} + (if ($t4) then ((($IsEqual'u128'($t50, 0) && $IsEqual'u128'($t51, 340282366920938463463374607431768211455)) && $IsEqual'bool'($t5, $1_optional_aggregator_$is_parallelizable($t49)))) else ($1_option_spec_is_none'$1_optional_aggregator_OptionalAggregator'($t48->$supply))); + + // assert Eq>($t43, pack coin::BurnCapability<#0>(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:499:9+48 + assume {:print "$at(32,21871,21919)"} true; + assert {:msg "assert_failed(32,21871,21919): post-condition does not hold"} + $IsEqual'$1_coin_BurnCapability'#0''($t43, $1_coin_BurnCapability'#0'(false)); + + // assert Eq>($t45, pack coin::FreezeCapability<#0>(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:500:9+50 + assume {:print "$at(32,21928,21978)"} true; + assert {:msg "assert_failed(32,21928,21978): post-condition does not hold"} + $IsEqual'$1_coin_FreezeCapability'#0''($t45, $1_coin_FreezeCapability'#0'(false)); + + // assert Eq>($t47, pack coin::MintCapability<#0>(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:501:9+48 + assume {:print "$at(32,21987,22035)"} true; + assert {:msg "assert_failed(32,21987,22035): post-condition does not hold"} + $IsEqual'$1_coin_MintCapability'#0''($t47, $1_coin_MintCapability'#0'(false)); + + // return ($t43, $t45, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:501:9+48 + $ret0 := $t43; + $ret1 := $t45; + $ret2 := $t47; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1146:5+1 + assume {:print "$at(31,48869,48870)"} true; +L19: + + // assert Or(Or(Or(Or(Neq
($t14, $t13), exists[@159]>($t13)), Gt(Len(select string::String.bytes($t1)), 32)), Gt(Len(select string::String.bytes($t2)), 10)), And(And($t4, $t5), Not(exists[@160](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:468:5+1601 + assume {:print "$at(32,20440,22041)"} true; + assert {:msg "assert_failed(32,20440,22041): abort not covered by any of the `aborts_if` clauses"} + ((((!$IsEqual'address'($t14, $t13) || $ResourceExists($1_coin_CoinInfo'#0'_$memory#159, $t13)) || (LenVec($t1->$bytes) > 32)) || (LenVec($t2->$bytes) > 10)) || (($t4 && $t5) && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#160, 1))); + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:468:5+1601 + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun coin::initialize_supply_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:552:5+230 +procedure {:timeLimit 80} $1_coin_initialize_supply_config$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: $1_coin_SupplyConfig; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_coin_SupplyConfig_$memory#429: $Memory $1_coin_SupplyConfig; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:552:5+1 + assume {:print "$at(31,23577,23578)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: coin::SupplyConfig: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_SupplyConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_SupplyConfig_$memory, $a_0); + ($IsValid'$1_coin_SupplyConfig'($rsc)))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:125:9+59 + assume {:print "$at(32,6781,6840)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // @429 := save_mem(coin::SupplyConfig) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:552:5+1 + assume {:print "$at(31,23577,23578)"} true; + $1_coin_SupplyConfig_$memory#429 := $1_coin_SupplyConfig_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:552:5+1 + assume {:print "$track_local(46,31,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + assume {:print "$at(31,23660,23723)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + assume {:print "$at(31,23660,23723)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + assume {:print "$at(31,23660,23723)"} true; + assume {:print "$track_abort(46,31):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:553:9+63 + assume {:print "$at(31,23660,23723)"} true; + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:554:68+5 + assume {:print "$at(31,23792,23797)"} true; + $t4 := false; + assume $IsValid'bool'($t4); + + // $t5 := pack coin::SupplyConfig($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:554:37+38 + $t5 := $1_coin_SupplyConfig($t4); + + // move_to($t5, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:554:9+7 + if ($ResourceExists($1_coin_SupplyConfig_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_SupplyConfig_$memory := $ResourceUpdate($1_coin_SupplyConfig_$memory, $t0->$addr, $t5); + } + if ($abort_flag) { + assume {:print "$at(31,23733,23740)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(46,31):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:555:5+1 + assume {:print "$at(31,23806,23807)"} true; +L1: + + // assert Not(Not(system_addresses::$is_starcoin_framework_address[]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:126:9+74 + assume {:print "$at(32,6849,6923)"} true; + assert {:msg "assert_failed(32,6849,6923): function does not abort under this condition"} + !!$1_system_addresses_$is_starcoin_framework_address($t1); + + // assert Not(exists[@429]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:127:9+46 + assume {:print "$at(32,6932,6978)"} true; + assert {:msg "assert_failed(32,6932,6978): function does not abort under this condition"} + !$ResourceExists($1_coin_SupplyConfig_$memory#429, $t1); + + // assert Not(select coin::SupplyConfig.allow_upgrades(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:128:9+60 + assume {:print "$at(32,6987,7047)"} true; + assert {:msg "assert_failed(32,6987,7047): post-condition does not hold"} + !$ResourceValue($1_coin_SupplyConfig_$memory, $t1)->$allow_upgrades; + + // assert exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:129:9+44 + assume {:print "$at(32,7056,7100)"} true; + assert {:msg "assert_failed(32,7056,7100): post-condition does not hold"} + $ResourceExists($1_coin_SupplyConfig_$memory, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:129:9+44 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:555:5+1 + assume {:print "$at(31,23806,23807)"} true; +L2: + + // assert Or(Not(system_addresses::$is_starcoin_framework_address[]($t1)), exists[@429]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:124:5+394 + assume {:print "$at(32,6712,7106)"} true; + assert {:msg "assert_failed(32,6712,7106): abort not covered by any of the `aborts_if` clauses"} + (!$1_system_addresses_$is_starcoin_framework_address($t1) || $ResourceExists($1_coin_SupplyConfig_$memory#429, $t1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:124:5+394 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun coin::initialize_with_parallelizable_supply [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+448 +procedure {:inline 1} $1_coin_initialize_with_parallelizable_supply'$1_starcoin_coin_STC'(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool) returns ($ret0: $1_coin_BurnCapability'$1_starcoin_coin_STC', $ret1: $1_coin_FreezeCapability'$1_starcoin_coin_STC', $ret2: $1_coin_MintCapability'$1_starcoin_coin_STC') +{ + // declare local variables + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $t15: $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $t16: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $temp_0'$1_coin_BurnCapability'$1_starcoin_coin_STC'': $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_FreezeCapability'$1_starcoin_coin_STC'': $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_MintCapability'$1_starcoin_coin_STC'': $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:444:9+39 + assume {:print "$at(32,19463,19502)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t7 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$at(31,46981,46982)"} true; + assume {:print "$track_local(46,32,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,4):", $t4} $t4 == $t4; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + + // assume Identical($t8, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume ($t8 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + assume {:print "$track_abort(46,32):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + + // $t10 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:78+4 + assume {:print "$at(31,47418,47422)"} true; + $t10 := true; + assume $IsValid'bool'($t10); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t13 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // ($t14, $t15, $t16) := coin::initialize_internal<#0>($t0, $t1, $t2, $t3, $t4, $t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$at(31,47349,47423)"} true; + call $t14,$t15,$t16 := $1_coin_initialize_internal'$1_starcoin_coin_STC'($t0, $t1, $t2, $t3, $t4, $t10); + if ($abort_flag) { + assume {:print "$at(31,47349,47423)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,32):", $t9} $t9 == $t9; + goto L2; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,0):", $t14} $t14 == $t14; + + // trace_return[1]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,1):", $t15} $t15 == $t15; + + // trace_return[2]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,2):", $t16} $t16 == $t16; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 + assume {:print "$at(31,47428,47429)"} true; +L1: + + // return ($t14, $t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 + assume {:print "$at(31,47428,47429)"} true; + $ret0 := $t14; + $ret1 := $t15; + $ret2 := $t16; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 + assume {:print "$at(31,47428,47429)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun coin::initialize_with_parallelizable_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+448 +procedure {:timeLimit 80} $1_coin_initialize_with_parallelizable_supply$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: bool) returns ($ret0: $1_coin_BurnCapability'#0', $ret1: $1_coin_FreezeCapability'#0', $ret2: $1_coin_MintCapability'#0') +{ + // declare local variables + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_coin_BurnCapability'#0'; + var $t15: $1_coin_FreezeCapability'#0'; + var $t16: $1_coin_MintCapability'#0'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $1_aggregator_factory_AggregatorFactory_$memory#430: $Memory $1_aggregator_factory_AggregatorFactory; + var $1_coin_CoinInfo'#0'_$memory#431: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$at(31,46981,46982)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $IsValid'bool'($t4); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:444:9+39 + assume {:print "$at(32,19463,19502)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t7 == $1_type_info_$type_of'#0'()->$account_address); + + // @430 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$at(31,46981,46982)"} true; + $1_aggregator_factory_AggregatorFactory_$memory#430 := $1_aggregator_factory_AggregatorFactory_$memory; + + // @431 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + $1_coin_CoinInfo'#0'_$memory#431 := $1_coin_CoinInfo'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1098:5+1 + assume {:print "$track_local(46,32,4):", $t4} $t4 == $t4; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + + // assume Identical($t8, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume ($t8 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + assume {:print "$track_abort(46,32):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1105:9+52 + assume {:print "$at(31,47287,47339)"} true; + + // $t10 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:78+4 + assume {:print "$at(31,47418,47422)"} true; + $t10 := true; + assume $IsValid'bool'($t10); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:480:9+47 + assume {:print "$at(32,20847,20894)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t13 == $1_type_info_$type_of'#0'()->$account_address); + + // ($t14, $t15, $t16) := coin::initialize_internal<#0>($t0, $t1, $t2, $t3, $t4, $t10) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$at(31,47349,47423)"} true; + call $t14,$t15,$t16 := $1_coin_initialize_internal'#0'($t0, $t1, $t2, $t3, $t4, $t10); + if ($abort_flag) { + assume {:print "$at(31,47349,47423)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,32):", $t9} $t9 == $t9; + goto L2; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,0):", $t14} $t14 == $t14; + + // trace_return[1]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,1):", $t15} $t15 == $t15; + + // trace_return[2]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1106:9+74 + assume {:print "$track_return(46,32,2):", $t16} $t16 == $t16; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 + assume {:print "$at(31,47428,47429)"} true; +L1: + + // assert Not(Neq
($t5, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:445:9+38 + assume {:print "$at(32,19511,19549)"} true; + assert {:msg "assert_failed(32,19511,19549): function does not abort under this condition"} + !!$IsEqual'address'($t5, 1); + + // assert Not(And($t4, Not(exists[@430](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:446:9+96 + assume {:print "$at(32,19558,19654)"} true; + assert {:msg "assert_failed(32,19558,19654): function does not abort under this condition"} + !($t4 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#430, 1)); + + // assert Not(Neq
($t7, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:462:9+39 + assume {:print "$at(32,20221,20260)"} true; + assert {:msg "assert_failed(32,20221,20260): function does not abort under this condition"} + !!$IsEqual'address'($t7, $t6); + + // assert Not(exists[@431]>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:463:9+51 + assume {:print "$at(32,20269,20320)"} true; + assert {:msg "assert_failed(32,20269,20320): function does not abort under this condition"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#431, $t6); + + // assert Not(Gt(Len(select string::String.bytes($t1)), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:464:9+43 + assume {:print "$at(32,20329,20372)"} true; + assert {:msg "assert_failed(32,20329,20372): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 32); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:465:9+47 + assume {:print "$at(32,20381,20428)"} true; + assert {:msg "assert_failed(32,20381,20428): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 10); + + // assert exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:451:9+41 + assume {:print "$at(32,19790,19831)"} true; + assert {:msg "assert_failed(32,19790,19831): post-condition does not hold"} + $ResourceExists($1_coin_CoinInfo'#0'_$memory, $t5); + + // return ($t14, $t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:451:9+41 + $ret0 := $t14; + $ret1 := $t15; + $ret2 := $t16; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1107:5+1 + assume {:print "$at(31,47428,47429)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Neq
($t5, 0x1), And($t4, Not(exists[@430](0x1)))), Neq
($t7, $t6)), exists[@431]>($t6)), Gt(Len(select string::String.bytes($t1)), 32)), Gt(Len(select string::String.bytes($t2)), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:436:5+698 + assume {:print "$at(32,19139,19837)"} true; + assert {:msg "assert_failed(32,19139,19837): abort not covered by any of the `aborts_if` clauses"} + (((((!$IsEqual'address'($t5, 1) || ($t4 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#430, 1))) || !$IsEqual'address'($t7, $t6)) || $ResourceExists($1_coin_CoinInfo'#0'_$memory#431, $t6)) || (LenVec($t1->$bytes) > 32)) || (LenVec($t2->$bytes) > 10)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:436:5+698 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun coin::is_account_registered [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+556 +procedure {:inline 1} $1_coin_is_account_registered'$1_starcoin_coin_STC'(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: bool; + var $t15: $1_object_Object'$1_fungible_asset_Metadata'; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: bool; + var $t20: bool; + var $t21: bool; + var $t22: bool; + var $t0: int; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume {:print "$at(31,34386,34387)"} true; + assume {:print "$track_local(46,33,0):", $t0} $t0 == $t0; + + // $t7 := coin::is_coin_initialized<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:17+31 + assume {:print "$at(31,34503,34534)"} true; + call $t7 := $1_coin_is_coin_initialized'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,34503,34534)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 +L0: + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 + assume {:print "$at(31,34560,34584)"} true; + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:50+49 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(31,34536,34585)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + assume {:print "$track_abort(46,33):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + $t8 := $t10; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:41+12 + assume {:print "$at(31,34628,34640)"} true; +L2: + + // $t11 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:13+6 + assume {:print "$at(31,34600,34606)"} true; + $t11 := $ResourceExists($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; +L4: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t12; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; +L3: + + // $t13 := coin::paired_metadata<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; + call $t13 := $1_coin_paired_metadata'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,34717,34744)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[paired_metadata_opt]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:17+19 + assume {:print "$track_local(46,33,5):", $t13} $t13 == $t13; + + // $t14 := opaque begin: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume {:print "$at(31,34759,34826)"} true; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t14 := opaque end: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + + // if ($t14) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:57+12 + assume {:print "$at(31,34869,34881)"} true; +L7: + + // $t15 := opaque begin: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + + // assume Identical($t16, option::spec_is_none>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume ($t16 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // if ($t16) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + if ($t16) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L18: + + // assume And(option::spec_is_none>($t13), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + goto L16; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L17: + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t15); + + // assume Eq>($t15, option::spec_borrow>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t15, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t15 := opaque end: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + + // $t17 := primary_fungible_store::primary_store_address($t0, $t15) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:37+82 + assume {:print "$at(31,41085,41167)"} true; + call $t17 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t15); + if ($abort_flag) { + assume {:print "$at(31,41085,41167)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[primary_store_address#59]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:13+21 + assume {:print "$track_local(46,33,6):", $t17} $t17 == $t17; + + // $t18 := fungible_asset::store_exists($t17) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+51 + assume {:print "$at(31,41177,41228)"} true; + call $t18 := $1_fungible_asset_store_exists($t17); + if ($abort_flag) { + assume {:print "$at(31,41177,41228)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t18) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + if ($t18) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; +L9: + + // $t19 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; + call $t19 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(31,41337,41393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t19) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + if ($t19) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 +L11: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t1 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + $t1 := $t20; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:95+21 + assume {:print "$at(31,41419,41440)"} true; +L10: + + // $t1 := exists($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:73+6 + assume {:print "$at(31,41397,41403)"} true; + $t1 := $ResourceExists($1_coin_MigrationFlag_$memory, $t17); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; +L12: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t2 := $t1; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L8: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + $t2 := $t21; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L13: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t3 := $t2; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L6: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + $t3 := $t22; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L14: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + assume {:print "$track_return(46,33,0):", $t4} $t4 == $t4; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; +L15: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; + $ret0 := $t4; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 +L16: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::is_account_registered<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+556 +procedure {:inline 1} $1_coin_is_account_registered'#0'(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: bool; + var $t15: $1_object_Object'$1_fungible_asset_Metadata'; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: bool; + var $t20: bool; + var $t21: bool; + var $t22: bool; + var $t0: int; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume {:print "$at(31,34386,34387)"} true; + assume {:print "$track_local(46,33,0):", $t0} $t0 == $t0; + + // $t7 := coin::is_coin_initialized<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:17+31 + assume {:print "$at(31,34503,34534)"} true; + call $t7 := $1_coin_is_coin_initialized'#0'(); + if ($abort_flag) { + assume {:print "$at(31,34503,34534)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 +L0: + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 + assume {:print "$at(31,34560,34584)"} true; + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:50+49 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(31,34536,34585)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + assume {:print "$track_abort(46,33):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + $t8 := $t10; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:41+12 + assume {:print "$at(31,34628,34640)"} true; +L2: + + // $t11 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:13+6 + assume {:print "$at(31,34600,34606)"} true; + $t11 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t0); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; +L4: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t12; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; +L3: + + // $t13 := coin::paired_metadata<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; + call $t13 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,34717,34744)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[paired_metadata_opt]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:17+19 + assume {:print "$track_local(46,33,5):", $t13} $t13 == $t13; + + // $t14 := opaque begin: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume {:print "$at(31,34759,34826)"} true; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t14 := opaque end: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + + // if ($t14) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:57+12 + assume {:print "$at(31,34869,34881)"} true; +L7: + + // $t15 := opaque begin: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + + // assume Identical($t16, option::spec_is_none>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume ($t16 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // if ($t16) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + if ($t16) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L18: + + // assume And(option::spec_is_none>($t13), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + goto L16; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L17: + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t15); + + // assume Eq>($t15, option::spec_borrow>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t15, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t15 := opaque end: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + + // $t17 := primary_fungible_store::primary_store_address($t0, $t15) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:37+82 + assume {:print "$at(31,41085,41167)"} true; + call $t17 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t15); + if ($abort_flag) { + assume {:print "$at(31,41085,41167)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[primary_store_address#59]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:13+21 + assume {:print "$track_local(46,33,6):", $t17} $t17 == $t17; + + // $t18 := fungible_asset::store_exists($t17) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+51 + assume {:print "$at(31,41177,41228)"} true; + call $t18 := $1_fungible_asset_store_exists($t17); + if ($abort_flag) { + assume {:print "$at(31,41177,41228)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t18) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + if ($t18) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; +L9: + + // $t19 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; + call $t19 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(31,41337,41393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t19) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + if ($t19) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 +L11: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t1 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + $t1 := $t20; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:95+21 + assume {:print "$at(31,41419,41440)"} true; +L10: + + // $t1 := exists($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:73+6 + assume {:print "$at(31,41397,41403)"} true; + $t1 := $ResourceExists($1_coin_MigrationFlag_$memory, $t17); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; +L12: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t2 := $t1; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L8: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + $t2 := $t21; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L13: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t3 := $t2; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L6: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + $t3 := $t22; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L14: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + assume {:print "$track_return(46,33,0):", $t4} $t4 == $t4; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; +L15: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; + $ret0 := $t4; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 +L16: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::is_account_registered [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+556 +procedure {:timeLimit 80} $1_coin_is_account_registered$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: bool; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: bool; + var $t15: $1_object_Object'$1_fungible_asset_Metadata'; + var $t16: bool; + var $t17: int; + var $t18: bool; + var $t19: bool; + var $t20: bool; + var $t21: bool; + var $t22: bool; + var $t0: int; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#446: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#447: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#448: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume {:print "$at(31,34386,34387)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @448 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + $1_coin_CoinInfo'#0'_$memory#448 := $1_coin_CoinInfo'#0'_$memory; + + // @446 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + $1_coin_Ghost$supply'#0'_$memory#446 := $1_coin_Ghost$supply'#0'_$memory; + + // @447 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#447 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:805:5+1 + assume {:print "$track_local(46,33,0):", $t0} $t0 == $t0; + + // $t7 := coin::is_coin_initialized<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:17+31 + assume {:print "$at(31,34503,34534)"} true; + call $t7 := $1_coin_is_coin_initialized'#0'(); + if ($abort_flag) { + assume {:print "$at(31,34503,34534)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 +L0: + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:74+24 + assume {:print "$at(31,34560,34584)"} true; + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:50+49 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(31,34536,34585)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + assume {:print "$at(31,34495,34586)"} true; + assume {:print "$track_abort(46,33):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + $t8 := $t10; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:806:9+91 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:41+12 + assume {:print "$at(31,34628,34640)"} true; +L2: + + // $t11 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:13+6 + assume {:print "$at(31,34600,34606)"} true; + $t11 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t0); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; +L4: + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:808:13+4 + assume {:print "$at(31,34657,34661)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t12; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; +L3: + + // $t13 := coin::paired_metadata<#0>() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:39+27 + assume {:print "$at(31,34717,34744)"} true; + call $t13 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,34717,34744)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[paired_metadata_opt]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:810:17+19 + assume {:print "$track_local(46,33,5):", $t13} $t13 == $t13; + + // $t14 := opaque begin: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume {:print "$at(31,34759,34826)"} true; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsValid'bool'($t14); + + // assume Eq($t14, option::spec_is_some>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + assume $IsEqual'bool'($t14, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t14 := opaque end: option::is_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:14+67 + + // if ($t14) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:57+12 + assume {:print "$at(31,34869,34881)"} true; +L7: + + // $t15 := opaque begin: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + + // assume Identical($t16, option::spec_is_none>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume ($t16 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // if ($t16) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + if ($t16) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L18: + + // assume And(option::spec_is_none>($t13), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t13) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + goto L16; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 +L17: + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume {:print "$at(31,34883,34924)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t15); + + // assume Eq>($t15, option::spec_borrow>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t15, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t13)); + + // $t15 := opaque end: option::destroy_some>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:813:71+41 + + // $t17 := primary_fungible_store::primary_store_address($t0, $t15) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:37+82 + assume {:print "$at(31,41085,41167)"} true; + call $t17 := $1_primary_fungible_store_primary_store_address'$1_fungible_asset_Metadata'($t0, $t15); + if ($abort_flag) { + assume {:print "$at(31,41085,41167)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // trace_local[primary_store_address#59]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:963:13+21 + assume {:print "$track_local(46,33,6):", $t17} $t17 == $t17; + + // $t18 := fungible_asset::store_exists($t17) on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+51 + assume {:print "$at(31,41177,41228)"} true; + call $t18 := $1_fungible_asset_store_exists($t17); + if ($abort_flag) { + assume {:print "$at(31,41177,41228)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t18) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + if ($t18) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; +L9: + + // $t19 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L16 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:13+56 + assume {:print "$at(31,41337,41393)"} true; + call $t19 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(31,41337,41393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,33):", $t8} $t8 == $t8; + goto L16; + } + + // if ($t19) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + if ($t19) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 +L11: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t1 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + $t1 := $t20; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:95+21 + assume {:print "$at(31,41419,41440)"} true; +L10: + + // $t1 := exists($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:966:73+6 + assume {:print "$at(31,41397,41403)"} true; + $t1 := $ResourceExists($1_coin_MigrationFlag_$memory, $t17); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:64+219 + assume {:print "$at(31,41232,41451)"} true; +L12: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t2 := $t1; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L8: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + assume {:print "$at(31,41177,41451)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 + $t2 := $t21; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:964:9+274 +L13: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t3 := $t2; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L6: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + assume {:print "$at(31,34758,34926)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 + $t3 := $t22; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:811:13+168 +L14: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:807:9+340 + assume {:print "$at(31,34596,34936)"} true; + assume {:print "$track_return(46,33,0):", $t4} $t4 == $t4; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; +L15: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:156:9+16 + assume {:print "$at(32,8135,8151)"} true; + assert {:msg "assert_failed(32,8135,8151): function does not abort under this condition"} + !false; + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@446]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@447]>(0x0))), select coin::CoinInfo.supply>(global[@448]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#446, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#447, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#448, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t4; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; +L16: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:815:5+1 + assume {:print "$at(31,34941,34942)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::is_aggregatable_coin_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+175 +procedure {:timeLimit 80} $1_coin_is_aggregatable_coin_zero$verify(_$t0: $1_coin_AggregatableCoin'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_aggregator_Aggregator; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_coin_AggregatableCoin'#0'; + var $temp_0'$1_coin_AggregatableCoin'#0'': $1_coin_AggregatableCoin'#0'; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#464: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#465: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#466: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume {:print "$at(31,24887,24888)"} true; + assume ($IsValid'$1_coin_AggregatableCoin'#0''($t0) && $IsEqual'u128'($1_aggregator_spec_get_limit($t0->$value), 18446744073709551615)); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @466 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + $1_coin_CoinInfo'#0'_$memory#466 := $1_coin_CoinInfo'#0'_$memory; + + // @464 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + $1_coin_Ghost$supply'#0'_$memory#464 := $1_coin_Ghost$supply'#0'_$memory; + + // @465 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#465 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:579:5+1 + assume {:print "$track_local(46,34,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:39+11 + assume {:print "$at(31,25023,25034)"} true; + $t1 := $t0->$value; + + // $t2 := opaque begin: aggregator::read($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:22+29 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:22+29 + assume $IsValid'u128'($t2); + + // assume Eq($t2, aggregator::spec_read($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:22+29 + assume $IsEqual'u128'($t2, $1_aggregator_spec_read($t1)); + + // assume Le($t2, aggregator::spec_get_limit($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:22+29 + assume ($t2 <= $1_aggregator_spec_get_limit($t1)); + + // $t2 := opaque end: aggregator::read($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:580:22+29 + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:581:19+1 + assume {:print "$at(31,25055,25056)"} true; + $t3 := 0; + assume $IsValid'u128'($t3); + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:581:16+2 + $t4 := $IsEqual'u128'($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:581:9+11 + assume {:print "$track_return(46,34,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:582:5+1 + assume {:print "$at(31,25061,25062)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:588:9+16 + assume {:print "$at(32,25939,25955)"} true; + assert {:msg "assert_failed(32,25939,25955): function does not abort under this condition"} + !false; + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@464]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@465]>(0x0))), select coin::CoinInfo.supply>(global[@466]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#464, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#465, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#466, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq($t4, Eq(aggregator::spec_read(select coin::AggregatableCoin.value>($t0)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:589:9+59 + assume {:print "$at(32,25964,26023)"} true; + assert {:msg "assert_failed(32,25964,26023): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'u128'($1_aggregator_spec_read($t0->$value), 0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:589:9+59 + $ret0 := $t4; + return; + +} + +// fun coin::is_coin_initialized [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+117 +procedure {:inline 1} $1_coin_is_coin_initialized'$1_starcoin_coin_STC'() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#443: $Memory $1_coin_Ghost$supply'$1_starcoin_coin_STC'; + var $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#444: $Memory $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#445: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + + // bytecode translation starts here + // $t0 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume {:print "$at(31,33815,33839)"} true; + + // @445 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#445 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @443 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#443 := $1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory; + + // @444 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#444 := $1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsValid'address'($t0); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@443]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@444]>(0x0))), select coin::CoinInfo.supply>(global[@445]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume ($1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory#443, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory#444, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#445, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'$1_starcoin_coin_STC'(($ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address)->$supply)); + + // assume Eq
($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsEqual'address'($t0, $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // $t0 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+6 + $t1 := $ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+52 + assume {:print "$track_return(46,36,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:788:5+1 + assume {:print "$at(31,33845,33846)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:788:5+1 + assume {:print "$at(31,33845,33846)"} true; + $ret0 := $t1; + return; + +} + +// fun coin::is_coin_initialized<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+117 +procedure {:inline 1} $1_coin_is_coin_initialized'#0'() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#443: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#444: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#445: $Memory $1_coin_CoinInfo'#0'; + + // bytecode translation starts here + // $t0 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume {:print "$at(31,33815,33839)"} true; + + // @445 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_CoinInfo'#0'_$memory#445 := $1_coin_CoinInfo'#0'_$memory; + + // @443 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$supply'#0'_$memory#443 := $1_coin_Ghost$supply'#0'_$memory; + + // @444 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#444 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsValid'address'($t0); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@443]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@444]>(0x0))), select coin::CoinInfo.supply>(global[@445]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#443, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#444, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#445, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsEqual'address'($t0, $1_type_info_$type_of'#0'()->$account_address); + + // $t0 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+6 + $t1 := $ResourceExists($1_coin_CoinInfo'#0'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+52 + assume {:print "$track_return(46,36,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:788:5+1 + assume {:print "$at(31,33845,33846)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:788:5+1 + assume {:print "$at(31,33845,33846)"} true; + $ret0 := $t1; + return; + +} + +// fun coin::is_coin_initialized [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+117 +procedure {:timeLimit 80} $1_coin_is_coin_initialized$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#434: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#435: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#436: $Memory $1_coin_CoinInfo'#0'; + var $1_coin_Ghost$supply'#0'_$memory#437: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#438: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#439: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + assume {:print "$at(31,33729,33730)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @436 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + $1_coin_CoinInfo'#0'_$memory#436 := $1_coin_CoinInfo'#0'_$memory; + + // @434 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + $1_coin_Ghost$supply'#0'_$memory#434 := $1_coin_Ghost$supply'#0'_$memory; + + // @435 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:786:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#435 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t0 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume {:print "$at(31,33815,33839)"} true; + + // @439 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_CoinInfo'#0'_$memory#439 := $1_coin_CoinInfo'#0'_$memory; + + // @437 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$supply'#0'_$memory#437 := $1_coin_Ghost$supply'#0'_$memory; + + // @438 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#438 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsValid'address'($t0); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@437]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@438]>(0x0))), select coin::CoinInfo.supply>(global[@439]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#437, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#438, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#439, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t0, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + assume $IsEqual'address'($t0, $1_type_info_$type_of'#0'()->$account_address); + + // $t0 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:36+24 + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+6 + $t1 := $ResourceExists($1_coin_CoinInfo'#0'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:787:9+52 + assume {:print "$track_return(46,36,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:788:5+1 + assume {:print "$at(31,33845,33846)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:151:9+16 + assume {:print "$at(32,7994,8010)"} true; + assert {:msg "assert_failed(32,7994,8010): function does not abort under this condition"} + !false; + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@434]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@435]>(0x0))), select coin::CoinInfo.supply>(global[@436]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#434, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#435, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#436, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t1; + return; + +} + +// fun coin::is_coin_store_frozen [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+329 +procedure {:timeLimit 80} $1_coin_is_coin_store_frozen$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: $1_coin_CoinStore'#0'; + var $t7: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#467: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#468: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#469: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume {:print "$at(31,33961,33962)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @469 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + $1_coin_CoinInfo'#0'_$memory#469 := $1_coin_CoinInfo'#0'_$memory; + + // @467 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + $1_coin_Ghost$supply'#0'_$memory#467 := $1_coin_Ghost$supply'#0'_$memory; + + // @468 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#468 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:792:5+1 + assume {:print "$track_local(46,37,0):", $t0} $t0 == $t0; + + // $t1 := coin::is_account_registered<#0>($t0) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:795:14+45 + assume {:print "$at(31,34099,34144)"} true; + call $t1 := $1_coin_is_account_registered'#0'($t0); + if ($abort_flag) { + assume {:print "$at(31,34099,34144)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,37):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:795:13+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:795:9+87 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:796:20+4 + assume {:print "$at(31,34167,34171)"} true; +L1: + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:796:20+4 + assume {:print "$at(31,34167,34171)"} true; + $t4 := true; + assume $IsValid'bool'($t4); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:796:13+11 + assume {:print "$track_return(46,37,0):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:796:13+11 + $t5 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:796:13+11 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:799:61+12 + assume {:print "$at(31,34244,34256)"} true; +L0: + + // $t6 := get_global>($t0) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:799:26+13 + assume {:print "$at(31,34209,34222)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_coin_CoinStore'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(31,34209,34222)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,37):", $t2} $t2 == $t2; + goto L3; + } + + // $t7 := get_field>.frozen($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:800:9+17 + assume {:print "$at(31,34267,34284)"} true; + $t7 := $t6->$frozen; + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:800:9+17 + assume {:print "$track_return(46,37,0):", $t7} $t7 == $t7; + + // $t5 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:800:9+17 + $t5 := $t7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:801:5+1 + assume {:print "$at(31,34289,34290)"} true; +L2: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@467]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@468]>(0x0))), select coin::CoinInfo.supply>(global[@469]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#467, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#468, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#469, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:801:5+1 + assume {:print "$at(31,34289,34290)"} true; +L3: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:801:5+1 + assume {:print "$at(31,34289,34290)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun coin::maybe_convert_to_fungible_store<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:680:5+2492 +procedure {:inline 1} $1_coin_maybe_convert_to_fungible_store'#0'(_$t0: int) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $signer; + var $t3: $1_string_String; + var $t4: $1_coin_Coin'#0'; + var $t5: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t6: bool; + var $t7: $1_object_Object'$1_fungible_asset_Metadata'; + var $t8: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t9: int; + var $t10: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t11: Vec (int); + var $t12: $1_string_String; + var $t13: int; + var $t14: bool; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $1_object_Object'$1_fungible_asset_Metadata'; + var $t22: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t23: int; + var $t24: bool; + var $t25: $1_coin_CoinStore'#0'; + var $t26: $1_coin_Coin'#0'; + var $t27: bool; + var $t28: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t29: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t30: $1_guid_GUID; + var $t31: int; + var $t32: $1_guid_GUID; + var $t33: int; + var $t34: $1_guid_GUID; + var $t35: int; + var $t36: $1_coin_CoinEventHandleDeletion; + var $t37: int; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: $1_fungible_asset_FungibleAsset; + var $t42: bool; + var $t43: bool; + var $t44: bool; + var $t45: bool; + var $t46: $signer; + var $t47: bool; + var $t48: $1_coin_MigrationFlag; + var $t49: Vec (int); + var $t50: $1_string_String; + var $t0: int; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $1_coin_CoinStore'#0'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_event_EventHandle'$1_coin_DepositEvent'': $1_event_EventHandle'$1_coin_DepositEvent'; + var $temp_0'$1_event_EventHandle'$1_coin_WithdrawEvent'': $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $temp_0'$1_object_Object'$1_fungible_asset_FungibleStore'': $1_object_Object'$1_fungible_asset_FungibleStore'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:680:5+1 + assume {:print "$at(31,29132,29133)"} true; + assume {:print "$track_local(46,38,0):", $t0} $t0 == $t0; + + // $t11 := [99, 111, 105, 110, 58, 58, 109, 97, 121, 98, 101, 95, 99, 111, 110, 118, 101, 114, 116, 95, 116, 111, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:681:41+50 + assume {:print "$at(31,29286,29336)"} true; + $t11 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 109, 97)), MakeVec4(121, 98, 101, 95)), MakeVec4(99, 111, 110, 118)), MakeVec4(101, 114, 116, 95)), MakeVec4(116, 111, 95, 102)), MakeVec4(117, 110, 103, 105)), MakeVec4(98, 108, 101, 95)), MakeVec4(115, 116, 111, 114)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t11); + + // $t12 := string::utf8($t11) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:681:23+69 + call $t12 := $1_string_utf8($t11); + if ($abort_flag) { + assume {:print "$at(31,29268,29337)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // debug::print($t12) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:681:9+84 + call $1_debug_print'$1_string_String'($t12); + if ($abort_flag) { + assume {:print "$at(31,29254,29338)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t14 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:683:14+60 + assume {:print "$at(31,29354,29414)"} true; + call $t14 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,29354,29414)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t15 := !($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:683:13+1 + call $t15 := $Not($t14); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:683:9+160 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:38+43 + assume {:print "$at(31,29455,29498)"} true; +L1: + + // $t16 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:38+43 + assume {:print "$at(31,29455,29498)"} true; + $t16 := 18; + assume $IsValid'u64'($t16); + + // $t17 := error::unavailable($t16) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:19+63 + call $t17 := $1_error_unavailable($t16); + if ($abort_flag) { + assume {:print "$at(31,29436,29499)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:13+69 + assume {:print "$at(31,29430,29499)"} true; + assume {:print "$track_abort(46,38):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:13+69 + $t13 := $t17; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:684:13+69 + goto L14; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:17+31 + assume {:print "$at(31,29527,29558)"} true; +L0: + + // $t18 := coin::is_coin_initialized<#0>() on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:17+31 + assume {:print "$at(31,29527,29558)"} true; + call $t18 := $1_coin_is_coin_initialized'#0'(); + if ($abort_flag) { + assume {:print "$at(31,29527,29558)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // if ($t18) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 + if ($t18) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 + assume {:print "$at(31,29519,29610)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:74+24 +L2: + + // $t19 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:74+24 + assume {:print "$at(31,29584,29608)"} true; + $t19 := 3; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_argument($t19) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:50+49 + call $t20 := $1_error_invalid_argument($t19); + if ($abort_flag) { + assume {:print "$at(31,29560,29609)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 + assume {:print "$at(31,29519,29610)"} true; + assume {:print "$track_abort(46,38):", $t20} $t20 == $t20; + + // $t13 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 + $t13 := $t20; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:686:9+91 + goto L14; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:688:24+34 + assume {:print "$at(31,29636,29670)"} true; +L4: + + // $t21 := coin::ensure_paired_metadata<#0>() on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:688:24+34 + assume {:print "$at(31,29636,29670)"} true; + call $t21 := $1_coin_ensure_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,29636,29670)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // trace_local[metadata]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:688:13+8 + assume {:print "$track_local(46,38,7):", $t21} $t21 == $t21; + + // $t22 := primary_fungible_store::ensure_primary_store_exists($t0, $t21) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:689:21+70 + assume {:print "$at(31,29692,29762)"} true; + call $t22 := $1_primary_fungible_store_ensure_primary_store_exists'$1_fungible_asset_Metadata'($t0, $t21); + if ($abort_flag) { + assume {:print "$at(31,29692,29762)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // trace_local[store]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:689:13+5 + assume {:print "$track_local(46,38,8):", $t22} $t22 == $t22; + + // $t23 := object::object_address($t22) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:690:29+30 + assume {:print "$at(31,29792,29822)"} true; + call $t23 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t22); + if ($abort_flag) { + assume {:print "$at(31,29792,29822)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // trace_local[store_address]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:690:13+13 + assume {:print "$track_local(46,38,9):", $t23} $t23 == $t23; + + // $t24 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:691:13+6 + assume {:print "$at(31,29836,29842)"} true; + $t24 := $ResourceExists($1_coin_CoinStore'#0'_$memory, $t0); + + // if ($t24) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:691:9+1541 + if ($t24) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:693:17+7 + assume {:print "$at(31,30012,30019)"} true; +L6: + + // $t25 := move_from>($t0) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:89+9 + assume {:print "$at(31,29964,29973)"} true; + if (!$ResourceExists($1_coin_CoinStore'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t25 := $ResourceValue($1_coin_CoinStore'#0'_$memory, $t0); + $1_coin_CoinStore'#0'_$memory := $ResourceRemove($1_coin_CoinStore'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(31,29964,29973)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // ($t26, $t27, $t28, $t29) := unpack coin::CoinStore<#0>($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:17+69 + $t26 := $t25->$coin; + $t27 := $t25->$frozen; + $t28 := $t25->$deposit_events; + $t29 := $t25->$withdraw_events; + + // trace_local[withdraw_events]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:69+15 + assume {:print "$track_local(46,38,10):", $t29} $t29 == $t29; + + // trace_local[deposit_events]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:53+14 + assume {:print "$track_local(46,38,5):", $t28} $t28 == $t28; + + // trace_local[frozen]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:45+6 + assume {:print "$track_local(46,38,6):", $t27} $t27 == $t27; + + // trace_local[coin]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:692:39+4 + assume {:print "$track_local(46,38,4):", $t26} $t26 == $t26; + + // $t30 := event::guid($t28) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:698:25+28 + assume {:print "$at(31,30200,30228)"} true; + call $t30 := $1_event_guid'$1_coin_DepositEvent'($t28); + if ($abort_flag) { + assume {:print "$at(31,30200,30228)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t31 := guid::creator_address($t30) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:697:52+97 + assume {:print "$at(31,30153,30250)"} true; + call $t31 := $1_guid_creator_address($t30); + if ($abort_flag) { + assume {:print "$at(31,30153,30250)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t32 := event::guid($t28) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:700:86+28 + assume {:print "$at(31,30337,30365)"} true; + call $t32 := $1_event_guid'$1_coin_DepositEvent'($t28); + if ($abort_flag) { + assume {:print "$at(31,30337,30365)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t33 := guid::creation_num($t32) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:700:67+48 + call $t33 := $1_guid_creation_num($t32); + if ($abort_flag) { + assume {:print "$at(31,30318,30366)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t34 := event::guid($t29) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:701:87+29 + assume {:print "$at(31,30454,30483)"} true; + call $t34 := $1_event_guid'$1_coin_WithdrawEvent'($t29); + if ($abort_flag) { + assume {:print "$at(31,30454,30483)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t35 := guid::creation_num($t34) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:701:68+49 + call $t35 := $1_guid_creation_num($t34); + if ($abort_flag) { + assume {:print "$at(31,30435,30484)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t36 := pack coin::CoinEventHandleDeletion($t31, $t33, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:696:17+426 + assume {:print "$at(31,30076,30502)"} true; + $t36 := $1_coin_CoinEventHandleDeletion($t31, $t33, $t35); + + // opaque begin: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:695:13+469 + assume {:print "$at(31,30047,30516)"} true; + + // opaque end: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:695:13+469 + + // event::destroy_handle($t28) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:704:13+37 + assume {:print "$at(31,30530,30567)"} true; + call $1_event_destroy_handle'$1_coin_DepositEvent'($t28); + if ($abort_flag) { + assume {:print "$at(31,30530,30567)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // event::destroy_handle($t29) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:705:13+38 + assume {:print "$at(31,30581,30619)"} true; + call $1_event_destroy_handle'$1_coin_WithdrawEvent'($t29); + if ($abort_flag) { + assume {:print "$at(31,30581,30619)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t37 := get_field>.value($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:706:17+10 + assume {:print "$at(31,30637,30647)"} true; + $t37 := $t26->$value; + + // $t38 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:706:31+1 + $t38 := 0; + assume $IsValid'u64'($t38); + + // $t39 := ==($t37, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:706:28+2 + $t39 := $IsEqual'u64'($t37, $t38); + + // if ($t39) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:706:13+171 + if ($t39) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:707:30+4 + assume {:print "$at(31,30685,30689)"} true; +L8: + + // coin::destroy_zero<#0>($t26) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:707:17+18 + assume {:print "$at(31,30672,30690)"} true; + call $1_coin_destroy_zero'#0'($t26); + if ($abort_flag) { + assume {:print "$at(31,30672,30690)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:707:35+1 + goto L9; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:709:41+5 + assume {:print "$at(31,30753,30758)"} true; +L7: + + // assume Identical($t40, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:318:9+58 + assume {:print "$at(32,14452,14510)"} true; + assume ($t40 == $1_type_info_$type_of'#0'()->$account_address); + + // $t41 := coin::coin_to_fungible_asset<#0>($t26) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:709:48+28 + assume {:print "$at(31,30760,30788)"} true; + call $t41 := $1_coin_coin_to_fungible_asset'#0'($t26); + if ($abort_flag) { + assume {:print "$at(31,30760,30788)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // fungible_asset::deposit($t22, $t41) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:709:17+60 + call $1_fungible_asset_deposit'$1_fungible_asset_FungibleStore'($t22, $t41); + if ($abort_flag) { + assume {:print "$at(31,30729,30789)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:716:17+6 + assume {:print "$at(31,31231,31237)"} true; +L9: + + // $t42 := fungible_asset::is_frozen($t22) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:716:27+32 + assume {:print "$at(31,31241,31273)"} true; + call $t42 := $1_fungible_asset_is_frozen'$1_fungible_asset_FungibleStore'($t22); + if ($abort_flag) { + assume {:print "$at(31,31241,31273)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // $t43 := !=($t27, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:716:24+2 + $t43 := !$IsEqual'bool'($t27, $t42); + + // if ($t43) goto L10 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:716:13+136 + if ($t43) { goto L10; } else { goto L5; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:717:58+5 + assume {:print "$at(31,31334,31339)"} true; +L10: + + // fungible_asset::set_frozen_flag_internal($t22, $t27) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:717:17+55 + assume {:print "$at(31,31293,31348)"} true; + call $1_fungible_asset_set_frozen_flag_internal'$1_fungible_asset_FungibleStore'($t22, $t27); + if ($abort_flag) { + assume {:print "$at(31,31293,31348)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:721:36+13 + assume {:print "$at(31,31411,31424)"} true; +L5: + + // $t44 := exists($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:721:14+6 + assume {:print "$at(31,31389,31395)"} true; + $t44 := $ResourceExists($1_coin_MigrationFlag_$memory, $t23); + + // $t45 := !($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:721:13+1 + call $t45 := $Not($t44); + + // if ($t45) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:721:9+139 + if ($t45) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:51+13 + assume {:print "$at(31,31479,31492)"} true; +L12: + + // $t46 := opaque begin: create_signer::create_signer($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:22+43 + assume {:print "$at(31,31450,31493)"} true; + + // assume WellFormed($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:22+43 + assume $IsValid'signer'($t46) && $1_signer_is_txn_signer($t46) && $1_signer_is_txn_signer_addr($t46->$addr); + + // assume Eq
(signer::$address_of($t46), $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:22+43 + assume $IsEqual'address'($1_signer_$address_of($t46), $t23); + + // $t46 := opaque end: create_signer::create_signer($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:22+43 + + // $t47 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:67+16 + $t47 := false; + assume $IsValid'bool'($t47); + + // $t48 := pack coin::MigrationFlag($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:67+16 + $t48 := $1_coin_MigrationFlag($t47); + + // move_to($t48, $t46) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:722:13+7 + if ($ResourceExists($1_coin_MigrationFlag_$memory, $t46->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_MigrationFlag_$memory := $ResourceUpdate($1_coin_MigrationFlag_$memory, $t46->$addr, $t48); + } + if ($abort_flag) { + assume {:print "$at(31,31441,31448)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:725:41+49 + assume {:print "$at(31,31566,31615)"} true; +L11: + + // $t49 := [99, 111, 105, 110, 58, 58, 109, 97, 121, 98, 101, 95, 99, 111, 110, 118, 101, 114, 116, 95, 116, 111, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, 111, 114, 101, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:725:41+49 + assume {:print "$at(31,31566,31615)"} true; + $t49 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 109, 97)), MakeVec4(121, 98, 101, 95)), MakeVec4(99, 111, 110, 118)), MakeVec4(101, 114, 116, 95)), MakeVec4(116, 111, 95, 102)), MakeVec4(117, 110, 103, 105)), MakeVec4(98, 108, 101, 95)), MakeVec4(115, 116, 111, 114)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t49); + + // $t50 := string::utf8($t49) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:725:23+68 + call $t50 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(31,31548,31616)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // debug::print($t50) on_abort goto L14 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:725:9+83 + call $1_debug_print'$1_string_String'($t50); + if ($abort_flag) { + assume {:print "$at(31,31534,31617)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(46,38):", $t13} $t13 == $t13; + goto L14; + } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:726:5+1 + assume {:print "$at(31,31623,31624)"} true; +L13: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:726:5+1 + assume {:print "$at(31,31623,31624)"} true; + return; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:726:5+1 +L14: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:726:5+1 + assume {:print "$at(31,31623,31624)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun coin::merge_aggregatable_coin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+480 +procedure {:timeLimit 80} $1_coin_merge_aggregatable_coin$verify(_$t0: $Mutation ($1_coin_AggregatableCoin'#0'), _$t1: $1_coin_Coin'#0') returns ($ret0: $Mutation ($1_coin_AggregatableCoin'#0')) +{ + // declare local variables + var $t2: int; + var $t3: $1_aggregator_Aggregator; + var $t4: $1_coin_Ghost$supply'#0'; + var $t5: int; + var $t6: $Mutation ($1_coin_Ghost$supply'#0'); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_coin_Ghost$aggregate_supply'#0'; + var $t11: int; + var $t12: $Mutation ($1_coin_Ghost$aggregate_supply'#0'); + var $t13: $Mutation ($1_aggregator_Aggregator); + var $t14: $1_aggregator_Aggregator; + var $t15: bool; + var $t16: $1_aggregator_Aggregator; + var $t0: $Mutation ($1_coin_AggregatableCoin'#0'); + var $t1: $1_coin_Coin'#0'; + var $temp_0'$1_aggregator_Aggregator': $1_aggregator_Aggregator; + var $temp_0'$1_coin_AggregatableCoin'#0'': $1_coin_AggregatableCoin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'u128': int; + var $1_coin_Ghost$supply'#0'_$memory#359: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#360: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#361: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume {:print "$at(31,25992,25993)"} true; + assume ($IsValid'$1_coin_AggregatableCoin'#0''($Dereference($t0)) && $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume $IsValid'$1_coin_Coin'#0''($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t3, select coin::AggregatableCoin.value>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:598:9+26 + assume {:print "$at(32,26405,26431)"} true; + assume ($t3 == $Dereference($t0)->$value); + + // @361 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume {:print "$at(31,25992,25993)"} true; + $1_coin_CoinInfo'#0'_$memory#361 := $1_coin_CoinInfo'#0'_$memory; + + // @359 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + $1_coin_Ghost$supply'#0'_$memory#359 := $1_coin_Ghost$supply'#0'_$memory; + + // @360 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#360 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,40,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // trace_local[coin]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:605:5+1 + assume {:print "$track_local(46,40,1):", $t1} $t1 == $t1; + + // assume Identical($t4, pack coin::Ghost$supply<#0>(Sub(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Coin.value>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:610:13+56 + assume {:print "$at(31,26161,26217)"} true; + assume ($t4 == $1_coin_Ghost$supply'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v - $t1->$value))); + + // assume Identical($t5, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:610:13+56 + assume ($t5 == 0); + + // $t6 := borrow_global>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:610:13+56 + if (!$ResourceExists($1_coin_Ghost$supply'#0'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $t5)); + } + + // write_ref($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:610:13+56 + $t6 := $UpdateMutation($t6, $t4); + + // write_back[coin::Ghost$supply<#0>@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:610:13+56 + $1_coin_Ghost$supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$supply'#0'_$memory, $GlobalLocationAddress($t6), + $Dereference($t6)); + + // $t7 := unpack coin::Coin<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:612:13+14 + assume {:print "$at(31,26241,26255)"} true; + $t7 := $t1->$value; + + // $t8 := (u128)($t7) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:613:22+15 + assume {:print "$at(31,26285,26300)"} true; + call $t8 := $CastU128($t7); + if ($abort_flag) { + assume {:print "$at(31,26285,26300)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(46,40):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[amount]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:613:13+6 + assume {:print "$track_local(46,40,2):", $t8} $t8 == $t8; + + // assume Identical($t10, pack coin::Ghost$aggregate_supply<#0>(Add(select coin::Ghost$aggregate_supply.v<#0>(global>(0x0)), $t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:615:13+72 + assume {:print "$at(31,26329,26401)"} true; + assume ($t10 == $1_coin_Ghost$aggregate_supply'#0'(($ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v + $t8))); + + // assume Identical($t11, 0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:615:13+72 + assume ($t11 == 0); + + // $t12 := borrow_global>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:615:13+72 + if (!$ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $t11)); + } + + // write_ref($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:615:13+72 + $t12 := $UpdateMutation($t12, $t10); + + // write_back[coin::Ghost$aggregate_supply<#0>@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:615:13+72 + $1_coin_Ghost$aggregate_supply'#0'_$memory := $ResourceUpdate($1_coin_Ghost$aggregate_supply'#0'_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // $t13 := borrow_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:25+19 + assume {:print "$at(31,26437,26456)"} true; + $t13 := $ChildMutation($t0, 0, $Dereference($t0)->$value); + + // opaque begin: aggregator::add($t13, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + + // $t14 := read_ref($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + $t14 := $Dereference($t13); + + // assume Identical($t15, Or(Gt(Add(aggregator::spec_aggregator_get_val($t13), $t8), aggregator::spec_get_limit($t13)), Gt(Add(aggregator::spec_aggregator_get_val($t13), $t8), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume ($t15 == ((($1_aggregator_spec_aggregator_get_val($Dereference($t13)) + $t8) > $1_aggregator_spec_get_limit($Dereference($t13))) || (($1_aggregator_spec_aggregator_get_val($Dereference($t13)) + $t8) > 340282366920938463463374607431768211455))); + + // if ($t15) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + if ($t15) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 +L4: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume {:print "$at(31,26421,26465)"} true; + assume {:print "$track_abort(46,40):", $t9} $t9 == $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 +L3: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume {:print "$at(31,26421,26465)"} true; + havoc $temp_0'$1_aggregator_Aggregator'; + $t13 := $UpdateMutation($t13, $temp_0'$1_aggregator_Aggregator'); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume $IsValid'$1_aggregator_Aggregator'($Dereference($t13)); + + // assume Eq(aggregator::spec_get_limit($t13), aggregator::spec_get_limit($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t13)), $1_aggregator_spec_get_limit($t14)); + + // assume Eq(Freeze(false)($t13), aggregator::spec_aggregator_set_val($t14, Add(aggregator::spec_aggregator_get_val($t14), $t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + assume $IsEqual'$1_aggregator_Aggregator'($Dereference($t13), $1_aggregator_spec_aggregator_set_val($t14, ($1_aggregator_spec_aggregator_get_val($t14) + $t8))); + + // opaque end: aggregator::add($t13, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + + // write_back[Reference($t0).value (aggregator::Aggregator)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + $t0 := $UpdateMutation($t0, $Update'$1_coin_AggregatableCoin'#0''_value($Dereference($t0), $Dereference($t13))); + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:9+44 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,40,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // trace_local[dst_coin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:617:53+1 + $temp_0'$1_coin_AggregatableCoin'#0'' := $Dereference($t0); + assume {:print "$track_local(46,40,0):", $temp_0'$1_coin_AggregatableCoin'#0''} $temp_0'$1_coin_AggregatableCoin'#0'' == $temp_0'$1_coin_AggregatableCoin'#0''; + + // assert Eq(aggregator::spec_get_limit(select coin::AggregatableCoin.value($t0)), 18446744073709551615) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:99:9+55 + assume {:print "$at(32,5854,5909)"} true; + assert {:msg "assert_failed(32,5854,5909): data invariant does not hold"} + $IsEqual'u128'($1_aggregator_spec_get_limit($Dereference($t0)->$value), 18446744073709551615); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:618:5+1 + assume {:print "$at(31,26471,26472)"} true; +L1: + + // assume Identical($t16, select coin::AggregatableCoin.value>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:599:9+33 + assume {:print "$at(32,26440,26473)"} true; + assume ($t16 == $Dereference($t0)->$value); + + // assert Not(Gt(Add(aggregator::spec_aggregator_get_val[]($t3), select coin::Coin.value>($t1)), aggregator::spec_get_limit[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:600:9+112 + assume {:print "$at(32,26482,26594)"} true; + assert {:msg "assert_failed(32,26482,26594): function does not abort under this condition"} + !(($1_aggregator_spec_aggregator_get_val($t3) + $t1->$value) > $1_aggregator_spec_get_limit($t3)); + + // assert Not(Gt(Add(aggregator::spec_aggregator_get_val[]($t3), select coin::Coin.value>($t1)), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:602:9+88 + assume {:print "$at(32,26603,26691)"} true; + assert {:msg "assert_failed(32,26603,26691): function does not abort under this condition"} + !(($1_aggregator_spec_aggregator_get_val($t3) + $t1->$value) > 340282366920938463463374607431768211455); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@359]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@360]>(0x0))), select coin::CoinInfo.supply>(global[@361]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#359, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#360, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#361, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Eq(Add(aggregator::spec_aggregator_get_val($t3), select coin::Coin.value>($t1)), aggregator::spec_aggregator_get_val($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:604:9+110 + assume {:print "$at(32,26700,26810)"} true; + assert {:msg "assert_failed(32,26700,26810): post-condition does not hold"} + $IsEqual'num'(($1_aggregator_spec_aggregator_get_val($t3) + $t1->$value), $1_aggregator_spec_aggregator_get_val($t16)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:604:9+110 + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:618:5+1 + assume {:print "$at(31,26471,26472)"} true; +L2: + + // assert Or(Gt(Add(aggregator::spec_aggregator_get_val[]($t3), select coin::Coin.value>($t1)), aggregator::spec_get_limit[]($t3)), Gt(Add(aggregator::spec_aggregator_get_val[]($t3), select coin::Coin.value>($t1)), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:597:5+525 + assume {:print "$at(32,26291,26816)"} true; + assert {:msg "assert_failed(32,26291,26816): abort not covered by any of the `aborts_if` clauses"} + ((($1_aggregator_spec_aggregator_get_val($t3) + $t1->$value) > $1_aggregator_spec_get_limit($t3)) || (($1_aggregator_spec_aggregator_get_val($t3) + $t1->$value) > 340282366920938463463374607431768211455)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:597:5+525 + $abort_code := $t9; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun coin::migrate_to_fungible_store [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+220 +procedure {:timeLimit 80} $1_coin_migrate_to_fungible_store$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_coin_Ghost$supply'#0'_$memory#488: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#489: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#490: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume {:print "$at(31,31703,31704)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @490 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + $1_coin_CoinInfo'#0'_$memory#490 := $1_coin_CoinInfo'#0'_$memory; + + // @488 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + $1_coin_Ghost$supply'#0'_$memory#488 := $1_coin_Ghost$supply'#0'_$memory; + + // @489 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#489 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:729:5+1 + assume {:print "$track_local(46,41,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:732:51+27 + assume {:print "$at(31,31888,31915)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,31888,31915)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,41):", $t2} $t2 == $t2; + goto L2; + } + + // coin::maybe_convert_to_fungible_store<#0>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:732:9+70 + call $1_coin_maybe_convert_to_fungible_store'#0'($t1); + if ($abort_flag) { + assume {:print "$at(31,31846,31916)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(46,41):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:733:5+1 + assume {:print "$at(31,31922,31923)"} true; +L1: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@488]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@489]>(0x0))), select coin::CoinInfo.supply>(global[@490]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#488, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#489, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#490, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:733:5+1 + assume {:print "$at(31,31922,31923)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:733:5+1 + assume {:print "$at(31,31922,31923)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun coin::paired_burn_ref_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+446 +procedure {:timeLimit 80} $1_coin_paired_burn_ref_exists$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $t2: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t3: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_coin_PairedFungibleAssetRefs; + var $t15: $1_option_Option'$1_fungible_asset_BurnRef'; + var $t16: bool; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#494: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#495: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#496: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume {:print "$at(31,20166,20167)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @496 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + $1_coin_CoinInfo'#0'_$memory#496 := $1_coin_CoinInfo'#0'_$memory; + + // @494 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + $1_coin_Ghost$supply'#0'_$memory#494 := $1_coin_Ghost$supply'#0'_$memory; + + // @495 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:488:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#495 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t3 := coin::paired_metadata<#0>() on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t3 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_opt#61]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,45,2):", $t3} $t3 == $t3; + + // $t5 := opaque begin: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t5 := opaque end: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t6 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t6 := 16; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,45):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t8 := opaque begin: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t9, option::spec_is_none>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t9 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // if ($t9) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t9) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L9: + + // assume And(option::spec_is_none>($t3), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L8: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t8); + + // assume Eq>($t8, option::spec_borrow>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t8, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t8 := opaque end: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:489:13+8 + assume {:print "$at(31,20284,20292)"} true; + assume {:print "$track_local(46,45,0):", $t8} $t8 == $t8; + + // $t10 := object::object_address($t8) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:490:29+25 + assume {:print "$at(31,20366,20391)"} true; + call $t10 := $1_object_object_address'$1_fungible_asset_Metadata'($t8); + if ($abort_flag) { + assume {:print "$at(31,20366,20391)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:490:13+13 + assume {:print "$track_local(46,45,1):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:17+6 + assume {:print "$at(31,20409,20415)"} true; + $t11 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 + assume {:print "$at(31,20401,20512)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:81+37 +L3: + + // $t12 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:81+37 + assume {:print "$at(31,20473,20510)"} true; + $t12 := 19; + assume $IsValid'u64'($t12); + + // $t13 := error::internal($t12) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:65+54 + call $t13 := $1_error_internal($t12); + if ($abort_flag) { + assume {:print "$at(31,20457,20511)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 + assume {:print "$at(31,20401,20512)"} true; + assume {:print "$track_abort(46,45):", $t13} $t13 == $t13; + + // $t4 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 + $t4 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:491:9+111 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:65+13 + assume {:print "$at(31,20578,20591)"} true; +L5: + + // $t14 := get_global($t10) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:26+13 + assume {:print "$at(31,20539,20552)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(31,20539,20552)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,45):", $t4} $t4 == $t4; + goto L7; + } + + // $t15 := get_field.burn_ref_opt($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:25+67 + $t15 := $t14->$burn_ref_opt; + + // $t16 := opaque begin: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:9+84 + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:9+84 + assume $IsValid'bool'($t16); + + // assume Eq($t16, option::spec_is_some($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:9+84 + assume $IsEqual'bool'($t16, $1_option_spec_is_some'$1_fungible_asset_BurnRef'($t15)); + + // $t16 := opaque end: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:9+84 + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:492:9+84 + assume {:print "$track_return(46,45,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:493:5+1 + assume {:print "$at(31,20611,20612)"} true; +L6: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@494]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@495]>(0x0))), select coin::CoinInfo.supply>(global[@496]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#494, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#495, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#496, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:493:5+1 + assume {:print "$at(31,20611,20612)"} true; +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:493:5+1 + assume {:print "$at(31,20611,20612)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::paired_coin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:378:5+346 +procedure {:timeLimit 80} $1_coin_paired_coin$verify(_$t0: $1_object_Object'$1_fungible_asset_Metadata') returns ($ret0: $1_option_Option'$1_type_info_TypeInfo') +{ + // declare local variables + var $t1: $1_option_Option'$1_type_info_TypeInfo'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: $1_coin_PairedCoinType; + var $t7: $1_type_info_TypeInfo; + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_type_info_TypeInfo'': $1_option_Option'$1_type_info_TypeInfo'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:378:5+1 + assume {:print "$at(31,14459,14460)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t0); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:378:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // trace_local[metadata]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:378:5+1 + assume {:print "$track_local(46,46,0):", $t0} $t0 == $t0; + + // $t3 := object::object_address($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:379:29+33 + assume {:print "$at(31,14582,14615)"} true; + call $t3 := $1_object_object_address'$1_fungible_asset_Metadata'($t0); + if ($abort_flag) { + assume {:print "$at(31,14582,14615)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,46):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[metadata_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:379:13+13 + assume {:print "$track_local(46,46,2):", $t3} $t3 == $t3; + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:380:13+6 + assume {:print "$at(31,14629,14635)"} true; + $t5 := $ResourceExists($1_coin_PairedCoinType_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:380:9+174 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:56+13 + assume {:print "$at(31,14725,14738)"} true; +L1: + + // $t6 := get_global($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:26+13 + assume {:print "$at(31,14695,14708)"} true; + if (!$ResourceExists($1_coin_PairedCoinType_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_coin_PairedCoinType_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(31,14695,14708)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,46):", $t4} $t4 == $t4; + goto L4; + } + + // $t7 := get_field.type($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:26+49 + $t7 := $t6->$type; + + // $t1 := opaque begin: option::some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:13+63 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:13+63 + assume ($IsValid'$1_option_Option'$1_type_info_TypeInfo''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:13+63 + assume $IsEqual'$1_option_Option'$1_type_info_TypeInfo''($t1, $1_option_spec_some'$1_type_info_TypeInfo'($t7)); + + // $t1 := opaque end: option::some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:381:13+63 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:380:9+174 + assume {:print "$at(31,14625,14799)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:383:13+14 + assume {:print "$at(31,14775,14789)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:383:13+14 + assume {:print "$at(31,14775,14789)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:383:13+14 + assume ($IsValid'$1_option_Option'$1_type_info_TypeInfo''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:383:13+14 + assume $IsEqual'$1_option_Option'$1_type_info_TypeInfo''($t1, $1_option_spec_none'$1_type_info_TypeInfo'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:383:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:380:9+174 + assume {:print "$at(31,14625,14799)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:380:9+174 + assume {:print "$at(31,14625,14799)"} true; + assume {:print "$track_return(46,46,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:385:5+1 + assume {:print "$at(31,14804,14805)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:385:5+1 + assume {:print "$at(31,14804,14805)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:385:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:385:5+1 + assume {:print "$at(31,14804,14805)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::paired_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+551 +procedure {:inline 1} $1_coin_paired_metadata'$1_starcoin_coin_STC'() returns ($ret0: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'') +{ + // declare local variables + var $t0: bool; + var $t1: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t2: $1_type_info_TypeInfo; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $1_coin_CoinConversionMap; + var $t9: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t10: $1_type_info_TypeInfo; + var $t11: bool; + var $t12: $1_object_Object'$1_fungible_asset_Metadata'; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t15: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''': Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + + // bytecode translation starts here + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:39+19 + assume {:print "$at(31,9802,9821)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+6 + $t4 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 +L1: + + // $t0 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 + assume {:print "$at(31,9826,9895)"} true; + call $t0 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,9826,9895)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L0: + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + assume {:print "$at(31,9776,9895)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t0 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + $t0 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L2: + + // if ($t0) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:9+419 + assume {:print "$at(31,9772,10191)"} true; + if ($t0) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; +L4: + + // $t7 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; + $t7 := 1; + assume $IsValid'address'($t7); + + // $t8 := get_global($t7) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:24+13 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_coin_CoinConversionMap_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(31,9922,9935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t9 := get_field.coin_to_fungible_asset_map($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:23+81 + $t9 := $t8->$coin_to_fungible_asset_map; + + // trace_local[map]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:17+3 + assume {:print "$track_local(46,47,1):", $t9} $t9 == $t9; + + // $t10 := type_info::type_of<#0>() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:24+30 + assume {:print "$at(31,10027,10057)"} true; + call $t10 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(31,10027,10057)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // trace_local[type]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:17+4 + assume {:print "$track_local(46,47,2):", $t10} $t10 == $t10; + + // $t11 := table::contains>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:17+26 + assume {:print "$at(31,10075,10101)"} true; + call $t11 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10075,10101)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:52+3 + assume {:print "$at(31,10156,10159)"} true; +L6: + + // $t12 := table::borrow>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:38+24 + assume {:print "$at(31,10142,10166)"} true; + call $t12 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10142,10166)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t13 := opaque begin: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // assume And(WellFormed($t13), Le(Len>(select option::Option.vec($t13)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13) && (LenVec($t13->$vec) <= 1)); + + // assume Eq>>($t13, option::spec_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13, $1_option_spec_some'$1_object_Object'$1_fungible_asset_Metadata''($t12)); + + // $t13 := opaque end: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + assume {:print "$track_return(46,47,0):", $t13} $t13 == $t13; + + // $t14 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + $t14 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + assume {:print "$at(31,10071,10181)"} true; +L5: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; +L3: + + // $t15 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; + + // assume And(WellFormed($t15), Le(Len>(select option::Option.vec($t15)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15) && (LenVec($t15->$vec) <= 1)); + + // assume Eq>>($t15, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15, $1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''()); + + // $t15 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$track_return(46,47,0):", $t15} $t15 == $t15; + + // $t14 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + $t14 := $t15; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; +L7: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; + $ret0 := $t14; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 +L8: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::paired_metadata<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+551 +procedure {:inline 1} $1_coin_paired_metadata'#0'() returns ($ret0: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'') +{ + // declare local variables + var $t0: bool; + var $t1: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t2: $1_type_info_TypeInfo; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $1_coin_CoinConversionMap; + var $t9: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t10: $1_type_info_TypeInfo; + var $t11: bool; + var $t12: $1_object_Object'$1_fungible_asset_Metadata'; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t15: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''': Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + + // bytecode translation starts here + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:39+19 + assume {:print "$at(31,9802,9821)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+6 + $t4 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 +L1: + + // $t0 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 + assume {:print "$at(31,9826,9895)"} true; + call $t0 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,9826,9895)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L0: + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + assume {:print "$at(31,9776,9895)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t0 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + $t0 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L2: + + // if ($t0) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:9+419 + assume {:print "$at(31,9772,10191)"} true; + if ($t0) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; +L4: + + // $t7 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; + $t7 := 1; + assume $IsValid'address'($t7); + + // $t8 := get_global($t7) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:24+13 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_coin_CoinConversionMap_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(31,9922,9935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t9 := get_field.coin_to_fungible_asset_map($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:23+81 + $t9 := $t8->$coin_to_fungible_asset_map; + + // trace_local[map]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:17+3 + assume {:print "$track_local(46,47,1):", $t9} $t9 == $t9; + + // $t10 := type_info::type_of<#0>() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:24+30 + assume {:print "$at(31,10027,10057)"} true; + call $t10 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,10027,10057)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // trace_local[type]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:17+4 + assume {:print "$track_local(46,47,2):", $t10} $t10 == $t10; + + // $t11 := table::contains>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:17+26 + assume {:print "$at(31,10075,10101)"} true; + call $t11 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10075,10101)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:52+3 + assume {:print "$at(31,10156,10159)"} true; +L6: + + // $t12 := table::borrow>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:38+24 + assume {:print "$at(31,10142,10166)"} true; + call $t12 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10142,10166)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t13 := opaque begin: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // assume And(WellFormed($t13), Le(Len>(select option::Option.vec($t13)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13) && (LenVec($t13->$vec) <= 1)); + + // assume Eq>>($t13, option::spec_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13, $1_option_spec_some'$1_object_Object'$1_fungible_asset_Metadata''($t12)); + + // $t13 := opaque end: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + assume {:print "$track_return(46,47,0):", $t13} $t13 == $t13; + + // $t14 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + $t14 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + assume {:print "$at(31,10071,10181)"} true; +L5: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; +L3: + + // $t15 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; + + // assume And(WellFormed($t15), Le(Len>(select option::Option.vec($t15)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15) && (LenVec($t15->$vec) <= 1)); + + // assume Eq>>($t15, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15, $1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''()); + + // $t15 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$track_return(46,47,0):", $t15} $t15 == $t15; + + // $t14 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + $t14 := $t15; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; +L7: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; + $ret0 := $t14; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 +L8: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::paired_metadata [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+551 +procedure {:timeLimit 80} $1_coin_paired_metadata$verify() returns ($ret0: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'') +{ + // declare local variables + var $t0: bool; + var $t1: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t2: $1_type_info_TypeInfo; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $1_coin_CoinConversionMap; + var $t9: Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $t10: $1_type_info_TypeInfo; + var $t11: bool; + var $t12: $1_object_Object'$1_fungible_asset_Metadata'; + var $t13: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t14: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t15: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'$1_table_Table'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''': Table int ($1_object_Object'$1_fungible_asset_Metadata'); + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $1_coin_Ghost$supply'#0'_$memory#177: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#178: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#179: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume {:print "$at(31,9670,9671)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @179 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + $1_coin_CoinInfo'#0'_$memory#179 := $1_coin_CoinInfo'#0'_$memory; + + // @177 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + $1_coin_Ghost$supply'#0'_$memory#177 := $1_coin_Ghost$supply'#0'_$memory; + + // @178 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:278:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#178 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t3 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:39+19 + assume {:print "$at(31,9802,9821)"} true; + $t3 := 1; + assume $IsValid'address'($t3); + + // $t4 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+6 + $t4 := $ResourceExists($1_coin_CoinConversionMap_$memory, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 +L1: + + // $t0 := features::coin_to_fungible_asset_migration_feature_enabled() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:63+69 + assume {:print "$at(31,9826,9895)"} true; + call $t0 := $1_features_coin_to_fungible_asset_migration_feature_enabled(); + if ($abort_flag) { + assume {:print "$at(31,9826,9895)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L0: + + // $t6 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + assume {:print "$at(31,9776,9895)"} true; + $t6 := false; + assume $IsValid'bool'($t6); + + // $t0 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 + $t0 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:13+119 +L2: + + // if ($t0) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:279:9+419 + assume {:print "$at(31,9772,10191)"} true; + if ($t0) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; +L4: + + // $t7 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:57+19 + assume {:print "$at(31,9955,9974)"} true; + $t7 := 1; + assume $IsValid'address'($t7); + + // $t8 := get_global($t7) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:24+13 + if (!$ResourceExists($1_coin_CoinConversionMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_coin_CoinConversionMap_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(31,9922,9935)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t9 := get_field.coin_to_fungible_asset_map($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:23+81 + $t9 := $t8->$coin_to_fungible_asset_map; + + // trace_local[map]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:281:17+3 + assume {:print "$track_local(46,47,1):", $t9} $t9 == $t9; + + // $t10 := type_info::type_of<#0>() on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:24+30 + assume {:print "$at(31,10027,10057)"} true; + call $t10 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(31,10027,10057)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // trace_local[type]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:282:17+4 + assume {:print "$track_local(46,47,2):", $t10} $t10 == $t10; + + // $t11 := table::contains>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:17+26 + assume {:print "$at(31,10075,10101)"} true; + call $t11 := $1_table_contains'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10075,10101)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:52+3 + assume {:print "$at(31,10156,10159)"} true; +L6: + + // $t12 := table::borrow>($t9, $t10) on_abort goto L8 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:38+24 + assume {:print "$at(31,10142,10166)"} true; + call $t12 := $1_table_borrow'$1_type_info_TypeInfo_$1_object_Object'$1_fungible_asset_Metadata''($t9, $t10); + if ($abort_flag) { + assume {:print "$at(31,10142,10166)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,47):", $t5} $t5 == $t5; + goto L8; + } + + // $t13 := opaque begin: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // assume And(WellFormed($t13), Le(Len>(select option::Option.vec($t13)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13) && (LenVec($t13->$vec) <= 1)); + + // assume Eq>>($t13, option::spec_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t13, $1_option_spec_some'$1_object_Object'$1_fungible_asset_Metadata''($t12)); + + // $t13 := opaque end: option::some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:24+39 + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + assume {:print "$track_return(46,47,0):", $t13} $t13 == $t13; + + // $t14 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + $t14 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:284:17+46 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:283:13+110 + assume {:print "$at(31,10071,10181)"} true; +L5: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; +L3: + + // $t15 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$at(31,10201,10215)"} true; + + // assume And(WellFormed($t15), Le(Len>(select option::Option.vec($t15)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume ($IsValid'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15) && (LenVec($t15->$vec) <= 1)); + + // assume Eq>>($t15, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume $IsEqual'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata'''($t15, $1_option_spec_none'$1_object_Object'$1_fungible_asset_Metadata''()); + + // $t15 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + assume {:print "$track_return(46,47,0):", $t15} $t15 == $t15; + + // $t14 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:287:9+14 + $t14 := $t15; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; +L7: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@177]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@178]>(0x0))), select coin::CoinInfo.supply>(global[@179]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#177, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#178, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#179, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t14; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; +L8: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:288:5+1 + assume {:print "$at(31,10220,10221)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun coin::paired_mint_ref_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+446 +procedure {:timeLimit 80} $1_coin_paired_mint_ref_exists$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $t2: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t3: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_coin_PairedFungibleAssetRefs; + var $t15: $1_option_Option'$1_fungible_asset_MintRef'; + var $t16: bool; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#500: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#501: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#502: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume {:print "$at(31,16276,16277)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @502 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + $1_coin_CoinInfo'#0'_$memory#502 := $1_coin_CoinInfo'#0'_$memory; + + // @500 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + $1_coin_Ghost$supply'#0'_$memory#500 := $1_coin_Ghost$supply'#0'_$memory; + + // @501 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:419:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#501 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t3 := coin::paired_metadata<#0>() on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t3 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_opt#62]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,48,2):", $t3} $t3 == $t3; + + // $t5 := opaque begin: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t5 := opaque end: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t6 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t6 := 16; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,48):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t8 := opaque begin: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t9, option::spec_is_none>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t9 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // if ($t9) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t9) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L9: + + // assume And(option::spec_is_none>($t3), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L8: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t8); + + // assume Eq>($t8, option::spec_borrow>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t8, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t8 := opaque end: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:420:13+8 + assume {:print "$at(31,16394,16402)"} true; + assume {:print "$track_local(46,48,0):", $t8} $t8 == $t8; + + // $t10 := object::object_address($t8) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:421:29+25 + assume {:print "$at(31,16476,16501)"} true; + call $t10 := $1_object_object_address'$1_fungible_asset_Metadata'($t8); + if ($abort_flag) { + assume {:print "$at(31,16476,16501)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:421:13+13 + assume {:print "$track_local(46,48,1):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:17+6 + assume {:print "$at(31,16519,16525)"} true; + $t11 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 + assume {:print "$at(31,16511,16622)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:81+37 +L3: + + // $t12 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:81+37 + assume {:print "$at(31,16583,16620)"} true; + $t12 := 19; + assume $IsValid'u64'($t12); + + // $t13 := error::internal($t12) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:65+54 + call $t13 := $1_error_internal($t12); + if ($abort_flag) { + assume {:print "$at(31,16567,16621)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 + assume {:print "$at(31,16511,16622)"} true; + assume {:print "$track_abort(46,48):", $t13} $t13 == $t13; + + // $t4 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 + $t4 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:422:9+111 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:65+13 + assume {:print "$at(31,16688,16701)"} true; +L5: + + // $t14 := get_global($t10) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:26+13 + assume {:print "$at(31,16649,16662)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(31,16649,16662)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,48):", $t4} $t4 == $t4; + goto L7; + } + + // $t15 := get_field.mint_ref_opt($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:25+67 + $t15 := $t14->$mint_ref_opt; + + // $t16 := opaque begin: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:9+84 + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:9+84 + assume $IsValid'bool'($t16); + + // assume Eq($t16, option::spec_is_some($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:9+84 + assume $IsEqual'bool'($t16, $1_option_spec_is_some'$1_fungible_asset_MintRef'($t15)); + + // $t16 := opaque end: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:9+84 + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:423:9+84 + assume {:print "$track_return(46,48,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:424:5+1 + assume {:print "$at(31,16721,16722)"} true; +L6: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@500]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@501]>(0x0))), select coin::CoinInfo.supply>(global[@502]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#500, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#501, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#502, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:424:5+1 + assume {:print "$at(31,16721,16722)"} true; +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:424:5+1 + assume {:print "$at(31,16721,16722)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::paired_transfer_ref_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+454 +procedure {:timeLimit 80} $1_coin_paired_transfer_ref_exists$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_object_Object'$1_fungible_asset_Metadata'; + var $t1: int; + var $t2: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t3: $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_object_Object'$1_fungible_asset_Metadata'; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_coin_PairedFungibleAssetRefs; + var $t15: $1_option_Option'$1_fungible_asset_TransferRef'; + var $t16: bool; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''': $1_option_Option'$1_object_Object'$1_fungible_asset_Metadata''; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_coin_Ghost$supply'#0'_$memory#506: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#507: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#508: $Memory $1_coin_CoinInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume {:print "$at(31,18158,18159)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // @508 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + $1_coin_CoinInfo'#0'_$memory#508 := $1_coin_CoinInfo'#0'_$memory; + + // @506 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + $1_coin_Ghost$supply'#0'_$memory#506 := $1_coin_Ghost$supply'#0'_$memory; + + // @507 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:452:5+1 + $1_coin_Ghost$aggregate_supply'#0'_$memory#507 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // $t3 := coin::paired_metadata<#0>() on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:28+27 + assume {:print "$at(31,16038,16065)"} true; + call $t3 := $1_coin_paired_metadata'#0'(); + if ($abort_flag) { + assume {:print "$at(31,16038,16065)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_opt#63]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:412:13+12 + assume {:print "$track_local(46,49,2):", $t3} $t3 == $t3; + + // $t5 := opaque begin: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume {:print "$at(31,16083,16113)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t5 := opaque end: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:17+30 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 +L0: + + // $t6 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:66+22 + assume {:print "$at(31,16132,16154)"} true; + $t6 := 16; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:49+40 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(31,16115,16155)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + assume {:print "$at(31,16075,16156)"} true; + assume {:print "$track_abort(46,49):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + $t4 := $t7; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:413:9+81 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:30+12 + assume {:print "$at(31,16187,16199)"} true; +L2: + + // $t8 := opaque begin: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + + // assume Identical($t9, option::spec_is_none>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume ($t9 == $1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // if ($t9) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + if ($t9) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L9: + + // assume And(option::spec_is_none>($t3), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume ($1_option_spec_is_none'$1_object_Object'$1_fungible_asset_Metadata''($t3) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 +L8: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume {:print "$at(31,16166,16200)"} true; + assume $IsValid'$1_object_Object'$1_fungible_asset_Metadata''($t8); + + // assume Eq>($t8, option::spec_borrow>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + assume $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t8, $1_option_spec_borrow'$1_object_Object'$1_fungible_asset_Metadata''($t3)); + + // $t8 := opaque end: option::destroy_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:414:9+34 + + // trace_local[metadata]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:453:13+8 + assume {:print "$at(31,18280,18288)"} true; + assume {:print "$track_local(46,49,0):", $t8} $t8 == $t8; + + // $t10 := object::object_address($t8) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:454:29+25 + assume {:print "$at(31,18362,18387)"} true; + call $t10 := $1_object_object_address'$1_fungible_asset_Metadata'($t8); + if ($abort_flag) { + assume {:print "$at(31,18362,18387)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + goto L7; + } + + // trace_local[metadata_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:454:13+13 + assume {:print "$track_local(46,49,1):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:17+6 + assume {:print "$at(31,18405,18411)"} true; + $t11 := $ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 + assume {:print "$at(31,18397,18508)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:81+37 +L3: + + // $t12 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:81+37 + assume {:print "$at(31,18469,18506)"} true; + $t12 := 19; + assume $IsValid'u64'($t12); + + // $t13 := error::internal($t12) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:65+54 + call $t13 := $1_error_internal($t12); + if ($abort_flag) { + assume {:print "$at(31,18453,18507)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 + assume {:print "$at(31,18397,18508)"} true; + assume {:print "$track_abort(46,49):", $t13} $t13 == $t13; + + // $t4 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 + $t4 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:455:9+111 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:65+13 + assume {:print "$at(31,18574,18587)"} true; +L5: + + // $t14 := get_global($t10) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:26+13 + assume {:print "$at(31,18535,18548)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(31,18535,18548)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(46,49):", $t4} $t4 == $t4; + goto L7; + } + + // $t15 := get_field.transfer_ref_opt($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:25+71 + $t15 := $t14->$transfer_ref_opt; + + // $t16 := opaque begin: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:9+88 + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:9+88 + assume $IsValid'bool'($t16); + + // assume Eq($t16, option::spec_is_some($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:9+88 + assume $IsEqual'bool'($t16, $1_option_spec_is_some'$1_fungible_asset_TransferRef'($t15)); + + // $t16 := opaque end: option::is_some($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:9+88 + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:456:9+88 + assume {:print "$track_return(46,49,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:457:5+1 + assume {:print "$at(31,18611,18612)"} true; +L6: + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@506]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@507]>(0x0))), select coin::CoinInfo.supply>(global[@508]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#506, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#507, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#508, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:457:5+1 + assume {:print "$at(31,18611,18612)"} true; +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:457:5+1 + assume {:print "$at(31,18611,18612)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun coin::register [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1174:5+939 +procedure {:inline 1} $1_coin_register'$1_starcoin_coin_STC'(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $t6: Vec (int); + var $t7: $1_string_String; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: Vec (int); + var $t12: $1_string_String; + var $t13: int; + var $t14: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t22: $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $t23: Vec (int); + var $t24: $1_string_String; + var $t0: $signer; + var $temp_0'$1_coin_CoinStore'$1_starcoin_coin_STC'': $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1174:5+1 + assume {:print "$at(31,49861,49862)"} true; + assume {:print "$track_local(46,50,0):", $t0} $t0 == $t0; + + // $t6 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:41+27 + assume {:print "$at(31,49978,50005)"} true; + $t6 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t6); + + // $t7 := string::utf8($t6) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:23+46 + call $t7 := $1_string_utf8($t6); + if ($abort_flag) { + assume {:print "$at(31,49960,50006)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t7) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:9+61 + call $1_debug_print'$1_string_String'($t7); + if ($abort_flag) { + assume {:print "$at(31,49946,50007)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t9 := signer::address_of($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1176:28+27 + assume {:print "$at(31,50036,50063)"} true; + call $t9 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,50036,50063)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // trace_local[account_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1176:13+12 + assume {:print "$track_local(46,50,4):", $t9} $t9 == $t9; + + // $t10 := coin::is_account_registered<#0>($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1178:13+45 + assume {:print "$at(31,50164,50209)"} true; + call $t10 := $1_coin_is_account_registered'$1_starcoin_coin_STC'($t9); + if ($abort_flag) { + assume {:print "$at(31,50164,50209)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1178:9+179 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:27+69 + assume {:print "$at(31,50239,50308)"} true; +L1: + + // $t11 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 120, 105, 116, 101, 100, 44, 32, 65, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 114, 101, 103, 105, 115, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:45+50 + assume {:print "$at(31,50257,50307)"} true; + $t11 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 44)), MakeVec4(32, 65, 99, 99)), MakeVec4(111, 117, 110, 116)), MakeVec4(32, 104, 97, 115)), MakeVec4(32, 114, 101, 103)), MakeVec4(105, 115, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t11); + + // $t12 := string::utf8($t11) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:27+69 + call $t12 := $1_string_utf8($t11); + if ($abort_flag) { + assume {:print "$at(31,50239,50308)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t12) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:13+84 + call $1_debug_print'$1_string_String'($t12); + if ($abort_flag) { + assume {:print "$at(31,50225,50309)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1180:13+6 + assume {:print "$at(31,50323,50329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1183:42+12 + assume {:print "$at(31,50383,50395)"} true; +L0: + + // account::register_coin<#0>($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1183:9+46 + assume {:print "$at(31,50350,50396)"} true; + call $1_account_register_coin'$1_starcoin_coin_STC'($t9); + if ($abort_flag) { + assume {:print "$at(31,50350,50396)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1185:33+1 + assume {:print "$at(31,50477,50478)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := pack coin::Coin<#0>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1185:19+17 + $t14 := $1_coin_Coin'$1_starcoin_coin_STC'($t13); + + // $t15 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1186:21+5 + assume {:print "$at(31,50502,50507)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1187:29+48 + assume {:print "$at(31,50537,50585)"} true; + call $t18 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(31,50537,50585)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1188:30+49 + assume {:print "$at(31,50616,50665)"} true; + call $t21 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(31,50616,50665)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t22 := pack coin::CoinStore<#0>($t14, $t15, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1184:26+253 + assume {:print "$at(31,50423,50676)"} true; + $t22 := $1_coin_CoinStore'$1_starcoin_coin_STC'($t14, $t15, $t18, $t21); + + // trace_local[coin_store]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1184:13+10 + assume {:print "$track_local(46,50,5):", $t22} $t22 == $t22; + + // move_to>($t22, $t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1190:9+7 + assume {:print "$at(31,50686,50693)"} true; + if ($ResourceExists($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(31,50686,50693)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t23 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 120, 105, 116, 101, 100, 32, 110, 111, 114, 109, 97, 108, 108, 121] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:41+35 + assume {:print "$at(31,50756,50791)"} true; + $t23 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 32)), MakeVec4(110, 111, 114, 109)), MakeVec4(97, 108, 108, 121)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:23+54 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(31,50738,50792)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t24) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:9+69 + call $1_debug_print'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(31,50724,50793)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 +L3: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::register<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1174:5+939 +procedure {:inline 1} $1_coin_register'#0'(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_coin_CoinStore'#0'; + var $t6: Vec (int); + var $t7: $1_string_String; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: Vec (int); + var $t12: $1_string_String; + var $t13: int; + var $t14: $1_coin_Coin'#0'; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_event_EventHandle'$1_coin_DepositEvent'; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_coin_WithdrawEvent'; + var $t22: $1_coin_CoinStore'#0'; + var $t23: Vec (int); + var $t24: $1_string_String; + var $t0: $signer; + var $temp_0'$1_coin_CoinStore'#0'': $1_coin_CoinStore'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1174:5+1 + assume {:print "$at(31,49861,49862)"} true; + assume {:print "$track_local(46,50,0):", $t0} $t0 == $t0; + + // $t6 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:41+27 + assume {:print "$at(31,49978,50005)"} true; + $t6 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t6); + + // $t7 := string::utf8($t6) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:23+46 + call $t7 := $1_string_utf8($t6); + if ($abort_flag) { + assume {:print "$at(31,49960,50006)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t7) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1175:9+61 + call $1_debug_print'$1_string_String'($t7); + if ($abort_flag) { + assume {:print "$at(31,49946,50007)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t9 := signer::address_of($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1176:28+27 + assume {:print "$at(31,50036,50063)"} true; + call $t9 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,50036,50063)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // trace_local[account_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1176:13+12 + assume {:print "$track_local(46,50,4):", $t9} $t9 == $t9; + + // $t10 := coin::is_account_registered<#0>($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1178:13+45 + assume {:print "$at(31,50164,50209)"} true; + call $t10 := $1_coin_is_account_registered'#0'($t9); + if ($abort_flag) { + assume {:print "$at(31,50164,50209)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1178:9+179 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:27+69 + assume {:print "$at(31,50239,50308)"} true; +L1: + + // $t11 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 120, 105, 116, 101, 100, 44, 32, 65, 99, 99, 111, 117, 110, 116, 32, 104, 97, 115, 32, 114, 101, 103, 105, 115, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:45+50 + assume {:print "$at(31,50257,50307)"} true; + $t11 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 44)), MakeVec4(32, 65, 99, 99)), MakeVec4(111, 117, 110, 116)), MakeVec4(32, 104, 97, 115)), MakeVec4(32, 114, 101, 103)), MakeVec4(105, 115, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t11); + + // $t12 := string::utf8($t11) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:27+69 + call $t12 := $1_string_utf8($t11); + if ($abort_flag) { + assume {:print "$at(31,50239,50308)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t12) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1179:13+84 + call $1_debug_print'$1_string_String'($t12); + if ($abort_flag) { + assume {:print "$at(31,50225,50309)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1180:13+6 + assume {:print "$at(31,50323,50329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1183:42+12 + assume {:print "$at(31,50383,50395)"} true; +L0: + + // account::register_coin<#0>($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1183:9+46 + assume {:print "$at(31,50350,50396)"} true; + call $1_account_register_coin'#0'($t9); + if ($abort_flag) { + assume {:print "$at(31,50350,50396)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1185:33+1 + assume {:print "$at(31,50477,50478)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := pack coin::Coin<#0>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1185:19+17 + $t14 := $1_coin_Coin'#0'($t13); + + // $t15 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1186:21+5 + assume {:print "$at(31,50502,50507)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1187:29+48 + assume {:print "$at(31,50537,50585)"} true; + call $t18 := $1_account_new_event_handle'$1_coin_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(31,50537,50585)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle($t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1188:30+49 + assume {:print "$at(31,50616,50665)"} true; + call $t21 := $1_account_new_event_handle'$1_coin_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(31,50616,50665)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t22 := pack coin::CoinStore<#0>($t14, $t15, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1184:26+253 + assume {:print "$at(31,50423,50676)"} true; + $t22 := $1_coin_CoinStore'#0'($t14, $t15, $t18, $t21); + + // trace_local[coin_store]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1184:13+10 + assume {:print "$track_local(46,50,5):", $t22} $t22 == $t22; + + // move_to>($t22, $t0) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1190:9+7 + assume {:print "$at(31,50686,50693)"} true; + if ($ResourceExists($1_coin_CoinStore'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_coin_CoinStore'#0'_$memory := $ResourceUpdate($1_coin_CoinStore'#0'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(31,50686,50693)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // $t23 := [99, 111, 105, 110, 58, 58, 114, 101, 103, 105, 115, 116, 101, 114, 32, 124, 32, 69, 120, 105, 116, 101, 100, 32, 110, 111, 114, 109, 97, 108, 108, 121] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:41+35 + assume {:print "$at(31,50756,50791)"} true; + $t23 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(99, 111, 105, 110), MakeVec4(58, 58, 114, 101)), MakeVec4(103, 105, 115, 116)), MakeVec4(101, 114, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 32)), MakeVec4(110, 111, 114, 109)), MakeVec4(97, 108, 108, 121)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:23+54 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(31,50738,50792)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // debug::print($t24) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1191:9+69 + call $1_debug_print'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(31,50724,50793)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(46,50):", $t8} $t8 == $t8; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 +L3: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1192:5+1 + assume {:print "$at(31,50799,50800)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun coin::return_paired_burn_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+558 +procedure {:timeLimit 80} $1_coin_return_paired_burn_ref$verify(_$t0: $1_fungible_asset_BurnRef, _$t1: $1_coin_BurnRefReceipt) returns () +{ + // declare local variables + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t11: $Mutation ($1_option_Option'$1_fungible_asset_BurnRef'); + var $t12: bool; + var $t0: $1_fungible_asset_BurnRef; + var $t1: $1_coin_BurnRefReceipt; + var $temp_0'$1_coin_BurnRefReceipt': $1_coin_BurnRefReceipt; + var $temp_0'$1_fungible_asset_BurnRef': $1_fungible_asset_BurnRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_BurnRef'': $1_option_Option'$1_fungible_asset_BurnRef'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+1 + assume {:print "$at(31,22261,22262)"} true; + assume $IsValid'$1_fungible_asset_BurnRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+1 + assume $IsValid'$1_coin_BurnRefReceipt'($t1); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+1 + assume {:print "$track_local(46,51,0):", $t0} $t0 == $t0; + + // trace_local[receipt]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:522:5+1 + assume {:print "$track_local(46,51,1):", $t1} $t1 == $t1; + + // $t3 := unpack coin::BurnRefReceipt($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:526:13+27 + assume {:print "$at(31,22408,22435)"} true; + $t3 := $t1->$metadata; + + // trace_local[metadata]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:526:30+8 + assume {:print "$track_local(46,51,2):", $t3} $t3 == $t3; + + // $t4 := fungible_asset::burn_ref_metadata($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:528:13+44 + assume {:print "$at(31,22476,22520)"} true; + call $t4 := $1_fungible_asset_burn_ref_metadata($t0); + if ($abort_flag) { + assume {:print "$at(31,22476,22520)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,51):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := ==($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:528:58+2 + $t6 := $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t4, $t3); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 + assume {:print "$at(31,22455,22607)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 + assume {:print "$at(31,22455,22607)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:529:37+26 + assume {:print "$at(31,22570,22596)"} true; +L0: + + // $t7 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:529:37+26 + assume {:print "$at(31,22570,22596)"} true; + $t7 := 24; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:529:13+51 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,22546,22597)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,51):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 + assume {:print "$at(31,22455,22607)"} true; + assume {:print "$track_abort(46,51):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:527:9+152 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:531:44+9 + assume {:print "$at(31,22652,22661)"} true; +L2: + + // $t9 := object::object_address($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:531:29+25 + assume {:print "$at(31,22637,22662)"} true; + call $t9 := $1_object_object_address'$1_fungible_asset_Metadata'($t3); + if ($abort_flag) { + assume {:print "$at(31,22637,22662)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,51):", $t5} $t5 == $t5; + goto L4; + } + + // $t10 := borrow_global($t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:532:33+17 + assume {:print "$at(31,22696,22713)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(31,22696,22713)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,51):", $t5} $t5 == $t5; + goto L4; + } + + // $t11 := borrow_field.burn_ref_opt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:532:28+75 + $t11 := $ChildMutation($t10, 2, $Dereference($t10)->$burn_ref_opt); + + // opaque begin: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume {:print "$at(31,22776,22812)"} true; + + // assume Identical($t12, option::spec_is_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume ($t12 == $1_option_spec_is_some'$1_fungible_asset_BurnRef'($Dereference($t11))); + + // if ($t12) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + if ($t12) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 +L6: + + // assume And(option::spec_is_some($t11), Eq(262144, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume {:print "$at(31,22776,22812)"} true; + assume ($1_option_spec_is_some'$1_fungible_asset_BurnRef'($Dereference($t11)) && $IsEqual'num'(262144, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume {:print "$at(31,22776,22812)"} true; + assume {:print "$track_abort(46,51):", $t5} $t5 == $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 +L5: + + // $t11 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume {:print "$at(31,22776,22812)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''; + $t11 := $UpdateMutation($t11, $temp_0'$1_option_Option'$1_fungible_asset_BurnRef''); + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume ($IsValid'$1_option_Option'$1_fungible_asset_BurnRef''($Dereference($t11)) && (LenVec($Dereference($t11)->$vec) <= 1)); + + // assume option::spec_is_some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume $1_option_spec_is_some'$1_fungible_asset_BurnRef'($Dereference($t11)); + + // assume Eq(option::spec_borrow($t11), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume $IsEqual'$1_fungible_asset_BurnRef'($1_option_spec_borrow'$1_fungible_asset_BurnRef'($Dereference($t11)), $t0); + + // opaque end: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + + // write_back[Reference($t10).burn_ref_opt (option::Option)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + $t10 := $UpdateMutation($t10, $Update'$1_coin_PairedFungibleAssetRefs'_burn_ref_opt($Dereference($t10), $Dereference($t11))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:533:9+36 + assume {:print "$at(31,22776,22812)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:534:5+1 + assume {:print "$at(31,22818,22819)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:534:5+1 + assume {:print "$at(31,22818,22819)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:534:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:534:5+1 + assume {:print "$at(31,22818,22819)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t10) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t11) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun coin::return_paired_mint_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+536 +procedure {:timeLimit 80} $1_coin_return_paired_mint_ref$verify(_$t0: $1_fungible_asset_MintRef, _$t1: $1_coin_MintRefReceipt) returns () +{ + // declare local variables + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t11: $Mutation ($1_option_Option'$1_fungible_asset_MintRef'); + var $t12: bool; + var $t0: $1_fungible_asset_MintRef; + var $t1: $1_coin_MintRefReceipt; + var $temp_0'$1_coin_MintRefReceipt': $1_coin_MintRefReceipt; + var $temp_0'$1_fungible_asset_MintRef': $1_fungible_asset_MintRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_MintRef'': $1_option_Option'$1_fungible_asset_MintRef'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+1 + assume {:print "$at(31,17554,17555)"} true; + assume $IsValid'$1_fungible_asset_MintRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+1 + assume $IsValid'$1_coin_MintRefReceipt'($t1); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // trace_local[mint_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+1 + assume {:print "$track_local(46,52,0):", $t0} $t0 == $t0; + + // trace_local[receipt]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:439:5+1 + assume {:print "$track_local(46,52,1):", $t1} $t1 == $t1; + + // $t3 := unpack coin::MintRefReceipt($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:440:13+27 + assume {:print "$at(31,17679,17706)"} true; + $t3 := $t1->$metadata; + + // trace_local[metadata]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:440:30+8 + assume {:print "$track_local(46,52,2):", $t3} $t3 == $t3; + + // $t4 := fungible_asset::mint_ref_metadata($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:442:13+44 + assume {:print "$at(31,17747,17791)"} true; + call $t4 := $1_fungible_asset_mint_ref_metadata($t0); + if ($abort_flag) { + assume {:print "$at(31,17747,17791)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,52):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := ==($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:442:58+2 + $t6 := $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t4, $t3); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 + assume {:print "$at(31,17726,17878)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 + assume {:print "$at(31,17726,17878)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:443:37+26 + assume {:print "$at(31,17841,17867)"} true; +L0: + + // $t7 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:443:37+26 + assume {:print "$at(31,17841,17867)"} true; + $t7 := 20; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:443:13+51 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,17817,17868)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,52):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 + assume {:print "$at(31,17726,17878)"} true; + assume {:print "$track_abort(46,52):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:441:9+152 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:445:44+9 + assume {:print "$at(31,17923,17932)"} true; +L2: + + // $t9 := object::object_address($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:445:29+25 + assume {:print "$at(31,17908,17933)"} true; + call $t9 := $1_object_object_address'$1_fungible_asset_Metadata'($t3); + if ($abort_flag) { + assume {:print "$at(31,17908,17933)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,52):", $t5} $t5 == $t5; + goto L4; + } + + // $t10 := borrow_global($t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:446:33+17 + assume {:print "$at(31,17967,17984)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(31,17967,17984)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,52):", $t5} $t5 == $t5; + goto L4; + } + + // $t11 := borrow_field.mint_ref_opt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:446:28+75 + $t11 := $ChildMutation($t10, 0, $Dereference($t10)->$mint_ref_opt); + + // opaque begin: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume {:print "$at(31,18047,18083)"} true; + + // assume Identical($t12, option::spec_is_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume ($t12 == $1_option_spec_is_some'$1_fungible_asset_MintRef'($Dereference($t11))); + + // if ($t12) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + if ($t12) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 +L6: + + // assume And(option::spec_is_some($t11), Eq(262144, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume {:print "$at(31,18047,18083)"} true; + assume ($1_option_spec_is_some'$1_fungible_asset_MintRef'($Dereference($t11)) && $IsEqual'num'(262144, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume {:print "$at(31,18047,18083)"} true; + assume {:print "$track_abort(46,52):", $t5} $t5 == $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 +L5: + + // $t11 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume {:print "$at(31,18047,18083)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_MintRef''; + $t11 := $UpdateMutation($t11, $temp_0'$1_option_Option'$1_fungible_asset_MintRef''); + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume ($IsValid'$1_option_Option'$1_fungible_asset_MintRef''($Dereference($t11)) && (LenVec($Dereference($t11)->$vec) <= 1)); + + // assume option::spec_is_some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume $1_option_spec_is_some'$1_fungible_asset_MintRef'($Dereference($t11)); + + // assume Eq(option::spec_borrow($t11), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume $IsEqual'$1_fungible_asset_MintRef'($1_option_spec_borrow'$1_fungible_asset_MintRef'($Dereference($t11)), $t0); + + // opaque end: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + + // write_back[Reference($t10).mint_ref_opt (option::Option)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + $t10 := $UpdateMutation($t10, $Update'$1_coin_PairedFungibleAssetRefs'_mint_ref_opt($Dereference($t10), $Dereference($t11))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:447:9+36 + assume {:print "$at(31,18047,18083)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:448:5+1 + assume {:print "$at(31,18089,18090)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:448:5+1 + assume {:print "$at(31,18089,18090)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:448:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:448:5+1 + assume {:print "$at(31,18089,18090)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t10) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t11) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun coin::return_paired_transfer_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+606 +procedure {:timeLimit 80} $1_coin_return_paired_transfer_ref$verify(_$t0: $1_fungible_asset_TransferRef, _$t1: $1_coin_TransferRefReceipt) returns () +{ + // declare local variables + var $t2: $1_object_Object'$1_fungible_asset_Metadata'; + var $t3: $1_object_Object'$1_fungible_asset_Metadata'; + var $t4: $1_object_Object'$1_fungible_asset_Metadata'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation ($1_coin_PairedFungibleAssetRefs); + var $t11: $Mutation ($1_option_Option'$1_fungible_asset_TransferRef'); + var $t12: bool; + var $t0: $1_fungible_asset_TransferRef; + var $t1: $1_coin_TransferRefReceipt; + var $temp_0'$1_coin_TransferRefReceipt': $1_coin_TransferRefReceipt; + var $temp_0'$1_fungible_asset_TransferRef': $1_fungible_asset_TransferRef; + var $temp_0'$1_object_Object'$1_fungible_asset_Metadata'': $1_object_Object'$1_fungible_asset_Metadata'; + var $temp_0'$1_option_Option'$1_fungible_asset_TransferRef'': $1_option_Option'$1_fungible_asset_TransferRef'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+1 + assume {:print "$at(31,19490,19491)"} true; + assume $IsValid'$1_fungible_asset_TransferRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+1 + assume $IsValid'$1_coin_TransferRefReceipt'($t1); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // trace_local[transfer_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+1 + assume {:print "$track_local(46,53,0):", $t0} $t0 == $t0; + + // trace_local[receipt]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:472:5+1 + assume {:print "$track_local(46,53,1):", $t1} $t1 == $t1; + + // $t3 := unpack coin::TransferRefReceipt($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:476:13+31 + assume {:print "$at(31,19653,19684)"} true; + $t3 := $t1->$metadata; + + // trace_local[metadata]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:476:34+8 + assume {:print "$track_local(46,53,2):", $t3} $t3 == $t3; + + // $t4 := fungible_asset::transfer_ref_metadata($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:478:13+52 + assume {:print "$at(31,19725,19777)"} true; + call $t4 := $1_fungible_asset_transfer_ref_metadata($t0); + if ($abort_flag) { + assume {:print "$at(31,19725,19777)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,53):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := ==($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:478:66+2 + $t6 := $IsEqual'$1_object_Object'$1_fungible_asset_Metadata''($t4, $t3); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 + assume {:print "$at(31,19704,19868)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 + assume {:print "$at(31,19704,19868)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:479:37+30 + assume {:print "$at(31,19827,19857)"} true; +L0: + + // $t7 := 22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:479:37+30 + assume {:print "$at(31,19827,19857)"} true; + $t7 := 22; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:479:13+55 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(31,19803,19858)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,53):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 + assume {:print "$at(31,19704,19868)"} true; + assume {:print "$track_abort(46,53):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 + $t5 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:477:9+164 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:481:44+9 + assume {:print "$at(31,19913,19922)"} true; +L2: + + // $t9 := object::object_address($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:481:29+25 + assume {:print "$at(31,19898,19923)"} true; + call $t9 := $1_object_object_address'$1_fungible_asset_Metadata'($t3); + if ($abort_flag) { + assume {:print "$at(31,19898,19923)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,53):", $t5} $t5 == $t5; + goto L4; + } + + // $t10 := borrow_global($t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:482:37+17 + assume {:print "$at(31,19961,19978)"} true; + if (!$ResourceExists($1_coin_PairedFungibleAssetRefs_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(31,19961,19978)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(46,53):", $t5} $t5 == $t5; + goto L4; + } + + // $t11 := borrow_field.transfer_ref_opt($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:482:32+79 + $t11 := $ChildMutation($t10, 1, $Dereference($t10)->$transfer_ref_opt); + + // opaque begin: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume {:print "$at(31,20045,20089)"} true; + + // assume Identical($t12, option::spec_is_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume ($t12 == $1_option_spec_is_some'$1_fungible_asset_TransferRef'($Dereference($t11))); + + // if ($t12) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + if ($t12) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 +L6: + + // assume And(option::spec_is_some($t11), Eq(262144, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume {:print "$at(31,20045,20089)"} true; + assume ($1_option_spec_is_some'$1_fungible_asset_TransferRef'($Dereference($t11)) && $IsEqual'num'(262144, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume {:print "$at(31,20045,20089)"} true; + assume {:print "$track_abort(46,53):", $t5} $t5 == $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 +L5: + + // $t11 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume {:print "$at(31,20045,20089)"} true; + havoc $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''; + $t11 := $UpdateMutation($t11, $temp_0'$1_option_Option'$1_fungible_asset_TransferRef''); + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume ($IsValid'$1_option_Option'$1_fungible_asset_TransferRef''($Dereference($t11)) && (LenVec($Dereference($t11)->$vec) <= 1)); + + // assume option::spec_is_some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume $1_option_spec_is_some'$1_fungible_asset_TransferRef'($Dereference($t11)); + + // assume Eq(option::spec_borrow($t11), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume $IsEqual'$1_fungible_asset_TransferRef'($1_option_spec_borrow'$1_fungible_asset_TransferRef'($Dereference($t11)), $t0); + + // opaque end: option::fill($t11, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + + // write_back[Reference($t10).transfer_ref_opt (option::Option)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + $t10 := $UpdateMutation($t10, $Update'$1_coin_PairedFungibleAssetRefs'_transfer_ref_opt($Dereference($t10), $Dereference($t11))); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$mint_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$transfer_ref_opt->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($t10))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t10)->$burn_ref_opt->$vec) <= 1); + + // write_back[coin::PairedFungibleAssetRefs@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:483:9+44 + assume {:print "$at(31,20045,20089)"} true; + $1_coin_PairedFungibleAssetRefs_$memory := $ResourceUpdate($1_coin_PairedFungibleAssetRefs_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:484:5+1 + assume {:print "$at(31,20095,20096)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:484:5+1 + assume {:print "$at(31,20095,20096)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:484:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:484:5+1 + assume {:print "$at(31,20095,20096)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t10) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t11) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun coin::upgrade_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1055 +procedure {:timeLimit 80} $1_coin_upgrade_supply$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t3: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t4: int; + var $t5: int; + var $t6: $1_coin_SupplyConfig; + var $t7: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t8: $1_optional_aggregator_OptionalAggregator; + 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: $Mutation ($1_coin_SupplyConfig); + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation ($1_coin_CoinInfo'#0'); + var $t23: $Mutation ($1_option_Option'$1_optional_aggregator_OptionalAggregator'); + var $t24: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t25: bool; + var $t26: $Mutation ($1_optional_aggregator_OptionalAggregator); + var $t27: $1_optional_aggregator_OptionalAggregator; + var $t28: bool; + var $t29: bool; + var $t30: Vec ($1_optional_aggregator_Integer); + var $t31: $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $t32: $1_optional_aggregator_OptionalAggregator; + var $t33: int; + var $t0: $signer; + var $1_coin_CoinInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'': $1_option_Option'$1_optional_aggregator_OptionalAggregator'; + var $temp_0'$1_optional_aggregator_OptionalAggregator': $1_optional_aggregator_OptionalAggregator; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_coin_SupplyConfig_$memory#518: $Memory $1_coin_SupplyConfig; + var $1_coin_CoinInfo'#0'_$memory#519: $Memory $1_coin_CoinInfo'#0'; + var $1_aggregator_factory_AggregatorFactory_$memory#520: $Memory $1_aggregator_factory_AggregatorFactory; + var $1_coin_Ghost$supply'#0'_$memory#521: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#522: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_Ghost$supply'#0'_$memory#523: $Memory $1_coin_Ghost$supply'#0'; + var $1_coin_Ghost$aggregate_supply'#0'_$memory#524: $Memory $1_coin_Ghost$aggregate_supply'#0'; + var $1_coin_CoinInfo'#0'_$memory#525: $Memory $1_coin_CoinInfo'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume {:print "$at(31,45200,45201)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::SupplyConfig: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_SupplyConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_SupplyConfig_$memory, $a_0); + ($IsValid'$1_coin_SupplyConfig'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:398:9+47 + assume {:print "$at(32,17324,17371)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:399:9+66 + assume {:print "$at(32,17380,17446)"} true; + assume ($t5 == $1_type_info_$type_of'#0'()->$account_address); + + // assume Identical($t6, global(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:405:9+62 + assume {:print "$at(32,17660,17722)"} true; + assume ($t6 == $ResourceValue($1_coin_SupplyConfig_$memory, 1)); + + // assume Identical($t7, select coin::CoinInfo.supply>(global>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:409:9+67 + assume {:print "$at(32,17840,17907)"} true; + assume ($t7 == $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t4)->$supply); + + // assume Identical($t8, option::spec_borrow($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:410:9+47 + assume {:print "$at(32,17916,17963)"} true; + assume ($t8 == $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'($t7)); + + // assume Identical($t9, optional_aggregator::optional_aggregator_value($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:411:9+67 + assume {:print "$at(32,17972,18039)"} true; + assume ($t9 == $1_optional_aggregator_optional_aggregator_value($t8)); + + // assume Identical($t10, And(option::spec_is_some($t7), Not(optional_aggregator::$is_parallelizable($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:417:9+123 + assume {:print "$at(32,18298,18421)"} true; + assume ($t10 == ($1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t7) && !$1_optional_aggregator_$is_parallelizable($t8))); + + // assume CanModify>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + assume {:print "$at(32,17780,17830)"} true; + assume $1_coin_CoinInfo'#0'_$modifies[$t4]; + + // @520 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + $1_aggregator_factory_AggregatorFactory_$memory#520 := $1_aggregator_factory_AggregatorFactory_$memory; + + // @518 := save_mem(coin::SupplyConfig) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + $1_coin_SupplyConfig_$memory#518 := $1_coin_SupplyConfig_$memory; + + // @519 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + $1_coin_CoinInfo'#0'_$memory#519 := $1_coin_CoinInfo'#0'_$memory; + + // @521 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + $1_coin_Ghost$supply'#0'_$memory#521 := $1_coin_Ghost$supply'#0'_$memory; + + // @522 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:407:9+50 + $1_coin_Ghost$aggregate_supply'#0'_$memory#522 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1058:5+1 + assume {:print "$at(31,45200,45201)"} true; + assume {:print "$track_local(46,58,0):", $t0} $t0 == $t0; + + // $t11 := signer::address_of($t0) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1059:28+27 + assume {:print "$at(31,45321,45348)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(31,45321,45348)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // trace_local[account_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1059:13+12 + assume {:print "$track_local(46,58,1):", $t11} $t11 == $t11; + + // $t13 := opaque begin: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + assume {:print "$at(31,45436,45460)"} true; + + // @525 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + $1_coin_CoinInfo'#0'_$memory#525 := $1_coin_CoinInfo'#0'_$memory; + + // @523 := save_mem(coin::supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + $1_coin_Ghost$supply'#0'_$memory#523 := $1_coin_Ghost$supply'#0'_$memory; + + // @524 := save_mem(coin::aggregate_supply<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + $1_coin_Ghost$aggregate_supply'#0'_$memory#524 := $1_coin_Ghost$aggregate_supply'#0'_$memory; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + assume $IsValid'address'($t13); + + // assume Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@523]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@524]>(0x0))), select coin::CoinInfo.supply>(global[@525]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + assume ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#523, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#524, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#525, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assume Eq
($t13, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + assume $IsEqual'address'($t13, $1_type_info_$type_of'#0'()->$account_address); + + // $t13 := opaque end: coin::coin_address<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:13+24 + + // $t14 := ==($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1063:38+2 + $t14 := $IsEqual'address'($t13, $t11); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 + assume {:print "$at(31,45415,45553)"} true; + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 + assume {:print "$at(31,45415,45553)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1064:37+27 + assume {:print "$at(31,45514,45541)"} true; +L0: + + // $t15 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1064:37+27 + assume {:print "$at(31,45514,45541)"} true; + $t15 := 1; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1064:13+52 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(31,45490,45542)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 + assume {:print "$at(31,45415,45553)"} true; + assume {:print "$track_abort(46,58):", $t16} $t16 == $t16; + + // $t12 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 + $t12 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1062:9+138 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1069:45+19 + assume {:print "$at(31,45693,45712)"} true; +L2: + + // $t17 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1069:45+19 + assume {:print "$at(31,45693,45712)"} true; + $t17 := 1; + assume $IsValid'address'($t17); + + // $t18 := borrow_global($t17) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1069:13+17 + if (!$ResourceExists($1_coin_SupplyConfig_$memory, $t17)) { + call $ExecFailureAbort(); + } else { + $t18 := $Mutation($Global($t17), EmptyVec(), $ResourceValue($1_coin_SupplyConfig_$memory, $t17)); + } + if ($abort_flag) { + assume {:print "$at(31,45661,45678)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // $t19 := get_field.allow_upgrades($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1069:13+67 + $t19 := $Dereference($t18)->$allow_upgrades; + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 + assume {:print "$at(31,45640,45812)"} true; + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 + assume {:print "$at(31,45640,45812)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1070:38+34 + assume {:print "$at(31,45767,45801)"} true; +L3: + + // $t20 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1070:38+34 + assume {:print "$at(31,45767,45801)"} true; + $t20 := 11; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1070:13+60 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(31,45742,45802)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 + assume {:print "$at(31,45640,45812)"} true; + assume {:print "$track_abort(46,58):", $t21} $t21 == $t21; + + // $t12 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 + $t12 := $t21; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1068:9+172 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1073:71+12 + assume {:print "$at(31,45885,45897)"} true; +L5: + + // assert CanModify>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1073:33+17 + assume {:print "$at(31,45847,45864)"} true; + assert {:msg "assert_failed(31,45847,45864): caller does not have permission to modify `coin::CoinInfo<#0>` at given address"} + $1_coin_CoinInfo'#0'_$modifies[$t11]; + + // $t22 := borrow_global>($t11) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1073:33+17 + if (!$ResourceExists($1_coin_CoinInfo'#0'_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t22 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(31,45847,45864)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // $t23 := borrow_field>.supply($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1073:28+63 + $t23 := $ChildMutation($t22, 3, $Dereference($t22)->$supply); + + // trace_local[maybe_supply]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1073:13+12 + $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' := $Dereference($t23); + assume {:print "$track_local(46,58,2):", $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''} $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator'' == $temp_0'$1_option_Option'$1_optional_aggregator_OptionalAggregator''; + + // $t24 := read_ref($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:29+12 + assume {:print "$at(31,45935,45947)"} true; + $t24 := $Dereference($t23); + + // $t25 := opaque begin: option::is_some($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:13+29 + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:13+29 + assume $IsValid'bool'($t25); + + // assume Eq($t25, option::spec_is_some($t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:13+29 + assume $IsEqual'bool'($t25, $1_option_spec_is_some'$1_optional_aggregator_OptionalAggregator'($t24)); + + // $t25 := opaque end: option::is_some($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:13+29 + + // if ($t25) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 + if ($t25) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1075:45+12 + assume {:print "$at(31,45996,46008)"} true; +L7: + + // $t26 := option::borrow_mut($t23) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1075:26+32 + assume {:print "$at(31,45977,46009)"} true; + call $t26,$t23 := $1_option_borrow_mut'$1_optional_aggregator_OptionalAggregator'($t23); + if ($abort_flag) { + assume {:print "$at(31,45977,46009)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // trace_local[supply]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1075:17+6 + $temp_0'$1_optional_aggregator_OptionalAggregator' := $Dereference($t26); + assume {:print "$track_local(46,58,3):", $temp_0'$1_optional_aggregator_OptionalAggregator'} $temp_0'$1_optional_aggregator_OptionalAggregator' == $temp_0'$1_optional_aggregator_OptionalAggregator'; + + // $t27 := read_ref($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:57+6 + assume {:print "$at(31,46162,46168)"} true; + $t27 := $Dereference($t26); + + // $t28 := optional_aggregator::is_parallelizable($t27) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:18+46 + call $t28 := $1_optional_aggregator_is_parallelizable($t27); + if ($abort_flag) { + assume {:print "$at(31,46123,46169)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // $t29 := !($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:17+1 + call $t29 := $Not($t28); + + // if ($t29) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 + if ($t29) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1079:45+6 + assume {:print "$at(31,46217,46223)"} true; +L9: + + // assume Identical($t30, select option::Option.vec>(select optional_aggregator::OptionalAggregator.integer($t26))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:109:9+46 + assume {:print "$at(24,5046,5092)"} true; + assume ($t30 == $Dereference($t26)->$integer->$vec); + + // optional_aggregator::switch($t26) on_abort goto L13 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1079:17+35 + assume {:print "$at(31,46189,46224)"} true; + call $t26 := $1_optional_aggregator_switch($t26); + if ($abort_flag) { + assume {:print "$at(31,46189,46224)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(46,58):", $t12} $t12 == $t12; + goto L13; + } + + // write_back[Reference($t23).vec (vector)/[]]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1079:17+35 + $t23 := $UpdateMutation($t23, (var $$sel0 := $Dereference($t23)->$vec; $Update'$1_option_Option'$1_optional_aggregator_OptionalAggregator''_vec($Dereference($t23), UpdateVec($$sel0, ReadVec($t26->p, LenVec($t23->p) + 1), $Dereference($t26))))); + + // write_back[Reference($t22).supply (option::Option)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1079:17+35 + $t22 := $UpdateMutation($t22, $Update'$1_coin_CoinInfo'#0''_supply($Dereference($t22), $Dereference($t23))); + + // assert Le(Len(select option::Option.vec(select coin::CoinInfo.supply($t22))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t22)->$supply->$vec) <= 1); + + // assert forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec(select coin::CoinInfo.supply($t22)): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + (var $range_0 := $Dereference($t22)->$supply->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))); + + // write_back[coin::CoinInfo<#0>@]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1079:17+35 + assume {:print "$at(31,46189,46224)"} true; + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $GlobalLocationAddress($t22), + $Dereference($t22)); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 + assume {:print "$at(31,46118,46239)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 +L8: + + // write_back[Reference($t22).supply (option::Option)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 + assume {:print "$at(31,46118,46239)"} true; + $t22 := $UpdateMutation($t22, $Update'$1_coin_CoinInfo'#0''_supply($Dereference($t22), $Dereference($t23))); + + // assert Le(Len(select option::Option.vec(select coin::CoinInfo.supply($t22))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t22)->$supply->$vec) <= 1); + + // assert forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec(select coin::CoinInfo.supply($t22)): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + (var $range_0 := $Dereference($t22)->$supply->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))); + + // write_back[coin::CoinInfo<#0>@]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 + assume {:print "$at(31,46118,46239)"} true; + $1_coin_CoinInfo'#0'_$memory := $ResourceUpdate($1_coin_CoinInfo'#0'_$memory, $GlobalLocationAddress($t22), + $Dereference($t22)); + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1078:13+121 + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 + assume {:print "$at(31,45915,46249)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 + assume {:print "$at(31,45915,46249)"} true; + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 +L6: + + // assert Le(Len(select option::Option.vec(select coin::CoinInfo.supply($t22))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t22)->$supply->$vec) <= 1); + + // assert forall $elem: optional_aggregator::OptionalAggregator: select option::Option.vec(select coin::CoinInfo.supply($t22)): 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/aggregator/optional_aggregator.spec.move:33:9+68 + assume {:print "$at(24,1670,1738)"} true; + assert {:msg "assert_failed(24,1670,1738): data invariant does not hold"} + (var $range_0 := $Dereference($t22)->$supply->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1)))))); + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 + assume {:print "$at(31,45915,46249)"} true; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1074:9+334 +L11: + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1082:5+1 + assume {:print "$at(31,46254,46255)"} true; +L12: + + // assume Identical($t31, select coin::CoinInfo.supply>(global>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:413:9+77 + assume {:print "$at(32,18049,18126)"} true; + assume ($t31 == $ResourceValue($1_coin_CoinInfo'#0'_$memory, $t4)->$supply); + + // assume Identical($t32, option::spec_borrow($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:414:9+62 + assume {:print "$at(32,18135,18197)"} true; + assume ($t32 == $1_option_spec_borrow'$1_optional_aggregator_OptionalAggregator'($t31)); + + // assume Identical($t33, optional_aggregator::optional_aggregator_value($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:415:9+82 + assume {:print "$at(32,18206,18288)"} true; + assume ($t33 == $1_optional_aggregator_optional_aggregator_value($t32)); + + // assert Not(Neq
($t5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:400:9+39 + assume {:print "$at(32,17455,17494)"} true; + assert {:msg "assert_failed(32,17455,17494): function does not abort under this condition"} + !!$IsEqual'address'($t5, $t4); + + // assert Not(Not(exists[@518](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:401:9+53 + assume {:print "$at(32,17503,17556)"} true; + assert {:msg "assert_failed(32,17503,17556): function does not abort under this condition"} + !!$ResourceExists($1_coin_SupplyConfig_$memory#518, 1); + + // assert Not(Not(exists[@519]>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:403:9+52 + assume {:print "$at(32,17598,17650)"} true; + assert {:msg "assert_failed(32,17598,17650): function does not abort under this condition"} + !!$ResourceExists($1_coin_CoinInfo'#0'_$memory#519, $t4); + + // assert Not(Not(select coin::SupplyConfig.allow_upgrades($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:406:9+40 + assume {:print "$at(32,17731,17771)"} true; + assert {:msg "assert_failed(32,17731,17771): function does not abort under this condition"} + !!$t6->$allow_upgrades; + + // assert Not(And($t10, Not(exists[@520](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:420:9+100 + assume {:print "$at(32,18431,18531)"} true; + assert {:msg "assert_failed(32,18431,18531): function does not abort under this condition"} + !($t10 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#520, 1)); + + // assert Implies(coin::spec_fun_supply_tracked[]<#0>(Add(select coin::Ghost$supply.v<#0>(global[@521]>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global[@522]>(0x0))), select coin::CoinInfo.supply>(global[@519]>(select type_info::TypeInfo.account_address(type_info::$type_of[]<#0>())))), coin::spec_fun_supply_tracked<#0>(Add(select coin::Ghost$supply.v<#0>(global>(0x0)), select coin::Ghost$aggregate_supply.v<#0>(global>(0x0))), select coin::CoinInfo.supply>(global>(select type_info::TypeInfo.account_address(type_info::$type_of<#0>()))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:78:9+385 + assume {:print "$at(32,4617,5002)"} true; + assert {:msg "assert_failed(32,4617,5002): post-condition does not hold"} + ($1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory#521, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory#522, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory#519, $1_type_info_$type_of'#0'()->$account_address)->$supply) ==> $1_coin_spec_fun_supply_tracked'#0'(($ResourceValue($1_coin_Ghost$supply'#0'_$memory, 0)->$v + $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, 0)->$v), $ResourceValue($1_coin_CoinInfo'#0'_$memory, $1_type_info_$type_of'#0'()->$account_address)->$supply)); + + // assert Implies($t10, And(optional_aggregator::$is_parallelizable($t32), Eq($t33, $t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:421:9+118 + assume {:print "$at(32,18540,18658)"} true; + assert {:msg "assert_failed(32,18540,18658): post-condition does not hold"} + ($t10 ==> ($1_optional_aggregator_$is_parallelizable($t32) && $IsEqual'u128'($t33, $t9))); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:421:9+118 + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.move:1082:5+1 + assume {:print "$at(31,46254,46255)"} true; +L13: + + // assert Or(Or(Or(Or(Neq
($t5, $t4), Not(exists[@518](0x1))), Not(exists[@519]>($t4))), Not(select coin::SupplyConfig.allow_upgrades($t6))), And($t10, Not(exists[@520](0x1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:397:5+1398 + assume {:print "$at(32,17266,18664)"} true; + assert {:msg "assert_failed(32,17266,18664): abort not covered by any of the `aborts_if` clauses"} + ((((!$IsEqual'address'($t5, $t4) || !$ResourceExists($1_coin_SupplyConfig_$memory#518, 1)) || !$ResourceExists($1_coin_CoinInfo'#0'_$memory#519, $t4)) || !$t6->$allow_upgrades) || ($t10 && !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#520, 1))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:397:5+1398 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:167:10+98 +function {:inline} $1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory: $Memory $1_treasury_Treasury'#0'): int { + $ResourceValue($1_treasury_Treasury'#0'_$memory, 2)->$balance->$value +} + +// struct treasury::DepositEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:44:5+65 +datatype $1_treasury_DepositEvent { + $1_treasury_DepositEvent($amount: int) +} +function {:inline} $Update'$1_treasury_DepositEvent'_amount(s: $1_treasury_DepositEvent, x: int): $1_treasury_DepositEvent { + $1_treasury_DepositEvent(x) +} +function $IsValid'$1_treasury_DepositEvent'(s: $1_treasury_DepositEvent): bool { + $IsValid'u128'(s->$amount) +} +function {:inline} $IsEqual'$1_treasury_DepositEvent'(s1: $1_treasury_DepositEvent, s2: $1_treasury_DepositEvent): bool { + s1 == s2 +} + +// struct treasury::WithdrawEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:39:5+66 +datatype $1_treasury_WithdrawEvent { + $1_treasury_WithdrawEvent($amount: int) +} +function {:inline} $Update'$1_treasury_WithdrawEvent'_amount(s: $1_treasury_WithdrawEvent, x: int): $1_treasury_WithdrawEvent { + $1_treasury_WithdrawEvent(x) +} +function $IsValid'$1_treasury_WithdrawEvent'(s: $1_treasury_WithdrawEvent): bool { + $IsValid'u128'(s->$amount) +} +function {:inline} $IsEqual'$1_treasury_WithdrawEvent'(s1: $1_treasury_WithdrawEvent, s2: $1_treasury_WithdrawEvent): bool { + s1 == s2 +} + +// struct treasury::LinearWithdrawCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:27:5+455 +datatype $1_treasury_LinearWithdrawCapability'#0' { + $1_treasury_LinearWithdrawCapability'#0'($total: int, $withdraw: int, $start_time: int, $period: int) +} +function {:inline} $Update'$1_treasury_LinearWithdrawCapability'#0''_total(s: $1_treasury_LinearWithdrawCapability'#0', x: int): $1_treasury_LinearWithdrawCapability'#0' { + $1_treasury_LinearWithdrawCapability'#0'(x, s->$withdraw, s->$start_time, s->$period) +} +function {:inline} $Update'$1_treasury_LinearWithdrawCapability'#0''_withdraw(s: $1_treasury_LinearWithdrawCapability'#0', x: int): $1_treasury_LinearWithdrawCapability'#0' { + $1_treasury_LinearWithdrawCapability'#0'(s->$total, x, s->$start_time, s->$period) +} +function {:inline} $Update'$1_treasury_LinearWithdrawCapability'#0''_start_time(s: $1_treasury_LinearWithdrawCapability'#0', x: int): $1_treasury_LinearWithdrawCapability'#0' { + $1_treasury_LinearWithdrawCapability'#0'(s->$total, s->$withdraw, x, s->$period) +} +function {:inline} $Update'$1_treasury_LinearWithdrawCapability'#0''_period(s: $1_treasury_LinearWithdrawCapability'#0', x: int): $1_treasury_LinearWithdrawCapability'#0' { + $1_treasury_LinearWithdrawCapability'#0'(s->$total, s->$withdraw, s->$start_time, x) +} +function $IsValid'$1_treasury_LinearWithdrawCapability'#0''(s: $1_treasury_LinearWithdrawCapability'#0'): bool { + $IsValid'u128'(s->$total) + && $IsValid'u128'(s->$withdraw) + && $IsValid'u64'(s->$start_time) + && $IsValid'u64'(s->$period) +} +function {:inline} $IsEqual'$1_treasury_LinearWithdrawCapability'#0''(s1: $1_treasury_LinearWithdrawCapability'#0', s2: $1_treasury_LinearWithdrawCapability'#0'): bool { + s1 == s2 +} +var $1_treasury_LinearWithdrawCapability'#0'_$memory: $Memory $1_treasury_LinearWithdrawCapability'#0'; + +// struct treasury::Treasury at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:15:5+314 +datatype $1_treasury_Treasury'$1_starcoin_coin_STC' { + $1_treasury_Treasury'$1_starcoin_coin_STC'($balance: $1_coin_Coin'$1_starcoin_coin_STC', $withdraw_events: $1_event_EventHandle'$1_treasury_WithdrawEvent', $deposit_events: $1_event_EventHandle'$1_treasury_DepositEvent') +} +function {:inline} $Update'$1_treasury_Treasury'$1_starcoin_coin_STC''_balance(s: $1_treasury_Treasury'$1_starcoin_coin_STC', x: $1_coin_Coin'$1_starcoin_coin_STC'): $1_treasury_Treasury'$1_starcoin_coin_STC' { + $1_treasury_Treasury'$1_starcoin_coin_STC'(x, s->$withdraw_events, s->$deposit_events) +} +function {:inline} $Update'$1_treasury_Treasury'$1_starcoin_coin_STC''_withdraw_events(s: $1_treasury_Treasury'$1_starcoin_coin_STC', x: $1_event_EventHandle'$1_treasury_WithdrawEvent'): $1_treasury_Treasury'$1_starcoin_coin_STC' { + $1_treasury_Treasury'$1_starcoin_coin_STC'(s->$balance, x, s->$deposit_events) +} +function {:inline} $Update'$1_treasury_Treasury'$1_starcoin_coin_STC''_deposit_events(s: $1_treasury_Treasury'$1_starcoin_coin_STC', x: $1_event_EventHandle'$1_treasury_DepositEvent'): $1_treasury_Treasury'$1_starcoin_coin_STC' { + $1_treasury_Treasury'$1_starcoin_coin_STC'(s->$balance, s->$withdraw_events, x) +} +function $IsValid'$1_treasury_Treasury'$1_starcoin_coin_STC''(s: $1_treasury_Treasury'$1_starcoin_coin_STC'): bool { + $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''(s->$balance) + && $IsValid'$1_event_EventHandle'$1_treasury_WithdrawEvent''(s->$withdraw_events) + && $IsValid'$1_event_EventHandle'$1_treasury_DepositEvent''(s->$deposit_events) +} +function {:inline} $IsEqual'$1_treasury_Treasury'$1_starcoin_coin_STC''(s1: $1_treasury_Treasury'$1_starcoin_coin_STC', s2: $1_treasury_Treasury'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_treasury_Treasury'$1_starcoin_coin_STC'_$memory: $Memory $1_treasury_Treasury'$1_starcoin_coin_STC'; + +// struct treasury::Treasury<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:15:5+314 +datatype $1_treasury_Treasury'#0' { + $1_treasury_Treasury'#0'($balance: $1_coin_Coin'#0', $withdraw_events: $1_event_EventHandle'$1_treasury_WithdrawEvent', $deposit_events: $1_event_EventHandle'$1_treasury_DepositEvent') +} +function {:inline} $Update'$1_treasury_Treasury'#0''_balance(s: $1_treasury_Treasury'#0', x: $1_coin_Coin'#0'): $1_treasury_Treasury'#0' { + $1_treasury_Treasury'#0'(x, s->$withdraw_events, s->$deposit_events) +} +function {:inline} $Update'$1_treasury_Treasury'#0''_withdraw_events(s: $1_treasury_Treasury'#0', x: $1_event_EventHandle'$1_treasury_WithdrawEvent'): $1_treasury_Treasury'#0' { + $1_treasury_Treasury'#0'(s->$balance, x, s->$deposit_events) +} +function {:inline} $Update'$1_treasury_Treasury'#0''_deposit_events(s: $1_treasury_Treasury'#0', x: $1_event_EventHandle'$1_treasury_DepositEvent'): $1_treasury_Treasury'#0' { + $1_treasury_Treasury'#0'(s->$balance, s->$withdraw_events, x) +} +function $IsValid'$1_treasury_Treasury'#0''(s: $1_treasury_Treasury'#0'): bool { + $IsValid'$1_coin_Coin'#0''(s->$balance) + && $IsValid'$1_event_EventHandle'$1_treasury_WithdrawEvent''(s->$withdraw_events) + && $IsValid'$1_event_EventHandle'$1_treasury_DepositEvent''(s->$deposit_events) +} +function {:inline} $IsEqual'$1_treasury_Treasury'#0''(s1: $1_treasury_Treasury'#0', s2: $1_treasury_Treasury'#0'): bool { + s1 == s2 +} +var $1_treasury_Treasury'#0'_$memory: $Memory $1_treasury_Treasury'#0'; + +// struct treasury::WithdrawCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:24:5+59 +datatype $1_treasury_WithdrawCapability'$1_starcoin_coin_STC' { + $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'($dummy_field: bool) +} +function {:inline} $Update'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''_dummy_field(s: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC', x: bool): $1_treasury_WithdrawCapability'$1_starcoin_coin_STC' { + $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(s: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(s1: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC', s2: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'_$memory: $Memory $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'; + +// struct treasury::WithdrawCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:24:5+59 +datatype $1_treasury_WithdrawCapability'#0' { + $1_treasury_WithdrawCapability'#0'($dummy_field: bool) +} +function {:inline} $Update'$1_treasury_WithdrawCapability'#0''_dummy_field(s: $1_treasury_WithdrawCapability'#0', x: bool): $1_treasury_WithdrawCapability'#0' { + $1_treasury_WithdrawCapability'#0'(x) +} +function $IsValid'$1_treasury_WithdrawCapability'#0''(s: $1_treasury_WithdrawCapability'#0'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_treasury_WithdrawCapability'#0''(s1: $1_treasury_WithdrawCapability'#0', s2: $1_treasury_WithdrawCapability'#0'): bool { + s1 == s2 +} +var $1_treasury_WithdrawCapability'#0'_$memory: $Memory $1_treasury_WithdrawCapability'#0'; + +// fun treasury::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+585 +procedure {:timeLimit 80} $1_treasury_initialize$verify(_$t0: $signer, _$t1: $1_coin_Coin'#0') returns ($ret0: $1_treasury_WithdrawCapability'#0') +{ + // declare local variables + var $t2: int; + var $t3: $1_treasury_Treasury'#0'; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_account_Account; + var $t12: $1_event_EventHandle'$1_treasury_WithdrawEvent'; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_event_EventHandle'$1_treasury_DepositEvent'; + var $t16: $1_treasury_Treasury'#0'; + var $t17: bool; + var $t18: $1_treasury_WithdrawCapability'#0'; + var $t0: $signer; + var $t1: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_Treasury'#0'': $1_treasury_Treasury'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_treasury_Treasury'#0'_$memory#526: $Memory $1_treasury_Treasury'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + assume {:print "$at(104,1978,1979)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + assume $IsValid'$1_coin_Coin'#0''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // @526 := save_mem(treasury::Treasury<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + $1_treasury_Treasury'#0'_$memory#526 := $1_treasury_Treasury'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + assume {:print "$track_local(47,12,0):", $t0} $t0 == $t0; + + // trace_local[init_token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:56:5+1 + assume {:print "$track_local(47,12,1):", $t1} $t1 == $t1; + + // $t4 := stc_util::token_issuer<#0>() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:57:28+32 + assume {:print "$at(104,2114,2146)"} true; + call $t4 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(104,2114,2146)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[token_issuer]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:57:13+12 + assume {:print "$track_local(47,12,2):", $t4} $t4 == $t4; + + // $t6 := signer::address_of($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:17+26 + assume {:print "$at(104,2164,2190)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(104,2164,2190)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t6, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:44+2 + $t7 := $IsEqual'address'($t6, $t4); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 + assume {:print "$at(104,2156,2249)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 +L0: + + // $t8 := 104 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:82+18 + assume {:print "$at(104,2229,2247)"} true; + $t8 := 104; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_state($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:61+40 + call $t9 := $1_error_invalid_state($t8); + if ($abort_flag) { + assume {:print "$at(104,2208,2248)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 + assume {:print "$at(104,2156,2249)"} true; + assume {:print "$track_abort(47,12):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:58:9+93 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:60:22+10 + assume {:print "$at(104,2306,2316)"} true; +L2: + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, global($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t11 == $ResourceValue($1_account_Account_$memory, $t10)); + + // $t12 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:61:30+48 + assume {:print "$at(104,2347,2395)"} true; + call $t12 := $1_account_new_event_handle'$1_treasury_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(104,2347,2395)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // $t15 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:62:29+47 + assume {:print "$at(104,2425,2472)"} true; + call $t15 := $1_account_new_event_handle'$1_treasury_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(104,2425,2472)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // $t16 := pack treasury::Treasury<#0>($t1, $t12, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:59:24+209 + assume {:print "$at(104,2274,2483)"} true; + $t16 := $1_treasury_Treasury'#0'($t1, $t12, $t15); + + // trace_local[treasure]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:59:13+8 + assume {:print "$track_local(47,12,3):", $t16} $t16 == $t16; + + // move_to>($t16, $t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:64:9+7 + assume {:print "$at(104,2493,2500)"} true; + if ($ResourceExists($1_treasury_Treasury'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_treasury_Treasury'#0'_$memory := $ResourceUpdate($1_treasury_Treasury'#0'_$memory, $t0->$addr, $t16); + } + if ($abort_flag) { + assume {:print "$at(104,2493,2500)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,12):", $t5} $t5 == $t5; + goto L4; + } + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:65:9+29 + assume {:print "$at(104,2528,2557)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t18 := pack treasury::WithdrawCapability<#0>($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:65:9+29 + $t18 := $1_treasury_WithdrawCapability'#0'($t17); + + // trace_return[0]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:65:9+29 + assume {:print "$track_return(47,12,0):", $t18} $t18 == $t18; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:66:5+1 + assume {:print "$at(104,2562,2563)"} true; +L3: + + // assert Not(Neq
(signer::$address_of[]($t0), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:16:9+45 + assume {:print "$at(105,369,414)"} true; + assert {:msg "assert_failed(105,369,414): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), 2); + + // assert Not(exists[@526]>(0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:17:9+41 + assume {:print "$at(105,423,464)"} true; + assert {:msg "assert_failed(105,423,464): function does not abort under this condition"} + !$ResourceExists($1_treasury_Treasury'#0'_$memory#526, 2); + + // assert exists>(0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:18:9+39 + assume {:print "$at(105,473,512)"} true; + assert {:msg "assert_failed(105,473,512): post-condition does not hold"} + $ResourceExists($1_treasury_Treasury'#0'_$memory, 2); + + // assert Eq>($t18, pack treasury::WithdrawCapability<#0>(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:19:9+48 + assume {:print "$at(105,521,569)"} true; + assert {:msg "assert_failed(105,521,569): post-condition does not hold"} + $IsEqual'$1_treasury_WithdrawCapability'#0''($t18, $1_treasury_WithdrawCapability'#0'(false)); + + // return $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:19:9+48 + $ret0 := $t18; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:66:5+1 + assume {:print "$at(104,2562,2563)"} true; +L4: + + // assert Or(Neq
(signer::$address_of[]($t0), 0x2), exists[@526]>(0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:13:5+258 + assume {:print "$at(105,317,575)"} true; + assert {:msg "assert_failed(105,317,575): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), 2) || $ResourceExists($1_treasury_Treasury'#0'_$memory#526, 2)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:13:5+258 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun treasury::exists_at [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:70:5+177 +procedure {:inline 1} $1_treasury_exists_at'$1_starcoin_coin_STC'() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $t4: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:56+28 + assume {:print "$at(104,2712,2740)"} true; + call $t1 := $1_type_info_type_of'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(104,2712,2740)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:28+57 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(104,2684,2741)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+6 + assume {:print "$at(104,2751,2757)"} true; + $t4 := $ResourceExists($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+38 + assume {:print "$track_return(47,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::exists_at<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:70:5+177 +procedure {:inline 1} $1_treasury_exists_at'#0'() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $t4: bool; + var $temp_0'bool': bool; + + // bytecode translation starts here + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:56+28 + assume {:print "$at(104,2712,2740)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(104,2712,2740)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:28+57 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(104,2684,2741)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+6 + assume {:print "$at(104,2751,2757)"} true; + $t4 := $ResourceExists($1_treasury_Treasury'#0'_$memory, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+38 + assume {:print "$track_return(47,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::exists_at [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:70:5+177 +procedure {:timeLimit 80} $1_treasury_exists_at$verify() returns ($ret0: bool) +{ + // declare local variables + var $t0: $1_type_info_TypeInfo; + var $t1: $1_type_info_TypeInfo; + var $t2: int; + var $t3: int; + var $t4: bool; + var $temp_0'bool': bool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:70:5+1 + assume {:print "$at(104,2618,2619)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // $t1 := type_info::type_of<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:56+28 + assume {:print "$at(104,2712,2740)"} true; + call $t1 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(104,2712,2740)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := type_info::account_address($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:71:28+57 + call $t3 := $1_type_info_account_address($t1); + if ($abort_flag) { + assume {:print "$at(104,2684,2741)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+6 + assume {:print "$at(104,2751,2757)"} true; + $t4 := $ResourceExists($1_treasury_Treasury'#0'_$memory, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:72:9+38 + assume {:print "$track_return(47,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:23:9+16 + assume {:print "$at(105,606,622)"} true; + assert {:msg "assert_failed(105,606,622): function does not abort under this condition"} + !false; + + // assert Eq($t4, exists>(0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:24:9+49 + assume {:print "$at(105,631,680)"} true; + assert {:msg "assert_failed(105,631,680): post-condition does not hold"} + $IsEqual'bool'($t4, $ResourceExists($1_treasury_Treasury'#0'_$memory, 2)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:24:9+49 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:73:5+1 + assume {:print "$at(104,2794,2795)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:22:5+105 + assume {:print "$at(105,581,686)"} true; + assert {:msg "assert_failed(105,581,686): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:22:5+105 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::balance [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+327 +procedure {:inline 1} $1_treasury_balance'$1_starcoin_coin_STC'() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_treasury_Treasury'$1_starcoin_coin_STC'; + var $t8: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t9: int; + var $t10: int; + var $temp_0'address': int; + var $temp_0'u128': int; + + // bytecode translation starts here + // $t1 := stc_util::token_issuer<#0>() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:78:28+32 + assume {:print "$at(104,2977,3009)"} true; + call $t1 := $1_stc_util_token_issuer'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(104,2977,3009)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // trace_local[token_issuer]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:78:13+12 + assume {:print "$track_local(47,2,0):", $t1} $t1 == $t1; + + // $t3 := exists>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:14+6 + assume {:print "$at(104,3024,3030)"} true; + $t3 := $ResourceExists($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t1); + + // $t4 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:13+1 + call $t4 := $Not($t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:9+77 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:20+1 + assume {:print "$at(104,3085,3086)"} true; +L1: + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:20+1 + assume {:print "$at(104,3085,3086)"} true; + $t5 := 0; + assume $IsValid'u128'($t5); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + assume {:print "$track_return(47,2,0):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + $t6 := $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:82:56+12 + assume {:print "$at(104,3153,3165)"} true; +L0: + + // $t7 := get_global>($t1) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:82:24+13 + assume {:print "$at(104,3121,3134)"} true; + if (!$ResourceExists($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,3121,3134)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // $t8 := get_field>.balance($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:22+17 + assume {:print "$at(104,3189,3206)"} true; + $t8 := $t7->$balance; + + // $t9 := coin::value<#0>($t8) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:10+30 + call $t9 := $1_coin_value'$1_starcoin_coin_STC'($t8); + if ($abort_flag) { + assume {:print "$at(104,3177,3207)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // $t10 := (u128)($t9) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + call $t10 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(104,3176,3216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + assume {:print "$track_return(47,2,0):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + $t6 := $t10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 + assume {:print "$at(104,3221,3222)"} true; +L2: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 + assume {:print "$at(104,3221,3222)"} true; + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 +L3: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 + assume {:print "$at(104,3221,3222)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::balance [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+327 +procedure {:timeLimit 80} $1_treasury_balance$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_treasury_Treasury'#0'; + var $t8: $1_coin_Coin'#0'; + var $t9: int; + var $t10: int; + var $temp_0'address': int; + var $temp_0'u128': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume {:print "$at(104,2895,2896)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:77:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // $t1 := stc_util::token_issuer<#0>() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:78:28+32 + assume {:print "$at(104,2977,3009)"} true; + call $t1 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(104,2977,3009)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // trace_local[token_issuer]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:78:13+12 + assume {:print "$track_local(47,2,0):", $t1} $t1 == $t1; + + // $t3 := exists>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:14+6 + assume {:print "$at(104,3024,3030)"} true; + $t3 := $ResourceExists($1_treasury_Treasury'#0'_$memory, $t1); + + // $t4 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:13+1 + call $t4 := $Not($t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:79:9+77 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:20+1 + assume {:print "$at(104,3085,3086)"} true; +L1: + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:20+1 + assume {:print "$at(104,3085,3086)"} true; + $t5 := 0; + assume $IsValid'u128'($t5); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + assume {:print "$track_return(47,2,0):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + $t6 := $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:80:13+8 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:82:56+12 + assume {:print "$at(104,3153,3165)"} true; +L0: + + // $t7 := get_global>($t1) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:82:24+13 + assume {:print "$at(104,3121,3134)"} true; + if (!$ResourceExists($1_treasury_Treasury'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_treasury_Treasury'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,3121,3134)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // $t8 := get_field>.balance($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:22+17 + assume {:print "$at(104,3189,3206)"} true; + $t8 := $t7->$balance; + + // $t9 := coin::value<#0>($t8) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:10+30 + call $t9 := $1_coin_value'#0'($t8); + if ($abort_flag) { + assume {:print "$at(104,3177,3207)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // $t10 := (u128)($t9) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + call $t10 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(104,3176,3216)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,2):", $t2} $t2 == $t2; + goto L3; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + assume {:print "$track_return(47,2,0):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:83:9+40 + $t6 := $t10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 + assume {:print "$at(104,3221,3222)"} true; +L2: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:29:9+16 + assume {:print "$at(105,716,732)"} true; + assert {:msg "assert_failed(105,716,732): function does not abort under this condition"} + !false; + + // assert if exists>(0x2) { + // Eq($t6, treasury::spec_balance<#0>()) + // } else { + // Eq($t6, 0) + // } at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:30:9+126 + assume {:print "$at(105,741,867)"} true; + assert {:msg "assert_failed(105,741,867): post-condition does not hold"} + (if ($ResourceExists($1_treasury_Treasury'#0'_$memory, 2)) then ($IsEqual'u128'($t6, $1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory))) else ($IsEqual'u128'($t6, 0))); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:30:9+126 + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:84:5+1 + assume {:print "$at(104,3221,3222)"} true; +L3: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:28:5+180 + assume {:print "$at(105,693,873)"} true; + assert {:msg "assert_failed(105,693,873): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:28:5+180 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::deposit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+552 +procedure {:timeLimit 80} $1_treasury_deposit$verify(_$t0: $1_coin_Coin'#0') returns () +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_treasury_Treasury'#0'); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_treasury_Treasury'#0'); + var $t9: int; + var $t10: $Mutation ($1_event_EventHandle'$1_treasury_DepositEvent'); + var $t11: int; + var $t12: $1_treasury_DepositEvent; + var $t13: $Mutation ($1_coin_Coin'#0'); + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_Treasury'#0'': $1_treasury_Treasury'#0'; + var $temp_0'u64': int; + var $1_treasury_Treasury'#0'_$memory#533: $Memory $1_treasury_Treasury'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume {:print "$at(104,3228,3229)"} true; + assume $IsValid'$1_coin_Coin'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // @533 := save_mem(treasury::Treasury<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + $1_treasury_Treasury'#0'_$memory#533 := $1_treasury_Treasury'#0'_$memory; + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:86:5+1 + assume {:print "$track_local(47,3,0):", $t0} $t0 == $t0; + + // $t3 := treasury::exists_at<#0>() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:17+19 + assume {:print "$at(104,3318,3337)"} true; + call $t3 := $1_treasury_exists_at'#0'(); + if ($abort_flag) { + assume {:print "$at(104,3318,3337)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 + assume {:print "$at(104,3310,3380)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:55+22 +L0: + + // $t5 := 105 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:55+22 + assume {:print "$at(104,3356,3378)"} true; + $t5 := 105; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:38+40 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(104,3339,3379)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 + assume {:print "$at(104,3310,3380)"} true; + assume {:print "$track_abort(47,3):", $t6} $t6 == $t6; + + // $t4 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 + $t4 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:87:9+70 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:88:29+32 + assume {:print "$at(104,3410,3442)"} true; +L2: + + // $t7 := stc_util::token_issuer<#0>() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:88:29+32 + assume {:print "$at(104,3410,3442)"} true; + call $t7 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(104,3410,3442)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := borrow_global>($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:89:24+17 + assume {:print "$at(104,3467,3484)"} true; + if (!$ResourceExists($1_treasury_Treasury'#0'_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_treasury_Treasury'#0'_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(104,3467,3484)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[treasury]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:89:13+8 + $temp_0'$1_treasury_Treasury'#0'' := $Dereference($t8); + assume {:print "$track_local(47,3,2):", $temp_0'$1_treasury_Treasury'#0''} $temp_0'$1_treasury_Treasury'#0'' == $temp_0'$1_treasury_Treasury'#0''; + + // $t9 := coin::value<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:90:22+19 + assume {:print "$at(104,3540,3559)"} true; + call $t9 := $1_coin_value'#0'($t0); + if ($abort_flag) { + assume {:print "$at(104,3540,3559)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[amount]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:90:13+6 + assume {:print "$track_local(47,3,1):", $t9} $t9 == $t9; + + // $t10 := borrow_field>.deposit_events($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:92:13+28 + assume {:print "$at(104,3600,3628)"} true; + $t10 := $ChildMutation($t8, 2, $Dereference($t8)->$deposit_events); + + // $t11 := (u128)($t9) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:94:25+16 + assume {:print "$at(104,3681,3697)"} true; + call $t11 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(104,3681,3697)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t12 := pack treasury::DepositEvent($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:93:13+69 + assume {:print "$at(104,3642,3711)"} true; + $t12 := $1_treasury_DepositEvent($t11); + + // opaque begin: event::emit_event($t10, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:91:9+153 + assume {:print "$at(104,3569,3722)"} true; + + // opaque end: event::emit_event($t10, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:91:9+153 + + // write_back[Reference($t8).deposit_events (event::EventHandle)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:91:9+153 + $t8 := $UpdateMutation($t8, $Update'$1_treasury_Treasury'#0''_deposit_events($Dereference($t8), $Dereference($t10))); + + // $t13 := borrow_field>.balance($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:97:21+21 + assume {:print "$at(104,3744,3765)"} true; + $t13 := $ChildMutation($t8, 0, $Dereference($t8)->$balance); + + // coin::merge<#0>($t13, $t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:97:9+41 + call $t13 := $1_coin_merge'#0'($t13, $t0); + if ($abort_flag) { + assume {:print "$at(104,3732,3773)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(47,3):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[Reference($t8).balance (coin::Coin<#0>)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:97:9+41 + $t8 := $UpdateMutation($t8, $Update'$1_treasury_Treasury'#0''_balance($Dereference($t8), $Dereference($t13))); + + // write_back[treasury::Treasury<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:97:9+41 + $1_treasury_Treasury'#0'_$memory := $ResourceUpdate($1_treasury_Treasury'#0'_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:98:5+1 + assume {:print "$at(104,3779,3780)"} true; +L3: + + // assert Not(Not(exists[@533]>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:39:9+42 + assume {:print "$at(105,904,946)"} true; + assert {:msg "assert_failed(105,904,946): function does not abort under this condition"} + !!$ResourceExists($1_treasury_Treasury'#0'_$memory#533, 2); + + // assert Not(Gt(Add(treasury::spec_balance[@533]<#0>(), select coin::Coin.value>($t0)), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:40:9+58 + assume {:print "$at(105,955,1013)"} true; + assert {:msg "assert_failed(105,955,1013): function does not abort under this condition"} + !(($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#533) + $t0->$value) > 340282366920938463463374607431768211455); + + // assert Eq(treasury::spec_balance<#0>(), Add(treasury::spec_balance[@533]<#0>(), select coin::Coin.value>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:41:9+76 + assume {:print "$at(105,1022,1098)"} true; + assert {:msg "assert_failed(105,1022,1098): post-condition does not hold"} + $IsEqual'num'($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory), ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#533) + $t0->$value)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:41:9+76 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:98:5+1 + assume {:print "$at(104,3779,3780)"} true; +L4: + + // assert Or(Not(exists[@533]>(0x2)), Gt(Add(treasury::spec_balance[@533]<#0>(), select coin::Coin.value>($t0)), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:38:5+223 + assume {:print "$at(105,881,1104)"} true; + assert {:msg "assert_failed(105,881,1104): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_treasury_Treasury'#0'_$memory#533, 2) || (($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#533) + $t0->$value) > 340282366920938463463374607431768211455)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:38:5+223 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+291 +procedure {:timeLimit 80} $1_treasury_withdraw$verify(_$t0: $signer, _$t1: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_treasury_WithdrawCapability'#0'); + var $t5: $1_coin_Coin'#0'; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $1_treasury_WithdrawCapability'#0'_$memory#558: $Memory $1_treasury_WithdrawCapability'#0'; + var $1_treasury_Treasury'#0'_$memory#559: $Memory $1_treasury_Treasury'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume {:print "$at(104,4810,4811)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // assume forall $rsc: treasury::WithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_WithdrawCapability'#0''($rsc)))); + + // @559 := save_mem(treasury::Treasury<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + $1_treasury_Treasury'#0'_$memory#559 := $1_treasury_Treasury'#0'_$memory; + + // @558 := save_mem(treasury::WithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + $1_treasury_WithdrawCapability'#0'_$memory#558 := $1_treasury_WithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume {:print "$track_local(47,19,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:123:5+1 + assume {:print "$track_local(47,19,1):", $t1} $t1 == $t1; + + // $t2 := signer::address_of($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:127:65+26 + assume {:print "$at(104,5015,5041)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(104,5015,5041)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,19):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := borrow_global>($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:127:19+17 + if (!$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t4 := $Mutation($Global($t2), EmptyVec(), $ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $t2)); + } + if ($abort_flag) { + assume {:print "$at(104,4969,4986)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,19):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := treasury::withdraw_with_capability<#0>($t4, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:128:9+43 + assume {:print "$at(104,5052,5095)"} true; + call $t5,$t4 := $1_treasury_withdraw_with_capability'#0'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(104,5052,5095)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,19):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[treasury::WithdrawCapability<#0>@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:128:9+43 + $1_treasury_WithdrawCapability'#0'_$memory := $ResourceUpdate($1_treasury_WithdrawCapability'#0'_$memory, $GlobalLocationAddress($t4), + $Dereference($t4)); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:128:9+43 + assume {:print "$track_return(47,19,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:129:5+1 + assume {:print "$at(104,5100,5101)"} true; +L1: + + // assert Not(Not(exists[@558]>(signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:65:9+74 + assume {:print "$at(105,1573,1647)"} true; + assert {:msg "assert_failed(105,1573,1647): function does not abort under this condition"} + !!$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#558, $1_signer_$address_of($t0)); + + // assert Not(Le($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:52:9+22 + assume {:print "$at(105,1248,1270)"} true; + assert {:msg "assert_failed(105,1248,1270): function does not abort under this condition"} + !($t1 <= 0); + + // assert Not(Not(exists[@559]>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:53:9+42 + assume {:print "$at(105,1279,1321)"} true; + assert {:msg "assert_failed(105,1279,1321): function does not abort under this condition"} + !!$ResourceExists($1_treasury_Treasury'#0'_$memory#559, 2); + + // assert Not(Lt(treasury::spec_balance[@559]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:54:9+42 + assume {:print "$at(105,1330,1372)"} true; + assert {:msg "assert_failed(105,1330,1372): function does not abort under this condition"} + !($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#559) < $t1); + + // assert Eq(treasury::spec_balance<#0>(), Sub(treasury::spec_balance[@559]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + assume {:print "$at(105,1381,1452)"} true; + assert {:msg "assert_failed(105,1381,1452): post-condition does not hold"} + $IsEqual'num'($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory), ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#559) - $t1)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:129:5+1 + assume {:print "$at(104,5100,5101)"} true; +L2: + + // assert Or(Or(Or(Not(exists[@558]>(signer::$address_of[]($t0))), Le($t1, 0)), Not(exists[@559]>(0x2))), Lt(treasury::spec_balance[@559]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:64:5+144 + assume {:print "$at(105,1549,1693)"} true; + assert {:msg "assert_failed(105,1549,1693): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#558, $1_signer_$address_of($t0)) || ($t1 <= 0)) || !$ResourceExists($1_treasury_Treasury'#0'_$memory#559, 2)) || ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#559) < $t1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:64:5+144 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun treasury::add_linear_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+142 +procedure {:timeLimit 80} $1_treasury_add_linear_withdraw_capability$verify(_$t0: $signer, _$t1: $1_treasury_LinearWithdrawCapability'#0') returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'signer': $signer; + var $1_treasury_LinearWithdrawCapability'#0'_$memory#561: $Memory $1_treasury_LinearWithdrawCapability'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + assume {:print "$at(104,8789,8790)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t1); + + // assume forall $rsc: treasury::LinearWithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_LinearWithdrawCapability'#0''($rsc)))); + + // @561 := save_mem(treasury::LinearWithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + $1_treasury_LinearWithdrawCapability'#0'_$memory#561 := $1_treasury_LinearWithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + assume {:print "$track_local(47,0,0):", $t0} $t0 == $t0; + + // trace_local[cap]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:226:5+1 + assume {:print "$track_local(47,0,1):", $t1} $t1 == $t1; + + // move_to>($t1, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:227:9+7 + assume {:print "$at(104,8905,8912)"} true; + if ($ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_treasury_LinearWithdrawCapability'#0'_$memory := $ResourceUpdate($1_treasury_LinearWithdrawCapability'#0'_$memory, $t0->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,8905,8912)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,0):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:228:5+1 + assume {:print "$at(104,8930,8931)"} true; +L1: + + // assert Not(exists[@561]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:155:9+79 + assume {:print "$at(105,4598,4677)"} true; + assert {:msg "assert_failed(105,4598,4677): function does not abort under this condition"} + !$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory#561, $1_signer_$address_of($t0)); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:156:9+77 + assume {:print "$at(105,4686,4763)"} true; + assert {:msg "assert_failed(105,4686,4763): post-condition does not hold"} + $ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:156:9+77 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:228:5+1 + assume {:print "$at(104,8930,8931)"} true; +L2: + + // assert exists[@561]>(signer::$address_of[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:153:5+242 + assume {:print "$at(105,4527,4769)"} true; + assert {:msg "assert_failed(105,4527,4769): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory#561, $1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:153:5+242 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::add_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+129 +procedure {:timeLimit 80} $1_treasury_add_withdraw_capability$verify(_$t0: $signer, _$t1: $1_treasury_WithdrawCapability'#0') returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: $1_treasury_WithdrawCapability'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'signer': $signer; + var $1_treasury_WithdrawCapability'#0'_$memory#562: $Memory $1_treasury_WithdrawCapability'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + assume {:print "$at(104,8361,8362)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + assume $IsValid'$1_treasury_WithdrawCapability'#0''($t1); + + // assume forall $rsc: treasury::WithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_WithdrawCapability'#0''($rsc)))); + + // @562 := save_mem(treasury::WithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + $1_treasury_WithdrawCapability'#0'_$memory#562 := $1_treasury_WithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + assume {:print "$track_local(47,1,0):", $t0} $t0 == $t0; + + // trace_local[cap]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:214:5+1 + assume {:print "$track_local(47,1,1):", $t1} $t1 == $t1; + + // move_to>($t1, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:215:9+7 + assume {:print "$at(104,8464,8471)"} true; + if ($ResourceExists($1_treasury_WithdrawCapability'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_treasury_WithdrawCapability'#0'_$memory := $ResourceUpdate($1_treasury_WithdrawCapability'#0'_$memory, $t0->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,8464,8471)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,1):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:216:5+1 + assume {:print "$at(104,8489,8490)"} true; +L1: + + // assert Not(exists[@562]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:145:9+73 + assume {:print "$at(105,4315,4388)"} true; + assert {:msg "assert_failed(105,4315,4388): function does not abort under this condition"} + !$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#562, $1_signer_$address_of($t0)); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:146:9+71 + assume {:print "$at(105,4397,4468)"} true; + assert {:msg "assert_failed(105,4397,4468): post-condition does not hold"} + $ResourceExists($1_treasury_WithdrawCapability'#0'_$memory, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:146:9+71 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:216:5+1 + assume {:print "$at(104,8489,8490)"} true; +L2: + + // assert exists[@562]>(signer::$address_of[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:143:5+223 + assume {:print "$at(105,4251,4474)"} true; + assert {:msg "assert_failed(105,4251,4474): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#562, $1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:143:5+223 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::destroy_linear_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:239:5+196 +procedure {:timeLimit 80} $1_treasury_destroy_linear_withdraw_capability$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:239:5+1 + assume {:print "$at(104,9280,9281)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:239:5+1 + assume {:print "$track_local(47,4,0):", $t0} $t0 == $t0; + + // ($t1, $t2, $t3, $t4) := unpack treasury::LinearWithdrawCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:240:13+76 + assume {:print "$at(104,9387,9463)"} true; + $t1 := $t0->$total; + $t2 := $t0->$withdraw; + $t3 := $t0->$start_time; + $t4 := $t0->$period; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:240:86+1 + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:240:75+1 + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:240:60+1 + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:240:47+1 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:241:5+1 + assume {:print "$at(104,9475,9476)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:241:5+1 + assume {:print "$at(104,9475,9476)"} true; + assert {:msg "assert_failed(104,9475,9476): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:241:5+1 + return; + +} + +// fun treasury::destroy_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:220:5+136 +procedure {:timeLimit 80} $1_treasury_destroy_withdraw_capability$verify(_$t0: $1_treasury_WithdrawCapability'#0') returns () +{ + // declare local variables + var $t1: bool; + var $t0: $1_treasury_WithdrawCapability'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:220:5+1 + assume {:print "$at(104,8540,8541)"} true; + assume $IsValid'$1_treasury_WithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:220:5+1 + assume {:print "$track_local(47,5,0):", $t0} $t0 == $t0; + + // $t1 := unpack treasury::WithdrawCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:221:13+29 + assume {:print "$at(104,8634,8663)"} true; + $t1 := $t0->$dummy_field; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:221:13+29 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:222:5+1 + assume {:print "$at(104,8675,8676)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:222:5+1 + assume {:print "$at(104,8675,8676)"} true; + assert {:msg "assert_failed(104,8675,8676): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:222:5+1 + return; + +} + +// fun treasury::do_withdraw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+666 +procedure {:inline 1} $1_treasury_do_withdraw'$1_starcoin_coin_STC'(_$t0: int) returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC') +{ + // declare local variables + var $t1: $Mutation ($1_treasury_Treasury'$1_starcoin_coin_STC'); + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_treasury_Treasury'$1_starcoin_coin_STC'); + var $t12: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $Mutation ($1_event_EventHandle'$1_treasury_WithdrawEvent'); + var $t19: $1_treasury_WithdrawEvent; + var $t20: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t21: int; + var $t22: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t0: int; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_treasury_Treasury'$1_starcoin_coin_STC'': $1_treasury_Treasury'$1_starcoin_coin_STC'; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume {:print "$at(104,3786,3787)"} true; + assume {:print "$track_local(47,6,0):", $t0} $t0 == $t0; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:26+1 + assume {:print "$at(104,3889,3890)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := >($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:24+1 + call $t3 := $Gt($t0, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 +L0: + + // $t4 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 + assume {:print "$at(104,3916,3931)"} true; + $t4 := 102; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:29+40 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(104,3892,3932)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + assume {:print "$track_abort(47,6):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + $t6 := $t5; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; +L2: + + // $t7 := treasury::exists_at<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; + call $t7 := $1_treasury_exists_at'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(104,3951,3970)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 +L3: + + // $t8 := 105 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 + assume {:print "$at(104,3989,4011)"} true; + $t8 := 105; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:38+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(104,3972,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + assume {:print "$track_abort(47,6):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; +L5: + + // $t10 := stc_util::token_issuer<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; + call $t10 := $1_stc_util_token_issuer'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(104,4043,4075)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t11 := borrow_global>($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:24+17 + assume {:print "$at(104,4100,4117)"} true; + if (!$ResourceExists($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(104,4100,4117)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[treasury]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:13+8 + $temp_0'$1_treasury_Treasury'$1_starcoin_coin_STC'' := $Dereference($t11); + assume {:print "$track_local(47,6,1):", $temp_0'$1_treasury_Treasury'$1_starcoin_coin_STC''} $temp_0'$1_treasury_Treasury'$1_starcoin_coin_STC'' == $temp_0'$1_treasury_Treasury'$1_starcoin_coin_STC''; + + // $t12 := get_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:40+17 + assume {:print "$at(104,4191,4208)"} true; + $t12 := $Dereference($t11)->$balance; + + // $t13 := coin::value<#0>($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:28+30 + call $t13 := $1_coin_value'$1_starcoin_coin_STC'($t12); + if ($abort_flag) { + assume {:print "$at(104,4179,4209)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t14 := (u128)($t13) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:27+40 + call $t14 := $CastU128($t13); + if ($abort_flag) { + assume {:print "$at(104,4178,4218)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t15 := <=($t0, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:24+2 + call $t15 := $Le($t0, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L6: + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + + // $t16 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:93+18 + $t16 := 103; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:69+43 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(104,4220,4263)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + assume {:print "$track_abort(47,6):", $t17} $t17 == $t17; + + // $t6 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + $t6 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:18+8 + assume {:print "$at(104,4310,4318)"} true; +L8: + + // $t18 := borrow_field>.withdraw_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:13+29 + assume {:print "$at(104,4305,4334)"} true; + $t18 := $ChildMutation($t11, 1, $Dereference($t11)->$withdraw_events); + + // $t19 := pack treasury::WithdrawEvent($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:108:13+24 + assume {:print "$at(104,4348,4372)"} true; + $t19 := $1_treasury_WithdrawEvent($t0); + + // opaque begin: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + assume {:print "$at(104,4274,4383)"} true; + + // opaque end: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + + // write_back[Reference($t11).withdraw_events (event::EventHandle)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'$1_starcoin_coin_STC''_withdraw_events($Dereference($t11), $Dereference($t18))); + + // $t20 := borrow_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:23+21 + assume {:print "$at(104,4407,4428)"} true; + $t20 := $ChildMutation($t11, 0, $Dereference($t11)->$balance); + + // $t21 := (u64)($t0) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:46+15 + call $t21 := $CastU64($t0); + if ($abort_flag) { + assume {:print "$at(104,4430,4445)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t22 := coin::extract<#0>($t20, $t21) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + call $t22,$t20 := $1_coin_extract'$1_starcoin_coin_STC'($t20, $t21); + if ($abort_flag) { + assume {:print "$at(104,4393,4446)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // write_back[Reference($t11).balance (coin::Coin<#0>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'$1_starcoin_coin_STC''_balance($Dereference($t11), $Dereference($t20))); + + // write_back[treasury::Treasury<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $1_treasury_Treasury'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + assume {:print "$track_return(47,6,0):", $t22} $t22 == $t22; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; +L9: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; + $ret0 := $t22; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 +L10: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun treasury::do_withdraw<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+666 +procedure {:inline 1} $1_treasury_do_withdraw'#0'(_$t0: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: $Mutation ($1_treasury_Treasury'#0'); + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_treasury_Treasury'#0'); + var $t12: $1_coin_Coin'#0'; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $Mutation ($1_event_EventHandle'$1_treasury_WithdrawEvent'); + var $t19: $1_treasury_WithdrawEvent; + var $t20: $Mutation ($1_coin_Coin'#0'); + var $t21: int; + var $t22: $1_coin_Coin'#0'; + var $t0: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_Treasury'#0'': $1_treasury_Treasury'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume {:print "$at(104,3786,3787)"} true; + assume {:print "$track_local(47,6,0):", $t0} $t0 == $t0; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:26+1 + assume {:print "$at(104,3889,3890)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := >($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:24+1 + call $t3 := $Gt($t0, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 +L0: + + // $t4 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 + assume {:print "$at(104,3916,3931)"} true; + $t4 := 102; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:29+40 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(104,3892,3932)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + assume {:print "$track_abort(47,6):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + $t6 := $t5; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; +L2: + + // $t7 := treasury::exists_at<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; + call $t7 := $1_treasury_exists_at'#0'(); + if ($abort_flag) { + assume {:print "$at(104,3951,3970)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 +L3: + + // $t8 := 105 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 + assume {:print "$at(104,3989,4011)"} true; + $t8 := 105; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:38+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(104,3972,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + assume {:print "$track_abort(47,6):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; +L5: + + // $t10 := stc_util::token_issuer<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; + call $t10 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(104,4043,4075)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t11 := borrow_global>($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:24+17 + assume {:print "$at(104,4100,4117)"} true; + if (!$ResourceExists($1_treasury_Treasury'#0'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_treasury_Treasury'#0'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(104,4100,4117)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[treasury]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:13+8 + $temp_0'$1_treasury_Treasury'#0'' := $Dereference($t11); + assume {:print "$track_local(47,6,1):", $temp_0'$1_treasury_Treasury'#0''} $temp_0'$1_treasury_Treasury'#0'' == $temp_0'$1_treasury_Treasury'#0''; + + // $t12 := get_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:40+17 + assume {:print "$at(104,4191,4208)"} true; + $t12 := $Dereference($t11)->$balance; + + // $t13 := coin::value<#0>($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:28+30 + call $t13 := $1_coin_value'#0'($t12); + if ($abort_flag) { + assume {:print "$at(104,4179,4209)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t14 := (u128)($t13) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:27+40 + call $t14 := $CastU128($t13); + if ($abort_flag) { + assume {:print "$at(104,4178,4218)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t15 := <=($t0, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:24+2 + call $t15 := $Le($t0, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L6: + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + + // $t16 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:93+18 + $t16 := 103; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:69+43 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(104,4220,4263)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + assume {:print "$track_abort(47,6):", $t17} $t17 == $t17; + + // $t6 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + $t6 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:18+8 + assume {:print "$at(104,4310,4318)"} true; +L8: + + // $t18 := borrow_field>.withdraw_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:13+29 + assume {:print "$at(104,4305,4334)"} true; + $t18 := $ChildMutation($t11, 1, $Dereference($t11)->$withdraw_events); + + // $t19 := pack treasury::WithdrawEvent($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:108:13+24 + assume {:print "$at(104,4348,4372)"} true; + $t19 := $1_treasury_WithdrawEvent($t0); + + // opaque begin: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + assume {:print "$at(104,4274,4383)"} true; + + // opaque end: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + + // write_back[Reference($t11).withdraw_events (event::EventHandle)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'#0''_withdraw_events($Dereference($t11), $Dereference($t18))); + + // $t20 := borrow_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:23+21 + assume {:print "$at(104,4407,4428)"} true; + $t20 := $ChildMutation($t11, 0, $Dereference($t11)->$balance); + + // $t21 := (u64)($t0) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:46+15 + call $t21 := $CastU64($t0); + if ($abort_flag) { + assume {:print "$at(104,4430,4445)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t22 := coin::extract<#0>($t20, $t21) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + call $t22,$t20 := $1_coin_extract'#0'($t20, $t21); + if ($abort_flag) { + assume {:print "$at(104,4393,4446)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // write_back[Reference($t11).balance (coin::Coin<#0>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'#0''_balance($Dereference($t11), $Dereference($t20))); + + // write_back[treasury::Treasury<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $1_treasury_Treasury'#0'_$memory := $ResourceUpdate($1_treasury_Treasury'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + assume {:print "$track_return(47,6,0):", $t22} $t22 == $t22; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; +L9: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; + $ret0 := $t22; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 +L10: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun treasury::do_withdraw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+666 +procedure {:timeLimit 80} $1_treasury_do_withdraw$verify(_$t0: int) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: $Mutation ($1_treasury_Treasury'#0'); + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_treasury_Treasury'#0'); + var $t12: $1_coin_Coin'#0'; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $Mutation ($1_event_EventHandle'$1_treasury_WithdrawEvent'); + var $t19: $1_treasury_WithdrawEvent; + var $t20: $Mutation ($1_coin_Coin'#0'); + var $t21: int; + var $t22: $1_coin_Coin'#0'; + var $t0: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_Treasury'#0'': $1_treasury_Treasury'#0'; + var $temp_0'u128': int; + var $1_treasury_Treasury'#0'_$memory#540: $Memory $1_treasury_Treasury'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume {:print "$at(104,3786,3787)"} true; + assume $IsValid'u128'($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // @540 := save_mem(treasury::Treasury<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + $1_treasury_Treasury'#0'_$memory#540 := $1_treasury_Treasury'#0'_$memory; + + // trace_local[amount]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:100:5+1 + assume {:print "$track_local(47,6,0):", $t0} $t0 == $t0; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:26+1 + assume {:print "$at(104,3889,3890)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := >($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:24+1 + call $t3 := $Gt($t0, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 +L0: + + // $t4 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:53+15 + assume {:print "$at(104,3916,3931)"} true; + $t4 := 102; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:29+40 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(104,3892,3932)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + assume {:print "$at(104,3872,3933)"} true; + assume {:print "$track_abort(47,6):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + $t6 := $t5; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:101:9+61 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; +L2: + + // $t7 := treasury::exists_at<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:17+19 + assume {:print "$at(104,3951,3970)"} true; + call $t7 := $1_treasury_exists_at'#0'(); + if ($abort_flag) { + assume {:print "$at(104,3951,3970)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 +L3: + + // $t8 := 105 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:55+22 + assume {:print "$at(104,3989,4011)"} true; + $t8 := 105; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:38+40 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(104,3972,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + assume {:print "$at(104,3943,4013)"} true; + assume {:print "$track_abort(47,6):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + $t6 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:102:9+70 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; +L5: + + // $t10 := stc_util::token_issuer<#0>() on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:103:29+32 + assume {:print "$at(104,4043,4075)"} true; + call $t10 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(104,4043,4075)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t11 := borrow_global>($t10) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:24+17 + assume {:print "$at(104,4100,4117)"} true; + if (!$ResourceExists($1_treasury_Treasury'#0'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_treasury_Treasury'#0'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(104,4100,4117)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_local[treasury]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:104:13+8 + $temp_0'$1_treasury_Treasury'#0'' := $Dereference($t11); + assume {:print "$track_local(47,6,1):", $temp_0'$1_treasury_Treasury'#0''} $temp_0'$1_treasury_Treasury'#0'' == $temp_0'$1_treasury_Treasury'#0''; + + // $t12 := get_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:40+17 + assume {:print "$at(104,4191,4208)"} true; + $t12 := $Dereference($t11)->$balance; + + // $t13 := coin::value<#0>($t12) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:28+30 + call $t13 := $1_coin_value'#0'($t12); + if ($abort_flag) { + assume {:print "$at(104,4179,4209)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t14 := (u128)($t13) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:27+40 + call $t14 := $CastU128($t13); + if ($abort_flag) { + assume {:print "$at(104,4178,4218)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t15 := <=($t0, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:24+2 + call $t15 := $Le($t0, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 +L6: + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + + // $t16 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:93+18 + $t16 := 103; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:69+43 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(104,4220,4263)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + assume {:print "$at(104,4160,4264)"} true; + assume {:print "$track_abort(47,6):", $t17} $t17 == $t17; + + // $t6 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + $t6 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:105:9+104 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:18+8 + assume {:print "$at(104,4310,4318)"} true; +L8: + + // $t18 := borrow_field>.withdraw_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:107:13+29 + assume {:print "$at(104,4305,4334)"} true; + $t18 := $ChildMutation($t11, 1, $Dereference($t11)->$withdraw_events); + + // $t19 := pack treasury::WithdrawEvent($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:108:13+24 + assume {:print "$at(104,4348,4372)"} true; + $t19 := $1_treasury_WithdrawEvent($t0); + + // opaque begin: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + assume {:print "$at(104,4274,4383)"} true; + + // opaque end: event::emit_event($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + + // write_back[Reference($t11).withdraw_events (event::EventHandle)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:106:9+109 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'#0''_withdraw_events($Dereference($t11), $Dereference($t18))); + + // $t20 := borrow_field>.balance($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:23+21 + assume {:print "$at(104,4407,4428)"} true; + $t20 := $ChildMutation($t11, 0, $Dereference($t11)->$balance); + + // $t21 := (u64)($t0) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:46+15 + call $t21 := $CastU64($t0); + if ($abort_flag) { + assume {:print "$at(104,4430,4445)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // $t22 := coin::extract<#0>($t20, $t21) on_abort goto L10 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + call $t22,$t20 := $1_coin_extract'#0'($t20, $t21); + if ($abort_flag) { + assume {:print "$at(104,4393,4446)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(47,6):", $t6} $t6 == $t6; + goto L10; + } + + // write_back[Reference($t11).balance (coin::Coin<#0>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $t11 := $UpdateMutation($t11, $Update'$1_treasury_Treasury'#0''_balance($Dereference($t11), $Dereference($t20))); + + // write_back[treasury::Treasury<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + $1_treasury_Treasury'#0'_$memory := $ResourceUpdate($1_treasury_Treasury'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:110:9+53 + assume {:print "$track_return(47,6,0):", $t22} $t22 == $t22; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; +L9: + + // assert Not(Le($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:52:9+22 + assume {:print "$at(105,1248,1270)"} true; + assert {:msg "assert_failed(105,1248,1270): function does not abort under this condition"} + !($t0 <= 0); + + // assert Not(Not(exists[@540]>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:53:9+42 + assume {:print "$at(105,1279,1321)"} true; + assert {:msg "assert_failed(105,1279,1321): function does not abort under this condition"} + !!$ResourceExists($1_treasury_Treasury'#0'_$memory#540, 2); + + // assert Not(Lt(treasury::spec_balance[@540]<#0>(), $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:54:9+42 + assume {:print "$at(105,1330,1372)"} true; + assert {:msg "assert_failed(105,1330,1372): function does not abort under this condition"} + !($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#540) < $t0); + + // assert Eq(treasury::spec_balance<#0>(), Sub(treasury::spec_balance[@540]<#0>(), $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + assume {:print "$at(105,1381,1452)"} true; + assert {:msg "assert_failed(105,1381,1452): post-condition does not hold"} + $IsEqual'num'($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory), ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#540) - $t0)); + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + $ret0 := $t22; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:111:5+1 + assume {:print "$at(104,4451,4452)"} true; +L10: + + // assert Or(Or(Le($t0, 0), Not(exists[@540]>(0x2))), Lt(treasury::spec_balance[@540]<#0>(), $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:45:5+64 + assume {:print "$at(105,1111,1175)"} true; + assert {:msg "assert_failed(105,1111,1175): abort not covered by any of the `aborts_if` clauses"} + ((($t0 <= 0) || !$ResourceExists($1_treasury_Treasury'#0'_$memory#540, 2)) || ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#540) < $t0)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:45:5+64 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun treasury::get_linear_withdraw_capability_period [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:258:5+128 +procedure {:timeLimit 80} $1_treasury_get_linear_withdraw_capability_period$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:258:5+1 + assume {:print "$at(104,10060,10061)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:258:5+1 + assume {:print "$track_local(47,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:259:9+10 + assume {:print "$at(104,10172,10182)"} true; + $t1 := $t0->$period; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:259:9+10 + assume {:print "$track_return(47,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:260:5+1 + assume {:print "$at(104,10187,10188)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:260:5+1 + assume {:print "$at(104,10187,10188)"} true; + assert {:msg "assert_failed(104,10187,10188): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:260:5+1 + $ret0 := $t1; + return; + +} + +// fun treasury::get_linear_withdraw_capability_start_time [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:263:5+136 +procedure {:timeLimit 80} $1_treasury_get_linear_withdraw_capability_start_time$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:263:5+1 + assume {:print "$at(104,10253,10254)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:263:5+1 + assume {:print "$track_local(47,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:264:9+14 + assume {:print "$at(104,10369,10383)"} true; + $t1 := $t0->$start_time; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:264:9+14 + assume {:print "$track_return(47,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:265:5+1 + assume {:print "$at(104,10388,10389)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:265:5+1 + assume {:print "$at(104,10388,10389)"} true; + assert {:msg "assert_failed(104,10388,10389): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:265:5+1 + $ret0 := $t1; + return; + +} + +// fun treasury::get_linear_withdraw_capability_total [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:248:5+127 +procedure {:timeLimit 80} $1_treasury_get_linear_withdraw_capability_total$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:248:5+1 + assume {:print "$at(104,9680,9681)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:248:5+1 + assume {:print "$track_local(47,10,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:249:9+9 + assume {:print "$at(104,9792,9801)"} true; + $t1 := $t0->$total; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:249:9+9 + assume {:print "$track_return(47,10,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:250:5+1 + assume {:print "$at(104,9806,9807)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:250:5+1 + assume {:print "$at(104,9806,9807)"} true; + assert {:msg "assert_failed(104,9806,9807): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:250:5+1 + $ret0 := $t1; + return; + +} + +// fun treasury::get_linear_withdraw_capability_withdraw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:253:5+133 +procedure {:timeLimit 80} $1_treasury_get_linear_withdraw_capability_withdraw$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:253:5+1 + assume {:print "$at(104,9866,9867)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:253:5+1 + assume {:print "$track_local(47,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:254:9+12 + assume {:print "$at(104,9981,9993)"} true; + $t1 := $t0->$withdraw; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:254:9+12 + assume {:print "$track_return(47,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:255:5+1 + assume {:print "$at(104,9998,9999)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:255:5+1 + assume {:print "$at(104,9998,9999)"} true; + assert {:msg "assert_failed(104,9998,9999): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:255:5+1 + $ret0 := $t1; + return; + +} + +// fun treasury::is_empty_linear_withdraw_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:201:5+135 +procedure {:timeLimit 80} $1_treasury_is_empty_linear_withdraw_cap$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:201:5+1 + assume {:print "$at(104,7911,7912)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[key]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:201:5+1 + assume {:print "$track_local(47,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:202:9+9 + assume {:print "$at(104,8015,8024)"} true; + $t1 := $t0->$total; + + // $t2 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:202:22+12 + $t2 := $t0->$withdraw; + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:202:19+2 + $t3 := $IsEqual'u128'($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:202:9+25 + assume {:print "$track_return(47,13,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:203:5+1 + assume {:print "$at(104,8045,8046)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:122:9+16 + assume {:print "$at(105,3593,3609)"} true; + assert {:msg "assert_failed(105,3593,3609): function does not abort under this condition"} + !false; + + // assert Eq($t3, Eq(select treasury::LinearWithdrawCapability.total>($t0), select treasury::LinearWithdrawCapability.withdraw>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:123:9+46 + assume {:print "$at(105,3618,3664)"} true; + assert {:msg "assert_failed(105,3618,3664): post-condition does not hold"} + $IsEqual'bool'($t3, $IsEqual'u128'($t0->$total, $t0->$withdraw)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:123:9+46 + $ret0 := $t3; + return; + +} + +// fun treasury::is_empty_linear_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:243:5+142 +procedure {:timeLimit 80} $1_treasury_is_empty_linear_withdraw_capability$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:243:5+1 + assume {:print "$at(104,9482,9483)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:243:5+1 + assume {:print "$track_local(47,14,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:244:9+9 + assume {:print "$at(104,9593,9602)"} true; + $t1 := $t0->$total; + + // $t2 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:244:22+12 + $t2 := $t0->$withdraw; + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:244:19+2 + $t3 := $IsEqual'u128'($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:244:9+25 + assume {:print "$track_return(47,14,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:245:5+1 + assume {:print "$at(104,9623,9624)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:245:5+1 + assume {:print "$at(104,9623,9624)"} true; + assert {:msg "assert_failed(104,9623,9624): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:245:5+1 + $ret0 := $t3; + return; + +} + +// fun treasury::issue_linear_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+541 +procedure {:timeLimit 80} $1_treasury_issue_linear_withdraw_capability$verify(_$t0: $Mutation ($1_treasury_WithdrawCapability'#0'), _$t1: int, _$t2: int) returns ($ret0: $1_treasury_LinearWithdrawCapability'#0', $ret1: $Mutation ($1_treasury_WithdrawCapability'#0')) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_treasury_LinearWithdrawCapability'#0'; + var $t0: $Mutation ($1_treasury_WithdrawCapability'#0'); + var $t1: int; + var $t2: int; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#563: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + assume {:print "$at(104,5183,5184)"} true; + assume $IsValid'$1_treasury_WithdrawCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + assume $IsValid'u128'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+541 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @563 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#563 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // trace_local[_capability]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,15,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + assume {:print "$track_local(47,15,1):", $t1} $t1 == $t1; + + // trace_local[period]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:132:5+1 + assume {:print "$track_local(47,15,2):", $t2} $t2 == $t2; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:26+1 + assume {:print "$at(104,5399,5400)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := >($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:24+1 + call $t5 := $Gt($t2, $t4); + + // if ($t5) goto L1 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 + if ($t5) { goto L1; } else { goto L6; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 + assume {:print "$at(104,5382,5446)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:53+18 +L0: + + // $t6 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:53+18 + assume {:print "$at(104,5426,5444)"} true; + $t6 := 101; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:29+43 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(104,5402,5445)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(47,15):", $t8} $t8 == $t8; + goto L9; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 + assume {:print "$at(104,5382,5446)"} true; + assume {:print "$track_abort(47,15):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 + $t8 := $t7; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:137:9+64 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:17+6 + assume {:print "$at(104,5464,5470)"} true; +L2: + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:26+1 + assume {:print "$at(104,5473,5474)"} true; + $t9 := 0; + assume $IsValid'u128'($t9); + + // $t10 := >($t1, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:24+1 + call $t10 := $Gt($t1, $t9); + + // if ($t10) goto L4 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 + if ($t10) { goto L4; } else { goto L7; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 + assume {:print "$at(104,5456,5517)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:53+15 +L3: + + // $t11 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:53+15 + assume {:print "$at(104,5500,5515)"} true; + $t11 := 102; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:29+40 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(104,5476,5516)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(47,15):", $t8} $t8 == $t8; + goto L9; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 + assume {:print "$at(104,5456,5517)"} true; + assume {:print "$track_abort(47,15):", $t12} $t12 == $t12; + + // $t8 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 + $t8 := $t12; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:138:9+61 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:139:26+24 + assume {:print "$at(104,5544,5568)"} true; +L5: + + // $t13 := timestamp::now_seconds() on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:139:26+24 + assume {:print "$at(104,5544,5568)"} true; + call $t13 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(104,5544,5568)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(47,15):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[start_time]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:139:13+10 + assume {:print "$track_local(47,15,3):", $t13} $t13 == $t13; + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:142:23+1 + assume {:print "$at(104,5662,5663)"} true; + $t14 := 0; + assume $IsValid'u128'($t14); + + // $t15 := pack treasury::LinearWithdrawCapability<#0>($t1, $t14, $t13, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:140:9+140 + assume {:print "$at(104,5578,5718)"} true; + $t15 := $1_treasury_LinearWithdrawCapability'#0'($t1, $t14, $t13, $t2); + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:140:9+140 + assume {:print "$track_return(47,15,0):", $t15} $t15 == $t15; + + // trace_local[_capability]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:140:9+140 + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,15,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:140:9+140 + goto L8; + + // label L6 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L6: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L7 at :1:1+10 +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:146:5+1 + assume {:print "$at(104,5723,5724)"} true; +L8: + + // assert Not(Eq($t2, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:74:9+22 + assume {:print "$at(105,1842,1864)"} true; + assert {:msg "assert_failed(105,1842,1864): function does not abort under this condition"} + !$IsEqual'u64'($t2, 0); + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:75:9+22 + assume {:print "$at(105,1873,1895)"} true; + assert {:msg "assert_failed(105,1873,1895): function does not abort under this condition"} + !$IsEqual'u128'($t1, 0); + + // assert Not(Not(exists[@563](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:76:9+98 + assume {:print "$at(105,1904,2002)"} true; + assert {:msg "assert_failed(105,1904,2002): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#563, $1_system_addresses_$get_starcoin_framework()); + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:76:9+98 + $ret0 := $t15; + $ret1 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:146:5+1 + assume {:print "$at(104,5723,5724)"} true; +L9: + + // assert Or(Or(Eq($t2, 0), Eq($t1, 0)), Not(exists[@563](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:70:5+308 + assume {:print "$at(105,1700,2008)"} true; + assert {:msg "assert_failed(105,1700,2008): abort not covered by any of the `aborts_if` clauses"} + (($IsEqual'u64'($t2, 0) || $IsEqual'u128'($t1, 0)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#563, $1_system_addresses_$get_starcoin_framework())); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:70:5+308 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun treasury::remove_linear_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:232:5+239 +procedure {:timeLimit 80} $1_treasury_remove_linear_withdraw_capability$verify(_$t0: $signer) returns ($ret0: $1_treasury_LinearWithdrawCapability'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_treasury_LinearWithdrawCapability'#0'; + var $t0: $signer; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'signer': $signer; + var $1_treasury_LinearWithdrawCapability'#0'_$memory#564: $Memory $1_treasury_LinearWithdrawCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:232:5+1 + assume {:print "$at(104,8993,8994)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: treasury::LinearWithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:232:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_LinearWithdrawCapability'#0''($rsc)))); + + // @564 := save_mem(treasury::LinearWithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:232:5+1 + $1_treasury_LinearWithdrawCapability'#0'_$memory#564 := $1_treasury_LinearWithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:232:5+1 + assume {:print "$track_local(47,16,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:235:53+26 + assume {:print "$at(104,9199,9225)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(104,9199,9225)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,16):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := move_from>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:235:9+9 + if (!$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $t1); + $1_treasury_LinearWithdrawCapability'#0'_$memory := $ResourceRemove($1_treasury_LinearWithdrawCapability'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,9155,9164)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,16):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:235:9+71 + assume {:print "$track_return(47,16,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:236:5+1 + assume {:print "$at(104,9231,9232)"} true; +L1: + + // assert Not(Not(exists[@564]>(signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:162:9+80 + assume {:print "$at(105,4850,4930)"} true; + assert {:msg "assert_failed(105,4850,4930): function does not abort under this condition"} + !!$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory#564, $1_signer_$address_of($t0)); + + // assert Not(exists>(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:163:9+78 + assume {:print "$at(105,4939,5017)"} true; + assert {:msg "assert_failed(105,4939,5017): post-condition does not hold"} + !$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory, $1_signer_$address_of($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:163:9+78 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:236:5+1 + assume {:print "$at(104,9231,9232)"} true; +L2: + + // assert Not(exists[@564]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:160:5+247 + assume {:print "$at(105,4776,5023)"} true; + assert {:msg "assert_failed(105,4776,5023): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory#564, $1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:160:5+247 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::remove_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:206:5+214 +procedure {:timeLimit 80} $1_treasury_remove_withdraw_capability$verify(_$t0: $signer) returns ($ret0: $1_treasury_WithdrawCapability'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_treasury_WithdrawCapability'#0'; + var $t0: $signer; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'signer': $signer; + var $1_treasury_WithdrawCapability'#0'_$memory#565: $Memory $1_treasury_WithdrawCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:206:5+1 + assume {:print "$at(104,8098,8099)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: treasury::WithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:206:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_WithdrawCapability'#0''($rsc)))); + + // @565 := save_mem(treasury::WithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:206:5+1 + $1_treasury_WithdrawCapability'#0'_$memory#565 := $1_treasury_WithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:206:5+1 + assume {:print "$track_local(47,17,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:209:47+26 + assume {:print "$at(104,8279,8305)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(104,8279,8305)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,17):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := move_from>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:209:9+9 + if (!$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_treasury_WithdrawCapability'#0'_$memory, $t1); + $1_treasury_WithdrawCapability'#0'_$memory := $ResourceRemove($1_treasury_WithdrawCapability'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(104,8241,8250)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,17):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:209:9+65 + assume {:print "$track_return(47,17,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:210:5+1 + assume {:print "$at(104,8311,8312)"} true; +L1: + + // assert Not(Not(exists[@565]>(signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:139:9+74 + assume {:print "$at(105,4084,4158)"} true; + assert {:msg "assert_failed(105,4084,4158): function does not abort under this condition"} + !!$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#565, $1_signer_$address_of($t0)); + + // assert Not(exists>(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:140:9+72 + assume {:print "$at(105,4167,4239)"} true; + assert {:msg "assert_failed(105,4167,4239): post-condition does not hold"} + !$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory, $1_signer_$address_of($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:140:9+72 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:210:5+1 + assume {:print "$at(104,8311,8312)"} true; +L2: + + // assert Not(exists[@565]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:136:5+229 + assume {:print "$at(105,4016,4245)"} true; + assert {:msg "assert_failed(105,4016,4245): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_treasury_WithdrawCapability'#0'_$memory#565, $1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:136:5+229 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::split_linear_withdraw_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+800 +procedure {:timeLimit 80} $1_treasury_split_linear_withdraw_cap$verify(_$t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0'), _$t1: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $1_treasury_LinearWithdrawCapability'#0', $ret2: $Mutation ($1_treasury_LinearWithdrawCapability'#0')) +{ + // declare local variables + var $t2: $1_treasury_LinearWithdrawCapability'#0'; + var $t3: int; + var $t4: int; + var $t5: $1_coin_Coin'#0'; + var $t6: $1_treasury_LinearWithdrawCapability'#0'; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_coin_Coin'#0'; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $Mutation (int); + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $1_treasury_LinearWithdrawCapability'#0'; + var $t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0'); + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume {:print "$at(104,6559,6560)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169: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: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+800 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // $t6 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + $t6 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,18,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:169:5+1 + assume {:print "$track_local(47,18,1):", $t1} $t1 == $t1; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:26+1 + assume {:print "$at(104,6786,6787)"} true; + $t7 := 0; + assume $IsValid'u128'($t7); + + // $t8 := >($t1, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:24+1 + call $t8 := $Gt($t1, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + assume {:print "$at(104,6769,6830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + assume {:print "$at(104,6769,6830)"} true; + + // $t9 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:53+15 + $t9 := 102; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:29+40 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(104,6789,6829)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + assume {:print "$at(104,6769,6830)"} true; + assume {:print "$track_abort(47,18):", $t10} $t10 == $t10; + + // $t11 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + $t11 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:173:9+61 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:174:59+3 + assume {:print "$at(104,6890,6893)"} true; +L2: + + // $t12 := treasury::withdraw_with_linear_capability<#0>($t0) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:174:21+42 + assume {:print "$at(104,6852,6894)"} true; + call $t12,$t0 := $1_treasury_withdraw_with_linear_capability'#0'($t0); + if ($abort_flag) { + assume {:print "$at(104,6852,6894)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // trace_local[token]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:174:13+5 + assume {:print "$track_local(47,18,5):", $t12} $t12 == $t12; + + // $t13 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:18+12 + assume {:print "$at(104,6913,6925)"} true; + $t13 := $Dereference($t0)->$withdraw; + + // $t14 := +($t13, $t1) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:31+1 + call $t14 := $AddU128($t13, $t1); + if ($abort_flag) { + assume {:print "$at(104,6926,6927)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // $t15 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:44+9 + $t15 := $Dereference($t0)->$total; + + // $t16 := <=($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:41+2 + call $t16 := $Le($t14, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + assume {:print "$at(104,6904,6994)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + assume {:print "$at(104,6904,6994)"} true; + + // $t17 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:79+18 + $t17 := 103; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:55+43 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(104,6950,6993)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + assume {:print "$at(104,6904,6994)"} true; + assume {:print "$track_abort(47,18):", $t18} $t18 == $t18; + + // $t11 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + $t11 := $t18; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:175:9+90 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:21+3 + assume {:print "$at(104,7016,7019)"} true; +L5: + + // $t19 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:21+9 + assume {:print "$at(104,7016,7025)"} true; + $t19 := $Dereference($t0)->$total; + + // $t20 := -($t19, $t1) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:31+1 + call $t20 := $Sub($t19, $t1); + if ($abort_flag) { + assume {:print "$at(104,7026,7027)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // $t21 := borrow_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:9+9 + $t21 := $ChildMutation($t0, 0, $Dereference($t0)->$total); + + // write_ref($t21, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:9+30 + $t21 := $UpdateMutation($t21, $t20); + + // write_back[Reference($t0).total (u128)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:9+30 + $t0 := $UpdateMutation($t0, $Update'$1_treasury_LinearWithdrawCapability'#0''_total($Dereference($t0), $Dereference($t21))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:176:9+30 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,18,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // $t22 := timestamp::now_seconds() on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:177:26+24 + assume {:print "$at(104,7061,7085)"} true; + call $t22 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(104,7061,7085)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // trace_local[start_time]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:177:13+10 + assume {:print "$track_local(47,18,4):", $t22} $t22 == $t22; + + // $t23 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:178:26+14 + assume {:print "$at(104,7112,7126)"} true; + $t23 := $Dereference($t0)->$start_time; + + // $t24 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:178:43+10 + $t24 := $Dereference($t0)->$period; + + // $t25 := +($t23, $t24) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:178:41+1 + call $t25 := $AddU64($t23, $t24); + if ($abort_flag) { + assume {:print "$at(104,7127,7128)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // $t26 := -($t25, $t22) on_abort goto L7 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:178:54+1 + call $t26 := $Sub($t25, $t22); + if ($abort_flag) { + assume {:print "$at(104,7140,7141)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(47,18):", $t11} $t11 == $t11; + goto L7; + } + + // trace_local[new_period]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:178:13+10 + assume {:print "$track_local(47,18,3):", $t26} $t26 == $t26; + + // $t27 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:181:23+1 + assume {:print "$at(104,7260,7261)"} true; + $t27 := 0; + assume $IsValid'u128'($t27); + + // $t28 := pack treasury::LinearWithdrawCapability<#0>($t1, $t27, $t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:179:23+151 + assume {:print "$at(104,7176,7327)"} true; + $t28 := $1_treasury_LinearWithdrawCapability'#0'($t1, $t27, $t22, $t26); + + // trace_local[new_key]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:179:13+7 + assume {:print "$track_local(47,18,2):", $t28} $t28 == $t28; + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:185:9+16 + assume {:print "$at(104,7337,7353)"} true; + assume {:print "$track_return(47,18,0):", $t12} $t12 == $t12; + + // trace_return[1]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:185:9+16 + assume {:print "$track_return(47,18,1):", $t28} $t28 == $t28; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:185:9+16 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,18,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:186:5+1 + assume {:print "$at(104,7358,7359)"} true; +L6: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:186:5+1 + assume {:print "$at(104,7358,7359)"} true; + assert {:msg "assert_failed(104,7358,7359): function does not abort under this condition"} + !false; + + // assert Eq(Sub(select treasury::LinearWithdrawCapability.total>($t6), select treasury::LinearWithdrawCapability.withdraw>($t6)), Add(Add(select coin::Coin.value>($t12), Sub(select treasury::LinearWithdrawCapability.total>($t28), select treasury::LinearWithdrawCapability.withdraw>($t28))), Sub(select treasury::LinearWithdrawCapability.total>($t0), select treasury::LinearWithdrawCapability.withdraw>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:99:9+136 + assume {:print "$at(105,2543,2679)"} true; + assert {:msg "assert_failed(105,2543,2679): post-condition does not hold"} + $IsEqual'num'(($t6->$total - $t6->$withdraw), (($t12->$value + ($t28->$total - $t28->$withdraw)) + ($Dereference($t0)->$total - $Dereference($t0)->$withdraw))); + + // return ($t12, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:99:9+136 + $ret0 := $t12; + $ret1 := $t28; + $ret2 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:186:5+1 + assume {:print "$at(104,7358,7359)"} true; +L7: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:186:5+1 + assume {:print "$at(104,7358,7359)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_amount_of_linear_cap<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+402 +procedure {:inline 1} $1_treasury_withdraw_amount_of_linear_cap'#0'(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+1 + assume {:print "$at(104,7438,7439)"} true; + assume {:print "$track_local(47,20,0):", $t0} $t0 == $t0; + + // $t6 := timestamp::now_seconds() on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:190:19+24 + assume {:print "$at(104,7553,7577)"} true; + call $t6 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(104,7553,7577)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t8 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:34+14 + assume {:print "$at(104,7612,7626)"} true; + $t8 := $t0->$start_time; + + // $t9 := -($t6, $t8) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:32+1 + call $t9 := $Sub($t6, $t8); + if ($abort_flag) { + assume {:print "$at(104,7610,7611)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[elapsed_time]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:13+12 + assume {:print "$track_local(47,20,5):", $t9} $t9 == $t9; + + // $t10 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:29+10 + assume {:print "$at(104,7656,7666)"} true; + $t10 := $t0->$period; + + // $t11 := >=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:26+2 + call $t11 := $Ge($t9, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:13+3 + assume {:print "$at(104,7682,7685)"} true; +L1: + + // $t12 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:13+9 + assume {:print "$at(104,7682,7691)"} true; + $t12 := $t0->$total; + + // $t13 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:25+12 + $t13 := $t0->$withdraw; + + // $t1 := -($t12, $t13) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:23+1 + call $t1 := $Sub($t12, $t13); + if ($abort_flag) { + assume {:print "$at(104,7692,7693)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:30+3 + assume {:print "$at(104,7753,7756)"} true; +L0: + + // $t14 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:30+9 + assume {:print "$at(104,7753,7762)"} true; + $t14 := $t0->$total; + + // $t15 := (u128)($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:41+22 + call $t15 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(104,7764,7786)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t16 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:66+10 + $t16 := $t0->$period; + + // $t17 := (u128)($t16) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:65+20 + call $t17 := $CastU128($t16); + if ($abort_flag) { + assume {:print "$at(104,7788,7808)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[c#896]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(47,20,4):", $t17} $t17 == $t17; + + // trace_local[b#895]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(47,20,3):", $t15} $t15 == $t15; + + // trace_local[a#894]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(47,20,2):", $t14} $t14 == $t14; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t18 := 0; + assume $IsValid'u128'($t18); + + // $t19 := !=($t17, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t19 := !$IsEqual'u128'($t17, $t18); + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L3: + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_argument($t20) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t21 := $1_error_invalid_argument($t20); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(47,20):", $t21} $t21 == $t21; + + // $t7 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t7 := $t21; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L5: + + // $t22 := (u256)($t14) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t22 := $CastU256($t14); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t23 := (u256)($t15) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t23 := $CastU256($t15); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t24 := *($t22, $t23) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t24 := $MulU256($t22, $t23); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t25 := (u256)($t17) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t25 := $CastU256($t17); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t26 := /($t24, $t25) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t26 := $Div($t24, $t25); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t27 := (u128)($t26) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t27 := $CastU128($t26); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t28 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:89+12 + assume {:print "$at(104,7812,7824)"} true; + $t28 := $t0->$withdraw; + + // $t1 := -($t27, $t28) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:87+1 + call $t1 := $Sub($t27, $t28); + if ($abort_flag) { + assume {:print "$at(104,7810,7811)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; + assume {:print "$track_return(47,20,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_amount_of_linear_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+402 +procedure {:timeLimit 80} $1_treasury_withdraw_amount_of_linear_cap$verify(_$t0: $1_treasury_LinearWithdrawCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t0: $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#566: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+1 + assume {:print "$at(104,7438,7439)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($t0); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189: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 Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+402 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @566 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#566 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:189:5+1 + assume {:print "$track_local(47,20,0):", $t0} $t0 == $t0; + + // $t6 := timestamp::now_seconds() on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:190:19+24 + assume {:print "$at(104,7553,7577)"} true; + call $t6 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(104,7553,7577)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t8 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:34+14 + assume {:print "$at(104,7612,7626)"} true; + $t8 := $t0->$start_time; + + // $t9 := -($t6, $t8) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:32+1 + call $t9 := $Sub($t6, $t8); + if ($abort_flag) { + assume {:print "$at(104,7610,7611)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[elapsed_time]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:191:13+12 + assume {:print "$track_local(47,20,5):", $t9} $t9 == $t9; + + // $t10 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:29+10 + assume {:print "$at(104,7656,7666)"} true; + $t10 := $t0->$period; + + // $t11 := >=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:26+2 + call $t11 := $Ge($t9, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:13+3 + assume {:print "$at(104,7682,7685)"} true; +L1: + + // $t12 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:13+9 + assume {:print "$at(104,7682,7691)"} true; + $t12 := $t0->$total; + + // $t13 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:25+12 + $t13 := $t0->$withdraw; + + // $t1 := -($t12, $t13) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:193:23+1 + call $t1 := $Sub($t12, $t13); + if ($abort_flag) { + assume {:print "$at(104,7692,7693)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:30+3 + assume {:print "$at(104,7753,7756)"} true; +L0: + + // $t14 := get_field>.total($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:30+9 + assume {:print "$at(104,7753,7762)"} true; + $t14 := $t0->$total; + + // $t15 := (u128)($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:41+22 + call $t15 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(104,7764,7786)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t16 := get_field>.period($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:66+10 + $t16 := $t0->$period; + + // $t17 := (u128)($t16) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:65+20 + call $t17 := $CastU128($t16); + if ($abort_flag) { + assume {:print "$at(104,7788,7808)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[c#896]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(47,20,4):", $t17} $t17 == $t17; + + // trace_local[b#895]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(47,20,3):", $t15} $t15 == $t15; + + // trace_local[a#894]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(47,20,2):", $t14} $t14 == $t14; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t18 := 0; + assume $IsValid'u128'($t18); + + // $t19 := !=($t17, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t19 := !$IsEqual'u128'($t17, $t18); + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L3: + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_argument($t20) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t21 := $1_error_invalid_argument($t20); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(47,20):", $t21} $t21 == $t21; + + // $t7 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t7 := $t21; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L5: + + // $t22 := (u256)($t14) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t22 := $CastU256($t14); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t23 := (u256)($t15) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t23 := $CastU256($t15); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t24 := *($t22, $t23) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t24 := $MulU256($t22, $t23); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t25 := (u256)($t17) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t25 := $CastU256($t17); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t26 := /($t24, $t25) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t26 := $Div($t24, $t25); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t27 := (u128)($t26) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t27 := $CastU128($t26); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // $t28 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:89+12 + assume {:print "$at(104,7812,7824)"} true; + $t28 := $t0->$withdraw; + + // $t1 := -($t27, $t28) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:195:87+1 + call $t1 := $Sub($t27, $t28); + if ($abort_flag) { + assume {:print "$at(104,7810,7811)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(47,20):", $t7} $t7 == $t7; + goto L7; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:192:9+198 + assume {:print "$at(104,7636,7834)"} true; + assume {:print "$track_return(47,20,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; +L6: + + // assert Not(Not(exists[@566](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:112:9+98 + assume {:print "$at(105,3057,3155)"} true; + assert {:msg "assert_failed(105,3057,3155): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#566, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Lt(timestamp::spec_now_seconds[@566](), select treasury::LinearWithdrawCapability.start_time>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:113:9+57 + assume {:print "$at(105,3164,3221)"} true; + assert {:msg "assert_failed(105,3164,3221): function does not abort under this condition"} + !($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#566) < $t0->$start_time); + + // assert Not(And(Ge(Sub(timestamp::spec_now_seconds[@566](), select treasury::LinearWithdrawCapability.start_time>($t0)), select treasury::LinearWithdrawCapability.period>($t0)), Lt(select treasury::LinearWithdrawCapability.total>($t0), select treasury::LinearWithdrawCapability.withdraw>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:114:9+99 + assume {:print "$at(105,3230,3329)"} true; + assert {:msg "assert_failed(105,3230,3329): function does not abort under this condition"} + !((($1_timestamp_spec_now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#566) - $t0->$start_time) >= $t0->$period) && ($t0->$total < $t0->$withdraw)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:114:9+99 + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:197:5+1 + assume {:print "$at(104,7839,7840)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_by_linear [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+291 +procedure {:timeLimit 80} $1_treasury_withdraw_by_linear$verify(_$t0: $signer) returns ($ret0: $1_coin_Coin'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $Mutation ($1_treasury_LinearWithdrawCapability'#0'); + var $t4: $1_coin_Coin'#0'; + var $t0: $signer; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'signer': $signer; + var $1_treasury_LinearWithdrawCapability'#0'_$memory#570: $Memory $1_treasury_LinearWithdrawCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume {:print "$at(104,6209,6210)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160: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: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::LinearWithdrawCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $a_0); + ($IsValid'$1_treasury_LinearWithdrawCapability'#0''($rsc)))); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+291 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @570 := save_mem(treasury::LinearWithdrawCapability<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + $1_treasury_LinearWithdrawCapability'#0'_$memory#570 := $1_treasury_LinearWithdrawCapability'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:160:5+1 + assume {:print "$track_local(47,21,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:163:71+26 + assume {:print "$at(104,6415,6441)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(104,6415,6441)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,21):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_global>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:163:19+17 + if (!$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_treasury_LinearWithdrawCapability'#0'_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(104,6363,6380)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,21):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := treasury::withdraw_with_linear_capability<#0>($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:164:9+42 + assume {:print "$at(104,6452,6494)"} true; + call $t4,$t3 := $1_treasury_withdraw_with_linear_capability'#0'($t3); + if ($abort_flag) { + assume {:print "$at(104,6452,6494)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(47,21):", $t2} $t2 == $t2; + goto L2; + } + + // write_back[treasury::LinearWithdrawCapability<#0>@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:164:9+42 + $1_treasury_LinearWithdrawCapability'#0'_$memory := $ResourceUpdate($1_treasury_LinearWithdrawCapability'#0'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:164:9+42 + assume {:print "$track_return(47,21,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:165:5+1 + assume {:print "$at(104,6499,6500)"} true; +L1: + + // assert Not(Not(exists[@570]>(signer::$address_of[]($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:91:9+80 + assume {:print "$at(105,2286,2366)"} true; + assert {:msg "assert_failed(105,2286,2366): function does not abort under this condition"} + !!$ResourceExists($1_treasury_LinearWithdrawCapability'#0'_$memory#570, $1_signer_$address_of($t0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:91:9+80 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:165:5+1 + assume {:print "$at(104,6499,6500)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:165:5+1 + assume {:print "$at(104,6499,6500)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_with_capability [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+193 +procedure {:inline 1} $1_treasury_withdraw_with_capability'$1_starcoin_coin_STC'(_$t0: $Mutation ($1_treasury_WithdrawCapability'$1_starcoin_coin_STC'), _$t1: int) returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC', $ret1: $Mutation ($1_treasury_WithdrawCapability'$1_starcoin_coin_STC')) +{ + // declare local variables + var $t2: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t3: int; + var $t0: $Mutation ($1_treasury_WithdrawCapability'$1_starcoin_coin_STC'); + var $t1: int; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC'': $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$at(104,4521,4522)"} true; + $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''} $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC'' == $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$track_local(47,22,1):", $t1} $t1 == $t1; + + // $t2 := treasury::do_withdraw<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$at(104,4689,4708)"} true; + call $t2 := $1_treasury_do_withdraw'$1_starcoin_coin_STC'($t1); + if ($abort_flag) { + assume {:print "$at(104,4689,4708)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,22):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$track_return(47,22,0):", $t2} $t2 == $t2; + + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''} $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC'' == $temp_0'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; + $ret0 := $t2; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_with_capability<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+193 +procedure {:inline 1} $1_treasury_withdraw_with_capability'#0'(_$t0: $Mutation ($1_treasury_WithdrawCapability'#0'), _$t1: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_treasury_WithdrawCapability'#0')) +{ + // declare local variables + var $t2: $1_coin_Coin'#0'; + var $t3: int; + var $t0: $Mutation ($1_treasury_WithdrawCapability'#0'); + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$at(104,4521,4522)"} true; + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$track_local(47,22,1):", $t1} $t1 == $t1; + + // $t2 := treasury::do_withdraw<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$at(104,4689,4708)"} true; + call $t2 := $1_treasury_do_withdraw'#0'($t1); + if ($abort_flag) { + assume {:print "$at(104,4689,4708)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,22):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$track_return(47,22,0):", $t2} $t2 == $t2; + + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; + $ret0 := $t2; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+193 +procedure {:timeLimit 80} $1_treasury_withdraw_with_capability$verify(_$t0: $Mutation ($1_treasury_WithdrawCapability'#0'), _$t1: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_treasury_WithdrawCapability'#0')) +{ + // declare local variables + var $t2: $1_coin_Coin'#0'; + var $t3: int; + var $t0: $Mutation ($1_treasury_WithdrawCapability'#0'); + var $t1: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_WithdrawCapability'#0'': $1_treasury_WithdrawCapability'#0'; + var $temp_0'u128': int; + var $1_treasury_Treasury'#0'_$memory#554: $Memory $1_treasury_Treasury'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$at(104,4521,4522)"} true; + assume $IsValid'$1_treasury_WithdrawCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // @554 := save_mem(treasury::Treasury<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + $1_treasury_Treasury'#0'_$memory#554 := $1_treasury_Treasury'#0'_$memory; + + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:114:5+1 + assume {:print "$track_local(47,22,1):", $t1} $t1 == $t1; + + // $t2 := treasury::do_withdraw<#0>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$at(104,4689,4708)"} true; + call $t2 := $1_treasury_do_withdraw'#0'($t1); + if ($abort_flag) { + assume {:print "$at(104,4689,4708)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(47,22):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + assume {:print "$track_return(47,22,0):", $t2} $t2 == $t2; + + // trace_local[_cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:118:9+19 + $temp_0'$1_treasury_WithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,22,0):", $temp_0'$1_treasury_WithdrawCapability'#0''} $temp_0'$1_treasury_WithdrawCapability'#0'' == $temp_0'$1_treasury_WithdrawCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; +L1: + + // assert Not(Le($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:52:9+22 + assume {:print "$at(105,1248,1270)"} true; + assert {:msg "assert_failed(105,1248,1270): function does not abort under this condition"} + !($t1 <= 0); + + // assert Not(Not(exists[@554]>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:53:9+42 + assume {:print "$at(105,1279,1321)"} true; + assert {:msg "assert_failed(105,1279,1321): function does not abort under this condition"} + !!$ResourceExists($1_treasury_Treasury'#0'_$memory#554, 2); + + // assert Not(Lt(treasury::spec_balance[@554]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:54:9+42 + assume {:print "$at(105,1330,1372)"} true; + assert {:msg "assert_failed(105,1330,1372): function does not abort under this condition"} + !($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#554) < $t1); + + // assert Eq(treasury::spec_balance<#0>(), Sub(treasury::spec_balance[@554]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + assume {:print "$at(105,1381,1452)"} true; + assert {:msg "assert_failed(105,1381,1452): post-condition does not hold"} + $IsEqual'num'($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory), ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#554) - $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:55:9+71 + $ret0 := $t2; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:119:5+1 + assume {:print "$at(104,4713,4714)"} true; +L2: + + // assert Or(Or(Le($t1, 0), Not(exists[@554]>(0x2))), Lt(treasury::spec_balance[@554]<#0>(), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:59:5+77 + assume {:print "$at(105,1465,1542)"} true; + assert {:msg "assert_failed(105,1465,1542): abort not covered by any of the `aborts_if` clauses"} + ((($t1 <= 0) || !$ResourceExists($1_treasury_Treasury'#0'_$memory#554, 2)) || ($1_treasury_spec_balance'#0'($1_treasury_Treasury'#0'_$memory#554) < $t1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.spec.move:59:5+77 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_with_linear_capability<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+313 +procedure {:inline 1} $1_treasury_withdraw_with_linear_capability'#0'(_$t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0')) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_treasury_LinearWithdrawCapability'#0')) +{ + // declare local variables + var $t1: int; + var $t2: $1_coin_Coin'#0'; + var $t3: $1_treasury_LinearWithdrawCapability'#0'; + var $t4: int; + var $t5: int; + var $t6: $1_coin_Coin'#0'; + var $t7: int; + var $t8: int; + var $t9: $Mutation (int); + var $t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0'); + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume {:print "$at(104,5794,5795)"} true; + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:52+3 + assume {:print "$at(104,5995,5998)"} true; + $t3 := $Dereference($t0); + + // $t4 := treasury::withdraw_amount_of_linear_cap<#0>($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:22+34 + call $t4 := $1_treasury_withdraw_amount_of_linear_cap'#0'($t3); + if ($abort_flag) { + assume {:print "$at(104,5965,5999)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[amount]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:13+6 + assume {:print "$track_local(47,23,1):", $t4} $t4 == $t4; + + // $t6 := treasury::do_withdraw<#0>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:154:21+19 + assume {:print "$at(104,6021,6040)"} true; + call $t6 := $1_treasury_do_withdraw'#0'($t4); + if ($abort_flag) { + assume {:print "$at(104,6021,6040)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[token]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:154:13+5 + assume {:print "$track_local(47,23,2):", $t6} $t6 == $t6; + + // $t7 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:24+12 + assume {:print "$at(104,6065,6077)"} true; + $t7 := $Dereference($t0)->$withdraw; + + // $t8 := +($t7, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:37+1 + call $t8 := $AddU128($t7, $t4); + if ($abort_flag) { + assume {:print "$at(104,6078,6079)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := borrow_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+12 + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$withdraw); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).withdraw (u128)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $t0 := $UpdateMutation($t0, $Update'$1_treasury_LinearWithdrawCapability'#0''_withdraw($Dereference($t0), $Dereference($t9))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:156:9+5 + assume {:print "$at(104,6096,6101)"} true; + assume {:print "$track_return(47,23,0):", $t6} $t6 == $t6; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:156:9+5 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; + $ret0 := $t6; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun treasury::withdraw_with_linear_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+313 +procedure {:timeLimit 80} $1_treasury_withdraw_with_linear_capability$verify(_$t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0')) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_treasury_LinearWithdrawCapability'#0')) +{ + // declare local variables + var $t1: int; + var $t2: $1_coin_Coin'#0'; + var $t3: $1_treasury_LinearWithdrawCapability'#0'; + var $t4: int; + var $t5: int; + var $t6: $1_coin_Coin'#0'; + var $t7: int; + var $t8: int; + var $t9: $Mutation (int); + var $t0: $Mutation ($1_treasury_LinearWithdrawCapability'#0'); + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_treasury_LinearWithdrawCapability'#0'': $1_treasury_LinearWithdrawCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume {:print "$at(104,5794,5795)"} true; + assume $IsValid'$1_treasury_LinearWithdrawCapability'#0''($Dereference($t0)); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150: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: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: treasury::Treasury<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'#0'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'#0''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+313 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:150:5+1 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:52+3 + assume {:print "$at(104,5995,5998)"} true; + $t3 := $Dereference($t0); + + // $t4 := treasury::withdraw_amount_of_linear_cap<#0>($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:22+34 + call $t4 := $1_treasury_withdraw_amount_of_linear_cap'#0'($t3); + if ($abort_flag) { + assume {:print "$at(104,5965,5999)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[amount]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:153:13+6 + assume {:print "$track_local(47,23,1):", $t4} $t4 == $t4; + + // $t6 := treasury::do_withdraw<#0>($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:154:21+19 + assume {:print "$at(104,6021,6040)"} true; + call $t6 := $1_treasury_do_withdraw'#0'($t4); + if ($abort_flag) { + assume {:print "$at(104,6021,6040)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[token]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:154:13+5 + assume {:print "$track_local(47,23,2):", $t6} $t6 == $t6; + + // $t7 := get_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:24+12 + assume {:print "$at(104,6065,6077)"} true; + $t7 := $Dereference($t0)->$withdraw; + + // $t8 := +($t7, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:37+1 + call $t8 := $AddU128($t7, $t4); + if ($abort_flag) { + assume {:print "$at(104,6078,6079)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(47,23):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := borrow_field>.withdraw($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+12 + $t9 := $ChildMutation($t0, 1, $Dereference($t0)->$withdraw); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).withdraw (u128)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $t0 := $UpdateMutation($t0, $Update'$1_treasury_LinearWithdrawCapability'#0''_withdraw($Dereference($t0), $Dereference($t9))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:155:9+36 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:156:9+5 + assume {:print "$at(104,6096,6101)"} true; + assume {:print "$track_return(47,23,0):", $t6} $t6 == $t6; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:156:9+5 + $temp_0'$1_treasury_LinearWithdrawCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(47,23,0):", $temp_0'$1_treasury_LinearWithdrawCapability'#0''} $temp_0'$1_treasury_LinearWithdrawCapability'#0'' == $temp_0'$1_treasury_LinearWithdrawCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; + assert {:msg "assert_failed(104,6106,6107): function does not abort under this condition"} + !false; + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + $ret0 := $t6; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/treasury.move:157:5+1 + assume {:print "$at(104,6106,6107)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// struct starcoin_coin::DelegatedMintCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:30:5+68 +datatype $1_starcoin_coin_DelegatedMintCapability { + $1_starcoin_coin_DelegatedMintCapability($to: int) +} +function {:inline} $Update'$1_starcoin_coin_DelegatedMintCapability'_to(s: $1_starcoin_coin_DelegatedMintCapability, x: int): $1_starcoin_coin_DelegatedMintCapability { + $1_starcoin_coin_DelegatedMintCapability(x) +} +function $IsValid'$1_starcoin_coin_DelegatedMintCapability'(s: $1_starcoin_coin_DelegatedMintCapability): bool { + $IsValid'address'(s->$to) +} +function {:inline} $IsEqual'$1_starcoin_coin_DelegatedMintCapability'(s1: $1_starcoin_coin_DelegatedMintCapability, s2: $1_starcoin_coin_DelegatedMintCapability): bool { + s1 == s2 +} + +// struct starcoin_coin::Delegations at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:35:5+82 +datatype $1_starcoin_coin_Delegations { + $1_starcoin_coin_Delegations($inner: Vec ($1_starcoin_coin_DelegatedMintCapability)) +} +function {:inline} $Update'$1_starcoin_coin_Delegations'_inner(s: $1_starcoin_coin_Delegations, x: Vec ($1_starcoin_coin_DelegatedMintCapability)): $1_starcoin_coin_Delegations { + $1_starcoin_coin_Delegations(x) +} +function $IsValid'$1_starcoin_coin_Delegations'(s: $1_starcoin_coin_Delegations): bool { + $IsValid'vec'$1_starcoin_coin_DelegatedMintCapability''(s->$inner) +} +function {:inline} $IsEqual'$1_starcoin_coin_Delegations'(s1: $1_starcoin_coin_Delegations, s2: $1_starcoin_coin_Delegations): bool { + $IsEqual'vec'$1_starcoin_coin_DelegatedMintCapability''(s1->$inner, s2->$inner)} +var $1_starcoin_coin_Delegations_$memory: $Memory $1_starcoin_coin_Delegations; + +// struct starcoin_coin::MintCapStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:25:5+74 +datatype $1_starcoin_coin_MintCapStore { + $1_starcoin_coin_MintCapStore($mint_cap: $1_coin_MintCapability'$1_starcoin_coin_STC') +} +function {:inline} $Update'$1_starcoin_coin_MintCapStore'_mint_cap(s: $1_starcoin_coin_MintCapStore, x: $1_coin_MintCapability'$1_starcoin_coin_STC'): $1_starcoin_coin_MintCapStore { + $1_starcoin_coin_MintCapStore(x) +} +function $IsValid'$1_starcoin_coin_MintCapStore'(s: $1_starcoin_coin_MintCapStore): bool { + $IsValid'$1_coin_MintCapability'$1_starcoin_coin_STC''(s->$mint_cap) +} +function {:inline} $IsEqual'$1_starcoin_coin_MintCapStore'(s1: $1_starcoin_coin_MintCapStore, s2: $1_starcoin_coin_MintCapStore): bool { + s1 == s2 +} +var $1_starcoin_coin_MintCapStore_$memory: $Memory $1_starcoin_coin_MintCapStore; + +// struct starcoin_coin::STC at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:23:5+21 +datatype $1_starcoin_coin_STC { + $1_starcoin_coin_STC($dummy_field: bool) +} +function {:inline} $Update'$1_starcoin_coin_STC'_dummy_field(s: $1_starcoin_coin_STC, x: bool): $1_starcoin_coin_STC { + $1_starcoin_coin_STC(x) +} +function $IsValid'$1_starcoin_coin_STC'(s: $1_starcoin_coin_STC): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_starcoin_coin_STC'(s1: $1_starcoin_coin_STC, s2: $1_starcoin_coin_STC): bool { + s1 == s2 +} +var $1_starcoin_coin_STC_$memory: $Memory $1_starcoin_coin_STC; + +// fun starcoin_coin::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+753 +procedure {:timeLimit 80} $1_starcoin_coin_initialize$verify(_$t0: $signer) returns ($ret0: $1_coin_BurnCapability'$1_starcoin_coin_STC', $ret1: $1_coin_MintCapability'$1_starcoin_coin_STC') +{ + // declare local variables + var $t1: $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $t2: $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $t3: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: Vec (int); + var $t10: $1_string_String; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $t17: $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $t18: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $t19: $1_starcoin_coin_MintCapStore; + var $t0: $signer; + var $temp_0'$1_coin_BurnCapability'$1_starcoin_coin_STC'': $1_coin_BurnCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_FreezeCapability'$1_starcoin_coin_STC'': $1_coin_FreezeCapability'$1_starcoin_coin_STC'; + var $temp_0'$1_coin_MintCapability'$1_starcoin_coin_STC'': $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $temp_0'signer': $signer; + var $1_starcoin_coin_MintCapStore_$memory#571: $Memory $1_starcoin_coin_MintCapStore; + var $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#572: $Memory $1_coin_CoinInfo'$1_starcoin_coin_STC'; + var $1_aggregator_factory_AggregatorFactory_$memory#573: $Memory $1_aggregator_factory_AggregatorFactory; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume {:print "$at(57,1351,1352)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: starcoin_coin::MintCapStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0); + ($IsValid'$1_starcoin_coin_MintCapStore'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:40:9+50 + assume ($t4 == $1_signer_$address_of($t0)); + + // @573 := save_mem(aggregator_factory::AggregatorFactory) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + $1_aggregator_factory_AggregatorFactory_$memory#573 := $1_aggregator_factory_AggregatorFactory_$memory; + + // @572 := save_mem(coin::CoinInfo) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#572 := $1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory; + + // @571 := save_mem(starcoin_coin::MintCapStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + $1_starcoin_coin_MintCapStore_$memory#571 := $1_starcoin_coin_MintCapStore_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:40:5+1 + assume {:print "$track_local(48,6,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + assume {:print "$at(57,1464,1527)"} true; + + // assume Identical($t5, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + assume ($t5 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + assume {:print "$at(57,1464,1527)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t6)); + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + assume {:print "$at(57,1464,1527)"} true; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:41:9+63 + assume {:print "$at(57,1464,1527)"} true; + + // $t7 := [83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:45:26+6 + assume {:print "$at(57,1684,1690)"} true; + $t7 := MakeVec3(83, 84, 67); + assume $IsValid'vec'u8''($t7); + + // $t8 := string::utf8($t7) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:45:13+20 + call $t8 := $1_string_utf8($t7); + if ($abort_flag) { + assume {:print "$at(57,1671,1691)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + goto L2; + } + + // $t9 := [83, 84, 67] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:46:26+6 + assume {:print "$at(57,1718,1724)"} true; + $t9 := MakeVec3(83, 84, 67); + assume $IsValid'vec'u8''($t9); + + // $t10 := string::utf8($t9) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:46:13+20 + call $t10 := $1_string_utf8($t9); + if ($abort_flag) { + assume {:print "$at(57,1705,1725)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + goto L2; + } + + // $t11 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:47:13+1 + assume {:print "$at(57,1739,1740)"} true; + $t11 := 9; + assume $IsValid'u8'($t11); + + // $t12 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:48:13+4 + assume {:print "$at(57,1766,1770)"} true; + $t12 := true; + assume $IsValid'bool'($t12); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:444:9+39 + assume {:print "$at(32,19463,19502)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, select type_info::TypeInfo.account_address(type_info::$type_of())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t15 == $1_type_info_$type_of'$1_starcoin_coin_STC'()->$account_address); + + // ($t16, $t17, $t18) := coin::initialize_with_parallelizable_supply($t0, $t8, $t10, $t11, $t12) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:43:48+222 + assume {:print "$at(57,1577,1799)"} true; + call $t16,$t17,$t18 := $1_coin_initialize_with_parallelizable_supply'$1_starcoin_coin_STC'($t0, $t8, $t10, $t11, $t12); + if ($abort_flag) { + assume {:print "$at(57,1577,1799)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[mint_cap]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:43:36+8 + assume {:print "$track_local(48,6,3):", $t18} $t18 == $t18; + + // trace_local[freeze_cap]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:43:24+10 + assume {:print "$track_local(48,6,2):", $t17} $t17 == $t17; + + // trace_local[burn_cap]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:43:14+8 + assume {:print "$track_local(48,6,1):", $t16} $t16 == $t16; + + // $t19 := pack starcoin_coin::MintCapStore($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:53:37+25 + assume {:print "$at(57,1995,2020)"} true; + $t19 := $1_starcoin_coin_MintCapStore($t18); + + // move_to($t19, $t0) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:53:9+7 + if ($ResourceExists($1_starcoin_coin_MintCapStore_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_starcoin_coin_MintCapStore_$memory := $ResourceUpdate($1_starcoin_coin_MintCapStore_$memory, $t0->$addr, $t19); + } + if ($abort_flag) { + assume {:print "$at(57,1967,1974)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + goto L2; + } + + // coin::destroy_freeze_cap($t17) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:55:9+36 + assume {:print "$at(57,2032,2068)"} true; + call $1_coin_destroy_freeze_cap'$1_starcoin_coin_STC'($t17); + if ($abort_flag) { + assume {:print "$at(57,2032,2068)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(48,6):", $t6} $t6 == $t6; + goto L2; + } + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:56:9+20 + assume {:print "$at(57,2078,2098)"} true; + assume {:print "$track_return(48,6,0):", $t16} $t16 == $t16; + + // trace_return[1]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:56:9+20 + assume {:print "$track_return(48,6,1):", $t18} $t18 == $t18; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:57:5+1 + assume {:print "$at(57,2103,2104)"} true; +L1: + + // assert Not(Neq
($t4, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:41:9+38 + assume {:print "$at(58,2073,2111)"} true; + assert {:msg "assert_failed(58,2073,2111): function does not abort under this condition"} + !!$IsEqual'address'($t4, 1); + + // assert Not(Not(string::spec_internal_check_utf8[]([83, 84, 67]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:42:9+52 + assume {:print "$at(58,2120,2172)"} true; + assert {:msg "assert_failed(58,2120,2172): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(MakeVec3(83, 84, 67)); + + // assert Not(Not(string::spec_internal_check_utf8[]([83, 84, 67]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:43:9+52 + assume {:print "$at(58,2181,2233)"} true; + assert {:msg "assert_failed(58,2181,2233): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(MakeVec3(83, 84, 67)); + + // assert Not(exists[@571]($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:44:9+37 + assume {:print "$at(58,2242,2279)"} true; + assert {:msg "assert_failed(58,2242,2279): function does not abort under this condition"} + !$ResourceExists($1_starcoin_coin_MintCapStore_$memory#571, $t4); + + // assert Not(exists[@572]>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:45:9+44 + assume {:print "$at(58,2288,2332)"} true; + assert {:msg "assert_failed(58,2288,2332): function does not abort under this condition"} + !$ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#572, $t4); + + // assert Not(Not(exists[@573]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:46:9+63 + assume {:print "$at(58,2341,2404)"} true; + assert {:msg "assert_failed(58,2341,2404): function does not abort under this condition"} + !!$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#573, $t4); + + // assert exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:48:9+35 + assume {:print "$at(58,2444,2479)"} true; + assert {:msg "assert_failed(58,2444,2479): post-condition does not hold"} + $ResourceExists($1_starcoin_coin_MintCapStore_$memory, $t4); + + // assert Eq>(select starcoin_coin::MintCapStore.mint_cap(global($t4)), pack coin::MintCapability(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:51:9+71 + assume {:print "$at(58,2635,2706)"} true; + assert {:msg "assert_failed(58,2635,2706): post-condition does not hold"} + $IsEqual'$1_coin_MintCapability'$1_starcoin_coin_STC''($ResourceValue($1_starcoin_coin_MintCapStore_$memory, $t4)->$mint_cap, $1_coin_MintCapability'$1_starcoin_coin_STC'(false)); + + // assert exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:52:9+42 + assume {:print "$at(58,2715,2757)"} true; + assert {:msg "assert_failed(58,2715,2757): post-condition does not hold"} + $ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $t4); + + // assert Eq>($t16, pack coin::BurnCapability(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:53:9+43 + assume {:print "$at(58,2766,2809)"} true; + assert {:msg "assert_failed(58,2766,2809): post-condition does not hold"} + $IsEqual'$1_coin_BurnCapability'$1_starcoin_coin_STC''($t16, $1_coin_BurnCapability'$1_starcoin_coin_STC'(false)); + + // assert Eq>($t18, pack coin::MintCapability(false)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:54:9+43 + assume {:print "$at(58,2818,2861)"} true; + assert {:msg "assert_failed(58,2818,2861): post-condition does not hold"} + $IsEqual'$1_coin_MintCapability'$1_starcoin_coin_STC''($t18, $1_coin_MintCapability'$1_starcoin_coin_STC'(false)); + + // return ($t16, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:54:9+43 + $ret0 := $t16; + $ret1 := $t18; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:57:5+1 + assume {:print "$at(57,2103,2104)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Neq
($t4, 0x1), Not(string::spec_internal_check_utf8[]([83, 84, 67]))), Not(string::spec_internal_check_utf8[]([83, 84, 67]))), exists[@571]($t4)), exists[@572]>($t4)), Not(exists[@573]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:37:5+1005 + assume {:print "$at(58,1862,2867)"} true; + assert {:msg "assert_failed(58,1862,2867): abort not covered by any of the `aborts_if` clauses"} + (((((!$IsEqual'address'($t4, 1) || !$1_string_spec_internal_check_utf8(MakeVec3(83, 84, 67))) || !$1_string_spec_internal_check_utf8(MakeVec3(83, 84, 67))) || $ResourceExists($1_starcoin_coin_MintCapStore_$memory#571, $t4)) || $ResourceExists($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory#572, $t4)) || !$ResourceExists($1_aggregator_factory_AggregatorFactory_$memory#573, $t4)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:37:5+1005 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun starcoin_coin::destroy_mint_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+295 +procedure {:timeLimit 80} $1_starcoin_coin_destroy_mint_cap$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $1_starcoin_coin_MintCapStore; + var $t6: $1_coin_MintCapability'$1_starcoin_coin_STC'; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_starcoin_coin_MintCapStore_$memory#577: $Memory $1_starcoin_coin_MintCapStore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume {:print "$at(57,2418,2419)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: starcoin_coin::MintCapStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0); + ($IsValid'$1_starcoin_coin_MintCapStore'($rsc)))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:58:9+50 + assume {:print "$at(58,2905,2955)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // @577 := save_mem(starcoin_coin::MintCapStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume {:print "$at(57,2418,2419)"} true; + $1_starcoin_coin_MintCapStore_$memory#577 := $1_starcoin_coin_MintCapStore_$memory; + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:65:5+1 + assume {:print "$track_local(48,3,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + assume {:print "$at(57,2515,2578)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + assume {:print "$at(57,2515,2578)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + assume {:print "$at(57,2515,2578)"} true; + assume {:print "$track_abort(48,3):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:66:9+63 + assume {:print "$at(57,2515,2578)"} true; + + // $t4 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:67:65+19 + assume {:print "$at(57,2644,2663)"} true; + $t4 := 1; + assume $IsValid'address'($t4); + + // $t5 := move_from($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:67:41+9 + if (!$ResourceExists($1_starcoin_coin_MintCapStore_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_starcoin_coin_MintCapStore_$memory, $t4); + $1_starcoin_coin_MintCapStore_$memory := $ResourceRemove($1_starcoin_coin_MintCapStore_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(57,2620,2629)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(48,3):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := unpack starcoin_coin::MintCapStore($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:67:13+25 + $t6 := $t5->$mint_cap; + + // coin::destroy_mint_cap($t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:68:9+32 + assume {:print "$at(57,2674,2706)"} true; + call $1_coin_destroy_mint_cap'$1_starcoin_coin_STC'($t6); + if ($abort_flag) { + assume {:print "$at(57,2674,2706)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(48,3):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:69:5+1 + assume {:print "$at(57,2712,2713)"} true; +L1: + + // assert Not(Neq
($t1, 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:59:9+38 + assume {:print "$at(58,2964,3002)"} true; + assert {:msg "assert_failed(58,2964,3002): function does not abort under this condition"} + !!$IsEqual'address'($t1, 1); + + // assert Not(Not(exists[@577](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:60:9+53 + assume {:print "$at(58,3011,3064)"} true; + assert {:msg "assert_failed(58,3011,3064): function does not abort under this condition"} + !!$ResourceExists($1_starcoin_coin_MintCapStore_$memory#577, 1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:60:9+53 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:69:5+1 + assume {:print "$at(57,2712,2713)"} true; +L2: + + // assert Or(Neq
($t1, 0x1), Not(exists[@577](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:57:5+197 + assume {:print "$at(58,2873,3070)"} true; + assert {:msg "assert_failed(58,2873,3070): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($t1, 1) || !$ResourceExists($1_starcoin_coin_MintCapStore_$memory#577, 1)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:57:5+197 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_coin::find_delegation [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:137:5+504 +procedure {:timeLimit 80} $1_starcoin_coin_find_delegation$verify(_$t0: int) returns ($ret0: $1_option_Option'u64') +{ + // declare local variables + var $t1: Vec ($1_starcoin_coin_DelegatedMintCapability); + var $t2: int; + var $t3: $1_option_Option'u64'; + var $t4: int; + var $t5: int; + var $t6: $1_starcoin_coin_Delegations; + var $t7: int; + var $t8: Vec ($1_starcoin_coin_DelegatedMintCapability); + var $t9: int; + var $t10: int; + var $t11: $1_option_Option'u64'; + var $t12: bool; + var $t13: $1_starcoin_coin_DelegatedMintCapability; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $1_option_Option'u64'; + var $t19: int; + var $t0: int; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'$1_starcoin_coin_DelegatedMintCapability'': Vec ($1_starcoin_coin_DelegatedMintCapability); + var $1_starcoin_coin_Delegations_$memory#581: $Memory $1_starcoin_coin_Delegations; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:137:5+1 + assume {:print "$at(57,5801,5802)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: starcoin_coin::Delegations: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:137:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_coin_Delegations_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_coin_Delegations_$memory, $a_0); + ($IsValid'$1_starcoin_coin_Delegations'($rsc)))); + + // @581 := save_mem(starcoin_coin::Delegations) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:137:5+1 + $1_starcoin_coin_Delegations_$memory#581 := $1_starcoin_coin_Delegations_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:137:5+1 + assume {:print "$track_local(48,4,0):", $t0} $t0 == $t0; + + // $t5 := 0xa550c18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:138:55+15 + assume {:print "$at(57,5926,5941)"} true; + $t5 := 173345816; + assume $IsValid'address'($t5); + + // $t6 := get_global($t5) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:138:28+13 + if (!$ResourceExists($1_starcoin_coin_Delegations_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_starcoin_coin_Delegations_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(57,5899,5912)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(48,4):", $t7} $t7 == $t7; + goto L9; + } + + // $t8 := get_field.inner($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:138:27+50 + $t8 := $t6->$inner; + + // trace_local[delegations]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:138:13+11 + assume {:print "$track_local(48,4,1):", $t8} $t8 == $t8; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:139:17+1 + assume {:print "$at(57,5966,5967)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:139:13+1 + assume {:print "$track_local(48,4,2):", $t9} $t9 == $t9; + + // $t10 := vector::length($t8) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:140:19+27 + assume {:print "$at(57,5987,6014)"} true; + call $t10 := $1_vector_length'$1_starcoin_coin_DelegatedMintCapability'($t8); + if ($abort_flag) { + assume {:print "$at(57,5987,6014)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(48,4):", $t7} $t7 == $t7; + goto L9; + } + + // trace_local[len]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:140:13+3 + assume {:print "$track_local(48,4,4):", $t10} $t10 == $t10; + + // $t11 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:21+14 + assume {:print "$at(57,6036,6050)"} true; + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:21+14 + assume ($IsValid'$1_option_Option'u64''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:21+14 + assume $IsEqual'$1_option_Option'u64''($t11, $1_option_spec_none'u64'()); + + // $t11 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:21+14 + + // $t3 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:13+5 + $t3 := $t11; + + // trace_local[index]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:141:13+5 + assume {:print "$track_local(48,4,3):", $t11} $t11 == $t11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume {:print "$at(57,6067,6068)"} true; +L6: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume {:print "$at(57,6067,6068)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'u64'($t2); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'$1_starcoin_coin_DelegatedMintCapability'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'address'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'bool'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'u64'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume $IsValid'u64'($t17); + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume {:print "$info(): enter loop, variable(s) i havocked and reassigned"} true; + assume {:print "$track_local(48,4,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:16+1 + assume !$abort_flag; + + // $t12 := <($t2, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:18+1 + call $t12 := $Lt($t2, $t10); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:143:42+11 + assume {:print "$at(57,6119,6130)"} true; +L2: + + // $t13 := vector::borrow($t8, $t2) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:143:27+30 + assume {:print "$at(57,6104,6134)"} true; + call $t13 := $1_vector_borrow'$1_starcoin_coin_DelegatedMintCapability'($t8, $t2); + if ($abort_flag) { + assume {:print "$at(57,6104,6134)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(48,4):", $t7} $t7 == $t7; + goto L9; + } + + // $t14 := get_field.to($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:144:17+10 + assume {:print "$at(57,6152,6162)"} true; + $t14 := $t13->$to; + + // $t15 := ==($t14, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:144:28+2 + $t15 := $IsEqual'address'($t14, $t0); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:144:13+102 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:17+23 + assume {:print "$at(57,6190,6213)"} true; +L4: + + // $t18 := opaque begin: option::some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:25+15 + assume {:print "$at(57,6198,6213)"} true; + + // $t19 := copy($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:25+15 + $t19 := $t2; + + // assume And(WellFormed($t18), Le(Len(select option::Option.vec($t18)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:25+15 + assume ($IsValid'$1_option_Option'u64''($t18) && (LenVec($t18->$vec) <= 1)); + + // assume Eq>($t18, option::spec_some($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:25+15 + assume $IsEqual'$1_option_Option'u64''($t18, $1_option_spec_some'u64'($t19)); + + // $t18 := opaque end: option::some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:25+15 + + // $t3 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:17+5 + $t3 := $t18; + + // trace_local[index]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:145:17+5 + assume {:print "$track_local(48,4,3):", $t18} $t18 == $t18; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:146:17+5 + assume {:print "$at(57,6231,6236)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:148:17+1 + assume {:print "$at(57,6268,6269)"} true; +L3: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:148:21+1 + assume {:print "$at(57,6272,6273)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := +($t2, $t16) on_abort goto L9 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:148:19+1 + call $t17 := $AddU64($t2, $t16); + if ($abort_flag) { + assume {:print "$at(57,6270,6271)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(48,4):", $t7} $t7 == $t7; + goto L9; + } + + // trace_local[i]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:148:13+1 + assume {:print "$track_local(48,4,2):", $t17} $t17 == $t17; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:148:22+1 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:150:9+5 + assume {:print "$at(57,6294,6299)"} true; +L5: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:150:9+5 + assume {:print "$at(57,6294,6299)"} true; + assume {:print "$track_return(48,4,0):", $t3} $t3 == $t3; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:150:9+5 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 + assume {:print "$at(57,6060,6284)"} true; +L0: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 + assume {:print "$at(57,6060,6284)"} true; + goto L5; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:142:9+224 + assume {:print "$at(57,6060,6284)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:151:5+1 + assume {:print "$at(57,6304,6305)"} true; +L8: + + // assert Not(Not(exists[@581](0xa550c18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:88:9+48 + assume {:print "$at(58,3740,3788)"} true; + assert {:msg "assert_failed(58,3740,3788): function does not abort under this condition"} + !!$ResourceExists($1_starcoin_coin_Delegations_$memory#581, 173345816); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:88:9+48 + $ret0 := $t3; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:151:5+1 + assume {:print "$at(57,6304,6305)"} true; +L9: + + // assert Not(exists[@581](0xa550c18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:87:5+113 + assume {:print "$at(58,3681,3794)"} true; + assert {:msg "assert_failed(58,3681,3794): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_starcoin_coin_Delegations_$memory#581, 173345816); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.spec.move:87:5+113 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun starcoin_coin::has_mint_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+120 +procedure {:timeLimit 80} $1_starcoin_coin_has_mint_capability$verify(_$t0: $signer) returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t0: $signer; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+1 + assume {:print "$at(57,2110,2111)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: starcoin_coin::MintCapStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_coin_MintCapStore_$memory, $a_0); + ($IsValid'$1_starcoin_coin_MintCapStore'($rsc)))); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+1 + assume {:print "$track_local(48,5,0):", $t0} $t0 == $t0; + + // $t1 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:60:30+27 + assume {:print "$at(57,2196,2223)"} true; + call $t1 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(57,2196,2223)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(48,5):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:60:9+6 + $t3 := $ResourceExists($1_starcoin_coin_MintCapStore_$memory, $t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:60:9+49 + assume {:print "$track_return(48,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:61:5+1 + assume {:print "$at(57,2229,2230)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:61:5+1 + assume {:print "$at(57,2229,2230)"} true; + assert {:msg "assert_failed(57,2229,2230): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:61:5+1 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:61:5+1 +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+120 + assume {:print "$at(57,2110,2230)"} true; + assert {:msg "assert_failed(57,2110,2230): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_coin.move:59:5+120 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:8:10+111 +function {:inline} $1_on_chain_config_spec_get'#0'($1_on_chain_config_Config'#0'_$memory: $Memory $1_on_chain_config_Config'#0', addr: int): #0 { + $ResourceValue($1_on_chain_config_Config'#0'_$memory, addr)->$payload +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:56:10+169 +function {:inline} $1_on_chain_config_spec_cap'#0'($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0', addr: int): $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'' { + $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, addr)->$cap +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +function {:inline} $1_on_chain_config_$get_by_address'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory: $Memory $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig', addr: int): $1_stc_transaction_timeout_config_TransactionTimeoutConfig { + $ResourceValue($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, addr)->$payload +} + +// struct on_chain_config::Config> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''($payload: $1_dao_DaoConfig'#0') +} +function {:inline} $Update'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''_payload(s: $1_on_chain_config_Config'$1_dao_DaoConfig'#0'', x: $1_dao_DaoConfig'#0'): $1_on_chain_config_Config'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''(x) +} +function $IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(s: $1_on_chain_config_Config'$1_dao_DaoConfig'#0''): bool { + $IsValid'$1_dao_DaoConfig'#0''(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''(s1: $1_on_chain_config_Config'$1_dao_DaoConfig'#0'', s2: $1_on_chain_config_Config'$1_dao_DaoConfig'#0''): bool { + s1 == s2 +} +var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + +// struct on_chain_config::Config at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'$1_block_reward_config_RewardConfig' { + $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'($payload: $1_block_reward_config_RewardConfig) +} +function {:inline} $Update'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''_payload(s: $1_on_chain_config_Config'$1_block_reward_config_RewardConfig', x: $1_block_reward_config_RewardConfig): $1_on_chain_config_Config'$1_block_reward_config_RewardConfig' { + $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'(x) +} +function $IsValid'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(s: $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'): bool { + $IsValid'$1_block_reward_config_RewardConfig'(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''(s1: $1_on_chain_config_Config'$1_block_reward_config_RewardConfig', s2: $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'): bool { + s1 == s2 +} +var $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory: $Memory $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'; + +// struct on_chain_config::Config at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig' { + $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'($payload: $1_consensus_config_ConsensusConfig) +} +function {:inline} $Update'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''_payload(s: $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig', x: $1_consensus_config_ConsensusConfig): $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig' { + $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'(x) +} +function $IsValid'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(s: $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'): bool { + $IsValid'$1_consensus_config_ConsensusConfig'(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''(s1: $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig', s2: $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'): bool { + s1 == s2 +} +var $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory: $Memory $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'; + +// struct on_chain_config::Config at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'$1_stc_version_Version' { + $1_on_chain_config_Config'$1_stc_version_Version'($payload: $1_stc_version_Version) +} +function {:inline} $Update'$1_on_chain_config_Config'$1_stc_version_Version''_payload(s: $1_on_chain_config_Config'$1_stc_version_Version', x: $1_stc_version_Version): $1_on_chain_config_Config'$1_stc_version_Version' { + $1_on_chain_config_Config'$1_stc_version_Version'(x) +} +function $IsValid'$1_on_chain_config_Config'$1_stc_version_Version''(s: $1_on_chain_config_Config'$1_stc_version_Version'): bool { + $IsValid'$1_stc_version_Version'(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'$1_stc_version_Version''(s1: $1_on_chain_config_Config'$1_stc_version_Version', s2: $1_on_chain_config_Config'$1_stc_version_Version'): bool { + s1 == s2 +} +var $1_on_chain_config_Config'$1_stc_version_Version'_$memory: $Memory $1_on_chain_config_Config'$1_stc_version_Version'; + +// struct on_chain_config::Config at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig' { + $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'($payload: $1_stc_transaction_timeout_config_TransactionTimeoutConfig) +} +function {:inline} $Update'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''_payload(s: $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig', x: $1_stc_transaction_timeout_config_TransactionTimeoutConfig): $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig' { + $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(x) +} +function $IsValid'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(s: $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'): bool { + $IsValid'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''(s1: $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig', s2: $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'): bool { + s1 == s2 +} +var $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory: $Memory $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'; + +// struct on_chain_config::Config<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:12:5+80 +datatype $1_on_chain_config_Config'#0' { + $1_on_chain_config_Config'#0'($payload: #0) +} +function {:inline} $Update'$1_on_chain_config_Config'#0''_payload(s: $1_on_chain_config_Config'#0', x: #0): $1_on_chain_config_Config'#0' { + $1_on_chain_config_Config'#0'(x) +} +function $IsValid'$1_on_chain_config_Config'#0''(s: $1_on_chain_config_Config'#0'): bool { + $IsValid'#0'(s->$payload) +} +function {:inline} $IsEqual'$1_on_chain_config_Config'#0''(s1: $1_on_chain_config_Config'#0', s2: $1_on_chain_config_Config'#0'): bool { + s1 == s2 +} +var $1_on_chain_config_Config'#0'_$memory: $Memory $1_on_chain_config_Config'#0'; + +// struct on_chain_config::ConfigChangeEvent> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:26:5+144 +datatype $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''($account_address: int, $value: $1_dao_DaoConfig'#0') +} +function {:inline} $Update'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''_account_address(s: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'', x: int): $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''(x, s->$value) +} +function {:inline} $Update'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''_value(s: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'', x: $1_dao_DaoConfig'#0'): $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''(s->$account_address, x) +} +function $IsValid'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(s: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''): bool { + $IsValid'address'(s->$account_address) + && $IsValid'$1_dao_DaoConfig'#0''(s->$value) +} +function {:inline} $IsEqual'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''(s1: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'', s2: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''): bool { + s1 == s2 +} + +// struct on_chain_config::ConfigChangeEvent<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:26:5+144 +datatype $1_on_chain_config_ConfigChangeEvent'#0' { + $1_on_chain_config_ConfigChangeEvent'#0'($account_address: int, $value: #0) +} +function {:inline} $Update'$1_on_chain_config_ConfigChangeEvent'#0''_account_address(s: $1_on_chain_config_ConfigChangeEvent'#0', x: int): $1_on_chain_config_ConfigChangeEvent'#0' { + $1_on_chain_config_ConfigChangeEvent'#0'(x, s->$value) +} +function {:inline} $Update'$1_on_chain_config_ConfigChangeEvent'#0''_value(s: $1_on_chain_config_ConfigChangeEvent'#0', x: #0): $1_on_chain_config_ConfigChangeEvent'#0' { + $1_on_chain_config_ConfigChangeEvent'#0'(s->$account_address, x) +} +function $IsValid'$1_on_chain_config_ConfigChangeEvent'#0''(s: $1_on_chain_config_ConfigChangeEvent'#0'): bool { + $IsValid'address'(s->$account_address) + && $IsValid'#0'(s->$value) +} +function {:inline} $IsEqual'$1_on_chain_config_ConfigChangeEvent'#0''(s1: $1_on_chain_config_ConfigChangeEvent'#0', s2: $1_on_chain_config_ConfigChangeEvent'#0'): bool { + s1 == s2 +} + +// struct on_chain_config::ModifyConfigCapability> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:15:5+183 +datatype $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''($account_address: int, $events: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''') +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''_account_address(s: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', x: int): $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''(x, s->$events) +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''_events(s: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', x: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''): $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''(s->$account_address, x) +} +function $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(s: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): bool { + $IsValid'address'(s->$account_address) + && $IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''''(s->$events) +} +function {:inline} $IsEqual'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''(s1: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'', s2: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''): bool { + s1 == s2 +} + +// struct on_chain_config::ModifyConfigCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:15:5+183 +datatype $1_on_chain_config_ModifyConfigCapability'#0' { + $1_on_chain_config_ModifyConfigCapability'#0'($account_address: int, $events: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'') +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapability'#0''_account_address(s: $1_on_chain_config_ModifyConfigCapability'#0', x: int): $1_on_chain_config_ModifyConfigCapability'#0' { + $1_on_chain_config_ModifyConfigCapability'#0'(x, s->$events) +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapability'#0''_events(s: $1_on_chain_config_ModifyConfigCapability'#0', x: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''): $1_on_chain_config_ModifyConfigCapability'#0' { + $1_on_chain_config_ModifyConfigCapability'#0'(s->$account_address, x) +} +function $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''(s: $1_on_chain_config_ModifyConfigCapability'#0'): bool { + $IsValid'address'(s->$account_address) + && $IsValid'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0'''(s->$events) +} +function {:inline} $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''(s1: $1_on_chain_config_ModifyConfigCapability'#0', s2: $1_on_chain_config_ModifyConfigCapability'#0'): bool { + s1 == s2 +} + +// struct on_chain_config::ModifyConfigCapabilityHolder> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:21:5+158 +datatype $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''($cap: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''') +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''_cap(s: $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'', x: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''): $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'' { + $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''(x) +} +function $IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(s: $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''): bool { + $IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s->$cap) +} +function {:inline} $IsEqual'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''(s1: $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'', s2: $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''): bool { + $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''(s1->$cap, s2->$cap)} +var $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''; + +// struct on_chain_config::ModifyConfigCapabilityHolder<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:21:5+158 +datatype $1_on_chain_config_ModifyConfigCapabilityHolder'#0' { + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'($cap: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'') +} +function {:inline} $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''_cap(s: $1_on_chain_config_ModifyConfigCapabilityHolder'#0', x: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''): $1_on_chain_config_ModifyConfigCapabilityHolder'#0' { + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'(x) +} +function $IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(s: $1_on_chain_config_ModifyConfigCapabilityHolder'#0'): bool { + $IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(s->$cap) +} +function {:inline} $IsEqual'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''(s1: $1_on_chain_config_ModifyConfigCapabilityHolder'#0', s2: $1_on_chain_config_ModifyConfigCapabilityHolder'#0'): bool { + $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''(s1->$cap, s2->$cap)} +var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + +// fun on_chain_config::set [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+691 +procedure {:timeLimit 80} $1_on_chain_config_set$verify(_$t0: $signer, _$t1: #0) returns () +{ + // declare local variables + var $t2: $Mutation ($1_on_chain_config_ModifyConfigCapabilityHolder'#0'); + var $t3: int; + var $t4: int; + var $t5: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_on_chain_config_ModifyConfigCapabilityHolder'#0'); + var $t12: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''); + var $t17: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapabilityHolder'#0'': $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#584: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume {:print "$at(77,1938,1939)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder<#0>: ResourceDomain>(): And(WellFormed($rsc), Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:30:9+39 + assume {:print "$at(78,844,883)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, on_chain_config::spec_cap<#0>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:31:9+42 + assume {:print "$at(78,892,934)"} true; + assume ($t5 == $1_on_chain_config_spec_cap'#0'($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t4)); + + // @584 := save_mem(on_chain_config::ModifyConfigCapabilityHolder<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume {:print "$at(77,1938,1939)"} true; + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#584 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume {:print "$track_local(49,9,0):", $t0} $t0 == $t0; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:47:5+1 + assume {:print "$track_local(49,9,1):", $t1} $t1 == $t1; + + // $t6 := signer::address_of($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:51:30+27 + assume {:print "$at(77,2127,2154)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,2127,2154)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[signer_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:51:13+14 + assume {:print "$track_local(49,9,3):", $t6} $t6 == $t6; + + // $t8 := exists>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:53:13+6 + assume {:print "$at(77,2185,2191)"} true; + $t8 := $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 + assume {:print "$at(77,2164,2331)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 + assume {:print "$at(77,2164,2331)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:54:39+29 + assume {:print "$at(77,2290,2319)"} true; +L0: + + // $t9 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:54:39+29 + assume {:print "$at(77,2290,2319)"} true; + $t9 := 101; + assume $IsValid'u64'($t9); + + // $t10 := error::resource_exhausted($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:54:13+56 + call $t10 := $1_error_resource_exhausted($t9); + if ($abort_flag) { + assume {:print "$at(77,2264,2320)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 + assume {:print "$at(77,2164,2331)"} true; + assume {:print "$track_abort(49,9):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 + $t7 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:52:9+167 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:56:87+14 + assume {:print "$at(77,2419,2433)"} true; +L2: + + // $t11 := borrow_global>($t6) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:56:26+17 + assume {:print "$at(77,2358,2375)"} true; + if (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(77,2358,2375)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[cap_holder]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:56:13+10 + $temp_0'$1_on_chain_config_ModifyConfigCapabilityHolder'#0'' := $Dereference($t11); + assume {:print "$track_local(49,9,2):", $temp_0'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapabilityHolder'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''; + + // $t12 := get_field>.cap($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:33+15 + assume {:print "$at(77,2468,2483)"} true; + $t12 := $Dereference($t11)->$cap; + + // $t13 := opaque begin: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:17+32 + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:17+32 + assume $IsValid'bool'($t13); + + // assume Eq($t13, option::spec_is_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:17+32 + assume $IsEqual'bool'($t13, $1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''($t12)); + + // $t13 := opaque end: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:17+32 + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + assume {:print "$at(77,2444,2543)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 +L3: + + // assert Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($t11))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t11)->$cap->$vec) <= 1); + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + assume {:print "$at(77,2444,2543)"} true; + + // $t14 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:77+29 + $t14 := 101; + assume $IsValid'u64'($t14); + + // $t15 := error::resource_exhausted($t14) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:51+56 + call $t15 := $1_error_resource_exhausted($t14); + if ($abort_flag) { + assume {:print "$at(77,2486,2542)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + assume {:print "$at(77,2444,2543)"} true; + assume {:print "$track_abort(49,9):", $t15} $t15 == $t15; + + // $t7 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + $t7 := $t15; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:57:9+99 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:53+10 + assume {:print "$at(77,2597,2607)"} true; +L5: + + // $t16 := borrow_field>.cap($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:48+19 + assume {:print "$at(77,2592,2611)"} true; + $t16 := $ChildMutation($t11, 0, $Dereference($t11)->$cap); + + // $t17 := option::borrow_mut>($t16) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:29+39 + call $t17,$t16 := $1_option_borrow_mut'$1_on_chain_config_ModifyConfigCapability'#0''($t16); + if ($abort_flag) { + assume {:print "$at(77,2573,2612)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // on_chain_config::set_with_capability<#0>($t17, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:9+69 + call $t17 := $1_on_chain_config_set_with_capability'#0'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(77,2553,2622)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(49,9):", $t7} $t7 == $t7; + goto L7; + } + + // write_back[Reference($t16).vec (vector>)/[]]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:9+69 + $t16 := $UpdateMutation($t16, (var $$sel0 := $Dereference($t16)->$vec; $Update'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''_vec($Dereference($t16), UpdateVec($$sel0, ReadVec($t17->p, LenVec($t16->p) + 1), $Dereference($t17))))); + + // write_back[Reference($t11).cap (option::Option>)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:9+69 + $t11 := $UpdateMutation($t11, $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''_cap($Dereference($t11), $Dereference($t16))); + + // assert Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($t11))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t11)->$cap->$vec) <= 1); + + // write_back[on_chain_config::ModifyConfigCapabilityHolder<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:58:9+69 + assume {:print "$at(77,2553,2622)"} true; + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:59:5+1 + assume {:print "$at(77,2628,2629)"} true; +L6: + + // assert Not(Not(exists[@584]>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:34:9+67 + assume {:print "$at(78,1046,1113)"} true; + assert {:msg "assert_failed(78,1046,1113): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#584, $t4); + + // assert Not(option::$is_none[]>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:35:9+72 + assume {:print "$at(78,1122,1194)"} true; + assert {:msg "assert_failed(78,1122,1194): function does not abort under this condition"} + !$1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''($t5); + + // assert exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:36:9+64 + assume {:print "$at(78,1203,1267)"} true; + assert {:msg "assert_failed(78,1203,1267): post-condition does not hold"} + $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t4); + + // assert exists>(select on_chain_config::ModifyConfigCapability.account_address>(option::$borrow>(on_chain_config::spec_cap<#0>(signer::$address_of($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:43:9+210 + assume {:print "$at(78,1688,1898)"} true; + assert {:msg "assert_failed(78,1688,1898): post-condition does not hold"} + $ResourceExists($1_on_chain_config_Config'#0'_$memory, $1_option_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''($1_on_chain_config_spec_cap'#0'($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0)))->$account_address); + + // assert Eq<#0>(select on_chain_config::Config.payload>(global>(select on_chain_config::ModifyConfigCapability.account_address>(option::$borrow>(on_chain_config::spec_cap<#0>(signer::$address_of($t0)))))), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:48:9+229 + assume {:print "$at(78,1907,2136)"} true; + assert {:msg "assert_failed(78,1907,2136): post-condition does not hold"} + $IsEqual'#0'($ResourceValue($1_on_chain_config_Config'#0'_$memory, $1_option_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''($1_on_chain_config_spec_cap'#0'($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0)))->$account_address)->$payload, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:48:9+229 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:59:5+1 + assume {:print "$at(77,2628,2629)"} true; +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:59:5+1 + assume {:print "$at(77,2628,2629)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun on_chain_config::account_address> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:130:5+148 +procedure {:inline 1} $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''(_$t0: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:130:5+1 + assume {:print "$at(77,5712,5713)"} true; + assume {:print "$track_local(49,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:131:9+19 + assume {:print "$at(77,5835,5854)"} true; + $t1 := $t0->$account_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:131:9+19 + assume {:print "$track_return(49,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:132:5+1 + assume {:print "$at(77,5859,5860)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:132:5+1 + assume {:print "$at(77,5859,5860)"} true; + $ret0 := $t1; + return; + +} + +// fun on_chain_config::account_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:130:5+148 +procedure {:timeLimit 80} $1_on_chain_config_account_address$verify(_$t0: $1_on_chain_config_ModifyConfigCapability'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:130:5+1 + assume {:print "$at(77,5712,5713)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:130:5+1 + assume {:print "$track_local(49,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:131:9+19 + assume {:print "$at(77,5835,5854)"} true; + $t1 := $t0->$account_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:131:9+19 + assume {:print "$track_return(49,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:132:5+1 + assume {:print "$at(77,5859,5860)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:145:9+16 + assume {:print "$at(78,5928,5944)"} true; + assert {:msg "assert_failed(78,5928,5944): function does not abort under this condition"} + !false; + + // assert Eq
($t1, select on_chain_config::ModifyConfigCapability.account_address>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:146:9+38 + assume {:print "$at(78,5953,5991)"} true; + assert {:msg "assert_failed(78,5953,5991): post-condition does not hold"} + $IsEqual'address'($t1, $t0->$account_address); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:146:9+38 + $ret0 := $t1; + return; + +} + +// fun on_chain_config::config_exist_by_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:41:5+139 +procedure {:timeLimit 80} $1_on_chain_config_config_exist_by_address$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:41:5+1 + assume {:print "$at(77,1715,1716)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:41:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:41:5+1 + assume {:print "$track_local(49,1,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:42:9+6 + assume {:print "$at(77,1815,1821)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:42:9+33 + assume {:print "$track_return(49,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:43:5+1 + assume {:print "$at(77,1853,1854)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:19:9+16 + assume {:print "$at(78,573,589)"} true; + assert {:msg "assert_failed(78,573,589): function does not abort under this condition"} + !false; + + // assert Eq($t1, exists>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:20:9+52 + assume {:print "$at(78,598,650)"} true; + assert {:msg "assert_failed(78,598,650): post-condition does not hold"} + $IsEqual'bool'($t1, $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:20:9+52 + $ret0 := $t1; + return; + +} + +// fun on_chain_config::destroy_modify_config_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:121:5+253 +procedure {:timeLimit 80} $1_on_chain_config_destroy_modify_config_capability$verify(_$t0: $1_on_chain_config_ModifyConfigCapability'#0') returns () +{ + // declare local variables + var $t1: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $t2: int; + var $t3: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $t4: int; + var $t0: $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''': $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:121:5+1 + assume {:print "$at(77,5389,5390)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:121:5+1 + assume {:print "$track_local(49,2,0):", $t0} $t0 == $t0; + + // ($t2, $t3) := unpack on_chain_config::ModifyConfigCapability<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:124:13+53 + assume {:print "$at(77,5538,5591)"} true; + $t2 := $t0->$account_address; + $t3 := $t0->$events; + + // trace_local[events]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:124:58+6 + assume {:print "$track_local(49,2,1):", $t3} $t3 == $t3; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:124:55+1 + + // event::destroy_handle>($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:125:9+29 + assume {:print "$at(77,5607,5636)"} true; + call $1_event_destroy_handle'$1_on_chain_config_ConfigChangeEvent'#0''($t3); + if ($abort_flag) { + assume {:print "$at(77,5607,5636)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,2):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:126:5+1 + assume {:print "$at(77,5641,5642)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:141:9+16 + assume {:print "$at(78,5869,5885)"} true; + assert {:msg "assert_failed(78,5869,5885): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:141:9+16 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:126:5+1 + assume {:print "$at(77,5641,5642)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:140:5+70 + assume {:print "$at(78,5821,5891)"} true; + assert {:msg "assert_failed(78,5821,5891): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:140:5+70 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::emit_config_change_event> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+383 +procedure {:inline 1} $1_on_chain_config_emit_config_change_event'$1_dao_DaoConfig'#0''(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: $1_dao_DaoConfig'#0') returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: $Mutation ($1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''); + var $t3: int; + var $t4: $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$at(77,5902,5903)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$track_local(49,3,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field>.events($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:140:13+15 + assume {:print "$at(77,6128,6143)"} true; + $t2 := $ChildMutation($t0, 1, $Dereference($t0)->$events); + + // $t3 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:142:34+19 + assume {:print "$at(77,6210,6229)"} true; + $t3 := $Dereference($t0)->$account_address; + + // $t4 := pack on_chain_config::ConfigChangeEvent<#0>($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:141:13+110 + assume {:print "$at(77,6157,6267)"} true; + $t4 := $1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0''($t3, $t1); + + // opaque begin: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + assume {:print "$at(77,6065,6278)"} true; + + // opaque end: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + + // write_back[Reference($t0).events (event::EventHandle>)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $t0 := $UpdateMutation($t0, $Update'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''_events($Dereference($t0), $Dereference($t2))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:145:10+1 + assume {:print "$at(77,6278,6279)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:146:5+1 + assume {:print "$at(77,6284,6285)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:146:5+1 + assume {:print "$at(77,6284,6285)"} true; + $ret0 := $t0; + return; + +} + +// fun on_chain_config::emit_config_change_event<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+383 +procedure {:inline 1} $1_on_chain_config_emit_config_change_event'#0'(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0')) +{ + // declare local variables + var $t2: $Mutation ($1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''); + var $t3: int; + var $t4: $1_on_chain_config_ConfigChangeEvent'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$at(77,5902,5903)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$track_local(49,3,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field>.events($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:140:13+15 + assume {:print "$at(77,6128,6143)"} true; + $t2 := $ChildMutation($t0, 1, $Dereference($t0)->$events); + + // $t3 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:142:34+19 + assume {:print "$at(77,6210,6229)"} true; + $t3 := $Dereference($t0)->$account_address; + + // $t4 := pack on_chain_config::ConfigChangeEvent<#0>($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:141:13+110 + assume {:print "$at(77,6157,6267)"} true; + $t4 := $1_on_chain_config_ConfigChangeEvent'#0'($t3, $t1); + + // opaque begin: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + assume {:print "$at(77,6065,6278)"} true; + + // opaque end: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + + // write_back[Reference($t0).events (event::EventHandle>)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $t0 := $UpdateMutation($t0, $Update'$1_on_chain_config_ModifyConfigCapability'#0''_events($Dereference($t0), $Dereference($t2))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:145:10+1 + assume {:print "$at(77,6278,6279)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:146:5+1 + assume {:print "$at(77,6284,6285)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:146:5+1 + assume {:print "$at(77,6284,6285)"} true; + $ret0 := $t0; + return; + +} + +// fun on_chain_config::emit_config_change_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+383 +procedure {:timeLimit 80} $1_on_chain_config_emit_config_change_event$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0')) +{ + // declare local variables + var $t2: $Mutation ($1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''); + var $t3: int; + var $t4: $1_on_chain_config_ConfigChangeEvent'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$at(77,5902,5903)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume $IsValid'#0'($t1); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:135:5+1 + assume {:print "$track_local(49,3,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field>.events($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:140:13+15 + assume {:print "$at(77,6128,6143)"} true; + $t2 := $ChildMutation($t0, 1, $Dereference($t0)->$events); + + // $t3 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:142:34+19 + assume {:print "$at(77,6210,6229)"} true; + $t3 := $Dereference($t0)->$account_address; + + // $t4 := pack on_chain_config::ConfigChangeEvent<#0>($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:141:13+110 + assume {:print "$at(77,6157,6267)"} true; + $t4 := $1_on_chain_config_ConfigChangeEvent'#0'($t3, $t1); + + // opaque begin: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + assume {:print "$at(77,6065,6278)"} true; + + // opaque end: event::emit_event>($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + + // write_back[Reference($t0).events (event::EventHandle>)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $t0 := $UpdateMutation($t0, $Update'$1_on_chain_config_ModifyConfigCapability'#0''_events($Dereference($t0), $Dereference($t2))); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:139:9+213 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:145:10+1 + assume {:print "$at(77,6278,6279)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,3,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:146:5+1 + assume {:print "$at(77,6284,6285)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:150:9+16 + assume {:print "$at(78,6043,6059)"} true; + assert {:msg "assert_failed(78,6043,6059): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:150:9+16 + $ret0 := $t0; + return; + +} + +// fun on_chain_config::extract_modify_config_capability<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+574 +procedure {:inline 1} $1_on_chain_config_extract_modify_config_capability'#0'(_$t0: $signer) returns ($ret0: $1_on_chain_config_ModifyConfigCapability'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_on_chain_config_ModifyConfigCapabilityHolder'#0'); + var $t9: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''); + var $t10: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t11: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t12: bool; + var $t0: $signer; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''': $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:121:9+42 + assume {:print "$at(78,4807,4849)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+1 + assume {:print "$at(77,4368,4369)"} true; + assume {:print "$track_local(49,4,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:102:30+27 + assume {:print "$at(77,4585,4612)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,4585,4612)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[signer_address]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:102:13+14 + assume {:print "$track_local(49,4,1):", $t3} $t3 == $t3; + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:104:13+6 + assume {:print "$at(77,4643,4649)"} true; + $t5 := $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:38+29 + assume {:print "$at(77,4747,4776)"} true; +L0: + + // $t6 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:38+29 + assume {:print "$at(77,4747,4776)"} true; + $t6 := 101; + assume $IsValid'u64'($t6); + + // $t7 := error::permission_denied($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:13+55 + call $t7 := $1_error_permission_denied($t6); + if ($abort_flag) { + assume {:print "$at(77,4722,4777)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + assume {:print "$track_abort(49,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:107:87+14 + assume {:print "$at(77,4875,4889)"} true; +L2: + + // $t8 := borrow_global>($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:107:26+17 + assume {:print "$at(77,4814,4831)"} true; + if (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(77,4814,4831)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t9 := borrow_field>.cap($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:25+19 + assume {:print "$at(77,4916,4935)"} true; + $t9 := $ChildMutation($t8, 0, $Dereference($t8)->$cap); + + // $t10 := opaque begin: option::extract>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + + // $t11 := read_ref($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + $t11 := $Dereference($t9); + + // assume Identical($t12, option::spec_is_none>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume ($t12 == $1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9))); + + // if ($t12) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + if ($t12) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 +L6: + + // assume And(option::spec_is_none>($t9), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + assume ($1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9)) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 +L5: + + // $t9 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + havoc $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + $t9 := $UpdateMutation($t9, $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''); + + // assume And(WellFormed($t9), Le(Len>(select option::Option.vec($t9)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($Dereference($t9)) && (LenVec($Dereference($t9)->$vec) <= 1)); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($t10); + + // assume Eq>($t10, option::spec_borrow>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''($t10, $1_option_spec_borrow'$1_on_chain_config_ModifyConfigCapability'#0''($t11)); + + // assume option::spec_is_none>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9)); + + // $t10 := opaque end: option::extract>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + + // write_back[Reference($t8).cap (option::Option>)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + $t8 := $UpdateMutation($t8, $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''_cap($Dereference($t8), $Dereference($t9))); + + // pack_ref_deep($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + + // write_back[on_chain_config::ModifyConfigCapabilityHolder<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$track_return(49,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 + assume {:print "$at(77,4941,4942)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 + assume {:print "$at(77,4941,4942)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 + assume {:print "$at(77,4941,4942)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t8) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun on_chain_config::extract_modify_config_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+574 +procedure {:timeLimit 80} $1_on_chain_config_extract_modify_config_capability$verify(_$t0: $signer) returns ($ret0: $1_on_chain_config_ModifyConfigCapability'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_on_chain_config_ModifyConfigCapabilityHolder'#0'); + var $t9: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''); + var $t10: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t11: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t12: bool; + var $t0: $signer; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''': $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+1 + assume {:print "$at(77,4368,4369)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder<#0>: ResourceDomain>(): And(WellFormed($rsc), Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:121:9+42 + assume {:print "$at(78,4807,4849)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // @585 := save_mem(on_chain_config::ModifyConfigCapabilityHolder<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+1 + assume {:print "$at(77,4368,4369)"} true; + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:99:5+1 + assume {:print "$track_local(49,4,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:102:30+27 + assume {:print "$at(77,4585,4612)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,4585,4612)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[signer_address]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:102:13+14 + assume {:print "$track_local(49,4,1):", $t3} $t3 == $t3; + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:104:13+6 + assume {:print "$at(77,4643,4649)"} true; + $t5 := $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:38+29 + assume {:print "$at(77,4747,4776)"} true; +L0: + + // $t6 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:38+29 + assume {:print "$at(77,4747,4776)"} true; + $t6 := 101; + assume $IsValid'u64'($t6); + + // $t7 := error::permission_denied($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:105:13+55 + call $t7 := $1_error_permission_denied($t6); + if ($abort_flag) { + assume {:print "$at(77,4722,4777)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + assume {:print "$at(77,4622,4787)"} true; + assume {:print "$track_abort(49,4):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:103:9+165 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:107:87+14 + assume {:print "$at(77,4875,4889)"} true; +L2: + + // $t8 := borrow_global>($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:107:26+17 + assume {:print "$at(77,4814,4831)"} true; + if (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(77,4814,4831)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t9 := borrow_field>.cap($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:25+19 + assume {:print "$at(77,4916,4935)"} true; + $t9 := $ChildMutation($t8, 0, $Dereference($t8)->$cap); + + // $t10 := opaque begin: option::extract>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + + // $t11 := read_ref($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + $t11 := $Dereference($t9); + + // assume Identical($t12, option::spec_is_none>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume ($t12 == $1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9))); + + // if ($t12) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + if ($t12) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 +L6: + + // assume And(option::spec_is_none>($t9), Eq(262145, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + assume ($1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9)) && $IsEqual'num'(262145, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + assume {:print "$track_abort(49,4):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 +L5: + + // $t9 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + havoc $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + $t9 := $UpdateMutation($t9, $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''); + + // assume And(WellFormed($t9), Le(Len>(select option::Option.vec($t9)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($Dereference($t9)) && (LenVec($Dereference($t9)->$vec) <= 1)); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($t10); + + // assume Eq>($t10, option::spec_borrow>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''($t10, $1_option_spec_borrow'$1_on_chain_config_ModifyConfigCapability'#0''($t11)); + + // assume option::spec_is_none>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume $1_option_spec_is_none'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t9)); + + // $t10 := opaque end: option::extract>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + + // write_back[Reference($t8).cap (option::Option>)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + $t8 := $UpdateMutation($t8, $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''_cap($Dereference($t8), $Dereference($t9))); + + // assert Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($t8))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t8)->$cap->$vec) <= 1); + + // write_back[on_chain_config::ModifyConfigCapabilityHolder<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$at(77,4900,4936)"} true; + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:108:9+36 + assume {:print "$track_return(49,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 + assume {:print "$at(77,4941,4942)"} true; +L3: + + // assert Not(Not(exists[@585]>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:114:9+70 + assume {:print "$at(78,4518,4588)"} true; + assert {:msg "assert_failed(78,4518,4588): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585, $t2); + + // assert Not(option::$is_none[]>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global[@585]>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:115:9+150 + assume {:print "$at(78,4597,4747)"} true; + assert {:msg "assert_failed(78,4597,4747): function does not abort under this condition"} + !$1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585, $t2)->$cap); + + // assert exists>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:124:9+67 + assume {:print "$at(78,4909,4976)"} true; + assert {:msg "assert_failed(78,4909,4976): post-condition does not hold"} + $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t2); + + // assert option::$is_none>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:125:9+147 + assume {:print "$at(78,4985,5132)"} true; + assert {:msg "assert_failed(78,4985,5132): post-condition does not hold"} + $1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t2)->$cap); + + // assert Eq>($t10, option::$borrow[]>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global[@585]>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:128:9+102 + assume {:print "$at(78,5141,5243)"} true; + assert {:msg "assert_failed(78,5141,5243): post-condition does not hold"} + $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''($t10, $1_option_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585, $t2)->$cap)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:128:9+102 + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:109:5+1 + assume {:print "$at(77,4941,4942)"} true; +L4: + + // assert Or(Not(exists[@585]>($t2)), option::$is_none[]>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global[@585]>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:120:5+490 + assume {:print "$at(78,4759,5249)"} true; + assert {:msg "assert_failed(78,4759,5249): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585, $t2) || $1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#585, $t2)->$cap)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:120:5+490 + $abort_code := $t4; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t8) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun on_chain_config::get_by_address> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:inline 1} $1_on_chain_config_get_by_address'$1_dao_DaoConfig'#0''(_$t0: int) returns ($ret0: $1_dao_DaoConfig'#0') +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + var $t6: $1_dao_DaoConfig'#0'; + var $t0: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::get_by_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:inline 1} $1_on_chain_config_get_by_address'$1_block_reward_config_RewardConfig'(_$t0: int) returns ($ret0: $1_block_reward_config_RewardConfig) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'$1_block_reward_config_RewardConfig'; + var $t6: $1_block_reward_config_RewardConfig; + var $t0: int; + var $temp_0'$1_block_reward_config_RewardConfig': $1_block_reward_config_RewardConfig; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::get_by_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:inline 1} $1_on_chain_config_get_by_address'$1_consensus_config_ConsensusConfig'(_$t0: int) returns ($ret0: $1_consensus_config_ConsensusConfig) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'; + var $t6: $1_consensus_config_ConsensusConfig; + var $t0: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::get_by_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:inline 1} $1_on_chain_config_get_by_address'$1_stc_version_Version'(_$t0: int) returns ($ret0: $1_stc_version_Version) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'$1_stc_version_Version'; + var $t6: $1_stc_version_Version; + var $t0: int; + var $temp_0'$1_stc_version_Version': $1_stc_version_Version; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'$1_stc_version_Version'_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_stc_version_Version'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'$1_stc_version_Version'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::get_by_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:inline 1} $1_on_chain_config_get_by_address'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(_$t0: int) returns ($ret0: $1_stc_transaction_timeout_config_TransactionTimeoutConfig) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'; + var $t6: $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $t0: int; + var $temp_0'$1_stc_transaction_timeout_config_TransactionTimeoutConfig': $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::get_by_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+274 +procedure {:timeLimit 80} $1_on_chain_config_get_by_address$verify(_$t0: int) returns ($ret0: #0) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_on_chain_config_Config'#0'; + var $t6: #0; + var $t0: int; + var $temp_0'#0': #0; + var $temp_0'address': int; + var $1_on_chain_config_Config'#0'_$memory#587: $Memory $1_on_chain_config_Config'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$at(77,1359,1360)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // @587 := save_mem(on_chain_config::Config<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + $1_on_chain_config_Config'#0'_$memory#587 := $1_on_chain_config_Config'#0'_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:35:5+1 + assume {:print "$track_local(49,5,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:17+6 + assume {:print "$at(77,1481,1487)"} true; + $t1 := $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 +L0: + + // $t2 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:73+28 + assume {:print "$at(77,1537,1565)"} true; + $t2 := 1013; + assume $IsValid'u64'($t2); + + // $t3 := error::invalid_state($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:52+50 + call $t3 := $1_error_invalid_state($t2); + if ($abort_flag) { + assume {:print "$at(77,1516,1566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + assume {:print "$at(77,1473,1567)"} true; + assume {:print "$track_abort(49,5):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:36:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:46+4 + assume {:print "$at(77,1614,1618)"} true; +L2: + + // $t5 := get_global>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:11+13 + assume {:print "$at(77,1579,1592)"} true; + if (!$ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(77,1579,1592)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t6 := get_field>.payload($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:10+49 + $t6 := $t5->$payload; + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:37:9+50 + assume {:print "$track_return(49,5,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L3: + + // assert Not(Not(exists[@587]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:13:9+45 + assume {:print "$at(78,371,416)"} true; + assert {:msg "assert_failed(78,371,416): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'#0'_$memory#587, $t0); + + // assert exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:14:9+42 + assume {:print "$at(78,425,467)"} true; + assert {:msg "assert_failed(78,425,467): post-condition does not hold"} + $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0); + + // assert Eq<#0>($t6, on_chain_config::spec_get<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:15:9+46 + assume {:print "$at(78,476,522)"} true; + assert {:msg "assert_failed(78,476,522): post-condition does not hold"} + $IsEqual'#0'($t6, $1_on_chain_config_spec_get'#0'($1_on_chain_config_Config'#0'_$memory, $t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:15:9+46 + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:38:5+1 + assume {:print "$at(77,1632,1633)"} true; +L4: + + // assert Not(exists[@587]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:12:5+187 + assume {:print "$at(78,341,528)"} true; + assert {:msg "assert_failed(78,341,528): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_on_chain_config_Config'#0'_$memory#587, $t0); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:12:5+187 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::publish_new_config> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+543 +procedure {:inline 1} $1_on_chain_config_publish_new_config'$1_dao_DaoConfig'#0''(_$t0: $signer, _$t1: $1_dao_DaoConfig'#0') returns () +{ + // declare local variables + var $t2: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t3: $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''; + var $t9: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t10: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + var $t11: $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''; + var $t0: $signer; + var $t1: $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$at(77,3749,3750)"} true; + assume {:print "$track_local(49,6,0):", $t0} $t0 == $t0; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$track_local(49,6,1):", $t1} $t1 == $t1; + + // $t3 := pack on_chain_config::Config<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:26+31 + assume {:print "$at(77,3880,3911)"} true; + $t3 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''($t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:9+7 + if ($ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory := $ResourceUpdate($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(77,3863,3870)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := signer::address_of($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:89:30+27 + assume {:print "$at(77,3999,4026)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,3999,4026)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // $t8 := account::new_event_handle>($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:90:21+66 + assume {:print "$at(77,4048,4114)"} true; + call $t8 := $1_account_new_event_handle'$1_on_chain_config_ConfigChangeEvent'$1_dao_DaoConfig'#0'''($t0); + if ($abort_flag) { + assume {:print "$at(77,4048,4114)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t9 := pack on_chain_config::ModifyConfigCapability<#0>($t5, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:19+193 + assume {:print "$at(77,3932,4125)"} true; + $t9 := $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''($t5, $t8); + + // trace_local[cap]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:13+3 + assume {:print "$track_local(49,6,2):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume {:print "$at(77,4256,4273)"} true; + + // assume And(WellFormed($t10), Le(Len>(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>>($t10, option::spec_some>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''''($t10, $1_option_spec_some'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($t9)); + + // $t10 := opaque end: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + + // $t11 := pack on_chain_config::ModifyConfigCapabilityHolder<#0>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:13+55 + $t11 := $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''($t10); + + // move_to>($t11, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:92:9+7 + assume {:print "$at(77,4135,4142)"} true; + if ($ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory, $t0->$addr, $t11); + } + if ($abort_flag) { + assume {:print "$at(77,4135,4142)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::publish_new_config<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+543 +procedure {:inline 1} $1_on_chain_config_publish_new_config'#0'(_$t0: $signer, _$t1: #0) returns () +{ + // declare local variables + var $t2: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t3: $1_on_chain_config_Config'#0'; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $t9: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t10: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t11: $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$at(77,3749,3750)"} true; + assume {:print "$track_local(49,6,0):", $t0} $t0 == $t0; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$track_local(49,6,1):", $t1} $t1 == $t1; + + // $t3 := pack on_chain_config::Config<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:26+31 + assume {:print "$at(77,3880,3911)"} true; + $t3 := $1_on_chain_config_Config'#0'($t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:9+7 + if ($ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_Config'#0'_$memory := $ResourceUpdate($1_on_chain_config_Config'#0'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(77,3863,3870)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := signer::address_of($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:89:30+27 + assume {:print "$at(77,3999,4026)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,3999,4026)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // $t8 := account::new_event_handle>($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:90:21+66 + assume {:print "$at(77,4048,4114)"} true; + call $t8 := $1_account_new_event_handle'$1_on_chain_config_ConfigChangeEvent'#0''($t0); + if ($abort_flag) { + assume {:print "$at(77,4048,4114)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t9 := pack on_chain_config::ModifyConfigCapability<#0>($t5, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:19+193 + assume {:print "$at(77,3932,4125)"} true; + $t9 := $1_on_chain_config_ModifyConfigCapability'#0'($t5, $t8); + + // trace_local[cap]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:13+3 + assume {:print "$track_local(49,6,2):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume {:print "$at(77,4256,4273)"} true; + + // assume And(WellFormed($t10), Le(Len>(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>>($t10, option::spec_some>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($t10, $1_option_spec_some'$1_on_chain_config_ModifyConfigCapability'#0''($t9)); + + // $t10 := opaque end: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + + // $t11 := pack on_chain_config::ModifyConfigCapabilityHolder<#0>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:13+55 + $t11 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'($t10); + + // move_to>($t11, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:92:9+7 + assume {:print "$at(77,4135,4142)"} true; + if ($ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$addr, $t11); + } + if ($abort_flag) { + assume {:print "$at(77,4135,4142)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::publish_new_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+543 +procedure {:timeLimit 80} $1_on_chain_config_publish_new_config$verify(_$t0: $signer, _$t1: #0) returns () +{ + // declare local variables + var $t2: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t3: $1_on_chain_config_Config'#0'; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_event_EventHandle'$1_on_chain_config_ConfigChangeEvent'#0''; + var $t9: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t10: $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $t11: $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'signer': $signer; + var $1_on_chain_config_Config'#0'_$memory#589: $Memory $1_on_chain_config_Config'#0'; + var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#590: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$at(77,3749,3750)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder<#0>: ResourceDomain>(): And(WellFormed($rsc), Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // @589 := save_mem(on_chain_config::Config<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + $1_on_chain_config_Config'#0'_$memory#589 := $1_on_chain_config_Config'#0'_$memory; + + // @590 := save_mem(on_chain_config::ModifyConfigCapabilityHolder<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#590 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$track_local(49,6,0):", $t0} $t0 == $t0; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:86:5+1 + assume {:print "$track_local(49,6,1):", $t1} $t1 == $t1; + + // $t3 := pack on_chain_config::Config<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:26+31 + assume {:print "$at(77,3880,3911)"} true; + $t3 := $1_on_chain_config_Config'#0'($t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:87:9+7 + if ($ResourceExists($1_on_chain_config_Config'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_Config'#0'_$memory := $ResourceUpdate($1_on_chain_config_Config'#0'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(77,3863,3870)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := signer::address_of($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:89:30+27 + assume {:print "$at(77,3999,4026)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(77,3999,4026)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // $t8 := account::new_event_handle>($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:90:21+66 + assume {:print "$at(77,4048,4114)"} true; + call $t8 := $1_account_new_event_handle'$1_on_chain_config_ConfigChangeEvent'#0''($t0); + if ($abort_flag) { + assume {:print "$at(77,4048,4114)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // $t9 := pack on_chain_config::ModifyConfigCapability<#0>($t5, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:19+193 + assume {:print "$at(77,3932,4125)"} true; + $t9 := $1_on_chain_config_ModifyConfigCapability'#0'($t5, $t8); + + // trace_local[cap]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:88:13+3 + assume {:print "$track_local(49,6,2):", $t9} $t9 == $t9; + + // $t10 := opaque begin: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume {:print "$at(77,4256,4273)"} true; + + // assume And(WellFormed($t10), Le(Len>(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>>($t10, option::spec_some>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + assume $IsEqual'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($t10, $1_option_spec_some'$1_on_chain_config_ModifyConfigCapability'#0''($t9)); + + // $t10 := opaque end: option::some>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:49+17 + + // $t11 := pack on_chain_config::ModifyConfigCapabilityHolder<#0>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:94:13+55 + $t11 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'($t10); + + // move_to>($t11, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:92:9+7 + assume {:print "$at(77,4135,4142)"} true; + if ($ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$addr, $t11); + } + if ($abort_flag) { + assume {:print "$at(77,4135,4142)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(49,6):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; +L1: + + // assert Not(exists[@589]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:89:9+67 + assume {:print "$at(78,3637,3704)"} true; + assert {:msg "assert_failed(78,3637,3704): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_Config'#0'_$memory#589, $1_signer_$address_of($t0)); + + // assert Not(exists[@590]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:90:9+89 + assume {:print "$at(78,3713,3802)"} true; + assert {:msg "assert_failed(78,3713,3802): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#590, $1_signer_$address_of($t0)); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:80:9+65 + assume {:print "$at(78,3168,3233)"} true; + assert {:msg "assert_failed(78,3168,3233): post-condition does not hold"} + $ResourceExists($1_on_chain_config_Config'#0'_$memory, $1_signer_$address_of($t0)); + + // assert Eq<#0>(select on_chain_config::Config.payload>(global>(signer::$address_of($t0))), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:81:9+84 + assume {:print "$at(78,3242,3326)"} true; + assert {:msg "assert_failed(78,3242,3326): post-condition does not hold"} + $IsEqual'#0'($ResourceValue($1_on_chain_config_Config'#0'_$memory, $1_signer_$address_of($t0))->$payload, $t1); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:83:9+87 + assume {:print "$at(78,3336,3423)"} true; + assert {:msg "assert_failed(78,3336,3423): post-condition does not hold"} + $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0)); + + // assert option::$is_some>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global>(signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:84:9+108 + assume {:print "$at(78,3432,3540)"} true; + assert {:msg "assert_failed(78,3432,3540): post-condition does not hold"} + $1_option_$is_some'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0))->$cap); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:84:9+108 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:96:5+1 + assume {:print "$at(77,4291,4292)"} true; +L2: + + // assert Or(exists[@589]>(signer::$address_of[]($t0)), exists[@590]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:77:5+468 + assume {:print "$at(78,3078,3546)"} true; + assert {:msg "assert_failed(78,3078,3546): abort not covered by any of the `aborts_if` clauses"} + ($ResourceExists($1_on_chain_config_Config'#0'_$memory#589, $1_signer_$address_of($t0)) || $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#590, $1_signer_$address_of($t0))); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:77:5+468 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun on_chain_config::publish_new_config_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+347 +procedure {:timeLimit 80} $1_on_chain_config_publish_new_config_with_capability$verify(_$t0: $signer, _$t1: #0) returns ($ret0: $1_on_chain_config_ModifyConfigCapability'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'signer': $signer; + var $1_on_chain_config_Config'#0'_$memory#593: $Memory $1_on_chain_config_Config'#0'; + var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#594: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume {:print "$at(77,3338,3339)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder<#0>: ResourceDomain>(): And(WellFormed($rsc), Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // @593 := save_mem(on_chain_config::Config<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + $1_on_chain_config_Config'#0'_$memory#593 := $1_on_chain_config_Config'#0'_$memory; + + // @594 := save_mem(on_chain_config::ModifyConfigCapabilityHolder<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#594 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume {:print "$track_local(49,7,0):", $t0} $t0 == $t0; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:76:5+1 + assume {:print "$track_local(49,7,1):", $t1} $t1 == $t1; + + // on_chain_config::publish_new_config<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:80:9+49 + assume {:print "$at(77,3566,3615)"} true; + call $1_on_chain_config_publish_new_config'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(77,3566,3615)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(49,7):", $t2} $t2 == $t2; + goto L2; + } + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:121:9+42 + assume {:print "$at(78,4807,4849)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // $t4 := on_chain_config::extract_modify_config_capability<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:81:9+54 + assume {:print "$at(77,3625,3679)"} true; + call $t4 := $1_on_chain_config_extract_modify_config_capability'#0'($t0); + if ($abort_flag) { + assume {:print "$at(77,3625,3679)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(49,7):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:81:9+54 + assume {:print "$track_return(49,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:82:5+1 + assume {:print "$at(77,3684,3685)"} true; +L1: + + // assert Not(exists[@593]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:89:9+67 + assume {:print "$at(78,3637,3704)"} true; + assert {:msg "assert_failed(78,3637,3704): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_Config'#0'_$memory#593, $1_signer_$address_of($t0)); + + // assert Not(exists[@594]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:90:9+89 + assume {:print "$at(78,3713,3802)"} true; + assert {:msg "assert_failed(78,3713,3802): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#594, $1_signer_$address_of($t0)); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:70:9+65 + assume {:print "$at(78,2694,2759)"} true; + assert {:msg "assert_failed(78,2694,2759): post-condition does not hold"} + $ResourceExists($1_on_chain_config_Config'#0'_$memory, $1_signer_$address_of($t0)); + + // assert Eq<#0>(select on_chain_config::Config.payload>(global>(signer::$address_of($t0))), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:71:9+84 + assume {:print "$at(78,2768,2852)"} true; + assert {:msg "assert_failed(78,2768,2852): post-condition does not hold"} + $IsEqual'#0'($ResourceValue($1_on_chain_config_Config'#0'_$memory, $1_signer_$address_of($t0))->$payload, $t1); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:73:9+87 + assume {:print "$at(78,2862,2949)"} true; + assert {:msg "assert_failed(78,2862,2949): post-condition does not hold"} + $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0)); + + // assert option::$is_none>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global>(signer::$address_of($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:74:9+108 + assume {:print "$at(78,2958,3066)"} true; + assert {:msg "assert_failed(78,2958,3066): post-condition does not hold"} + $1_option_$is_none'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $1_signer_$address_of($t0))->$cap); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:74:9+108 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:82:5+1 + assume {:print "$at(77,3684,3685)"} true; +L2: + + // assert Or(exists[@593]>(signer::$address_of[]($t0)), exists[@594]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:67:5+484 + assume {:print "$at(78,2588,3072)"} true; + assert {:msg "assert_failed(78,2588,3072): abort not covered by any of the `aborts_if` clauses"} + ($ResourceExists($1_on_chain_config_Config'#0'_$memory#593, $1_signer_$address_of($t0)) || $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#594, $1_signer_$address_of($t0))); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:67:5+484 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun on_chain_config::restore_modify_config_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:113:5+336 +procedure {:timeLimit 80} $1_on_chain_config_restore_modify_config_capability$verify(_$t0: $1_on_chain_config_ModifyConfigCapability'#0') returns () +{ + // declare local variables + var $t1: int; + var $t2: $Mutation ($1_on_chain_config_ModifyConfigCapabilityHolder'#0'); + var $t3: int; + var $t4: $Mutation ($1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''); + var $t5: bool; + var $t0: $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''': $1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0''; + var $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:113:5+1 + assume {:print "$at(77,4998,4999)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($t0); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder<#0>: ResourceDomain>(): And(WellFormed($rsc), Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:113:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // @596 := save_mem(on_chain_config::ModifyConfigCapabilityHolder<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:113:5+1 + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596 := $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory; + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:113:5+1 + assume {:print "$track_local(49,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:116:87+19 + assume {:print "$at(77,5259,5278)"} true; + $t1 := $t0->$account_address; + + // $t2 := borrow_global>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:116:26+17 + if (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(77,5198,5215)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(49,8):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := borrow_field>.cap($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:22+19 + assume {:print "$at(77,5302,5321)"} true; + $t4 := $ChildMutation($t2, 0, $Dereference($t2)->$cap); + + // opaque begin: option::fill>($t4, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + + // assume Identical($t5, option::spec_is_some>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume ($t5 == $1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t4))); + + // if ($t5) goto L5 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + if ($t5) { goto L5; } else { goto L6; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 +L4: + + // assume And(option::spec_is_some>($t4), Eq(262144, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume {:print "$at(77,5289,5327)"} true; + assume ($1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t4)) && $IsEqual'num'(262144, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume {:print "$at(77,5289,5327)"} true; + assume {:print "$track_abort(49,8):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 +L3: + + // $t4 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume {:print "$at(77,5289,5327)"} true; + havoc $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''; + $t4 := $UpdateMutation($t4, $temp_0'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''); + + // assume And(WellFormed($t4), Le(Len>(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume ($IsValid'$1_option_Option'$1_on_chain_config_ModifyConfigCapability'#0'''($Dereference($t4)) && (LenVec($Dereference($t4)->$vec) <= 1)); + + // assume option::spec_is_some>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume $1_option_spec_is_some'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t4)); + + // assume Eq>(option::spec_borrow>($t4), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''($1_option_spec_borrow'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t4)), $t0); + + // opaque end: option::fill>($t4, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + + // write_back[Reference($t2).cap (option::Option>)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + $t2 := $UpdateMutation($t2, $Update'$1_on_chain_config_ModifyConfigCapabilityHolder'#0''_cap($Dereference($t2), $Dereference($t4))); + + // assert Le(Len>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($t2))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t2)->$cap->$vec) <= 1); + + // write_back[on_chain_config::ModifyConfigCapabilityHolder<#0>@]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:117:9+38 + assume {:print "$at(77,5289,5327)"} true; + $1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory := $ResourceUpdate($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $GlobalLocationAddress($t2), + $Dereference($t2)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:118:5+1 + assume {:print "$at(77,5333,5334)"} true; +L1: + + // assert Not(Not(exists[@596]>(select on_chain_config::ModifyConfigCapability.account_address>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:132:9+82 + assume {:print "$at(78,5303,5385)"} true; + assert {:msg "assert_failed(78,5303,5385): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596, $t0->$account_address); + + // assert Not(option::$is_some[]>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global[@596]>(select on_chain_config::ModifyConfigCapability.account_address>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:133:9+102 + assume {:print "$at(78,5394,5496)"} true; + assert {:msg "assert_failed(78,5394,5496): function does not abort under this condition"} + !$1_option_$is_some'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596, $t0->$account_address)->$cap); + + // assert exists>(select on_chain_config::ModifyConfigCapability.account_address>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:135:9+79 + assume {:print "$at(78,5506,5585)"} true; + assert {:msg "assert_failed(78,5506,5585): post-condition does not hold"} + $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$account_address); + + // assert option::$is_some>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global>(select on_chain_config::ModifyConfigCapability.account_address>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:136:9+100 + assume {:print "$at(78,5594,5694)"} true; + assert {:msg "assert_failed(78,5594,5694): post-condition does not hold"} + $1_option_$is_some'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$account_address)->$cap); + + // assert Eq>(option::$borrow>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global>(select on_chain_config::ModifyConfigCapability.account_address>($t0)))), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:137:9+106 + assume {:print "$at(78,5703,5809)"} true; + assert {:msg "assert_failed(78,5703,5809): post-condition does not hold"} + $IsEqual'$1_on_chain_config_ModifyConfigCapability'#0''($1_option_$borrow'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory, $t0->$account_address)->$cap), $t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:137:9+106 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:118:5+1 + assume {:print "$at(77,5333,5334)"} true; +L2: + + // assert Or(Not(exists[@596]>(select on_chain_config::ModifyConfigCapability.account_address>($t0))), option::$is_some[]>(select on_chain_config::ModifyConfigCapabilityHolder.cap>(global[@596]>(select on_chain_config::ModifyConfigCapability.account_address>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:131:5+560 + assume {:print "$at(78,5255,5815)"} true; + assert {:msg "assert_failed(78,5255,5815): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596, $t0->$account_address) || $1_option_$is_some'$1_on_chain_config_ModifyConfigCapability'#0''($ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'#0'_$memory#596, $t0->$account_address)->$cap)); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:131:5+560 + $abort_code := $t3; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t2) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L6 at :1:1+10 +L6: + + // drop($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun on_chain_config::set_with_capability> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+478 +procedure {:inline 1} $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: $1_dao_DaoConfig'#0') returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_on_chain_config_Config'$1_dao_DaoConfig'#0''); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_on_chain_config_Config'$1_dao_DaoConfig'#0''); + var $t10: $Mutation ($1_dao_DaoConfig'#0'); + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_Config'$1_dao_DaoConfig'#0''': $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$at(77,2687,2688)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$track_local(49,10,1):", $t1} $t1 == $t1; + + // $t4 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:20+19 + assume {:print "$at(77,2881,2900)"} true; + $t4 := $Dereference($t0)->$account_address; + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:13+4 + assume {:print "$track_local(49,10,2):", $t4} $t4 == $t4; + + // $t5 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:17+6 + assume {:print "$at(77,2918,2924)"} true; + $t5 := $ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + + // $t6 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:73+28 + $t6 := 1013; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_state($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:52+50 + call $t7 := $1_error_invalid_state($t6); + if ($abort_flag) { + assume {:print "$at(77,2953,3003)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + assume {:print "$track_abort(49,10):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:61+4 + assume {:print "$at(77,3066,3070)"} true; +L2: + + // $t9 := borrow_global>($t4) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:22+17 + assume {:print "$at(77,3027,3044)"} true; + if (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $t4)); + } + if ($abort_flag) { + assume {:print "$at(77,3027,3044)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[config]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:13+6 + $temp_0'$1_on_chain_config_Config'$1_dao_DaoConfig'#0''' := $Dereference($t9); + assume {:print "$track_local(49,10,3):", $temp_0'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_Config'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''; + + // $t10 := borrow_field>.payload($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+14 + assume {:print "$at(77,3081,3095)"} true; + $t10 := $ChildMutation($t9, 0, $Dereference($t9)->$payload); + + // write_ref($t10, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t10 := $UpdateMutation($t10, $t1); + + // write_back[Reference($t9).payload (#0)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t9 := $UpdateMutation($t9, $Update'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''_payload($Dereference($t9), $Dereference($t10))); + + // write_back[on_chain_config::Config<#0>@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory := $ResourceUpdate($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // on_chain_config::emit_config_change_event<#0>($t0, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:9+38 + assume {:print "$at(77,3120,3158)"} true; + call $t0 := $1_on_chain_config_emit_config_change_event'$1_dao_DaoConfig'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(77,3120,3158)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:47+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun on_chain_config::set_with_capability<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+478 +procedure {:inline 1} $1_on_chain_config_set_with_capability'#0'(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_on_chain_config_Config'#0'); + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_on_chain_config_Config'#0'); + var $t10: $Mutation (#0); + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_Config'#0'': $1_on_chain_config_Config'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$at(77,2687,2688)"} true; + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$track_local(49,10,1):", $t1} $t1 == $t1; + + // $t4 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:20+19 + assume {:print "$at(77,2881,2900)"} true; + $t4 := $Dereference($t0)->$account_address; + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:13+4 + assume {:print "$track_local(49,10,2):", $t4} $t4 == $t4; + + // $t5 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:17+6 + assume {:print "$at(77,2918,2924)"} true; + $t5 := $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + + // $t6 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:73+28 + $t6 := 1013; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_state($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:52+50 + call $t7 := $1_error_invalid_state($t6); + if ($abort_flag) { + assume {:print "$at(77,2953,3003)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + assume {:print "$track_abort(49,10):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:61+4 + assume {:print "$at(77,3066,3070)"} true; +L2: + + // $t9 := borrow_global>($t4) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:22+17 + assume {:print "$at(77,3027,3044)"} true; + if (!$ResourceExists($1_on_chain_config_Config'#0'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_on_chain_config_Config'#0'_$memory, $t4)); + } + if ($abort_flag) { + assume {:print "$at(77,3027,3044)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[config]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:13+6 + $temp_0'$1_on_chain_config_Config'#0'' := $Dereference($t9); + assume {:print "$track_local(49,10,3):", $temp_0'$1_on_chain_config_Config'#0''} $temp_0'$1_on_chain_config_Config'#0'' == $temp_0'$1_on_chain_config_Config'#0''; + + // $t10 := borrow_field>.payload($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+14 + assume {:print "$at(77,3081,3095)"} true; + $t10 := $ChildMutation($t9, 0, $Dereference($t9)->$payload); + + // write_ref($t10, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t10 := $UpdateMutation($t10, $t1); + + // write_back[Reference($t9).payload (#0)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t9 := $UpdateMutation($t9, $Update'$1_on_chain_config_Config'#0''_payload($Dereference($t9), $Dereference($t10))); + + // write_back[on_chain_config::Config<#0>@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $1_on_chain_config_Config'#0'_$memory := $ResourceUpdate($1_on_chain_config_Config'#0'_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // on_chain_config::emit_config_change_event<#0>($t0, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:9+38 + assume {:print "$at(77,3120,3158)"} true; + call $t0 := $1_on_chain_config_emit_config_change_event'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(77,3120,3158)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:47+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun on_chain_config::set_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+478 +procedure {:timeLimit 80} $1_on_chain_config_set_with_capability$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_on_chain_config_Config'#0'); + var $t4: $1_on_chain_config_ModifyConfigCapability'#0'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $Mutation ($1_on_chain_config_Config'#0'); + var $t11: $Mutation (#0); + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_on_chain_config_Config'#0'': $1_on_chain_config_Config'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'': $1_on_chain_config_ModifyConfigCapability'#0'; + var $temp_0'address': int; + var $1_on_chain_config_Config'#0'_$memory#582: $Memory $1_on_chain_config_Config'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$at(77,2687,2688)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: on_chain_config::Config<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'#0'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'#0''($rsc)))); + + // @582 := save_mem(on_chain_config::Config<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + $1_on_chain_config_Config'#0'_$memory#582 := $1_on_chain_config_Config'#0'_$memory; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + $t4 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // trace_local[payload]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:63:5+1 + assume {:print "$track_local(49,10,1):", $t1} $t1 == $t1; + + // $t5 := get_field>.account_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:20+19 + assume {:print "$at(77,2881,2900)"} true; + $t5 := $Dereference($t0)->$account_address; + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:67:13+4 + assume {:print "$track_local(49,10,2):", $t5} $t5 == $t5; + + // $t6 := exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:17+6 + assume {:print "$at(77,2918,2924)"} true; + $t6 := $ResourceExists($1_on_chain_config_Config'#0'_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + + // $t7 := 1013 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:73+28 + $t7 := 1013; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:52+50 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(77,2953,3003)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(49,10):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + assume {:print "$at(77,2910,3004)"} true; + assume {:print "$track_abort(49,10):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:68:9+94 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:61+4 + assume {:print "$at(77,3066,3070)"} true; +L2: + + // $t10 := borrow_global>($t5) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:22+17 + assume {:print "$at(77,3027,3044)"} true; + if (!$ResourceExists($1_on_chain_config_Config'#0'_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_on_chain_config_Config'#0'_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(77,3027,3044)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(49,10):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[config]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:69:13+6 + $temp_0'$1_on_chain_config_Config'#0'' := $Dereference($t10); + assume {:print "$track_local(49,10,3):", $temp_0'$1_on_chain_config_Config'#0''} $temp_0'$1_on_chain_config_Config'#0'' == $temp_0'$1_on_chain_config_Config'#0''; + + // $t11 := borrow_field>.payload($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+14 + assume {:print "$at(77,3081,3095)"} true; + $t11 := $ChildMutation($t10, 0, $Dereference($t10)->$payload); + + // write_ref($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t11 := $UpdateMutation($t11, $t1); + + // write_back[Reference($t10).payload (#0)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $t10 := $UpdateMutation($t10, $Update'$1_on_chain_config_Config'#0''_payload($Dereference($t10), $Dereference($t11))); + + // write_back[on_chain_config::Config<#0>@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:70:9+29 + $1_on_chain_config_Config'#0'_$memory := $ResourceUpdate($1_on_chain_config_Config'#0'_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // on_chain_config::emit_config_change_event<#0>($t0, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:9+38 + assume {:print "$at(77,3120,3158)"} true; + call $t0 := $1_on_chain_config_emit_config_change_event'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(77,3120,3158)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(49,10):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:71:47+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(49,10,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''} $temp_0'$1_on_chain_config_ModifyConfigCapability'#0'' == $temp_0'$1_on_chain_config_ModifyConfigCapability'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; +L3: + + // assert Not(Not(exists[@582]>(select on_chain_config::ModifyConfigCapability.account_address>($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:61:9+60 + assume {:print "$at(78,2364,2424)"} true; + assert {:msg "assert_failed(78,2364,2424): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'#0'_$memory#582, $t4->$account_address); + + // assert exists>(select on_chain_config::ModifyConfigCapability.account_address>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:62:9+57 + assume {:print "$at(78,2433,2490)"} true; + assert {:msg "assert_failed(78,2433,2490): post-condition does not hold"} + $ResourceExists($1_on_chain_config_Config'#0'_$memory, $Dereference($t0)->$account_address); + + // assert Eq<#0>(select on_chain_config::Config.payload>(global>(select on_chain_config::ModifyConfigCapability.account_address>($t0))), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:63:9+76 + assume {:print "$at(78,2499,2575)"} true; + assert {:msg "assert_failed(78,2499,2575): post-condition does not hold"} + $IsEqual'#0'($ResourceValue($1_on_chain_config_Config'#0'_$memory, $Dereference($t0)->$account_address)->$payload, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:63:9+76 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.move:72:5+1 + assume {:print "$at(77,3164,3165)"} true; +L4: + + // assert Not(exists[@582]>(select on_chain_config::ModifyConfigCapability.account_address>($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:60:5+252 + assume {:print "$at(78,2329,2581)"} true; + assert {:msg "assert_failed(78,2329,2581): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_on_chain_config_Config'#0'_$memory#582, $t4->$account_address); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:60:5+252 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:409:10+131 +function {:inline} $1_dao_spec_dao_config'#0'($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''): $1_dao_DaoConfig'#0' { + $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, 2)->$payload +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+832 +function {:inline} $1_dao_$do_proposal_state'#0_#1'(proposal: $1_dao_Proposal'#0_#1', current_time: int): int { + (if ((current_time < proposal->$start_time)) then (1) else ((if ((current_time <= proposal->$end_time)) then (2) else ((if (((proposal->$for_votes <= proposal->$against_votes) || (proposal->$for_votes < proposal->$quorum_votes))) then (3) else ((if ($IsEqual'u64'(proposal->$eta, 0)) then (4) else ((if ((current_time < proposal->$eta)) then (5) else ((if ($1_option_$is_some'#1'(proposal->$action)) then (6) else (7)))))))))))) +} + +// struct dao::DaoConfig<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:36:5+599 +datatype $1_dao_DaoConfig'#0' { + $1_dao_DaoConfig'#0'($voting_delay: int, $voting_period: int, $voting_quorum_rate: int, $min_action_delay: int) +} +function {:inline} $Update'$1_dao_DaoConfig'#0''_voting_delay(s: $1_dao_DaoConfig'#0', x: int): $1_dao_DaoConfig'#0' { + $1_dao_DaoConfig'#0'(x, s->$voting_period, s->$voting_quorum_rate, s->$min_action_delay) +} +function {:inline} $Update'$1_dao_DaoConfig'#0''_voting_period(s: $1_dao_DaoConfig'#0', x: int): $1_dao_DaoConfig'#0' { + $1_dao_DaoConfig'#0'(s->$voting_delay, x, s->$voting_quorum_rate, s->$min_action_delay) +} +function {:inline} $Update'$1_dao_DaoConfig'#0''_voting_quorum_rate(s: $1_dao_DaoConfig'#0', x: int): $1_dao_DaoConfig'#0' { + $1_dao_DaoConfig'#0'(s->$voting_delay, s->$voting_period, x, s->$min_action_delay) +} +function {:inline} $Update'$1_dao_DaoConfig'#0''_min_action_delay(s: $1_dao_DaoConfig'#0', x: int): $1_dao_DaoConfig'#0' { + $1_dao_DaoConfig'#0'(s->$voting_delay, s->$voting_period, s->$voting_quorum_rate, x) +} +function $IsValid'$1_dao_DaoConfig'#0''(s: $1_dao_DaoConfig'#0'): bool { + $IsValid'u64'(s->$voting_delay) + && $IsValid'u64'(s->$voting_period) + && $IsValid'u8'(s->$voting_quorum_rate) + && $IsValid'u64'(s->$min_action_delay) +} +function {:inline} $IsEqual'$1_dao_DaoConfig'#0''(s1: $1_dao_DaoConfig'#0', s2: $1_dao_DaoConfig'#0'): bool { + s1 == s2 +} + +// struct dao::DaoGlobalInfo<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:26:5+314 +datatype $1_dao_DaoGlobalInfo'#0' { + $1_dao_DaoGlobalInfo'#0'($next_proposal_id: int, $proposal_create_event: $1_event_EventHandle'$1_dao_ProposalCreatedEvent', $vote_changed_event: $1_event_EventHandle'$1_dao_VoteChangedEvent') +} +function {:inline} $Update'$1_dao_DaoGlobalInfo'#0''_next_proposal_id(s: $1_dao_DaoGlobalInfo'#0', x: int): $1_dao_DaoGlobalInfo'#0' { + $1_dao_DaoGlobalInfo'#0'(x, s->$proposal_create_event, s->$vote_changed_event) +} +function {:inline} $Update'$1_dao_DaoGlobalInfo'#0''_proposal_create_event(s: $1_dao_DaoGlobalInfo'#0', x: $1_event_EventHandle'$1_dao_ProposalCreatedEvent'): $1_dao_DaoGlobalInfo'#0' { + $1_dao_DaoGlobalInfo'#0'(s->$next_proposal_id, x, s->$vote_changed_event) +} +function {:inline} $Update'$1_dao_DaoGlobalInfo'#0''_vote_changed_event(s: $1_dao_DaoGlobalInfo'#0', x: $1_event_EventHandle'$1_dao_VoteChangedEvent'): $1_dao_DaoGlobalInfo'#0' { + $1_dao_DaoGlobalInfo'#0'(s->$next_proposal_id, s->$proposal_create_event, x) +} +function $IsValid'$1_dao_DaoGlobalInfo'#0''(s: $1_dao_DaoGlobalInfo'#0'): bool { + $IsValid'u64'(s->$next_proposal_id) + && $IsValid'$1_event_EventHandle'$1_dao_ProposalCreatedEvent''(s->$proposal_create_event) + && $IsValid'$1_event_EventHandle'$1_dao_VoteChangedEvent''(s->$vote_changed_event) +} +function {:inline} $IsEqual'$1_dao_DaoGlobalInfo'#0''(s1: $1_dao_DaoGlobalInfo'#0', s2: $1_dao_DaoGlobalInfo'#0'): bool { + s1 == s2 +} +var $1_dao_DaoGlobalInfo'#0'_$memory: $Memory $1_dao_DaoGlobalInfo'#0'; + +// struct dao::Proposal<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:72:5+758 +datatype $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'($id: int, $proposer: int, $start_time: int, $end_time: int, $for_votes: int, $against_votes: int, $eta: int, $action_delay: int, $quorum_votes: int, $action: $1_option_Option'#1') +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_id(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(x, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_proposer(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, x, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_start_time(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, x, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_end_time(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, x, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_for_votes(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, x, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_against_votes(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, x, s->$eta, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_eta(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, x, s->$action_delay, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_action_delay(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, x, s->$quorum_votes, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_quorum_votes(s: $1_dao_Proposal'#0_#1', x: int): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, x, s->$action) +} +function {:inline} $Update'$1_dao_Proposal'#0_#1''_action(s: $1_dao_Proposal'#0_#1', x: $1_option_Option'#1'): $1_dao_Proposal'#0_#1' { + $1_dao_Proposal'#0_#1'(s->$id, s->$proposer, s->$start_time, s->$end_time, s->$for_votes, s->$against_votes, s->$eta, s->$action_delay, s->$quorum_votes, x) +} +function $IsValid'$1_dao_Proposal'#0_#1''(s: $1_dao_Proposal'#0_#1'): bool { + $IsValid'u64'(s->$id) + && $IsValid'address'(s->$proposer) + && $IsValid'u64'(s->$start_time) + && $IsValid'u64'(s->$end_time) + && $IsValid'u128'(s->$for_votes) + && $IsValid'u128'(s->$against_votes) + && $IsValid'u64'(s->$eta) + && $IsValid'u64'(s->$action_delay) + && $IsValid'u128'(s->$quorum_votes) + && $IsValid'$1_option_Option'#1''(s->$action) +} +function {:inline} $IsEqual'$1_dao_Proposal'#0_#1''(s1: $1_dao_Proposal'#0_#1', s2: $1_dao_Proposal'#0_#1'): bool { + $IsEqual'u64'(s1->$id, s2->$id) + && $IsEqual'address'(s1->$proposer, s2->$proposer) + && $IsEqual'u64'(s1->$start_time, s2->$start_time) + && $IsEqual'u64'(s1->$end_time, s2->$end_time) + && $IsEqual'u128'(s1->$for_votes, s2->$for_votes) + && $IsEqual'u128'(s1->$against_votes, s2->$against_votes) + && $IsEqual'u64'(s1->$eta, s2->$eta) + && $IsEqual'u64'(s1->$action_delay, s2->$action_delay) + && $IsEqual'u128'(s1->$quorum_votes, s2->$quorum_votes) + && $IsEqual'$1_option_Option'#1''(s1->$action, s2->$action)} +var $1_dao_Proposal'#0_#1'_$memory: $Memory $1_dao_Proposal'#0_#1'; + +// struct dao::ProposalCreatedEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:50:5+191 +datatype $1_dao_ProposalCreatedEvent { + $1_dao_ProposalCreatedEvent($proposal_id: int, $proposer: int) +} +function {:inline} $Update'$1_dao_ProposalCreatedEvent'_proposal_id(s: $1_dao_ProposalCreatedEvent, x: int): $1_dao_ProposalCreatedEvent { + $1_dao_ProposalCreatedEvent(x, s->$proposer) +} +function {:inline} $Update'$1_dao_ProposalCreatedEvent'_proposer(s: $1_dao_ProposalCreatedEvent, x: int): $1_dao_ProposalCreatedEvent { + $1_dao_ProposalCreatedEvent(s->$proposal_id, x) +} +function $IsValid'$1_dao_ProposalCreatedEvent'(s: $1_dao_ProposalCreatedEvent): bool { + $IsValid'u64'(s->$proposal_id) + && $IsValid'address'(s->$proposer) +} +function {:inline} $IsEqual'$1_dao_ProposalCreatedEvent'(s1: $1_dao_ProposalCreatedEvent, s2: $1_dao_ProposalCreatedEvent): bool { + s1 == s2 +} + +// struct dao::Vote<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:96:5+300 +datatype $1_dao_Vote'#0' { + $1_dao_Vote'#0'($proposer: int, $id: int, $stake: $1_coin_Coin'#0', $agree: bool) +} +function {:inline} $Update'$1_dao_Vote'#0''_proposer(s: $1_dao_Vote'#0', x: int): $1_dao_Vote'#0' { + $1_dao_Vote'#0'(x, s->$id, s->$stake, s->$agree) +} +function {:inline} $Update'$1_dao_Vote'#0''_id(s: $1_dao_Vote'#0', x: int): $1_dao_Vote'#0' { + $1_dao_Vote'#0'(s->$proposer, x, s->$stake, s->$agree) +} +function {:inline} $Update'$1_dao_Vote'#0''_stake(s: $1_dao_Vote'#0', x: $1_coin_Coin'#0'): $1_dao_Vote'#0' { + $1_dao_Vote'#0'(s->$proposer, s->$id, x, s->$agree) +} +function {:inline} $Update'$1_dao_Vote'#0''_agree(s: $1_dao_Vote'#0', x: bool): $1_dao_Vote'#0' { + $1_dao_Vote'#0'(s->$proposer, s->$id, s->$stake, x) +} +function $IsValid'$1_dao_Vote'#0''(s: $1_dao_Vote'#0'): bool { + $IsValid'address'(s->$proposer) + && $IsValid'u64'(s->$id) + && $IsValid'$1_coin_Coin'#0''(s->$stake) + && $IsValid'bool'(s->$agree) +} +function {:inline} $IsEqual'$1_dao_Vote'#0''(s1: $1_dao_Vote'#0', s2: $1_dao_Vote'#0'): bool { + s1 == s2 +} +var $1_dao_Vote'#0'_$memory: $Memory $1_dao_Vote'#0'; + +// struct dao::VoteChangedEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:58:5+341 +datatype $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent($proposal_id: int, $voter: int, $proposer: int, $agree: bool, $vote: int) +} +function {:inline} $Update'$1_dao_VoteChangedEvent'_proposal_id(s: $1_dao_VoteChangedEvent, x: int): $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent(x, s->$voter, s->$proposer, s->$agree, s->$vote) +} +function {:inline} $Update'$1_dao_VoteChangedEvent'_voter(s: $1_dao_VoteChangedEvent, x: int): $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent(s->$proposal_id, x, s->$proposer, s->$agree, s->$vote) +} +function {:inline} $Update'$1_dao_VoteChangedEvent'_proposer(s: $1_dao_VoteChangedEvent, x: int): $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent(s->$proposal_id, s->$voter, x, s->$agree, s->$vote) +} +function {:inline} $Update'$1_dao_VoteChangedEvent'_agree(s: $1_dao_VoteChangedEvent, x: bool): $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent(s->$proposal_id, s->$voter, s->$proposer, x, s->$vote) +} +function {:inline} $Update'$1_dao_VoteChangedEvent'_vote(s: $1_dao_VoteChangedEvent, x: int): $1_dao_VoteChangedEvent { + $1_dao_VoteChangedEvent(s->$proposal_id, s->$voter, s->$proposer, s->$agree, x) +} +function $IsValid'$1_dao_VoteChangedEvent'(s: $1_dao_VoteChangedEvent): bool { + $IsValid'u64'(s->$proposal_id) + && $IsValid'address'(s->$voter) + && $IsValid'address'(s->$proposer) + && $IsValid'bool'(s->$agree) + && $IsValid'u128'(s->$vote) +} +function {:inline} $IsEqual'$1_dao_VoteChangedEvent'(s1: $1_dao_VoteChangedEvent, s2: $1_dao_VoteChangedEvent): bool { + s1 == s2 +} + +// fun dao::cast_vote [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1983 +procedure {:timeLimit 80} $1_dao_cast_vote$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: $1_coin_Coin'#0', _$t4: bool) returns () +{ + // declare local variables + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: $Mutation ($1_event_EventHandle'$1_dao_VoteChangedEvent'); + var $t12: $Mutation ($1_dao_Vote'#0'); + var $t13: $1_dao_Vote'#0'; + var $t14: $Mutation ($1_dao_Proposal'#0_#1'); + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: Vec (int); + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: $1_dao_Proposal'#0_#1'; + var $t23: int; + var $t24: int; + var $t25: $1_dao_Vote'#0'; + var $t26: $1_dao_Proposal'#0_#1'; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_dao_Proposal'#0_#1'); + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: bool; + var $t40: $Mutation ($1_dao_Vote'#0'); + var $t41: int; + var $t42: bool; + var $t43: int; + var $t44: int; + var $t45: bool; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: $1_coin_Coin'#0'; + var $t50: $1_coin_Coin'#0'; + var $t51: $Mutation ($1_dao_Vote'#0'); + var $t52: $1_dao_Vote'#0'; + var $t53: $1_coin_Coin'#0'; + var $t54: int; + var $t55: $1_dao_Vote'#0'; + var $t56: int; + var $t57: $Mutation ($1_dao_DaoGlobalInfo'#0'); + var $t58: $Mutation ($1_event_EventHandle'$1_dao_VoteChangedEvent'); + var $t59: int; + var $t60: $1_dao_VoteChangedEvent; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: $1_coin_Coin'#0'; + var $t4: bool; + var $1_dao_Proposal'#0_#1'_$modifies: [int]bool; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_dao_DaoGlobalInfo'#0'_$memory#613: $Memory $1_dao_DaoGlobalInfo'#0'; + var $1_dao_Proposal'#0_#1'_$memory#614: $Memory $1_dao_Proposal'#0_#1'; + var $1_timestamp_CurrentTimeMicroseconds_$memory#615: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$at(67,7807,7808)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $IsValid'$1_coin_Coin'#0''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $IsValid'bool'($t4); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220: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: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: dao::DaoGlobalInfo<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0); + ($IsValid'$1_dao_DaoGlobalInfo'#0''($rsc)))); + + // assume forall $rsc: dao::Vote<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Vote'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Vote'#0'_$memory, $a_0); + ($IsValid'$1_dao_Vote'#0''($rsc)))); + + // assume forall $rsc: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1983 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t18, SingleVec(2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:123:9+34 + assume {:print "$at(68,3694,3728)"} true; + assume ($t18 == MakeVec1(2)); + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:125:9+40 + assume {:print "$at(68,3811,3851)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, exists>($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:126:9+47 + assume {:print "$at(68,3860,3907)"} true; + assume ($t20 == $ResourceExists($1_dao_Vote'#0'_$memory, $t19)); + + // assume Identical($t21, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:35:9+22 + assume {:print "$at(68,967,989)"} true; + assume ($t21 == 2); + + // assume Identical($t22, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:321:9+67 + assume {:print "$at(68,12038,12105)"} true; + assume ($t22 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t1)); + + // assume Identical($t23, timestamp::spec_now_milliseconds()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:325:9+54 + assume {:print "$at(68,12203,12257)"} true; + assume ($t23 == $1_timestamp_spec_now_milliseconds($1_timestamp_CurrentTimeMicroseconds_$memory)); + + // assume Identical($t24, dao::$do_proposal_state<#0, #1>($t22, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:326:9+54 + assume {:print "$at(68,12266,12320)"} true; + assume ($t24 == $1_dao_$do_proposal_state'#0_#1'($t22, $t23)); + + // assume Identical($t25, global>($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:112:9+39 + assume {:print "$at(68,3375,3414)"} true; + assume ($t25 == $ResourceValue($1_dao_Vote'#0'_$memory, $t19)); + + // assume CanModify>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:134:9+61 + assume {:print "$at(68,4124,4185)"} true; + assume $1_dao_Proposal'#0_#1'_$modifies[$t1]; + + // @615 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:134:9+61 + $1_timestamp_CurrentTimeMicroseconds_$memory#615 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @613 := save_mem(dao::DaoGlobalInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:134:9+61 + $1_dao_DaoGlobalInfo'#0'_$memory#613 := $1_dao_DaoGlobalInfo'#0'_$memory; + + // @614 := save_mem(dao::Proposal<#0, #1>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:134:9+61 + $1_dao_Proposal'#0_#1'_$memory#614 := $1_dao_Proposal'#0_#1'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$at(67,7807,7808)"} true; + assume {:print "$track_local(50,0,0):", $t0} $t0 == $t0; + + // trace_local[proposer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$track_local(50,0,1):", $t1} $t1 == $t1; + + // trace_local[proposal_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$track_local(50,0,2):", $t2} $t2 == $t2; + + // trace_local[stake]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$track_local(50,0,3):", $t3} $t3 == $t3; + + // trace_local[agree]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:220:5+1 + assume {:print "$track_local(50,0,4):", $t4} $t4 == $t4; + + // assume Identical($t26, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:337:9+67 + assume {:print "$at(68,12696,12763)"} true; + assume ($t26 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t1)); + + // $t27 := dao::proposal_state<#0, #1>($t1, $t2) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:228:25+62 + assume {:print "$at(67,8090,8152)"} true; + call $t27 := $1_dao_proposal_state'#0_#1'($t1, $t2); + if ($abort_flag) { + assume {:print "$at(67,8090,8152)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t29 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:30+6 + assume {:print "$at(67,8247,8253)"} true; + $t29 := 2; + assume $IsValid'u8'($t29); + + // $t30 := ==($t27, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:27+2 + $t30 := $IsEqual'u8'($t27, $t29); + + // if ($t30) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 + if ($t30) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 + assume {:print "$at(67,8230,8304)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 +L0: + + // $t31 := 1403 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:59+26 + assume {:print "$at(67,8276,8302)"} true; + $t31 := 1403; + assume $IsValid'u64'($t31); + + // $t32 := error::invalid_state($t31) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:38+48 + call $t32 := $1_error_invalid_state($t31); + if ($abort_flag) { + assume {:print "$at(67,8255,8303)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 + assume {:print "$at(67,8230,8304)"} true; + assume {:print "$track_abort(50,0):", $t32} $t32 == $t32; + + // $t28 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 + $t28 := $t32; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:230:13+74 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:232:69+16 + assume {:print "$at(67,8385,8401)"} true; +L2: + + // assert CanModify>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:232:24+17 + assume {:print "$at(67,8340,8357)"} true; + assert {:msg "assert_failed(67,8340,8357): caller does not have permission to modify `dao::Proposal<#0, #1>` at given address"} + $1_dao_Proposal'#0_#1'_$modifies[$t1]; + + // $t33 := borrow_global>($t1) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:232:24+17 + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t33 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(67,8340,8357)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_local[proposal]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:232:13+8 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t33); + assume {:print "$track_local(50,0,14):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // $t34 := get_field>.id($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:17+11 + assume {:print "$at(67,8420,8431)"} true; + $t34 := $Dereference($t33)->$id; + + // $t35 := ==($t34, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:29+2 + $t35 := $IsEqual'u64'($t34, $t2); + + // if ($t35) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + if ($t35) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + assume {:print "$at(67,8412,8498)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 +L3: + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t33))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t33)->$action->$vec) <= 1); + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + assume {:print "$at(67,8412,8498)"} true; + + // $t36 := 1404 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:69+24 + $t36 := 1404; + assume $IsValid'u64'($t36); + + // $t37 := error::invalid_argument($t36) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:45+49 + call $t37 := $1_error_invalid_argument($t36); + if ($abort_flag) { + assume {:print "$at(67,8448,8497)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + assume {:print "$at(67,8412,8498)"} true; + assume {:print "$track_abort(50,0):", $t37} $t37 == $t37; + + // $t28 := move($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + $t28 := $t37; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:233:9+86 + goto L16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:234:41+6 + assume {:print "$at(67,8540,8546)"} true; +L5: + + // $t38 := signer::address_of($t0) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:234:22+26 + assume {:print "$at(67,8521,8547)"} true; + call $t38 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(67,8521,8547)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_local[sender]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:234:13+6 + assume {:print "$track_local(50,0,15):", $t38} $t38 == $t38; + + // $t39 := exists>($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:31+6 + assume {:print "$at(67,8579,8585)"} true; + $t39 := $ResourceExists($1_dao_Vote'#0'_$memory, $t38); + + // if ($t39) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:27+784 + if ($t39) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:236:13+53 + assume {:print "$at(67,8623,8676)"} true; +L7: + + // $t40 := borrow_global>($t38) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:236:27+17 + assume {:print "$at(67,8637,8654)"} true; + if (!$ResourceExists($1_dao_Vote'#0'_$memory, $t38)) { + call $ExecFailureAbort(); + } else { + $t40 := $Mutation($Global($t38), EmptyVec(), $ResourceValue($1_dao_Vote'#0'_$memory, $t38)); + } + if ($abort_flag) { + assume {:print "$at(67,8637,8654)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_local[my_vote]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:236:17+7 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t40); + assume {:print "$track_local(50,0,12):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // $t41 := get_field>.id($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:21+10 + assume {:print "$at(67,8698,8708)"} true; + $t41 := $Dereference($t40)->$id; + + // $t42 := ==($t41, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:32+2 + $t42 := $IsEqual'u64'($t41, $t2); + + // if ($t42) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + if ($t42) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + assume {:print "$at(67,8690,8775)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 +L8: + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t33))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t33)->$action->$vec) <= 1); + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + assume {:print "$at(67,8690,8775)"} true; + + // drop($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + + // $t43 := 1410 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:72+24 + $t43 := 1410; + assume $IsValid'u64'($t43); + + // $t44 := error::invalid_argument($t43) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:48+49 + call $t44 := $1_error_invalid_argument($t43); + if ($abort_flag) { + assume {:print "$at(67,8725,8774)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_abort($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + assume {:print "$at(67,8690,8775)"} true; + assume {:print "$track_abort(50,0):", $t44} $t44 == $t44; + + // $t28 := move($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + $t28 := $t44; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:237:13+85 + goto L16; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:21+7 + assume {:print "$at(67,8797,8804)"} true; +L10: + + // $t45 := get_field>.agree($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:21+13 + assume {:print "$at(67,8797,8810)"} true; + $t45 := $Dereference($t40)->$agree; + + // $t46 := ==($t45, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:35+2 + $t46 := $IsEqual'bool'($t45, $t4); + + // if ($t46) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + if ($t46) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + assume {:print "$at(67,8789,8867)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 +L11: + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t33))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t33)->$action->$vec) <= 1); + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + assume {:print "$at(67,8789,8867)"} true; + + // drop($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + + // $t47 := 1408 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:66+23 + $t47 := 1408; + assume $IsValid'u64'($t47); + + // $t48 := error::invalid_state($t47) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:45+45 + call $t48 := $1_error_invalid_state($t47); + if ($abort_flag) { + assume {:print "$at(67,8821,8866)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + assume {:print "$at(67,8789,8867)"} true; + assume {:print "$track_abort(50,0):", $t48} $t48 == $t48; + + // $t28 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + $t28 := $t48; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:238:13+78 + goto L16; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:240:26+8 + assume {:print "$at(67,8895,8903)"} true; +L13: + + // dao::do_cast_vote<#0, #1>($t33, $t40, $t3) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:240:13+38 + assume {:print "$at(67,8882,8920)"} true; + call $t33,$t40 := $1_dao_do_cast_vote'#0_#1'($t33, $t40, $t3); + if ($abort_flag) { + assume {:print "$at(67,8882,8920)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t33))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t33)->$action->$vec) <= 1); + + // write_back[dao::Proposal<#0, #1>@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:240:13+38 + assume {:print "$at(67,8882,8920)"} true; + $1_dao_Proposal'#0_#1'_$memory := $ResourceUpdate($1_dao_Proposal'#0_#1'_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // $t49 := get_field>.stake($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:241:25+14 + assume {:print "$at(67,8946,8960)"} true; + $t49 := $Dereference($t40)->$stake; + + // write_back[dao::Vote<#0>@]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:241:25+14 + $1_dao_Vote'#0'_$memory := $ResourceUpdate($1_dao_Vote'#0'_$memory, $GlobalLocationAddress($t40), + $Dereference($t40)); + + // $t5 := coin::value<#0>($t49) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:241:13+27 + call $t5 := $1_coin_value'#0'($t49); + if ($abort_flag) { + assume {:print "$at(67,8934,8961)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:27+784 + assume {:print "$at(67,8575,9359)"} true; + goto L14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:244:27+16 + assume {:print "$at(67,9046,9062)"} true; +L6: + + // $t50 := coin::zero<#0>() on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:246:24+12 + assume {:print "$at(67,9120,9132)"} true; + call $t50 := $1_coin_zero'#0'(); + if ($abort_flag) { + assume {:print "$at(67,9120,9132)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t13 := pack dao::Vote<#0>($t1, $t2, $t50, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:243:27+165 + assume {:print "$at(67,9005,9170)"} true; + $t13 := $1_dao_Vote'#0'($t1, $t2, $t50, $t4); + + // trace_local[my_vote#1]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:243:17+7 + assume {:print "$track_local(50,0,13):", $t13} $t13 == $t13; + + // $t51 := borrow_local($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:249:36+12 + assume {:print "$at(67,9207,9219)"} true; + $t51 := $Mutation($Local(13), EmptyVec(), $t13); + + // dao::do_cast_vote<#0, #1>($t33, $t51, $t3) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:249:13+43 + call $t33,$t51 := $1_dao_do_cast_vote'#0_#1'($t33, $t51, $t3); + if ($abort_flag) { + assume {:print "$at(67,9184,9227)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t33))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t33)->$action->$vec) <= 1); + + // write_back[dao::Proposal<#0, #1>@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:249:13+43 + assume {:print "$at(67,9184,9227)"} true; + $1_dao_Proposal'#0_#1'_$memory := $ResourceUpdate($1_dao_Proposal'#0_#1'_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // write_back[LocalRoot($t13)@]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:249:13+43 + $t13 := $Dereference($t51); + + // trace_local[my_vote#1]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:249:13+43 + assume {:print "$track_local(50,0,13):", $t13} $t13 == $t13; + + // $t52 := copy($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:250:44+7 + assume {:print "$at(67,9272,9279)"} true; + $t52 := $t13; + + // $t53 := get_field>.stake($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:250:43+14 + $t53 := $t52->$stake; + + // $t54 := coin::value<#0>($t53) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:250:31+27 + call $t54 := $1_coin_value'#0'($t53); + if ($abort_flag) { + assume {:print "$at(67,9259,9286)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // trace_local[total_voted]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:250:17+11 + assume {:print "$track_local(50,0,16):", $t54} $t54 == $t54; + + // $t55 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:251:29+7 + assume {:print "$at(67,9316,9323)"} true; + $t55 := $t13; + + // move_to>($t55, $t0) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:251:13+7 + if ($ResourceExists($1_dao_Vote'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_dao_Vote'#0'_$memory := $ResourceUpdate($1_dao_Vote'#0'_$memory, $t0->$addr, $t55); + } + if ($abort_flag) { + assume {:print "$at(67,9300,9307)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t5 := $t54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:27+784 + assume {:print "$at(67,8575,9359)"} true; + $t5 := $t54; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:27+784 +L14: + + // trace_local[total_voted#3]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:235:13+11 + assume {:print "$at(67,8561,8572)"} true; + assume {:print "$track_local(50,0,17):", $t5} $t5 == $t5; + + // $t56 := stc_util::token_issuer<#0>() on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:256:65+32 + assume {:print "$at(67,9448,9480)"} true; + call $t56 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,9448,9480)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t57 := borrow_global>($t56) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:256:24+17 + if (!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory, $t56)) { + call $ExecFailureAbort(); + } else { + $t57 := $Mutation($Global($t56), EmptyVec(), $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $t56)); + } + if ($abort_flag) { + assume {:print "$at(67,9407,9424)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t58 := borrow_field>.vote_changed_event($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:258:13+32 + assume {:print "$at(67,9522,9554)"} true; + $t58 := $ChildMutation($t57, 2, $Dereference($t57)->$vote_changed_event); + + // $t59 := (u128)($t5) on_abort goto L16 with $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:264:23+21 + assume {:print "$at(67,9736,9757)"} true; + call $t59 := $CastU128($t5); + if ($abort_flag) { + assume {:print "$at(67,9736,9757)"} true; + $t28 := $abort_code; + assume {:print "$track_abort(50,0):", $t28} $t28 == $t28; + goto L16; + } + + // $t60 := pack dao::VoteChangedEvent($t2, $t38, $t1, $t4, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:259:13+204 + assume {:print "$at(67,9568,9772)"} true; + $t60 := $1_dao_VoteChangedEvent($t2, $t38, $t1, $t4, $t59); + + // opaque begin: event::emit_event($t58, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:257:9+292 + assume {:print "$at(67,9491,9783)"} true; + + // opaque end: event::emit_event($t58, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:257:9+292 + + // write_back[Reference($t57).vote_changed_event (event::EventHandle)]($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:257:9+292 + $t57 := $UpdateMutation($t57, $Update'$1_dao_DaoGlobalInfo'#0''_vote_changed_event($Dereference($t57), $Dereference($t58))); + + // write_back[dao::DaoGlobalInfo<#0>@]($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:257:9+292 + $1_dao_DaoGlobalInfo'#0'_$memory := $ResourceUpdate($1_dao_DaoGlobalInfo'#0'_$memory, $GlobalLocationAddress($t57), + $Dereference($t57)); + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:267:5+1 + assume {:print "$at(67,9789,9790)"} true; +L15: + + // assert Not(Not(exists[@613]>($t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:36:9+53 + assume {:print "$at(68,998,1051)"} true; + assert {:msg "assert_failed(68,998,1051): function does not abort under this condition"} + !!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#613, $t21); + + // assert Not(Not(exists[@614]>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:319:9+63 + assume {:print "$at(68,11965,12028)"} true; + assert {:msg "assert_failed(68,11965,12028): function does not abort under this condition"} + !!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#614, $t1); + + // assert Not(Neq(select dao::Proposal.id>($t22), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:322:9+37 + assume {:print "$at(68,12114,12151)"} true; + assert {:msg "assert_failed(68,12114,12151): function does not abort under this condition"} + !!$IsEqual'u64'($t22->$id, $t2); + + // assert Not(forall s: u8: $t18: Neq(s, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:327:9+52 + assume {:print "$at(68,12329,12381)"} true; + assert {:msg "assert_failed(68,12329,12381): function does not abort under this condition"} + !(var $range_0 := $t18; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t24))))); + + // assert Not(Not(exists[@615](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:46:9+98 + assume {:print "$at(68,1332,1430)"} true; + assert {:msg "assert_failed(68,1332,1430): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#615, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(And($t20, Neq(select dao::Vote.id>($t25), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:113:9+33 + assume {:print "$at(68,3423,3456)"} true; + assert {:msg "assert_failed(68,3423,3456): function does not abort under this condition"} + !($t20 && !$IsEqual'u64'($t25->$id, $t2)); + + // assert Not(And($t20, Neq(select dao::Vote.agree>($t25), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:114:9+30 + assume {:print "$at(68,3465,3495)"} true; + assert {:msg "assert_failed(68,3465,3495): function does not abort under this condition"} + !($t20 && !$IsEqual'bool'($t25->$agree, $t4)); + + // assert Not(And($t20, Gt(Add(select coin::Coin.value>(select dao::Vote.stake>($t25)), select coin::Coin.value>($t3)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:115:9+52 + assume {:print "$at(68,3504,3556)"} true; + assert {:msg "assert_failed(68,3504,3556): function does not abort under this condition"} + !($t20 && (($t25->$stake->$value + $t3->$value) > 340282366920938463463374607431768211455)); + + // assert Implies(Not($t20), Eq(select coin::Coin.value>(select dao::Vote.stake>(global>($t19))), select coin::Coin.value>($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:135:9+81 + assume {:print "$at(68,4194,4275)"} true; + assert {:msg "assert_failed(68,4194,4275): post-condition does not hold"} + (!$t20 ==> $IsEqual'u64'($ResourceValue($1_dao_Vote'#0'_$memory, $t19)->$stake->$value, $t3->$value)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:135:9+81 + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:267:5+1 + assume {:print "$at(67,9789,9790)"} true; +L16: + + // assert Or(Or(Or(Or(Or(Or(Or(Not(exists[@613]>($t21)), Not(exists[@614]>($t1))), Neq(select dao::Proposal.id>($t22), $t2)), forall s: u8: $t18: Neq(s, $t24)), Not(exists[@615](system_addresses::$get_starcoin_framework[]()))), And($t20, Neq(select dao::Vote.id>($t25), $t2))), And($t20, Neq(select dao::Vote.agree>($t25), $t4))), And($t20, Gt(Add(select coin::Coin.value>(select dao::Vote.stake>($t25)), select coin::Coin.value>($t3)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:118:5+713 + assume {:print "$at(68,3568,4281)"} true; + assert {:msg "assert_failed(68,3568,4281): abort not covered by any of the `aborts_if` clauses"} + (((((((!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#613, $t21) || !$ResourceExists($1_dao_Proposal'#0_#1'_$memory#614, $t1)) || !$IsEqual'u64'($t22->$id, $t2)) || (var $range_0 := $t18; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t24)))))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#615, $1_system_addresses_$get_starcoin_framework())) || ($t20 && !$IsEqual'u64'($t25->$id, $t2))) || ($t20 && !$IsEqual'bool'($t25->$agree, $t4))) || ($t20 && (($t25->$stake->$value + $t3->$value) > 340282366920938463463374607431768211455))); + + // abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:118:5+713 + $abort_code := $t28; + $abort_flag := true; + return; + +} + +// fun dao::destroy_terminated_proposal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+912 +procedure {:timeLimit 80} $1_dao_destroy_terminated_proposal$verify(_$t0: int, _$t1: int) returns () +{ + // declare local variables + var $t2: bool; + var $t3: $1_option_Option'#1'; + var $t4: int; + var $t5: Vec (int); + var $t6: $1_dao_Proposal'#0_#1'; + var $t7: int; + var $t8: int; + var $t9: $1_dao_Proposal'#0_#1'; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: $1_dao_Proposal'#0_#1'; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $1_option_Option'#1'; + var $t29: int; + var $t30: bool; + var $t31: $Mutation ($1_option_Option'#1'); + var $t32: #1; + var $t33: $1_option_Option'#1'; + var $t34: bool; + var $t35: $1_option_Option'#1'; + var $t36: bool; + var $t0: int; + var $t1: int; + var $1_dao_Proposal'#0_#1'_$modifies: [int]bool; + var $temp_0'$1_option_Option'#1'': $1_option_Option'#1'; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $1_dao_Proposal'#0_#1'_$memory#628: $Memory $1_dao_Proposal'#0_#1'; + var $1_timestamp_CurrentTimeMicroseconds_$memory#629: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+1 + assume {:print "$at(67,17671,17672)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463: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: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+912 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t5, ConcatVec(SingleVec(3), SingleVec(7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:280:9+60 + assume {:print "$at(68,10259,10319)"} true; + assume ($t5 == ConcatVec(MakeVec1(3), MakeVec1(7))); + + // assume Identical($t6, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:286:9+67 + assume {:print "$at(68,10547,10614)"} true; + assume ($t6 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // assume Identical($t7, timestamp::spec_now_milliseconds()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:289:9+54 + assume {:print "$at(68,10711,10765)"} true; + assume ($t7 == $1_timestamp_spec_now_milliseconds($1_timestamp_CurrentTimeMicroseconds_$memory)); + + // assume Identical($t8, dao::$do_proposal_state<#0, #1>($t6, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:290:9+54 + assume {:print "$at(68,10774,10828)"} true; + assume ($t8 == $1_dao_$do_proposal_state'#0_#1'($t6, $t7)); + + // assume CanModify>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:294:9+61 + assume {:print "$at(68,11131,11192)"} true; + assume $1_dao_Proposal'#0_#1'_$modifies[$t0]; + + // @629 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:294:9+61 + $1_timestamp_CurrentTimeMicroseconds_$memory#629 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @628 := save_mem(dao::Proposal<#0, #1>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:294:9+61 + $1_dao_Proposal'#0_#1'_$memory#628 := $1_dao_Proposal'#0_#1'_$memory; + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+1 + assume {:print "$at(67,17671,17672)"} true; + assume {:print "$track_local(50,2,0):", $t0} $t0 == $t0; + + // trace_local[proposal_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:463:5+1 + assume {:print "$track_local(50,2,1):", $t1} $t1 == $t1; + + // assume Identical($t9, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:337:9+67 + assume {:print "$at(68,12696,12763)"} true; + assume ($t9 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // $t10 := dao::proposal_state<#0, #1>($t0, $t1) on_abort goto L9 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:467:30+62 + assume {:print "$at(67,17871,17933)"} true; + call $t10 := $1_dao_proposal_state'#0_#1'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(67,17871,17933)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(50,2):", $t11} $t11 == $t11; + goto L9; + } + + // trace_local[proposal_state]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:467:13+14 + assume {:print "$track_local(50,2,4):", $t10} $t10 == $t10; + + // $t12 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:31+8 + assume {:print "$at(67,17982,17990)"} true; + $t12 := 3; + assume $IsValid'u8'($t12); + + // $t13 := ==($t10, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:28+2 + $t13 := $IsEqual'u8'($t10, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 +L1: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 + assume {:print "$at(67,17964,18021)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // $t2 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 + $t2 := $t14; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:43+14 +L0: + + // $t15 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:61+9 + assume {:print "$at(67,18012,18021)"} true; + $t15 := 7; + assume $IsValid'u8'($t15); + + // $t2 := ==($t10, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:58+2 + $t2 := $IsEqual'u8'($t10, $t15); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:469:13+57 +L2: + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 + assume {:print "$at(67,17943,18094)"} true; + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 + assume {:print "$at(67,17943,18094)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:470:34+26 + assume {:print "$at(67,18056,18082)"} true; +L3: + + // $t16 := 1403 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:470:34+26 + assume {:print "$at(67,18056,18082)"} true; + $t16 := 1403; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_state($t16) on_abort goto L9 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:470:13+48 + call $t17 := $1_error_invalid_state($t16); + if ($abort_flag) { + assume {:print "$at(67,18035,18083)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(50,2):", $t11} $t11 == $t11; + goto L9; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 + assume {:print "$at(67,17943,18094)"} true; + assume {:print "$track_abort(50,2):", $t17} $t17 == $t17; + + // $t11 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 + $t11 := $t17; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:468:9+151 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:483:50+16 + assume {:print "$at(67,18418,18434)"} true; +L5: + + // assert CanModify>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:483:13+9 + assume {:print "$at(67,18381,18390)"} true; + assert {:msg "assert_failed(67,18381,18390): caller does not have permission to modify `dao::Proposal<#0, #1>` at given address"} + $1_dao_Proposal'#0_#1'_$modifies[$t0]; + + // $t18 := move_from>($t0) on_abort goto L9 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:483:13+9 + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0); + $1_dao_Proposal'#0_#1'_$memory := $ResourceRemove($1_dao_Proposal'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,18381,18390)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(50,2):", $t11} $t11 == $t11; + goto L9; + } + + // ($t19, $t20, $t21, $t22, $t23, $t24, $t25, $t26, $t27, $t28) := unpack dao::Proposal<#0, #1>($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:472:13+270 + assume {:print "$at(67,18108,18378)"} true; + $t19 := $t18->$id; + $t20 := $t18->$proposer; + $t21 := $t18->$start_time; + $t22 := $t18->$end_time; + $t23 := $t18->$for_votes; + $t24 := $t18->$against_votes; + $t25 := $t18->$eta; + $t26 := $t18->$action_delay; + $t27 := $t18->$quorum_votes; + $t28 := $t18->$action; + + // $t3 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:482:13+6 + assume {:print "$at(67,18361,18367)"} true; + $t3 := $t28; + + // trace_local[action]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:482:13+6 + assume {:print "$track_local(50,2,3):", $t3} $t3 == $t3; + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:481:27+1 + assume {:print "$at(67,18346,18347)"} true; + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:480:27+1 + assume {:print "$at(67,18317,18318)"} true; + + // drop($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:479:18+1 + assume {:print "$at(67,18288,18289)"} true; + + // drop($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:478:28+1 + assume {:print "$at(67,18268,18269)"} true; + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:477:24+1 + assume {:print "$at(67,18238,18239)"} true; + + // drop($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:476:23+1 + assume {:print "$at(67,18212,18213)"} true; + + // drop($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:475:25+1 + assume {:print "$at(67,18187,18188)"} true; + + // drop($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:474:23+1 + assume {:print "$at(67,18160,18161)"} true; + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:473:17+1 + assume {:print "$at(67,18135,18136)"} true; + + // $t29 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:484:31+8 + assume {:print "$at(67,18467,18475)"} true; + $t29 := 3; + assume $IsValid'u8'($t29); + + // $t30 := ==($t10, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:484:28+2 + $t30 := $IsEqual'u8'($t10, $t29); + + // if ($t30) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:484:9+93 + if ($t30) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:37+11 + assume {:print "$at(67,18515,18526)"} true; +L7: + + // $t31 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:37+11 + assume {:print "$at(67,18515,18526)"} true; + $t31 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t32 := opaque begin: option::extract<#1>($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + + // $t33 := read_ref($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + $t33 := $Dereference($t31); + + // assume Identical($t34, option::spec_is_none<#1>($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume ($t34 == $1_option_spec_is_none'#1'($Dereference($t31))); + + // if ($t34) goto L11 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + if ($t34) { goto L11; } else { goto L14; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 +L11: + + // assume And(option::spec_is_none<#1>($t31), Eq(262145, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume {:print "$at(67,18499,18527)"} true; + assume ($1_option_spec_is_none'#1'($Dereference($t31)) && $IsEqual'num'(262145, $t11)); + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume {:print "$at(67,18499,18527)"} true; + assume {:print "$track_abort(50,2):", $t11} $t11 == $t11; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + goto L9; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 +L10: + + // $t31 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume {:print "$at(67,18499,18527)"} true; + havoc $temp_0'$1_option_Option'#1''; + $t31 := $UpdateMutation($t31, $temp_0'$1_option_Option'#1''); + + // assume And(WellFormed($t31), Le(Len<#1>(select option::Option.vec($t31)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume ($IsValid'$1_option_Option'#1''($Dereference($t31)) && (LenVec($Dereference($t31)->$vec) <= 1)); + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume $IsValid'#1'($t32); + + // assume Eq<#1>($t32, option::spec_borrow<#1>($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume $IsEqual'#1'($t32, $1_option_spec_borrow'#1'($t33)); + + // assume option::spec_is_none<#1>($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume $1_option_spec_is_none'#1'($Dereference($t31)); + + // $t32 := opaque end: option::extract<#1>($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + + // assert Le(Len<#1>(select option::Option.vec($t31)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t31)->$vec) <= 1); + + // write_back[LocalRoot($t3)@]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume {:print "$at(67,18499,18527)"} true; + $t3 := $Dereference($t31); + + // trace_local[action]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:21+28 + assume {:print "$track_local(50,2,3):", $t3} $t3 == $t3; + + // drop($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:485:17+1 + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:30+6 + assume {:print "$at(67,18569,18575)"} true; +L6: + + // $t35 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:30+6 + assume {:print "$at(67,18569,18575)"} true; + $t35 := $t3; + + // opaque begin: option::destroy_none<#1>($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + + // assume Identical($t36, option::spec_is_some<#1>($t35)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + assume ($t36 == $1_option_spec_is_some'#1'($t35)); + + // if ($t36) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + if ($t36) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 +L13: + + // assume And(option::spec_is_some<#1>($t35), Eq(262144, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + assume {:print "$at(67,18548,18576)"} true; + assume ($1_option_spec_is_some'#1'($t35) && $IsEqual'num'(262144, $t11)); + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + assume {:print "$at(67,18548,18576)"} true; + assume {:print "$track_abort(50,2):", $t11} $t11 == $t11; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + goto L9; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 +L12: + + // opaque end: option::destroy_none<#1>($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:487:9+28 + assume {:print "$at(67,18548,18576)"} true; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:488:5+1 + assume {:print "$at(67,18582,18583)"} true; +L8: + + // assert Not(Neq(Len($t5), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:281:9+36 + assume {:print "$at(68,10328,10364)"} true; + assert {:msg "assert_failed(68,10328,10364): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t5), 2); + + // assert Not(Neq(Index($t5, 0), 3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:282:9+41 + assume {:print "$at(68,10373,10414)"} true; + assert {:msg "assert_failed(68,10373,10414): function does not abort under this condition"} + !!$IsEqual'u8'(ReadVec($t5, 0), 3); + + // assert Not(Neq(Index($t5, 1), 7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:283:9+42 + assume {:print "$at(68,10423,10465)"} true; + assert {:msg "assert_failed(68,10423,10465): function does not abort under this condition"} + !!$IsEqual'u8'(ReadVec($t5, 1), 7); + + // assert Not(Not(exists[@628]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:285:9+63 + assume {:print "$at(68,10475,10538)"} true; + assert {:msg "assert_failed(68,10475,10538): function does not abort under this condition"} + !!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#628, $t0); + + // assert Not(Neq(select dao::Proposal.id>($t6), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:287:9+37 + assume {:print "$at(68,10623,10660)"} true; + assert {:msg "assert_failed(68,10623,10660): function does not abort under this condition"} + !!$IsEqual'u64'($t6->$id, $t1); + + // assert Not(Not(exists[@629](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:46:9+98 + assume {:print "$at(68,1332,1430)"} true; + assert {:msg "assert_failed(68,1332,1430): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#629, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(forall s: u8: $t5: Neq(s, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:291:9+52 + assume {:print "$at(68,10837,10889)"} true; + assert {:msg "assert_failed(68,10837,10889): function does not abort under this condition"} + !(var $range_0 := $t5; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t8))))); + + // assert Not(And(Eq($t8, 3), option::$is_none[]<#1>(select dao::Proposal.action>(global[@628]>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:292:9+107 + assume {:print "$at(68,10898,11005)"} true; + assert {:msg "assert_failed(68,10898,11005): function does not abort under this condition"} + !($IsEqual'u8'($t8, 3) && $1_option_$is_none'#1'($ResourceValue($1_dao_Proposal'#0_#1'_$memory#628, $t0)->$action)); + + // assert Not(And(Eq($t8, 7), option::$is_some[]<#1>(select dao::Proposal.action>(global[@628]>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:293:9+108 + assume {:print "$at(68,11014,11122)"} true; + assert {:msg "assert_failed(68,11014,11122): function does not abort under this condition"} + !($IsEqual'u8'($t8, 7) && $1_option_$is_some'#1'($ResourceValue($1_dao_Proposal'#0_#1'_$memory#628, $t0)->$action)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:293:9+108 + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:488:5+1 + assume {:print "$at(67,18582,18583)"} true; +L9: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Neq(Len($t5), 2), Neq(Index($t5, 0), 3)), Neq(Index($t5, 1), 7)), Not(exists[@628]>($t0))), Neq(select dao::Proposal.id>($t6), $t1)), Not(exists[@629](system_addresses::$get_starcoin_framework[]()))), forall s: u8: $t5: Neq(s, $t8)), And(Eq($t8, 3), option::$is_none[]<#1>(select dao::Proposal.action>(global[@628]>($t0))))), And(Eq($t8, 7), option::$is_some[]<#1>(select dao::Proposal.action>(global[@628]>($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:279:5+982 + assume {:print "$at(68,10216,11198)"} true; + assert {:msg "assert_failed(68,10216,11198): abort not covered by any of the `aborts_if` clauses"} + ((((((((!$IsEqual'num'(LenVec($t5), 2) || !$IsEqual'u8'(ReadVec($t5, 0), 3)) || !$IsEqual'u8'(ReadVec($t5, 1), 7)) || !$ResourceExists($1_dao_Proposal'#0_#1'_$memory#628, $t0)) || !$IsEqual'u64'($t6->$id, $t1)) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#629, $1_system_addresses_$get_starcoin_framework())) || (var $range_0 := $t5; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t8)))))) || ($IsEqual'u8'($t8, 3) && $1_option_$is_none'#1'($ResourceValue($1_dao_Proposal'#0_#1'_$memory#628, $t0)->$action))) || ($IsEqual'u8'($t8, 7) && $1_option_$is_some'#1'($ResourceValue($1_dao_Proposal'#0_#1'_$memory#628, $t0)->$action))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:279:5+982 + $abort_code := $t11; + $abort_flag := true; + return; + + // label L14 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L14: + + // drop($t31) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + +} + +// fun dao::do_cast_vote<#0, #1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+494 +procedure {:inline 1} $1_dao_do_cast_vote'#0_#1'(_$t0: $Mutation ($1_dao_Proposal'#0_#1'), _$t1: $Mutation ($1_dao_Vote'#0'), _$t2: $1_coin_Coin'#0') returns ($ret0: $Mutation ($1_dao_Proposal'#0_#1'), $ret1: $Mutation ($1_dao_Vote'#0')) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $Mutation ($1_coin_Coin'#0'); + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation (int); + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation (int); + var $t0: $Mutation ($1_dao_Proposal'#0_#1'); + var $t1: $Mutation ($1_dao_Vote'#0'); + var $t2: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume {:print "$at(67,9797,9798)"} true; + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[stake]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume {:print "$track_local(50,3,2):", $t2} $t2 == $t2; + + // $t4 := coin::value<#0>($t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:275:27+19 + assume {:print "$at(67,10004,10023)"} true; + call $t4 := $1_coin_value'#0'($t2); + if ($abort_flag) { + assume {:print "$at(67,10004,10023)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[stake_value]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:275:13+11 + assume {:print "$track_local(50,3,3):", $t4} $t4 == $t4; + + // $t6 := borrow_field>.stake($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:21+15 + assume {:print "$at(67,10045,10060)"} true; + $t6 := $ChildMutation($t1, 2, $Dereference($t1)->$stake); + + // coin::merge<#0>($t6, $t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + call $t6 := $1_coin_merge'#0'($t6, $t2); + if ($abort_flag) { + assume {:print "$at(67,10033,10068)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[Reference($t1).stake (coin::Coin<#0>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Vote'#0''_stake($Dereference($t1), $Dereference($t6))); + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // $t7 := get_field>.agree($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:277:13+10 + assume {:print "$at(67,10082,10092)"} true; + $t7 := $Dereference($t1)->$agree; + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:277:9+206 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:34+8 + assume {:print "$at(67,10129,10137)"} true; +L1: + + // $t8 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:34+18 + assume {:print "$at(67,10129,10147)"} true; + $t8 := $Dereference($t0)->$for_votes; + + // $t9 := (u128)($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:55+21 + call $t9 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(67,10150,10171)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // $t10 := +($t8, $t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:53+1 + call $t10 := $AddU128_unchecked($t8, $t9); + if ($abort_flag) { + assume {:print "$at(67,10148,10149)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // $t11 := borrow_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+18 + $t11 := $ChildMutation($t0, 4, $Dereference($t0)->$for_votes); + + // write_ref($t11, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $t11 := $UpdateMutation($t11, $t10); + + // write_back[Reference($t0).for_votes (u128)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_for_votes($Dereference($t0), $Dereference($t11))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:76+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:38+8 + assume {:print "$at(67,10227,10235)"} true; +L0: + + // $t12 := get_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:38+22 + assume {:print "$at(67,10227,10249)"} true; + $t12 := $Dereference($t0)->$against_votes; + + // $t13 := (u128)($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:63+21 + call $t13 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(67,10252,10273)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // $t14 := +($t12, $t13) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:61+1 + call $t14 := $AddU128_unchecked($t12, $t13); + if ($abort_flag) { + assume {:print "$at(67,10250,10251)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(50,3):", $t5} $t5 == $t5; + goto L4; + } + + // $t15 := borrow_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+22 + $t15 := $ChildMutation($t0, 5, $Dereference($t0)->$against_votes); + + // write_ref($t15, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $t15 := $UpdateMutation($t15, $t14); + + // write_back[Reference($t0).against_votes (u128)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_against_votes($Dereference($t0), $Dereference($t15))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + assume {:print "$at(67,10284,10285)"} true; +L2: + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + assume {:print "$at(67,10284,10285)"} true; + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 + assume {:print "$at(67,10290,10291)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 + assume {:print "$at(67,10290,10291)"} true; + $ret0 := $t0; + $ret1 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 + assume {:print "$at(67,10290,10291)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun dao::do_cast_vote [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+494 +procedure {:timeLimit 80} $1_dao_do_cast_vote$verify(_$t0: $Mutation ($1_dao_Proposal'#0_#1'), _$t1: $Mutation ($1_dao_Vote'#0'), _$t2: $1_coin_Coin'#0') returns ($ret0: $Mutation ($1_dao_Proposal'#0_#1'), $ret1: $Mutation ($1_dao_Vote'#0')) +{ + // declare local variables + var $t3: int; + var $t4: $1_dao_Proposal'#0_#1'; + var $t5: $1_dao_Vote'#0'; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_coin_Coin'#0'); + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $Mutation (int); + var $t0: $Mutation ($1_dao_Proposal'#0_#1'); + var $t1: $Mutation ($1_dao_Vote'#0'); + var $t2: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + assume $t1->l == $Param(1); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t0))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume {:print "$at(67,9797,9798)"} true; + assume ($IsValid'$1_dao_Proposal'#0_#1''($Dereference($t0)) && (LenVec($Dereference($t0)->$action->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume $IsValid'$1_dao_Vote'#0''($Dereference($t1)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume $IsValid'$1_coin_Coin'#0''($t2); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + $t4 := $Dereference($t0); + + // $t5 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + $t5 := $Dereference($t1); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[stake]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:270:5+1 + assume {:print "$track_local(50,3,2):", $t2} $t2 == $t2; + + // $t6 := coin::value<#0>($t2) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:275:27+19 + assume {:print "$at(67,10004,10023)"} true; + call $t6 := $1_coin_value'#0'($t2); + if ($abort_flag) { + assume {:print "$at(67,10004,10023)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[stake_value]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:275:13+11 + assume {:print "$track_local(50,3,3):", $t6} $t6 == $t6; + + // $t8 := borrow_field>.stake($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:21+15 + assume {:print "$at(67,10045,10060)"} true; + $t8 := $ChildMutation($t1, 2, $Dereference($t1)->$stake); + + // coin::merge<#0>($t8, $t2) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + call $t8 := $1_coin_merge'#0'($t8, $t2); + if ($abort_flag) { + assume {:print "$at(67,10033,10068)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // write_back[Reference($t1).stake (coin::Coin<#0>)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Vote'#0''_stake($Dereference($t1), $Dereference($t8))); + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:276:9+35 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // $t9 := get_field>.agree($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:277:13+10 + assume {:print "$at(67,10082,10092)"} true; + $t9 := $Dereference($t1)->$agree; + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:277:9+206 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:34+8 + assume {:print "$at(67,10129,10137)"} true; +L1: + + // $t10 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:34+18 + assume {:print "$at(67,10129,10147)"} true; + $t10 := $Dereference($t0)->$for_votes; + + // $t11 := (u128)($t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:55+21 + call $t11 := $CastU128($t6); + if ($abort_flag) { + assume {:print "$at(67,10150,10171)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // $t12 := +($t10, $t11) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:53+1 + call $t12 := $AddU128_unchecked($t10, $t11); + if ($abort_flag) { + assume {:print "$at(67,10148,10149)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // $t13 := borrow_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+18 + $t13 := $ChildMutation($t0, 4, $Dereference($t0)->$for_votes); + + // write_ref($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $t13 := $UpdateMutation($t13, $t12); + + // write_back[Reference($t0).for_votes (u128)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_for_votes($Dereference($t0), $Dereference($t13))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:13+63 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:278:76+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:38+8 + assume {:print "$at(67,10227,10235)"} true; +L0: + + // $t14 := get_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:38+22 + assume {:print "$at(67,10227,10249)"} true; + $t14 := $Dereference($t0)->$against_votes; + + // $t15 := (u128)($t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:63+21 + call $t15 := $CastU128($t6); + if ($abort_flag) { + assume {:print "$at(67,10252,10273)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // $t16 := +($t14, $t15) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:61+1 + call $t16 := $AddU128_unchecked($t14, $t15); + if ($abort_flag) { + assume {:print "$at(67,10250,10251)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,3):", $t7} $t7 == $t7; + goto L4; + } + + // $t17 := borrow_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+22 + $t17 := $ChildMutation($t0, 5, $Dereference($t0)->$against_votes); + + // write_ref($t17, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $t17 := $UpdateMutation($t17, $t16); + + // write_back[Reference($t0).against_votes (u128)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_against_votes($Dereference($t0), $Dereference($t17))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:280:13+71 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + assume {:print "$at(67,10284,10285)"} true; +L2: + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + assume {:print "$at(67,10284,10285)"} true; + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,3,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$action->$vec) <= 1); + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:281:10+1 + assume {:print "$at(67,10284,10285)"} true; + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,3,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 + assume {:print "$at(67,10290,10291)"} true; +L3: + + // assert Not(Gt(Add(select coin::Coin.value>(select dao::Vote.stake>($t5)), select coin::Coin.value>($t2)), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:141:9+52 + assume {:print "$at(68,4367,4419)"} true; + assert {:msg "assert_failed(68,4367,4419): function does not abort under this condition"} + !(($t5->$stake->$value + $t2->$value) > 340282366920938463463374607431768211455); + + // assert Eq(select coin::Coin.value>(select dao::Vote.stake>($t1)), Add(select coin::Coin.value>(select dao::Vote.stake>($t5)), select coin::Coin.value>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:142:9+64 + assume {:print "$at(68,4428,4492)"} true; + assert {:msg "assert_failed(68,4428,4492): post-condition does not hold"} + $IsEqual'u64'($Dereference($t1)->$stake->$value, ($t5->$stake->$value + $t2->$value)); + + // assert Implies(select dao::Vote.agree>($t1), Eq(Add(select dao::Proposal.for_votes>($t4), select coin::Coin.value>($t2)), select dao::Proposal.for_votes>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:143:9+83 + assume {:print "$at(68,4501,4584)"} true; + assert {:msg "assert_failed(68,4501,4584): post-condition does not hold"} + ($Dereference($t1)->$agree ==> $IsEqual'num'(($t4->$for_votes + $t2->$value), $Dereference($t0)->$for_votes)); + + // assert Implies(select dao::Vote.agree>($t1), Eq(select dao::Proposal.against_votes>($t4), select dao::Proposal.against_votes>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:144:9+77 + assume {:print "$at(68,4593,4670)"} true; + assert {:msg "assert_failed(68,4593,4670): post-condition does not hold"} + ($Dereference($t1)->$agree ==> $IsEqual'u128'($t4->$against_votes, $Dereference($t0)->$against_votes)); + + // assert Implies(Not(select dao::Vote.agree>($t1)), Eq(Add(select dao::Proposal.against_votes>($t4), select coin::Coin.value>($t2)), select dao::Proposal.against_votes>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:145:9+92 + assume {:print "$at(68,4679,4771)"} true; + assert {:msg "assert_failed(68,4679,4771): post-condition does not hold"} + (!$Dereference($t1)->$agree ==> $IsEqual'num'(($t4->$against_votes + $t2->$value), $Dereference($t0)->$against_votes)); + + // assert Implies(Not(select dao::Vote.agree>($t1)), Eq(select dao::Proposal.for_votes>($t4), select dao::Proposal.for_votes>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:146:9+70 + assume {:print "$at(68,4780,4850)"} true; + assert {:msg "assert_failed(68,4780,4850): post-condition does not hold"} + (!$Dereference($t1)->$agree ==> $IsEqual'u128'($t4->$for_votes, $Dereference($t0)->$for_votes)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:146:9+70 + $ret0 := $t0; + $ret1 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:282:5+1 + assume {:print "$at(67,10290,10291)"} true; +L4: + + // assert Gt(Add(select coin::Coin.value>(select dao::Vote.stake>($t5)), select coin::Coin.value>($t2)), 340282366920938463463374607431768211455) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:139:5+568 + assume {:print "$at(68,4288,4856)"} true; + assert {:msg "assert_failed(68,4288,4856): abort not covered by any of the `aborts_if` clauses"} + (($t5->$stake->$value + $t2->$value) > 340282366920938463463374607431768211455); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:139:5+568 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun dao::do_flip_vote [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+626 +procedure {:timeLimit 80} $1_dao_do_flip_vote$verify(_$t0: $Mutation ($1_dao_Vote'#0'), _$t1: $Mutation ($1_dao_Proposal'#0_#1')) returns ($ret0: int, $ret1: $Mutation ($1_dao_Vote'#0'), $ret2: $Mutation ($1_dao_Proposal'#0_#1')) +{ + // declare local variables + var $t2: int; + var $t3: $1_dao_Vote'#0'; + var $t4: $1_dao_Proposal'#0_#1'; + var $t5: bool; + var $t6: bool; + var $t7: $Mutation (bool); + var $t8: $1_coin_Coin'#0'; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $Mutation (int); + var $t16: int; + var $t17: int; + var $t18: $Mutation (int); + var $t19: int; + var $t20: int; + var $t21: $Mutation (int); + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t0: $Mutation ($1_dao_Vote'#0'); + var $t1: $Mutation ($1_dao_Proposal'#0_#1'); + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + assume $t1->l == $Param(1); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume {:print "$at(67,11961,11962)"} true; + assume $IsValid'$1_dao_Vote'#0''($Dereference($t0)); + + // assume And(WellFormed($t1), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t1))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume ($IsValid'$1_dao_Proposal'#0_#1''($Dereference($t1)) && (LenVec($Dereference($t1)->$action->$vec) <= 1)); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + $t3 := $Dereference($t0); + + // $t4 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + $t4 := $Dereference($t1); + + // trace_local[my_vote]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t0); + assume {:print "$track_local(50,4,0):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:324:5+1 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // $t5 := get_field>.agree($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:26+13 + assume {:print "$at(67,12141,12154)"} true; + $t5 := $Dereference($t0)->$agree; + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:25+1 + call $t6 := $Not($t5); + + // $t7 := borrow_field>.agree($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:9+13 + $t7 := $ChildMutation($t0, 3, $Dereference($t0)->$agree); + + // write_ref($t7, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:9+30 + $t7 := $UpdateMutation($t7, $t6); + + // write_back[Reference($t0).agree (bool)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:9+30 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Vote'#0''_agree($Dereference($t0), $Dereference($t7))); + + // trace_local[my_vote]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:328:9+30 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t0); + assume {:print "$track_local(50,4,0):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // $t8 := get_field>.stake($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:329:40+14 + assume {:print "$at(67,12195,12209)"} true; + $t8 := $Dereference($t0)->$stake; + + // $t9 := coin::value<#0>($t8) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:329:28+27 + call $t9 := $1_coin_value'#0'($t8); + if ($abort_flag) { + assume {:print "$at(67,12183,12210)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := (u128)($t9) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:329:27+37 + call $t11 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(67,12182,12219)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[total_voted]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:329:13+11 + assume {:print "$track_local(50,4,2):", $t11} $t11 == $t11; + + // $t12 := get_field>.agree($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:330:13+13 + assume {:print "$at(67,12233,12246)"} true; + $t12 := $Dereference($t0)->$agree; + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:330:9+331 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:34+8 + assume {:print "$at(67,12283,12291)"} true; +L1: + + // $t13 := get_field>.for_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:34+18 + assume {:print "$at(67,12283,12301)"} true; + $t13 := $Dereference($t1)->$for_votes; + + // $t14 := +($t13, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:53+1 + call $t14 := $AddU128($t13, $t11); + if ($abort_flag) { + assume {:print "$at(67,12302,12303)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // $t15 := borrow_field>.for_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:13+18 + $t15 := $ChildMutation($t1, 4, $Dereference($t1)->$for_votes); + + // write_ref($t15, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:13+53 + $t15 := $UpdateMutation($t15, $t14); + + // write_back[Reference($t1).for_votes (u128)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:13+53 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Proposal'#0_#1''_for_votes($Dereference($t1), $Dereference($t15))); + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:331:13+53 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // $t16 := get_field>.against_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:38+22 + assume {:print "$at(67,12354,12376)"} true; + $t16 := $Dereference($t1)->$against_votes; + + // $t17 := -($t16, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:61+1 + call $t17 := $Sub($t16, $t11); + if ($abort_flag) { + assume {:print "$at(67,12377,12378)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // $t18 := borrow_field>.against_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:13+22 + $t18 := $ChildMutation($t1, 5, $Dereference($t1)->$against_votes); + + // write_ref($t18, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:13+61 + $t18 := $UpdateMutation($t18, $t17); + + // write_back[Reference($t1).against_votes (u128)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:13+61 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Proposal'#0_#1''_against_votes($Dereference($t1), $Dereference($t18))); + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:13+61 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:332:74+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:34+8 + assume {:print "$at(67,12442,12450)"} true; +L0: + + // $t19 := get_field>.for_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:34+18 + assume {:print "$at(67,12442,12460)"} true; + $t19 := $Dereference($t1)->$for_votes; + + // $t20 := -($t19, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:53+1 + call $t20 := $Sub($t19, $t11); + if ($abort_flag) { + assume {:print "$at(67,12461,12462)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // $t21 := borrow_field>.for_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:13+18 + $t21 := $ChildMutation($t1, 4, $Dereference($t1)->$for_votes); + + // write_ref($t21, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:13+53 + $t21 := $UpdateMutation($t21, $t20); + + // write_back[Reference($t1).for_votes (u128)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:13+53 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Proposal'#0_#1''_for_votes($Dereference($t1), $Dereference($t21))); + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:334:13+53 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // $t22 := get_field>.against_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:38+22 + assume {:print "$at(67,12513,12535)"} true; + $t22 := $Dereference($t1)->$against_votes; + + // $t23 := +($t22, $t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:61+1 + call $t23 := $AddU128($t22, $t11); + if ($abort_flag) { + assume {:print "$at(67,12536,12537)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,4):", $t10} $t10 == $t10; + goto L4; + } + + // $t24 := borrow_field>.against_votes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:13+22 + $t24 := $ChildMutation($t1, 5, $Dereference($t1)->$against_votes); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:13+61 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t1).against_votes (u128)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:13+61 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Proposal'#0_#1''_against_votes($Dereference($t1), $Dereference($t24))); + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:335:13+61 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:337:9+11 + assume {:print "$at(67,12570,12581)"} true; +L2: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:337:9+11 + assume {:print "$at(67,12570,12581)"} true; + assume {:print "$track_return(50,4,0):", $t11} $t11 == $t11; + + // trace_local[my_vote]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:337:9+11 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t0); + assume {:print "$track_local(50,4,0):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[proposal]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:337:9+11 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t1); + assume {:print "$track_local(50,4,1):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t1))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$action->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:338:5+1 + assume {:print "$at(67,12586,12587)"} true; +L3: + + // assert Not(And(select dao::Vote.agree>($t3), Lt(select dao::Proposal.for_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:182:9+68 + assume {:print "$at(68,6123,6191)"} true; + assert {:msg "assert_failed(68,6123,6191): function does not abort under this condition"} + !($t3->$agree && ($t4->$for_votes < $t3->$stake->$value)); + + // assert Not(And(select dao::Vote.agree>($t3), Gt(Add(select dao::Proposal.against_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:183:9+83 + assume {:print "$at(68,6200,6283)"} true; + assert {:msg "assert_failed(68,6200,6283): function does not abort under this condition"} + !($t3->$agree && (($t4->$against_votes + $t3->$stake->$value) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not(select dao::Vote.agree>($t3)), Lt(select dao::Proposal.against_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:184:9+73 + assume {:print "$at(68,6292,6365)"} true; + assert {:msg "assert_failed(68,6292,6365): function does not abort under this condition"} + !(!$t3->$agree && ($t4->$against_votes < $t3->$stake->$value)); + + // assert Not(And(Not(select dao::Vote.agree>($t3)), Gt(Add(select dao::Proposal.for_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:185:9+80 + assume {:print "$at(68,6374,6454)"} true; + assert {:msg "assert_failed(68,6374,6454): function does not abort under this condition"} + !(!$t3->$agree && (($t4->$for_votes + $t3->$stake->$value) > 340282366920938463463374607431768211455)); + + // assert Eq(select dao::Vote.agree>($t0), Not(select dao::Vote.agree>($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:190:9+45 + assume {:print "$at(68,6542,6587)"} true; + assert {:msg "assert_failed(68,6542,6587): post-condition does not hold"} + $IsEqual'bool'($Dereference($t0)->$agree, !$t3->$agree); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:190:9+45 + $ret0 := $t11; + $ret1 := $t0; + $ret2 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:338:5+1 + assume {:print "$at(67,12586,12587)"} true; +L4: + + // assert Or(Or(Or(And(select dao::Vote.agree>($t3), Lt(select dao::Proposal.for_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3)))), And(select dao::Vote.agree>($t3), Gt(Add(select dao::Proposal.against_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))), 340282366920938463463374607431768211455))), And(Not(select dao::Vote.agree>($t3)), Lt(select dao::Proposal.against_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))))), And(Not(select dao::Vote.agree>($t3)), Gt(Add(select dao::Proposal.for_votes>($t4), select coin::Coin.value>(select dao::Vote.stake>($t3))), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:188:5+127 + assume {:print "$at(68,6466,6593)"} true; + assert {:msg "assert_failed(68,6466,6593): abort not covered by any of the `aborts_if` clauses"} + (((($t3->$agree && ($t4->$for_votes < $t3->$stake->$value)) || ($t3->$agree && (($t4->$against_votes + $t3->$stake->$value) > 340282366920938463463374607431768211455))) || (!$t3->$agree && ($t4->$against_votes < $t3->$stake->$value))) || (!$t3->$agree && (($t4->$for_votes + $t3->$stake->$value) > 340282366920938463463374607431768211455))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:188:5+127 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun dao::do_proposal_state<#0, #1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+832 +procedure {:inline 1} $1_dao_do_proposal_state'#0_#1'(_$t0: $1_dao_Proposal'#0_#1', _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: $1_option_Option'#1'; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t0: $1_dao_Proposal'#0_#1'; + var $t1: int; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume {:print "$at(67,19555,19556)"} true; + assume {:print "$track_local(50,5,0):", $t0} $t0 == $t0; + + // trace_local[current_time]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume {:print "$track_local(50,5,1):", $t1} $t1 == $t1; + + // $t9 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:28+19 + assume {:print "$at(67,19728,19747)"} true; + $t9 := $t0->$start_time; + + // $t10 := <($t1, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:26+1 + call $t10 := $Lt($t1, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 +L1: + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:519:13+7 + assume {:print "$at(67,19786,19793)"} true; + $t11 := 1; + assume $IsValid'u8'($t11); + + // $t8 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + $t8 := $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:20+12 + assume {:print "$at(67,19813,19825)"} true; +L0: + + // $t12 := get_field>.end_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:36+17 + assume {:print "$at(67,19829,19846)"} true; + $t12 := $t0->$end_time; + + // $t13 := <=($t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:33+2 + call $t13 := $Le($t1, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 +L4: + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:522:13+6 + assume {:print "$at(67,19884,19890)"} true; + $t14 := 2; + assume $IsValid'u8'($t14); + + // $t7 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + assume {:print "$at(67,19809,20381)"} true; + $t7 := $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+8 + assume {:print "$at(67,19910,19918)"} true; +L3: + + // $t15 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+18 + assume {:print "$at(67,19910,19928)"} true; + $t15 := $t0->$for_votes; + + // $t16 := get_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:42+22 + $t16 := $t0->$against_votes; + + // $t17 := <=($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:39+2 + call $t17 := $Le($t15, $t16); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 +L7: + + // $t18 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + assume {:print "$at(67,19910,20012)"} true; + $t18 := true; + assume $IsValid'bool'($t18); + + // $t2 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + $t2 := $t18; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:13+8 + assume {:print "$at(67,19970,19978)"} true; +L6: + + // $t19 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:13+18 + assume {:print "$at(67,19970,19988)"} true; + $t19 := $t0->$for_votes; + + // $t20 := get_field>.quorum_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:34+21 + $t20 := $t0->$quorum_votes; + + // $t2 := <($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:32+1 + call $t2 := $Lt($t19, $t20); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + assume {:print "$at(67,19910,20012)"} true; +L8: + + // if ($t2) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + if ($t2) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 +L10: + + // $t21 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:526:13+8 + assume {:print "$at(67,20052,20060)"} true; + $t21 := 3; + assume $IsValid'u8'($t21); + + // $t6 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + $t6 := $t21; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:20+8 + assume {:print "$at(67,20080,20088)"} true; +L9: + + // $t22 := get_field>.eta($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:20+12 + assume {:print "$at(67,20080,20092)"} true; + $t22 := $t0->$eta; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:36+1 + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:33+2 + $t24 := $IsEqual'u64'($t22, $t23); + + // if ($t24) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + if ($t24) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 +L13: + + // $t25 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:529:13+6 + assume {:print "$at(67,20136,20142)"} true; + $t25 := 4; + assume $IsValid'u8'($t25); + + // $t5 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + assume {:print "$at(67,20076,20381)"} true; + $t5 := $t25; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:20+12 + assume {:print "$at(67,20162,20174)"} true; +L12: + + // $t26 := get_field>.eta($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:35+12 + assume {:print "$at(67,20177,20189)"} true; + $t26 := $t0->$eta; + + // $t27 := <($t1, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:33+1 + call $t27 := $Lt($t1, $t26); + + // if ($t27) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + if ($t27) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 +L16: + + // $t28 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:532:13+6 + assume {:print "$at(67,20247,20253)"} true; + $t28 := 5; + assume $IsValid'u8'($t28); + + // $t4 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + assume {:print "$at(67,20158,20381)"} true; + $t4 := $t28; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:37+8 + assume {:print "$at(67,20290,20298)"} true; +L15: + + // $t29 := get_field>.action($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:36+16 + assume {:print "$at(67,20289,20305)"} true; + $t29 := $t0->$action; + + // $t30 := opaque begin: option::is_some<#1>($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + assume $IsValid'bool'($t30); + + // assume Eq($t30, option::spec_is_some<#1>($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + assume $IsEqual'bool'($t30, $1_option_spec_is_some'#1'($t29)); + + // $t30 := opaque end: option::is_some<#1>($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + + // if ($t30) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + if ($t30) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:534:13+10 + assume {:print "$at(67,20322,20332)"} true; +L19: + + // $t31 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:534:13+10 + assume {:print "$at(67,20322,20332)"} true; + $t31 := 6; + assume $IsValid'u8'($t31); + + // $t3 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + assume {:print "$at(67,20269,20381)"} true; + $t3 := $t31; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:536:13+9 + assume {:print "$at(67,20362,20371)"} true; +L18: + + // $t32 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:536:13+9 + assume {:print "$at(67,20362,20371)"} true; + $t32 := 7; + assume $IsValid'u8'($t32); + + // $t3 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + assume {:print "$at(67,20269,20381)"} true; + $t3 := $t32; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 +L20: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + assume {:print "$at(67,20158,20381)"} true; + $t4 := $t3; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 +L17: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + assume {:print "$at(67,20076,20381)"} true; + $t5 := $t4; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 +L14: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + $t6 := $t5; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 +L11: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + assume {:print "$at(67,19809,20381)"} true; + $t7 := $t6; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 +L5: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + $t8 := $t7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 +L2: + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + assume {:print "$track_return(50,5,0):", $t8} $t8 == $t8; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:538:5+1 + assume {:print "$at(67,20386,20387)"} true; +L21: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:538:5+1 + assume {:print "$at(67,20386,20387)"} true; + $ret0 := $t8; + return; + +} + +// fun dao::do_proposal_state [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+832 +procedure {:timeLimit 80} $1_dao_do_proposal_state$verify(_$t0: $1_dao_Proposal'#0_#1', _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: $1_option_Option'#1'; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t0: $1_dao_Proposal'#0_#1'; + var $t1: int; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t0))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume {:print "$at(67,19555,19556)"} true; + assume ($IsValid'$1_dao_Proposal'#0_#1''($t0) && (LenVec($t0->$action->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume $IsValid'u64'($t1); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume {:print "$track_local(50,5,0):", $t0} $t0 == $t0; + + // trace_local[current_time]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:513:5+1 + assume {:print "$track_local(50,5,1):", $t1} $t1 == $t1; + + // $t9 := get_field>.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:28+19 + assume {:print "$at(67,19728,19747)"} true; + $t9 := $t0->$start_time; + + // $t10 := <($t1, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:26+1 + call $t10 := $Lt($t1, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 +L1: + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:519:13+7 + assume {:print "$at(67,19786,19793)"} true; + $t11 := 1; + assume $IsValid'u8'($t11); + + // $t8 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + $t8 := $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:20+12 + assume {:print "$at(67,19813,19825)"} true; +L0: + + // $t12 := get_field>.end_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:36+17 + assume {:print "$at(67,19829,19846)"} true; + $t12 := $t0->$end_time; + + // $t13 := <=($t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:33+2 + call $t13 := $Le($t1, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 +L4: + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:522:13+6 + assume {:print "$at(67,19884,19890)"} true; + $t14 := 2; + assume $IsValid'u8'($t14); + + // $t7 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + assume {:print "$at(67,19809,20381)"} true; + $t7 := $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+8 + assume {:print "$at(67,19910,19918)"} true; +L3: + + // $t15 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+18 + assume {:print "$at(67,19910,19928)"} true; + $t15 := $t0->$for_votes; + + // $t16 := get_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:42+22 + $t16 := $t0->$against_votes; + + // $t17 := <=($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:39+2 + call $t17 := $Le($t15, $t16); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 +L7: + + // $t18 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + assume {:print "$at(67,19910,20012)"} true; + $t18 := true; + assume $IsValid'bool'($t18); + + // $t2 := $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + $t2 := $t18; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:13+8 + assume {:print "$at(67,19970,19978)"} true; +L6: + + // $t19 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:13+18 + assume {:print "$at(67,19970,19988)"} true; + $t19 := $t0->$for_votes; + + // $t20 := get_field>.quorum_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:34+21 + $t20 := $t0->$quorum_votes; + + // $t2 := <($t19, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:524:32+1 + call $t2 := $Lt($t19, $t20); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:20+102 + assume {:print "$at(67,19910,20012)"} true; +L8: + + // if ($t2) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + if ($t2) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 +L10: + + // $t21 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:526:13+8 + assume {:print "$at(67,20052,20060)"} true; + $t21 := 3; + assume $IsValid'u8'($t21); + + // $t6 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + $t6 := $t21; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:20+8 + assume {:print "$at(67,20080,20088)"} true; +L9: + + // $t22 := get_field>.eta($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:20+12 + assume {:print "$at(67,20080,20092)"} true; + $t22 := $t0->$eta; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:36+1 + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:33+2 + $t24 := $IsEqual'u64'($t22, $t23); + + // if ($t24) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + if ($t24) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 +L13: + + // $t25 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:529:13+6 + assume {:print "$at(67,20136,20142)"} true; + $t25 := 4; + assume $IsValid'u8'($t25); + + // $t5 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + assume {:print "$at(67,20076,20381)"} true; + $t5 := $t25; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:20+12 + assume {:print "$at(67,20162,20174)"} true; +L12: + + // $t26 := get_field>.eta($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:35+12 + assume {:print "$at(67,20177,20189)"} true; + $t26 := $t0->$eta; + + // $t27 := <($t1, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:33+1 + call $t27 := $Lt($t1, $t26); + + // if ($t27) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + if ($t27) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 +L16: + + // $t28 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:532:13+6 + assume {:print "$at(67,20247,20253)"} true; + $t28 := 5; + assume $IsValid'u8'($t28); + + // $t4 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + assume {:print "$at(67,20158,20381)"} true; + $t4 := $t28; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:37+8 + assume {:print "$at(67,20290,20298)"} true; +L15: + + // $t29 := get_field>.action($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:36+16 + assume {:print "$at(67,20289,20305)"} true; + $t29 := $t0->$action; + + // $t30 := opaque begin: option::is_some<#1>($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + assume $IsValid'bool'($t30); + + // assume Eq($t30, option::spec_is_some<#1>($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + assume $IsEqual'bool'($t30, $1_option_spec_is_some'#1'($t29)); + + // $t30 := opaque end: option::is_some<#1>($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:20+33 + + // if ($t30) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + if ($t30) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:534:13+10 + assume {:print "$at(67,20322,20332)"} true; +L19: + + // $t31 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:534:13+10 + assume {:print "$at(67,20322,20332)"} true; + $t31 := 6; + assume $IsValid'u8'($t31); + + // $t3 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + assume {:print "$at(67,20269,20381)"} true; + $t3 := $t31; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:536:13+9 + assume {:print "$at(67,20362,20371)"} true; +L18: + + // $t32 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:536:13+9 + assume {:print "$at(67,20362,20371)"} true; + $t32 := 7; + assume $IsValid'u8'($t32); + + // $t3 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 + assume {:print "$at(67,20269,20381)"} true; + $t3 := $t32; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:533:16+112 +L20: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 + assume {:print "$at(67,20158,20381)"} true; + $t4 := $t3; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:530:16+223 +L17: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 + assume {:print "$at(67,20076,20381)"} true; + $t5 := $t4; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:527:16+305 +L14: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 + assume {:print "$at(67,19906,20381)"} true; + $t6 := $t5; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:523:16+475 +L11: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 + assume {:print "$at(67,19809,20381)"} true; + $t7 := $t6; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:520:16+572 +L5: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + $t8 := $t7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 +L2: + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:517:9+672 + assume {:print "$at(67,19709,20381)"} true; + assume {:print "$track_return(50,5,0):", $t8} $t8 == $t8; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:538:5+1 + assume {:print "$at(67,20386,20387)"} true; +L21: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:538:5+1 + assume {:print "$at(67,20386,20387)"} true; + assert {:msg "assert_failed(67,20386,20387): function does not abort under this condition"} + !false; + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:538:5+1 + $ret0 := $t8; + return; + +} + +// fun dao::do_revoke_vote [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+657 +procedure {:timeLimit 80} $1_dao_do_revoke_vote$verify(_$t0: $Mutation ($1_dao_Proposal'#0_#1'), _$t1: $Mutation ($1_dao_Vote'#0'), _$t2: int) returns ($ret0: $1_coin_Coin'#0', $ret1: $Mutation ($1_dao_Proposal'#0_#1'), $ret2: $Mutation ($1_dao_Vote'#0')) +{ + // declare local variables + var $t3: $1_coin_Coin'#0'; + var $t4: $1_dao_Proposal'#0_#1'; + var $t5: $1_dao_Vote'#0'; + var $t6: $Mutation ($1_coin_Coin'#0'); + var $t7: int; + var $t8: int; + var $t9: $1_coin_Coin'#0'; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t14: int; + var $t15: int; + var $t16: $Mutation (int); + var $t0: $Mutation ($1_dao_Proposal'#0_#1'); + var $t1: $Mutation ($1_dao_Vote'#0'); + var $t2: int; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + assume $t1->l == $Param(1); + + // bytecode translation starts here + // assume And(WellFormed($t0), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t0))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume {:print "$at(67,14597,14598)"} true; + assume ($IsValid'$1_dao_Proposal'#0_#1''($Dereference($t0)) && (LenVec($Dereference($t0)->$action->$vec) <= 1)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume $IsValid'$1_dao_Vote'#0''($Dereference($t1)); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume $IsValid'u128'($t2); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + $t4 := $Dereference($t0); + + // $t5 := read_ref($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + $t5 := $Dereference($t1); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,6,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,6,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[to_revoke]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:388:5+1 + assume {:print "$track_local(50,6,2):", $t2} $t2 == $t2; + + // assume Ge(select coin::Coin.value>(select dao::Vote.stake>($t1)), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:394:13+37 + assume {:print "$at(67,14817,14854)"} true; + assume ($Dereference($t1)->$stake->$value >= $t2); + + // $t6 := borrow_field>.stake($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:44+15 + assume {:print "$at(67,14909,14924)"} true; + $t6 := $ChildMutation($t1, 2, $Dereference($t1)->$stake); + + // $t7 := (u64)($t2) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:61+18 + call $t7 := $CastU64($t2); + if ($abort_flag) { + assume {:print "$at(67,14926,14944)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,6):", $t8} $t8 == $t8; + goto L4; + } + + // $t9 := coin::extract<#0>($t6, $t7) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:30+50 + call $t9,$t6 := $1_coin_extract'#0'($t6, $t7); + if ($abort_flag) { + assume {:print "$at(67,14895,14945)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,6):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[Reference($t1).stake (coin::Coin<#0>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:30+50 + $t1 := $UpdateMutation($t1, $Update'$1_dao_Vote'#0''_stake($Dereference($t1), $Dereference($t6))); + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:30+50 + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,6,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // trace_local[reverted_stake]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:396:13+14 + assume {:print "$track_local(50,6,3):", $t9} $t9 == $t9; + + // $t10 := get_field>.agree($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:397:13+10 + assume {:print "$at(67,14959,14969)"} true; + $t10 := $Dereference($t1)->$agree; + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:397:9+182 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:34+8 + assume {:print "$at(67,15006,15014)"} true; +L1: + + // $t11 := get_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:34+18 + assume {:print "$at(67,15006,15024)"} true; + $t11 := $Dereference($t0)->$for_votes; + + // $t12 := -($t11, $t2) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:53+1 + call $t12 := $Sub($t11, $t2); + if ($abort_flag) { + assume {:print "$at(67,15025,15026)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,6):", $t8} $t8 == $t8; + goto L4; + } + + // $t13 := borrow_field>.for_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:13+18 + $t13 := $ChildMutation($t0, 4, $Dereference($t0)->$for_votes); + + // write_ref($t13, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:13+51 + $t13 := $UpdateMutation($t13, $t12); + + // write_back[Reference($t0).for_votes (u128)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:13+51 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_for_votes($Dereference($t0), $Dereference($t13))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:13+51 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,6,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:398:64+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:38+8 + assume {:print "$at(67,15092,15100)"} true; +L0: + + // $t14 := get_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:38+22 + assume {:print "$at(67,15092,15114)"} true; + $t14 := $Dereference($t0)->$against_votes; + + // $t15 := -($t14, $t2) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:61+1 + call $t15 := $Sub($t14, $t2); + if ($abort_flag) { + assume {:print "$at(67,15115,15116)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,6):", $t8} $t8 == $t8; + goto L4; + } + + // $t16 := borrow_field>.against_votes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:13+22 + $t16 := $ChildMutation($t0, 5, $Dereference($t0)->$against_votes); + + // write_ref($t16, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:13+59 + $t16 := $UpdateMutation($t16, $t15); + + // write_back[Reference($t0).against_votes (u128)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:13+59 + $t0 := $UpdateMutation($t0, $Update'$1_dao_Proposal'#0_#1''_against_votes($Dereference($t0), $Dereference($t16))); + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:400:13+59 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,6,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:402:9+77 + assume {:print "$at(67,15147,15224)"} true; +L2: + + // assert Eq(coin::$value<#0>($t9), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:403:13+48 + assume {:print "$at(67,15166,15214)"} true; + assert {:msg "assert_failed(67,15166,15214): unknown assertion failed"} + $IsEqual'u64'($1_coin_$value'#0'($t9), $t2); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:405:9+14 + assume {:print "$at(67,15234,15248)"} true; + assume {:print "$track_return(50,6,0):", $t9} $t9 == $t9; + + // trace_local[proposal]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:405:9+14 + $temp_0'$1_dao_Proposal'#0_#1'' := $Dereference($t0); + assume {:print "$track_local(50,6,0):", $temp_0'$1_dao_Proposal'#0_#1''} $temp_0'$1_dao_Proposal'#0_#1'' == $temp_0'$1_dao_Proposal'#0_#1''; + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$action->$vec) <= 1); + + // trace_local[vote]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:405:9+14 + assume {:print "$at(67,15234,15248)"} true; + $temp_0'$1_dao_Vote'#0'' := $Dereference($t1); + assume {:print "$track_local(50,6,1):", $temp_0'$1_dao_Vote'#0''} $temp_0'$1_dao_Vote'#0'' == $temp_0'$1_dao_Vote'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:406:5+1 + assume {:print "$at(67,15253,15254)"} true; +L3: + + // assert Not(Lt(select coin::Coin.value>(select dao::Vote.stake>($t5)), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:224:9+39 + assume {:print "$at(68,7767,7806)"} true; + assert {:msg "assert_failed(68,7767,7806): function does not abort under this condition"} + !($t5->$stake->$value < $t2); + + // assert Not(And(select dao::Vote.agree>($t5), Lt(select dao::Proposal.for_votes>($t4), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:225:9+55 + assume {:print "$at(68,7815,7870)"} true; + assert {:msg "assert_failed(68,7815,7870): function does not abort under this condition"} + !($t5->$agree && ($t4->$for_votes < $t2)); + + // assert Not(And(Not(select dao::Vote.agree>($t5)), Lt(select dao::Proposal.against_votes>($t4), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:226:9+60 + assume {:print "$at(68,7879,7939)"} true; + assert {:msg "assert_failed(68,7879,7939): function does not abort under this condition"} + !(!$t5->$agree && ($t4->$against_votes < $t2)); + + // assert Implies(select dao::Vote.agree>($t1), Eq(select dao::Proposal.for_votes>($t4), Add(select dao::Proposal.for_votes>($t0), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:231:9+81 + assume {:print "$at(68,8031,8112)"} true; + assert {:msg "assert_failed(68,8031,8112): post-condition does not hold"} + ($Dereference($t1)->$agree ==> $IsEqual'u128'($t4->$for_votes, ($Dereference($t0)->$for_votes + $t2))); + + // assert Implies(Not(select dao::Vote.agree>($t1)), Eq(select dao::Proposal.against_votes>($t4), Add(select dao::Proposal.against_votes>($t0), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:232:9+90 + assume {:print "$at(68,8121,8211)"} true; + assert {:msg "assert_failed(68,8121,8211): post-condition does not hold"} + (!$Dereference($t1)->$agree ==> $IsEqual'u128'($t4->$against_votes, ($Dereference($t0)->$against_votes + $t2))); + + // assert Eq(select coin::Coin.value>($t9), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:233:9+34 + assume {:print "$at(68,8220,8254)"} true; + assert {:msg "assert_failed(68,8220,8254): post-condition does not hold"} + $IsEqual'u64'($t9->$value, $t2); + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:233:9+34 + $ret0 := $t9; + $ret1 := $t0; + $ret2 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:406:5+1 + assume {:print "$at(67,15253,15254)"} true; +L4: + + // assert Or(Or(Lt(select coin::Coin.value>(select dao::Vote.stake>($t5)), $t2), And(select dao::Vote.agree>($t5), Lt(select dao::Proposal.for_votes>($t4), $t2))), And(Not(select dao::Vote.agree>($t5)), Lt(select dao::Proposal.against_votes>($t4), $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:229:5+309 + assume {:print "$at(68,7951,8260)"} true; + assert {:msg "assert_failed(68,7951,8260): abort not covered by any of the `aborts_if` clauses"} + ((($t5->$stake->$value < $t2) || ($t5->$agree && ($t4->$for_votes < $t2))) || (!$t5->$agree && ($t4->$against_votes < $t2))); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:229:5+309 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun dao::extract_proposal_action [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+589 +procedure {:timeLimit 80} $1_dao_extract_proposal_action$verify(_$t0: int, _$t1: int) returns ($ret0: #1) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_dao_Proposal'#0_#1'; + var $t4: int; + var $t5: int; + var $t6: $1_dao_Proposal'#0_#1'; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $Mutation ($1_dao_Proposal'#0_#1'); + var $t14: $Mutation ($1_option_Option'#1'); + var $t15: #1; + var $t16: $1_option_Option'#1'; + var $t17: bool; + var $t0: int; + var $t1: int; + var $1_dao_Proposal'#0_#1'_$modifies: [int]bool; + var $temp_0'#1': #1; + var $temp_0'$1_option_Option'#1'': $1_option_Option'#1'; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_dao_Proposal'#0_#1'_$memory#633: $Memory $1_dao_Proposal'#0_#1'; + var $1_timestamp_CurrentTimeMicroseconds_$memory#634: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+1 + assume {:print "$at(67,17026,17027)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447: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: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+589 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t2, SingleVec(6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:272:9+38 + assume {:print "$at(68,9928,9966)"} true; + assume ($t2 == MakeVec1(6)); + + // assume Identical($t3, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:321:9+67 + assume {:print "$at(68,12038,12105)"} true; + assume ($t3 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // assume Identical($t4, timestamp::spec_now_milliseconds()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:325:9+54 + assume {:print "$at(68,12203,12257)"} true; + assume ($t4 == $1_timestamp_spec_now_milliseconds($1_timestamp_CurrentTimeMicroseconds_$memory)); + + // assume Identical($t5, dao::$do_proposal_state<#0, #1>($t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:326:9+54 + assume {:print "$at(68,12266,12320)"} true; + assume ($t5 == $1_dao_$do_proposal_state'#0_#1'($t3, $t4)); + + // assume CanModify>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:274:9+61 + assume {:print "$at(68,10049,10110)"} true; + assume $1_dao_Proposal'#0_#1'_$modifies[$t0]; + + // @634 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:274:9+61 + $1_timestamp_CurrentTimeMicroseconds_$memory#634 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @633 := save_mem(dao::Proposal<#0, #1>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:274:9+61 + $1_dao_Proposal'#0_#1'_$memory#633 := $1_dao_Proposal'#0_#1'_$memory; + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+1 + assume {:print "$at(67,17026,17027)"} true; + assume {:print "$track_local(50,7,0):", $t0} $t0 == $t0; + + // trace_local[proposal_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:447:5+1 + assume {:print "$track_local(50,7,1):", $t1} $t1 == $t1; + + // assume Identical($t6, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:337:9+67 + assume {:print "$at(68,12696,12763)"} true; + assume ($t6 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // $t7 := dao::proposal_state<#0, #1>($t0, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:453:13+62 + assume {:print "$at(67,17288,17350)"} true; + call $t7 := $1_dao_proposal_state'#0_#1'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(67,17288,17350)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,7):", $t8} $t8 == $t8; + goto L4; + } + + // $t9 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:453:79+10 + $t9 := 6; + assume $IsValid'u8'($t9); + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:453:76+2 + $t10 := $IsEqual'u8'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 + assume {:print "$at(67,17267,17437)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 + assume {:print "$at(67,17267,17437)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:454:34+26 + assume {:print "$at(67,17399,17425)"} true; +L0: + + // $t11 := 1403 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:454:34+26 + assume {:print "$at(67,17399,17425)"} true; + $t11 := 1403; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:454:13+48 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(67,17378,17426)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 + assume {:print "$at(67,17267,17437)"} true; + assume {:print "$track_abort(50,7):", $t12} $t12 == $t12; + + // $t8 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 + $t8 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:452:9+170 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:456:69+16 + assume {:print "$at(67,17507,17523)"} true; +L2: + + // assert CanModify>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:456:24+17 + assume {:print "$at(67,17462,17479)"} true; + assert {:msg "assert_failed(67,17462,17479): caller does not have permission to modify `dao::Proposal<#0, #1>` at given address"} + $1_dao_Proposal'#0_#1'_$modifies[$t0]; + + // $t13 := borrow_global>($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:456:24+17 + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(67,17462,17479)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(50,7):", $t8} $t8 == $t8; + goto L4; + } + + // $t14 := borrow_field>.action($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:47+20 + assume {:print "$at(67,17572,17592)"} true; + $t14 := $ChildMutation($t13, 9, $Dereference($t13)->$action); + + // $t15 := opaque begin: option::extract<#1>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + + // $t16 := read_ref($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + $t16 := $Dereference($t14); + + // assume Identical($t17, option::spec_is_none<#1>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume ($t17 == $1_option_spec_is_none'#1'($Dereference($t14))); + + // if ($t17) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + if ($t17) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 +L6: + + // assume And(option::spec_is_none<#1>($t14), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume {:print "$at(67,17556,17593)"} true; + assume ($1_option_spec_is_none'#1'($Dereference($t14)) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume {:print "$at(67,17556,17593)"} true; + assume {:print "$track_abort(50,7):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 +L5: + + // $t14 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume {:print "$at(67,17556,17593)"} true; + havoc $temp_0'$1_option_Option'#1''; + $t14 := $UpdateMutation($t14, $temp_0'$1_option_Option'#1''); + + // assume And(WellFormed($t14), Le(Len<#1>(select option::Option.vec($t14)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume ($IsValid'$1_option_Option'#1''($Dereference($t14)) && (LenVec($Dereference($t14)->$vec) <= 1)); + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume $IsValid'#1'($t15); + + // assume Eq<#1>($t15, option::spec_borrow<#1>($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume $IsEqual'#1'($t15, $1_option_spec_borrow'#1'($t16)); + + // assume option::spec_is_none<#1>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume $1_option_spec_is_none'#1'($Dereference($t14)); + + // $t15 := opaque end: option::extract<#1>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + + // write_back[Reference($t13).action (option::Option<#1>)]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + $t13 := $UpdateMutation($t13, $Update'$1_dao_Proposal'#0_#1''_action($Dereference($t13), $Dereference($t14))); + + // assert Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($t13))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t13)->$action->$vec) <= 1); + + // write_back[dao::Proposal<#0, #1>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:457:31+37 + assume {:print "$at(67,17556,17593)"} true; + $1_dao_Proposal'#0_#1'_$memory := $ResourceUpdate($1_dao_Proposal'#0_#1'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:458:9+6 + assume {:print "$at(67,17603,17609)"} true; + assume {:print "$track_return(50,7,0):", $t15} $t15 == $t15; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:459:5+1 + assume {:print "$at(67,17614,17615)"} true; +L3: + + // assert Not(Not(exists[@633]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:319:9+63 + assume {:print "$at(68,11965,12028)"} true; + assert {:msg "assert_failed(68,11965,12028): function does not abort under this condition"} + !!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#633, $t0); + + // assert Not(Neq(select dao::Proposal.id>($t3), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:322:9+37 + assume {:print "$at(68,12114,12151)"} true; + assert {:msg "assert_failed(68,12114,12151): function does not abort under this condition"} + !!$IsEqual'u64'($t3->$id, $t1); + + // assert Not(forall s: u8: $t2: Neq(s, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:327:9+52 + assume {:print "$at(68,12329,12381)"} true; + assert {:msg "assert_failed(68,12329,12381): function does not abort under this condition"} + !(var $range_0 := $t2; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t5))))); + + // assert Not(Not(exists[@634](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:46:9+98 + assume {:print "$at(68,1332,1430)"} true; + assert {:msg "assert_failed(68,1332,1430): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#634, $1_system_addresses_$get_starcoin_framework()); + + // assert option::$is_none<#1>(select dao::Proposal.action>(global>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:275:9+84 + assume {:print "$at(68,10119,10203)"} true; + assert {:msg "assert_failed(68,10119,10203): post-condition does not hold"} + $1_option_$is_none'#1'($ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)->$action); + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:275:9+84 + $ret0 := $t15; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:459:5+1 + assume {:print "$at(67,17614,17615)"} true; +L4: + + // assert Or(Or(Or(Not(exists[@633]>($t0)), Neq(select dao::Proposal.id>($t3), $t1)), forall s: u8: $t2: Neq(s, $t5)), Not(exists[@634](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:270:5+365 + assume {:print "$at(68,9844,10209)"} true; + assert {:msg "assert_failed(68,9844,10209): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#633, $t0) || !$IsEqual'u64'($t3->$id, $t1)) || (var $range_0 := $t2; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var s := ReadVec($range_0, $i_1); + (!$IsEqual'u8'(s, $t5)))))) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#634, $1_system_addresses_$get_starcoin_framework())); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:270:5+365 + $abort_code := $t8; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t14) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun dao::generate_next_proposal_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:577:5+300 +procedure {:timeLimit 80} $1_dao_generate_next_proposal_id$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $Mutation ($1_dao_DaoGlobalInfo'#0'); + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_dao_DaoGlobalInfo'#0'); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation (int); + var $1_dao_DaoGlobalInfo'#0'_$modifies: [int]bool; + var $temp_0'$1_dao_DaoGlobalInfo'#0'': $1_dao_DaoGlobalInfo'#0'; + var $temp_0'u64': int; + var $1_dao_DaoGlobalInfo'#0'_$memory#635: $Memory $1_dao_DaoGlobalInfo'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: dao::DaoGlobalInfo<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:577:5+1 + assume {:print "$at(67,21845,21846)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0); + ($IsValid'$1_dao_DaoGlobalInfo'#0''($rsc)))); + + // assume Identical($t2, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:35:9+22 + assume {:print "$at(68,967,989)"} true; + assume ($t2 == 2); + + // assume CanModify>(0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:358:9+45 + assume {:print "$at(68,13457,13502)"} true; + assume $1_dao_DaoGlobalInfo'#0'_$modifies[2]; + + // @635 := save_mem(dao::DaoGlobalInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:358:9+45 + $1_dao_DaoGlobalInfo'#0'_$memory#635 := $1_dao_DaoGlobalInfo'#0'_$memory; + + // $t3 := stc_util::token_issuer<#0>() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:578:65+32 + assume {:print "$at(67,21979,22011)"} true; + call $t3 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,21979,22011)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,8):", $t4} $t4 == $t4; + goto L2; + } + + // assert CanModify>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:578:24+17 + assert {:msg "assert_failed(67,21938,21955): caller does not have permission to modify `dao::DaoGlobalInfo<#0>` at given address"} + $1_dao_DaoGlobalInfo'#0'_$modifies[$t3]; + + // $t5 := borrow_global>($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:578:24+17 + if (!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(67,21938,21955)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,8):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[gov_info]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:578:13+8 + $temp_0'$1_dao_DaoGlobalInfo'#0'' := $Dereference($t5); + assume {:print "$track_local(50,8,0):", $temp_0'$1_dao_DaoGlobalInfo'#0''} $temp_0'$1_dao_DaoGlobalInfo'#0'' == $temp_0'$1_dao_DaoGlobalInfo'#0''; + + // $t6 := get_field>.next_proposal_id($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:579:27+25 + assume {:print "$at(67,22040,22065)"} true; + $t6 := $Dereference($t5)->$next_proposal_id; + + // trace_local[proposal_id]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:579:13+11 + assume {:print "$track_local(50,8,1):", $t6} $t6 == $t6; + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:51+1 + assume {:print "$at(67,22117,22118)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := +($t6, $t7) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:49+1 + call $t8 := $AddU64($t6, $t7); + if ($abort_flag) { + assume {:print "$at(67,22115,22116)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t9 := borrow_field>.next_proposal_id($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:9+25 + $t9 := $ChildMutation($t5, 0, $Dereference($t5)->$next_proposal_id); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:9+43 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t5).next_proposal_id (u64)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:9+43 + $t5 := $UpdateMutation($t5, $Update'$1_dao_DaoGlobalInfo'#0''_next_proposal_id($Dereference($t5), $Dereference($t9))); + + // write_back[dao::DaoGlobalInfo<#0>@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:580:9+43 + $1_dao_DaoGlobalInfo'#0'_$memory := $ResourceUpdate($1_dao_DaoGlobalInfo'#0'_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:581:9+11 + assume {:print "$at(67,22128,22139)"} true; + assume {:print "$track_return(50,8,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:582:5+1 + assume {:print "$at(67,22144,22145)"} true; +L1: + + // assert Not(Not(exists[@635]>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:36:9+53 + assume {:print "$at(68,998,1051)"} true; + assert {:msg "assert_failed(68,998,1051): function does not abort under this condition"} + !!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#635, $t2); + + // assert Not(Ge(select dao::DaoGlobalInfo.next_proposal_id>(global[@635]>(0x2)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:357:9+74 + assume {:print "$at(68,13374,13448)"} true; + assert {:msg "assert_failed(68,13374,13448): function does not abort under this condition"} + !($ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory#635, 2)->$next_proposal_id >= 18446744073709551615); + + // assert Eq(select dao::DaoGlobalInfo.next_proposal_id>(global>(0x2)), Add(select dao::DaoGlobalInfo.next_proposal_id>(global[@635]>(0x2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:359:9+154 + assume {:print "$at(68,13511,13665)"} true; + assert {:msg "assert_failed(68,13511,13665): post-condition does not hold"} + $IsEqual'u64'($ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, 2)->$next_proposal_id, ($ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory#635, 2)->$next_proposal_id + 1)); + + // assert Eq($t6, select dao::DaoGlobalInfo.next_proposal_id>(global[@635]>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:353:9+76 + assume {:print "$at(68,13227,13303)"} true; + assert {:msg "assert_failed(68,13227,13303): post-condition does not hold"} + $IsEqual'u64'($t6, $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory#635, 2)->$next_proposal_id); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:353:9+76 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:582:5+1 + assume {:print "$at(67,22144,22145)"} true; +L2: + + // assert Or(Not(exists[@635]>($t2)), Ge(select dao::DaoGlobalInfo.next_proposal_id>(global[@635]>(0x2)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:351:5+177 + assume {:print "$at(68,13132,13309)"} true; + assert {:msg "assert_failed(68,13132,13309): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#635, $t2) || ($ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory#635, 2)->$next_proposal_id >= 18446744073709551615)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:351:5+177 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::get_config<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:629:5+185 +procedure {:inline 1} $1_dao_get_config'#0'() returns ($ret0: $1_dao_DaoConfig'#0') +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + + // bytecode translation starts here + // assume Identical($t0, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t0 == 2); + + // $t1 := stc_util::token_issuer<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:630:28+32 + assume {:print "$at(67,23629,23661)"} true; + call $t1 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,23629,23661)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(50,9):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := on_chain_config::get_by_address>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:631:9+64 + assume {:print "$at(67,23671,23735)"} true; + call $t3 := $1_on_chain_config_get_by_address'$1_dao_DaoConfig'#0''($t1); + if ($abort_flag) { + assume {:print "$at(67,23671,23735)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(50,9):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:631:9+64 + assume {:print "$track_return(50,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 + assume {:print "$at(67,23740,23741)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 + assume {:print "$at(67,23740,23741)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 + assume {:print "$at(67,23740,23741)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun dao::get_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:629:5+185 +procedure {:timeLimit 80} $1_dao_get_config$verify() returns ($ret0: $1_dao_DaoConfig'#0') +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#636: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:629:5+1 + assume {:print "$at(67,23556,23557)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume Identical($t0, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t0 == 2); + + // @636 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:629:5+1 + assume {:print "$at(67,23556,23557)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#636 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t1 := stc_util::token_issuer<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:630:28+32 + assume {:print "$at(67,23629,23661)"} true; + call $t1 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,23629,23661)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(50,9):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := on_chain_config::get_by_address>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:631:9+64 + assume {:print "$at(67,23671,23735)"} true; + call $t3 := $1_on_chain_config_get_by_address'$1_dao_DaoConfig'#0''($t1); + if ($abort_flag) { + assume {:print "$at(67,23671,23735)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(50,9):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:631:9+64 + assume {:print "$track_return(50,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 + assume {:print "$at(67,23740,23741)"} true; +L1: + + // assert Not(Not(exists[@636]>>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:41:9+74 + assume {:print "$at(68,1149,1223)"} true; + assert {:msg "assert_failed(68,1149,1223): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#636, $t0); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:404:9+16 + assume {:print "$at(68,14706,14722)"} true; + assert {:msg "assert_failed(68,14706,14722): function does not abort under this condition"} + !false; + + // assert Eq>($t3, select on_chain_config::Config.payload>>(global>>(0x2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:405:9+83 + assume {:print "$at(68,14731,14814)"} true; + assert {:msg "assert_failed(68,14731,14814): post-condition does not hold"} + $IsEqual'$1_dao_DaoConfig'#0''($t3, $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, 2)->$payload); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:405:9+83 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:632:5+1 + assume {:print "$at(67,23740,23741)"} true; +L2: + + // assert Or(Not(exists[@636]>>($t0)), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:403:5+140 + assume {:print "$at(68,14680,14820)"} true; + assert {:msg "assert_failed(68,14680,14820): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#636, $t0) || false); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:403:5+140 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun dao::has_vote [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+351 +procedure {:timeLimit 80} $1_dao_has_vote$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: bool) +{ + // declare local variables + var $t3: bool; + var $t4: $1_dao_Vote'#0'; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: $1_dao_Vote'#0'; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: bool; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume {:print "$at(67,21488,21489)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: dao::Vote<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Vote'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Vote'#0'_$memory, $a_0); + ($IsValid'$1_dao_Vote'#0''($rsc)))); + + // trace_local[voter]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume {:print "$track_local(50,10,0):", $t0} $t0 == $t0; + + // trace_local[proposer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume {:print "$track_local(50,10,1):", $t1} $t1 == $t1; + + // trace_local[proposal_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+1 + assume {:print "$track_local(50,10,2):", $t2} $t2 == $t2; + + // $t5 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:569:14+6 + assume {:print "$at(67,21643,21649)"} true; + $t5 := $ResourceExists($1_dao_Vote'#0'_$memory, $t0); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:569:13+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:569:9+70 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:570:20+5 + assume {:print "$at(67,21693,21698)"} true; +L1: + + // $t7 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:570:20+5 + assume {:print "$at(67,21693,21698)"} true; + $t7 := false; + assume $IsValid'bool'($t7); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:570:13+12 + assume {:print "$track_return(50,10,0):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:570:13+12 + $t8 := $t7; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:570:13+12 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:573:48+5 + assume {:print "$at(67,21758,21763)"} true; +L0: + + // $t9 := get_global>($t0) on_abort goto L6 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:573:20+13 + assume {:print "$at(67,21730,21743)"} true; + if (!$ResourceExists($1_dao_Vote'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_dao_Vote'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,21730,21743)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,10):", $t10} $t10 == $t10; + goto L6; + } + + // trace_local[vote]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:573:13+4 + assume {:print "$track_local(50,10,4):", $t9} $t9 == $t9; + + // $t11 := get_field>.proposer($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+13 + assume {:print "$at(67,21774,21787)"} true; + $t11 := $t9->$proposer; + + // $t12 := ==($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:23+2 + $t12 := $IsEqual'address'($t11, $t1); + + // if ($t12) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + if ($t12) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:46+4 +L3: + + // $t13 := get_field>.id($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:46+7 + assume {:print "$at(67,21811,21818)"} true; + $t13 := $t9->$id; + + // $t3 := ==($t13, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:54+2 + $t3 := $IsEqual'u64'($t13, $t2); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 +L2: + + // $t14 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + assume {:print "$at(67,21774,21833)"} true; + $t14 := false; + assume $IsValid'bool'($t14); + + // $t3 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + $t3 := $t14; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 +L4: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + assume {:print "$at(67,21774,21833)"} true; + assume {:print "$track_return(50,10,0):", $t3} $t3 == $t3; + + // $t8 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:574:9+59 + $t8 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:575:5+1 + assume {:print "$at(67,21838,21839)"} true; +L5: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:575:5+1 + assume {:print "$at(67,21838,21839)"} true; + assert {:msg "assert_failed(67,21838,21839): function does not abort under this condition"} + !false; + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:575:5+1 + $ret0 := $t8; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:575:5+1 +L6: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+351 + assume {:print "$at(67,21488,21839)"} true; + assert {:msg "assert_failed(67,21488,21839): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:564:5+351 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun dao::min_action_delay [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:625:5+96 +procedure {:timeLimit 80} $1_dao_min_action_delay$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_dao_DaoConfig'#0'; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $t4: int; + var $t5: int; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#638: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:625:5+1 + assume {:print "$at(67,23454,23455)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume Identical($t1, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t1 == 2); + + // @638 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:625:5+1 + assume {:print "$at(67,23454,23455)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#638 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // assume Identical($t2, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t2 == 2); + + // $t3 := dao::get_config<#0>() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:626:9+20 + assume {:print "$at(67,23507,23527)"} true; + call $t3 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,23507,23527)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,11):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field>.min_action_delay($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:626:9+37 + $t5 := $t3->$min_action_delay; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:626:9+37 + assume {:print "$track_return(50,11,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:627:5+1 + assume {:print "$at(67,23549,23550)"} true; +L1: + + // assert Not(Not(exists[@638]>>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:41:9+74 + assume {:print "$at(68,1149,1223)"} true; + assert {:msg "assert_failed(68,1149,1223): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#638, $t1); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:399:9+16 + assume {:print "$at(68,14582,14598)"} true; + assert {:msg "assert_failed(68,14582,14598): function does not abort under this condition"} + !false; + + // assert Eq($t5, select dao::DaoConfig.min_action_delay>(dao::spec_dao_config<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:400:9+61 + assume {:print "$at(68,14607,14668)"} true; + assert {:msg "assert_failed(68,14607,14668): post-condition does not hold"} + $IsEqual'u64'($t5, $1_dao_spec_dao_config'#0'($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory)->$min_action_delay); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:400:9+61 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:627:5+1 + assume {:print "$at(67,23549,23550)"} true; +L2: + + // assert Or(Not(exists[@638]>>($t1)), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:398:5+124 + assume {:print "$at(68,14550,14674)"} true; + assert {:msg "assert_failed(68,14550,14674): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#638, $t1) || false); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:398:5+124 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::modify_dao_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1034 +procedure {:timeLimit 80} $1_dao_modify_dao_config$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: int, _$t2: int, _$t3: int, _$t4: int) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t5: $1_dao_DaoConfig'#0'; + var $t6: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t7: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: $Mutation ($1_dao_DaoConfig'#0'); + var $t18: $Mutation (int); + var $t19: int; + var $t20: bool; + var $t21: $Mutation ($1_dao_DaoConfig'#0'); + var $t22: $Mutation (int); + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: $Mutation ($1_dao_DaoConfig'#0'); + var $t30: $Mutation (int); + var $t31: int; + var $t32: bool; + var $t33: $Mutation ($1_dao_DaoConfig'#0'); + var $t34: $Mutation (int); + var $t35: $1_dao_DaoConfig'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#639: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume {:print "$at(67,23853,23854)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume $IsValid'u64'($t4); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // @639 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#639 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t6 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + $t6 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,12,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[voting_delay]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume {:print "$track_local(50,12,1):", $t1} $t1 == $t1; + + // trace_local[voting_period]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume {:print "$track_local(50,12,2):", $t2} $t2 == $t2; + + // trace_local[voting_quorum_rate]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume {:print "$track_local(50,12,3):", $t3} $t3 == $t3; + + // trace_local[min_action_delay]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:637:5+1 + assume {:print "$track_local(50,12,4):", $t4} $t4 == $t4; + + // $t7 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:645:46+3 + assume {:print "$at(67,24157,24160)"} true; + $t7 := $Dereference($t0); + + // $t8 := on_chain_config::account_address>($t7) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:645:13+37 + call $t8 := $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''($t7); + if ($abort_flag) { + assume {:print "$at(67,24124,24161)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // $t10 := stc_util::token_issuer<#0>() on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:645:54+32 + call $t10 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,24165,24197)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:645:51+2 + $t11 := $IsEqual'address'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + assume {:print "$at(67,24103,24264)"} true; + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + assume {:print "$at(67,24103,24264)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + assume {:print "$at(67,24103,24264)"} true; + + // $t12 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:646:37+18 + assume {:print "$at(67,24235,24253)"} true; + $t12 := 1401; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:646:13+43 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(67,24211,24254)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + assume {:print "$at(67,24103,24264)"} true; + assume {:print "$track_abort(50,12):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + $t9 := $t13; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:644:9+161 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:648:22+20 + assume {:print "$at(67,24287,24307)"} true; +L2: + + // assume Identical($t14, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t14 == 2); + + // $t5 := dao::get_config<#0>() on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:648:22+20 + assume {:print "$at(67,24287,24307)"} true; + call $t5 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,24287,24307)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[config]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:648:13+6 + assume {:print "$track_local(50,12,5):", $t5} $t5 == $t5; + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:649:29+1 + assume {:print "$at(67,24337,24338)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // $t16 := >($t2, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:649:27+1 + call $t16 := $Gt($t2, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:649:9+84 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:36+13 + assume {:print "$at(67,24377,24390)"} true; +L4: + + // $t17 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+6 + assume {:print "$at(67,24354,24360)"} true; + $t17 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t18 := borrow_field>.voting_period($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+20 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$voting_period); + + // write_ref($t18, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+36 + $t18 := $UpdateMutation($t18, $t2); + + // write_back[Reference($t17).voting_period (u64)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+36 + $t17 := $UpdateMutation($t17, $Update'$1_dao_DaoConfig'#0''_voting_period($Dereference($t17), $Dereference($t18))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t17), 0), Le(select dao::DaoConfig.voting_quorum_rate($t17), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t17)->$voting_quorum_rate > 0) && ($Dereference($t17)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t17), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t17)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t17), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t17)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t17), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t17)->$min_action_delay > 0); + + // write_back[LocalRoot($t5)@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+36 + assume {:print "$at(67,24354,24390)"} true; + $t5 := $Dereference($t17); + + // trace_local[config]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:650:13+36 + assume {:print "$track_local(50,12,5):", $t5} $t5 == $t5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:652:13+12 + assume {:print "$at(67,24415,24427)"} true; +L3: + + // $t19 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:652:28+1 + assume {:print "$at(67,24430,24431)"} true; + $t19 := 0; + assume $IsValid'u64'($t19); + + // $t20 := >($t1, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:652:26+1 + call $t20 := $Gt($t1, $t19); + + // if ($t20) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:652:9+81 + if ($t20) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:35+12 + assume {:print "$at(67,24469,24481)"} true; +L6: + + // $t21 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+6 + assume {:print "$at(67,24447,24453)"} true; + $t21 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t22 := borrow_field>.voting_delay($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+19 + $t22 := $ChildMutation($t21, 0, $Dereference($t21)->$voting_delay); + + // write_ref($t22, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+34 + $t22 := $UpdateMutation($t22, $t1); + + // write_back[Reference($t21).voting_delay (u64)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+34 + $t21 := $UpdateMutation($t21, $Update'$1_dao_DaoConfig'#0''_voting_delay($Dereference($t21), $Dereference($t22))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t21), 0), Le(select dao::DaoConfig.voting_quorum_rate($t21), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t21)->$voting_quorum_rate > 0) && ($Dereference($t21)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t21), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t21)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t21), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t21)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t21), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t21)->$min_action_delay > 0); + + // write_back[LocalRoot($t5)@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+34 + assume {:print "$at(67,24447,24481)"} true; + $t5 := $Dereference($t21); + + // trace_local[config]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:653:13+34 + assume {:print "$track_local(50,12,5):", $t5} $t5 == $t5; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:655:13+18 + assume {:print "$at(67,24506,24524)"} true; +L5: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:655:34+1 + assume {:print "$at(67,24527,24528)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t24 := >($t3, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:655:32+1 + call $t24 := $Gt($t3, $t23); + + // if ($t24) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:655:9+197 + if ($t24) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:21+18 + assume {:print "$at(67,24552,24570)"} true; +L8: + + // $t25 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:43+3 + assume {:print "$at(67,24574,24577)"} true; + $t25 := 100; + assume $IsValid'u8'($t25); + + // $t26 := <=($t3, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:40+2 + call $t26 := $Le($t3, $t25); + + // if ($t26) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + if ($t26) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + assume {:print "$at(67,24544,24628)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 +L9: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + assume {:print "$at(67,24544,24628)"} true; + + // $t27 := 1406 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:72+23 + $t27 := 1406; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_argument($t27) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:48+48 + call $t28 := $1_error_invalid_argument($t27); + if ($abort_flag) { + assume {:print "$at(67,24579,24627)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + assume {:print "$at(67,24544,24628)"} true; + assume {:print "$track_abort(50,12):", $t28} $t28 == $t28; + + // $t9 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + $t9 := $t28; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:656:13+84 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:41+18 + assume {:print "$at(67,24670,24688)"} true; +L11: + + // $t29 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+6 + assume {:print "$at(67,24642,24648)"} true; + $t29 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t30 := borrow_field>.voting_quorum_rate($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+25 + $t30 := $ChildMutation($t29, 2, $Dereference($t29)->$voting_quorum_rate); + + // write_ref($t30, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+46 + $t30 := $UpdateMutation($t30, $t3); + + // write_back[Reference($t29).voting_quorum_rate (u8)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+46 + $t29 := $UpdateMutation($t29, $Update'$1_dao_DaoConfig'#0''_voting_quorum_rate($Dereference($t29), $Dereference($t30))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t29), 0), Le(select dao::DaoConfig.voting_quorum_rate($t29), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t29)->$voting_quorum_rate > 0) && ($Dereference($t29)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t29), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t29)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t29), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t29)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t29), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t29)->$min_action_delay > 0); + + // write_back[LocalRoot($t5)@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+46 + assume {:print "$at(67,24642,24688)"} true; + $t5 := $Dereference($t29); + + // trace_local[config]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:657:13+46 + assume {:print "$track_local(50,12,5):", $t5} $t5 == $t5; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:659:13+16 + assume {:print "$at(67,24713,24729)"} true; +L7: + + // $t31 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:659:32+1 + assume {:print "$at(67,24732,24733)"} true; + $t31 := 0; + assume $IsValid'u64'($t31); + + // $t32 := >($t4, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:659:30+1 + call $t32 := $Gt($t4, $t31); + + // if ($t32) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:659:9+93 + if ($t32) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:39+16 + assume {:print "$at(67,24775,24791)"} true; +L13: + + // $t33 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+6 + assume {:print "$at(67,24749,24755)"} true; + $t33 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t34 := borrow_field>.min_action_delay($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+23 + $t34 := $ChildMutation($t33, 3, $Dereference($t33)->$min_action_delay); + + // write_ref($t34, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+42 + $t34 := $UpdateMutation($t34, $t4); + + // write_back[Reference($t33).min_action_delay (u64)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+42 + $t33 := $UpdateMutation($t33, $Update'$1_dao_DaoConfig'#0''_min_action_delay($Dereference($t33), $Dereference($t34))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t33), 0), Le(select dao::DaoConfig.voting_quorum_rate($t33), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t33)->$voting_quorum_rate > 0) && ($Dereference($t33)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t33), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t33)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t33), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t33)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t33), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t33)->$min_action_delay > 0); + + // write_back[LocalRoot($t5)@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+42 + assume {:print "$at(67,24749,24791)"} true; + $t5 := $Dereference($t33); + + // trace_local[config]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:660:13+42 + assume {:print "$track_local(50,12,5):", $t5} $t5 == $t5; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:662:65+3 + assume {:print "$at(67,24868,24871)"} true; +L12: + + // $t35 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:662:70+6 + assume {:print "$at(67,24873,24879)"} true; + $t35 := $t5; + + // on_chain_config::set_with_capability>($t0, $t35) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:662:9+68 + call $t0 := $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''($t0, $t35); + if ($abort_flag) { + assume {:print "$at(67,24812,24880)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,12):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:662:77+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,12,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:663:5+1 + assume {:print "$at(67,24886,24887)"} true; +L14: + + // assert Not(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t6), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:416:9+38 + assume {:print "$at(68,15098,15136)"} true; + assert {:msg "assert_failed(68,15098,15136): function does not abort under this condition"} + !!$IsEqual'address'($t6->$account_address, 2); + + // assert Not(Not(exists[@639]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + assume {:print "$at(68,15145,15228)"} true; + assert {:msg "assert_failed(68,15145,15228): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#639, $t6->$account_address); + + // assert Not(And(Gt($t3, 0), Gt($t3, 100))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:423:9+61 + assume {:print "$at(68,15324,15385)"} true; + assert {:msg "assert_failed(68,15324,15385): function does not abort under this condition"} + !(($t3 > 0) && ($t3 > 100)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:423:9+61 + $ret0 := $t0; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:663:5+1 + assume {:print "$at(67,24886,24887)"} true; +L15: + + // assert Or(Or(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t6), 0x2), Not(exists[@639]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t6)))), And(Gt($t3, 0), Gt($t3, 100))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:421:5+150 + assume {:print "$at(68,15241,15391)"} true; + assert {:msg "assert_failed(68,15241,15391): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'address'($t6->$account_address, 2) || !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#639, $t6->$account_address)) || (($t3 > 0) && ($t3 > 100))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:421:5+150 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun dao::voting_delay [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:590:5+88 +procedure {:timeLimit 80} $1_dao_voting_delay$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_dao_DaoConfig'#0'; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $t4: int; + var $t5: int; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#640: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:590:5+1 + assume {:print "$at(67,22250,22251)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume Identical($t1, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t1 == 2); + + // @640 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:590:5+1 + assume {:print "$at(67,22250,22251)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#640 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // assume Identical($t2, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t2 == 2); + + // $t3 := dao::get_config<#0>() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:591:9+20 + assume {:print "$at(67,22299,22319)"} true; + call $t3 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,22299,22319)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,28):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field>.voting_delay($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:591:9+33 + $t5 := $t3->$voting_delay; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:591:9+33 + assume {:print "$track_return(50,28,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:592:5+1 + assume {:print "$at(67,22337,22338)"} true; +L1: + + // assert Not(Not(exists[@640]>>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:41:9+74 + assume {:print "$at(68,1149,1223)"} true; + assert {:msg "assert_failed(68,1149,1223): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#640, $t1); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:366:9+16 + assume {:print "$at(68,13706,13722)"} true; + assert {:msg "assert_failed(68,13706,13722): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:366:9+16 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:592:5+1 + assume {:print "$at(67,22337,22338)"} true; +L2: + + // assert Or(Not(exists[@640]>>($t1)), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:365:5+50 + assume {:print "$at(68,13678,13728)"} true; + assert {:msg "assert_failed(68,13678,13728): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#640, $t1) || false); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:365:5+50 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::voting_period [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:595:5+90 +procedure {:timeLimit 80} $1_dao_voting_period$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_dao_DaoConfig'#0'; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $t4: int; + var $t5: int; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#641: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:595:5+1 + assume {:print "$at(67,22394,22395)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume Identical($t1, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t1 == 2); + + // @641 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:595:5+1 + assume {:print "$at(67,22394,22395)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#641 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // assume Identical($t2, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t2 == 2); + + // $t3 := dao::get_config<#0>() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:596:9+20 + assume {:print "$at(67,22444,22464)"} true; + call $t3 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,22444,22464)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,29):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field>.voting_period($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:596:9+34 + $t5 := $t3->$voting_period; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:596:9+34 + assume {:print "$track_return(50,29,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:597:5+1 + assume {:print "$at(67,22483,22484)"} true; +L1: + + // assert Not(Not(exists[@641]>>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:41:9+74 + assume {:print "$at(68,1149,1223)"} true; + assert {:msg "assert_failed(68,1149,1223): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#641, $t1); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:370:9+16 + assume {:print "$at(68,13763,13779)"} true; + assert {:msg "assert_failed(68,13763,13779): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:370:9+16 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:597:5+1 + assume {:print "$at(67,22483,22484)"} true; +L2: + + // assert Or(Not(exists[@641]>>($t1)), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:369:5+51 + assume {:print "$at(68,13734,13785)"} true; + assert {:msg "assert_failed(68,13734,13785): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#641, $t1) || false); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:369:5+51 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::voting_quorum_rate [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:620:5+99 +procedure {:timeLimit 80} $1_dao_voting_quorum_rate$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_dao_DaoConfig'#0'; + var $t1: int; + var $t2: int; + var $t3: $1_dao_DaoConfig'#0'; + var $t4: int; + var $t5: int; + var $temp_0'u8': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#642: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:620:5+1 + assume {:print "$at(67,23304,23305)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume Identical($t1, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t1 == 2); + + // @642 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:620:5+1 + assume {:print "$at(67,23304,23305)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#642 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // assume Identical($t2, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t2 == 2); + + // $t3 := dao::get_config<#0>() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:621:9+20 + assume {:print "$at(67,23358,23378)"} true; + call $t3 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,23358,23378)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,30):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_field>.voting_quorum_rate($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:621:9+39 + $t5 := $t3->$voting_quorum_rate; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:621:9+39 + assume {:print "$track_return(50,30,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:622:5+1 + assume {:print "$at(67,23402,23403)"} true; +L1: + + // assert Not(Not(exists[@642]>>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:41:9+74 + assume {:print "$at(68,1149,1223)"} true; + assert {:msg "assert_failed(68,1149,1223): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#642, $t1); + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:391:9+16 + assume {:print "$at(68,14386,14402)"} true; + assert {:msg "assert_failed(68,14386,14402): function does not abort under this condition"} + !false; + + // assert Eq($t5, select dao::DaoConfig.voting_quorum_rate>(select on_chain_config::Config.payload>>(global>>(0x2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:392:9+126 + assume {:print "$at(68,14411,14537)"} true; + assert {:msg "assert_failed(68,14411,14537): post-condition does not hold"} + $IsEqual'u8'($t5, $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, 2)->$payload->$voting_quorum_rate); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:392:9+126 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:622:5+1 + assume {:print "$at(67,23402,23403)"} true; +L2: + + // assert Or(Not(exists[@642]>>($t1)), false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:390:5+191 + assume {:print "$at(68,14352,14543)"} true; + assert {:msg "assert_failed(68,14352,14543): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#642, $t1) || false); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:390:5+191 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::new_dao_config<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+692 +procedure {:inline 1} $1_dao_new_dao_config'#0'(_$t0: int, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $1_dao_DaoConfig'#0') +{ + // declare local variables + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_dao_DaoConfig'#0'; + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[voting_delay]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$at(67,5054,5055)"} true; + assume {:print "$track_local(50,13,0):", $t0} $t0 == $t0; + + // trace_local[voting_period]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,1):", $t1} $t1 == $t1; + + // trace_local[voting_quorum_rate]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,2):", $t2} $t2 == $t2; + + // trace_local[min_action_delay]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,3):", $t3} $t3 == $t3; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:32+1 + assume {:print "$at(67,5265,5266)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := >($t0, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:30+1 + call $t6 := $Gt($t0, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + assume {:print "$at(67,5242,5318)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:59+24 +L0: + + // $t7 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:59+24 + assume {:print "$at(67,5292,5316)"} true; + $t7 := 1407; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:35+49 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(67,5268,5317)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + assume {:print "$at(67,5242,5318)"} true; + assume {:print "$track_abort(50,13):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + $t9 := $t8; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:17+13 + assume {:print "$at(67,5336,5349)"} true; +L2: + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:33+1 + assume {:print "$at(67,5352,5353)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := >($t1, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:31+1 + call $t11 := $Gt($t1, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + assume {:print "$at(67,5328,5405)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:60+24 +L3: + + // $t12 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:60+24 + assume {:print "$at(67,5379,5403)"} true; + $t12 := 1407; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:36+49 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(67,5355,5404)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + assume {:print "$at(67,5328,5405)"} true; + assume {:print "$track_abort(50,13):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + $t9 := $t13; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + goto L16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+18 + assume {:print "$at(67,5436,5454)"} true; +L5: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:34+1 + assume {:print "$at(67,5457,5458)"} true; + $t14 := 0; + assume $IsValid'u8'($t14); + + // $t15 := >($t2, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:32+1 + call $t15 := $Gt($t2, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:39+18 +L7: + + // $t16 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:61+3 + assume {:print "$at(67,5484,5487)"} true; + $t16 := 100; + assume $IsValid'u8'($t16); + + // $t4 := <=($t2, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:58+2 + call $t4 := $Le($t2, $t16); + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 +L6: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + assume {:print "$at(67,5436,5487)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t4 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + $t4 := $t17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 +L8: + + // if ($t4) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + if ($t4) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:37+24 + assume {:print "$at(67,5525,5549)"} true; +L9: + + // $t18 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:37+24 + assume {:print "$at(67,5525,5549)"} true; + $t18 := 1407; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:13+49 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(67,5501,5550)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + assume {:print "$track_abort(50,13):", $t19} $t19 == $t19; + + // $t9 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + $t9 := $t19; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + goto L16; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:17+16 + assume {:print "$at(67,5579,5595)"} true; +L11: + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:36+1 + assume {:print "$at(67,5598,5599)"} true; + $t20 := 0; + assume $IsValid'u64'($t20); + + // $t21 := >($t3, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:34+1 + call $t21 := $Gt($t3, $t20); + + // if ($t21) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + if ($t21) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + assume {:print "$at(67,5571,5651)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:63+24 +L12: + + // $t22 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:63+24 + assume {:print "$at(67,5625,5649)"} true; + $t22 := 1407; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:39+49 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(67,5601,5650)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + assume {:print "$at(67,5571,5651)"} true; + assume {:print "$track_abort(50,13):", $t23} $t23 == $t23; + + // $t9 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + $t9 := $t23; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:21+12 + assume {:print "$at(67,5673,5685)"} true; +L14: + + // $t24 := pack dao::DaoConfig<#0>($t0, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:9+79 + assume {:print "$at(67,5661,5740)"} true; + $t24 := $1_dao_DaoConfig'#0'($t0, $t1, $t2, $t3); + + // trace_return[0]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:9+79 + assume {:print "$track_return(50,13,0):", $t24} $t24 == $t24; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 + assume {:print "$at(67,5745,5746)"} true; +L15: + + // return $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 + assume {:print "$at(67,5745,5746)"} true; + $ret0 := $t24; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 +L16: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 + assume {:print "$at(67,5745,5746)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun dao::new_dao_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+692 +procedure {:timeLimit 80} $1_dao_new_dao_config$verify(_$t0: int, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $1_dao_DaoConfig'#0') +{ + // declare local variables + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_dao_DaoConfig'#0'; + var $t0: int; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$at(67,5054,5055)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume $IsValid'u8'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume $IsValid'u64'($t3); + + // trace_local[voting_delay]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,0):", $t0} $t0 == $t0; + + // trace_local[voting_period]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,1):", $t1} $t1 == $t1; + + // trace_local[voting_quorum_rate]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,2):", $t2} $t2 == $t2; + + // trace_local[min_action_delay]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:149:5+1 + assume {:print "$track_local(50,13,3):", $t3} $t3 == $t3; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:32+1 + assume {:print "$at(67,5265,5266)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := >($t0, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:30+1 + call $t6 := $Gt($t0, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + assume {:print "$at(67,5242,5318)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:59+24 +L0: + + // $t7 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:59+24 + assume {:print "$at(67,5292,5316)"} true; + $t7 := 1407; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:35+49 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(67,5268,5317)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + assume {:print "$at(67,5242,5318)"} true; + assume {:print "$track_abort(50,13):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + $t9 := $t8; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:155:9+76 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:17+13 + assume {:print "$at(67,5336,5349)"} true; +L2: + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:33+1 + assume {:print "$at(67,5352,5353)"} true; + $t10 := 0; + assume $IsValid'u64'($t10); + + // $t11 := >($t1, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:31+1 + call $t11 := $Gt($t1, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + assume {:print "$at(67,5328,5405)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:60+24 +L3: + + // $t12 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:60+24 + assume {:print "$at(67,5379,5403)"} true; + $t12 := 1407; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:36+49 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(67,5355,5404)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + assume {:print "$at(67,5328,5405)"} true; + assume {:print "$track_abort(50,13):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + $t9 := $t13; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:156:9+77 + goto L16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+18 + assume {:print "$at(67,5436,5454)"} true; +L5: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:34+1 + assume {:print "$at(67,5457,5458)"} true; + $t14 := 0; + assume $IsValid'u8'($t14); + + // $t15 := >($t2, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:32+1 + call $t15 := $Gt($t2, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:39+18 +L7: + + // $t16 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:61+3 + assume {:print "$at(67,5484,5487)"} true; + $t16 := 100; + assume $IsValid'u8'($t16); + + // $t4 := <=($t2, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:58+2 + call $t4 := $Le($t2, $t16); + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 +L6: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + assume {:print "$at(67,5436,5487)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t4 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 + $t4 := $t17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:158:13+51 +L8: + + // if ($t4) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + if ($t4) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:37+24 + assume {:print "$at(67,5525,5549)"} true; +L9: + + // $t18 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:37+24 + assume {:print "$at(67,5525,5549)"} true; + $t18 := 1407; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:159:13+49 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(67,5501,5550)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + assume {:print "$at(67,5415,5561)"} true; + assume {:print "$track_abort(50,13):", $t19} $t19 == $t19; + + // $t9 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + $t9 := $t19; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:157:9+146 + goto L16; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:17+16 + assume {:print "$at(67,5579,5595)"} true; +L11: + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:36+1 + assume {:print "$at(67,5598,5599)"} true; + $t20 := 0; + assume $IsValid'u64'($t20); + + // $t21 := >($t3, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:34+1 + call $t21 := $Gt($t3, $t20); + + // if ($t21) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + if ($t21) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + assume {:print "$at(67,5571,5651)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:63+24 +L12: + + // $t22 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:63+24 + assume {:print "$at(67,5625,5649)"} true; + $t22 := 1407; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L16 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:39+49 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(67,5601,5650)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(50,13):", $t9} $t9 == $t9; + goto L16; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + assume {:print "$at(67,5571,5651)"} true; + assume {:print "$track_abort(50,13):", $t23} $t23 == $t23; + + // $t9 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + $t9 := $t23; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:161:9+80 + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:21+12 + assume {:print "$at(67,5673,5685)"} true; +L14: + + // $t24 := pack dao::DaoConfig<#0>($t0, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:9+79 + assume {:print "$at(67,5661,5740)"} true; + $t24 := $1_dao_DaoConfig'#0'($t0, $t1, $t2, $t3); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t24), 0), Le(select dao::DaoConfig.voting_quorum_rate($t24), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($t24->$voting_quorum_rate > 0) && ($t24->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t24), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($t24->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t24), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($t24->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t24), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($t24->$min_action_delay > 0); + + // trace_return[0]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:162:9+79 + assume {:print "$at(67,5661,5740)"} true; + assume {:print "$track_return(50,13,0):", $t24} $t24 == $t24; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 + assume {:print "$at(67,5745,5746)"} true; +L15: + + // assert Not(Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:76:9+28 + assume {:print "$at(68,2129,2157)"} true; + assert {:msg "assert_failed(68,2129,2157): function does not abort under this condition"} + !$IsEqual'u64'($t0, 0); + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:77:9+29 + assume {:print "$at(68,2166,2195)"} true; + assert {:msg "assert_failed(68,2166,2195): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // assert Not(Or(Eq($t2, 0), Gt($t2, 100))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:78:9+62 + assume {:print "$at(68,2204,2266)"} true; + assert {:msg "assert_failed(68,2204,2266): function does not abort under this condition"} + !($IsEqual'u8'($t2, 0) || ($t2 > 100)); + + // assert Not(Eq($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:79:9+32 + assume {:print "$at(68,2275,2307)"} true; + assert {:msg "assert_failed(68,2275,2307): function does not abort under this condition"} + !$IsEqual'u64'($t3, 0); + + // return $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:79:9+32 + $ret0 := $t24; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:163:5+1 + assume {:print "$at(67,5745,5746)"} true; +L16: + + // assert Or(Or(Or(Eq($t0, 0), Eq($t1, 0)), Or(Eq($t2, 0), Gt($t2, 100))), Eq($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:66:5+76 + assume {:print "$at(68,1874,1950)"} true; + assert {:msg "assert_failed(68,1874,1950): abort not covered by any of the `aborts_if` clauses"} + ((($IsEqual'u64'($t0, 0) || $IsEqual'u64'($t1, 0)) || ($IsEqual'u8'($t2, 0) || ($t2 > 100))) || $IsEqual'u64'($t3, 0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:66:5+76 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun dao::plugin [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+929 +procedure {:timeLimit 80} $1_dao_plugin$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int, _$t4: int) returns () +{ + // declare local variables + var $t5: $1_dao_DaoConfig'#0'; + var $t6: $1_dao_DaoGlobalInfo'#0'; + var $t7: int; + 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: int; + var $t17: $1_account_Account; + var $t18: $1_event_EventHandle'$1_dao_ProposalCreatedEvent'; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_dao_VoteChangedEvent'; + var $t22: $1_dao_DaoGlobalInfo'#0'; + var $t23: $1_dao_DaoConfig'#0'; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_dao_DaoGlobalInfo'#0'': $1_dao_DaoGlobalInfo'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#643: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + var $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory#644: $Memory $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''; + var $1_dao_DaoGlobalInfo'#0'_$memory#645: $Memory $1_dao_DaoGlobalInfo'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$at(67,4090,4091)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume $IsValid'u64'($t4); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // assume forall $rsc: on_chain_config::ModifyConfigCapabilityHolder>: ResourceDomain>>(): And(WellFormed($rsc), Le(Len>>(select option::Option.vec(select on_chain_config::ModifyConfigCapabilityHolder.cap($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0'''($rsc) && (LenVec($rsc->$cap->$vec) <= 1))))); + + // assume forall $rsc: dao::DaoGlobalInfo<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_DaoGlobalInfo'#0'_$memory, $a_0); + ($IsValid'$1_dao_DaoGlobalInfo'#0''($rsc)))); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:18:9+40 + assume {:print "$at(68,395,435)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // @643 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$at(67,4090,4091)"} true; + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#643 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // @644 := save_mem(on_chain_config::ModifyConfigCapabilityHolder>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory#644 := $1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory; + + // @645 := save_mem(dao::DaoGlobalInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + $1_dao_DaoGlobalInfo'#0'_$memory#645 := $1_dao_DaoGlobalInfo'#0'_$memory; + + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$track_local(50,14,0):", $t0} $t0 == $t0; + + // trace_local[voting_delay]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$track_local(50,14,1):", $t1} $t1 == $t1; + + // trace_local[voting_period]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$track_local(50,14,2):", $t2} $t2 == $t2; + + // trace_local[voting_quorum_rate]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$track_local(50,14,3):", $t3} $t3 == $t3; + + // trace_local[min_action_delay]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:122:5+1 + assume {:print "$track_local(50,14,4):", $t4} $t4 == $t4; + + // $t9 := stc_util::token_issuer<#0>() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:129:28+32 + assume {:print "$at(67,4295,4327)"} true; + call $t9 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,4295,4327)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[token_issuer]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:129:13+12 + assume {:print "$track_local(50,14,7):", $t9} $t9 == $t9; + + // $t11 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:17+26 + assume {:print "$at(67,4345,4371)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(67,4345,4371)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // $t12 := ==($t11, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:44+2 + $t12 := $IsEqual'address'($t11, $t9); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 + assume {:print "$at(67,4337,4426)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 +L0: + + // $t13 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:78+18 + assume {:print "$at(67,4406,4424)"} true; + $t13 := 1401; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:61+36 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(67,4389,4425)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 + assume {:print "$at(67,4337,4426)"} true; + assume {:print "$track_abort(50,14):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 + $t10 := $t14; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:130:9+89 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:133:31+1 + assume {:print "$at(67,4556,4557)"} true; +L2: + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:133:31+1 + assume {:print "$at(67,4556,4557)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:134:36+55 + assume {:print "$at(67,4594,4649)"} true; + call $t18 := $1_account_new_event_handle'$1_dao_ProposalCreatedEvent'($t0); + if ($abort_flag) { + assume {:print "$at(67,4594,4649)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:135:33+51 + assume {:print "$at(67,4683,4734)"} true; + call $t21 := $1_account_new_event_handle'$1_dao_VoteChangedEvent'($t0); + if ($abort_flag) { + assume {:print "$at(67,4683,4734)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // $t22 := pack dao::DaoGlobalInfo<#0>($t15, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:132:24+243 + assume {:print "$at(67,4502,4745)"} true; + $t22 := $1_dao_DaoGlobalInfo'#0'($t15, $t18, $t21); + + // trace_local[gov_info]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:132:13+8 + assume {:print "$track_local(50,14,6):", $t22} $t22 == $t22; + + // move_to>($t22, $t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:137:9+7 + assume {:print "$at(67,4755,4762)"} true; + if ($ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_dao_DaoGlobalInfo'#0'_$memory := $ResourceUpdate($1_dao_DaoGlobalInfo'#0'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(67,4755,4762)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // $t23 := dao::new_dao_config<#0>($t1, $t2, $t3, $t4) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:138:22+148 + assume {:print "$at(67,4803,4951)"} true; + call $t23 := $1_dao_new_dao_config'#0'($t1, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(67,4803,4951)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[config]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:138:13+6 + assume {:print "$track_local(50,14,5):", $t23} $t23 == $t23; + + // on_chain_config::publish_new_config>($t0, $t23) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:144:9+51 + assume {:print "$at(67,4961,5012)"} true; + call $1_on_chain_config_publish_new_config'$1_dao_DaoConfig'#0''($t0, $t23); + if ($abort_flag) { + assume {:print "$at(67,4961,5012)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(50,14):", $t10} $t10 == $t10; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:145:5+1 + assume {:print "$at(67,5018,5019)"} true; +L3: + + // assert Not(Neq
($t8, 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:19:9+25 + assume {:print "$at(68,444,469)"} true; + assert {:msg "assert_failed(68,444,469): function does not abort under this condition"} + !!$IsEqual'address'($t8, 2); + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:76:9+28 + assume {:print "$at(68,2129,2157)"} true; + assert {:msg "assert_failed(68,2129,2157): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // assert Not(Eq($t2, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:77:9+29 + assume {:print "$at(68,2166,2195)"} true; + assert {:msg "assert_failed(68,2166,2195): function does not abort under this condition"} + !$IsEqual'u64'($t2, 0); + + // assert Not(Or(Eq($t3, 0), Gt($t3, 100))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:78:9+62 + assume {:print "$at(68,2204,2266)"} true; + assert {:msg "assert_failed(68,2204,2266): function does not abort under this condition"} + !($IsEqual'u8'($t3, 0) || ($t3 > 100)); + + // assert Not(Eq($t4, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:79:9+32 + assume {:print "$at(68,2275,2307)"} true; + assert {:msg "assert_failed(68,2275,2307): function does not abort under this condition"} + !$IsEqual'u64'($t4, 0); + + // assert Not(exists[@643]>>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:89:9+67 + assume {:print "$at(78,3637,3704)"} true; + assert {:msg "assert_failed(78,3637,3704): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#643, $1_signer_$address_of($t0)); + + // assert Not(exists[@644]>>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/on_chain_config.spec.move:90:9+89 + assume {:print "$at(78,3713,3802)"} true; + assert {:msg "assert_failed(78,3713,3802): function does not abort under this condition"} + !$ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory#644, $1_signer_$address_of($t0)); + + // assert Not(exists[@645]>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:25:9+48 + assume {:print "$at(68,628,676)"} true; + assert {:msg "assert_failed(68,628,676): function does not abort under this condition"} + !$ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#645, $t8); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:25:9+48 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:145:5+1 + assume {:print "$at(67,5018,5019)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Or(Or(Neq
($t8, 0x2), Eq($t1, 0)), Eq($t2, 0)), Or(Eq($t3, 0), Gt($t3, 100))), Eq($t4, 0)), exists[@643]>>(signer::$address_of[]($t0))), exists[@644]>>(signer::$address_of[]($t0))), exists[@645]>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:15:5+350 + assume {:print "$at(68,332,682)"} true; + assert {:msg "assert_failed(68,332,682): abort not covered by any of the `aborts_if` clauses"} + (((((((!$IsEqual'address'($t8, 2) || $IsEqual'u64'($t1, 0)) || $IsEqual'u64'($t2, 0)) || ($IsEqual'u8'($t3, 0) || ($t3 > 100))) || $IsEqual'u64'($t4, 0)) || $ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#643, $1_signer_$address_of($t0))) || $ResourceExists($1_on_chain_config_ModifyConfigCapabilityHolder'$1_dao_DaoConfig'#0''_$memory#644, $1_signer_$address_of($t0))) || $ResourceExists($1_dao_DaoGlobalInfo'#0'_$memory#645, $t8)); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:15:5+350 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun dao::proposal_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+389 +procedure {:timeLimit 80} $1_dao_proposal_exists$verify(_$t0: int, _$t1: int) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: $1_dao_Proposal'#0_#1'; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t0: int; + var $t1: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+1 + assume {:print "$at(67,18674,18675)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+1 + assume {:print "$track_local(50,15,0):", $t0} $t0 == $t0; + + // trace_local[proposal_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:491:5+1 + assume {:print "$track_local(50,15,1):", $t1} $t1 == $t1; + + // $t2 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:495:13+6 + assume {:print "$at(67,18845,18851)"} true; + $t2 := $ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:495:9+201 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:496:69+16 + assume {:print "$at(67,18968,18984)"} true; +L1: + + // $t3 := get_global>($t0) on_abort goto L3 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:496:28+13 + assume {:print "$at(67,18927,18940)"} true; + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,18927,18940)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(50,15):", $t4} $t4 == $t4; + goto L3; + } + + // $t5 := get_field>.id($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:497:20+11 + assume {:print "$at(67,19006,19017)"} true; + $t5 := $t3->$id; + + // $t6 := ==($t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:497:32+2 + $t6 := $IsEqual'u64'($t5, $t1); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:497:13+33 + assume {:print "$track_return(50,15,0):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:497:13+33 + $t7 := $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:497:13+33 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:499:9+5 + assume {:print "$at(67,19052,19057)"} true; +L0: + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:499:9+5 + assume {:print "$at(67,19052,19057)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:499:9+5 + assume {:print "$track_return(50,15,0):", $t8} $t8 == $t8; + + // $t7 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:499:9+5 + $t7 := $t8; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:500:5+1 + assume {:print "$at(67,19062,19063)"} true; +L2: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:500:5+1 + assume {:print "$at(67,19062,19063)"} true; + assert {:msg "assert_failed(67,19062,19063): function does not abort under this condition"} + !false; + + // assert Implies(And(exists>($t0), Eq(select dao::Proposal.id>(global>($t0)), $t1)), $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:298:9+175 + assume {:print "$at(68,11235,11410)"} true; + assert {:msg "assert_failed(68,11235,11410): post-condition does not hold"} + (($ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0) && $IsEqual'u64'($ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)->$id, $t1)) ==> $t7); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:298:9+175 + $ret0 := $t7; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:500:5+1 + assume {:print "$at(67,19062,19063)"} true; +L3: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:297:5+212 + assume {:print "$at(68,11204,11416)"} true; + assert {:msg "assert_failed(68,11204,11416): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:297:5+212 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun dao::proposal_info [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:543:5+348 +procedure {:timeLimit 80} $1_dao_proposal_info$verify(_$t0: int) returns ($ret0: int, $ret1: int, $ret2: int, $ret3: int, $ret4: int) +{ + // declare local variables + var $t1: $1_dao_Proposal'#0_#1'; + var $t2: $1_dao_Proposal'#0_#1'; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t0: int; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $1_dao_Proposal'#0_#1'_$memory#646: $Memory $1_dao_Proposal'#0_#1'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:543:5+1 + assume {:print "$at(67,20500,20501)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:543:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // @646 := save_mem(dao::Proposal<#0, #1>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:543:5+1 + $1_dao_Proposal'#0_#1'_$memory#646 := $1_dao_Proposal'#0_#1'_$memory; + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:543:5+1 + assume {:print "$track_local(50,16,0):", $t0} $t0 == $t0; + + // $t2 := get_global>($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:546:24+13 + assume {:print "$at(67,20677,20690)"} true; + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,20677,20690)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(50,16):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[proposal]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:546:13+8 + assume {:print "$track_local(50,16,1):", $t2} $t2 == $t2; + + // $t4 := get_field>.id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:10+11 + assume {:print "$at(67,20746,20757)"} true; + $t4 := $t2->$id; + + // $t5 := get_field>.start_time($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:23+19 + $t5 := $t2->$start_time; + + // $t6 := get_field>.end_time($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:44+17 + $t6 := $t2->$end_time; + + // $t7 := get_field>.for_votes($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:63+18 + $t7 := $t2->$for_votes; + + // $t8 := get_field>.against_votes($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:83+22 + $t8 := $t2->$against_votes; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:9+97 + assume {:print "$track_return(50,16,0):", $t4} $t4 == $t4; + + // trace_return[1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:9+97 + assume {:print "$track_return(50,16,1):", $t5} $t5 == $t5; + + // trace_return[2]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:9+97 + assume {:print "$track_return(50,16,2):", $t6} $t6 == $t6; + + // trace_return[3]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:9+97 + assume {:print "$track_return(50,16,3):", $t7} $t7 == $t7; + + // trace_return[4]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:547:9+97 + assume {:print "$track_return(50,16,4):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:548:5+1 + assume {:print "$at(67,20847,20848)"} true; +L1: + + // assert Not(Not(exists[@646]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:342:9+63 + assume {:print "$at(68,12850,12913)"} true; + assert {:msg "assert_failed(68,12850,12913): function does not abort under this condition"} + !!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#646, $t0); + + // return ($t4, $t5, $t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:342:9+63 + $ret0 := $t4; + $ret1 := $t5; + $ret2 := $t6; + $ret3 := $t7; + $ret4 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:548:5+1 + assume {:print "$at(67,20847,20848)"} true; +L2: + + // assert Not(exists[@646]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:341:5+98 + assume {:print "$at(68,12821,12919)"} true; + assert {:msg "assert_failed(68,12821,12919): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_dao_Proposal'#0_#1'_$memory#646, $t0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:341:5+98 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun dao::proposal_state<#0, #1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+448 +procedure {:inline 1} $1_dao_proposal_state'#0_#1'(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: $1_dao_Proposal'#0_#1'; + var $t4: $1_dao_Proposal'#0_#1'; + var $t5: $1_dao_Proposal'#0_#1'; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:337:9+67 + assume {:print "$at(68,12696,12763)"} true; + assume ($t4 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$at(67,19101,19102)"} true; + assume {:print "$track_local(50,17,0):", $t0} $t0 == $t0; + + // trace_local[proposal_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$track_local(50,17,1):", $t1} $t1 == $t1; + + // $t5 := get_global>($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:507:24+13 + assume {:print "$at(67,19280,19293)"} true; + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,19280,19293)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[proposal]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:507:13+8 + assume {:print "$track_local(50,17,3):", $t5} $t5 == $t5; + + // $t7 := get_field>.id($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:17+11 + assume {:print "$at(67,19356,19367)"} true; + $t7 := $t5->$id; + + // $t8 := ==($t7, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:29+2 + $t8 := $IsEqual'u64'($t7, $t1); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + assume {:print "$at(67,19348,19434)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 +L0: + + // $t9 := 1404 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:69+24 + assume {:print "$at(67,19408,19432)"} true; + $t9 := 1404; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:45+49 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(67,19384,19433)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + assume {:print "$at(67,19348,19434)"} true; + assume {:print "$track_abort(50,17):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + $t6 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:28+29 + assume {:print "$at(67,19463,19492)"} true; +L2: + + // $t11 := timestamp::now_milliseconds() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:28+29 + assume {:print "$at(67,19463,19492)"} true; + call $t11 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(67,19463,19492)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[current_time]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:13+12 + assume {:print "$track_local(50,17,2):", $t11} $t11 == $t11; + + // $t12 := dao::do_proposal_state<#0, #1>($t5, $t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:510:9+41 + assume {:print "$at(67,19502,19543)"} true; + call $t12 := $1_dao_do_proposal_state'#0_#1'($t5, $t11); + if ($abort_flag) { + assume {:print "$at(67,19502,19543)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:510:9+41 + assume {:print "$track_return(50,17,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 + assume {:print "$at(67,19548,19549)"} true; +L3: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 + assume {:print "$at(67,19548,19549)"} true; + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 + assume {:print "$at(67,19548,19549)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun dao::proposal_state [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+448 +procedure {:timeLimit 80} $1_dao_proposal_state$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: $1_dao_Proposal'#0_#1'; + var $t4: $1_dao_Proposal'#0_#1'; + var $t5: $1_dao_Proposal'#0_#1'; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t0: int; + var $t1: int; + var $temp_0'$1_dao_Proposal'#0_#1'': $1_dao_Proposal'#0_#1'; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#597: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_dao_Proposal'#0_#1'_$memory#598: $Memory $1_dao_Proposal'#0_#1'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$at(67,19101,19102)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503: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: dao::Proposal<#0, #1>: ResourceDomain>(): And(WellFormed($rsc), Le(Len<#1>(select option::Option.vec(select dao::Proposal.action($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $a_0); + (($IsValid'$1_dao_Proposal'#0_#1''($rsc) && (LenVec($rsc->$action->$vec) <= 1))))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+448 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t4, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:337:9+67 + assume {:print "$at(68,12696,12763)"} true; + assume ($t4 == $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0)); + + // @597 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$at(67,19101,19102)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#597 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @598 := save_mem(dao::Proposal<#0, #1>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + $1_dao_Proposal'#0_#1'_$memory#598 := $1_dao_Proposal'#0_#1'_$memory; + + // trace_local[proposer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$track_local(50,17,0):", $t0} $t0 == $t0; + + // trace_local[proposal_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:503:5+1 + assume {:print "$track_local(50,17,1):", $t1} $t1 == $t1; + + // $t5 := get_global>($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:507:24+13 + assume {:print "$at(67,19280,19293)"} true; + if (!$ResourceExists($1_dao_Proposal'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_dao_Proposal'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,19280,19293)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[proposal]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:507:13+8 + assume {:print "$track_local(50,17,3):", $t5} $t5 == $t5; + + // $t7 := get_field>.id($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:17+11 + assume {:print "$at(67,19356,19367)"} true; + $t7 := $t5->$id; + + // $t8 := ==($t7, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:29+2 + $t8 := $IsEqual'u64'($t7, $t1); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + assume {:print "$at(67,19348,19434)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 +L0: + + // $t9 := 1404 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:69+24 + assume {:print "$at(67,19408,19432)"} true; + $t9 := 1404; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:45+49 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(67,19384,19433)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + assume {:print "$at(67,19348,19434)"} true; + assume {:print "$track_abort(50,17):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + $t6 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:508:9+86 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:28+29 + assume {:print "$at(67,19463,19492)"} true; +L2: + + // $t11 := timestamp::now_milliseconds() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:28+29 + assume {:print "$at(67,19463,19492)"} true; + call $t11 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(67,19463,19492)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[current_time]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:509:13+12 + assume {:print "$track_local(50,17,2):", $t11} $t11 == $t11; + + // $t12 := dao::do_proposal_state<#0, #1>($t5, $t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:510:9+41 + assume {:print "$at(67,19502,19543)"} true; + call $t12 := $1_dao_do_proposal_state'#0_#1'($t5, $t11); + if ($abort_flag) { + assume {:print "$at(67,19502,19543)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:510:9+41 + assume {:print "$track_return(50,17,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 + assume {:print "$at(67,19548,19549)"} true; +L3: + + // assert Not(Not(exists[@597](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:46:9+98 + assume {:print "$at(68,1332,1430)"} true; + assert {:msg "assert_failed(68,1332,1430): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#597, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@597](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:334:9+98 + assume {:print "$at(68,12516,12614)"} true; + assert {:msg "assert_failed(68,12516,12614): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#597, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@598]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:335:9+63 + assume {:print "$at(68,12623,12686)"} true; + assert {:msg "assert_failed(68,12623,12686): function does not abort under this condition"} + !!$ResourceExists($1_dao_Proposal'#0_#1'_$memory#598, $t0); + + // assert Not(Neq(select dao::Proposal.id>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:338:9+37 + assume {:print "$at(68,12772,12809)"} true; + assert {:msg "assert_failed(68,12772,12809): function does not abort under this condition"} + !!$IsEqual'u64'($t4->$id, $t1); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:338:9+37 + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:511:5+1 + assume {:print "$at(67,19548,19549)"} true; +L4: + + // assert Or(Or(Or(Not(exists[@597](system_addresses::$get_starcoin_framework[]())), Not(exists[@597](system_addresses::$get_starcoin_framework[]()))), Not(exists[@598]>($t0))), Neq(select dao::Proposal.id>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:330:5+422 + assume {:print "$at(68,12393,12815)"} true; + assert {:msg "assert_failed(68,12393,12815): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#597, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#597, $1_system_addresses_$get_starcoin_framework())) || !$ResourceExists($1_dao_Proposal'#0_#1'_$memory#598, $t0)) || !$IsEqual'u64'($t4->$id, $t1)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:330:5+422 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun dao::set_min_action_delay [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+564 +procedure {:timeLimit 80} $1_dao_set_min_action_delay$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: int) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: $1_dao_DaoConfig'#0'; + var $t3: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t4: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_dao_DaoConfig'#0'); + var $t17: $Mutation (int); + var $t18: $1_dao_DaoConfig'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#647: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + assume {:print "$at(67,26720,26721)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // @647 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#647 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + $t3 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,22,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:713:5+1 + assume {:print "$track_local(50,22,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:718:46+3 + assume {:print "$at(67,26929,26932)"} true; + $t4 := $Dereference($t0); + + // $t5 := on_chain_config::account_address>($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:718:13+37 + call $t5 := $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''($t4); + if ($abort_flag) { + assume {:print "$at(67,26896,26933)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // $t7 := stc_util::token_issuer<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:718:54+32 + call $t7 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,26937,26969)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // $t8 := ==($t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:718:51+2 + $t8 := $IsEqual'address'($t5, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + assume {:print "$at(67,26875,27036)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + assume {:print "$at(67,26875,27036)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + assume {:print "$at(67,26875,27036)"} true; + + // $t9 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:719:37+18 + assume {:print "$at(67,27007,27025)"} true; + $t9 := 1401; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:719:13+43 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(67,26983,27026)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + assume {:print "$at(67,26875,27036)"} true; + assume {:print "$track_abort(50,22):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + $t6 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:717:9+161 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:17+5 + assume {:print "$at(67,27054,27059)"} true; +L2: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:25+1 + assume {:print "$at(67,27062,27063)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := >($t1, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:23+1 + call $t12 := $Gt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + assume {:print "$at(67,27046,27115)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + assume {:print "$at(67,27046,27115)"} true; + + // $t13 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:52+24 + $t13 := 1407; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:28+49 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(67,27065,27114)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + assume {:print "$at(67,27046,27115)"} true; + assume {:print "$track_abort(50,22):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:721:9+69 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:722:22+20 + assume {:print "$at(67,27138,27158)"} true; +L5: + + // assume Identical($t15, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t15 == 2); + + // $t2 := dao::get_config<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:722:22+20 + assume {:print "$at(67,27138,27158)"} true; + call $t2 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,27138,27158)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:722:13+6 + assume {:print "$track_local(50,22,2):", $t2} $t2 == $t2; + + // $t16 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+6 + assume {:print "$at(67,27168,27174)"} true; + $t16 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t17 := borrow_field>.min_action_delay($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+23 + $t17 := $ChildMutation($t16, 3, $Dereference($t16)->$min_action_delay); + + // write_ref($t17, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+31 + $t17 := $UpdateMutation($t17, $t1); + + // write_back[Reference($t16).min_action_delay (u64)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+31 + $t16 := $UpdateMutation($t16, $Update'$1_dao_DaoConfig'#0''_min_action_delay($Dereference($t16), $Dereference($t17))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t16), 0), Le(select dao::DaoConfig.voting_quorum_rate($t16), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t16)->$voting_quorum_rate > 0) && ($Dereference($t16)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t16)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t16)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t16)->$min_action_delay > 0); + + // write_back[LocalRoot($t2)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+31 + assume {:print "$at(67,27168,27199)"} true; + $t2 := $Dereference($t16); + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:723:9+31 + assume {:print "$track_local(50,22,2):", $t2} $t2 == $t2; + + // $t18 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:724:70+6 + assume {:print "$at(67,27270,27276)"} true; + $t18 := $t2; + + // on_chain_config::set_with_capability>($t0, $t18) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:724:9+68 + call $t0 := $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''($t0, $t18); + if ($abort_flag) { + assume {:print "$at(67,27209,27277)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,22):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:724:77+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,22,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:725:5+1 + assume {:print "$at(67,27283,27284)"} true; +L6: + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:444:9+21 + assume {:print "$at(68,15805,15826)"} true; + assert {:msg "assert_failed(68,15805,15826): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // assert Not(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:416:9+38 + assume {:print "$at(68,15098,15136)"} true; + assert {:msg "assert_failed(68,15098,15136): function does not abort under this condition"} + !!$IsEqual'address'($t3->$account_address, 2); + + // assert Not(Not(exists[@647]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + assume {:print "$at(68,15145,15228)"} true; + assert {:msg "assert_failed(68,15145,15228): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#647, $t3->$account_address); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:725:5+1 + assume {:print "$at(67,27283,27284)"} true; +L7: + + // assert Or(Or(Eq($t1, 0), Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2)), Not(exists[@647]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:443:5+113 + assume {:print "$at(68,15769,15882)"} true; + assert {:msg "assert_failed(68,15769,15882): abort not covered by any of the `aborts_if` clauses"} + (($IsEqual'u64'($t1, 0) || !$IsEqual'address'($t3->$account_address, 2)) || !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#647, $t3->$account_address)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:443:5+113 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun dao::set_voting_delay [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+556 +procedure {:timeLimit 80} $1_dao_set_voting_delay$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: int) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: $1_dao_DaoConfig'#0'; + var $t3: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t4: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_dao_DaoConfig'#0'); + var $t17: $Mutation (int); + var $t18: $1_dao_DaoConfig'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#648: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + assume {:print "$at(67,24919,24920)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // @648 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#648 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + $t3 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,23,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:667:5+1 + assume {:print "$track_local(50,23,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:672:46+3 + assume {:print "$at(67,25124,25127)"} true; + $t4 := $Dereference($t0); + + // $t5 := on_chain_config::account_address>($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:672:13+37 + call $t5 := $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''($t4); + if ($abort_flag) { + assume {:print "$at(67,25091,25128)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // $t7 := stc_util::token_issuer<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:672:54+32 + call $t7 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,25132,25164)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // $t8 := ==($t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:672:51+2 + $t8 := $IsEqual'address'($t5, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + assume {:print "$at(67,25070,25231)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + assume {:print "$at(67,25070,25231)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + assume {:print "$at(67,25070,25231)"} true; + + // $t9 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:673:37+18 + assume {:print "$at(67,25202,25220)"} true; + $t9 := 1401; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:673:13+43 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(67,25178,25221)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + assume {:print "$at(67,25070,25231)"} true; + assume {:print "$track_abort(50,23):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + $t6 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:671:9+161 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:17+5 + assume {:print "$at(67,25249,25254)"} true; +L2: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:25+1 + assume {:print "$at(67,25257,25258)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := >($t1, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:23+1 + call $t12 := $Gt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + assume {:print "$at(67,25241,25310)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + assume {:print "$at(67,25241,25310)"} true; + + // $t13 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:52+24 + $t13 := 1407; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:28+49 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(67,25260,25309)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + assume {:print "$at(67,25241,25310)"} true; + assume {:print "$track_abort(50,23):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:675:9+69 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:676:22+20 + assume {:print "$at(67,25333,25353)"} true; +L5: + + // assume Identical($t15, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t15 == 2); + + // $t2 := dao::get_config<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:676:22+20 + assume {:print "$at(67,25333,25353)"} true; + call $t2 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,25333,25353)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:676:13+6 + assume {:print "$track_local(50,23,2):", $t2} $t2 == $t2; + + // $t16 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+6 + assume {:print "$at(67,25363,25369)"} true; + $t16 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t17 := borrow_field>.voting_delay($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+19 + $t17 := $ChildMutation($t16, 0, $Dereference($t16)->$voting_delay); + + // write_ref($t17, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+27 + $t17 := $UpdateMutation($t17, $t1); + + // write_back[Reference($t16).voting_delay (u64)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+27 + $t16 := $UpdateMutation($t16, $Update'$1_dao_DaoConfig'#0''_voting_delay($Dereference($t16), $Dereference($t17))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t16), 0), Le(select dao::DaoConfig.voting_quorum_rate($t16), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t16)->$voting_quorum_rate > 0) && ($Dereference($t16)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t16)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t16)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t16)->$min_action_delay > 0); + + // write_back[LocalRoot($t2)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+27 + assume {:print "$at(67,25363,25390)"} true; + $t2 := $Dereference($t16); + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:677:9+27 + assume {:print "$track_local(50,23,2):", $t2} $t2 == $t2; + + // $t18 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:678:70+6 + assume {:print "$at(67,25461,25467)"} true; + $t18 := $t2; + + // on_chain_config::set_with_capability>($t0, $t18) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:678:9+68 + call $t0 := $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''($t0, $t18); + if ($abort_flag) { + assume {:print "$at(67,25400,25468)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,23):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:678:77+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,23,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:679:5+1 + assume {:print "$at(67,25474,25475)"} true; +L6: + + // assert Not(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:416:9+38 + assume {:print "$at(68,15098,15136)"} true; + assert {:msg "assert_failed(68,15098,15136): function does not abort under this condition"} + !!$IsEqual'address'($t3->$account_address, 2); + + // assert Not(Not(exists[@648]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + assume {:print "$at(68,15145,15228)"} true; + assert {:msg "assert_failed(68,15145,15228): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#648, $t3->$account_address); + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:429:9+21 + assume {:print "$at(68,15480,15501)"} true; + assert {:msg "assert_failed(68,15480,15501): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:429:9+21 + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:679:5+1 + assume {:print "$at(67,25474,25475)"} true; +L7: + + // assert Or(Or(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2), Not(exists[@648]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))), Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:427:5+109 + assume {:print "$at(68,15398,15507)"} true; + assert {:msg "assert_failed(68,15398,15507): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'address'($t3->$account_address, 2) || !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#648, $t3->$account_address)) || $IsEqual'u64'($t1, 0)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:427:5+109 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun dao::set_voting_period [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+558 +procedure {:timeLimit 80} $1_dao_set_voting_period$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: int) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: $1_dao_DaoConfig'#0'; + var $t3: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t4: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_dao_DaoConfig'#0'); + var $t17: $Mutation (int); + var $t18: $1_dao_DaoConfig'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#649: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + assume {:print "$at(67,25508,25509)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // @649 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#649 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + $t3 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,24,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:683:5+1 + assume {:print "$track_local(50,24,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:688:46+3 + assume {:print "$at(67,25714,25717)"} true; + $t4 := $Dereference($t0); + + // $t5 := on_chain_config::account_address>($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:688:13+37 + call $t5 := $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''($t4); + if ($abort_flag) { + assume {:print "$at(67,25681,25718)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // $t7 := stc_util::token_issuer<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:688:54+32 + call $t7 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,25722,25754)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // $t8 := ==($t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:688:51+2 + $t8 := $IsEqual'address'($t5, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + assume {:print "$at(67,25660,25821)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + assume {:print "$at(67,25660,25821)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + assume {:print "$at(67,25660,25821)"} true; + + // $t9 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:689:37+18 + assume {:print "$at(67,25792,25810)"} true; + $t9 := 1401; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:689:13+43 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(67,25768,25811)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + assume {:print "$at(67,25660,25821)"} true; + assume {:print "$track_abort(50,24):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + $t6 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:687:9+161 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:17+5 + assume {:print "$at(67,25839,25844)"} true; +L2: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:25+1 + assume {:print "$at(67,25847,25848)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := >($t1, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:23+1 + call $t12 := $Gt($t1, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + assume {:print "$at(67,25831,25900)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + assume {:print "$at(67,25831,25900)"} true; + + // $t13 := 1407 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:52+24 + $t13 := 1407; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:28+49 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(67,25850,25899)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + assume {:print "$at(67,25831,25900)"} true; + assume {:print "$track_abort(50,24):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:691:9+69 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:692:22+20 + assume {:print "$at(67,25923,25943)"} true; +L5: + + // assume Identical($t15, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t15 == 2); + + // $t2 := dao::get_config<#0>() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:692:22+20 + assume {:print "$at(67,25923,25943)"} true; + call $t2 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,25923,25943)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:692:13+6 + assume {:print "$track_local(50,24,2):", $t2} $t2 == $t2; + + // $t16 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+6 + assume {:print "$at(67,25953,25959)"} true; + $t16 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t17 := borrow_field>.voting_period($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+20 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$voting_period); + + // write_ref($t17, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+28 + $t17 := $UpdateMutation($t17, $t1); + + // write_back[Reference($t16).voting_period (u64)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+28 + $t16 := $UpdateMutation($t16, $Update'$1_dao_DaoConfig'#0''_voting_period($Dereference($t16), $Dereference($t17))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t16), 0), Le(select dao::DaoConfig.voting_quorum_rate($t16), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t16)->$voting_quorum_rate > 0) && ($Dereference($t16)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t16)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t16)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t16), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t16)->$min_action_delay > 0); + + // write_back[LocalRoot($t2)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+28 + assume {:print "$at(67,25953,25981)"} true; + $t2 := $Dereference($t16); + + // trace_local[config]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:693:9+28 + assume {:print "$track_local(50,24,2):", $t2} $t2 == $t2; + + // $t18 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:694:70+6 + assume {:print "$at(67,26052,26058)"} true; + $t18 := $t2; + + // on_chain_config::set_with_capability>($t0, $t18) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:694:9+68 + call $t0 := $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''($t0, $t18); + if ($abort_flag) { + assume {:print "$at(67,25991,26059)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,24):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:694:77+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,24,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:695:5+1 + assume {:print "$at(67,26065,26066)"} true; +L6: + + // assert Not(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:416:9+38 + assume {:print "$at(68,15098,15136)"} true; + assert {:msg "assert_failed(68,15098,15136): function does not abort under this condition"} + !!$IsEqual'address'($t3->$account_address, 2); + + // assert Not(Not(exists[@649]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + assume {:print "$at(68,15145,15228)"} true; + assert {:msg "assert_failed(68,15145,15228): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#649, $t3->$account_address); + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:434:9+21 + assume {:print "$at(68,15596,15617)"} true; + assert {:msg "assert_failed(68,15596,15617): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:434:9+21 + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:695:5+1 + assume {:print "$at(67,26065,26066)"} true; +L7: + + // assert Or(Or(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t3), 0x2), Not(exists[@649]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t3)))), Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:432:5+110 + assume {:print "$at(68,15513,15623)"} true; + assert {:msg "assert_failed(68,15513,15623): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'address'($t3->$account_address, 2) || !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#649, $t3->$account_address)) || $IsEqual'u64'($t1, 0)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:432:5+110 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun dao::set_voting_quorum_rate [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+582 +procedure {:timeLimit 80} $1_dao_set_voting_quorum_rate$verify(_$t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''), _$t1: int) returns ($ret0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'')) +{ + // declare local variables + var $t2: bool; + var $t3: $1_dao_DaoConfig'#0'; + var $t4: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t5: $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $Mutation ($1_dao_DaoConfig'#0'); + var $t20: $Mutation (int); + var $t21: $1_dao_DaoConfig'#0'; + var $t0: $Mutation ($1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''); + var $t1: int; + var $temp_0'$1_dao_DaoConfig'#0'': $1_dao_DaoConfig'#0'; + var $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''': $1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''; + var $temp_0'u8': int; + var $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#650: $Memory $1_on_chain_config_Config'$1_dao_DaoConfig'#0''; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + assume {:print "$at(67,26103,26104)"} true; + assume $IsValid'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: on_chain_config::Config>: ResourceDomain>>(): And(WellFormed($rsc), And(And(And(And(Gt(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 0), Le(select dao::DaoConfig.voting_quorum_rate(select on_chain_config::Config.payload($rsc)), 100)), Gt(select dao::DaoConfig.voting_delay(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.voting_period(select on_chain_config::Config.payload($rsc)), 0)), Gt(select dao::DaoConfig.min_action_delay(select on_chain_config::Config.payload($rsc)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory, $a_0); + (($IsValid'$1_on_chain_config_Config'$1_dao_DaoConfig'#0'''($rsc) && ((((($rsc->$payload->$voting_quorum_rate > 0) && ($rsc->$payload->$voting_quorum_rate <= 100)) && ($rsc->$payload->$voting_delay > 0)) && ($rsc->$payload->$voting_period > 0)) && ($rsc->$payload->$min_action_delay > 0)))))); + + // @650 := save_mem(on_chain_config::Config>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#650 := $1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + $t4 := $Dereference($t0); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,25,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:698:5+1 + assume {:print "$track_local(50,25,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:703:46+3 + assume {:print "$at(67,26313,26316)"} true; + $t5 := $Dereference($t0); + + // $t6 := on_chain_config::account_address>($t5) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:703:13+37 + call $t6 := $1_on_chain_config_account_address'$1_dao_DaoConfig'#0''($t5); + if ($abort_flag) { + assume {:print "$at(67,26280,26317)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // $t8 := stc_util::token_issuer<#0>() on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:703:54+32 + call $t8 := $1_stc_util_token_issuer'#0'(); + if ($abort_flag) { + assume {:print "$at(67,26321,26353)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // $t9 := ==($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:703:51+2 + $t9 := $IsEqual'address'($t6, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + assume {:print "$at(67,26259,26420)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + assume {:print "$at(67,26259,26420)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + assume {:print "$at(67,26259,26420)"} true; + + // $t10 := 1401 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:704:37+18 + assume {:print "$at(67,26391,26409)"} true; + $t10 := 1401; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:704:13+43 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(67,26367,26410)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + assume {:print "$at(67,26259,26420)"} true; + assume {:print "$track_abort(50,25):", $t11} $t11 == $t11; + + // $t7 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + $t7 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:702:9+161 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+5 + assume {:print "$at(67,26438,26443)"} true; +L2: + + // $t12 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:26+3 + assume {:print "$at(67,26447,26450)"} true; + $t12 := 100; + assume $IsValid'u8'($t12); + + // $t13 := <=($t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:23+2 + call $t13 := $Le($t1, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:33+5 +L4: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:41+1 + assume {:print "$at(67,26462,26463)"} true; + $t14 := 0; + assume $IsValid'u8'($t14); + + // $t2 := >($t1, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:39+1 + call $t2 := $Gt($t1, $t14); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 +L3: + + // $t15 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 + assume {:print "$at(67,26438,26463)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // $t2 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 + $t2 := $t15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:17+25 +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + assume {:print "$at(67,26430,26514)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + assume {:print "$at(67,26430,26514)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + assume {:print "$at(67,26430,26514)"} true; + + // $t16 := 1406 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:68+23 + $t16 := 1406; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:44+48 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(67,26465,26513)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + assume {:print "$at(67,26430,26514)"} true; + assume {:print "$track_abort(50,25):", $t17} $t17 == $t17; + + // $t7 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + $t7 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:706:9+84 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:707:22+20 + assume {:print "$at(67,26537,26557)"} true; +L8: + + // assume Identical($t18, 0x2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:40:9+22 + assume {:print "$at(68,1118,1140)"} true; + assume ($t18 == 2); + + // $t3 := dao::get_config<#0>() on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:707:22+20 + assume {:print "$at(67,26537,26557)"} true; + call $t3 := $1_dao_get_config'#0'(); + if ($abort_flag) { + assume {:print "$at(67,26537,26557)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // trace_local[config]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:707:13+6 + assume {:print "$track_local(50,25,3):", $t3} $t3 == $t3; + + // $t19 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+6 + assume {:print "$at(67,26567,26573)"} true; + $t19 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t20 := borrow_field>.voting_quorum_rate($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+25 + $t20 := $ChildMutation($t19, 2, $Dereference($t19)->$voting_quorum_rate); + + // write_ref($t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+33 + $t20 := $UpdateMutation($t20, $t1); + + // write_back[Reference($t19).voting_quorum_rate (u8)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+33 + $t19 := $UpdateMutation($t19, $Update'$1_dao_DaoConfig'#0''_voting_quorum_rate($Dereference($t19), $Dereference($t20))); + + // assert And(Gt(select dao::DaoConfig.voting_quorum_rate($t19), 0), Le(select dao::DaoConfig.voting_quorum_rate($t19), 100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:9:9+62 + assume {:print "$at(68,145,207)"} true; + assert {:msg "assert_failed(68,145,207): data invariant does not hold"} + (($Dereference($t19)->$voting_quorum_rate > 0) && ($Dereference($t19)->$voting_quorum_rate <= 100)); + + // assert Gt(select dao::DaoConfig.voting_delay($t19), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:10:9+27 + assume {:print "$at(68,216,243)"} true; + assert {:msg "assert_failed(68,216,243): data invariant does not hold"} + ($Dereference($t19)->$voting_delay > 0); + + // assert Gt(select dao::DaoConfig.voting_period($t19), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:11:9+28 + assume {:print "$at(68,252,280)"} true; + assert {:msg "assert_failed(68,252,280): data invariant does not hold"} + ($Dereference($t19)->$voting_period > 0); + + // assert Gt(select dao::DaoConfig.min_action_delay($t19), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:12:9+31 + assume {:print "$at(68,289,320)"} true; + assert {:msg "assert_failed(68,289,320): data invariant does not hold"} + ($Dereference($t19)->$min_action_delay > 0); + + // write_back[LocalRoot($t3)@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+33 + assume {:print "$at(67,26567,26600)"} true; + $t3 := $Dereference($t19); + + // trace_local[config]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:708:9+33 + assume {:print "$track_local(50,25,3):", $t3} $t3 == $t3; + + // $t21 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:709:70+6 + assume {:print "$at(67,26671,26677)"} true; + $t21 := $t3; + + // on_chain_config::set_with_capability>($t0, $t21) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:709:9+68 + call $t0 := $1_on_chain_config_set_with_capability'$1_dao_DaoConfig'#0''($t0, $t21); + if ($abort_flag) { + assume {:print "$at(67,26610,26678)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(50,25):", $t7} $t7 == $t7; + goto L10; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:709:77+1 + $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' := $Dereference($t0); + assume {:print "$track_local(50,25,0):", $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''} $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0''' == $temp_0'$1_on_chain_config_ModifyConfigCapability'$1_dao_DaoConfig'#0'''; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:710:5+1 + assume {:print "$at(67,26684,26685)"} true; +L9: + + // assert Not(Not(And(Gt($t1, 0), Le($t1, 100)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:439:9+39 + assume {:print "$at(68,15668,15707)"} true; + assert {:msg "assert_failed(68,15668,15707): function does not abort under this condition"} + !!(($t1 > 0) && ($t1 <= 100)); + + // assert Not(Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t4), 0x2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:416:9+38 + assume {:print "$at(68,15098,15136)"} true; + assert {:msg "assert_failed(68,15098,15136): function does not abort under this condition"} + !!$IsEqual'address'($t4->$account_address, 2); + + // assert Not(Not(exists[@650]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + assume {:print "$at(68,15145,15228)"} true; + assert {:msg "assert_failed(68,15145,15228): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#650, $t4->$account_address); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:417:9+83 + $ret0 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:710:5+1 + assume {:print "$at(67,26684,26685)"} true; +L10: + + // assert Or(Or(Not(And(Gt($t1, 0), Le($t1, 100))), Neq
(select on_chain_config::ModifyConfigCapability.account_address>>($t4), 0x2)), Not(exists[@650]>>(select on_chain_config::ModifyConfigCapability.account_address>>($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:438:5+133 + assume {:print "$at(68,15630,15763)"} true; + assert {:msg "assert_failed(68,15630,15763): abort not covered by any of the `aborts_if` clauses"} + ((!(($t1 > 0) && ($t1 <= 100)) || !$IsEqual'address'($t4->$account_address, 2)) || !$ResourceExists($1_on_chain_config_Config'$1_dao_DaoConfig'#0''_$memory#650, $t4->$account_address)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:438:5+133 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun dao::vote_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+451 +procedure {:timeLimit 80} $1_dao_vote_of$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: bool, $ret1: int) +{ + // declare local variables + var $t3: $1_dao_Vote'#0'; + var $t4: $1_dao_Vote'#0'; + var $t5: $1_dao_Vote'#0'; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: $1_coin_Coin'#0'; + var $t17: int; + var $t18: int; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_dao_Vote'#0'': $1_dao_Vote'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $1_dao_Vote'#0'_$memory#651: $Memory $1_dao_Vote'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume {:print "$at(67,20938,20939)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: dao::Vote<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_Vote'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_Vote'#0'_$memory, $a_0); + ($IsValid'$1_dao_Vote'#0''($rsc)))); + + // assume Identical($t4, global>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:347:9+39 + assume {:print "$at(68,12996,13035)"} true; + assume ($t4 == $ResourceValue($1_dao_Vote'#0'_$memory, $t0)); + + // @651 := save_mem(dao::Vote<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume {:print "$at(67,20938,20939)"} true; + $1_dao_Vote'#0'_$memory#651 := $1_dao_Vote'#0'_$memory; + + // trace_local[voter]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume {:print "$track_local(50,27,0):", $t0} $t0 == $t0; + + // trace_local[proposer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume {:print "$track_local(50,27,1):", $t1} $t1 == $t1; + + // trace_local[proposal_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:551:5+1 + assume {:print "$track_local(50,27,2):", $t2} $t2 == $t2; + + // $t5 := get_global>($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:556:20+13 + assume {:print "$at(67,21106,21119)"} true; + if (!$ResourceExists($1_dao_Vote'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_dao_Vote'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(67,21106,21119)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[vote]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:556:13+4 + assume {:print "$track_local(50,27,3):", $t5} $t5 == $t5; + + // $t7 := get_field>.proposer($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:17+13 + assume {:print "$at(67,21158,21171)"} true; + $t7 := $t5->$proposer; + + // $t8 := ==($t7, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:31+2 + $t8 := $IsEqual'address'($t7, $t1); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 + assume {:print "$at(67,21150,21233)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 +L0: + + // $t9 := 1405 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:69+21 + assume {:print "$at(67,21210,21231)"} true; + $t9 := 1405; + assume $IsValid'u64'($t9); + + // $t10 := error::not_found($t9) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:52+39 + call $t10 := $1_error_not_found($t9); + if ($abort_flag) { + assume {:print "$at(67,21193,21232)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 + assume {:print "$at(67,21150,21233)"} true; + assume {:print "$track_abort(50,27):", $t10} $t10 == $t10; + + // $t6 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 + $t6 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:557:9+83 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:17+4 + assume {:print "$at(67,21251,21255)"} true; +L2: + + // $t11 := get_field>.id($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:17+7 + assume {:print "$at(67,21251,21258)"} true; + $t11 := $t5->$id; + + // $t12 := ==($t11, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:25+2 + $t12 := $IsEqual'u64'($t11, $t2); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 + assume {:print "$at(67,21243,21325)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 +L3: + + // $t13 := 1410 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:65+24 + assume {:print "$at(67,21299,21323)"} true; + $t13 := 1410; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:41+49 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(67,21275,21324)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 + assume {:print "$at(67,21243,21325)"} true; + assume {:print "$track_abort(50,27):", $t14} $t14 == $t14; + + // $t6 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 + $t6 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:558:9+82 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:10+4 + assume {:print "$at(67,21336,21340)"} true; +L5: + + // $t15 := get_field>.agree($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:10+10 + assume {:print "$at(67,21336,21346)"} true; + $t15 := $t5->$agree; + + // $t16 := get_field>.stake($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:35+11 + $t16 := $t5->$stake; + + // $t17 := coin::value<#0>($t16) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:23+24 + call $t17 := $1_coin_value'#0'($t16); + if ($abort_flag) { + assume {:print "$at(67,21349,21373)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,27):", $t6} $t6 == $t6; + goto L7; + } + + // $t18 := (u128)($t17) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:22+34 + call $t18 := $CastU128($t17); + if ($abort_flag) { + assume {:print "$at(67,21348,21382)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(50,27):", $t6} $t6 == $t6; + goto L7; + } + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:9+48 + assume {:print "$track_return(50,27,0):", $t15} $t15 == $t15; + + // trace_return[1]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:559:9+48 + assume {:print "$track_return(50,27,1):", $t18} $t18 == $t18; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:560:5+1 + assume {:print "$at(67,21388,21389)"} true; +L6: + + // assert Not(Not(exists[@651]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:346:9+39 + assume {:print "$at(68,12948,12987)"} true; + assert {:msg "assert_failed(68,12948,12987): function does not abort under this condition"} + !!$ResourceExists($1_dao_Vote'#0'_$memory#651, $t0); + + // assert Not(Neq(select dao::Vote.id>($t4), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:154:9+33 + assume {:print "$at(68,5002,5035)"} true; + assert {:msg "assert_failed(68,5002,5035): function does not abort under this condition"} + !!$IsEqual'u64'($t4->$id, $t2); + + // assert Not(Neq
(select dao::Vote.proposer>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:155:9+44 + assume {:print "$at(68,5044,5088)"} true; + assert {:msg "assert_failed(68,5044,5088): function does not abort under this condition"} + !!$IsEqual'address'($t4->$proposer, $t1); + + // return ($t15, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:155:9+44 + $ret0 := $t15; + $ret1 := $t18; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.move:560:5+1 + assume {:print "$at(67,21388,21389)"} true; +L7: + + // assert Or(Or(Not(exists[@651]>($t0)), Neq(select dao::Vote.id>($t4), $t2)), Neq
(select dao::Vote.proposer>($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:345:5+201 + assume {:print "$at(68,12925,13126)"} true; + assert {:msg "assert_failed(68,12925,13126): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_dao_Vote'#0'_$memory#651, $t0) || !$IsEqual'u64'($t4->$id, $t2)) || !$IsEqual'address'($t4->$proposer, $t1)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao.spec.move:345:5+201 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// struct dao_treasury_withdraw_proposal::WrappedWithdrawCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:20:5+115 +datatype $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC' { + $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'($cap: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC') +} +function {:inline} $Update'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''_cap(s: $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC', x: $1_treasury_WithdrawCapability'$1_starcoin_coin_STC'): $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC' { + $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(s: $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'): bool { + $IsValid'$1_treasury_WithdrawCapability'$1_starcoin_coin_STC''(s->$cap) +} +function {:inline} $IsEqual'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''(s1: $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC', s2: $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory: $Memory $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'; + +// fun dao_treasury_withdraw_proposal::withdraw_for_block_reward [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:127:5+386 +procedure {:inline 1} $1_dao_treasury_withdraw_proposal_withdraw_for_block_reward'$1_starcoin_coin_STC'(_$t0: $signer, _$t1: int) returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC') +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: $Mutation ($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'); + var $t6: $Mutation ($1_treasury_WithdrawCapability'$1_starcoin_coin_STC'); + var $t7: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:127:5+1 + assume {:print "$at(70,5188,5189)"} true; + assume {:print "$track_local(51,3,0):", $t0} $t0 == $t0; + + // trace_local[reward]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:127:5+1 + assume {:print "$track_local(51,3,1):", $t1} $t1 == $t1; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + assume {:print "$at(70,5351,5402)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + assume {:print "$at(70,5351,5402)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + assume {:print "$at(70,5351,5402)"} true; + assume {:print "$track_abort(51,3):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:131:9+51 + assume {:print "$at(70,5351,5402)"} true; + + // $t4 := signer::address_of($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:132:72+26 + assume {:print "$at(70,5475,5501)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(70,5475,5501)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(51,3):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := borrow_global>($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:132:19+17 + if (!$ResourceExists($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t4), EmptyVec(), $ResourceValue($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory, $t4)); + } + if ($abort_flag) { + assume {:print "$at(70,5422,5439)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(51,3):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := borrow_field>.cap($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:133:44+12 + assume {:print "$at(70,5547,5559)"} true; + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$cap); + + // $t7 := treasury::withdraw_with_capability<#0>($t6, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:133:9+56 + call $t7,$t6 := $1_treasury_withdraw_with_capability'$1_starcoin_coin_STC'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(70,5512,5568)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(51,3):", $t3} $t3 == $t3; + goto L2; + } + + // write_back[Reference($t5).cap (treasury::WithdrawCapability<#0>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:133:9+56 + $t5 := $UpdateMutation($t5, $Update'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''_cap($Dereference($t5), $Dereference($t6))); + + // write_back[dao_treasury_withdraw_proposal::WrappedWithdrawCapability<#0>@]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:133:9+56 + $1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t5), + $Dereference($t5)); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:133:9+56 + assume {:print "$track_return(51,3,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:134:5+1 + assume {:print "$at(70,5573,5574)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:134:5+1 + assume {:print "$at(70,5573,5574)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:134:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/dao_treasury_withdraw_proposal.move:134:5+1 + assume {:print "$at(70,5573,5574)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// struct block_reward_config::RewardConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:13:5+131 +datatype $1_block_reward_config_RewardConfig { + $1_block_reward_config_RewardConfig($reward_delay: int) +} +function {:inline} $Update'$1_block_reward_config_RewardConfig'_reward_delay(s: $1_block_reward_config_RewardConfig, x: int): $1_block_reward_config_RewardConfig { + $1_block_reward_config_RewardConfig(x) +} +function $IsValid'$1_block_reward_config_RewardConfig'(s: $1_block_reward_config_RewardConfig): bool { + $IsValid'u64'(s->$reward_delay) +} +function {:inline} $IsEqual'$1_block_reward_config_RewardConfig'(s1: $1_block_reward_config_RewardConfig, s2: $1_block_reward_config_RewardConfig): bool { + s1 == s2 +} + +// fun block_reward_config::get_reward_config [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:49:5+150 +procedure {:inline 1} $1_block_reward_config_get_reward_config() returns ($ret0: $1_block_reward_config_RewardConfig) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_block_reward_config_RewardConfig; + var $temp_0'$1_block_reward_config_RewardConfig': $1_block_reward_config_RewardConfig; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:50:55+42 + assume {:print "$at(62,1635,1677)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(62,1635,1677)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(52,0):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := on_chain_config::get_by_address($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:50:9+89 + call $t2 := $1_on_chain_config_get_by_address'$1_block_reward_config_RewardConfig'($t0); + if ($abort_flag) { + assume {:print "$at(62,1589,1678)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(52,0):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:50:9+89 + assume {:print "$track_return(52,0,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:51:5+1 + assume {:print "$at(62,1683,1684)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:51:5+1 + assume {:print "$at(62,1683,1684)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:51:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:51:5+1 + assume {:print "$at(62,1683,1684)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun block_reward_config::reward_delay [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:62:5+122 +procedure {:inline 1} $1_block_reward_config_reward_delay() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_block_reward_config_RewardConfig; + var $t1: $1_block_reward_config_RewardConfig; + var $t2: int; + var $t3: int; + var $temp_0'$1_block_reward_config_RewardConfig': $1_block_reward_config_RewardConfig; + var $temp_0'u64': int; + + // bytecode translation starts here + // $t1 := block_reward_config::get_reward_config() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:63:29+19 + assume {:print "$at(62,2013,2032)"} true; + call $t1 := $1_block_reward_config_get_reward_config(); + if ($abort_flag) { + assume {:print "$at(62,2013,2032)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(52,3):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[reward_config]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:63:13+13 + assume {:print "$track_local(52,3,0):", $t1} $t1 == $t1; + + // $t3 := get_field.reward_delay($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:64:9+26 + assume {:print "$at(62,2042,2068)"} true; + $t3 := $t1->$reward_delay; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:64:9+26 + assume {:print "$track_return(52,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:65:5+1 + assume {:print "$at(62,2073,2074)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:65:5+1 + assume {:print "$at(62,2073,2074)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:65:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward_config.move:65:5+1 + assume {:print "$at(62,2073,2074)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// struct block_reward::BlockRewardEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:41:5+252 +datatype $1_block_reward_BlockRewardEvent { + $1_block_reward_BlockRewardEvent($block_number: int, $block_reward: int, $gas_fees: int, $miner: int) +} +function {:inline} $Update'$1_block_reward_BlockRewardEvent'_block_number(s: $1_block_reward_BlockRewardEvent, x: int): $1_block_reward_BlockRewardEvent { + $1_block_reward_BlockRewardEvent(x, s->$block_reward, s->$gas_fees, s->$miner) +} +function {:inline} $Update'$1_block_reward_BlockRewardEvent'_block_reward(s: $1_block_reward_BlockRewardEvent, x: int): $1_block_reward_BlockRewardEvent { + $1_block_reward_BlockRewardEvent(s->$block_number, x, s->$gas_fees, s->$miner) +} +function {:inline} $Update'$1_block_reward_BlockRewardEvent'_gas_fees(s: $1_block_reward_BlockRewardEvent, x: int): $1_block_reward_BlockRewardEvent { + $1_block_reward_BlockRewardEvent(s->$block_number, s->$block_reward, x, s->$miner) +} +function {:inline} $Update'$1_block_reward_BlockRewardEvent'_miner(s: $1_block_reward_BlockRewardEvent, x: int): $1_block_reward_BlockRewardEvent { + $1_block_reward_BlockRewardEvent(s->$block_number, s->$block_reward, s->$gas_fees, x) +} +function $IsValid'$1_block_reward_BlockRewardEvent'(s: $1_block_reward_BlockRewardEvent): bool { + $IsValid'u64'(s->$block_number) + && $IsValid'u128'(s->$block_reward) + && $IsValid'u128'(s->$gas_fees) + && $IsValid'address'(s->$miner) +} +function {:inline} $IsEqual'$1_block_reward_BlockRewardEvent'(s1: $1_block_reward_BlockRewardEvent, s2: $1_block_reward_BlockRewardEvent): bool { + s1 == s2 +} + +// struct block_reward::RewardInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:29:5+306 +datatype $1_block_reward_RewardInfo { + $1_block_reward_RewardInfo($number: int, $reward: int, $miner: int, $gas_fees: $1_coin_Coin'$1_starcoin_coin_STC') +} +function {:inline} $Update'$1_block_reward_RewardInfo'_number(s: $1_block_reward_RewardInfo, x: int): $1_block_reward_RewardInfo { + $1_block_reward_RewardInfo(x, s->$reward, s->$miner, s->$gas_fees) +} +function {:inline} $Update'$1_block_reward_RewardInfo'_reward(s: $1_block_reward_RewardInfo, x: int): $1_block_reward_RewardInfo { + $1_block_reward_RewardInfo(s->$number, x, s->$miner, s->$gas_fees) +} +function {:inline} $Update'$1_block_reward_RewardInfo'_miner(s: $1_block_reward_RewardInfo, x: int): $1_block_reward_RewardInfo { + $1_block_reward_RewardInfo(s->$number, s->$reward, x, s->$gas_fees) +} +function {:inline} $Update'$1_block_reward_RewardInfo'_gas_fees(s: $1_block_reward_RewardInfo, x: $1_coin_Coin'$1_starcoin_coin_STC'): $1_block_reward_RewardInfo { + $1_block_reward_RewardInfo(s->$number, s->$reward, s->$miner, x) +} +function $IsValid'$1_block_reward_RewardInfo'(s: $1_block_reward_RewardInfo): bool { + $IsValid'u64'(s->$number) + && $IsValid'u128'(s->$reward) + && $IsValid'address'(s->$miner) + && $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''(s->$gas_fees) +} +function {:inline} $IsEqual'$1_block_reward_RewardInfo'(s1: $1_block_reward_RewardInfo, s2: $1_block_reward_RewardInfo): bool { + s1 == s2 +} + +// struct block_reward::RewardQueue at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:19:5+331 +datatype $1_block_reward_RewardQueue { + $1_block_reward_RewardQueue($reward_number: int, $infos: Vec ($1_block_reward_RewardInfo), $reward_events: $1_event_EventHandle'$1_block_reward_BlockRewardEvent') +} +function {:inline} $Update'$1_block_reward_RewardQueue'_reward_number(s: $1_block_reward_RewardQueue, x: int): $1_block_reward_RewardQueue { + $1_block_reward_RewardQueue(x, s->$infos, s->$reward_events) +} +function {:inline} $Update'$1_block_reward_RewardQueue'_infos(s: $1_block_reward_RewardQueue, x: Vec ($1_block_reward_RewardInfo)): $1_block_reward_RewardQueue { + $1_block_reward_RewardQueue(s->$reward_number, x, s->$reward_events) +} +function {:inline} $Update'$1_block_reward_RewardQueue'_reward_events(s: $1_block_reward_RewardQueue, x: $1_event_EventHandle'$1_block_reward_BlockRewardEvent'): $1_block_reward_RewardQueue { + $1_block_reward_RewardQueue(s->$reward_number, s->$infos, x) +} +function $IsValid'$1_block_reward_RewardQueue'(s: $1_block_reward_RewardQueue): bool { + $IsValid'u64'(s->$reward_number) + && $IsValid'vec'$1_block_reward_RewardInfo''(s->$infos) + && $IsValid'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(s->$reward_events) +} +function {:inline} $IsEqual'$1_block_reward_RewardQueue'(s1: $1_block_reward_RewardQueue, s2: $1_block_reward_RewardQueue): bool { + $IsEqual'u64'(s1->$reward_number, s2->$reward_number) + && $IsEqual'vec'$1_block_reward_RewardInfo''(s1->$infos, s2->$infos) + && $IsEqual'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''(s1->$reward_events, s2->$reward_events)} +var $1_block_reward_RewardQueue_$memory: $Memory $1_block_reward_RewardQueue; + +// fun block_reward::process_block_reward [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+5130 +procedure {:inline 1} $1_block_reward_process_block_reward(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int, _$t4: Vec (int), _$t5: $1_coin_Coin'$1_starcoin_coin_STC') returns () +{ + // declare local variables + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $signer; + var $t11: $1_string_String; + var $t12: $1_string_String; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: bool; + var $t16: $1_string_String; + var $t17: int; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: int; + var $t21: $1_block_reward_RewardInfo; + var $t22: int; + var $t23: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t28: int; + var $t29: int; + var $t30: $Mutation ($1_block_reward_RewardInfo); + var $t31: $Mutation ($1_block_reward_RewardQueue); + var $t32: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t33: int; + var $t34: int; + var $t35: Vec (int); + var $t36: $1_string_String; + var $t37: int; + var $t38: bool; + var $t39: int; + var $t40: bool; + var $t41: Vec (int); + var $t42: $1_string_String; + var $t43: int; + var $t44: $Mutation ($1_block_reward_RewardQueue); + var $t45: Vec ($1_block_reward_RewardInfo); + var $t46: int; + var $t47: Vec (int); + var $t48: $1_string_String; + 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: bool; + var $t58: $Mutation (Vec ($1_block_reward_RewardInfo)); + var $t59: int; + var $t60: int; + var $t61: $Mutation ($1_block_reward_RewardInfo); + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t69: int; + var $t70: Vec (int); + var $t71: $1_string_String; + var $t72: bool; + var $t73: int; + var $t74: bool; + var $t75: bool; + var $t76: int; + var $t77: $1_block_reward_RewardInfo; + var $t78: int; + var $t79: int; + var $t80: int; + var $t81: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t82: int; + var $t83: int; + var $t84: Vec (int); + var $t85: $1_string_String; + var $t86: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t87: int; + var $t88: int; + var $t89: bool; + var $t90: int; + var $t91: bool; + var $t92: Vec (int); + var $t93: $1_string_String; + var $t94: int; + var $t95: bool; + var $t96: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t97: Vec (int); + var $t98: $1_string_String; + var $t99: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t100: int; + var $t101: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t102: int; + var $t103: int; + var $t104: bool; + var $t105: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t106: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t107: Vec (int); + var $t108: $1_string_String; + var $t109: $1_block_reward_BlockRewardEvent; + var $t110: Vec (int); + var $t111: $1_string_String; + var $t112: int; + var $t113: int; + var $t114: int; + var $t115: int; + var $t116: int; + var $t117: $Mutation (Vec ($1_block_reward_RewardInfo)); + var $t118: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t119: $Mutation ($1_event_EventHandle'$1_block_reward_BlockRewardEvent'); + var $t120: $Mutation (int); + var $t121: $1_coin_CoinStore'$1_starcoin_coin_STC'; + var $t122: Vec (int); + var $t123: bool; + var $t124: bool; + var $t125: $signer; + var $t126: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t127: $1_block_reward_RewardInfo; + var $t128: $Mutation (Vec ($1_block_reward_RewardInfo)); + var $t129: Vec (int); + var $t130: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_block_reward_RewardInfo': $1_block_reward_RewardInfo; + var $temp_0'$1_block_reward_RewardQueue': $1_block_reward_RewardQueue; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t34, vector::$length(select block_reward::RewardQueue.infos(global(system_addresses::$get_starcoin_framework())))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.spec.move:40:9+111 + assume {:print "$at(61,1812,1923)"} true; + assume ($t34 == $1_vector_$length'$1_block_reward_RewardInfo'($ResourceValue($1_block_reward_RewardQueue_$memory, $1_system_addresses_$get_starcoin_framework())->$infos)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$at(60,2374,2375)"} true; + assume {:print "$track_local(53,1,0):", $t0} $t0 == $t0; + + // trace_local[current_number]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$track_local(53,1,1):", $t1} $t1 == $t1; + + // trace_local[current_reward]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$track_local(53,1,2):", $t2} $t2 == $t2; + + // trace_local[current_author]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$track_local(53,1,3):", $t3} $t3 == $t3; + + // trace_local[_auth_key_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$track_local(53,1,4):", $t4} $t4 == $t4; + + // trace_local[previous_block_gas_fees]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:72:5+1 + assume {:print "$track_local(53,1,5):", $t5} $t5 == $t5; + + // $t35 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:80:41+47 + assume {:print "$at(60,2678,2725)"} true; + $t35 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t35); + + // $t36 := string::utf8($t35) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:80:23+66 + call $t36 := $1_string_utf8($t35); + if ($abort_flag) { + assume {:print "$at(60,2660,2726)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t36) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:80:9+81 + call $1_debug_print'$1_string_String'($t36); + if ($abort_flag) { + assume {:print "$at(60,2646,2727)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + assume {:print "$at(60,2738,2790)"} true; + + // assume Identical($t38, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + assume ($t38 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t38) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + if ($t38) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 +L35: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + assume {:print "$at(60,2738,2790)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t37)); + + // trace_abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + assume {:print "$at(60,2738,2790)"} true; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + + // goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + goto L33; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 +L34: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:82:9+52 + assume {:print "$at(60,2738,2790)"} true; + + // $t39 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:84:31+1 + assume {:print "$at(60,2823,2824)"} true; + $t39 := 0; + assume $IsValid'u64'($t39); + + // $t40 := ==($t1, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:84:28+2 + $t40 := $IsEqual'u64'($t1, $t39); + + // if ($t40) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:84:9+227 + if ($t40) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:85:13+43 + assume {:print "$at(60,2840,2883)"} true; +L1: + + // coin::destroy_zero($t5) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:85:13+43 + assume {:print "$at(60,2840,2883)"} true; + call $1_coin_destroy_zero'$1_starcoin_coin_STC'($t5); + if ($abort_flag) { + assume {:print "$at(60,2840,2883)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t41 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 69, 120, 105, 116, 101, 100, 44, 32, 99, 117, 114, 114, 101, 110, 116, 95, 110, 117, 109, 98, 101, 114, 32, 105, 115, 32, 48] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:86:45+67 + assume {:print "$at(60,2929,2996)"} true; + $t41 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 101, 100, 44)), MakeVec4(32, 99, 117, 114)), MakeVec4(114, 101, 110, 116)), MakeVec4(95, 110, 117, 109)), MakeVec4(98, 101, 114, 32)), MakeVec4(105, 115, 32, 48)); + assume $IsValid'vec'u8''($t41); + + // $t42 := string::utf8($t41) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:86:27+86 + call $t42 := $1_string_utf8($t41); + if ($abort_flag) { + assume {:print "$at(60,2911,2997)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t42) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:86:13+101 + call $1_debug_print'$1_string_String'($t42); + if ($abort_flag) { + assume {:print "$at(60,2897,2998)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:87:13+6 + assume {:print "$at(60,3012,3018)"} true; + goto L32; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:90:54+42 + assume {:print "$at(60,3084,3126)"} true; +L0: + + // $t43 := system_addresses::get_starcoin_framework() on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:90:54+42 + assume {:print "$at(60,3084,3126)"} true; + call $t43 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(60,3084,3126)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t44 := borrow_global($t43) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:90:23+17 + if (!$ResourceExists($1_block_reward_RewardQueue_$memory, $t43)) { + call $ExecFailureAbort(); + } else { + $t44 := $Mutation($Global($t43), EmptyVec(), $ResourceValue($1_block_reward_RewardQueue_$memory, $t43)); + } + if ($abort_flag) { + assume {:print "$at(60,3053,3070)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[rewards]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:90:13+7 + $temp_0'$1_block_reward_RewardQueue' := $Dereference($t44); + assume {:print "$track_local(53,1,31):", $temp_0'$1_block_reward_RewardQueue'} $temp_0'$1_block_reward_RewardQueue' == $temp_0'$1_block_reward_RewardQueue'; + + // $t45 := get_field.infos($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:91:34+14 + assume {:print "$at(60,3162,3176)"} true; + $t45 := $Dereference($t44)->$infos; + + // $t46 := vector::length($t45) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:91:19+30 + call $t46 := $1_vector_length'$1_block_reward_RewardInfo'($t45); + if ($abort_flag) { + assume {:print "$at(60,3147,3177)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[len]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:91:13+3 + assume {:print "$track_local(53,1,25):", $t46} $t46 == $t46; + + // $t47 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 114, 101, 119, 97, 114, 100, 115, 32, 105, 110, 102, 111, 32, 108, 101, 110, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:93:41+58 + assume {:print "$at(60,3220,3278)"} true; + $t47 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 114, 101, 119)), MakeVec4(97, 114, 100, 115)), MakeVec4(32, 105, 110, 102)), MakeVec4(111, 32, 108, 101)), MakeVec3(110, 58, 32)); + assume $IsValid'vec'u8''($t47); + + // $t48 := string::utf8($t47) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:93:23+77 + call $t48 := $1_string_utf8($t47); + if ($abort_flag) { + assume {:print "$at(60,3202,3279)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t48) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:93:9+92 + call $1_debug_print'$1_string_String'($t48); + if ($abort_flag) { + assume {:print "$at(60,3188,3280)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t46) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:94:9+18 + assume {:print "$at(60,3290,3308)"} true; + call $1_debug_print'u64'($t46); + if ($abort_flag) { + assume {:print "$at(60,3290,3308)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t49 := get_field.reward_number($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:97:33+21 + assume {:print "$at(60,3360,3381)"} true; + $t49 := $Dereference($t44)->$reward_number; + + // $t50 := +($t49, $t46) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:97:55+1 + call $t50 := $AddU64($t49, $t46); + if ($abort_flag) { + assume {:print "$at(60,3382,3383)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t51 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:97:63+1 + $t51 := 1; + assume $IsValid'u64'($t51); + + // $t52 := +($t50, $t51) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:97:61+1 + call $t52 := $AddU64($t50, $t51); + if ($abort_flag) { + assume {:print "$at(60,3388,3389)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t53 := ==($t1, $t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:97:29+2 + $t53 := $IsEqual'u64'($t1, $t52); + + // if ($t53) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + assume {:print "$at(60,3319,3466)"} true; + if ($t53) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + assume {:print "$at(60,3319,3466)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 +L2: + + // drop($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + assume {:print "$at(60,3319,3466)"} true; + + // $t54 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:98:37+24 + assume {:print "$at(60,3431,3455)"} true; + $t54 := 102; + assume $IsValid'u64'($t54); + + // $t55 := error::invalid_argument($t54) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:98:13+49 + call $t55 := $1_error_invalid_argument($t54); + if ($abort_flag) { + assume {:print "$at(60,3407,3456)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_abort($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + assume {:print "$at(60,3319,3466)"} true; + assume {:print "$track_abort(53,1):", $t55} $t55 == $t55; + + // $t37 := move($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + $t37 := $t55; + + // goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:96:9+147 + goto L33; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:103:13+3 + assume {:print "$at(60,3616,3619)"} true; +L4: + + // $t56 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:103:20+1 + assume {:print "$at(60,3623,3624)"} true; + $t56 := 0; + assume $IsValid'u64'($t56); + + // $t57 := ==($t46, $t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:103:17+2 + $t57 := $IsEqual'u64'($t46, $t56); + + // if ($t57) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:103:9+369 + if ($t57) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:104:32+23 + assume {:print "$at(60,3659,3682)"} true; +L6: + + // coin::destroy_zero($t5) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:104:13+43 + assume {:print "$at(60,3640,3683)"} true; + call $1_coin_destroy_zero'$1_starcoin_coin_STC'($t5); + if ($abort_flag) { + assume {:print "$at(60,3640,3683)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:104:56+1 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:55+7 + assume {:print "$at(60,3756,3763)"} true; +L5: + + // $t58 := borrow_field.infos($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:50+18 + assume {:print "$at(60,3751,3769)"} true; + $t58 := $ChildMutation($t44, 1, $Dereference($t44)->$infos); + + // $t59 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:76+1 + $t59 := 1; + assume $IsValid'u64'($t59); + + // $t60 := -($t46, $t59) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:74+1 + call $t60 := $Sub($t46, $t59); + if ($abort_flag) { + assume {:print "$at(60,3775,3776)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t61 := vector::borrow_mut($t58, $t60) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:31+47 + call $t61,$t58 := $1_vector_borrow_mut'$1_block_reward_RewardInfo'($t58, $t60); + if ($abort_flag) { + assume {:print "$at(60,3732,3779)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[reward_info]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:106:17+11 + $temp_0'$1_block_reward_RewardInfo' := $Dereference($t61); + assume {:print "$track_local(53,1,30):", $temp_0'$1_block_reward_RewardInfo'} $temp_0'$1_block_reward_RewardInfo' == $temp_0'$1_block_reward_RewardInfo'; + + // $t62 := get_field.number($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:39+18 + assume {:print "$at(60,3819,3837)"} true; + $t62 := $Dereference($t61)->$number; + + // $t63 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:60+1 + $t63 := 1; + assume $IsValid'u64'($t63); + + // $t64 := +($t62, $t63) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:58+1 + call $t64 := $AddU64($t62, $t63); + if ($abort_flag) { + assume {:print "$at(60,3838,3839)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t65 := ==($t1, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:36+2 + $t65 := $IsEqual'u64'($t1, $t64); + + // if ($t65) goto L9 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + if ($t65) { goto L9; } else { goto L36; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + assume {:print "$at(60,3793,3893)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 +L8: + + // drop($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + assume {:print "$at(60,3793,3893)"} true; + + // drop($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + + // $t66 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:87+24 + $t66 := 102; + assume $IsValid'u64'($t66); + + // $t67 := error::invalid_argument($t66) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:63+49 + call $t67 := $1_error_invalid_argument($t66); + if ($abort_flag) { + assume {:print "$at(60,3843,3892)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + assume {:print "$at(60,3793,3893)"} true; + assume {:print "$track_abort(53,1):", $t67} $t67 == $t67; + + // $t37 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + $t37 := $t67; + + // goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:107:13+100 + goto L33; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:30+11 + assume {:print "$at(60,3924,3935)"} true; +L10: + + // $t68 := borrow_field.gas_fees($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:25+25 + assume {:print "$at(60,3919,3944)"} true; + $t68 := $ChildMutation($t61, 3, $Dereference($t61)->$gas_fees); + + // coin::merge($t68, $t5) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:13+63 + call $t68 := $1_coin_merge'$1_starcoin_coin_STC'($t68, $t5); + if ($abort_flag) { + assume {:print "$at(60,3907,3970)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // write_back[Reference($t61).gas_fees (coin::Coin)]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:13+63 + $t61 := $UpdateMutation($t61, $Update'$1_block_reward_RewardInfo'_gas_fees($Dereference($t61), $Dereference($t68))); + + // write_back[Reference($t58)[]]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:13+63 + $t58 := $UpdateMutation($t58, UpdateVec($Dereference($t58), ReadVec($t61->p, LenVec($t58->p)), $Dereference($t61))); + + // write_back[Reference($t44).infos (vector)]($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:108:13+63 + $t44 := $UpdateMutation($t44, $Update'$1_block_reward_RewardQueue'_infos($Dereference($t44), $Dereference($t58))); + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:111:28+35 + assume {:print "$at(60,4011,4046)"} true; +L7: + + // $t69 := block_reward_config::reward_delay() on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:111:28+35 + assume {:print "$at(60,4011,4046)"} true; + call $t69 := $1_block_reward_config_reward_delay(); + if ($abort_flag) { + assume {:print "$at(60,4011,4046)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[reward_delay]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:111:13+12 + assume {:print "$track_local(53,1,29):", $t69} $t69 == $t69; + + // $t70 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 114, 101, 119, 97, 114, 100, 115, 32, 100, 101, 108, 97, 121, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:112:41+55 + assume {:print "$at(60,4088,4143)"} true; + $t70 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 114, 101, 119)), MakeVec4(97, 114, 100, 115)), MakeVec4(32, 100, 101, 108)), MakeVec4(97, 121, 58, 32)); + assume $IsValid'vec'u8''($t70); + + // $t71 := string::utf8($t70) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:112:23+74 + call $t71 := $1_string_utf8($t70); + if ($abort_flag) { + assume {:print "$at(60,4070,4144)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t71) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:112:9+89 + call $1_debug_print'$1_string_String'($t71); + if ($abort_flag) { + assume {:print "$at(60,4056,4145)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t69) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:113:9+27 + assume {:print "$at(60,4155,4182)"} true; + call $1_debug_print'u64'($t69); + if ($abort_flag) { + assume {:print "$at(60,4155,4182)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t72 := >=($t46, $t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:114:17+2 + assume {:print "$at(60,4200,4202)"} true; + call $t72 := $Ge($t46, $t69); + + // if ($t72) goto L37 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:114:9+2729 + if ($t72) { goto L37; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:116:21+3 + assume {:print "$at(60,4268,4271)"} true; +L12: + + // trace_local[i]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:116:17+1 + assume {:print "$at(60,4264,4265)"} true; + assume {:print "$track_local(53,1,24):", $t46} $t46 == $t46; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume {:print "$at(60,4292,4293)"} true; +L27: + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume {:print "$at(60,4292,4293)"} true; + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t15); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t20); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t24); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t32); + + // $t73 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t73; + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t73); + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t74; + + // assume WellFormed($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t74); + + // $t75 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t75; + + // assume WellFormed($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t75); + + // $t76 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t76; + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t76); + + // $t77 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t77; + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_block_reward_RewardInfo'($t77); + + // $t78 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t78; + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t78); + + // $t79 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t79; + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t79); + + // $t80 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t80; + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'address'($t80); + + // $t81 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t81; + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t81); + + // $t82 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t82; + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t82); + + // $t83 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t83; + + // assume WellFormed($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t83); + + // $t84 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t84; + + // assume WellFormed($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'u8''($t84); + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t85; + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_string_String'($t85); + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t86; + + // assume WellFormed($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t86); + + // $t87 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t87; + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t87); + + // $t88 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t88; + + // assume WellFormed($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t88); + + // $t89 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t89; + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t89); + + // $t90 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t90; + + // assume WellFormed($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t90); + + // $t91 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t91; + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t91); + + // $t92 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t92; + + // assume WellFormed($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'u8''($t92); + + // $t93 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t93; + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_string_String'($t93); + + // $t94 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t94; + + // assume WellFormed($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u128'($t94); + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t95; + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t95); + + // $t96 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t96; + + // assume WellFormed($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t96); + + // $t97 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t97; + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'u8''($t97); + + // $t98 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t98; + + // assume WellFormed($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_string_String'($t98); + + // $t99 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t99; + + // assume WellFormed($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t99); + + // $t100 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t100; + + // assume WellFormed($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t100); + + // $t101 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t101; + + // assume WellFormed($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t101); + + // $t102 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t102; + + // assume WellFormed($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t102); + + // $t103 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t103; + + // assume WellFormed($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t103); + + // $t104 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t104; + + // assume WellFormed($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'bool'($t104); + + // $t105 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t105; + + // assume WellFormed($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t105); + + // $t106 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t106; + + // assume WellFormed($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($t106); + + // $t107 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t107; + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'u8''($t107); + + // $t108 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t108; + + // assume WellFormed($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_string_String'($t108); + + // $t109 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t109; + + // assume WellFormed($t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_block_reward_BlockRewardEvent'($t109); + + // $t110 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t110; + + // assume WellFormed($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'u8''($t110); + + // $t111 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t111; + + // assume WellFormed($t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_string_String'($t111); + + // $t112 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t112; + + // assume WellFormed($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t112); + + // $t113 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t113; + + // assume WellFormed($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t113); + + // $t114 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t114; + + // assume WellFormed($t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t114); + + // $t115 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t115; + + // assume WellFormed($t115) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t115); + + // $t116 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t116; + + // assume WellFormed($t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($t116); + + // $t44 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $temp_0'$1_block_reward_RewardQueue'; + $t44 := $UpdateMutation($t44, $temp_0'$1_block_reward_RewardQueue'); + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_block_reward_RewardQueue'($Dereference($t44)); + + // $t117 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t117; + + // assume WellFormed($t117) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'vec'$1_block_reward_RewardInfo''($Dereference($t117)); + + // $t118 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t118; + + // assume WellFormed($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''($Dereference($t118)); + + // $t119 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t119; + + // assume WellFormed($t119) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'$1_event_EventHandle'$1_block_reward_BlockRewardEvent''($Dereference($t119)); + + // $t120 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + havoc $t120; + + // assume WellFormed($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume $IsValid'u64'($Dereference($t120)); + + // trace_local[block_reward]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume {:print "$info(): enter loop, variable(s) block_reward, i, total_reward havocked and reassigned"} true; + assume {:print "$track_local(53,1,20):", $t20} $t20 == $t20; + + // trace_local[i]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume {:print "$track_local(53,1,24):", $t24} $t24 == $t24; + + // trace_local[total_reward]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume {:print "$track_local(53,1,32):", $t32} $t32 == $t32; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+1 + assume !$abort_flag; + + // $t73 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:24+1 + $t73 := 0; + assume $IsValid'u64'($t73); + + // $t74 := >($t24, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:22+1 + call $t74 := $Gt($t24, $t73); + + // if ($t74) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 + if ($t74) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 +L14: + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:29+1 + assume {:print "$at(60,4301,4302)"} true; +L15: + + // $t15 := >=($t24, $t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:31+2 + assume {:print "$at(60,4303,4305)"} true; + call $t15 := $Ge($t24, $t69); + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 + goto L16; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 +L13: + + // $t75 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 + assume {:print "$at(60,4292,4318)"} true; + $t75 := false; + assume $IsValid'bool'($t75); + + // $t15 := $t75 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 + $t15 := $t75; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:20+26 +L16: + + // if ($t15) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:13+2626 + assume {:print "$at(60,4285,6911)"} true; + if ($t15) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:124:26+7 + assume {:print "$at(60,4563,4570)"} true; +L18: + + // $t117 := borrow_field.infos($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:124:21+18 + assume {:print "$at(60,4558,4576)"} true; + $t117 := $ChildMutation($t44, 1, $Dereference($t44)->$infos); + + // $t76 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:125:21+1 + assume {:print "$at(60,4598,4599)"} true; + $t76 := 0; + assume $IsValid'u64'($t76); + + // $t77 := vector::remove($t117, $t76) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:123:21+95 + assume {:print "$at(60,4522,4617)"} true; + call $t77,$t117 := $1_vector_remove'$1_block_reward_RewardInfo'($t117, $t76); + if ($abort_flag) { + assume {:print "$at(60,4522,4617)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // write_back[Reference($t44).infos (vector)]($t117) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:123:21+95 + $t44 := $UpdateMutation($t44, $Update'$1_block_reward_RewardQueue'_infos($Dereference($t44), $Dereference($t117))); + + // ($t78, $t79, $t80, $t81) := unpack block_reward::RewardInfo($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:118:21+177 + assume {:print "$at(60,4342,4519)"} true; + $t78 := $t77->$number; + $t79 := $t77->$reward; + $t80 := $t77->$miner; + $t81 := $t77->$gas_fees; + + // trace_local[gas_fees]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:121:21+8 + assume {:print "$at(60,4466,4474)"} true; + assume {:print "$track_local(53,1,23):", $t81} $t81 == $t81; + + // trace_local[miner]($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:122:21+5 + assume {:print "$at(60,4496,4501)"} true; + assume {:print "$track_local(53,1,26):", $t80} $t80 == $t80; + + // $t20 := $t79 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:120:29+12 + assume {:print "$at(60,4432,4444)"} true; + $t20 := $t79; + + // trace_local[block_reward]($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:120:29+12 + assume {:print "$track_local(53,1,20):", $t79} $t79 == $t79; + + // trace_local[reward_block_number]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:119:29+19 + assume {:print "$at(60,4383,4402)"} true; + assume {:print "$track_local(53,1,28):", $t78} $t78 == $t78; + + // $t82 := coin::value($t81) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:128:38+22 + assume {:print "$at(60,4657,4679)"} true; + call $t82 := $1_coin_value'$1_starcoin_coin_STC'($t81); + if ($abort_flag) { + assume {:print "$at(60,4657,4679)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t83 := (u128)($t82) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:128:37+32 + call $t83 := $CastU128($t82); + if ($abort_flag) { + assume {:print "$at(60,4656,4688)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[gas_fee_value]($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:128:21+13 + assume {:print "$track_local(53,1,22):", $t83} $t83 == $t83; + + // $t32 := $t81 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:129:21+12 + assume {:print "$at(60,4710,4722)"} true; + $t32 := $t81; + + // trace_local[total_reward]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:129:21+12 + assume {:print "$track_local(53,1,32):", $t32} $t32 == $t32; + + // $t84 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 116, 111, 116, 97, 108, 95, 114, 101, 119, 97, 114, 100, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:130:49+54 + assume {:print "$at(60,4783,4837)"} true; + $t84 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 116, 111, 116)), MakeVec4(97, 108, 95, 114)), MakeVec4(101, 119, 97, 114)), MakeVec3(100, 58, 32)); + assume $IsValid'vec'u8''($t84); + + // $t85 := string::utf8($t84) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:130:31+73 + call $t85 := $1_string_utf8($t84); + if ($abort_flag) { + assume {:print "$at(60,4765,4838)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t85) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:130:17+88 + call $1_debug_print'$1_string_String'($t85); + if ($abort_flag) { + assume {:print "$at(60,4751,4839)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t86 := copy($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:131:43+13 + assume {:print "$at(60,4883,4896)"} true; + $t86 := $t32; + + // $t87 := coin::value($t86) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:131:31+26 + call $t87 := $1_coin_value'$1_starcoin_coin_STC'($t86); + if ($abort_flag) { + assume {:print "$at(60,4871,4897)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t87) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:131:17+41 + call $1_debug_print'u64'($t87); + if ($abort_flag) { + assume {:print "$at(60,4857,4898)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t88 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:134:36+1 + assume {:print "$at(60,4982,4983)"} true; + $t88 := 0; + assume $IsValid'u128'($t88); + + // $t89 := >($t79, $t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:134:34+1 + call $t89 := $Gt($t79, $t88); + + // if ($t89) goto L20 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:134:17+742 + if ($t89) { goto L20; } else { goto L19; } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:136:44+24 + assume {:print "$at(60,5101,5125)"} true; +L20: + + // $t90 := treasury::balance() on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:136:44+24 + assume {:print "$at(60,5101,5125)"} true; + call $t90 := $1_treasury_balance'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(60,5101,5125)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[treasury_balance]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:136:25+16 + assume {:print "$track_local(53,1,33):", $t90} $t90 == $t90; + + // $t91 := <($t90, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:137:42+1 + assume {:print "$at(60,5168,5169)"} true; + call $t91 := $Lt($t90, $t79); + + // if ($t91) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:137:21+117 + if ($t91) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:138:40+16 + assume {:print "$at(60,5225,5241)"} true; +L22: + + // $t20 := $t90 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:138:25+12 + assume {:print "$at(60,5210,5222)"} true; + $t20 := $t90; + + // trace_local[block_reward]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:138:25+12 + assume {:print "$track_local(53,1,20):", $t90} $t90 == $t90; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:140:53+58 + assume {:print "$at(60,5318,5376)"} true; +L21: + + // $t92 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 116, 114, 101, 97, 115, 117, 114, 121, 95, 98, 97, 108, 97, 110, 99, 101, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:140:53+58 + assume {:print "$at(60,5318,5376)"} true; + $t92 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 116, 114, 101)), MakeVec4(97, 115, 117, 114)), MakeVec4(121, 95, 98, 97)), MakeVec4(108, 97, 110, 99)), MakeVec3(101, 58, 32)); + assume $IsValid'vec'u8''($t92); + + // $t93 := string::utf8($t92) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:140:35+77 + call $t93 := $1_string_utf8($t92); + if ($abort_flag) { + assume {:print "$at(60,5300,5377)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t93) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:140:21+92 + call $1_debug_print'$1_string_String'($t93); + if ($abort_flag) { + assume {:print "$at(60,5286,5378)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t90) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:141:21+31 + assume {:print "$at(60,5400,5431)"} true; + call $1_debug_print'u128'($t90); + if ($abort_flag) { + assume {:print "$at(60,5400,5431)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t94 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:142:40+1 + assume {:print "$at(60,5472,5473)"} true; + $t94 := 0; + assume $IsValid'u128'($t94); + + // $t95 := >($t20, $t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:142:38+1 + call $t95 := $Gt($t20, $t94); + + // if ($t95) goto L23 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:142:21+233 + if ($t95) { goto L23; } else { goto L19; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:143:101+7 + assume {:print "$at(60,5577,5584)"} true; +L23: + + // $t96 := dao_treasury_withdraw_proposal::withdraw_for_block_reward($t0, $t20) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:143:38+85 + assume {:print "$at(60,5514,5599)"} true; + call $t96 := $1_dao_treasury_withdraw_proposal_withdraw_for_block_reward'$1_starcoin_coin_STC'($t0, $t20); + if ($abort_flag) { + assume {:print "$at(60,5514,5599)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[reward]($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:143:29+6 + assume {:print "$track_local(53,1,27):", $t96} $t96 == $t96; + + // $t118 := borrow_local($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:144:37+17 + assume {:print "$at(60,5637,5654)"} true; + $t118 := $Mutation($Local(32), EmptyVec(), $t32); + + // coin::merge($t118, $t96) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:144:25+38 + call $t118 := $1_coin_merge'$1_starcoin_coin_STC'($t118, $t96); + if ($abort_flag) { + assume {:print "$at(60,5625,5663)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // write_back[LocalRoot($t32)@]($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:144:25+38 + $t32 := $Dereference($t118); + + // trace_local[total_reward]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:144:25+38 + assume {:print "$track_local(53,1,32):", $t32} $t32 == $t32; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:149:49+65 + assume {:print "$at(60,5793,5858)"} true; +L19: + + // $t97 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 100, 105, 115, 116, 114, 105, 98, 117, 116, 101, 32, 116, 111, 116, 97, 108, 32, 114, 101, 119, 97, 114, 100, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:149:49+65 + assume {:print "$at(60,5793,5858)"} true; + $t97 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 100, 105, 115)), MakeVec4(116, 114, 105, 98)), MakeVec4(117, 116, 101, 32)), MakeVec4(116, 111, 116, 97)), MakeVec4(108, 32, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec2(58, 32)); + assume $IsValid'vec'u8''($t97); + + // $t98 := string::utf8($t97) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:149:31+84 + call $t98 := $1_string_utf8($t97); + if ($abort_flag) { + assume {:print "$at(60,5775,5859)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t98) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:149:17+99 + call $1_debug_print'$1_string_String'($t98); + if ($abort_flag) { + assume {:print "$at(60,5761,5860)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t99 := copy($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:150:43+13 + assume {:print "$at(60,5904,5917)"} true; + $t99 := $t32; + + // $t100 := coin::value($t99) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:150:31+26 + call $t100 := $1_coin_value'$1_starcoin_coin_STC'($t99); + if ($abort_flag) { + assume {:print "$at(60,5892,5918)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t100) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:150:17+41 + call $1_debug_print'u64'($t100); + if ($abort_flag) { + assume {:print "$at(60,5878,5919)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print
($t80) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:151:17+20 + assume {:print "$at(60,5937,5957)"} true; + call $1_debug_print'address'($t80); + if ($abort_flag) { + assume {:print "$at(60,5937,5957)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t101 := copy($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:153:33+13 + assume {:print "$at(60,5992,6005)"} true; + $t101 := $t32; + + // $t102 := coin::value($t101) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:153:21+26 + call $t102 := $1_coin_value'$1_starcoin_coin_STC'($t101); + if ($abort_flag) { + assume {:print "$at(60,5980,6006)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t103 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:153:50+1 + $t103 := 0; + assume $IsValid'u64'($t103); + + // $t104 := >($t102, $t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:153:48+1 + call $t104 := $Gt($t102, $t103); + + // if ($t104) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:153:17+195 + if ($t104) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:154:40+5 + assume {:print "$at(60,6053,6058)"} true; +L25: + + // $t105 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:154:47+12 + assume {:print "$at(60,6060,6072)"} true; + $t105 := $t32; + + // assume Identical($t121, global>($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t121 == $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $t80)); + + // coin::deposit($t80, $t105) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:154:21+39 + assume {:print "$at(60,6034,6073)"} true; + call $1_coin_deposit'$1_starcoin_coin_STC'($t80, $t105); + if ($abort_flag) { + assume {:print "$at(60,6034,6073)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:154:60+1 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:156:40+12 + assume {:print "$at(60,6139,6151)"} true; +L24: + + // $t106 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:156:40+12 + assume {:print "$at(60,6139,6151)"} true; + $t106 := $t32; + + // coin::destroy_zero($t106) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:156:21+32 + call $1_coin_destroy_zero'$1_starcoin_coin_STC'($t106); + if ($abort_flag) { + assume {:print "$at(60,6120,6152)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:159:49+64 + assume {:print "$at(60,6222,6286)"} true; +L26: + + // $t107 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 98, 101, 102, 111, 114, 101, 32, 101, 109, 105, 116, 32, 114, 101, 119, 97, 114, 100, 32, 101, 118, 101, 110, 116] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:159:49+64 + assume {:print "$at(60,6222,6286)"} true; + $t107 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 98, 101, 102)), MakeVec4(111, 114, 101, 32)), MakeVec4(101, 109, 105, 116)), MakeVec4(32, 114, 101, 119)), MakeVec4(97, 114, 100, 32)), MakeVec4(101, 118, 101, 110)), MakeVec1(116)); + assume $IsValid'vec'u8''($t107); + + // $t108 := string::utf8($t107) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:159:31+83 + call $t108 := $1_string_utf8($t107); + if ($abort_flag) { + assume {:print "$at(60,6204,6287)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t108) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:159:17+98 + call $1_debug_print'$1_string_String'($t108); + if ($abort_flag) { + assume {:print "$at(60,6190,6288)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t119 := borrow_field.reward_events($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:163:21+26 + assume {:print "$at(60,6402,6428)"} true; + $t119 := $ChildMutation($t44, 2, $Dereference($t44)->$reward_events); + + // $t109 := pack block_reward::BlockRewardEvent($t78, $t20, $t83, $t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:164:21+217 + assume {:print "$at(60,6450,6667)"} true; + $t109 := $1_block_reward_BlockRewardEvent($t78, $t20, $t83, $t80); + + // opaque begin: event::emit_event($t119, $t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:162:17+340 + assume {:print "$at(60,6345,6685)"} true; + + // opaque end: event::emit_event($t119, $t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:162:17+340 + + // write_back[Reference($t44).reward_events (event::EventHandle)]($t119) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:162:17+340 + $t44 := $UpdateMutation($t44, $Update'$1_block_reward_RewardQueue'_reward_events($Dereference($t44), $Dereference($t119))); + + // $t110 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 97, 102, 116, 101, 114, 32, 101, 109, 105, 116, 32, 114, 101, 119, 97, 114, 100, 32, 101, 118, 101, 110, 116] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:172:49+63 + assume {:print "$at(60,6736,6799)"} true; + $t110 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 97, 102, 116)), MakeVec4(101, 114, 32, 101)), MakeVec4(109, 105, 116, 32)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 101)), MakeVec4(118, 101, 110, 116)); + assume $IsValid'vec'u8''($t110); + + // $t111 := string::utf8($t110) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:172:31+82 + call $t111 := $1_string_utf8($t110); + if ($abort_flag) { + assume {:print "$at(60,6718,6800)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t111) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:172:17+97 + call $1_debug_print'$1_string_String'($t111); + if ($abort_flag) { + assume {:print "$at(60,6704,6801)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t112 := get_field.reward_number($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:41+21 + assume {:print "$at(60,6844,6865)"} true; + $t112 := $Dereference($t44)->$reward_number; + + // $t113 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:65+1 + $t113 := 1; + assume $IsValid'u64'($t113); + + // $t114 := +($t112, $t113) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:63+1 + call $t114 := $AddU64($t112, $t113); + if ($abort_flag) { + assume {:print "$at(60,6866,6867)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t120 := borrow_field.reward_number($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:17+21 + $t120 := $ChildMutation($t44, 0, $Dereference($t44)->$reward_number); + + // write_ref($t120, $t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:17+49 + $t120 := $UpdateMutation($t120, $t114); + + // write_back[Reference($t44).reward_number (u64)]($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:174:17+49 + $t44 := $UpdateMutation($t44, $Update'$1_block_reward_RewardQueue'_reward_number($Dereference($t44), $Dereference($t120))); + + // $t115 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:175:25+1 + assume {:print "$at(60,6895,6896)"} true; + $t115 := 1; + assume $IsValid'u64'($t115); + + // $t116 := -($t24, $t115) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:175:23+1 + call $t116 := $Sub($t24, $t115); + if ($abort_flag) { + assume {:print "$at(60,6893,6894)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // trace_local[i]($t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:175:17+1 + assume {:print "$track_local(53,1,24):", $t116} $t116 == $t116; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:175:26+1 + goto L31; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:13+2626 + assume {:print "$at(60,4285,6911)"} true; +L17: + + // goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:117:13+2626 + assume {:print "$at(60,4285,6911)"} true; + goto L28; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:114:9+2729 + assume {:print "$at(60,4192,6921)"} true; +L11: + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:179:51+14 + assume {:print "$at(60,6974,6988)"} true; +L28: + + // assume Identical($t122, bcs::$to_bytes
($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t122 == $1_bcs_$to_bytes'address'($t3)); + + // account::create_account_if_does_not_exist($t3) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:179:9+57 + assume {:print "$at(60,6932,6989)"} true; + call $1_account_create_account_if_does_not_exist($t3); + if ($abort_flag) { + assume {:print "$at(60,6932,6989)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t123 := coin::is_account_registered($t3) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:180:14+48 + assume {:print "$at(60,7004,7052)"} true; + call $t123 := $1_coin_is_account_registered'$1_starcoin_coin_STC'($t3); + if ($abort_flag) { + assume {:print "$at(60,7004,7052)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t124 := !($t123) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:180:13+1 + call $t124 := $Not($t123); + + // if ($t124) goto L30 else goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:180:9+146 + if ($t124) { goto L30; } else { goto L29; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:63+14 + assume {:print "$at(60,7118,7132)"} true; +L30: + + // $t125 := opaque begin: create_signer::create_signer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:34+44 + assume {:print "$at(60,7089,7133)"} true; + + // assume WellFormed($t125) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:34+44 + assume $IsValid'signer'($t125) && $1_signer_is_txn_signer($t125) && $1_signer_is_txn_signer_addr($t125->$addr); + + // assume Eq
(signer::$address_of($t125), $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:34+44 + assume $IsEqual'address'($1_signer_$address_of($t125), $t3); + + // $t125 := opaque end: create_signer::create_signer($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:34+44 + + // coin::register($t125) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:181:13+66 + call $1_coin_register'$1_starcoin_coin_STC'($t125); + if ($abort_flag) { + assume {:print "$at(60,7068,7134)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:185:21+14 + assume {:print "$at(60,7208,7222)"} true; +L29: + + // $t126 := coin::zero() on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:188:23+17 + assume {:print "$at(60,7317,7334)"} true; + call $t126 := $1_coin_zero'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(60,7317,7334)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // $t127 := pack block_reward::RewardInfo($t1, $t2, $t3, $t126) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:184:28+170 + assume {:print "$at(60,7175,7345)"} true; + $t127 := $1_block_reward_RewardInfo($t1, $t2, $t3, $t126); + + // trace_local[current_info]($t127) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:184:13+12 + assume {:print "$track_local(53,1,21):", $t127} $t127 == $t127; + + // $t128 := borrow_field.infos($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:190:27+18 + assume {:print "$at(60,7373,7391)"} true; + $t128 := $ChildMutation($t44, 1, $Dereference($t44)->$infos); + + // vector::push_back($t128, $t127) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:190:9+51 + call $t128 := $1_vector_push_back'$1_block_reward_RewardInfo'($t128, $t127); + if ($abort_flag) { + assume {:print "$at(60,7355,7406)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // write_back[Reference($t44).infos (vector)]($t128) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:190:9+51 + $t44 := $UpdateMutation($t44, $Update'$1_block_reward_RewardQueue'_infos($Dereference($t44), $Dereference($t128))); + + // write_back[block_reward::RewardQueue@]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:190:9+51 + $1_block_reward_RewardQueue_$memory := $ResourceUpdate($1_block_reward_RewardQueue_$memory, $GlobalLocationAddress($t44), + $Dereference($t44)); + + // $t129 := [98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 114, 101, 119, 97, 114, 100, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:192:41+46 + assume {:print "$at(60,7449,7495)"} true; + $t129 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(98, 108, 111, 99), MakeVec4(107, 95, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec4(58, 58, 112, 114)), MakeVec4(111, 99, 101, 115)), MakeVec4(115, 95, 98, 108)), MakeVec4(111, 99, 107, 95)), MakeVec4(114, 101, 119, 97)), MakeVec4(114, 100, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec3(116, 101, 100)); + assume $IsValid'vec'u8''($t129); + + // $t130 := string::utf8($t129) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:192:23+65 + call $t130 := $1_string_utf8($t129); + if ($abort_flag) { + assume {:print "$at(60,7431,7496)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // debug::print($t130) on_abort goto L33 with $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:192:9+80 + call $1_debug_print'$1_string_String'($t130); + if ($abort_flag) { + assume {:print "$at(60,7417,7497)"} true; + $t37 := $abort_code; + assume {:print "$track_abort(53,1):", $t37} $t37 == $t37; + goto L33; + } + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:192:89+1 + goto L32; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:185:21+14 + // Loop invariant checking block for the loop started with header: L27 + assume {:print "$at(60,7208,7222)"} true; +L31: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:185:21+14 + assume {:print "$at(60,7208,7222)"} true; + assume false; + return; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:193:5+1 + assume {:print "$at(60,7503,7504)"} true; +L32: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:193:5+1 + assume {:print "$at(60,7503,7504)"} true; + return; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:193:5+1 +L33: + + // abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.move:193:5+1 + assume {:print "$at(60,7503,7504)"} true; + $abort_code := $t37; + $abort_flag := true; + return; + + // label L36 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L36: + + // drop($t58) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L8 at :1:1+10 + goto L8; + + // label L37 at :1:1+10 +L37: + + // drop($t44) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:120:10+89 +function $1_bls12381_spec_aggregate_pubkeys_internal_1(public_keys: Vec ($1_bls12381_PublicKeyWithPoP)): Vec (int); +axiom (forall public_keys: Vec ($1_bls12381_PublicKeyWithPoP) :: +(var $$res := $1_bls12381_spec_aggregate_pubkeys_internal_1(public_keys); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:124:10+83 +function $1_bls12381_spec_aggregate_pubkeys_internal_2(public_keys: Vec ($1_bls12381_PublicKeyWithPoP)): bool; +axiom (forall public_keys: Vec ($1_bls12381_PublicKeyWithPoP) :: +(var $$res := $1_bls12381_spec_aggregate_pubkeys_internal_2(public_keys); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:126:10+84 +function $1_bls12381_spec_aggregate_signatures_internal_1(signatures: Vec ($1_bls12381_Signature)): Vec (int); +axiom (forall signatures: Vec ($1_bls12381_Signature) :: +(var $$res := $1_bls12381_spec_aggregate_signatures_internal_1(signatures); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:128:10+78 +function $1_bls12381_spec_aggregate_signatures_internal_2(signatures: Vec ($1_bls12381_Signature)): bool; +axiom (forall signatures: Vec ($1_bls12381_Signature) :: +(var $$res := $1_bls12381_spec_aggregate_signatures_internal_2(signatures); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:130:10+64 +function $1_bls12381_spec_validate_pubkey_internal(public_key: Vec (int)): bool; +axiom (forall public_key: Vec (int) :: +(var $$res := $1_bls12381_spec_validate_pubkey_internal(public_key); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:132:10+72 +function $1_bls12381_spec_signature_subgroup_check_internal(signature: Vec (int)): bool; +axiom (forall signature: Vec (int) :: +(var $$res := $1_bls12381_spec_signature_subgroup_check_internal(signature); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:134:10+171 +function $1_bls12381_spec_verify_aggregate_signature_internal(aggsig: Vec (int), public_keys: Vec ($1_bls12381_PublicKeyWithPoP), messages: Vec (Vec (int))): bool; +axiom (forall aggsig: Vec (int), public_keys: Vec ($1_bls12381_PublicKeyWithPoP), messages: Vec (Vec (int)) :: +(var $$res := $1_bls12381_spec_verify_aggregate_signature_internal(aggsig, public_keys, messages); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:140:10+153 +function $1_bls12381_spec_verify_multisignature_internal(multisignature: Vec (int), agg_public_key: Vec (int), message: Vec (int)): bool; +axiom (forall multisignature: Vec (int), agg_public_key: Vec (int), message: Vec (int) :: +(var $$res := $1_bls12381_spec_verify_multisignature_internal(multisignature, agg_public_key, message); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:146:10+146 +function $1_bls12381_spec_verify_normal_signature_internal(signature: Vec (int), public_key: Vec (int), message: Vec (int)): bool; +axiom (forall signature: Vec (int), public_key: Vec (int), message: Vec (int) :: +(var $$res := $1_bls12381_spec_verify_normal_signature_internal(signature, public_key, message); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:152:10+129 +function $1_bls12381_spec_verify_proof_of_possession_internal(public_key: Vec (int), proof_of_possesion: Vec (int)): bool; +axiom (forall public_key: Vec (int), proof_of_possesion: Vec (int) :: +(var $$res := $1_bls12381_spec_verify_proof_of_possession_internal(public_key, proof_of_possesion); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:157:10+151 +function $1_bls12381_spec_verify_signature_share_internal(signature_share: Vec (int), public_key: Vec (int), message: Vec (int)): bool; +axiom (forall signature_share: Vec (int), public_key: Vec (int), message: Vec (int) :: +(var $$res := $1_bls12381_spec_verify_signature_share_internal(signature_share, public_key, message); +$IsValid'bool'($$res))); + +// struct bls12381::Signature at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:71:5+72 +datatype $1_bls12381_Signature { + $1_bls12381_Signature($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_Signature'_bytes(s: $1_bls12381_Signature, x: Vec (int)): $1_bls12381_Signature { + $1_bls12381_Signature(x) +} +function $IsValid'$1_bls12381_Signature'(s: $1_bls12381_Signature): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_Signature'(s1: $1_bls12381_Signature, s2: $1_bls12381_Signature): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct bls12381::AggrOrMultiSignature at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:82:5+83 +datatype $1_bls12381_AggrOrMultiSignature { + $1_bls12381_AggrOrMultiSignature($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_AggrOrMultiSignature'_bytes(s: $1_bls12381_AggrOrMultiSignature, x: Vec (int)): $1_bls12381_AggrOrMultiSignature { + $1_bls12381_AggrOrMultiSignature(x) +} +function $IsValid'$1_bls12381_AggrOrMultiSignature'(s: $1_bls12381_AggrOrMultiSignature): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_AggrOrMultiSignature'(s1: $1_bls12381_AggrOrMultiSignature, s2: $1_bls12381_AggrOrMultiSignature): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct bls12381::AggrPublicKeysWithPoP at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:64:5+84 +datatype $1_bls12381_AggrPublicKeysWithPoP { + $1_bls12381_AggrPublicKeysWithPoP($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_AggrPublicKeysWithPoP'_bytes(s: $1_bls12381_AggrPublicKeysWithPoP, x: Vec (int)): $1_bls12381_AggrPublicKeysWithPoP { + $1_bls12381_AggrPublicKeysWithPoP(x) +} +function $IsValid'$1_bls12381_AggrPublicKeysWithPoP'(s: $1_bls12381_AggrPublicKeysWithPoP): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_AggrPublicKeysWithPoP'(s1: $1_bls12381_AggrPublicKeysWithPoP, s2: $1_bls12381_AggrPublicKeysWithPoP): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct bls12381::ProofOfPossession at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:49:5+80 +datatype $1_bls12381_ProofOfPossession { + $1_bls12381_ProofOfPossession($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_ProofOfPossession'_bytes(s: $1_bls12381_ProofOfPossession, x: Vec (int)): $1_bls12381_ProofOfPossession { + $1_bls12381_ProofOfPossession(x) +} +function $IsValid'$1_bls12381_ProofOfPossession'(s: $1_bls12381_ProofOfPossession): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_ProofOfPossession'(s1: $1_bls12381_ProofOfPossession, s2: $1_bls12381_ProofOfPossession): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct bls12381::PublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:43:5+72 +datatype $1_bls12381_PublicKey { + $1_bls12381_PublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_PublicKey'_bytes(s: $1_bls12381_PublicKey, x: Vec (int)): $1_bls12381_PublicKey { + $1_bls12381_PublicKey(x) +} +function $IsValid'$1_bls12381_PublicKey'(s: $1_bls12381_PublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_PublicKey'(s1: $1_bls12381_PublicKey, s2: $1_bls12381_PublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct bls12381::PublicKeyWithPoP at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:59:5+79 +datatype $1_bls12381_PublicKeyWithPoP { + $1_bls12381_PublicKeyWithPoP($bytes: Vec (int)) +} +function {:inline} $Update'$1_bls12381_PublicKeyWithPoP'_bytes(s: $1_bls12381_PublicKeyWithPoP, x: Vec (int)): $1_bls12381_PublicKeyWithPoP { + $1_bls12381_PublicKeyWithPoP(x) +} +function $IsValid'$1_bls12381_PublicKeyWithPoP'(s: $1_bls12381_PublicKeyWithPoP): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_bls12381_PublicKeyWithPoP'(s1: $1_bls12381_PublicKeyWithPoP, s2: $1_bls12381_PublicKeyWithPoP): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun bls12381::signature_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:146:5+84 +procedure {:timeLimit 80} $1_bls12381_signature_to_bytes$verify(_$t0: $1_bls12381_Signature) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_Signature; + var $temp_0'$1_bls12381_Signature': $1_bls12381_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:146:5+1 + assume {:print "$at(124,5705,5706)"} true; + assume $IsValid'$1_bls12381_Signature'($t0); + + // trace_local[sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:146:5+1 + assume {:print "$track_local(54,18,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:147:9+9 + assume {:print "$at(124,5774,5783)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:147:9+9 + assume {:print "$track_return(54,18,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:148:5+1 + assume {:print "$at(124,5788,5789)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:148:5+1 + assume {:print "$at(124,5788,5789)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::aggr_or_multi_signature_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:196:5+261 +procedure {:timeLimit 80} $1_bls12381_aggr_or_multi_signature_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_bls12381_AggrOrMultiSignature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_bls12381_AggrOrMultiSignature; + var $t0: Vec (int); + var $temp_0'$1_bls12381_AggrOrMultiSignature': $1_bls12381_AggrOrMultiSignature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:196:5+1 + assume {:print "$at(124,7979,7980)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:196:5+1 + assume {:print "$track_local(54,0,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:17+27 + assume {:print "$at(124,8084,8111)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(124,8084,8111)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(54,0):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 96 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:48+14 + $t3 := 96; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 + assume {:print "$at(124,8076,8173)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:93+11 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:93+11 + assume {:print "$at(124,8160,8171)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:64+41 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(124,8131,8172)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(54,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 + assume {:print "$at(124,8076,8173)"} true; + assume {:print "$track_abort(54,0):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:197:9+97 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:200:13+5 + assume {:print "$at(124,8219,8224)"} true; +L2: + + // $t7 := pack bls12381::AggrOrMultiSignature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:199:9+50 + assume {:print "$at(124,8184,8234)"} true; + $t7 := $1_bls12381_AggrOrMultiSignature($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:199:9+50 + assume {:print "$track_return(54,0,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:202:5+1 + assume {:print "$at(124,8239,8240)"} true; +L3: + + // assert Not(Neq(Len($t0), 96)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:47:9+39 + assume {:print "$at(125,2078,2117)"} true; + assert {:msg "assert_failed(125,2078,2117): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), 96); + + // assert Eq>(select bls12381::AggrOrMultiSignature.bytes($t7), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:48:9+30 + assume {:print "$at(125,2126,2156)"} true; + assert {:msg "assert_failed(125,2126,2156): post-condition does not hold"} + $IsEqual'vec'u8''($t7->$bytes, $t0); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:48:9+30 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:202:5+1 + assume {:print "$at(124,8239,8240)"} true; +L4: + + // assert Neq(Len($t0), 96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:46:5+134 + assume {:print "$at(125,2028,2162)"} true; + assert {:msg "assert_failed(125,2028,2162): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'(LenVec($t0), 96); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:46:5+134 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun bls12381::aggr_or_multi_signature_subgroup_check [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:206:5+156 +procedure {:timeLimit 80} $1_bls12381_aggr_or_multi_signature_subgroup_check$verify(_$t0: $1_bls12381_AggrOrMultiSignature) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t0: $1_bls12381_AggrOrMultiSignature; + var $temp_0'$1_bls12381_AggrOrMultiSignature': $1_bls12381_AggrOrMultiSignature; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:206:5+1 + assume {:print "$at(124,8362,8363)"} true; + assume $IsValid'$1_bls12381_AggrOrMultiSignature'($t0); + + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:206:5+1 + assume {:print "$track_local(54,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:43+15 + assume {:print "$at(124,8496,8511)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: bls12381::signature_subgroup_check_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:9+50 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:9+50 + assume $IsValid'bool'($t2); + + // assume Eq($t2, bls12381::spec_signature_subgroup_check_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:9+50 + assume $IsEqual'bool'($t2, $1_bls12381_spec_signature_subgroup_check_internal($t1)); + + // $t2 := opaque end: bls12381::signature_subgroup_check_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:9+50 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:207:9+50 + assume {:print "$track_return(54,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:208:5+1 + assume {:print "$at(124,8517,8518)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:58:9+16 + assume {:print "$at(125,2393,2409)"} true; + assert {:msg "assert_failed(125,2393,2409): function does not abort under this condition"} + !false; + + // assert Eq($t2, bls12381::spec_signature_subgroup_check_internal(select bls12381::AggrOrMultiSignature.bytes($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:59:9+74 + assume {:print "$at(125,2418,2492)"} true; + assert {:msg "assert_failed(125,2418,2492): post-condition does not hold"} + $IsEqual'bool'($t2, $1_bls12381_spec_signature_subgroup_check_internal($t0->$bytes)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:59:9+74 + $ret0 := $t2; + return; + +} + +// fun bls12381::aggr_or_multi_signature_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:191:5+109 +procedure {:timeLimit 80} $1_bls12381_aggr_or_multi_signature_to_bytes$verify(_$t0: $1_bls12381_AggrOrMultiSignature) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_AggrOrMultiSignature; + var $temp_0'$1_bls12381_AggrOrMultiSignature': $1_bls12381_AggrOrMultiSignature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:191:5+1 + assume {:print "$at(124,7796,7797)"} true; + assume $IsValid'$1_bls12381_AggrOrMultiSignature'($t0); + + // trace_local[sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:191:5+1 + assume {:print "$track_local(54,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:192:9+9 + assume {:print "$at(124,7890,7899)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:192:9+9 + assume {:print "$track_return(54,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:193:5+1 + assume {:print "$at(124,7904,7905)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:193:5+1 + assume {:print "$at(124,7904,7905)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::aggregate_pubkey_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:170:5+103 +procedure {:timeLimit 80} $1_bls12381_aggregate_pubkey_to_bytes$verify(_$t0: $1_bls12381_AggrPublicKeysWithPoP) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_AggrPublicKeysWithPoP; + var $temp_0'$1_bls12381_AggrPublicKeysWithPoP': $1_bls12381_AggrPublicKeysWithPoP; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:170:5+1 + assume {:print "$at(124,6914,6915)"} true; + assume $IsValid'$1_bls12381_AggrPublicKeysWithPoP'($t0); + + // trace_local[apk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:170:5+1 + assume {:print "$track_local(54,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:171:9+9 + assume {:print "$at(124,7002,7011)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:171:9+9 + assume {:print "$track_return(54,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:172:5+1 + assume {:print "$at(124,7016,7017)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:172:5+1 + assume {:print "$at(124,7016,7017)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::aggregate_pubkeys [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:160:5+302 +procedure {:timeLimit 80} $1_bls12381_aggregate_pubkeys$verify(_$t0: Vec ($1_bls12381_PublicKeyWithPoP)) returns ($ret0: $1_bls12381_AggrPublicKeysWithPoP) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: Vec (int); + var $t4: bool; + var $t5: Vec (int); + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_bls12381_AggrPublicKeysWithPoP; + var $t0: Vec ($1_bls12381_PublicKeyWithPoP); + var $temp_0'$1_bls12381_AggrPublicKeysWithPoP': $1_bls12381_AggrPublicKeysWithPoP; + var $temp_0'bool': bool; + var $temp_0'vec'$1_bls12381_PublicKeyWithPoP'': Vec ($1_bls12381_PublicKeyWithPoP); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:160:5+1 + assume {:print "$at(124,6548,6549)"} true; + assume $IsValid'vec'$1_bls12381_PublicKeyWithPoP''($t0); + + // assume Identical($t3, bls12381::spec_aggregate_pubkeys_internal_1($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:18:9+59 + assume {:print "$at(125,848,907)"} true; + assume ($t3 == $1_bls12381_spec_aggregate_pubkeys_internal_1($t0)); + + // assume Identical($t4, bls12381::spec_aggregate_pubkeys_internal_2($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:19:9+61 + assume {:print "$at(125,916,977)"} true; + assume ($t4 == $1_bls12381_spec_aggregate_pubkeys_internal_2($t0)); + + // trace_local[public_keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:160:5+1 + assume {:print "$at(124,6548,6549)"} true; + assume {:print "$track_local(54,4,0):", $t0} $t0 == $t0; + + // ($t5, $t6) := opaque begin: bls12381::aggregate_pubkeys_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + assume {:print "$at(124,6672,6711)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + assume $IsValid'vec'u8''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + assume $IsValid'bool'($t6); + + // assume Eq>($t5, bls12381::spec_aggregate_pubkeys_internal_1($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + assume $IsEqual'vec'u8''($t5, $1_bls12381_spec_aggregate_pubkeys_internal_1($t0)); + + // assume Eq($t6, bls12381::spec_aggregate_pubkeys_internal_2($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + assume $IsEqual'bool'($t6, $1_bls12381_spec_aggregate_pubkeys_internal_2($t0)); + + // ($t5, $t6) := opaque end: bls12381::aggregate_pubkeys_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:32+39 + + // trace_local[success]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:21+7 + assume {:print "$track_local(54,4,2):", $t6} $t6 == $t6; + + // trace_local[bytes]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:161:14+5 + assume {:print "$track_local(54,4,1):", $t5} $t5 == $t5; + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 + assume {:print "$at(124,6721,6782)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 + assume {:print "$at(124,6721,6782)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:55+13 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:55+13 + assume {:print "$at(124,6767,6780)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:26+43 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(124,6738,6781)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(54,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 + assume {:print "$at(124,6721,6782)"} true; + assume {:print "$track_abort(54,4):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 + $t9 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:162:9+61 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:165:13+5 + assume {:print "$at(124,6829,6834)"} true; +L2: + + // $t10 := pack bls12381::AggrPublicKeysWithPoP($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:164:9+51 + assume {:print "$at(124,6793,6844)"} true; + $t10 := $1_bls12381_AggrPublicKeysWithPoP($t5); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:164:9+51 + assume {:print "$track_return(54,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:167:5+1 + assume {:print "$at(124,6849,6850)"} true; +L3: + + // assert Not(Not($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:20:9+19 + assume {:print "$at(125,986,1005)"} true; + assert {:msg "assert_failed(125,986,1005): function does not abort under this condition"} + !!$t4; + + // assert Eq>(select bls12381::AggrPublicKeysWithPoP.bytes($t10), $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:21:9+30 + assume {:print "$at(125,1014,1044)"} true; + assert {:msg "assert_failed(125,1014,1044): post-condition does not hold"} + $IsEqual'vec'u8''($t10->$bytes, $t3); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:21:9+30 + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:167:5+1 + assume {:print "$at(124,6849,6850)"} true; +L4: + + // assert Not($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:17:5+235 + assume {:print "$at(125,815,1050)"} true; + assert {:msg "assert_failed(125,815,1050): abort not covered by any of the `aborts_if` clauses"} + !$t4; + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:17:5+235 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun bls12381::aggregate_signatures [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:177:5+396 +procedure {:timeLimit 80} $1_bls12381_aggregate_signatures$verify(_$t0: Vec ($1_bls12381_Signature)) returns ($ret0: $1_option_Option'$1_bls12381_AggrOrMultiSignature') +{ + // declare local variables + var $t1: $1_option_Option'$1_bls12381_AggrOrMultiSignature'; + var $t2: Vec (int); + var $t3: bool; + var $t4: Vec (int); + var $t5: bool; + var $t6: Vec (int); + var $t7: bool; + var $t8: $1_bls12381_AggrOrMultiSignature; + var $t0: Vec ($1_bls12381_Signature); + var $temp_0'$1_option_Option'$1_bls12381_AggrOrMultiSignature'': $1_option_Option'$1_bls12381_AggrOrMultiSignature'; + var $temp_0'bool': bool; + var $temp_0'vec'$1_bls12381_Signature'': Vec ($1_bls12381_Signature); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:177:5+1 + assume {:print "$at(124,7328,7329)"} true; + assume $IsValid'vec'$1_bls12381_Signature''($t0); + + // assume Identical($t4, bls12381::spec_aggregate_signatures_internal_1($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:33:9+61 + assume {:print "$at(125,1440,1501)"} true; + assume ($t4 == $1_bls12381_spec_aggregate_signatures_internal_1($t0)); + + // assume Identical($t5, bls12381::spec_aggregate_signatures_internal_2($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:34:9+63 + assume {:print "$at(125,1510,1573)"} true; + assume ($t5 == $1_bls12381_spec_aggregate_signatures_internal_2($t0)); + + // trace_local[signatures]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:177:5+1 + assume {:print "$at(124,7328,7329)"} true; + assume {:print "$track_local(54,6,0):", $t0} $t0 == $t0; + + // ($t6, $t7) := opaque begin: bls12381::aggregate_signatures_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + assume {:print "$at(124,7454,7495)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + assume $IsValid'vec'u8''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + assume $IsValid'bool'($t7); + + // assume Eq>($t6, bls12381::spec_aggregate_signatures_internal_1($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + assume $IsEqual'vec'u8''($t6, $1_bls12381_spec_aggregate_signatures_internal_1($t0)); + + // assume Eq($t7, bls12381::spec_aggregate_signatures_internal_2($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + assume $IsEqual'bool'($t7, $1_bls12381_spec_aggregate_signatures_internal_2($t0)); + + // ($t6, $t7) := opaque end: bls12381::aggregate_signatures_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:32+41 + + // trace_local[success]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:21+7 + assume {:print "$track_local(54,6,3):", $t7} $t7 == $t7; + + // trace_local[bytes]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:178:14+5 + assume {:print "$track_local(54,6,2):", $t6} $t6 == $t6; + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:179:9+213 + assume {:print "$at(124,7505,7718)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:182:21+5 + assume {:print "$at(124,7605,7610)"} true; +L1: + + // $t8 := pack bls12381::AggrOrMultiSignature($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:181:17+66 + assume {:print "$at(124,7562,7628)"} true; + $t8 := $1_bls12381_AggrOrMultiSignature($t6); + + // $t1 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:180:13+110 + assume {:print "$at(124,7532,7642)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:180:13+110 + assume ($IsValid'$1_option_Option'$1_bls12381_AggrOrMultiSignature''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:180:13+110 + assume $IsEqual'$1_option_Option'$1_bls12381_AggrOrMultiSignature''($t1, $1_option_spec_some'$1_bls12381_AggrOrMultiSignature'($t8)); + + // $t1 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:180:13+110 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:179:9+213 + assume {:print "$at(124,7505,7718)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:186:13+36 + assume {:print "$at(124,7672,7708)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:186:13+36 + assume {:print "$at(124,7672,7708)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:186:13+36 + assume ($IsValid'$1_option_Option'$1_bls12381_AggrOrMultiSignature''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:186:13+36 + assume $IsEqual'$1_option_Option'$1_bls12381_AggrOrMultiSignature''($t1, $1_option_spec_none'$1_bls12381_AggrOrMultiSignature'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:186:13+36 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:179:9+213 + assume {:print "$at(124,7505,7718)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:179:9+213 + assume {:print "$at(124,7505,7718)"} true; + assume {:print "$track_return(54,6,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:188:5+1 + assume {:print "$at(124,7723,7724)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:32:9+16 + assume {:print "$at(125,1415,1431)"} true; + assert {:msg "assert_failed(125,1415,1431): function does not abort under this condition"} + !false; + + // assert Implies($t5, And(option::spec_is_some($t1), Eq>(select bls12381::AggrOrMultiSignature.bytes(option::spec_borrow($t1)), $t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:35:9+107 + assume {:print "$at(125,1582,1689)"} true; + assert {:msg "assert_failed(125,1582,1689): post-condition does not hold"} + ($t5 ==> ($1_option_spec_is_some'$1_bls12381_AggrOrMultiSignature'($t1) && $IsEqual'vec'u8''($1_option_spec_borrow'$1_bls12381_AggrOrMultiSignature'($t1)->$bytes, $t4))); + + // assert Implies(Not($t5), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:36:9+55 + assume {:print "$at(125,1698,1753)"} true; + assert {:msg "assert_failed(125,1698,1753): post-condition does not hold"} + (!$t5 ==> $1_option_spec_is_none'$1_bls12381_AggrOrMultiSignature'($t1)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:36:9+55 + $ret0 := $t1; + return; + +} + +// fun bls12381::proof_of_possession_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:103:5+143 +procedure {:timeLimit 80} $1_bls12381_proof_of_possession_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_bls12381_ProofOfPossession) +{ + // declare local variables + var $t1: $1_bls12381_ProofOfPossession; + var $t0: Vec (int); + var $temp_0'$1_bls12381_ProofOfPossession': $1_bls12381_ProofOfPossession; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:103:5+1 + assume {:print "$at(124,4212,4213)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:103:5+1 + assume {:print "$track_local(54,8,0):", $t0} $t0 == $t0; + + // $t1 := pack bls12381::ProofOfPossession($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:104:9+47 + assume {:print "$at(124,4302,4349)"} true; + $t1 := $1_bls12381_ProofOfPossession($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:104:9+47 + assume {:print "$track_return(54,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:107:5+1 + assume {:print "$at(124,4354,4355)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:107:5+1 + assume {:print "$at(124,4354,4355)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::proof_of_possession_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:110:5+102 +procedure {:timeLimit 80} $1_bls12381_proof_of_possession_to_bytes$verify(_$t0: $1_bls12381_ProofOfPossession) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_ProofOfPossession; + var $temp_0'$1_bls12381_ProofOfPossession': $1_bls12381_ProofOfPossession; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:110:5+1 + assume {:print "$at(124,4409,4410)"} true; + assume $IsValid'$1_bls12381_ProofOfPossession'($t0); + + // trace_local[pop]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:110:5+1 + assume {:print "$track_local(54,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:111:9+9 + assume {:print "$at(124,4496,4505)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:111:9+9 + assume {:print "$track_return(54,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:112:5+1 + assume {:print "$at(124,4510,4511)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:112:5+1 + assume {:print "$at(124,4510,4511)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::public_key_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:87:5+264 +procedure {:timeLimit 80} $1_bls12381_public_key_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_bls12381_PublicKey') +{ + // declare local variables + var $t1: $1_option_Option'$1_bls12381_PublicKey'; + var $t2: bool; + var $t3: $1_bls12381_PublicKey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_bls12381_PublicKey'': $1_option_Option'$1_bls12381_PublicKey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:87:5+1 + assume {:print "$at(124,3697,3698)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:87:5+1 + assume {:print "$track_local(54,10,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: bls12381::validate_pubkey_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:13+31 + assume {:print "$at(124,3782,3813)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:13+31 + assume $IsValid'bool'($t2); + + // assume Eq($t2, bls12381::spec_validate_pubkey_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:13+31 + assume $IsEqual'bool'($t2, $1_bls12381_spec_validate_pubkey_internal($t0)); + + // $t2 := opaque end: bls12381::validate_pubkey_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:13+31 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:9+177 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:90:17+5 + assume {:print "$at(124,3870,3875)"} true; +L1: + + // $t3 := pack bls12381::PublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:89:26+47 + assume {:print "$at(124,3842,3889)"} true; + $t3 := $1_bls12381_PublicKey($t0); + + // $t1 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:89:13+61 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:89:13+61 + assume ($IsValid'$1_option_Option'$1_bls12381_PublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:89:13+61 + assume $IsEqual'$1_option_Option'$1_bls12381_PublicKey''($t1, $1_option_spec_some'$1_bls12381_PublicKey'($t3)); + + // $t1 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:89:13+61 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:9+177 + assume {:print "$at(124,3778,3955)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:93:13+25 + assume {:print "$at(124,3920,3945)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:93:13+25 + assume {:print "$at(124,3920,3945)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:93:13+25 + assume ($IsValid'$1_option_Option'$1_bls12381_PublicKey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:93:13+25 + assume $IsEqual'$1_option_Option'$1_bls12381_PublicKey''($t1, $1_option_spec_none'$1_bls12381_PublicKey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:93:13+25 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:9+177 + assume {:print "$at(124,3778,3955)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:88:9+177 + assume {:print "$at(124,3778,3955)"} true; + assume {:print "$track_return(54,10,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:95:5+1 + assume {:print "$at(124,3960,3961)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:4:9+16 + assume {:print "$at(125,72,88)"} true; + assert {:msg "assert_failed(125,72,88): function does not abort under this condition"} + !false; + + // assert Implies(bls12381::spec_validate_pubkey_internal($t0), And(option::spec_is_some($t1), Eq>(select bls12381::PublicKey.bytes(option::spec_borrow($t1)), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:5:9+136 + assume {:print "$at(125,97,233)"} true; + assert {:msg "assert_failed(125,97,233): post-condition does not hold"} + ($1_bls12381_spec_validate_pubkey_internal($t0) ==> ($1_option_spec_is_some'$1_bls12381_PublicKey'($t1) && $IsEqual'vec'u8''($1_option_spec_borrow'$1_bls12381_PublicKey'($t1)->$bytes, $t0))); + + // assert Implies(Not(bls12381::spec_validate_pubkey_internal($t0)), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:6:9+84 + assume {:print "$at(125,242,326)"} true; + assert {:msg "assert_failed(125,242,326): post-condition does not hold"} + (!$1_bls12381_spec_validate_pubkey_internal($t0) ==> $1_option_spec_is_none'$1_bls12381_PublicKey'($t1)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:6:9+84 + $ret0 := $t1; + return; + +} + +// fun bls12381::public_key_from_bytes_with_pop [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:115:5+357 +procedure {:timeLimit 80} $1_bls12381_public_key_from_bytes_with_pop$verify(_$t0: Vec (int), _$t1: $1_bls12381_ProofOfPossession) returns ($ret0: $1_option_Option'$1_bls12381_PublicKeyWithPoP') +{ + // declare local variables + var $t2: $1_option_Option'$1_bls12381_PublicKeyWithPoP'; + var $t3: Vec (int); + var $t4: bool; + var $t5: $1_bls12381_PublicKeyWithPoP; + var $t0: Vec (int); + var $t1: $1_bls12381_ProofOfPossession; + var $temp_0'$1_bls12381_ProofOfPossession': $1_bls12381_ProofOfPossession; + var $temp_0'$1_option_Option'$1_bls12381_PublicKeyWithPoP'': $1_option_Option'$1_bls12381_PublicKeyWithPoP'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:115:5+1 + assume {:print "$at(124,4618,4619)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:115:5+1 + assume $IsValid'$1_bls12381_ProofOfPossession'($t1); + + // trace_local[pk_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:115:5+1 + assume {:print "$track_local(54,11,0):", $t0} $t0 == $t0; + + // trace_local[pop]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:115:5+1 + assume {:print "$track_local(54,11,1):", $t1} $t1 == $t1; + + // $t3 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:59+9 + assume {:print "$at(124,4793,4802)"} true; + $t3 := $t1->$bytes; + + // $t4 := opaque begin: bls12381::verify_proof_of_possession_internal($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:13+56 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:13+56 + assume $IsValid'bool'($t4); + + // assume Eq($t4, bls12381::spec_verify_proof_of_possession_internal($t0, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:13+56 + assume $IsEqual'bool'($t4, $1_bls12381_spec_verify_proof_of_possession_internal($t0, $t3)); + + // $t4 := opaque end: bls12381::verify_proof_of_possession_internal($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:13+56 + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:9+226 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:118:24+8 + assume {:print "$at(124,4874,4882)"} true; +L1: + + // $t5 := pack bls12381::PublicKeyWithPoP($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:117:26+64 + assume {:print "$at(124,4832,4896)"} true; + $t5 := $1_bls12381_PublicKeyWithPoP($t0); + + // $t2 := opaque begin: option::some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:117:13+78 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:117:13+78 + assume ($IsValid'$1_option_Option'$1_bls12381_PublicKeyWithPoP''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:117:13+78 + assume $IsEqual'$1_option_Option'$1_bls12381_PublicKeyWithPoP''($t2, $1_option_spec_some'$1_bls12381_PublicKeyWithPoP'($t5)); + + // $t2 := opaque end: option::some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:117:13+78 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:9+226 + assume {:print "$at(124,4743,4969)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:121:13+32 + assume {:print "$at(124,4927,4959)"} true; +L0: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:121:13+32 + assume {:print "$at(124,4927,4959)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:121:13+32 + assume ($IsValid'$1_option_Option'$1_bls12381_PublicKeyWithPoP''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:121:13+32 + assume $IsEqual'$1_option_Option'$1_bls12381_PublicKeyWithPoP''($t2, $1_option_spec_none'$1_bls12381_PublicKeyWithPoP'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:121:13+32 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:9+226 + assume {:print "$at(124,4743,4969)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:116:9+226 + assume {:print "$at(124,4743,4969)"} true; + assume {:print "$track_return(54,11,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:123:5+1 + assume {:print "$at(124,4974,4975)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:11:9+16 + assume {:print "$at(125,407,423)"} true; + assert {:msg "assert_failed(125,407,423): function does not abort under this condition"} + !false; + + // assert Implies(bls12381::spec_verify_proof_of_possession_internal($t0, select bls12381::ProofOfPossession.bytes($t1)), And(option::spec_is_some($t2), Eq>(select bls12381::PublicKeyWithPoP.bytes(option::spec_borrow($t2)), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:12:9+164 + assume {:print "$at(125,432,596)"} true; + assert {:msg "assert_failed(125,432,596): post-condition does not hold"} + ($1_bls12381_spec_verify_proof_of_possession_internal($t0, $t1->$bytes) ==> ($1_option_spec_is_some'$1_bls12381_PublicKeyWithPoP'($t2) && $IsEqual'vec'u8''($1_option_spec_borrow'$1_bls12381_PublicKeyWithPoP'($t2)->$bytes, $t0))); + + // assert Implies(Not(bls12381::spec_verify_proof_of_possession_internal($t0, select bls12381::ProofOfPossession.bytes($t1))), option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:13:9+109 + assume {:print "$at(125,605,714)"} true; + assert {:msg "assert_failed(125,605,714): post-condition does not hold"} + (!$1_bls12381_spec_verify_proof_of_possession_internal($t0, $t1->$bytes) ==> $1_option_spec_is_none'$1_bls12381_PublicKeyWithPoP'($t2)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:13:9+109 + $ret0 := $t2; + return; + +} + +// fun bls12381::public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:98:5+83 +procedure {:timeLimit 80} $1_bls12381_public_key_to_bytes$verify(_$t0: $1_bls12381_PublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_PublicKey; + var $temp_0'$1_bls12381_PublicKey': $1_bls12381_PublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:98:5+1 + assume {:print "$at(124,4014,4015)"} true; + assume $IsValid'$1_bls12381_PublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:98:5+1 + assume {:print "$track_local(54,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:99:9+8 + assume {:print "$at(124,4083,4091)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:99:9+8 + assume {:print "$track_return(54,12,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:100:5+1 + assume {:print "$at(124,4096,4097)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:100:5+1 + assume {:print "$at(124,4096,4097)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::public_key_with_pop_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:133:5+99 +procedure {:timeLimit 80} $1_bls12381_public_key_with_pop_to_bytes$verify(_$t0: $1_bls12381_PublicKeyWithPoP) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_bls12381_PublicKeyWithPoP; + var $temp_0'$1_bls12381_PublicKeyWithPoP': $1_bls12381_PublicKeyWithPoP; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:133:5+1 + assume {:print "$at(124,5247,5248)"} true; + assume $IsValid'$1_bls12381_PublicKeyWithPoP'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:133:5+1 + assume {:print "$track_local(54,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:134:9+8 + assume {:print "$at(124,5332,5340)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:134:9+8 + assume {:print "$track_return(54,13,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:135:5+1 + assume {:print "$at(124,5345,5346)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:135:5+1 + assume {:print "$at(124,5345,5346)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::public_key_with_pop_to_normal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:126:5+146 +procedure {:timeLimit 80} $1_bls12381_public_key_with_pop_to_normal$verify(_$t0: $1_bls12381_PublicKeyWithPoP) returns ($ret0: $1_bls12381_PublicKey) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_bls12381_PublicKey; + var $t0: $1_bls12381_PublicKeyWithPoP; + var $temp_0'$1_bls12381_PublicKey': $1_bls12381_PublicKey; + var $temp_0'$1_bls12381_PublicKeyWithPoP': $1_bls12381_PublicKeyWithPoP; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:126:5+1 + assume {:print "$at(124,5042,5043)"} true; + assume $IsValid'$1_bls12381_PublicKeyWithPoP'($t0); + + // trace_local[pkpop]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:126:5+1 + assume {:print "$track_local(54,14,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:128:20+11 + assume {:print "$at(124,5161,5172)"} true; + $t1 := $t0->$bytes; + + // $t2 := pack bls12381::PublicKey($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:127:9+52 + assume {:print "$at(124,5130,5182)"} true; + $t2 := $1_bls12381_PublicKey($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:127:9+52 + assume {:print "$track_return(54,14,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:130:5+1 + assume {:print "$at(124,5187,5188)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:130:5+1 + assume {:print "$at(124,5187,5188)"} true; + $ret0 := $t2; + return; + +} + +// fun bls12381::signature_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:139:5+117 +procedure {:timeLimit 80} $1_bls12381_signature_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_bls12381_Signature) +{ + // declare local variables + var $t1: $1_bls12381_Signature; + var $t0: Vec (int); + var $temp_0'$1_bls12381_Signature': $1_bls12381_Signature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:139:5+1 + assume {:print "$at(124,5534,5535)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:139:5+1 + assume {:print "$track_local(54,15,0):", $t0} $t0 == $t0; + + // $t1 := pack bls12381::Signature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:140:9+39 + assume {:print "$at(124,5606,5645)"} true; + $t1 := $1_bls12381_Signature($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:140:9+39 + assume {:print "$track_return(54,15,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:143:5+1 + assume {:print "$at(124,5650,5651)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:143:5+1 + assume {:print "$at(124,5650,5651)"} true; + $ret0 := $t1; + return; + +} + +// fun bls12381::signature_subgroup_check [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:153:5+131 +procedure {:timeLimit 80} $1_bls12381_signature_subgroup_check$verify(_$t0: $1_bls12381_Signature) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t0: $1_bls12381_Signature; + var $temp_0'$1_bls12381_Signature': $1_bls12381_Signature; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:153:5+1 + assume {:print "$at(124,6111,6112)"} true; + assume $IsValid'$1_bls12381_Signature'($t0); + + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:153:5+1 + assume {:print "$track_local(54,16,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:43+15 + assume {:print "$at(124,6220,6235)"} true; + $t1 := $t0->$bytes; + + // $t2 := opaque begin: bls12381::signature_subgroup_check_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:9+50 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:9+50 + assume $IsValid'bool'($t2); + + // assume Eq($t2, bls12381::spec_signature_subgroup_check_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:9+50 + assume $IsEqual'bool'($t2, $1_bls12381_spec_signature_subgroup_check_internal($t1)); + + // $t2 := opaque end: bls12381::signature_subgroup_check_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:9+50 + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:154:9+50 + assume {:print "$track_return(54,16,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:155:5+1 + assume {:print "$at(124,6241,6242)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:155:5+1 + assume {:print "$at(124,6241,6242)"} true; + $ret0 := $t2; + return; + +} + +// fun bls12381::verify_aggregate_signature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+267 +procedure {:timeLimit 80} $1_bls12381_verify_aggregate_signature$verify(_$t0: $1_bls12381_AggrOrMultiSignature, _$t1: Vec ($1_bls12381_PublicKeyWithPoP), _$t2: Vec (Vec (int))) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: bool; + var $t0: $1_bls12381_AggrOrMultiSignature; + var $t1: Vec ($1_bls12381_PublicKeyWithPoP); + var $t2: Vec (Vec (int)); + var $temp_0'$1_bls12381_AggrOrMultiSignature': $1_bls12381_AggrOrMultiSignature; + var $temp_0'bool': bool; + var $temp_0'vec'$1_bls12381_PublicKeyWithPoP'': Vec ($1_bls12381_PublicKeyWithPoP); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume {:print "$at(124,8641,8642)"} true; + assume $IsValid'$1_bls12381_AggrOrMultiSignature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume $IsValid'vec'$1_bls12381_PublicKeyWithPoP''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume $IsValid'vec'vec'u8'''($t2); + + // trace_local[aggr_sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume {:print "$track_local(54,20,0):", $t0} $t0 == $t0; + + // trace_local[public_keys]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume {:print "$track_local(54,20,1):", $t1} $t1 == $t1; + + // trace_local[messages]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:211:5+1 + assume {:print "$track_local(54,20,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:45+14 + assume {:print "$at(124,8864,8878)"} true; + $t3 := $t0->$bytes; + + // $t4 := opaque begin: bls12381::verify_aggregate_signature_internal($t3, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:9+74 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:9+74 + assume $IsValid'bool'($t4); + + // assume Eq($t4, bls12381::spec_verify_aggregate_signature_internal($t3, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:9+74 + assume $IsEqual'bool'($t4, $1_bls12381_spec_verify_aggregate_signature_internal($t3, $t1, $t2)); + + // $t4 := opaque end: bls12381::verify_aggregate_signature_internal($t3, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:9+74 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:216:9+74 + assume {:print "$track_return(54,20,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:217:5+1 + assume {:print "$at(124,8907,8908)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:69:9+16 + assume {:print "$at(125,2734,2750)"} true; + assert {:msg "assert_failed(125,2734,2750): function does not abort under this condition"} + !false; + + // assert Eq($t4, bls12381::spec_verify_aggregate_signature_internal(select bls12381::AggrOrMultiSignature.bytes($t0), $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:70:9+98 + assume {:print "$at(125,2759,2857)"} true; + assert {:msg "assert_failed(125,2759,2857): post-condition does not hold"} + $IsEqual'bool'($t4, $1_bls12381_spec_verify_aggregate_signature_internal($t0->$bytes, $t1, $t2)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:70:9+98 + $ret0 := $t4; + return; + +} + +// fun bls12381::verify_multisignature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+258 +procedure {:timeLimit 80} $1_bls12381_verify_multisignature$verify(_$t0: $1_bls12381_AggrOrMultiSignature, _$t1: $1_bls12381_AggrPublicKeysWithPoP, _$t2: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: $1_bls12381_AggrOrMultiSignature; + var $t1: $1_bls12381_AggrPublicKeysWithPoP; + var $t2: Vec (int); + var $temp_0'$1_bls12381_AggrOrMultiSignature': $1_bls12381_AggrOrMultiSignature; + var $temp_0'$1_bls12381_AggrPublicKeysWithPoP': $1_bls12381_AggrPublicKeysWithPoP; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume {:print "$at(124,9014,9015)"} true; + assume $IsValid'$1_bls12381_AggrOrMultiSignature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume $IsValid'$1_bls12381_AggrPublicKeysWithPoP'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume $IsValid'vec'u8''($t2); + + // trace_local[multisig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume {:print "$track_local(54,22,0):", $t0} $t0 == $t0; + + // trace_local[aggr_public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume {:print "$track_local(54,22,1):", $t1} $t1 == $t1; + + // trace_local[message]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:220:5+1 + assume {:print "$track_local(54,22,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:40+14 + assume {:print "$at(124,9219,9233)"} true; + $t3 := $t0->$bytes; + + // $t4 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:56+21 + $t4 := $t1->$bytes; + + // $t5 := opaque begin: bls12381::verify_multisignature_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:9+78 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:9+78 + assume $IsValid'bool'($t5); + + // assume Eq($t5, bls12381::spec_verify_multisignature_internal($t3, $t4, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:9+78 + assume $IsEqual'bool'($t5, $1_bls12381_spec_verify_multisignature_internal($t3, $t4, $t2)); + + // $t5 := opaque end: bls12381::verify_multisignature_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:9+78 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:225:9+78 + assume {:print "$track_return(54,22,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:226:5+1 + assume {:print "$at(124,9271,9272)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:80:9+16 + assume {:print "$at(125,3118,3134)"} true; + assert {:msg "assert_failed(125,3118,3134): function does not abort under this condition"} + !false; + + // assert Eq($t5, bls12381::spec_verify_multisignature_internal(select bls12381::AggrOrMultiSignature.bytes($t0), select bls12381::AggrPublicKeysWithPoP.bytes($t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:81:9+102 + assume {:print "$at(125,3143,3245)"} true; + assert {:msg "assert_failed(125,3143,3245): post-condition does not hold"} + $IsEqual'bool'($t5, $1_bls12381_spec_verify_multisignature_internal($t0->$bytes, $t1->$bytes, $t2)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:81:9+102 + $ret0 := $t5; + return; + +} + +// fun bls12381::verify_normal_signature [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+231 +procedure {:timeLimit 80} $1_bls12381_verify_normal_signature$verify(_$t0: $1_bls12381_Signature, _$t1: $1_bls12381_PublicKey, _$t2: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: $1_bls12381_Signature; + var $t1: $1_bls12381_PublicKey; + var $t2: Vec (int); + var $temp_0'$1_bls12381_PublicKey': $1_bls12381_PublicKey; + var $temp_0'$1_bls12381_Signature': $1_bls12381_Signature; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume {:print "$at(124,9331,9332)"} true; + assume $IsValid'$1_bls12381_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume $IsValid'$1_bls12381_PublicKey'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume $IsValid'vec'u8''($t2); + + // trace_local[signature]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume {:print "$track_local(54,24,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume {:print "$track_local(54,24,1):", $t1} $t1 == $t1; + + // trace_local[message]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:229:5+1 + assume {:print "$track_local(54,24,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:42+15 + assume {:print "$at(124,9513,9528)"} true; + $t3 := $t0->$bytes; + + // $t4 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:59+16 + $t4 := $t1->$bytes; + + // $t5 := opaque begin: bls12381::verify_normal_signature_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:9+76 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:9+76 + assume $IsValid'bool'($t5); + + // assume Eq($t5, bls12381::spec_verify_normal_signature_internal($t3, $t4, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:9+76 + assume $IsEqual'bool'($t5, $1_bls12381_spec_verify_normal_signature_internal($t3, $t4, $t2)); + + // $t5 := opaque end: bls12381::verify_normal_signature_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:9+76 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:234:9+76 + assume {:print "$track_return(54,24,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:235:5+1 + assume {:print "$at(124,9561,9562)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:91:9+16 + assume {:print "$at(125,3508,3524)"} true; + assert {:msg "assert_failed(125,3508,3524): function does not abort under this condition"} + !false; + + // assert Eq($t5, bls12381::spec_verify_normal_signature_internal(select bls12381::Signature.bytes($t0), select bls12381::PublicKey.bytes($t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:92:9+100 + assume {:print "$at(125,3533,3633)"} true; + assert {:msg "assert_failed(125,3533,3633): post-condition does not hold"} + $IsEqual'bool'($t5, $1_bls12381_spec_verify_normal_signature_internal($t0->$bytes, $t1->$bytes, $t2)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:92:9+100 + $ret0 := $t5; + return; + +} + +// fun bls12381::verify_signature_share [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+248 +procedure {:timeLimit 80} $1_bls12381_verify_signature_share$verify(_$t0: $1_bls12381_Signature, _$t1: $1_bls12381_PublicKeyWithPoP, _$t2: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: bool; + var $t0: $1_bls12381_Signature; + var $t1: $1_bls12381_PublicKeyWithPoP; + var $t2: Vec (int); + var $temp_0'$1_bls12381_PublicKeyWithPoP': $1_bls12381_PublicKeyWithPoP; + var $temp_0'$1_bls12381_Signature': $1_bls12381_Signature; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume {:print "$at(124,9664,9665)"} true; + assume $IsValid'$1_bls12381_Signature'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume $IsValid'$1_bls12381_PublicKeyWithPoP'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume $IsValid'vec'u8''($t2); + + // trace_local[signature_share]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume {:print "$track_local(54,27,0):", $t0} $t0 == $t0; + + // trace_local[public_key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume {:print "$track_local(54,27,1):", $t1} $t1 == $t1; + + // trace_local[message]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:238:5+1 + assume {:print "$track_local(54,27,2):", $t2} $t2 == $t2; + + // $t3 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:41+21 + assume {:print "$at(124,9857,9878)"} true; + $t3 := $t0->$bytes; + + // $t4 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:64+16 + $t4 := $t1->$bytes; + + // $t5 := opaque begin: bls12381::verify_signature_share_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:9+81 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:9+81 + assume $IsValid'bool'($t5); + + // assume Eq($t5, bls12381::spec_verify_signature_share_internal($t3, $t4, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:9+81 + assume $IsEqual'bool'($t5, $1_bls12381_spec_verify_signature_share_internal($t3, $t4, $t2)); + + // $t5 := opaque end: bls12381::verify_signature_share_internal($t3, $t4, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:9+81 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:243:9+81 + assume {:print "$track_return(54,27,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.move:244:5+1 + assume {:print "$at(124,9911,9912)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:108:9+16 + assume {:print "$at(125,4103,4119)"} true; + assert {:msg "assert_failed(125,4103,4119): function does not abort under this condition"} + !false; + + // assert Eq($t5, bls12381::spec_verify_signature_share_internal(select bls12381::Signature.bytes($t0), select bls12381::PublicKeyWithPoP.bytes($t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:109:9+105 + assume {:print "$at(125,4128,4233)"} true; + assert {:msg "assert_failed(125,4128,4233): post-condition does not hold"} + $IsEqual'bool'($t5, $1_bls12381_spec_verify_signature_share_internal($t0->$bytes, $t1->$bytes, $t2)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/bls12381.spec.move:109:9+105 + $ret0 := $t5; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:3:10+94 +function {:inline} $1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory: $Memory $1_capability_CapState'#0', addr: int): bool { + $ResourceExists($1_capability_CapState'#0'_$memory, addr) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:8:10+117 +function {:inline} $1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory: $Memory $1_capability_CapState'#0', addr: int): Vec (int) { + $ResourceValue($1_capability_CapState'#0'_$memory, addr)->$delegates +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:13:10+111 +function {:inline} $1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory: $Memory $1_capability_CapDelegateState'#0', addr: int): bool { + $ResourceExists($1_capability_CapDelegateState'#0'_$memory, addr) +} + +// struct capability::Cap<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:87:5+72 +datatype $1_capability_Cap'#0' { + $1_capability_Cap'#0'($root: int) +} +function {:inline} $Update'$1_capability_Cap'#0''_root(s: $1_capability_Cap'#0', x: int): $1_capability_Cap'#0' { + $1_capability_Cap'#0'(x) +} +function $IsValid'$1_capability_Cap'#0''(s: $1_capability_Cap'#0'): bool { + $IsValid'address'(s->$root) +} +function {:inline} $IsEqual'$1_capability_Cap'#0''(s1: $1_capability_Cap'#0', s2: $1_capability_Cap'#0'): bool { + s1 == s2 +} + +// struct capability::CapDelegateState<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:103:5+78 +datatype $1_capability_CapDelegateState'#0' { + $1_capability_CapDelegateState'#0'($root: int) +} +function {:inline} $Update'$1_capability_CapDelegateState'#0''_root(s: $1_capability_CapDelegateState'#0', x: int): $1_capability_CapDelegateState'#0' { + $1_capability_CapDelegateState'#0'(x) +} +function $IsValid'$1_capability_CapDelegateState'#0''(s: $1_capability_CapDelegateState'#0'): bool { + $IsValid'address'(s->$root) +} +function {:inline} $IsEqual'$1_capability_CapDelegateState'#0''(s1: $1_capability_CapDelegateState'#0', s2: $1_capability_CapDelegateState'#0'): bool { + s1 == s2 +} +var $1_capability_CapDelegateState'#0'_$memory: $Memory $1_capability_CapDelegateState'#0'; + +// struct capability::CapState<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:98:5+83 +datatype $1_capability_CapState'#0' { + $1_capability_CapState'#0'($delegates: Vec (int)) +} +function {:inline} $Update'$1_capability_CapState'#0''_delegates(s: $1_capability_CapState'#0', x: Vec (int)): $1_capability_CapState'#0' { + $1_capability_CapState'#0'(x) +} +function $IsValid'$1_capability_CapState'#0''(s: $1_capability_CapState'#0'): bool { + $IsValid'vec'address''(s->$delegates) +} +function {:inline} $IsEqual'$1_capability_CapState'#0''(s1: $1_capability_CapState'#0', s2: $1_capability_CapState'#0'): bool { + $IsEqual'vec'address''(s1->$delegates, s2->$delegates)} +var $1_capability_CapState'#0'_$memory: $Memory $1_capability_CapState'#0'; + +// struct capability::LinearCap<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:93:5+72 +datatype $1_capability_LinearCap'#0' { + $1_capability_LinearCap'#0'($root: int) +} +function {:inline} $Update'$1_capability_LinearCap'#0''_root(s: $1_capability_LinearCap'#0', x: int): $1_capability_LinearCap'#0' { + $1_capability_LinearCap'#0'(x) +} +function $IsValid'$1_capability_LinearCap'#0''(s: $1_capability_LinearCap'#0'): bool { + $IsValid'address'(s->$root) +} +function {:inline} $IsEqual'$1_capability_LinearCap'#0''(s1: $1_capability_LinearCap'#0', s2: $1_capability_LinearCap'#0'): bool { + s1 == s2 +} + +// fun capability::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+310 +procedure {:timeLimit 80} $1_capability_create$verify(_$t0: $signer, _$t1: #0) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: Vec (int); + var $t10: $1_capability_CapState'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'signer': $signer; + var $1_capability_CapState'#0'_$memory#701: $Memory $1_capability_CapState'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume {:print "$at(118,4731,4732)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:18:9+37 + assume {:print "$at(119,729,766)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // @701 := save_mem(capability::CapState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume {:print "$at(118,4731,4732)"} true; + $1_capability_CapState'#0'_$memory#701 := $1_capability_CapState'#0'_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume {:print "$track_local(55,3,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:109:5+1 + assume {:print "$track_local(55,3,1):", $t1} $t1 == $t1; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:110:20+25 + assume {:print "$at(118,4823,4848)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(118,4823,4848)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:18+6 + assume {:print "$at(118,4867,4873)"} true; + $t5 := $ResourceExists($1_capability_CapState'#0'_$memory, $t3); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:17+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 + assume {:print "$at(118,4858,4950)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:73+26 + assume {:print "$at(118,4922,4948)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::already_exists($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:51+49 + call $t8 := $1_error_already_exists($t7); + if ($abort_flag) { + assume {:print "$at(118,4900,4949)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,3):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 + assume {:print "$at(118,4858,4950)"} true; + assume {:print "$track_abort(55,3):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:111:9+92 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:112:36+5 + assume {:print "$at(118,4987,4992)"} true; +L2: + + // $t9 := vector::empty
() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:112:65+15 + assume {:print "$at(118,5016,5031)"} true; + call $t9 := $1_vector_empty'address'(); + if ($abort_flag) { + assume {:print "$at(118,5016,5031)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,3):", $t4} $t4 == $t4; + goto L4; + } + + // $t10 := pack capability::CapState<#0>($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:112:43+39 + $t10 := $1_capability_CapState'#0'($t9); + + // move_to>($t10, $t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:112:9+7 + if ($ResourceExists($1_capability_CapState'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_capability_CapState'#0'_$memory := $ResourceUpdate($1_capability_CapState'#0'_$memory, $t0->$addr, $t10); + } + if ($abort_flag) { + assume {:print "$at(118,4960,4967)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(55,3):", $t4} $t4 == $t4; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:113:5+1 + assume {:print "$at(118,5040,5041)"} true; +L3: + + // assert Not(capability::spec_has_cap[@701]<#0>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:19:9+38 + assume {:print "$at(119,775,813)"} true; + assert {:msg "assert_failed(119,775,813): function does not abort under this condition"} + !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#701, $t2); + + // assert capability::spec_has_cap<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:20:9+36 + assume {:print "$at(119,822,858)"} true; + assert {:msg "assert_failed(119,822,858): post-condition does not hold"} + $1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory, $t2); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:20:9+36 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:113:5+1 + assume {:print "$at(118,5040,5041)"} true; +L4: + + // assert capability::spec_has_cap[@701]<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:17:5+210 + assume {:print "$at(119,654,864)"} true; + assert {:msg "assert_failed(119,654,864): abort not covered by any of the `aborts_if` clauses"} + $1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#701, $t2); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:17:5+210 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun capability::acquire [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+205 +procedure {:timeLimit 80} $1_capability_acquire$verify(_$t0: $signer, _$t1: #0) returns ($ret0: $1_capability_Cap'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_capability_Cap'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_capability_Cap'#0'': $1_capability_Cap'#0'; + var $temp_0'signer': $signer; + var $1_capability_CapDelegateState'#0'_$memory#702: $Memory $1_capability_CapDelegateState'#0'; + var $1_capability_CapState'#0'_$memory#703: $Memory $1_capability_CapState'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume {:print "$at(118,5273,5274)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: capability::CapDelegateState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapDelegateState'#0''($rsc)))); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:24:9+41 + assume {:print "$at(119,964,1005)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, select capability::CapDelegateState.root>(global>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:25:9+61 + assume {:print "$at(119,1014,1075)"} true; + assume ($t3 == $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t2)->$root); + + // @702 := save_mem(capability::CapDelegateState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume {:print "$at(118,5273,5274)"} true; + $1_capability_CapDelegateState'#0'_$memory#702 := $1_capability_CapDelegateState'#0'_$memory; + + // @703 := save_mem(capability::CapState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + $1_capability_CapState'#0'_$memory#703 := $1_capability_CapState'#0'_$memory; + + // trace_local[requester]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume {:print "$track_local(55,0,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:118:5+1 + assume {:print "$track_local(55,0,1):", $t1} $t1 == $t1; + + // $t4 := capability::validate_acquire<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:120:30+36 + assume {:print "$at(118,5434,5470)"} true; + call $t4 := $1_capability_validate_acquire'#0'($t0); + if ($abort_flag) { + assume {:print "$at(118,5434,5470)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,0):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack capability::Cap<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:120:9+59 + $t6 := $1_capability_Cap'#0'($t4); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:120:9+59 + assume {:print "$track_return(55,0,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:121:5+1 + assume {:print "$at(118,5477,5478)"} true; +L1: + + // assert Not(And(capability::spec_has_delegate_cap[@702]<#0>($t2), Not(capability::spec_has_cap[@703]<#0>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:42:9+84 + assume {:print "$at(119,1817,1901)"} true; + assert {:msg "assert_failed(119,1817,1901): function does not abort under this condition"} + !($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#703, $t3)); + + // assert Not(And(capability::spec_has_delegate_cap[@702]<#0>($t2), Not(vector::spec_contains[]
(capability::spec_delegates[@703]<#0>($t3), $t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:43:9+115 + assume {:print "$at(119,1910,2025)"} true; + assert {:msg "assert_failed(119,1910,2025): function does not abort under this condition"} + !($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_vector_spec_contains'address'($1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory#703, $t3), $t2)); + + // assert Not(And(Not(capability::spec_has_delegate_cap[@702]<#0>($t2)), Not(capability::spec_has_cap[@703]<#0>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:44:9+80 + assume {:print "$at(119,2034,2114)"} true; + assert {:msg "assert_failed(119,2034,2114): function does not abort under this condition"} + !(!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#703, $t2)); + + // assert Implies(capability::spec_has_delegate_cap<#0>($t2), Eq
(select capability::Cap.root>($t6), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:27:9+74 + assume {:print "$at(119,1124,1198)"} true; + assert {:msg "assert_failed(119,1124,1198): post-condition does not hold"} + ($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t2) ==> $IsEqual'address'($t6->$root, $t3)); + + // assert Implies(Not(capability::spec_has_delegate_cap<#0>($t2)), Eq
(select capability::Cap.root>($t6), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:28:9+70 + assume {:print "$at(119,1207,1277)"} true; + assert {:msg "assert_failed(119,1207,1277): post-condition does not hold"} + (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t2) ==> $IsEqual'address'($t6->$root, $t2)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:28:9+70 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:121:5+1 + assume {:print "$at(118,5477,5478)"} true; +L2: + + // assert Or(Or(And(capability::spec_has_delegate_cap[@702]<#0>($t2), Not(capability::spec_has_cap[@703]<#0>($t3))), And(capability::spec_has_delegate_cap[@702]<#0>($t2), Not(vector::spec_contains[]
(capability::spec_delegates[@703]<#0>($t3), $t2)))), And(Not(capability::spec_has_delegate_cap[@702]<#0>($t2)), Not(capability::spec_has_cap[@703]<#0>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:23:5+413 + assume {:print "$at(119,870,1283)"} true; + assert {:msg "assert_failed(119,870,1283): abort not covered by any of the `aborts_if` clauses"} + ((($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#703, $t3)) || ($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_vector_spec_contains'address'($1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory#703, $t3), $t2))) || (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#702, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#703, $t2))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:23:5+413 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun capability::acquire_linear [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+224 +procedure {:timeLimit 80} $1_capability_acquire_linear$verify(_$t0: $signer, _$t1: #0) returns ($ret0: $1_capability_LinearCap'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_capability_LinearCap'#0'; + var $t0: $signer; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_capability_LinearCap'#0'': $1_capability_LinearCap'#0'; + var $temp_0'signer': $signer; + var $1_capability_CapDelegateState'#0'_$memory#704: $Memory $1_capability_CapDelegateState'#0'; + var $1_capability_CapState'#0'_$memory#705: $Memory $1_capability_CapState'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume {:print "$at(118,5643,5644)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume $IsValid'#0'($t1); + + // assume forall $rsc: capability::CapDelegateState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapDelegateState'#0''($rsc)))); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:32:9+41 + assume {:print "$at(119,1396,1437)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, select capability::CapDelegateState.root>(global>($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:33:9+61 + assume {:print "$at(119,1446,1507)"} true; + assume ($t3 == $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t2)->$root); + + // @704 := save_mem(capability::CapDelegateState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume {:print "$at(118,5643,5644)"} true; + $1_capability_CapDelegateState'#0'_$memory#704 := $1_capability_CapDelegateState'#0'_$memory; + + // @705 := save_mem(capability::CapState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + $1_capability_CapState'#0'_$memory#705 := $1_capability_CapState'#0'_$memory; + + // trace_local[requester]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume {:print "$track_local(55,1,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:125:5+1 + assume {:print "$track_local(55,1,1):", $t1} $t1 == $t1; + + // $t4 := capability::validate_acquire<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:127:36+36 + assume {:print "$at(118,5823,5859)"} true; + call $t4 := $1_capability_validate_acquire'#0'($t0); + if ($abort_flag) { + assume {:print "$at(118,5823,5859)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,1):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack capability::LinearCap<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:127:9+65 + $t6 := $1_capability_LinearCap'#0'($t4); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:127:9+65 + assume {:print "$track_return(55,1,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:128:5+1 + assume {:print "$at(118,5866,5867)"} true; +L1: + + // assert Not(And(capability::spec_has_delegate_cap[@704]<#0>($t2), Not(capability::spec_has_cap[@705]<#0>($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:42:9+84 + assume {:print "$at(119,1817,1901)"} true; + assert {:msg "assert_failed(119,1817,1901): function does not abort under this condition"} + !($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#705, $t3)); + + // assert Not(And(capability::spec_has_delegate_cap[@704]<#0>($t2), Not(vector::spec_contains[]
(capability::spec_delegates[@705]<#0>($t3), $t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:43:9+115 + assume {:print "$at(119,1910,2025)"} true; + assert {:msg "assert_failed(119,1910,2025): function does not abort under this condition"} + !($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_vector_spec_contains'address'($1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory#705, $t3), $t2)); + + // assert Not(And(Not(capability::spec_has_delegate_cap[@704]<#0>($t2)), Not(capability::spec_has_cap[@705]<#0>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:44:9+80 + assume {:print "$at(119,2034,2114)"} true; + assert {:msg "assert_failed(119,2034,2114): function does not abort under this condition"} + !(!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#705, $t2)); + + // assert Implies(capability::spec_has_delegate_cap<#0>($t2), Eq
(select capability::LinearCap.root>($t6), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:35:9+74 + assume {:print "$at(119,1556,1630)"} true; + assert {:msg "assert_failed(119,1556,1630): post-condition does not hold"} + ($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t2) ==> $IsEqual'address'($t6->$root, $t3)); + + // assert Implies(Not(capability::spec_has_delegate_cap<#0>($t2)), Eq
(select capability::LinearCap.root>($t6), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:36:9+70 + assume {:print "$at(119,1639,1709)"} true; + assert {:msg "assert_failed(119,1639,1709): post-condition does not hold"} + (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t2) ==> $IsEqual'address'($t6->$root, $t2)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:36:9+70 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:128:5+1 + assume {:print "$at(118,5866,5867)"} true; +L2: + + // assert Or(Or(And(capability::spec_has_delegate_cap[@704]<#0>($t2), Not(capability::spec_has_cap[@705]<#0>($t3))), And(capability::spec_has_delegate_cap[@704]<#0>($t2), Not(vector::spec_contains[]
(capability::spec_delegates[@705]<#0>($t3), $t2)))), And(Not(capability::spec_has_delegate_cap[@704]<#0>($t2)), Not(capability::spec_has_cap[@705]<#0>($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:31:5+426 + assume {:print "$at(119,1289,1715)"} true; + assert {:msg "assert_failed(119,1289,1715): abort not covered by any of the `aborts_if` clauses"} + ((($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#705, $t3)) || ($1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_vector_spec_contains'address'($1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory#705, $t3), $t2))) || (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#704, $t2) && !$1_capability_spec_has_cap'#0'($1_capability_CapState'#0'_$memory#705, $t2))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:31:5+426 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun capability::add_element
[baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+143 +procedure {:inline 1} $1_capability_add_element'address'(_$t0: $Mutation (Vec (int)), _$t1: int) returns ($ret0: $Mutation (Vec (int))) +{ + // declare local variables + var $t2: int; + var $t3: Vec (int); + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t0: $Mutation (Vec (int)); + var $t1: int; + var $temp_0'address': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + assume {:print "$at(118,8613,8614)"} true; + $temp_0'vec'address'' := $Dereference($t0); + assume {:print "$track_local(55,2,0):", $temp_0'vec'address''} $temp_0'vec'address'' == $temp_0'vec'address''; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + assume {:print "$track_local(55,2,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:30+7 + assume {:print "$at(118,8694,8701)"} true; + $t3 := $Dereference($t0); + + // $t4 := vector::contains<#0>($t3, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:14+23 + call $t4 := $1_vector_contains'address'($t3, $t1); + if ($abort_flag) { + assume {:print "$at(118,8678,8701)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:13+1 + call $t6 := $Not($t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:190:31+1 + assume {:print "$at(118,8735,8736)"} true; +L1: + + // vector::push_back<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:190:13+23 + assume {:print "$at(118,8717,8740)"} true; + call $t0 := $1_vector_push_back'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(118,8717,8740)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,2):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 +L2: + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + $temp_0'vec'address'' := $Dereference($t0); + assume {:print "$track_local(55,2,0):", $temp_0'vec'address''} $temp_0'vec'address'' == $temp_0'vec'address''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun capability::add_element [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+143 +procedure {:timeLimit 80} $1_capability_add_element$verify(_$t0: $Mutation (Vec (#0)), _$t1: #0) returns ($ret0: $Mutation (Vec (#0))) +{ + // declare local variables + var $t2: #0; + var $t3: Vec (#0); + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t0: $Mutation (Vec (#0)); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + assume {:print "$at(118,8613,8614)"} true; + assume $IsValid'vec'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + assume $IsValid'#0'($t1); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + $temp_0'vec'#0'' := $Dereference($t0); + assume {:print "$track_local(55,2,0):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:188:5+1 + assume {:print "$track_local(55,2,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:30+7 + assume {:print "$at(118,8694,8701)"} true; + $t3 := $Dereference($t0); + + // $t4 := vector::contains<#0>($t3, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:14+23 + call $t4 := $1_vector_contains'#0'($t3, $t1); + if ($abort_flag) { + assume {:print "$at(118,8678,8701)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,2):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:13+1 + call $t6 := $Not($t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:190:31+1 + assume {:print "$at(118,8735,8736)"} true; +L1: + + // vector::push_back<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:190:13+23 + assume {:print "$at(118,8717,8740)"} true; + call $t0 := $1_vector_push_back'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(118,8717,8740)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,2):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 +L2: + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:189:9+77 + assume {:print "$at(118,8673,8750)"} true; + $temp_0'vec'#0'' := $Dereference($t0); + assume {:print "$track_local(55,2,0):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; +L3: + + // assert vector::spec_contains<#0>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:67:9+36 + assume {:print "$at(119,3157,3193)"} true; + assert {:msg "assert_failed(119,3157,3193): post-condition does not hold"} + $1_vector_spec_contains'#0'($Dereference($t0), $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:67:9+36 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:192:5+1 + assume {:print "$at(118,8755,8756)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun capability::delegate [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+382 +procedure {:timeLimit 80} $1_capability_delegate$verify(_$t0: $1_capability_Cap'#0', _$t1: #0, _$t2: $signer) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: $1_capability_CapDelegateState'#0'; + var $t10: int; + var $t11: $Mutation ($1_capability_CapState'#0'); + var $t12: $Mutation (Vec (int)); + var $t0: $1_capability_Cap'#0'; + var $t1: #0; + var $t2: $signer; + var $temp_0'#0': #0; + var $temp_0'$1_capability_Cap'#0'': $1_capability_Cap'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_capability_CapDelegateState'#0'_$memory#706: $Memory $1_capability_CapDelegateState'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume {:print "$at(118,7381,7382)"} true; + assume $IsValid'$1_capability_Cap'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume $IsValid'signer'($t2) && $1_signer_is_txn_signer($t2) && $1_signer_is_txn_signer_addr($t2->$addr); + + // assume forall $rsc: capability::CapDelegateState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapDelegateState'#0''($rsc)))); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // assume Identical($t4, signer::$address_of($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:48:9+34 + assume {:print "$at(119,2220,2254)"} true; + assume ($t4 == $1_signer_$address_of($t2)); + + // @706 := save_mem(capability::CapDelegateState<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume {:print "$at(118,7381,7382)"} true; + $1_capability_CapDelegateState'#0'_$memory#706 := $1_capability_CapDelegateState'#0'_$memory; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume {:print "$track_local(55,4,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume {:print "$track_local(55,4,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:161:5+1 + assume {:print "$track_local(55,4,2):", $t2} $t2 == $t2; + + // $t5 := signer::address_of($t2) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:163:20+22 + assume {:print "$at(118,7514,7536)"} true; + call $t5 := $1_signer_address_of($t2); + if ($abort_flag) { + assume {:print "$at(118,7514,7536)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,4):", $t6} $t6 == $t6; + goto L3; + } + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:163:13+4 + assume {:print "$track_local(55,4,3):", $t5} $t5 == $t5; + + // $t7 := exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:164:13+6 + assume {:print "$at(118,7550,7556)"} true; + $t7 := $ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:164:9+51 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:164:54+6 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:164:54+6 + assume {:print "$at(118,7591,7597)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:165:17+2 + assume {:print "$at(118,7615,7617)"} true; +L0: + + // $t8 := get_field>.root($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:165:55+9 + assume {:print "$at(118,7653,7662)"} true; + $t8 := $t0->$root; + + // $t9 := pack capability::CapDelegateState<#0>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:165:21+45 + $t9 := $1_capability_CapDelegateState'#0'($t8); + + // move_to>($t9, $t2) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:165:9+7 + if ($ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t2->$addr)) { + call $ExecFailureAbort(); + } else { + $1_capability_CapDelegateState'#0'_$memory := $ResourceUpdate($1_capability_CapDelegateState'#0'_$memory, $t2->$addr, $t9); + } + if ($abort_flag) { + assume {:print "$at(118,7607,7614)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,4):", $t6} $t6 == $t6; + goto L3; + } + + // $t10 := get_field>.root($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:63+9 + assume {:print "$at(118,7729,7738)"} true; + $t10 := $t0->$root; + + // $t11 := borrow_global>($t10) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:26+17 + if (!$ResourceExists($1_capability_CapState'#0'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_capability_CapState'#0'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(118,7692,7709)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,4):", $t6} $t6 == $t6; + goto L3; + } + + // $t12 := borrow_field>.delegates($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:21+62 + $t12 := $ChildMutation($t11, 0, $Dereference($t11)->$delegates); + + // capability::add_element
($t12, $t5) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:9+81 + call $t12 := $1_capability_add_element'address'($t12, $t5); + if ($abort_flag) { + assume {:print "$at(118,7675,7756)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,4):", $t6} $t6 == $t6; + goto L3; + } + + // write_back[Reference($t11).delegates (vector
)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:9+81 + $t11 := $UpdateMutation($t11, $Update'$1_capability_CapState'#0''_delegates($Dereference($t11), $Dereference($t12))); + + // write_back[capability::CapState<#0>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:166:9+81 + $1_capability_CapState'#0'_$memory := $ResourceUpdate($1_capability_CapState'#0'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:167:5+1 + assume {:print "$at(118,7762,7763)"} true; +L2: + + // assert capability::spec_has_delegate_cap<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:49:9+45 + assume {:print "$at(119,2263,2308)"} true; + assert {:msg "assert_failed(119,2263,2308): post-condition does not hold"} + $1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t4); + + // assert Implies(Not(capability::spec_has_delegate_cap[@706]<#0>($t4)), Eq
(select capability::CapDelegateState.root>(global>($t4)), select capability::Cap.root>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:50:9+113 + assume {:print "$at(119,2317,2430)"} true; + assert {:msg "assert_failed(119,2317,2430): post-condition does not hold"} + (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#706, $t4) ==> $IsEqual'address'($ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t4)->$root, $t0->$root)); + + // assert Implies(Not(capability::spec_has_delegate_cap[@706]<#0>($t4)), vector::spec_contains
(capability::spec_delegates<#0>(select capability::Cap.root>($t0)), $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:51:9+119 + assume {:print "$at(119,2439,2558)"} true; + assert {:msg "assert_failed(119,2439,2558): post-condition does not hold"} + (!$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory#706, $t4) ==> $1_vector_spec_contains'address'($1_capability_spec_delegates'#0'($1_capability_CapState'#0'_$memory, $t0->$root), $t4)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:51:9+119 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:167:5+1 + assume {:print "$at(118,7762,7763)"} true; +L3: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:167:5+1 + assume {:print "$at(118,7762,7763)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun capability::linear_root_addr [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:154:5+125 +procedure {:timeLimit 80} $1_capability_linear_root_addr$verify(_$t0: $1_capability_LinearCap'#0', _$t1: #0) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t0: $1_capability_LinearCap'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_capability_LinearCap'#0'': $1_capability_LinearCap'#0'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:154:5+1 + assume {:print "$at(118,7068,7069)"} true; + assume $IsValid'$1_capability_LinearCap'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:154:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:154:5+1 + assume {:print "$track_local(55,5,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:154:5+1 + assume {:print "$track_local(55,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field>.root($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:155:9+9 + assume {:print "$at(118,7178,7187)"} true; + $t2 := $t0->$root; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:155:9+9 + assume {:print "$track_return(55,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:156:5+1 + assume {:print "$at(118,7192,7193)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:156:5+1 + assume {:print "$at(118,7192,7193)"} true; + $ret0 := $t2; + return; + +} + +// fun capability::remove_element
[baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+183 +procedure {:inline 1} $1_capability_remove_element'address'(_$t0: $Mutation (Vec (int)), _$t1: int) returns ($ret0: $Mutation (Vec (int))) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t0: $Mutation (Vec (int)); + var $t1: int; + var $temp_0'address': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + assume {:print "$at(118,8378,8379)"} true; + $temp_0'vec'address'' := $Dereference($t0); + assume {:print "$track_local(55,6,0):", $temp_0'vec'address''} $temp_0'vec'address'' == $temp_0'vec'address''; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + assume {:print "$track_local(55,6,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:46+6 + assume {:print "$at(118,8479,8485)"} true; + $t4 := $Dereference($t0); + + // ($t5, $t6) := vector::index_of<#0>($t4, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:30+22 + call $t5,$t6 := $1_vector_index_of'address'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(118,8463,8485)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(55,6):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[index]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:21+5 + assume {:print "$track_local(55,6,3):", $t6} $t6 == $t6; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:28+1 + assume {:print "$at(118,8535,8536)"} true; +L1: + + // $t8 := vector::remove<#0>($t0, $t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:13+24 + assume {:print "$at(118,8520,8544)"} true; + call $t8,$t0 := $1_vector_remove'address'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(118,8520,8544)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(55,6):", $t7} $t7 == $t7; + goto L4; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:13+24 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 +L2: + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + $temp_0'vec'address'' := $Dereference($t0); + assume {:print "$track_local(55,6,0):", $temp_0'vec'address''} $temp_0'vec'address'' == $temp_0'vec'address''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun capability::remove_element [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+183 +procedure {:timeLimit 80} $1_capability_remove_element$verify(_$t0: $Mutation (Vec (#0)), _$t1: #0) returns ($ret0: $Mutation (Vec (#0))) +{ + // declare local variables + var $t2: #0; + var $t3: int; + var $t4: Vec (#0); + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: #0; + var $t0: $Mutation (Vec (#0)); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + assume {:print "$at(118,8378,8379)"} true; + assume $IsValid'vec'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + assume $IsValid'#0'($t1); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + $temp_0'vec'#0'' := $Dereference($t0); + assume {:print "$track_local(55,6,0):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:180:5+1 + assume {:print "$track_local(55,6,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:46+6 + assume {:print "$at(118,8479,8485)"} true; + $t4 := $Dereference($t0); + + // ($t5, $t6) := vector::index_of<#0>($t4, $t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:30+22 + call $t5,$t6 := $1_vector_index_of'#0'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(118,8463,8485)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(55,6):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[index]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:181:21+5 + assume {:print "$track_local(55,6,3):", $t6} $t6 == $t6; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:28+1 + assume {:print "$at(118,8535,8536)"} true; +L1: + + // $t8 := vector::remove<#0>($t0, $t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:13+24 + assume {:print "$at(118,8520,8544)"} true; + call $t8,$t0 := $1_vector_remove'#0'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(118,8520,8544)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(55,6):", $t7} $t7 == $t7; + goto L4; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:183:13+24 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 +L2: + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:182:9+60 + assume {:print "$at(118,8495,8555)"} true; + $temp_0'vec'#0'' := $Dereference($t0); + assume {:print "$track_local(55,6,0):", $temp_0'vec'#0''} $temp_0'vec'#0'' == $temp_0'vec'#0''; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:185:5+1 + assume {:print "$at(118,8560,8561)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun capability::revoke [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+389 +procedure {:timeLimit 80} $1_capability_revoke$verify(_$t0: $1_capability_Cap'#0', _$t1: #0, _$t2: int) returns () +{ + // declare local variables + var $t3: bool; + var $t4: bool; + var $t5: $1_capability_CapDelegateState'#0'; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation ($1_capability_CapState'#0'); + var $t10: $Mutation (Vec (int)); + var $t0: $1_capability_Cap'#0'; + var $t1: #0; + var $t2: int; + var $temp_0'#0': #0; + var $temp_0'$1_capability_Cap'#0'': $1_capability_Cap'#0'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume {:print "$at(118,7932,7933)"} true; + assume $IsValid'$1_capability_Cap'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: capability::CapDelegateState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapDelegateState'#0''($rsc)))); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume {:print "$track_local(55,7,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume {:print "$track_local(55,7,1):", $t1} $t1 == $t1; + + // trace_local[from]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:171:5+1 + assume {:print "$track_local(55,7,2):", $t2} $t2 == $t2; + + // $t3 := exists>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:174:14+6 + assume {:print "$at(118,8081,8087)"} true; + $t3 := $ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t2); + + // $t4 := !($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:174:13+1 + call $t4 := $Not($t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:174:9+52 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:174:55+6 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:174:55+6 + assume {:print "$at(118,8122,8128)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:175:85+4 + assume {:print "$at(118,8214,8218)"} true; +L0: + + // $t5 := move_from>($t2) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:175:48+9 + assume {:print "$at(118,8177,8186)"} true; + if (!$ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t2); + $1_capability_CapDelegateState'#0'_$memory := $ResourceRemove($1_capability_CapDelegateState'#0'_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(118,8177,8186)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,7):", $t6} $t6 == $t6; + goto L3; + } + + // $t7 := unpack capability::CapDelegateState<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:175:13+32 + $t7 := $t5->$root; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:175:38+5 + + // $t8 := get_field>.root($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:66+9 + assume {:print "$at(118,8286,8295)"} true; + $t8 := $t0->$root; + + // $t9 := borrow_global>($t8) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:29+17 + if (!$ResourceExists($1_capability_CapState'#0'_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t8), EmptyVec(), $ResourceValue($1_capability_CapState'#0'_$memory, $t8)); + } + if ($abort_flag) { + assume {:print "$at(118,8249,8266)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,7):", $t6} $t6 == $t6; + goto L3; + } + + // $t10 := borrow_field>.delegates($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:24+62 + $t10 := $ChildMutation($t9, 0, $Dereference($t9)->$delegates); + + // capability::remove_element
($t10, $t2) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:9+85 + call $t10 := $1_capability_remove_element'address'($t10, $t2); + if ($abort_flag) { + assume {:print "$at(118,8229,8314)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(55,7):", $t6} $t6 == $t6; + goto L3; + } + + // write_back[Reference($t9).delegates (vector
)]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:9+85 + $t9 := $UpdateMutation($t9, $Update'$1_capability_CapState'#0''_delegates($Dereference($t9), $Dereference($t10))); + + // write_back[capability::CapState<#0>@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:176:9+85 + $1_capability_CapState'#0'_$memory := $ResourceUpdate($1_capability_CapState'#0'_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:177:5+1 + assume {:print "$at(118,8320,8321)"} true; +L2: + + // assert Not(capability::spec_has_delegate_cap<#0>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:55:9+46 + assume {:print "$at(119,2664,2710)"} true; + assert {:msg "assert_failed(119,2664,2710): post-condition does not hold"} + !$1_capability_spec_has_delegate_cap'#0'($1_capability_CapDelegateState'#0'_$memory, $t2); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.spec.move:55:9+46 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:177:5+1 + assume {:print "$at(118,8320,8321)"} true; +L3: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:177:5+1 + assume {:print "$at(118,8320,8321)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun capability::root_addr [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:149:5+112 +procedure {:timeLimit 80} $1_capability_root_addr$verify(_$t0: $1_capability_Cap'#0', _$t1: #0) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t0: $1_capability_Cap'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_capability_Cap'#0'': $1_capability_Cap'#0'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:149:5+1 + assume {:print "$at(118,6866,6867)"} true; + assume $IsValid'$1_capability_Cap'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:149:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:149:5+1 + assume {:print "$track_local(55,8,0):", $t0} $t0 == $t0; + + // trace_local[_feature_witness]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:149:5+1 + assume {:print "$track_local(55,8,1):", $t1} $t1 == $t1; + + // $t2 := get_field>.root($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:150:9+9 + assume {:print "$at(118,6963,6972)"} true; + $t2 := $t0->$root; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:150:9+9 + assume {:print "$track_return(55,8,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:151:5+1 + assume {:print "$at(118,6977,6978)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:151:5+1 + assume {:print "$at(118,6977,6978)"} true; + $ret0 := $t2; + return; + +} + +// fun capability::validate_acquire<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+776 +procedure {:inline 1} $1_capability_validate_acquire'#0'(_$t0: $signer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_capability_CapDelegateState'#0'; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: $1_capability_CapState'#0'; + var $t13: Vec (int); + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t0: $signer; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[requester]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+1 + assume {:print "$at(118,5956,5957)"} true; + assume {:print "$track_local(55,9,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:133:20+29 + assume {:print "$at(118,6076,6105)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(118,6076,6105)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:133:13+4 + assume {:print "$track_local(55,9,2):", $t4} $t4 == $t4; + + // $t6 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:13+6 + assume {:print "$at(118,6119,6125)"} true; + $t6 := $ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:70+4 + assume {:print "$at(118,6231,6235)"} true; +L1: + + // $t7 := get_global>($t4) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:29+13 + assume {:print "$at(118,6190,6203)"} true; + if (!$ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(118,6190,6203)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // $t8 := get_field>.root($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:29+51 + $t8 := $t7->$root; + + // trace_local[root_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:17+9 + assume {:print "$track_local(55,9,3):", $t8} $t8 == $t8; + + // $t9 := exists>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:21+6 + assume {:print "$at(118,6343,6349)"} true; + $t9 := $ResourceExists($1_capability_CapState'#0'_$memory, $t8); + + // if ($t9) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + if ($t9) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + assume {:print "$at(118,6335,6413)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:80+9 +L2: + + // $t10 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:80+9 + assume {:print "$at(118,6402,6411)"} true; + $t10 := 3; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_state($t10) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:59+31 + call $t11 := $1_error_invalid_state($t10); + if ($abort_flag) { + assume {:print "$at(118,6381,6412)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + assume {:print "$at(118,6335,6413)"} true; + assume {:print "$track_abort(55,9):", $t11} $t11 == $t11; + + // $t5 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + $t5 := $t11; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + goto L13; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:72+9 + assume {:print "$at(118,6486,6495)"} true; +L4: + + // $t12 := get_global>($t8) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:39+13 + assume {:print "$at(118,6453,6466)"} true; + if (!$ResourceExists($1_capability_CapState'#0'_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t12 := $ResourceValue($1_capability_CapState'#0'_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(118,6453,6466)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // $t13 := get_field>.delegates($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:38+54 + $t13 := $t12->$delegates; + + // $t14 := vector::contains
($t13, $t4) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:21+79 + call $t14 := $1_vector_contains'address'($t13, $t4); + if ($abort_flag) { + assume {:print "$at(118,6435,6514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // if ($t14) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + if ($t14) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + assume {:print "$at(118,6427,6564)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:38+9 + assume {:print "$at(118,6553,6562)"} true; +L5: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:38+9 + assume {:print "$at(118,6553,6562)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_state($t15) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:17+31 + call $t16 := $1_error_invalid_state($t15); + if ($abort_flag) { + assume {:print "$at(118,6532,6563)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + assume {:print "$at(118,6427,6564)"} true; + assume {:print "$track_abort(55,9):", $t16} $t16 == $t16; + + // $t5 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + $t5 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + goto L13; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:140:13+9 + assume {:print "$at(118,6578,6587)"} true; +L7: + + // $t1 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + $t1 := $t8; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:47+4 + assume {:print "$at(118,6651,6655)"} true; +L0: + + // $t17 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:21+6 + assume {:print "$at(118,6625,6631)"} true; + $t17 := $ResourceExists($1_capability_CapState'#0'_$memory, $t4); + + // if ($t17) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + if ($t17) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + assume {:print "$at(118,6617,6698)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:71+21 +L9: + + // $t18 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:71+21 + assume {:print "$at(118,6675,6696)"} true; + $t18 := 2; + assume $IsValid'u64'($t18); + + // $t19 := error::not_found($t18) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:54+39 + call $t19 := $1_error_not_found($t18); + if ($abort_flag) { + assume {:print "$at(118,6658,6697)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + assume {:print "$at(118,6617,6698)"} true; + assume {:print "$track_abort(55,9):", $t19} $t19 == $t19; + + // $t5 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + $t5 := $t19; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:143:13+4 + assume {:print "$at(118,6712,6716)"} true; +L11: + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + $t1 := $t4; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 +L8: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + assume {:print "$track_return(55,9,0):", $t1} $t1 == $t1; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; +L12: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; + $ret0 := $t1; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 +L13: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun capability::validate_acquire [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+776 +procedure {:timeLimit 80} $1_capability_validate_acquire$verify(_$t0: $signer) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_capability_CapDelegateState'#0'; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: $1_capability_CapState'#0'; + var $t13: Vec (int); + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t0: $signer; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+1 + assume {:print "$at(118,5956,5957)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: capability::CapDelegateState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapDelegateState'#0''($rsc)))); + + // assume forall $rsc: capability::CapState<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_capability_CapState'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_capability_CapState'#0'_$memory, $a_0); + ($IsValid'$1_capability_CapState'#0''($rsc)))); + + // trace_local[requester]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:131:5+1 + assume {:print "$track_local(55,9,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:133:20+29 + assume {:print "$at(118,6076,6105)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(118,6076,6105)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_local[addr]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:133:13+4 + assume {:print "$track_local(55,9,2):", $t4} $t4 == $t4; + + // $t6 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:13+6 + assume {:print "$at(118,6119,6125)"} true; + $t6 := $ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:70+4 + assume {:print "$at(118,6231,6235)"} true; +L1: + + // $t7 := get_global>($t4) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:29+13 + assume {:print "$at(118,6190,6203)"} true; + if (!$ResourceExists($1_capability_CapDelegateState'#0'_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_capability_CapDelegateState'#0'_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(118,6190,6203)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // $t8 := get_field>.root($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:29+51 + $t8 := $t7->$root; + + // trace_local[root_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:135:17+9 + assume {:print "$track_local(55,9,3):", $t8} $t8 == $t8; + + // $t9 := exists>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:21+6 + assume {:print "$at(118,6343,6349)"} true; + $t9 := $ResourceExists($1_capability_CapState'#0'_$memory, $t8); + + // if ($t9) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + if ($t9) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + assume {:print "$at(118,6335,6413)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:80+9 +L2: + + // $t10 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:80+9 + assume {:print "$at(118,6402,6411)"} true; + $t10 := 3; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_state($t10) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:59+31 + call $t11 := $1_error_invalid_state($t10); + if ($abort_flag) { + assume {:print "$at(118,6381,6412)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + assume {:print "$at(118,6335,6413)"} true; + assume {:print "$track_abort(55,9):", $t11} $t11 == $t11; + + // $t5 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + $t5 := $t11; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:137:13+78 + goto L13; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:72+9 + assume {:print "$at(118,6486,6495)"} true; +L4: + + // $t12 := get_global>($t8) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:39+13 + assume {:print "$at(118,6453,6466)"} true; + if (!$ResourceExists($1_capability_CapState'#0'_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t12 := $ResourceValue($1_capability_CapState'#0'_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(118,6453,6466)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // $t13 := get_field>.delegates($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:38+54 + $t13 := $t12->$delegates; + + // $t14 := vector::contains
($t13, $t4) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:21+79 + call $t14 := $1_vector_contains'address'($t13, $t4); + if ($abort_flag) { + assume {:print "$at(118,6435,6514)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // if ($t14) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + if ($t14) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + assume {:print "$at(118,6427,6564)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:38+9 + assume {:print "$at(118,6553,6562)"} true; +L5: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:38+9 + assume {:print "$at(118,6553,6562)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_state($t15) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:139:17+31 + call $t16 := $1_error_invalid_state($t15); + if ($abort_flag) { + assume {:print "$at(118,6532,6563)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + assume {:print "$at(118,6427,6564)"} true; + assume {:print "$track_abort(55,9):", $t16} $t16 == $t16; + + // $t5 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + $t5 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:138:13+137 + goto L13; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:140:13+9 + assume {:print "$at(118,6578,6587)"} true; +L7: + + // $t1 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + $t1 := $t8; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:47+4 + assume {:print "$at(118,6651,6655)"} true; +L0: + + // $t17 := exists>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:21+6 + assume {:print "$at(118,6625,6631)"} true; + $t17 := $ResourceExists($1_capability_CapState'#0'_$memory, $t4); + + // if ($t17) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + if ($t17) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + assume {:print "$at(118,6617,6698)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:71+21 +L9: + + // $t18 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:71+21 + assume {:print "$at(118,6675,6696)"} true; + $t18 := 2; + assume $IsValid'u64'($t18); + + // $t19 := error::not_found($t18) on_abort goto L13 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:54+39 + call $t19 := $1_error_not_found($t18); + if ($abort_flag) { + assume {:print "$at(118,6658,6697)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(55,9):", $t5} $t5 == $t5; + goto L13; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + assume {:print "$at(118,6617,6698)"} true; + assume {:print "$track_abort(55,9):", $t19} $t19 == $t19; + + // $t5 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + $t5 := $t19; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:142:13+81 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:143:13+4 + assume {:print "$at(118,6712,6716)"} true; +L11: + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + $t1 := $t4; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 +L8: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:134:9+611 + assume {:print "$at(118,6115,6726)"} true; + assume {:print "$track_return(55,9,0):", $t1} $t1 == $t1; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; +L12: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; + $ret0 := $t1; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 +L13: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/capability.move:145:5+1 + assume {:print "$at(118,6731,6732)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// struct royalty::MutatorRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:32:5+67 +datatype $1_royalty_MutatorRef { + $1_royalty_MutatorRef($inner: $1_object_ExtendRef) +} +function {:inline} $Update'$1_royalty_MutatorRef'_inner(s: $1_royalty_MutatorRef, x: $1_object_ExtendRef): $1_royalty_MutatorRef { + $1_royalty_MutatorRef(x) +} +function $IsValid'$1_royalty_MutatorRef'(s: $1_royalty_MutatorRef): bool { + $IsValid'$1_object_ExtendRef'(s->$inner) +} +function {:inline} $IsEqual'$1_royalty_MutatorRef'(s1: $1_royalty_MutatorRef, s2: $1_royalty_MutatorRef): bool { + s1 == s2 +} + +// struct royalty::Royalty at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:23:5+245 +datatype $1_royalty_Royalty { + $1_royalty_Royalty($numerator: int, $denominator: int, $payee_address: int) +} +function {:inline} $Update'$1_royalty_Royalty'_numerator(s: $1_royalty_Royalty, x: int): $1_royalty_Royalty { + $1_royalty_Royalty(x, s->$denominator, s->$payee_address) +} +function {:inline} $Update'$1_royalty_Royalty'_denominator(s: $1_royalty_Royalty, x: int): $1_royalty_Royalty { + $1_royalty_Royalty(s->$numerator, x, s->$payee_address) +} +function {:inline} $Update'$1_royalty_Royalty'_payee_address(s: $1_royalty_Royalty, x: int): $1_royalty_Royalty { + $1_royalty_Royalty(s->$numerator, s->$denominator, x) +} +function $IsValid'$1_royalty_Royalty'(s: $1_royalty_Royalty): bool { + $IsValid'u64'(s->$numerator) + && $IsValid'u64'(s->$denominator) + && $IsValid'address'(s->$payee_address) +} +function {:inline} $IsEqual'$1_royalty_Royalty'(s1: $1_royalty_Royalty, s2: $1_royalty_Royalty): bool { + s1 == s2 +} +var $1_royalty_Royalty_$memory: $Memory $1_royalty_Royalty; + +// fun royalty::update [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+360 +procedure {:inline 1} $1_royalty_update(_$t0: $1_royalty_MutatorRef, _$t1: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t2: int; + var $t3: $signer; + var $t4: $1_object_ExtendRef; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_royalty_Royalty; + var $t9: $1_object_ExtendRef; + var $t10: $signer; + var $t0: $1_royalty_MutatorRef; + var $t1: $1_royalty_Royalty; + var $temp_0'$1_royalty_MutatorRef': $1_royalty_MutatorRef; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume {:print "$at(182,1622,1623)"} true; + assume {:print "$track_local(56,9,0):", $t0} $t0 == $t0; + + // trace_local[royalty]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume {:print "$track_local(56,9,1):", $t1} $t1 == $t1; + + // $t4 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:52+18 + assume {:print "$at(182,1754,1772)"} true; + $t4 := $t0->$inner; + + // $t5 := object::address_from_extend_ref($t4) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:20+51 + call $t5 := $1_object_address_from_extend_ref($t4); + if ($abort_flag) { + assume {:print "$at(182,1722,1773)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:13+4 + assume {:print "$track_local(56,9,2):", $t5} $t5 == $t5; + + // $t7 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:45:13+6 + assume {:print "$at(182,1787,1793)"} true; + $t7 := $ResourceExists($1_royalty_Royalty_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:45:9+76 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:32+4 + assume {:print "$at(182,1843,1847)"} true; +L1: + + // $t8 := move_from($t5) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:13+9 + assume {:print "$at(182,1824,1833)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_royalty_Royalty_$memory, $t5); + $1_royalty_Royalty_$memory := $ResourceRemove($1_royalty_Royalty_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(182,1824,1833)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:13+24 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:61+11 + assume {:print "$at(182,1922,1933)"} true; +L0: + + // $t9 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:60+18 + assume {:print "$at(182,1921,1939)"} true; + $t9 := $t0->$inner; + + // $t10 := object::generate_signer_for_extending($t9) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:22+57 + call $t10 := $1_object_generate_signer_for_extending($t9); + if ($abort_flag) { + assume {:print "$at(182,1883,1940)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // trace_local[signer]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:13+6 + assume {:print "$track_local(56,9,3):", $t10} $t10 == $t10; + + // move_to($t1, $t10) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:50:9+7 + assume {:print "$at(182,1950,1957)"} true; + if ($ResourceExists($1_royalty_Royalty_$memory, $t10->$addr)) { + call $ExecFailureAbort(); + } else { + $1_royalty_Royalty_$memory := $ResourceUpdate($1_royalty_Royalty_$memory, $t10->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(182,1950,1957)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 +L3: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun royalty::update [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+360 +procedure {:timeLimit 80} $1_royalty_update$verify(_$t0: $1_royalty_MutatorRef, _$t1: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t2: int; + var $t3: $signer; + var $t4: $1_object_ExtendRef; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_royalty_Royalty; + var $t9: $1_object_ExtendRef; + var $t10: $signer; + var $t0: $1_royalty_MutatorRef; + var $t1: $1_royalty_Royalty; + var $temp_0'$1_royalty_MutatorRef': $1_royalty_MutatorRef; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume {:print "$at(182,1622,1623)"} true; + assume $IsValid'$1_royalty_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume $IsValid'$1_royalty_Royalty'($t1); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume {:print "$track_local(56,9,0):", $t0} $t0 == $t0; + + // trace_local[royalty]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:43:5+1 + assume {:print "$track_local(56,9,1):", $t1} $t1 == $t1; + + // $t4 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:52+18 + assume {:print "$at(182,1754,1772)"} true; + $t4 := $t0->$inner; + + // $t5 := object::address_from_extend_ref($t4) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:20+51 + call $t5 := $1_object_address_from_extend_ref($t4); + if ($abort_flag) { + assume {:print "$at(182,1722,1773)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // trace_local[addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:44:13+4 + assume {:print "$track_local(56,9,2):", $t5} $t5 == $t5; + + // $t7 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:45:13+6 + assume {:print "$at(182,1787,1793)"} true; + $t7 := $ResourceExists($1_royalty_Royalty_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:45:9+76 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:32+4 + assume {:print "$at(182,1843,1847)"} true; +L1: + + // $t8 := move_from($t5) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:13+9 + assume {:print "$at(182,1824,1833)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_royalty_Royalty_$memory, $t5); + $1_royalty_Royalty_$memory := $ResourceRemove($1_royalty_Royalty_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(182,1824,1833)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:46:13+24 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:61+11 + assume {:print "$at(182,1922,1933)"} true; +L0: + + // $t9 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:60+18 + assume {:print "$at(182,1921,1939)"} true; + $t9 := $t0->$inner; + + // $t10 := object::generate_signer_for_extending($t9) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:22+57 + call $t10 := $1_object_generate_signer_for_extending($t9); + if ($abort_flag) { + assume {:print "$at(182,1883,1940)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // trace_local[signer]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:49:13+6 + assume {:print "$track_local(56,9,3):", $t10} $t10 == $t10; + + // move_to($t1, $t10) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:50:9+7 + assume {:print "$at(182,1950,1957)"} true; + if ($ResourceExists($1_royalty_Royalty_$memory, $t10->$addr)) { + call $ExecFailureAbort(); + } else { + $1_royalty_Royalty_$memory := $ResourceUpdate($1_royalty_Royalty_$memory, $t10->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(182,1950,1957)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(56,9):", $t6} $t6 == $t6; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 +L3: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:51:5+1 + assume {:print "$at(182,1981,1982)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun royalty::init [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+149 +procedure {:inline 1} $1_royalty_init(_$t0: $1_object_ConstructorRef, _$t1: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t0: $1_object_ConstructorRef; + var $t1: $1_royalty_Royalty; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume {:print "$at(182,1399,1400)"} true; + assume {:print "$track_local(56,6,0):", $t0} $t0 == $t0; + + // trace_local[royalty]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume {:print "$track_local(56,6,1):", $t1} $t1 == $t1; + + // $t3 := object::generate_signer($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:38:22+28 + assume {:print "$at(182,1478,1506)"} true; + call $t3 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(182,1478,1506)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,6):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:38:13+6 + assume {:print "$track_local(56,6,2):", $t3} $t3 == $t3; + + // move_to($t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:39:9+7 + assume {:print "$at(182,1516,1523)"} true; + if ($ResourceExists($1_royalty_Royalty_$memory, $t3->$addr)) { + call $ExecFailureAbort(); + } else { + $1_royalty_Royalty_$memory := $ResourceUpdate($1_royalty_Royalty_$memory, $t3->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(182,1516,1523)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,6):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::init [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+149 +procedure {:timeLimit 80} $1_royalty_init$verify(_$t0: $1_object_ConstructorRef, _$t1: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t0: $1_object_ConstructorRef; + var $t1: $1_royalty_Royalty; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume {:print "$at(182,1399,1400)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume $IsValid'$1_royalty_Royalty'($t1); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume {:print "$track_local(56,6,0):", $t0} $t0 == $t0; + + // trace_local[royalty]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:37:5+1 + assume {:print "$track_local(56,6,1):", $t1} $t1 == $t1; + + // $t3 := object::generate_signer($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:38:22+28 + assume {:print "$at(182,1478,1506)"} true; + call $t3 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(182,1478,1506)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,6):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:38:13+6 + assume {:print "$track_local(56,6,2):", $t3} $t3 == $t3; + + // move_to($t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:39:9+7 + assume {:print "$at(182,1516,1523)"} true; + if ($ResourceExists($1_royalty_Royalty_$memory, $t3->$addr)) { + call $ExecFailureAbort(); + } else { + $1_royalty_Royalty_$memory := $ResourceUpdate($1_royalty_Royalty_$memory, $t3->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(182,1516,1523)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,6):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:40:5+1 + assume {:print "$at(182,1547,1548)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::create [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+327 +procedure {:inline 1} $1_royalty_create(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: $1_royalty_Royalty) +{ + // declare local variables + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_royalty_Royalty; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[numerator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$at(182,2059,2060)"} true; + assume {:print "$track_local(56,0,0):", $t0} $t0 == $t0; + + // trace_local[denominator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$track_local(56,0,1):", $t1} $t1 == $t1; + + // trace_local[payee_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$track_local(56,0,2):", $t2} $t2 == $t2; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:32+1 + assume {:print "$at(182,2177,2178)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := !=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:29+2 + $t4 := !$IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + assume {:print "$at(182,2154,2230)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:55+28 +L0: + + // $t5 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:55+28 + assume {:print "$at(182,2200,2228)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:35+49 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(182,2180,2229)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,0):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + assume {:print "$at(182,2154,2230)"} true; + assume {:print "$track_abort(56,0):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:17+9 + assume {:print "$at(182,2248,2257)"} true; +L2: + + // $t8 := <=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:27+2 + assume {:print "$at(182,2258,2260)"} true; + call $t8 := $Le($t0, $t1); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + assume {:print "$at(182,2240,2320)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:63+24 +L3: + + // $t9 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:63+24 + assume {:print "$at(182,2294,2318)"} true; + $t9 := 2; + assume $IsValid'u64'($t9); + + // $t10 := error::out_of_range($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:43+45 + call $t10 := $1_error_out_of_range($t9); + if ($abort_flag) { + assume {:print "$at(182,2274,2319)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,0):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + assume {:print "$at(182,2240,2320)"} true; + assume {:print "$track_abort(56,0):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + $t7 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:19+9 + assume {:print "$at(182,2341,2350)"} true; +L5: + + // $t11 := pack royalty::Royalty($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:9+49 + assume {:print "$at(182,2331,2380)"} true; + $t11 := $1_royalty_Royalty($t0, $t1, $t2); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:9+49 + assume {:print "$track_return(56,0,0):", $t11} $t11 == $t11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; +L6: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; + $ret0 := $t11; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun royalty::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+327 +procedure {:timeLimit 80} $1_royalty_create$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: $1_royalty_Royalty) +{ + // declare local variables + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_royalty_Royalty; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$at(182,2059,2060)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume $IsValid'address'($t2); + + // trace_local[numerator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$track_local(56,0,0):", $t0} $t0 == $t0; + + // trace_local[denominator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$track_local(56,0,1):", $t1} $t1 == $t1; + + // trace_local[payee_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:54:5+1 + assume {:print "$track_local(56,0,2):", $t2} $t2 == $t2; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:32+1 + assume {:print "$at(182,2177,2178)"} true; + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := !=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:29+2 + $t4 := !$IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + assume {:print "$at(182,2154,2230)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:55+28 +L0: + + // $t5 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:55+28 + assume {:print "$at(182,2200,2228)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:35+49 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(182,2180,2229)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,0):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + assume {:print "$at(182,2154,2230)"} true; + assume {:print "$track_abort(56,0):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:55:9+76 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:17+9 + assume {:print "$at(182,2248,2257)"} true; +L2: + + // $t8 := <=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:27+2 + assume {:print "$at(182,2258,2260)"} true; + call $t8 := $Le($t0, $t1); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + assume {:print "$at(182,2240,2320)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:63+24 +L3: + + // $t9 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:63+24 + assume {:print "$at(182,2294,2318)"} true; + $t9 := 2; + assume $IsValid'u64'($t9); + + // $t10 := error::out_of_range($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:43+45 + call $t10 := $1_error_out_of_range($t9); + if ($abort_flag) { + assume {:print "$at(182,2274,2319)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(56,0):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + assume {:print "$at(182,2240,2320)"} true; + assume {:print "$track_abort(56,0):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + $t7 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:56:9+80 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:19+9 + assume {:print "$at(182,2341,2350)"} true; +L5: + + // $t11 := pack royalty::Royalty($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:9+49 + assume {:print "$at(182,2331,2380)"} true; + $t11 := $1_royalty_Royalty($t0, $t1, $t2); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:58:9+49 + assume {:print "$track_return(56,0,0):", $t11} $t11 == $t11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; +L6: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; + $ret0 := $t11; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:59:5+1 + assume {:print "$at(182,2385,2386)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun royalty::get [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+308 +procedure {:inline 1} $1_royalty_get'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: $1_option_Option'$1_royalty_Royalty') +{ + // declare local variables + var $t1: $1_option_Option'$1_royalty_Royalty'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: $1_royalty_Royalty; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[maybe_royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+1 + assume {:print "$at(182,2789,2790)"} true; + assume {:print "$track_local(56,5,0):", $t0} $t0 == $t0; + + // $t3 := object::object_address<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:24+38 + assume {:print "$at(182,2897,2935)"} true; + call $t3 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(182,2897,2935)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[obj_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:13+8 + assume {:print "$track_local(56,5,2):", $t3} $t3 == $t3; + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:13+6 + assume {:print "$at(182,2949,2955)"} true; + $t5 := $ResourceExists($1_royalty_Royalty_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:50+8 + assume {:print "$at(182,3027,3035)"} true; +L1: + + // $t6 := get_global($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:27+13 + assume {:print "$at(182,3004,3017)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_royalty_Royalty_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(182,3004,3017)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t1 := opaque begin: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_some'$1_royalty_Royalty'($t6)); + + // $t1 := opaque end: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_none'$1_royalty_Royalty'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + assume {:print "$track_return(56,5,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::get<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+308 +procedure {:inline 1} $1_royalty_get'#0'(_$t0: $1_object_Object'#0') returns ($ret0: $1_option_Option'$1_royalty_Royalty') +{ + // declare local variables + var $t1: $1_option_Option'$1_royalty_Royalty'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: $1_royalty_Royalty; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[maybe_royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+1 + assume {:print "$at(182,2789,2790)"} true; + assume {:print "$track_local(56,5,0):", $t0} $t0 == $t0; + + // $t3 := object::object_address<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:24+38 + assume {:print "$at(182,2897,2935)"} true; + call $t3 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(182,2897,2935)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[obj_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:13+8 + assume {:print "$track_local(56,5,2):", $t3} $t3 == $t3; + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:13+6 + assume {:print "$at(182,2949,2955)"} true; + $t5 := $ResourceExists($1_royalty_Royalty_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:50+8 + assume {:print "$at(182,3027,3035)"} true; +L1: + + // $t6 := get_global($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:27+13 + assume {:print "$at(182,3004,3017)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_royalty_Royalty_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(182,3004,3017)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t1 := opaque begin: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_some'$1_royalty_Royalty'($t6)); + + // $t1 := opaque end: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_none'$1_royalty_Royalty'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + assume {:print "$track_return(56,5,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::get [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+308 +procedure {:timeLimit 80} $1_royalty_get$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_option_Option'$1_royalty_Royalty') +{ + // declare local variables + var $t1: $1_option_Option'$1_royalty_Royalty'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: $1_royalty_Royalty; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+1 + assume {:print "$at(182,2789,2790)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // trace_local[maybe_royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:75:5+1 + assume {:print "$track_local(56,5,0):", $t0} $t0 == $t0; + + // $t3 := object::object_address<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:24+38 + assume {:print "$at(182,2897,2935)"} true; + call $t3 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(182,2897,2935)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[obj_addr]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:76:13+8 + assume {:print "$track_local(56,5,2):", $t3} $t3 == $t3; + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:13+6 + assume {:print "$at(182,2949,2955)"} true; + $t5 := $ResourceExists($1_royalty_Royalty_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:50+8 + assume {:print "$at(182,3027,3035)"} true; +L1: + + // $t6 := get_global($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:27+13 + assume {:print "$at(182,3004,3017)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_royalty_Royalty_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(182,3004,3017)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t1 := opaque begin: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_some'$1_royalty_Royalty'($t6)); + + // $t1 := opaque end: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:78:13+47 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume {:print "$at(182,3067,3081)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t1, $1_option_spec_none'$1_royalty_Royalty'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:80:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:77:9+146 + assume {:print "$at(182,2945,3091)"} true; + assume {:print "$track_return(56,5,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:82:5+1 + assume {:print "$at(182,3096,3097)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::exists_at [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+79 +procedure {:inline 1} $1_royalty_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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+1 + assume {:print "$at(182,2499,2500)"} true; + assume {:print "$track_local(56,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:66:9+6 + assume {:print "$at(182,2551,2557)"} true; + $t1 := $ResourceExists($1_royalty_Royalty_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:66:9+21 + assume {:print "$track_return(56,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:67:5+1 + assume {:print "$at(182,2577,2578)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:67:5+1 + assume {:print "$at(182,2577,2578)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::exists_at [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+79 +procedure {:timeLimit 80} $1_royalty_exists_at$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+1 + assume {:print "$at(182,2499,2500)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:65:5+1 + assume {:print "$track_local(56,3,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:66:9+6 + assume {:print "$at(182,2551,2557)"} true; + $t1 := $ResourceExists($1_royalty_Royalty_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:66:9+21 + assume {:print "$track_return(56,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:67:5+1 + assume {:print "$at(182,2577,2578)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:67:5+1 + assume {:print "$at(182,2577,2578)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::numerator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:88:5+78 +procedure {:timeLimit 80} $1_royalty_numerator$verify(_$t0: $1_royalty_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_royalty_Royalty; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:88:5+1 + assume {:print "$at(182,3191,3192)"} true; + assume $IsValid'$1_royalty_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:88:5+1 + assume {:print "$track_local(56,7,0):", $t0} $t0 == $t0; + + // $t1 := get_field.numerator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:89:9+17 + assume {:print "$at(182,3246,3263)"} true; + $t1 := $t0->$numerator; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:89:9+17 + assume {:print "$track_return(56,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:90:5+1 + assume {:print "$at(182,3268,3269)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:90:5+1 + assume {:print "$at(182,3268,3269)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::denominator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:84:5+82 +procedure {:timeLimit 80} $1_royalty_denominator$verify(_$t0: $1_royalty_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_royalty_Royalty; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:84:5+1 + assume {:print "$at(182,3103,3104)"} true; + assume $IsValid'$1_royalty_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:84:5+1 + assume {:print "$track_local(56,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.denominator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:85:9+19 + assume {:print "$at(182,3160,3179)"} true; + $t1 := $t0->$denominator; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:85:9+19 + assume {:print "$track_return(56,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:86:5+1 + assume {:print "$at(182,3184,3185)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:86:5+1 + assume {:print "$at(182,3184,3185)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::delete [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+182 +procedure {:inline 1} $1_royalty_delete(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_royalty_Royalty; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+1 + assume {:print "$at(182,2584,2585)"} true; + assume {:print "$track_local(56,1,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:17+6 + assume {:print "$at(182,2660,2666)"} true; + $t1 := $ResourceExists($1_royalty_Royalty_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + assume {:print "$at(182,2652,2725)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:57+23 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:57+23 + assume {:print "$at(182,2700,2723)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:40+41 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(182,2683,2724)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + assume {:print "$at(182,2652,2725)"} true; + assume {:print "$track_abort(56,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:28+4 + assume {:print "$at(182,2754,2758)"} true; +L2: + + // $t5 := move_from($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:9+9 + assume {:print "$at(182,2735,2744)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_royalty_Royalty_$memory, $t0); + $1_royalty_Royalty_$memory := $ResourceRemove($1_royalty_Royalty_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(182,2735,2744)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,1):", $t4} $t4 == $t4; + goto L4; + } + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:9+24 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::delete [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+182 +procedure {:timeLimit 80} $1_royalty_delete$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: $1_royalty_Royalty; + var $t0: int; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+1 + assume {:print "$at(182,2584,2585)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:69:5+1 + assume {:print "$track_local(56,1,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:17+6 + assume {:print "$at(182,2660,2666)"} true; + $t1 := $ResourceExists($1_royalty_Royalty_$memory, $t0); + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + assume {:print "$at(182,2652,2725)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:57+23 +L0: + + // $t2 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:57+23 + assume {:print "$at(182,2700,2723)"} true; + $t2 := 1; + assume $IsValid'u64'($t2); + + // $t3 := error::not_found($t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:40+41 + call $t3 := $1_error_not_found($t2); + if ($abort_flag) { + assume {:print "$at(182,2683,2724)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,1):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + assume {:print "$at(182,2652,2725)"} true; + assume {:print "$track_abort(56,1):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + $t4 := $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:70:9+73 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:28+4 + assume {:print "$at(182,2754,2758)"} true; +L2: + + // $t5 := move_from($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:9+9 + assume {:print "$at(182,2735,2744)"} true; + if (!$ResourceExists($1_royalty_Royalty_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_royalty_Royalty_$memory, $t0); + $1_royalty_Royalty_$memory := $ResourceRemove($1_royalty_Royalty_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(182,2735,2744)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(56,1):", $t4} $t4 == $t4; + goto L4; + } + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:71:9+24 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:72:5+1 + assume {:print "$at(182,2765,2766)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun royalty::payee_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:92:5+90 +procedure {:timeLimit 80} $1_royalty_payee_address$verify(_$t0: $1_royalty_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_royalty_Royalty; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:92:5+1 + assume {:print "$at(182,3275,3276)"} true; + assume $IsValid'$1_royalty_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:92:5+1 + assume {:print "$track_local(56,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.payee_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:93:9+21 + assume {:print "$at(182,3338,3359)"} true; + $t1 := $t0->$payee_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:93:9+21 + assume {:print "$track_return(56,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:94:5+1 + assume {:print "$at(182,3364,3365)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:94:5+1 + assume {:print "$at(182,3364,3365)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::generate_mutator_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:61:5+101 +procedure {:inline 1} $1_royalty_generate_mutator_ref(_$t0: $1_object_ExtendRef) returns ($ret0: $1_royalty_MutatorRef) +{ + // declare local variables + var $t1: $1_royalty_MutatorRef; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'$1_royalty_MutatorRef': $1_royalty_MutatorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:61:5+1 + assume {:print "$at(182,2392,2393)"} true; + assume {:print "$track_local(56,4,0):", $t0} $t0 == $t0; + + // $t1 := pack royalty::MutatorRef($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:62:9+25 + assume {:print "$at(182,2462,2487)"} true; + $t1 := $1_royalty_MutatorRef($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:62:9+25 + assume {:print "$track_return(56,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:63:5+1 + assume {:print "$at(182,2492,2493)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:63:5+1 + assume {:print "$at(182,2492,2493)"} true; + $ret0 := $t1; + return; + +} + +// fun royalty::generate_mutator_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:61:5+101 +procedure {:timeLimit 80} $1_royalty_generate_mutator_ref$verify(_$t0: $1_object_ExtendRef) returns ($ret0: $1_royalty_MutatorRef) +{ + // declare local variables + var $t1: $1_royalty_MutatorRef; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'$1_royalty_MutatorRef': $1_royalty_MutatorRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:61:5+1 + assume {:print "$at(182,2392,2393)"} true; + assume $IsValid'$1_object_ExtendRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:61:5+1 + assume {:print "$track_local(56,4,0):", $t0} $t0 == $t0; + + // $t1 := pack royalty::MutatorRef($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:62:9+25 + assume {:print "$at(182,2462,2487)"} true; + $t1 := $1_royalty_MutatorRef($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:62:9+25 + assume {:print "$track_return(56,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:63:5+1 + assume {:print "$at(182,2492,2493)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/royalty.move:63:5+1 + assume {:print "$at(182,2492,2493)"} true; + $ret0 := $t1; + return; + +} + +// struct collection::ConcurrentSupply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:127:5+159 +datatype $1_collection_ConcurrentSupply { + $1_collection_ConcurrentSupply($current_supply: $1_aggregator_v2_Aggregator'u64', $total_minted: $1_aggregator_v2_Aggregator'u64') +} +function {:inline} $Update'$1_collection_ConcurrentSupply'_current_supply(s: $1_collection_ConcurrentSupply, x: $1_aggregator_v2_Aggregator'u64'): $1_collection_ConcurrentSupply { + $1_collection_ConcurrentSupply(x, s->$total_minted) +} +function {:inline} $Update'$1_collection_ConcurrentSupply'_total_minted(s: $1_collection_ConcurrentSupply, x: $1_aggregator_v2_Aggregator'u64'): $1_collection_ConcurrentSupply { + $1_collection_ConcurrentSupply(s->$current_supply, x) +} +function $IsValid'$1_collection_ConcurrentSupply'(s: $1_collection_ConcurrentSupply): bool { + $IsValid'$1_aggregator_v2_Aggregator'u64''(s->$current_supply) + && $IsValid'$1_aggregator_v2_Aggregator'u64''(s->$total_minted) +} +function {:inline} $IsEqual'$1_collection_ConcurrentSupply'(s1: $1_collection_ConcurrentSupply, s2: $1_collection_ConcurrentSupply): bool { + s1 == s2 +} +var $1_collection_ConcurrentSupply_$memory: $Memory $1_collection_ConcurrentSupply; + +// struct collection::MutatorRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:79:5+64 +datatype $1_collection_MutatorRef { + $1_collection_MutatorRef($self: int) +} +function {:inline} $Update'$1_collection_MutatorRef'_self(s: $1_collection_MutatorRef, x: int): $1_collection_MutatorRef { + $1_collection_MutatorRef(x) +} +function $IsValid'$1_collection_MutatorRef'(s: $1_collection_MutatorRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_collection_MutatorRef'(s1: $1_collection_MutatorRef, s2: $1_collection_MutatorRef): bool { + s1 == s2 +} + +// struct collection::Burn at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:144:5+141 +datatype $1_collection_Burn { + $1_collection_Burn($collection: int, $index: int, $token: int, $previous_owner: int) +} +function {:inline} $Update'$1_collection_Burn'_collection(s: $1_collection_Burn, x: int): $1_collection_Burn { + $1_collection_Burn(x, s->$index, s->$token, s->$previous_owner) +} +function {:inline} $Update'$1_collection_Burn'_index(s: $1_collection_Burn, x: int): $1_collection_Burn { + $1_collection_Burn(s->$collection, x, s->$token, s->$previous_owner) +} +function {:inline} $Update'$1_collection_Burn'_token(s: $1_collection_Burn, x: int): $1_collection_Burn { + $1_collection_Burn(s->$collection, s->$index, x, s->$previous_owner) +} +function {:inline} $Update'$1_collection_Burn'_previous_owner(s: $1_collection_Burn, x: int): $1_collection_Burn { + $1_collection_Burn(s->$collection, s->$index, s->$token, x) +} +function $IsValid'$1_collection_Burn'(s: $1_collection_Burn): bool { + $IsValid'address'(s->$collection) + && $IsValid'u64'(s->$index) + && $IsValid'address'(s->$token) + && $IsValid'address'(s->$previous_owner) +} +function {:inline} $IsEqual'$1_collection_Burn'(s1: $1_collection_Burn, s2: $1_collection_Burn): bool { + s1 == s2 +} + +// struct collection::BurnEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:133:5+84 +datatype $1_collection_BurnEvent { + $1_collection_BurnEvent($index: int, $token: int) +} +function {:inline} $Update'$1_collection_BurnEvent'_index(s: $1_collection_BurnEvent, x: int): $1_collection_BurnEvent { + $1_collection_BurnEvent(x, s->$token) +} +function {:inline} $Update'$1_collection_BurnEvent'_token(s: $1_collection_BurnEvent, x: int): $1_collection_BurnEvent { + $1_collection_BurnEvent(s->$index, x) +} +function $IsValid'$1_collection_BurnEvent'(s: $1_collection_BurnEvent): bool { + $IsValid'u64'(s->$index) + && $IsValid'address'(s->$token) +} +function {:inline} $IsEqual'$1_collection_BurnEvent'(s1: $1_collection_BurnEvent, s2: $1_collection_BurnEvent): bool { + s1 == s2 +} + +// struct collection::Collection at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:64:5+576 +datatype $1_collection_Collection { + $1_collection_Collection($creator: int, $description: $1_string_String, $name: $1_string_String, $uri: $1_string_String, $mutation_events: $1_event_EventHandle'$1_collection_MutationEvent') +} +function {:inline} $Update'$1_collection_Collection'_creator(s: $1_collection_Collection, x: int): $1_collection_Collection { + $1_collection_Collection(x, s->$description, s->$name, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_collection_Collection'_description(s: $1_collection_Collection, x: $1_string_String): $1_collection_Collection { + $1_collection_Collection(s->$creator, x, s->$name, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_collection_Collection'_name(s: $1_collection_Collection, x: $1_string_String): $1_collection_Collection { + $1_collection_Collection(s->$creator, s->$description, x, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_collection_Collection'_uri(s: $1_collection_Collection, x: $1_string_String): $1_collection_Collection { + $1_collection_Collection(s->$creator, s->$description, s->$name, x, s->$mutation_events) +} +function {:inline} $Update'$1_collection_Collection'_mutation_events(s: $1_collection_Collection, x: $1_event_EventHandle'$1_collection_MutationEvent'): $1_collection_Collection { + $1_collection_Collection(s->$creator, s->$description, s->$name, s->$uri, x) +} +function $IsValid'$1_collection_Collection'(s: $1_collection_Collection): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'$1_event_EventHandle'$1_collection_MutationEvent''(s->$mutation_events) +} +function {:inline} $IsEqual'$1_collection_Collection'(s1: $1_collection_Collection, s2: $1_collection_Collection): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'$1_event_EventHandle'$1_collection_MutationEvent''(s1->$mutation_events, s2->$mutation_events)} +var $1_collection_Collection_$memory: $Memory $1_collection_Collection; + +// struct collection::FixedSupply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:102:5+344 +datatype $1_collection_FixedSupply { + $1_collection_FixedSupply($current_supply: int, $max_supply: int, $total_minted: int, $burn_events: $1_event_EventHandle'$1_collection_BurnEvent', $mint_events: $1_event_EventHandle'$1_collection_MintEvent') +} +function {:inline} $Update'$1_collection_FixedSupply'_current_supply(s: $1_collection_FixedSupply, x: int): $1_collection_FixedSupply { + $1_collection_FixedSupply(x, s->$max_supply, s->$total_minted, s->$burn_events, s->$mint_events) +} +function {:inline} $Update'$1_collection_FixedSupply'_max_supply(s: $1_collection_FixedSupply, x: int): $1_collection_FixedSupply { + $1_collection_FixedSupply(s->$current_supply, x, s->$total_minted, s->$burn_events, s->$mint_events) +} +function {:inline} $Update'$1_collection_FixedSupply'_total_minted(s: $1_collection_FixedSupply, x: int): $1_collection_FixedSupply { + $1_collection_FixedSupply(s->$current_supply, s->$max_supply, x, s->$burn_events, s->$mint_events) +} +function {:inline} $Update'$1_collection_FixedSupply'_burn_events(s: $1_collection_FixedSupply, x: $1_event_EventHandle'$1_collection_BurnEvent'): $1_collection_FixedSupply { + $1_collection_FixedSupply(s->$current_supply, s->$max_supply, s->$total_minted, x, s->$mint_events) +} +function {:inline} $Update'$1_collection_FixedSupply'_mint_events(s: $1_collection_FixedSupply, x: $1_event_EventHandle'$1_collection_MintEvent'): $1_collection_FixedSupply { + $1_collection_FixedSupply(s->$current_supply, s->$max_supply, s->$total_minted, s->$burn_events, x) +} +function $IsValid'$1_collection_FixedSupply'(s: $1_collection_FixedSupply): bool { + $IsValid'u64'(s->$current_supply) + && $IsValid'u64'(s->$max_supply) + && $IsValid'u64'(s->$total_minted) + && $IsValid'$1_event_EventHandle'$1_collection_BurnEvent''(s->$burn_events) + && $IsValid'$1_event_EventHandle'$1_collection_MintEvent''(s->$mint_events) +} +function {:inline} $IsEqual'$1_collection_FixedSupply'(s1: $1_collection_FixedSupply, s2: $1_collection_FixedSupply): bool { + s1 == s2 +} +var $1_collection_FixedSupply_$memory: $Memory $1_collection_FixedSupply; + +// struct collection::Mint at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:152:5+128 +datatype $1_collection_Mint { + $1_collection_Mint($collection: int, $index: $1_aggregator_v2_AggregatorSnapshot'u64', $token: int) +} +function {:inline} $Update'$1_collection_Mint'_collection(s: $1_collection_Mint, x: int): $1_collection_Mint { + $1_collection_Mint(x, s->$index, s->$token) +} +function {:inline} $Update'$1_collection_Mint'_index(s: $1_collection_Mint, x: $1_aggregator_v2_AggregatorSnapshot'u64'): $1_collection_Mint { + $1_collection_Mint(s->$collection, x, s->$token) +} +function {:inline} $Update'$1_collection_Mint'_token(s: $1_collection_Mint, x: int): $1_collection_Mint { + $1_collection_Mint(s->$collection, s->$index, x) +} +function $IsValid'$1_collection_Mint'(s: $1_collection_Mint): bool { + $IsValid'address'(s->$collection) + && $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''(s->$index) + && $IsValid'address'(s->$token) +} +function {:inline} $IsEqual'$1_collection_Mint'(s1: $1_collection_Mint, s2: $1_collection_Mint): bool { + s1 == s2 +} + +// struct collection::MintEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:138:5+84 +datatype $1_collection_MintEvent { + $1_collection_MintEvent($index: int, $token: int) +} +function {:inline} $Update'$1_collection_MintEvent'_index(s: $1_collection_MintEvent, x: int): $1_collection_MintEvent { + $1_collection_MintEvent(x, s->$token) +} +function {:inline} $Update'$1_collection_MintEvent'_token(s: $1_collection_MintEvent, x: int): $1_collection_MintEvent { + $1_collection_MintEvent(s->$index, x) +} +function $IsValid'$1_collection_MintEvent'(s: $1_collection_MintEvent): bool { + $IsValid'u64'(s->$index) + && $IsValid'address'(s->$token) +} +function {:inline} $IsEqual'$1_collection_MintEvent'(s1: $1_collection_MintEvent, s2: $1_collection_MintEvent): bool { + s1 == s2 +} + +// struct collection::Mutation at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:92:5+169 +datatype $1_collection_Mutation { + $1_collection_Mutation($mutated_field_name: $1_string_String, $collection: $1_object_Object'$1_collection_Collection', $old_value: $1_string_String, $new_value: $1_string_String) +} +function {:inline} $Update'$1_collection_Mutation'_mutated_field_name(s: $1_collection_Mutation, x: $1_string_String): $1_collection_Mutation { + $1_collection_Mutation(x, s->$collection, s->$old_value, s->$new_value) +} +function {:inline} $Update'$1_collection_Mutation'_collection(s: $1_collection_Mutation, x: $1_object_Object'$1_collection_Collection'): $1_collection_Mutation { + $1_collection_Mutation(s->$mutated_field_name, x, s->$old_value, s->$new_value) +} +function {:inline} $Update'$1_collection_Mutation'_old_value(s: $1_collection_Mutation, x: $1_string_String): $1_collection_Mutation { + $1_collection_Mutation(s->$mutated_field_name, s->$collection, x, s->$new_value) +} +function {:inline} $Update'$1_collection_Mutation'_new_value(s: $1_collection_Mutation, x: $1_string_String): $1_collection_Mutation { + $1_collection_Mutation(s->$mutated_field_name, s->$collection, s->$old_value, x) +} +function $IsValid'$1_collection_Mutation'(s: $1_collection_Mutation): bool { + $IsValid'$1_string_String'(s->$mutated_field_name) + && $IsValid'$1_object_Object'$1_collection_Collection''(s->$collection) + && $IsValid'$1_string_String'(s->$old_value) + && $IsValid'$1_string_String'(s->$new_value) +} +function {:inline} $IsEqual'$1_collection_Mutation'(s1: $1_collection_Mutation, s2: $1_collection_Mutation): bool { + $IsEqual'$1_string_String'(s1->$mutated_field_name, s2->$mutated_field_name) + && $IsEqual'$1_object_Object'$1_collection_Collection''(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$old_value, s2->$old_value) + && $IsEqual'$1_string_String'(s1->$new_value, s2->$new_value)} + +// struct collection::MutationEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:85:5+80 +datatype $1_collection_MutationEvent { + $1_collection_MutationEvent($mutated_field_name: $1_string_String) +} +function {:inline} $Update'$1_collection_MutationEvent'_mutated_field_name(s: $1_collection_MutationEvent, x: $1_string_String): $1_collection_MutationEvent { + $1_collection_MutationEvent(x) +} +function $IsValid'$1_collection_MutationEvent'(s: $1_collection_MutationEvent): bool { + $IsValid'$1_string_String'(s->$mutated_field_name) +} +function {:inline} $IsEqual'$1_collection_MutationEvent'(s1: $1_collection_MutationEvent, s2: $1_collection_MutationEvent): bool { + $IsEqual'$1_string_String'(s1->$mutated_field_name, s2->$mutated_field_name)} + +// struct collection::SetMaxSupply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:177:5+141 +datatype $1_collection_SetMaxSupply { + $1_collection_SetMaxSupply($collection: $1_object_Object'$1_collection_Collection', $old_max_supply: int, $new_max_supply: int) +} +function {:inline} $Update'$1_collection_SetMaxSupply'_collection(s: $1_collection_SetMaxSupply, x: $1_object_Object'$1_collection_Collection'): $1_collection_SetMaxSupply { + $1_collection_SetMaxSupply(x, s->$old_max_supply, s->$new_max_supply) +} +function {:inline} $Update'$1_collection_SetMaxSupply'_old_max_supply(s: $1_collection_SetMaxSupply, x: int): $1_collection_SetMaxSupply { + $1_collection_SetMaxSupply(s->$collection, x, s->$new_max_supply) +} +function {:inline} $Update'$1_collection_SetMaxSupply'_new_max_supply(s: $1_collection_SetMaxSupply, x: int): $1_collection_SetMaxSupply { + $1_collection_SetMaxSupply(s->$collection, s->$old_max_supply, x) +} +function $IsValid'$1_collection_SetMaxSupply'(s: $1_collection_SetMaxSupply): bool { + $IsValid'$1_object_Object'$1_collection_Collection''(s->$collection) + && $IsValid'u64'(s->$old_max_supply) + && $IsValid'u64'(s->$new_max_supply) +} +function {:inline} $IsEqual'$1_collection_SetMaxSupply'(s1: $1_collection_SetMaxSupply, s2: $1_collection_SetMaxSupply): bool { + s1 == s2 +} + +// struct collection::UnlimitedSupply at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:115:5+283 +datatype $1_collection_UnlimitedSupply { + $1_collection_UnlimitedSupply($current_supply: int, $total_minted: int, $burn_events: $1_event_EventHandle'$1_collection_BurnEvent', $mint_events: $1_event_EventHandle'$1_collection_MintEvent') +} +function {:inline} $Update'$1_collection_UnlimitedSupply'_current_supply(s: $1_collection_UnlimitedSupply, x: int): $1_collection_UnlimitedSupply { + $1_collection_UnlimitedSupply(x, s->$total_minted, s->$burn_events, s->$mint_events) +} +function {:inline} $Update'$1_collection_UnlimitedSupply'_total_minted(s: $1_collection_UnlimitedSupply, x: int): $1_collection_UnlimitedSupply { + $1_collection_UnlimitedSupply(s->$current_supply, x, s->$burn_events, s->$mint_events) +} +function {:inline} $Update'$1_collection_UnlimitedSupply'_burn_events(s: $1_collection_UnlimitedSupply, x: $1_event_EventHandle'$1_collection_BurnEvent'): $1_collection_UnlimitedSupply { + $1_collection_UnlimitedSupply(s->$current_supply, s->$total_minted, x, s->$mint_events) +} +function {:inline} $Update'$1_collection_UnlimitedSupply'_mint_events(s: $1_collection_UnlimitedSupply, x: $1_event_EventHandle'$1_collection_MintEvent'): $1_collection_UnlimitedSupply { + $1_collection_UnlimitedSupply(s->$current_supply, s->$total_minted, s->$burn_events, x) +} +function $IsValid'$1_collection_UnlimitedSupply'(s: $1_collection_UnlimitedSupply): bool { + $IsValid'u64'(s->$current_supply) + && $IsValid'u64'(s->$total_minted) + && $IsValid'$1_event_EventHandle'$1_collection_BurnEvent''(s->$burn_events) + && $IsValid'$1_event_EventHandle'$1_collection_MintEvent''(s->$mint_events) +} +function {:inline} $IsEqual'$1_collection_UnlimitedSupply'(s1: $1_collection_UnlimitedSupply, s2: $1_collection_UnlimitedSupply): bool { + s1 == s2 +} +var $1_collection_UnlimitedSupply_$memory: $Memory $1_collection_UnlimitedSupply; + +// fun collection::count [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+910 +procedure {:timeLimit 80} $1_collection_count$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_option_Option'u64') +{ + // 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: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: $Mutation ($1_collection_ConcurrentSupply); + var $t12: $1_aggregator_v2_Aggregator'u64'; + var $t13: int; + var $t14: bool; + var $t15: bool; + var $t16: $Mutation ($1_collection_FixedSupply); + var $t17: int; + var $t18: bool; + var $t19: $Mutation ($1_collection_UnlimitedSupply); + var $t20: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume {:print "$at(179,22340,22341)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:581:5+1 + assume {:print "$track_local(57,0,0):", $t0} $t0 == $t0; + + // $t5 := object::object_address<#0>($t0) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:584:34+35 + assume {:print "$at(179,22506,22541)"} true; + call $t5 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,22506,22541)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + goto L13; + } + + // trace_local[collection_address]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:584:13+18 + assume {:print "$track_local(57,0,4):", $t5} $t5 == $t5; + + // $t7 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t7 := $ResourceExists($1_collection_Collection_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := error::not_found($t8) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t9 := $1_error_not_found($t8); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + goto L13; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,0):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t6 := $t9; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:38+18 + assume {:print "$at(179,22634,22652)"} true; +L2: + + // $t10 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:13+6 + assume {:print "$at(179,22609,22615)"} true; + $t10 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t5); + + // if ($t10) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:9+639 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:588:62+18 + assume {:print "$at(179,22718,22736)"} true; +L4: + + // $t11 := borrow_global($t5) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:588:26+17 + assume {:print "$at(179,22682,22699)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(179,22682,22699)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + goto L13; + } + + // $t12 := get_field.current_supply($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:46+22 + assume {:print "$at(179,22784,22806)"} true; + $t12 := $Dereference($t11)->$current_supply; + + // $t13 := opaque begin: aggregator_v2::read($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + havoc $t14; + + // if ($t14) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + if ($t14) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 +L15: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + assume {:print "$at(179,22764,22807)"} true; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 +L14: + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + assume {:print "$at(179,22764,22807)"} true; + assume $IsValid'u64'($t13); + + // $t13 := opaque end: aggregator_v2::read($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:26+43 + + // $t3 := opaque begin: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:13+57 + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:13+57 + assume ($IsValid'$1_option_Option'u64''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>($t3, option::spec_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:13+57 + assume $IsEqual'$1_option_Option'u64''($t3, $1_option_spec_some'u64'($t13)); + + // $t3 := opaque end: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:589:13+57 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:9+639 + assume {:print "$at(179,22605,23244)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:40+18 + assume {:print "$at(179,22848,22866)"} true; +L3: + + // $t15 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:20+6 + assume {:print "$at(179,22828,22834)"} true; + $t15 := $ResourceExists($1_collection_FixedSupply_$memory, $t5); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:16+420 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:591:57+18 + assume {:print "$at(179,22927,22945)"} true; +L7: + + // $t16 := borrow_global($t5) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:591:26+17 + assume {:print "$at(179,22896,22913)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(179,22896,22913)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + goto L13; + } + + // $t17 := get_field.current_supply($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:592:26+21 + assume {:print "$at(179,22973,22994)"} true; + $t17 := $Dereference($t16)->$current_supply; + + // $t2 := opaque begin: option::some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:592:13+35 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:592:13+35 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:592:13+35 + assume $IsEqual'$1_option_Option'u64''($t2, $1_option_spec_some'u64'($t17)); + + // $t2 := opaque end: option::some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:592:13+35 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:16+420 + assume {:print "$at(179,22824,23244)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:593:44+18 + assume {:print "$at(179,23039,23057)"} true; +L6: + + // $t18 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:593:20+6 + assume {:print "$at(179,23015,23021)"} true; + $t18 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t5); + + // if ($t18) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:593:16+233 + if ($t18) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:594:61+18 + assume {:print "$at(179,23122,23140)"} true; +L10: + + // $t19 := borrow_global($t5) on_abort goto L13 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:594:26+17 + assume {:print "$at(179,23087,23104)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t5), EmptyVec(), $ResourceValue($1_collection_UnlimitedSupply_$memory, $t5)); + } + if ($abort_flag) { + assume {:print "$at(179,23087,23104)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(57,0):", $t6} $t6 == $t6; + goto L13; + } + + // $t20 := get_field.current_supply($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:595:26+21 + assume {:print "$at(179,23168,23189)"} true; + $t20 := $Dereference($t19)->$current_supply; + + // $t1 := opaque begin: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:595:13+35 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:595:13+35 + assume ($IsValid'$1_option_Option'u64''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:595:13+35 + assume $IsEqual'$1_option_Option'u64''($t1, $1_option_spec_some'u64'($t20)); + + // $t1 := opaque end: option::some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:595:13+35 + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:593:16+233 + assume {:print "$at(179,23011,23244)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:597:13+14 + assume {:print "$at(179,23220,23234)"} true; +L9: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:597:13+14 + assume {:print "$at(179,23220,23234)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:597:13+14 + assume ($IsValid'$1_option_Option'u64''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:597:13+14 + assume $IsEqual'$1_option_Option'u64''($t1, $1_option_spec_none'u64'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:597:13+14 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:593:16+233 + assume {:print "$at(179,23011,23244)"} true; +L11: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:16+420 + assume {:print "$at(179,22824,23244)"} true; + $t2 := $t1; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:590:16+420 +L8: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:9+639 + assume {:print "$at(179,22605,23244)"} true; + $t3 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:9+639 +L5: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:587:9+639 + assume {:print "$at(179,22605,23244)"} true; + assume {:print "$track_return(57,0,0):", $t3} $t3 == $t3; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:599:5+1 + assume {:print "$at(179,23249,23250)"} true; +L12: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:599:5+1 + assume {:print "$at(179,23249,23250)"} true; + $ret0 := $t3; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:599:5+1 +L13: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:599:5+1 + assume {:print "$at(179,23249,23250)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun collection::creator [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+122 +procedure {:inline 1} $1_collection_creator'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: int; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+1 + assume {:print "$at(179,23268,23269)"} true; + assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#105]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,8,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,8):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$at(179,23357,23384)"} true; + $t8 := $t7->$creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$track_return(57,8,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::creator<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+122 +procedure {:inline 1} $1_collection_creator'#0'(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+1 + assume {:print "$at(179,23268,23269)"} true; + assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#105]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,8,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,8):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$at(179,23357,23384)"} true; + $t8 := $t7->$creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$track_return(57,8,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::creator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+122 +procedure {:timeLimit 80} $1_collection_creator$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+1 + assume {:print "$at(179,23268,23269)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:602:5+1 + assume {:print "$track_local(57,8,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#105]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,8,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,8):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,8):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$at(179,23357,23384)"} true; + $t8 := $t7->$creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:603:9+27 + assume {:print "$track_return(57,8,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:604:5+1 + assume {:print "$at(179,23389,23390)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+115 +procedure {:inline 1} $1_collection_name'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: $1_string_String; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+1 + assume {:print "$at(179,23555,23556)"} true; + assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#111]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,13,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,13):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:613:9+24 + assume {:print "$at(179,23640,23664)"} true; + $t8 := $t7->$name; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:613:9+24 + assume {:print "$track_return(57,13,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+115 +procedure {:timeLimit 80} $1_collection_name$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+1 + assume {:print "$at(179,23555,23556)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:612:5+1 + assume {:print "$track_local(57,13,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#111]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,13,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,13):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,13):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:613:9+24 + assume {:print "$at(179,23640,23664)"} true; + $t8 := $t7->$name; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:613:9+24 + assume {:print "$track_return(57,13,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:614:5+1 + assume {:print "$at(179,23669,23670)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::upgrade_to_concurrent [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+2027 +procedure {:timeLimit 80} $1_collection_upgrade_to_concurrent$verify(_$t0: $1_object_ExtendRef) returns () +{ + // declare local variables + var $t1: $1_collection_ConcurrentSupply; + var $t2: int; + var $t3: int; + var $t4: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t5: $1_event_EventHandle'$1_collection_MintEvent'; + var $t6: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t7: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t8: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $signer; + var $t15: $1_event_EventHandle'$1_collection_MintEvent'; + var $t16: $1_event_EventHandle'$1_collection_MintEvent'; + var $t17: $1_event_EventHandle'$1_collection_MintEvent'; + var $t18: $1_collection_ConcurrentSupply; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $signer; + var $t25: bool; + var $t26: $1_collection_FixedSupply; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t31: $1_event_EventHandle'$1_collection_MintEvent'; + var $t32: $1_aggregator_v2_Aggregator'u64'; + var $t33: bool; + var $t34: $1_aggregator_v2_Aggregator'u64'; + var $t35: bool; + var $t36: $1_collection_ConcurrentSupply; + var $t37: bool; + var $t38: int; + var $t39: int; + var $t40: $1_collection_UnlimitedSupply; + var $t41: int; + var $t42: int; + var $t43: $1_event_EventHandle'$1_collection_BurnEvent'; + var $t44: $1_event_EventHandle'$1_collection_MintEvent'; + var $t45: $1_aggregator_v2_Aggregator'u64'; + var $t46: bool; + var $t47: $1_aggregator_v2_Aggregator'u64'; + var $t48: bool; + var $t49: $1_collection_ConcurrentSupply; + var $t50: $Mutation ($1_collection_ConcurrentSupply); + var $t51: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t52: $Mutation ($1_collection_ConcurrentSupply); + var $t53: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t54: $1_collection_ConcurrentSupply; + var $t0: $1_object_ExtendRef; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_event_EventHandle'$1_collection_BurnEvent'': $1_event_EventHandle'$1_collection_BurnEvent'; + var $temp_0'$1_event_EventHandle'$1_collection_MintEvent'': $1_event_EventHandle'$1_collection_MintEvent'; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+1 + assume {:print "$at(179,19632,19633)"} true; + assume $IsValid'$1_object_ExtendRef'($t0); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:512:5+1 + assume {:print "$track_local(57,18,0):", $t0} $t0 == $t0; + + // $t22 := object::address_from_extend_ref($t0) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:515:39+36 + assume {:print "$at(179,19775,19811)"} true; + call $t22 := $1_object_address_from_extend_ref($t0); + if ($abort_flag) { + assume {:print "$at(179,19775,19811)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[metadata_object_address]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:515:13+23 + assume {:print "$track_local(57,18,13):", $t22} $t22 == $t22; + + // $t24 := object::generate_signer_for_extending($t0) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:516:38+42 + assume {:print "$at(179,19850,19892)"} true; + call $t24 := $1_object_generate_signer_for_extending($t0); + if ($abort_flag) { + assume {:print "$at(179,19850,19892)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // trace_local[metadata_object_signer]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:516:13+22 + assume {:print "$track_local(57,18,14):", $t24} $t24 == $t24; + + // $t25 := exists($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:84+6 + assume {:print "$at(179,19978,19984)"} true; + $t25 := $ResourceExists($1_collection_FixedSupply_$memory, $t22); + + // if ($t25) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:527:40+23 + assume {:print "$at(179,20265,20288)"} true; +L1: + + // $t26 := move_from($t22) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:527:17+9 + assume {:print "$at(179,20242,20251)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t22)) { + call $ExecFailureAbort(); + } else { + $t26 := $ResourceValue($1_collection_FixedSupply_$memory, $t22); + $1_collection_FixedSupply_$memory := $ResourceRemove($1_collection_FixedSupply_$memory, $t22); + } + if ($abort_flag) { + assume {:print "$at(179,20242,20251)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // ($t27, $t28, $t29, $t30, $t31) := unpack collection::FixedSupply($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:521:17+175 + assume {:print "$at(179,20064,20239)"} true; + $t27 := $t26->$current_supply; + $t28 := $t26->$max_supply; + $t29 := $t26->$total_minted; + $t30 := $t26->$burn_events; + $t31 := $t26->$mint_events; + + // trace_local[mint_events]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:526:17+11 + assume {:print "$at(179,20213,20224)"} true; + assume {:print "$track_local(57,18,15):", $t31} $t31 == $t31; + + // trace_local[burn_events]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:525:17+11 + assume {:print "$at(179,20184,20195)"} true; + assume {:print "$track_local(57,18,6):", $t30} $t30 == $t30; + + // trace_local[total_minted]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:524:17+12 + assume {:print "$at(179,20154,20166)"} true; + assume {:print "$track_local(57,18,19):", $t29} $t29 == $t29; + + // trace_local[max_supply]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:523:17+10 + assume {:print "$at(179,20126,20136)"} true; + assume {:print "$track_local(57,18,12):", $t28} $t28 == $t28; + + // trace_local[current_supply]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:522:17+14 + assume {:print "$at(179,20094,20108)"} true; + assume {:print "$track_local(57,18,9):", $t27} $t27 == $t27; + + // $t32 := opaque begin: aggregator_v2::create_aggregator($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + assume {:print "$at(179,20368,20412)"} true; + + // $t33 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + havoc $t33; + + // if ($t33) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + if ($t33) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 +L9: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + assume {:print "$at(179,20368,20412)"} true; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 +L8: + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + assume {:print "$at(179,20368,20412)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t32); + + // $t32 := opaque end: aggregator_v2::create_aggregator($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:530:33+44 + + // $t34 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + assume {:print "$at(179,20444,20488)"} true; + + // $t35 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + havoc $t35; + + // if ($t35) goto L11 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + if ($t35) { goto L11; } else { goto L10; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 +L11: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + assume {:print "$at(179,20444,20488)"} true; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + goto L7; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 +L10: + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + assume {:print "$at(179,20444,20488)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t34); + + // $t34 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:531:31+44 + + // $t36 := pack collection::ConcurrentSupply($t32, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:529:26+186 + assume {:print "$at(179,20317,20503)"} true; + $t36 := $1_collection_ConcurrentSupply($t32, $t34); + + // $t5 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + assume {:print "$at(179,19974,21339)"} true; + $t5 := $t31; + + // $t4 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t4 := $t30; + + // $t3 := $t29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t3 := $t29; + + // $t2 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t2 := $t27; + + // $t1 := $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t1 := $t36; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:534:44+23 + assume {:print "$at(179,20625,20648)"} true; +L0: + + // $t37 := exists($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:534:20+6 + assume {:print "$at(179,20601,20607)"} true; + $t37 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t22); + + // if ($t37) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:534:16+742 + if ($t37) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:534:16+742 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:534:16+742 + assume {:print "$at(179,20597,21339)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:43+19 + assume {:print "$at(179,21309,21328)"} true; +L3: + + // $t38 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:43+19 + assume {:print "$at(179,21309,21328)"} true; + $t38 := 8; + assume $IsValid'u64'($t38); + + // $t39 := error::invalid_argument($t38) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:19+44 + call $t39 := $1_error_invalid_argument($t38); + if ($abort_flag) { + assume {:print "$at(179,21285,21329)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // trace_abort($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:13+50 + assume {:print "$at(179,21279,21329)"} true; + assume {:print "$track_abort(57,18):", $t39} $t39 == $t39; + + // $t23 := move($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:13+50 + $t23 := $t39; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:549:13+50 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:540:44+23 + assume {:print "$at(179,20850,20873)"} true; +L5: + + // $t40 := move_from($t22) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:540:17+9 + assume {:print "$at(179,20823,20832)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t22)) { + call $ExecFailureAbort(); + } else { + $t40 := $ResourceValue($1_collection_UnlimitedSupply_$memory, $t22); + $1_collection_UnlimitedSupply_$memory := $ResourceRemove($1_collection_UnlimitedSupply_$memory, $t22); + } + if ($abort_flag) { + assume {:print "$at(179,20823,20832)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // ($t41, $t42, $t43, $t44) := unpack collection::UnlimitedSupply($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:535:17+151 + assume {:print "$at(179,20669,20820)"} true; + $t41 := $t40->$current_supply; + $t42 := $t40->$total_minted; + $t43 := $t40->$burn_events; + $t44 := $t40->$mint_events; + + // trace_local[mint_events#3]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:539:17+11 + assume {:print "$at(179,20794,20805)"} true; + assume {:print "$track_local(57,18,17):", $t44} $t44 == $t44; + + // trace_local[burn_events#1]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:538:17+11 + assume {:print "$at(179,20765,20776)"} true; + assume {:print "$track_local(57,18,7):", $t43} $t43 == $t43; + + // trace_local[total_minted#4]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:537:17+12 + assume {:print "$at(179,20735,20747)"} true; + assume {:print "$track_local(57,18,21):", $t42} $t42 == $t42; + + // trace_local[current_supply#2]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:536:17+14 + assume {:print "$at(179,20703,20717)"} true; + assume {:print "$track_local(57,18,11):", $t41} $t41 == $t41; + + // $t45 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + assume {:print "$at(179,20953,20997)"} true; + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + havoc $t46; + + // if ($t46) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + if ($t46) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 +L13: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + assume {:print "$at(179,20953,20997)"} true; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + goto L7; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 +L12: + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + assume {:print "$at(179,20953,20997)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t45); + + // $t45 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:543:33+44 + + // $t47 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + assume {:print "$at(179,21029,21073)"} true; + + // $t48 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + havoc $t48; + + // if ($t48) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + if ($t48) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 +L15: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + assume {:print "$at(179,21029,21073)"} true; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + goto L7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 +L14: + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + assume {:print "$at(179,21029,21073)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t47); + + // $t47 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:544:31+44 + + // $t49 := pack collection::ConcurrentSupply($t45, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:542:26+186 + assume {:print "$at(179,20902,21088)"} true; + $t49 := $1_collection_ConcurrentSupply($t45, $t47); + + // $t5 := $t44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + assume {:print "$at(179,19974,21339)"} true; + $t5 := $t44; + + // $t4 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t4 := $t43; + + // $t3 := $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t3 := $t42; + + // $t2 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t2 := $t41; + + // $t1 := $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 + $t1 := $t49; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:80+1365 +L2: + + // trace_local[mint_events#20]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:65+11 + assume {:print "$at(179,19959,19970)"} true; + assume {:print "$track_local(57,18,16):", $t5} $t5 == $t5; + + // trace_local[burn_events#19]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:52+11 + assume {:print "$track_local(57,18,8):", $t4} $t4 == $t4; + + // trace_local[total_minted#18]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:38+12 + assume {:print "$track_local(57,18,20):", $t3} $t3 == $t3; + + // trace_local[current_supply#17]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:22+14 + assume {:print "$track_local(57,18,10):", $t2} $t2 == $t2; + + // $t18 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:14+6 + $t18 := $t1; + + // trace_local[supply#16]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:518:14+6 + assume {:print "$track_local(57,18,18):", $t18} $t18 == $t18; + + // $t50 := borrow_local($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:33+6 + assume {:print "$at(179,21407,21413)"} true; + $t50 := $Mutation($Local(18), EmptyVec(), $t18); + + // $t51 := borrow_field.current_supply($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:28+26 + $t51 := $ChildMutation($t50, 0, $Dereference($t50)->$current_supply); + + // aggregator_v2::add($t51, $t2) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:9+62 + call $t51 := $1_aggregator_v2_add'u64'($t51, $t2); + if ($abort_flag) { + assume {:print "$at(179,21383,21445)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // write_back[Reference($t50).current_supply (aggregator_v2::Aggregator)]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:9+62 + $t50 := $UpdateMutation($t50, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t50), $Dereference($t51))); + + // write_back[LocalRoot($t18)@]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:9+62 + $t18 := $Dereference($t50); + + // trace_local[supply#16]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:553:9+62 + assume {:print "$track_local(57,18,18):", $t18} $t18 == $t18; + + // $t52 := borrow_local($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:33+6 + assume {:print "$at(179,21479,21485)"} true; + $t52 := $Mutation($Local(18), EmptyVec(), $t18); + + // $t53 := borrow_field.total_minted($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:28+24 + $t53 := $ChildMutation($t52, 1, $Dereference($t52)->$total_minted); + + // aggregator_v2::add($t53, $t3) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:9+58 + call $t53 := $1_aggregator_v2_add'u64'($t53, $t3); + if ($abort_flag) { + assume {:print "$at(179,21455,21513)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // write_back[Reference($t52).total_minted (aggregator_v2::Aggregator)]($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:9+58 + $t52 := $UpdateMutation($t52, $Update'$1_collection_ConcurrentSupply'_total_minted($Dereference($t52), $Dereference($t53))); + + // write_back[LocalRoot($t18)@]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:9+58 + $t18 := $Dereference($t52); + + // trace_local[supply#16]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:554:9+58 + assume {:print "$track_local(57,18,18):", $t18} $t18 == $t18; + + // $t54 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:555:42+6 + assume {:print "$at(179,21556,21562)"} true; + $t54 := $t18; + + // move_to($t54, $t24) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:555:9+7 + if ($ResourceExists($1_collection_ConcurrentSupply_$memory, $t24->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $t24->$addr, $t54); + } + if ($abort_flag) { + assume {:print "$at(179,21523,21530)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // event::destroy_handle($t4) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:557:9+34 + assume {:print "$at(179,21574,21608)"} true; + call $1_event_destroy_handle'$1_collection_BurnEvent'($t4); + if ($abort_flag) { + assume {:print "$at(179,21574,21608)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // event::destroy_handle($t5) on_abort goto L7 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:558:9+34 + assume {:print "$at(179,21618,21652)"} true; + call $1_event_destroy_handle'$1_collection_MintEvent'($t5); + if ($abort_flag) { + assume {:print "$at(179,21618,21652)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,18):", $t23} $t23 == $t23; + goto L7; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:559:5+1 + assume {:print "$at(179,21658,21659)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:559:5+1 + assume {:print "$at(179,21658,21659)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:559:5+1 +L7: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:559:5+1 + assume {:print "$at(179,21658,21659)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun collection::generate_mutator_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+209 +procedure {:inline 1} $1_collection_generate_mutator_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_collection_MutatorRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_object_Object'$1_collection_Collection'; + var $t3: int; + var $t4: int; + var $t5: $1_collection_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+1 + assume {:print "$at(179,19417,19418)"} true; + assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; + + // $t2 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:508:22+52 + assume {:print "$at(179,19506,19558)"} true; + call $t2 := $1_object_object_from_constructor_ref'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,19506,19558)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,11):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[object]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:508:13+6 + assume {:print "$track_local(57,11,1):", $t2} $t2 == $t2; + + // $t4 := object::object_address($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:28+31 + assume {:print "$at(179,19587,19618)"} true; + call $t4 := $1_object_object_address'$1_collection_Collection'($t2); + if ($abort_flag) { + assume {:print "$at(179,19587,19618)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := pack collection::MutatorRef($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:9+52 + $t5 := $1_collection_MutatorRef($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:9+52 + assume {:print "$track_return(57,11,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::generate_mutator_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+209 +procedure {:timeLimit 80} $1_collection_generate_mutator_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_collection_MutatorRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_object_Object'$1_collection_Collection'; + var $t3: int; + var $t4: int; + var $t5: $1_collection_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+1 + assume {:print "$at(179,19417,19418)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:507:5+1 + assume {:print "$track_local(57,11,0):", $t0} $t0 == $t0; + + // $t2 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:508:22+52 + assume {:print "$at(179,19506,19558)"} true; + call $t2 := $1_object_object_from_constructor_ref'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,19506,19558)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,11):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[object]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:508:13+6 + assume {:print "$track_local(57,11,1):", $t2} $t2 == $t2; + + // $t4 := object::object_address($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:28+31 + assume {:print "$at(179,19587,19618)"} true; + call $t4 := $1_object_object_address'$1_collection_Collection'($t2); + if ($abort_flag) { + assume {:print "$at(179,19587,19618)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := pack collection::MutatorRef($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:9+52 + $t5 := $1_collection_MutatorRef($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:509:9+52 + assume {:print "$track_return(57,11,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:510:5+1 + assume {:print "$at(179,19625,19626)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::create_collection_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+164 +procedure {:inline 1} $1_collection_create_collection_address(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume {:print "$at(179,13408,13409)"} true; + assume {:print "$track_local(57,1,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume {:print "$track_local(57,1,1):", $t1} $t1 == $t1; + + // $t2 := collection::create_collection_seed($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:48+28 + assume {:print "$at(179,13537,13565)"} true; + call $t2 := $1_collection_create_collection_seed($t1); + if ($abort_flag) { + assume {:print "$at(179,13537,13565)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,1):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := opaque begin: object::create_object_address($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume $IsValid'address'($t4); + + // assume Eq
($t4, object::spec_create_object_address($t0, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume $IsEqual'address'($t4, $1_object_spec_create_object_address($t0, $t2)); + + // $t4 := opaque end: object::create_object_address($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume {:print "$track_return(57,1,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::create_collection_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+164 +procedure {:timeLimit 80} $1_collection_create_collection_address$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume {:print "$at(179,13408,13409)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume {:print "$track_local(57,1,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:362:5+1 + assume {:print "$track_local(57,1,1):", $t1} $t1 == $t1; + + // $t2 := collection::create_collection_seed($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:48+28 + assume {:print "$at(179,13537,13565)"} true; + call $t2 := $1_collection_create_collection_seed($t1); + if ($abort_flag) { + assume {:print "$at(179,13537,13565)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,1):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := opaque begin: object::create_object_address($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume $IsValid'address'($t4); + + // assume Eq
($t4, object::spec_create_object_address($t0, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume $IsEqual'address'($t4, $1_object_spec_create_object_address($t0, $t2)); + + // $t4 := opaque end: object::create_object_address($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:363:9+68 + assume {:print "$track_return(57,1,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:364:5+1 + assume {:print "$at(179,13571,13572)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:607:5+129 +procedure {:timeLimit 80} $1_collection_description$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:607:5+1 + assume {:print "$at(179,23408,23409)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:607:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:607:5+1 + assume {:print "$track_local(57,10,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,10):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#108]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,10,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,10):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,10):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,10):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:608:9+31 + assume {:print "$at(179,23500,23531)"} true; + $t8 := $t7->$description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:608:9+31 + assume {:print "$track_return(57,10,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:609:5+1 + assume {:print "$at(179,23536,23537)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:609:5+1 + assume {:print "$at(179,23536,23537)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:609:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:609:5+1 + assume {:print "$at(179,23536,23537)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:617:5+113 +procedure {:timeLimit 80} $1_collection_uri$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_collection_Collection; + var $t8: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:617:5+1 + assume {:print "$at(179,23688,23689)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:617:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:617:5+1 + assume {:print "$track_local(57,19,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:34+34 + assume {:print "$at(179,21968,22002)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(179,21968,22002)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,19):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#120]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:571:13+18 + assume {:print "$track_local(57,19,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t4 := $ResourceExists($1_collection_Collection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,19):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,19):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:35+18 + assume {:print "$at(179,22091,22109)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:573:9+13 + assume {:print "$at(179,22065,22078)"} true; + if (!$ResourceExists($1_collection_Collection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_collection_Collection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(179,22065,22078)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(57,19):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:618:9+23 + assume {:print "$at(179,23772,23795)"} true; + $t8 := $t7->$uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:618:9+23 + assume {:print "$track_return(57,19,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:619:5+1 + assume {:print "$at(179,23800,23801)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:619:5+1 + assume {:print "$at(179,23800,23801)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:619:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:619:5+1 + assume {:print "$at(179,23800,23801)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun collection::create_collection_seed [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:367:5+214 +procedure {:inline 1} $1_collection_create_collection_seed(_$t0: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[name]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:367:5+1 + assume {:print "$at(179,13660,13661)"} true; + assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; + + // $t1 := string::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:17+20 + assume {:print "$at(179,13739,13759)"} true; + call $t1 := $1_string_length($t0); + if ($abort_flag) { + assume {:print "$at(179,13739,13759)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:41+26 + $t3 := 128; + assume $IsValid'u64'($t3); + + // $t4 := <=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:38+2 + call $t4 := $Le($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + assume {:print "$at(179,13731,13838)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 +L0: + + // $t5 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:89+25 + assume {:print "$at(179,13811,13836)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:69+46 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(179,13791,13837)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + assume {:print "$at(179,13731,13838)"} true; + assume {:print "$track_abort(57,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:24+4 + assume {:print "$at(179,13863,13867)"} true; +L2: + + // $t7 := string::bytes($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:10+19 + assume {:print "$at(179,13849,13868)"} true; + call $t7 := $1_string_bytes($t0); + if ($abort_flag) { + assume {:print "$at(179,13849,13868)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:9+20 + assume {:print "$track_return(57,2,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun collection::create_collection_seed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:367:5+214 +procedure {:timeLimit 80} $1_collection_create_collection_seed$verify(_$t0: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t0: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:367:5+1 + assume {:print "$at(179,13660,13661)"} true; + assume $IsValid'$1_string_String'($t0); + + // trace_local[name]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:367:5+1 + assume {:print "$track_local(57,2,0):", $t0} $t0 == $t0; + + // $t1 := string::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:17+20 + assume {:print "$at(179,13739,13759)"} true; + call $t1 := $1_string_length($t0); + if ($abort_flag) { + assume {:print "$at(179,13739,13759)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:41+26 + $t3 := 128; + assume $IsValid'u64'($t3); + + // $t4 := <=($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:38+2 + call $t4 := $Le($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + assume {:print "$at(179,13731,13838)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 +L0: + + // $t5 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:89+25 + assume {:print "$at(179,13811,13836)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::out_of_range($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:69+46 + call $t6 := $1_error_out_of_range($t5); + if ($abort_flag) { + assume {:print "$at(179,13791,13837)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + assume {:print "$at(179,13731,13838)"} true; + assume {:print "$track_abort(57,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:368:9+107 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:24+4 + assume {:print "$at(179,13863,13867)"} true; +L2: + + // $t7 := string::bytes($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:10+19 + assume {:print "$at(179,13849,13868)"} true; + call $t7 := $1_string_bytes($t0); + if ($abort_flag) { + assume {:print "$at(179,13849,13868)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(57,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:369:9+20 + assume {:print "$track_return(57,2,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:370:5+1 + assume {:print "$at(179,13873,13874)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun collection::create_fixed_collection [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+865 +procedure {:inline 1} $1_collection_create_fixed_collection(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_collection_Collection; + var $t7: Vec (int); + var $t8: $1_object_ConstructorRef; + var $t9: $1_object_ConstructorRef; + var $t10: $signer; + var $t11: $1_string_String; + var $t12: $1_string_String; + var $t13: $signer; + var $t14: $1_option_Option'$1_royalty_Royalty'; + var $t15: $1_collection_ConcurrentSupply; + var $t16: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t17: $1_object_TransferRef; + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: Vec (int); + var $t25: int; + var $t26: int; + var $t27: $1_object_ConstructorRef; + var $t28: $1_aggregator_v2_Aggregator'u64'; + var $t29: bool; + var $t30: $1_aggregator_v2_Aggregator'u64'; + var $t31: bool; + var $t32: $1_collection_ConcurrentSupply; + var $t33: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: $signer; + var $t50: int; + var $t51: $1_object_ObjectCore; + var $t52: $1_guid_GUID; + var $t53: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t54: $1_collection_Collection; + var $t55: bool; + var $t56: $1_collection_ConcurrentSupply; + var $t57: bool; + var $t58: bool; + var $t59: $1_option_Option'$1_royalty_Royalty'; + var $t60: bool; + var $t61: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t62: $1_royalty_Royalty; + var $t63: $1_option_Option'$1_royalty_Royalty'; + var $t64: bool; + var $t65: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_collection_ConcurrentSupply'': $1_option_Option'$1_collection_ConcurrentSupply'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$at(179,7350,7351)"} true; + assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,5):", $t5} $t5 == $t5; + + // $t19 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:31+1 + assume {:print "$at(179,7597,7598)"} true; + $t19 := 0; + assume $IsValid'u64'($t19); + + // $t20 := !=($t2, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:28+2 + $t20 := !$IsEqual'u64'($t2, $t19); + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + assume {:print "$at(179,7575,7652)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 +L0: + + // $t21 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:58+26 + assume {:print "$at(179,7624,7650)"} true; + $t21 := 6; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_argument($t21) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:34+51 + call $t22 := $1_error_invalid_argument($t21); + if ($abort_flag) { + assume {:print "$at(179,7600,7651)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + assume {:print "$at(179,7575,7652)"} true; + assume {:print "$track_abort(57,3):", $t22} $t22 == $t22; + + // $t23 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + $t23 := $t22; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:54+5 + assume {:print "$at(179,7707,7712)"} true; +L2: + + // $t24 := collection::create_collection_seed($t3) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:31+29 + assume {:print "$at(179,7684,7713)"} true; + call $t24 := $1_collection_create_collection_seed($t3); + if ($abort_flag) { + assume {:print "$at(179,7684,7713)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[collection_seed]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:13+15 + assume {:print "$track_local(57,3,7):", $t24} $t24 == $t24; + + // assume Identical($t25, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t25 == $1_signer_$address_of($t0)); + + // assume Identical($t26, object::spec_create_object_address($t25, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t26 == $1_object_spec_create_object_address($t25, $t24)); + + // $t27 := object::create_named_object($t0, $t24) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:198:31+53 + assume {:print "$at(179,7745,7798)"} true; + call $t27 := $1_object_create_named_object($t0, $t24); + if ($abort_flag) { + assume {:print "$at(179,7745,7798)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[constructor_ref]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:198:13+15 + assume {:print "$track_local(57,3,8):", $t27} $t27 == $t27; + + // $t28 := opaque begin: aggregator_v2::create_aggregator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + havoc $t29; + + // if ($t29) goto L20 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + if ($t29) { goto L20; } else { goto L19; } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 +L20: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + goto L18; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 +L19: + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t28); + + // $t28 := opaque end: aggregator_v2::create_aggregator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + + // $t30 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + havoc $t31; + + // if ($t31) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + if ($t31) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 +L22: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + goto L18; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 +L21: + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t30); + + // $t30 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + + // $t32 := pack collection::ConcurrentSupply($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:200:22+174 + assume {:print "$at(179,7822,7996)"} true; + $t32 := $1_collection_ConcurrentSupply($t28, $t30); + + // trace_local[supply]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:200:13+6 + assume {:print "$track_local(57,3,15):", $t32} $t32 == $t32; + + // $t33 := opaque begin: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume {:print "$at(179,8178,8198)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume ($IsValid'$1_option_Option'$1_collection_ConcurrentSupply''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_some($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume $IsEqual'$1_option_Option'$1_collection_ConcurrentSupply''($t33, $1_option_spec_some'$1_collection_ConcurrentSupply'($t32)); + + // $t33 := opaque end: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + + // trace_local[supply#76]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:323:9+6 + assume {:print "$at(179,11897,11903)"} true; + assume {:print "$track_local(57,3,16):", $t33} $t33 == $t33; + + // trace_local[uri#75]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:322:9+3 + assume {:print "$at(179,11876,11879)"} true; + assume {:print "$track_local(57,3,18):", $t5} $t5 == $t5; + + // $t14 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$at(179,11842,11849)"} true; + $t14 := $t4; + + // trace_local[royalty#74]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$track_local(57,3,14):", $t14} $t14 == $t14; + + // trace_local[name#73]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:320:9+4 + assume {:print "$at(179,11820,11824)"} true; + assume {:print "$track_local(57,3,12):", $t3} $t3 == $t3; + + // trace_local[description#72]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:319:9+11 + assume {:print "$at(179,11791,11802)"} true; + assume {:print "$track_local(57,3,11):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#71]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:318:9+15 + assume {:print "$at(179,11750,11765)"} true; + assume {:print "$track_local(57,3,9):", $t27} $t27 == $t27; + + // trace_local[creator#70]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:317:9+7 + assume {:print "$at(179,11724,11731)"} true; + assume {:print "$track_local(57,3,10):", $t0} $t0 == $t0; + + // $t34 := string::length($t3) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:17+21 + assume {:print "$at(179,11961,11982)"} true; + call $t34 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(179,11961,11982)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t35 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:42+26 + $t35 := 128; + assume $IsValid'u64'($t35); + + // $t36 := <=($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:39+2 + call $t36 := $Le($t34, $t35); + + // if ($t36) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + if ($t36) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L3: + + // $t37 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:90+25 + assume {:print "$at(179,12034,12059)"} true; + $t37 := 3; + assume $IsValid'u64'($t37); + + // $t38 := error::out_of_range($t37) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:70+46 + call $t38 := $1_error_out_of_range($t37); + if ($abort_flag) { + assume {:print "$at(179,12014,12060)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + assume {:print "$track_abort(57,3):", $t38} $t38 == $t38; + + // $t23 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + $t23 := $t38; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:32+4 + assume {:print "$at(179,12094,12098)"} true; +L5: + + // $t39 := string::length($t5) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:17+20 + assume {:print "$at(179,12079,12099)"} true; + call $t39 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(179,12079,12099)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t40 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:41+14 + $t40 := 512; + assume $IsValid'u64'($t40); + + // $t41 := <=($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:38+2 + call $t41 := $Le($t39, $t40); + + // if ($t41) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + if ($t41) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L6: + + // $t42 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:77+13 + assume {:print "$at(179,12139,12152)"} true; + $t42 := 4; + assume $IsValid'u64'($t42); + + // $t43 := error::out_of_range($t42) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:57+34 + call $t43 := $1_error_out_of_range($t42); + if ($abort_flag) { + assume {:print "$at(179,12119,12153)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + assume {:print "$track_abort(57,3):", $t43} $t43 == $t43; + + // $t23 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + $t23 := $t43; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:32+12 + assume {:print "$at(179,12187,12199)"} true; +L8: + + // $t44 := string::length($t1) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:17+28 + assume {:print "$at(179,12172,12200)"} true; + call $t44 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,12172,12200)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t45 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:49+22 + $t45 := 2048; + assume $IsValid'u64'($t45); + + // $t46 := <=($t44, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:46+2 + call $t46 := $Le($t44, $t45); + + // if ($t46) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + if ($t46) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L9: + + // $t47 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:93+21 + assume {:print "$at(179,12248,12269)"} true; + $t47 := 5; + assume $IsValid'u64'($t47); + + // $t48 := error::out_of_range($t47) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:73+42 + call $t48 := $1_error_out_of_range($t47); + if ($abort_flag) { + assume {:print "$at(179,12228,12270)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + assume {:print "$track_abort(57,3):", $t48} $t48 == $t48; + + // $t23 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + $t23 := $t48; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + goto L18; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:53+16 + assume {:print "$at(179,12326,12342)"} true; +L11: + + // $t49 := object::generate_signer($t27) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:29+41 + assume {:print "$at(179,12302,12343)"} true; + call $t49 := $1_object_generate_signer($t27); + if ($abort_flag) { + assume {:print "$at(179,12302,12343)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[object_signer#77]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:13+13 + assume {:print "$track_local(57,3,13):", $t49} $t49 == $t49; + + // $t50 := signer::address_of($t0) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:332:22+27 + assume {:print "$at(179,12405,12432)"} true; + call $t50 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(179,12405,12432)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // assume Identical($t51, global(signer::$address_of($t49))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t51 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t49))); + + // assume Identical($t52, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t51), signer::$address_of($t49)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t52 == $1_guid_GUID($1_guid_ID($t51->$guid_creation_num, $1_signer_$address_of($t49)))); + + // $t53 := object::new_event_handle($t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:336:30+40 + assume {:print "$at(179,12523,12563)"} true; + call $t53 := $1_object_new_event_handle'$1_collection_MutationEvent'($t49); + if ($abort_flag) { + assume {:print "$at(179,12523,12563)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t54 := pack collection::Collection($t50, $t1, $t3, $t5, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:26+203 + assume {:print "$at(179,12371,12574)"} true; + $t54 := $1_collection_Collection($t50, $t1, $t3, $t5, $t53); + + // trace_local[collection#78]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:13+10 + assume {:print "$track_local(57,3,6):", $t54} $t54 == $t54; + + // move_to($t54, $t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:338:9+7 + assume {:print "$at(179,12584,12591)"} true; + if ($ResourceExists($1_collection_Collection_$memory, $t49->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $t49->$addr, $t54); + } + if ($abort_flag) { + assume {:print "$at(179,12584,12591)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t55 := opaque begin: option::is_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume {:print "$at(179,12634,12658)"} true; + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_some($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsEqual'bool'($t55, $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33)); + + // $t55 := opaque end: option::is_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:9+165 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:21+14 + assume {:print "$at(179,12682,12696)"} true; +L13: + + // $t56 := opaque begin: option::destroy_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + + // assume Identical($t57, option::spec_is_none($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume ($t57 == $1_option_spec_is_none'$1_collection_ConcurrentSupply'($t33)); + + // if ($t57) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + if ($t57) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L24: + + // assume And(option::spec_is_none($t33), Eq(262145, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume ($1_option_spec_is_none'$1_collection_ConcurrentSupply'($t33) && $IsEqual'num'(262145, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + goto L18; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L23: + + // assume WellFormed($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume $IsValid'$1_collection_ConcurrentSupply'($t56); + + // assume Eq($t56, option::spec_borrow($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume $IsEqual'$1_collection_ConcurrentSupply'($t56, $1_option_spec_borrow'$1_collection_ConcurrentSupply'($t33)); + + // $t56 := opaque end: option::destroy_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + + // move_to($t56, $t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+7 + if ($ResourceExists($1_collection_ConcurrentSupply_$memory, $t49->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $t49->$addr, $t56); + } + if ($abort_flag) { + assume {:print "$at(179,12674,12681)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+53 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:34+6 + assume {:print "$at(179,12778,12784)"} true; +L12: + + // opaque begin: option::destroy_none($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // assume Identical($t58, option::spec_is_some($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume ($t58 == $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33)); + + // if ($t58) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + if ($t58) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L26: + + // assume And(option::spec_is_some($t33), Eq(262144, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume ($1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33) && $IsEqual'num'(262144, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + goto L18; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L25: + + // opaque end: option::destroy_none($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; +L14: + + // $t59 := copy($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; + $t59 := $t14; + + // $t60 := opaque begin: option::is_some($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // assume WellFormed($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsValid'bool'($t60); + + // assume Eq($t60, option::spec_is_some($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsEqual'bool'($t60, $1_option_spec_is_some'$1_royalty_Royalty'($t59)); + + // $t60 := opaque end: option::is_some($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // if ($t60) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:9+117 + if ($t60) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:27+16 + assume {:print "$at(179,12865,12881)"} true; +L16: + + // $t61 := borrow_local($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:61+12 + assume {:print "$at(179,12899,12911)"} true; + $t61 := $Mutation($Local(14), EmptyVec(), $t14); + + // $t62 := opaque begin: option::extract($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // $t63 := read_ref($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t63 := $Dereference($t61); + + // assume Identical($t64, option::spec_is_none($t61)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($t64 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61))); + + // if ($t64) goto L28 else goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + if ($t64) { goto L28; } else { goto L29; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L28: + + // assume And(option::spec_is_none($t61), Eq(262145, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61)) && $IsEqual'num'(262145, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + goto L18; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L27: + + // $t61 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t61 := $UpdateMutation($t61, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t61), Le(Len(select option::Option.vec($t61)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t61)) && (LenVec($Dereference($t61)->$vec) <= 1)); + + // assume WellFormed($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsValid'$1_royalty_Royalty'($t62); + + // assume Eq($t62, option::spec_borrow($t63)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsEqual'$1_royalty_Royalty'($t62, $1_option_spec_borrow'$1_royalty_Royalty'($t63)); + + // assume option::spec_is_none($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61)); + + // $t62 := opaque end: option::extract($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // pack_ref_deep($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // write_back[LocalRoot($t14)@]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t14 := $Dereference($t61); + + // trace_local[royalty#74]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$track_local(57,3,14):", $t14} $t14 == $t14; + + // royalty::init($t27, $t62) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:13+62 + call $1_royalty_init($t27, $t62); + if ($abort_flag) { + assume {:print "$at(179,12851,12913)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:58+16 + assume {:print "$at(179,12983,12999)"} true; +L15: + + // $t65 := object::generate_transfer_ref($t27) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:28+47 + assume {:print "$at(179,12953,13000)"} true; + call $t65 := $1_object_generate_transfer_ref($t27); + if ($abort_flag) { + assume {:print "$at(179,12953,13000)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[transfer_ref#79]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:13+12 + assume {:print "$track_local(57,3,17):", $t65} $t65 == $t65; + + // object::disable_ungated_transfer($t65) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:351:9+47 + assume {:print "$at(179,13010,13057)"} true; + call $1_object_disable_ungated_transfer($t65); + if ($abort_flag) { + assume {:print "$at(179,13010,13057)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:353:9+15 + assume {:print "$at(179,13068,13083)"} true; + assume {:print "$track_return(57,3,0):", $t27} $t27 == $t27; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; +L17: + + // return $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; + $ret0 := $t27; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 +L18: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + + // label L29 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L29: + + // drop($t61) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L27 at :1:1+10 + goto L27; + +} + +// fun collection::create_fixed_collection [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+865 +procedure {:timeLimit 80} $1_collection_create_fixed_collection$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_collection_Collection; + var $t7: Vec (int); + var $t8: $1_object_ConstructorRef; + var $t9: $1_object_ConstructorRef; + var $t10: $signer; + var $t11: $1_string_String; + var $t12: $1_string_String; + var $t13: $signer; + var $t14: $1_option_Option'$1_royalty_Royalty'; + var $t15: $1_collection_ConcurrentSupply; + var $t16: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t17: $1_object_TransferRef; + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: Vec (int); + var $t25: int; + var $t26: int; + var $t27: $1_object_ConstructorRef; + var $t28: $1_aggregator_v2_Aggregator'u64'; + var $t29: bool; + var $t30: $1_aggregator_v2_Aggregator'u64'; + var $t31: bool; + var $t32: $1_collection_ConcurrentSupply; + var $t33: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: $signer; + var $t50: int; + var $t51: $1_object_ObjectCore; + var $t52: $1_guid_GUID; + var $t53: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t54: $1_collection_Collection; + var $t55: bool; + var $t56: $1_collection_ConcurrentSupply; + var $t57: bool; + var $t58: bool; + var $t59: $1_option_Option'$1_royalty_Royalty'; + var $t60: bool; + var $t61: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t62: $1_royalty_Royalty; + var $t63: $1_option_Option'$1_royalty_Royalty'; + var $t64: bool; + var $t65: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_collection_ConcurrentSupply'': $1_option_Option'$1_collection_ConcurrentSupply'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$at(179,7350,7351)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:188:5+1 + assume {:print "$track_local(57,3,5):", $t5} $t5 == $t5; + + // $t19 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:31+1 + assume {:print "$at(179,7597,7598)"} true; + $t19 := 0; + assume $IsValid'u64'($t19); + + // $t20 := !=($t2, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:28+2 + $t20 := !$IsEqual'u64'($t2, $t19); + + // if ($t20) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + if ($t20) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + assume {:print "$at(179,7575,7652)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 +L0: + + // $t21 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:58+26 + assume {:print "$at(179,7624,7650)"} true; + $t21 := 6; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_argument($t21) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:34+51 + call $t22 := $1_error_invalid_argument($t21); + if ($abort_flag) { + assume {:print "$at(179,7600,7651)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + assume {:print "$at(179,7575,7652)"} true; + assume {:print "$track_abort(57,3):", $t22} $t22 == $t22; + + // $t23 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + $t23 := $t22; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:196:9+77 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:54+5 + assume {:print "$at(179,7707,7712)"} true; +L2: + + // $t24 := collection::create_collection_seed($t3) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:31+29 + assume {:print "$at(179,7684,7713)"} true; + call $t24 := $1_collection_create_collection_seed($t3); + if ($abort_flag) { + assume {:print "$at(179,7684,7713)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[collection_seed]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:197:13+15 + assume {:print "$track_local(57,3,7):", $t24} $t24 == $t24; + + // assume Identical($t25, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t25 == $1_signer_$address_of($t0)); + + // assume Identical($t26, object::spec_create_object_address($t25, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t26 == $1_object_spec_create_object_address($t25, $t24)); + + // $t27 := object::create_named_object($t0, $t24) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:198:31+53 + assume {:print "$at(179,7745,7798)"} true; + call $t27 := $1_object_create_named_object($t0, $t24); + if ($abort_flag) { + assume {:print "$at(179,7745,7798)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[constructor_ref]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:198:13+15 + assume {:print "$track_local(57,3,8):", $t27} $t27 == $t27; + + // $t28 := opaque begin: aggregator_v2::create_aggregator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + havoc $t29; + + // if ($t29) goto L20 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + if ($t29) { goto L20; } else { goto L19; } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 +L20: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + goto L18; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 +L19: + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + assume {:print "$at(179,7869,7913)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t28); + + // $t28 := opaque end: aggregator_v2::create_aggregator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:201:29+44 + + // $t30 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + havoc $t31; + + // if ($t31) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + if ($t31) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 +L22: + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + goto L18; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 +L21: + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + assume {:print "$at(179,7941,7985)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t30); + + // $t30 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:202:27+44 + + // $t32 := pack collection::ConcurrentSupply($t28, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:200:22+174 + assume {:print "$at(179,7822,7996)"} true; + $t32 := $1_collection_ConcurrentSupply($t28, $t30); + + // trace_local[supply]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:200:13+6 + assume {:print "$track_local(57,3,15):", $t32} $t32 == $t32; + + // $t33 := opaque begin: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume {:print "$at(179,8178,8198)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume ($IsValid'$1_option_Option'$1_collection_ConcurrentSupply''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_some($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + assume $IsEqual'$1_option_Option'$1_collection_ConcurrentSupply''($t33, $1_option_spec_some'$1_collection_ConcurrentSupply'($t32)); + + // $t33 := opaque end: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:212:13+20 + + // trace_local[supply#76]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:323:9+6 + assume {:print "$at(179,11897,11903)"} true; + assume {:print "$track_local(57,3,16):", $t33} $t33 == $t33; + + // trace_local[uri#75]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:322:9+3 + assume {:print "$at(179,11876,11879)"} true; + assume {:print "$track_local(57,3,18):", $t5} $t5 == $t5; + + // $t14 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$at(179,11842,11849)"} true; + $t14 := $t4; + + // trace_local[royalty#74]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$track_local(57,3,14):", $t14} $t14 == $t14; + + // trace_local[name#73]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:320:9+4 + assume {:print "$at(179,11820,11824)"} true; + assume {:print "$track_local(57,3,12):", $t3} $t3 == $t3; + + // trace_local[description#72]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:319:9+11 + assume {:print "$at(179,11791,11802)"} true; + assume {:print "$track_local(57,3,11):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#71]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:318:9+15 + assume {:print "$at(179,11750,11765)"} true; + assume {:print "$track_local(57,3,9):", $t27} $t27 == $t27; + + // trace_local[creator#70]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:317:9+7 + assume {:print "$at(179,11724,11731)"} true; + assume {:print "$track_local(57,3,10):", $t0} $t0 == $t0; + + // $t34 := string::length($t3) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:17+21 + assume {:print "$at(179,11961,11982)"} true; + call $t34 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(179,11961,11982)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t35 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:42+26 + $t35 := 128; + assume $IsValid'u64'($t35); + + // $t36 := <=($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:39+2 + call $t36 := $Le($t34, $t35); + + // if ($t36) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + if ($t36) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L3: + + // $t37 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:90+25 + assume {:print "$at(179,12034,12059)"} true; + $t37 := 3; + assume $IsValid'u64'($t37); + + // $t38 := error::out_of_range($t37) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:70+46 + call $t38 := $1_error_out_of_range($t37); + if ($abort_flag) { + assume {:print "$at(179,12014,12060)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + assume {:print "$track_abort(57,3):", $t38} $t38 == $t38; + + // $t23 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + $t23 := $t38; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:32+4 + assume {:print "$at(179,12094,12098)"} true; +L5: + + // $t39 := string::length($t5) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:17+20 + assume {:print "$at(179,12079,12099)"} true; + call $t39 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(179,12079,12099)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t40 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:41+14 + $t40 := 512; + assume $IsValid'u64'($t40); + + // $t41 := <=($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:38+2 + call $t41 := $Le($t39, $t40); + + // if ($t41) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + if ($t41) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L6: + + // $t42 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:77+13 + assume {:print "$at(179,12139,12152)"} true; + $t42 := 4; + assume $IsValid'u64'($t42); + + // $t43 := error::out_of_range($t42) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:57+34 + call $t43 := $1_error_out_of_range($t42); + if ($abort_flag) { + assume {:print "$at(179,12119,12153)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + assume {:print "$track_abort(57,3):", $t43} $t43 == $t43; + + // $t23 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + $t23 := $t43; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:32+12 + assume {:print "$at(179,12187,12199)"} true; +L8: + + // $t44 := string::length($t1) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:17+28 + assume {:print "$at(179,12172,12200)"} true; + call $t44 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,12172,12200)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t45 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:49+22 + $t45 := 2048; + assume $IsValid'u64'($t45); + + // $t46 := <=($t44, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:46+2 + call $t46 := $Le($t44, $t45); + + // if ($t46) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + if ($t46) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L9: + + // $t47 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:93+21 + assume {:print "$at(179,12248,12269)"} true; + $t47 := 5; + assume $IsValid'u64'($t47); + + // $t48 := error::out_of_range($t47) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:73+42 + call $t48 := $1_error_out_of_range($t47); + if ($abort_flag) { + assume {:print "$at(179,12228,12270)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + assume {:print "$track_abort(57,3):", $t48} $t48 == $t48; + + // $t23 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + $t23 := $t48; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + goto L18; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:53+16 + assume {:print "$at(179,12326,12342)"} true; +L11: + + // $t49 := object::generate_signer($t27) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:29+41 + assume {:print "$at(179,12302,12343)"} true; + call $t49 := $1_object_generate_signer($t27); + if ($abort_flag) { + assume {:print "$at(179,12302,12343)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[object_signer#77]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:13+13 + assume {:print "$track_local(57,3,13):", $t49} $t49 == $t49; + + // $t50 := signer::address_of($t0) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:332:22+27 + assume {:print "$at(179,12405,12432)"} true; + call $t50 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(179,12405,12432)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // assume Identical($t51, global(signer::$address_of($t49))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t51 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t49))); + + // assume Identical($t52, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t51), signer::$address_of($t49)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t52 == $1_guid_GUID($1_guid_ID($t51->$guid_creation_num, $1_signer_$address_of($t49)))); + + // $t53 := object::new_event_handle($t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:336:30+40 + assume {:print "$at(179,12523,12563)"} true; + call $t53 := $1_object_new_event_handle'$1_collection_MutationEvent'($t49); + if ($abort_flag) { + assume {:print "$at(179,12523,12563)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t54 := pack collection::Collection($t50, $t1, $t3, $t5, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:26+203 + assume {:print "$at(179,12371,12574)"} true; + $t54 := $1_collection_Collection($t50, $t1, $t3, $t5, $t53); + + // trace_local[collection#78]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:13+10 + assume {:print "$track_local(57,3,6):", $t54} $t54 == $t54; + + // move_to($t54, $t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:338:9+7 + assume {:print "$at(179,12584,12591)"} true; + if ($ResourceExists($1_collection_Collection_$memory, $t49->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $t49->$addr, $t54); + } + if ($abort_flag) { + assume {:print "$at(179,12584,12591)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // $t55 := opaque begin: option::is_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume {:print "$at(179,12634,12658)"} true; + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_some($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsEqual'bool'($t55, $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33)); + + // $t55 := opaque end: option::is_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:9+165 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:21+14 + assume {:print "$at(179,12682,12696)"} true; +L13: + + // $t56 := opaque begin: option::destroy_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + + // assume Identical($t57, option::spec_is_none($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume ($t57 == $1_option_spec_is_none'$1_collection_ConcurrentSupply'($t33)); + + // if ($t57) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + if ($t57) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L24: + + // assume And(option::spec_is_none($t33), Eq(262145, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume ($1_option_spec_is_none'$1_collection_ConcurrentSupply'($t33) && $IsEqual'num'(262145, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + goto L18; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L23: + + // assume WellFormed($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume $IsValid'$1_collection_ConcurrentSupply'($t56); + + // assume Eq($t56, option::spec_borrow($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume $IsEqual'$1_collection_ConcurrentSupply'($t56, $1_option_spec_borrow'$1_collection_ConcurrentSupply'($t33)); + + // $t56 := opaque end: option::destroy_some($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + + // move_to($t56, $t49) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+7 + if ($ResourceExists($1_collection_ConcurrentSupply_$memory, $t49->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $t49->$addr, $t56); + } + if ($abort_flag) { + assume {:print "$at(179,12674,12681)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+53 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:34+6 + assume {:print "$at(179,12778,12784)"} true; +L12: + + // opaque begin: option::destroy_none($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // assume Identical($t58, option::spec_is_some($t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume ($t58 == $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33)); + + // if ($t58) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + if ($t58) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L26: + + // assume And(option::spec_is_some($t33), Eq(262144, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume ($1_option_spec_is_some'$1_collection_ConcurrentSupply'($t33) && $IsEqual'num'(262144, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + goto L18; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L25: + + // opaque end: option::destroy_none($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; +L14: + + // $t59 := copy($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; + $t59 := $t14; + + // $t60 := opaque begin: option::is_some($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // assume WellFormed($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsValid'bool'($t60); + + // assume Eq($t60, option::spec_is_some($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsEqual'bool'($t60, $1_option_spec_is_some'$1_royalty_Royalty'($t59)); + + // $t60 := opaque end: option::is_some($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // if ($t60) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:9+117 + if ($t60) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:27+16 + assume {:print "$at(179,12865,12881)"} true; +L16: + + // $t61 := borrow_local($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:61+12 + assume {:print "$at(179,12899,12911)"} true; + $t61 := $Mutation($Local(14), EmptyVec(), $t14); + + // $t62 := opaque begin: option::extract($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // $t63 := read_ref($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t63 := $Dereference($t61); + + // assume Identical($t64, option::spec_is_none($t61)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($t64 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61))); + + // if ($t64) goto L28 else goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + if ($t64) { goto L28; } else { goto L29; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L28: + + // assume And(option::spec_is_none($t61), Eq(262145, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61)) && $IsEqual'num'(262145, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + goto L18; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L27: + + // $t61 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t61 := $UpdateMutation($t61, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t61), Le(Len(select option::Option.vec($t61)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t61)) && (LenVec($Dereference($t61)->$vec) <= 1)); + + // assume WellFormed($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsValid'$1_royalty_Royalty'($t62); + + // assume Eq($t62, option::spec_borrow($t63)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsEqual'$1_royalty_Royalty'($t62, $1_option_spec_borrow'$1_royalty_Royalty'($t63)); + + // assume option::spec_is_none($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t61)); + + // $t62 := opaque end: option::extract($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // assert Le(Len(select option::Option.vec($t61)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t61)->$vec) <= 1); + + // write_back[LocalRoot($t14)@]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + $t14 := $Dereference($t61); + + // trace_local[royalty#74]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$track_local(57,3,14):", $t14} $t14 == $t14; + + // royalty::init($t27, $t62) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:13+62 + call $1_royalty_init($t27, $t62); + if ($abort_flag) { + assume {:print "$at(179,12851,12913)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:58+16 + assume {:print "$at(179,12983,12999)"} true; +L15: + + // $t65 := object::generate_transfer_ref($t27) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:28+47 + assume {:print "$at(179,12953,13000)"} true; + call $t65 := $1_object_generate_transfer_ref($t27); + if ($abort_flag) { + assume {:print "$at(179,12953,13000)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_local[transfer_ref#79]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:13+12 + assume {:print "$track_local(57,3,17):", $t65} $t65 == $t65; + + // object::disable_ungated_transfer($t65) on_abort goto L18 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:351:9+47 + assume {:print "$at(179,13010,13057)"} true; + call $1_object_disable_ungated_transfer($t65); + if ($abort_flag) { + assume {:print "$at(179,13010,13057)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(57,3):", $t23} $t23 == $t23; + goto L18; + } + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:353:9+15 + assume {:print "$at(179,13068,13083)"} true; + assume {:print "$track_return(57,3,0):", $t27} $t27 == $t27; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; +L17: + + // return $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; + $ret0 := $t27; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 +L18: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:214:5+1 + assume {:print "$at(179,8214,8215)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + + // label L29 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L29: + + // drop($t61) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L27 at :1:1+10 + goto L27; + +} + +// fun collection::create_fixed_collection_as_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+610 +procedure {:timeLimit 80} $1_collection_create_fixed_collection_as_owner$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_object_ConstructorRef; + var $t7: $1_object_TransferRef; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$at(179,8485,8486)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:219:5+1 + assume {:print "$track_local(57,4,5):", $t5} $t5 == $t5; + + // $t8 := features::is_collection_owner_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:17+39 + assume {:print "$at(179,8727,8766)"} true; + call $t8 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(179,8727,8766)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,4):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 + assume {:print "$at(179,8719,8820)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 +L0: + + // $t10 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:77+31 + assume {:print "$at(179,8787,8818)"} true; + $t10 := 11; + assume $IsValid'u64'($t10); + + // $t11 := error::unavailable($t10) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:58+51 + call $t11 := $1_error_unavailable($t10); + if ($abort_flag) { + assume {:print "$at(179,8768,8819)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 + assume {:print "$at(179,8719,8820)"} true; + assume {:print "$track_abort(57,4):", $t11} $t11 == $t11; + + // $t9 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 + $t9 := $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:227:9+101 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:230:13+7 + assume {:print "$at(179,8890,8897)"} true; +L2: + + // $t12 := collection::create_fixed_collection($t0, $t1, $t2, $t3, $t4, $t5) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:229:31+160 + assume {:print "$at(179,8853,9013)"} true; + call $t12 := $1_collection_create_fixed_collection($t0, $t1, $t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(179,8853,9013)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[constructor_ref]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:229:13+15 + assume {:print "$track_local(57,4,6):", $t12} $t12 == $t12; + + // $t13 := object::generate_transfer_ref($t12) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:357:28+46 + assume {:print "$at(179,13193,13239)"} true; + call $t13 := $1_object_generate_transfer_ref($t12); + if ($abort_flag) { + assume {:print "$at(179,13193,13239)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[transfer_ref#81]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:357:13+12 + assume {:print "$track_local(57,4,7):", $t13} $t13 == $t13; + + // object::enable_ungated_transfer($t13) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:358:9+46 + assume {:print "$at(179,13249,13295)"} true; + call $1_object_enable_ungated_transfer($t13); + if ($abort_flag) { + assume {:print "$at(179,13249,13295)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(57,4):", $t9} $t9 == $t9; + goto L4; + } + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:238:9+15 + assume {:print "$at(179,9074,9089)"} true; + assume {:print "$track_return(57,4,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:239:5+1 + assume {:print "$at(179,9094,9095)"} true; +L3: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:239:5+1 + assume {:print "$at(179,9094,9095)"} true; + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:239:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:239:5+1 + assume {:print "$at(179,9094,9095)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun collection::create_unlimited_collection [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+757 +procedure {:inline 1} $1_collection_create_unlimited_collection(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_option_Option'$1_royalty_Royalty', _$t4: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t5: $1_collection_Collection; + var $t6: Vec (int); + var $t7: $1_object_ConstructorRef; + var $t8: $1_object_ConstructorRef; + var $t9: $signer; + var $t10: $1_string_String; + var $t11: $1_string_String; + var $t12: $signer; + var $t13: $1_option_Option'$1_royalty_Royalty'; + var $t14: $1_collection_ConcurrentSupply; + var $t15: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t16: $1_object_TransferRef; + var $t17: $1_string_String; + var $t18: Vec (int); + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $1_object_ConstructorRef; + var $t23: $1_aggregator_v2_Aggregator'u64'; + var $t24: bool; + var $t25: $1_aggregator_v2_Aggregator'u64'; + var $t26: bool; + var $t27: $1_collection_ConcurrentSupply; + var $t28: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t29: int; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: $signer; + var $t45: int; + var $t46: $1_object_ObjectCore; + var $t47: $1_guid_GUID; + var $t48: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t49: $1_collection_Collection; + var $t50: bool; + var $t51: $1_collection_ConcurrentSupply; + var $t52: bool; + var $t53: bool; + var $t54: $1_option_Option'$1_royalty_Royalty'; + var $t55: bool; + var $t56: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t57: $1_royalty_Royalty; + var $t58: $1_option_Option'$1_royalty_Royalty'; + var $t59: bool; + var $t60: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_option_Option'$1_royalty_Royalty'; + var $t4: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_collection_ConcurrentSupply'': $1_option_Option'$1_collection_ConcurrentSupply'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$at(179,9228,9229)"} true; + assume {:print "$track_local(57,5,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,2):", $t2} $t2 == $t2; + + // trace_local[royalty]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,4):", $t4} $t4 == $t4; + + // $t18 := collection::create_collection_seed($t2) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:250:31+29 + assume {:print "$at(179,9454,9483)"} true; + call $t18 := $1_collection_create_collection_seed($t2); + if ($abort_flag) { + assume {:print "$at(179,9454,9483)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[collection_seed]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:250:13+15 + assume {:print "$track_local(57,5,6):", $t18} $t18 == $t18; + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, object::spec_create_object_address($t20, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t21 == $1_object_spec_create_object_address($t20, $t18)); + + // $t22 := object::create_named_object($t0, $t18) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:251:31+53 + assume {:print "$at(179,9515,9568)"} true; + call $t22 := $1_object_create_named_object($t0, $t18); + if ($abort_flag) { + assume {:print "$at(179,9515,9568)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[constructor_ref]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:251:13+15 + assume {:print "$track_local(57,5,7):", $t22} $t22 == $t22; + + // $t23 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + havoc $t24; + + // if ($t24) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + if ($t24) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 +L17: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + goto L15; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 +L16: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t23); + + // $t23 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + + // $t25 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + havoc $t26; + + // if ($t26) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + if ($t26) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 +L19: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + goto L15; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 +L18: + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t25); + + // $t25 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + + // $t27 := pack collection::ConcurrentSupply($t23, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:253:22+174 + assume {:print "$at(179,9592,9766)"} true; + $t27 := $1_collection_ConcurrentSupply($t23, $t25); + + // trace_local[supply]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:253:13+6 + assume {:print "$track_local(57,5,14):", $t27} $t27 == $t27; + + // $t28 := opaque begin: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume {:print "$at(179,9948,9968)"} true; + + // assume And(WellFormed($t28), Le(Len(select option::Option.vec($t28)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume ($IsValid'$1_option_Option'$1_collection_ConcurrentSupply''($t28) && (LenVec($t28->$vec) <= 1)); + + // assume Eq>($t28, option::spec_some($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume $IsEqual'$1_option_Option'$1_collection_ConcurrentSupply''($t28, $1_option_spec_some'$1_collection_ConcurrentSupply'($t27)); + + // $t28 := opaque end: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + + // trace_local[supply#88]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:323:9+6 + assume {:print "$at(179,11897,11903)"} true; + assume {:print "$track_local(57,5,15):", $t28} $t28 == $t28; + + // trace_local[uri#87]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:322:9+3 + assume {:print "$at(179,11876,11879)"} true; + assume {:print "$track_local(57,5,17):", $t4} $t4 == $t4; + + // $t13 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$at(179,11842,11849)"} true; + $t13 := $t3; + + // trace_local[royalty#86]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$track_local(57,5,13):", $t13} $t13 == $t13; + + // trace_local[name#85]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:320:9+4 + assume {:print "$at(179,11820,11824)"} true; + assume {:print "$track_local(57,5,11):", $t2} $t2 == $t2; + + // trace_local[description#84]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:319:9+11 + assume {:print "$at(179,11791,11802)"} true; + assume {:print "$track_local(57,5,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#83]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:318:9+15 + assume {:print "$at(179,11750,11765)"} true; + assume {:print "$track_local(57,5,8):", $t22} $t22 == $t22; + + // trace_local[creator#82]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:317:9+7 + assume {:print "$at(179,11724,11731)"} true; + assume {:print "$track_local(57,5,9):", $t0} $t0 == $t0; + + // $t29 := string::length($t2) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:17+21 + assume {:print "$at(179,11961,11982)"} true; + call $t29 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(179,11961,11982)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t30 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:42+26 + $t30 := 128; + assume $IsValid'u64'($t30); + + // $t31 := <=($t29, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:39+2 + call $t31 := $Le($t29, $t30); + + // if ($t31) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + if ($t31) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L0: + + // $t32 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:90+25 + assume {:print "$at(179,12034,12059)"} true; + $t32 := 3; + assume $IsValid'u64'($t32); + + // $t33 := error::out_of_range($t32) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:70+46 + call $t33 := $1_error_out_of_range($t32); + if ($abort_flag) { + assume {:print "$at(179,12014,12060)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + assume {:print "$track_abort(57,5):", $t33} $t33 == $t33; + + // $t19 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + $t19 := $t33; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:32+4 + assume {:print "$at(179,12094,12098)"} true; +L2: + + // $t34 := string::length($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:17+20 + assume {:print "$at(179,12079,12099)"} true; + call $t34 := $1_string_length($t4); + if ($abort_flag) { + assume {:print "$at(179,12079,12099)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t35 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:41+14 + $t35 := 512; + assume $IsValid'u64'($t35); + + // $t36 := <=($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:38+2 + call $t36 := $Le($t34, $t35); + + // if ($t36) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + if ($t36) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L3: + + // $t37 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:77+13 + assume {:print "$at(179,12139,12152)"} true; + $t37 := 4; + assume $IsValid'u64'($t37); + + // $t38 := error::out_of_range($t37) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:57+34 + call $t38 := $1_error_out_of_range($t37); + if ($abort_flag) { + assume {:print "$at(179,12119,12153)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + assume {:print "$track_abort(57,5):", $t38} $t38 == $t38; + + // $t19 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + $t19 := $t38; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:32+12 + assume {:print "$at(179,12187,12199)"} true; +L5: + + // $t39 := string::length($t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:17+28 + assume {:print "$at(179,12172,12200)"} true; + call $t39 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,12172,12200)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t40 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:49+22 + $t40 := 2048; + assume $IsValid'u64'($t40); + + // $t41 := <=($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:46+2 + call $t41 := $Le($t39, $t40); + + // if ($t41) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + if ($t41) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L6: + + // $t42 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:93+21 + assume {:print "$at(179,12248,12269)"} true; + $t42 := 5; + assume $IsValid'u64'($t42); + + // $t43 := error::out_of_range($t42) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:73+42 + call $t43 := $1_error_out_of_range($t42); + if ($abort_flag) { + assume {:print "$at(179,12228,12270)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + assume {:print "$track_abort(57,5):", $t43} $t43 == $t43; + + // $t19 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + $t19 := $t43; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:53+16 + assume {:print "$at(179,12326,12342)"} true; +L8: + + // $t44 := object::generate_signer($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:29+41 + assume {:print "$at(179,12302,12343)"} true; + call $t44 := $1_object_generate_signer($t22); + if ($abort_flag) { + assume {:print "$at(179,12302,12343)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[object_signer#89]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:13+13 + assume {:print "$track_local(57,5,12):", $t44} $t44 == $t44; + + // $t45 := signer::address_of($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:332:22+27 + assume {:print "$at(179,12405,12432)"} true; + call $t45 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(179,12405,12432)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t46, global(signer::$address_of($t44))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t46 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t44))); + + // assume Identical($t47, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t46), signer::$address_of($t44)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t47 == $1_guid_GUID($1_guid_ID($t46->$guid_creation_num, $1_signer_$address_of($t44)))); + + // $t48 := object::new_event_handle($t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:336:30+40 + assume {:print "$at(179,12523,12563)"} true; + call $t48 := $1_object_new_event_handle'$1_collection_MutationEvent'($t44); + if ($abort_flag) { + assume {:print "$at(179,12523,12563)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t49 := pack collection::Collection($t45, $t1, $t2, $t4, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:26+203 + assume {:print "$at(179,12371,12574)"} true; + $t49 := $1_collection_Collection($t45, $t1, $t2, $t4, $t48); + + // trace_local[collection#90]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:13+10 + assume {:print "$track_local(57,5,5):", $t49} $t49 == $t49; + + // move_to($t49, $t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:338:9+7 + assume {:print "$at(179,12584,12591)"} true; + if ($ResourceExists($1_collection_Collection_$memory, $t44->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $t44->$addr, $t49); + } + if ($abort_flag) { + assume {:print "$at(179,12584,12591)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t50 := opaque begin: option::is_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume {:print "$at(179,12634,12658)"} true; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsValid'bool'($t50); + + // assume Eq($t50, option::spec_is_some($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsEqual'bool'($t50, $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28)); + + // $t50 := opaque end: option::is_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + + // if ($t50) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:9+165 + if ($t50) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:21+14 + assume {:print "$at(179,12682,12696)"} true; +L10: + + // $t51 := opaque begin: option::destroy_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + + // assume Identical($t52, option::spec_is_none($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume ($t52 == $1_option_spec_is_none'$1_collection_ConcurrentSupply'($t28)); + + // if ($t52) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + if ($t52) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L21: + + // assume And(option::spec_is_none($t28), Eq(262145, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume ($1_option_spec_is_none'$1_collection_ConcurrentSupply'($t28) && $IsEqual'num'(262145, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + goto L15; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L20: + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume $IsValid'$1_collection_ConcurrentSupply'($t51); + + // assume Eq($t51, option::spec_borrow($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume $IsEqual'$1_collection_ConcurrentSupply'($t51, $1_option_spec_borrow'$1_collection_ConcurrentSupply'($t28)); + + // $t51 := opaque end: option::destroy_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + + // move_to($t51, $t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+7 + if ($ResourceExists($1_collection_ConcurrentSupply_$memory, $t44->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $t44->$addr, $t51); + } + if ($abort_flag) { + assume {:print "$at(179,12674,12681)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+53 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:34+6 + assume {:print "$at(179,12778,12784)"} true; +L9: + + // opaque begin: option::destroy_none($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // assume Identical($t53, option::spec_is_some($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume ($t53 == $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28)); + + // if ($t53) goto L23 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + if ($t53) { goto L23; } else { goto L22; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L23: + + // assume And(option::spec_is_some($t28), Eq(262144, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume ($1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28) && $IsEqual'num'(262144, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + goto L15; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L22: + + // opaque end: option::destroy_none($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; +L11: + + // $t54 := copy($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; + $t54 := $t13; + + // $t55 := opaque begin: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_some($t54)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsEqual'bool'($t55, $1_option_spec_is_some'$1_royalty_Royalty'($t54)); + + // $t55 := opaque end: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:9+117 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:27+16 + assume {:print "$at(179,12865,12881)"} true; +L13: + + // $t56 := borrow_local($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:61+12 + assume {:print "$at(179,12899,12911)"} true; + $t56 := $Mutation($Local(13), EmptyVec(), $t13); + + // $t57 := opaque begin: option::extract($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // $t58 := read_ref($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t58 := $Dereference($t56); + + // assume Identical($t59, option::spec_is_none($t56)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($t59 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56))); + + // if ($t59) goto L25 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + if ($t59) { goto L25; } else { goto L26; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L25: + + // assume And(option::spec_is_none($t56), Eq(262145, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56)) && $IsEqual'num'(262145, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + goto L15; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L24: + + // $t56 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t56 := $UpdateMutation($t56, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t56), Le(Len(select option::Option.vec($t56)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t56)) && (LenVec($Dereference($t56)->$vec) <= 1)); + + // assume WellFormed($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsValid'$1_royalty_Royalty'($t57); + + // assume Eq($t57, option::spec_borrow($t58)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsEqual'$1_royalty_Royalty'($t57, $1_option_spec_borrow'$1_royalty_Royalty'($t58)); + + // assume option::spec_is_none($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56)); + + // $t57 := opaque end: option::extract($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // pack_ref_deep($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // write_back[LocalRoot($t13)@]($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t13 := $Dereference($t56); + + // trace_local[royalty#86]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$track_local(57,5,13):", $t13} $t13 == $t13; + + // royalty::init($t22, $t57) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:13+62 + call $1_royalty_init($t22, $t57); + if ($abort_flag) { + assume {:print "$at(179,12851,12913)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:58+16 + assume {:print "$at(179,12983,12999)"} true; +L12: + + // $t60 := object::generate_transfer_ref($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:28+47 + assume {:print "$at(179,12953,13000)"} true; + call $t60 := $1_object_generate_transfer_ref($t22); + if ($abort_flag) { + assume {:print "$at(179,12953,13000)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#91]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:13+12 + assume {:print "$track_local(57,5,16):", $t60} $t60 == $t60; + + // object::disable_ungated_transfer($t60) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:351:9+47 + assume {:print "$at(179,13010,13057)"} true; + call $1_object_disable_ungated_transfer($t60); + if ($abort_flag) { + assume {:print "$at(179,13010,13057)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:353:9+15 + assume {:print "$at(179,13068,13083)"} true; + assume {:print "$track_return(57,5,0):", $t22} $t22 == $t22; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; +L14: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; + $ret0 := $t22; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + + // label L26 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L26: + + // drop($t56) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L24 at :1:1+10 + goto L24; + +} + +// fun collection::create_unlimited_collection [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+757 +procedure {:timeLimit 80} $1_collection_create_unlimited_collection$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_option_Option'$1_royalty_Royalty', _$t4: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t5: $1_collection_Collection; + var $t6: Vec (int); + var $t7: $1_object_ConstructorRef; + var $t8: $1_object_ConstructorRef; + var $t9: $signer; + var $t10: $1_string_String; + var $t11: $1_string_String; + var $t12: $signer; + var $t13: $1_option_Option'$1_royalty_Royalty'; + var $t14: $1_collection_ConcurrentSupply; + var $t15: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t16: $1_object_TransferRef; + var $t17: $1_string_String; + var $t18: Vec (int); + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $1_object_ConstructorRef; + var $t23: $1_aggregator_v2_Aggregator'u64'; + var $t24: bool; + var $t25: $1_aggregator_v2_Aggregator'u64'; + var $t26: bool; + var $t27: $1_collection_ConcurrentSupply; + var $t28: $1_option_Option'$1_collection_ConcurrentSupply'; + var $t29: int; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: $signer; + var $t45: int; + var $t46: $1_object_ObjectCore; + var $t47: $1_guid_GUID; + var $t48: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t49: $1_collection_Collection; + var $t50: bool; + var $t51: $1_collection_ConcurrentSupply; + var $t52: bool; + var $t53: bool; + var $t54: $1_option_Option'$1_royalty_Royalty'; + var $t55: bool; + var $t56: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t57: $1_royalty_Royalty; + var $t58: $1_option_Option'$1_royalty_Royalty'; + var $t59: bool; + var $t60: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_option_Option'$1_royalty_Royalty'; + var $t4: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_collection_ConcurrentSupply'': $1_option_Option'$1_collection_ConcurrentSupply'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$at(179,9228,9229)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,2):", $t2} $t2 == $t2; + + // trace_local[royalty]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:243:5+1 + assume {:print "$track_local(57,5,4):", $t4} $t4 == $t4; + + // $t18 := collection::create_collection_seed($t2) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:250:31+29 + assume {:print "$at(179,9454,9483)"} true; + call $t18 := $1_collection_create_collection_seed($t2); + if ($abort_flag) { + assume {:print "$at(179,9454,9483)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[collection_seed]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:250:13+15 + assume {:print "$track_local(57,5,6):", $t18} $t18 == $t18; + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, object::spec_create_object_address($t20, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t21 == $1_object_spec_create_object_address($t20, $t18)); + + // $t22 := object::create_named_object($t0, $t18) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:251:31+53 + assume {:print "$at(179,9515,9568)"} true; + call $t22 := $1_object_create_named_object($t0, $t18); + if ($abort_flag) { + assume {:print "$at(179,9515,9568)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[constructor_ref]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:251:13+15 + assume {:print "$track_local(57,5,7):", $t22} $t22 == $t22; + + // $t23 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + havoc $t24; + + // if ($t24) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + if ($t24) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 +L17: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + goto L15; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 +L16: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + assume {:print "$at(179,9639,9683)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t23); + + // $t23 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:254:29+44 + + // $t25 := opaque begin: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + havoc $t26; + + // if ($t26) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + if ($t26) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 +L19: + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + goto L15; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 +L18: + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + assume {:print "$at(179,9711,9755)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t25); + + // $t25 := opaque end: aggregator_v2::create_unbounded_aggregator() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:255:27+44 + + // $t27 := pack collection::ConcurrentSupply($t23, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:253:22+174 + assume {:print "$at(179,9592,9766)"} true; + $t27 := $1_collection_ConcurrentSupply($t23, $t25); + + // trace_local[supply]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:253:13+6 + assume {:print "$track_local(57,5,14):", $t27} $t27 == $t27; + + // $t28 := opaque begin: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume {:print "$at(179,9948,9968)"} true; + + // assume And(WellFormed($t28), Le(Len(select option::Option.vec($t28)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume ($IsValid'$1_option_Option'$1_collection_ConcurrentSupply''($t28) && (LenVec($t28->$vec) <= 1)); + + // assume Eq>($t28, option::spec_some($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + assume $IsEqual'$1_option_Option'$1_collection_ConcurrentSupply''($t28, $1_option_spec_some'$1_collection_ConcurrentSupply'($t27)); + + // $t28 := opaque end: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:265:13+20 + + // trace_local[supply#88]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:323:9+6 + assume {:print "$at(179,11897,11903)"} true; + assume {:print "$track_local(57,5,15):", $t28} $t28 == $t28; + + // trace_local[uri#87]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:322:9+3 + assume {:print "$at(179,11876,11879)"} true; + assume {:print "$track_local(57,5,17):", $t4} $t4 == $t4; + + // $t13 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$at(179,11842,11849)"} true; + $t13 := $t3; + + // trace_local[royalty#86]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$track_local(57,5,13):", $t13} $t13 == $t13; + + // trace_local[name#85]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:320:9+4 + assume {:print "$at(179,11820,11824)"} true; + assume {:print "$track_local(57,5,11):", $t2} $t2 == $t2; + + // trace_local[description#84]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:319:9+11 + assume {:print "$at(179,11791,11802)"} true; + assume {:print "$track_local(57,5,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#83]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:318:9+15 + assume {:print "$at(179,11750,11765)"} true; + assume {:print "$track_local(57,5,8):", $t22} $t22 == $t22; + + // trace_local[creator#82]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:317:9+7 + assume {:print "$at(179,11724,11731)"} true; + assume {:print "$track_local(57,5,9):", $t0} $t0 == $t0; + + // $t29 := string::length($t2) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:17+21 + assume {:print "$at(179,11961,11982)"} true; + call $t29 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(179,11961,11982)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t30 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:42+26 + $t30 := 128; + assume $IsValid'u64'($t30); + + // $t31 := <=($t29, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:39+2 + call $t31 := $Le($t29, $t30); + + // if ($t31) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + if ($t31) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L0: + + // $t32 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:90+25 + assume {:print "$at(179,12034,12059)"} true; + $t32 := 3; + assume $IsValid'u64'($t32); + + // $t33 := error::out_of_range($t32) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:70+46 + call $t33 := $1_error_out_of_range($t32); + if ($abort_flag) { + assume {:print "$at(179,12014,12060)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + assume {:print "$track_abort(57,5):", $t33} $t33 == $t33; + + // $t19 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + $t19 := $t33; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:32+4 + assume {:print "$at(179,12094,12098)"} true; +L2: + + // $t34 := string::length($t4) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:17+20 + assume {:print "$at(179,12079,12099)"} true; + call $t34 := $1_string_length($t4); + if ($abort_flag) { + assume {:print "$at(179,12079,12099)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t35 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:41+14 + $t35 := 512; + assume $IsValid'u64'($t35); + + // $t36 := <=($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:38+2 + call $t36 := $Le($t34, $t35); + + // if ($t36) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + if ($t36) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L3: + + // $t37 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:77+13 + assume {:print "$at(179,12139,12152)"} true; + $t37 := 4; + assume $IsValid'u64'($t37); + + // $t38 := error::out_of_range($t37) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:57+34 + call $t38 := $1_error_out_of_range($t37); + if ($abort_flag) { + assume {:print "$at(179,12119,12153)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + assume {:print "$track_abort(57,5):", $t38} $t38 == $t38; + + // $t19 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + $t19 := $t38; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:32+12 + assume {:print "$at(179,12187,12199)"} true; +L5: + + // $t39 := string::length($t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:17+28 + assume {:print "$at(179,12172,12200)"} true; + call $t39 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,12172,12200)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t40 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:49+22 + $t40 := 2048; + assume $IsValid'u64'($t40); + + // $t41 := <=($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:46+2 + call $t41 := $Le($t39, $t40); + + // if ($t41) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + if ($t41) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L6: + + // $t42 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:93+21 + assume {:print "$at(179,12248,12269)"} true; + $t42 := 5; + assume $IsValid'u64'($t42); + + // $t43 := error::out_of_range($t42) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:73+42 + call $t43 := $1_error_out_of_range($t42); + if ($abort_flag) { + assume {:print "$at(179,12228,12270)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + assume {:print "$track_abort(57,5):", $t43} $t43 == $t43; + + // $t19 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + $t19 := $t43; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:53+16 + assume {:print "$at(179,12326,12342)"} true; +L8: + + // $t44 := object::generate_signer($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:29+41 + assume {:print "$at(179,12302,12343)"} true; + call $t44 := $1_object_generate_signer($t22); + if ($abort_flag) { + assume {:print "$at(179,12302,12343)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[object_signer#89]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:13+13 + assume {:print "$track_local(57,5,12):", $t44} $t44 == $t44; + + // $t45 := signer::address_of($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:332:22+27 + assume {:print "$at(179,12405,12432)"} true; + call $t45 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(179,12405,12432)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t46, global(signer::$address_of($t44))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t46 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t44))); + + // assume Identical($t47, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t46), signer::$address_of($t44)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t47 == $1_guid_GUID($1_guid_ID($t46->$guid_creation_num, $1_signer_$address_of($t44)))); + + // $t48 := object::new_event_handle($t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:336:30+40 + assume {:print "$at(179,12523,12563)"} true; + call $t48 := $1_object_new_event_handle'$1_collection_MutationEvent'($t44); + if ($abort_flag) { + assume {:print "$at(179,12523,12563)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t49 := pack collection::Collection($t45, $t1, $t2, $t4, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:26+203 + assume {:print "$at(179,12371,12574)"} true; + $t49 := $1_collection_Collection($t45, $t1, $t2, $t4, $t48); + + // trace_local[collection#90]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:13+10 + assume {:print "$track_local(57,5,5):", $t49} $t49 == $t49; + + // move_to($t49, $t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:338:9+7 + assume {:print "$at(179,12584,12591)"} true; + if ($ResourceExists($1_collection_Collection_$memory, $t44->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $t44->$addr, $t49); + } + if ($abort_flag) { + assume {:print "$at(179,12584,12591)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // $t50 := opaque begin: option::is_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume {:print "$at(179,12634,12658)"} true; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsValid'bool'($t50); + + // assume Eq($t50, option::spec_is_some($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsEqual'bool'($t50, $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28)); + + // $t50 := opaque end: option::is_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + + // if ($t50) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:9+165 + if ($t50) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:21+14 + assume {:print "$at(179,12682,12696)"} true; +L10: + + // $t51 := opaque begin: option::destroy_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + + // assume Identical($t52, option::spec_is_none($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume ($t52 == $1_option_spec_is_none'$1_collection_ConcurrentSupply'($t28)); + + // if ($t52) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + if ($t52) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L21: + + // assume And(option::spec_is_none($t28), Eq(262145, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume ($1_option_spec_is_none'$1_collection_ConcurrentSupply'($t28) && $IsEqual'num'(262145, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + goto L15; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L20: + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume $IsValid'$1_collection_ConcurrentSupply'($t51); + + // assume Eq($t51, option::spec_borrow($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume $IsEqual'$1_collection_ConcurrentSupply'($t51, $1_option_spec_borrow'$1_collection_ConcurrentSupply'($t28)); + + // $t51 := opaque end: option::destroy_some($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + + // move_to($t51, $t44) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+7 + if ($ResourceExists($1_collection_ConcurrentSupply_$memory, $t44->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $t44->$addr, $t51); + } + if ($abort_flag) { + assume {:print "$at(179,12674,12681)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+53 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:34+6 + assume {:print "$at(179,12778,12784)"} true; +L9: + + // opaque begin: option::destroy_none($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // assume Identical($t53, option::spec_is_some($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume ($t53 == $1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28)); + + // if ($t53) goto L23 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + if ($t53) { goto L23; } else { goto L22; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L23: + + // assume And(option::spec_is_some($t28), Eq(262144, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume ($1_option_spec_is_some'$1_collection_ConcurrentSupply'($t28) && $IsEqual'num'(262144, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + goto L15; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L22: + + // opaque end: option::destroy_none($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; +L11: + + // $t54 := copy($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; + $t54 := $t13; + + // $t55 := opaque begin: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_some($t54)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsEqual'bool'($t55, $1_option_spec_is_some'$1_royalty_Royalty'($t54)); + + // $t55 := opaque end: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:9+117 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:27+16 + assume {:print "$at(179,12865,12881)"} true; +L13: + + // $t56 := borrow_local($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:61+12 + assume {:print "$at(179,12899,12911)"} true; + $t56 := $Mutation($Local(13), EmptyVec(), $t13); + + // $t57 := opaque begin: option::extract($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // $t58 := read_ref($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t58 := $Dereference($t56); + + // assume Identical($t59, option::spec_is_none($t56)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($t59 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56))); + + // if ($t59) goto L25 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + if ($t59) { goto L25; } else { goto L26; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L25: + + // assume And(option::spec_is_none($t56), Eq(262145, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56)) && $IsEqual'num'(262145, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + goto L15; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L24: + + // $t56 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t56 := $UpdateMutation($t56, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t56), Le(Len(select option::Option.vec($t56)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t56)) && (LenVec($Dereference($t56)->$vec) <= 1)); + + // assume WellFormed($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsValid'$1_royalty_Royalty'($t57); + + // assume Eq($t57, option::spec_borrow($t58)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsEqual'$1_royalty_Royalty'($t57, $1_option_spec_borrow'$1_royalty_Royalty'($t58)); + + // assume option::spec_is_none($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t56)); + + // $t57 := opaque end: option::extract($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // assert Le(Len(select option::Option.vec($t56)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t56)->$vec) <= 1); + + // write_back[LocalRoot($t13)@]($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + $t13 := $Dereference($t56); + + // trace_local[royalty#86]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$track_local(57,5,13):", $t13} $t13 == $t13; + + // royalty::init($t22, $t57) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:13+62 + call $1_royalty_init($t22, $t57); + if ($abort_flag) { + assume {:print "$at(179,12851,12913)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:58+16 + assume {:print "$at(179,12983,12999)"} true; +L12: + + // $t60 := object::generate_transfer_ref($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:28+47 + assume {:print "$at(179,12953,13000)"} true; + call $t60 := $1_object_generate_transfer_ref($t22); + if ($abort_flag) { + assume {:print "$at(179,12953,13000)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[transfer_ref#91]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:13+12 + assume {:print "$track_local(57,5,16):", $t60} $t60 == $t60; + + // object::disable_ungated_transfer($t60) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:351:9+47 + assume {:print "$at(179,13010,13057)"} true; + call $1_object_disable_ungated_transfer($t60); + if ($abort_flag) { + assume {:print "$at(179,13010,13057)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(57,5):", $t19} $t19 == $t19; + goto L15; + } + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:353:9+15 + assume {:print "$at(179,13068,13083)"} true; + assume {:print "$track_return(57,5,0):", $t22} $t22 == $t22; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; +L14: + + // return $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; + $ret0 := $t22; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:267:5+1 + assume {:print "$at(179,9984,9985)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + + // label L26 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L26: + + // drop($t56) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L24 at :1:1+10 + goto L24; + +} + +// fun collection::create_unlimited_collection_as_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+569 +procedure {:timeLimit 80} $1_collection_create_unlimited_collection_as_owner$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_option_Option'$1_royalty_Royalty', _$t4: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t5: $1_object_ConstructorRef; + var $t6: $1_object_TransferRef; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_option_Option'$1_royalty_Royalty'; + var $t4: $1_string_String; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$at(179,10259,10260)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$track_local(57,6,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$track_local(57,6,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$track_local(57,6,2):", $t2} $t2 == $t2; + + // trace_local[royalty]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$track_local(57,6,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:272:5+1 + assume {:print "$track_local(57,6,4):", $t4} $t4 == $t4; + + // $t7 := features::is_collection_owner_enabled() on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:17+39 + assume {:print "$at(179,10480,10519)"} true; + call $t7 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(179,10480,10519)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,6):", $t8} $t8 == $t8; + goto L4; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 + assume {:print "$at(179,10472,10573)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 +L0: + + // $t9 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:77+31 + assume {:print "$at(179,10540,10571)"} true; + $t9 := 11; + assume $IsValid'u64'($t9); + + // $t10 := error::unavailable($t9) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:58+51 + call $t10 := $1_error_unavailable($t9); + if ($abort_flag) { + assume {:print "$at(179,10521,10572)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,6):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 + assume {:print "$at(179,10472,10573)"} true; + assume {:print "$track_abort(57,6):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 + $t8 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:279:9+101 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:282:13+7 + assume {:print "$at(179,10647,10654)"} true; +L2: + + // $t11 := collection::create_unlimited_collection($t0, $t1, $t2, $t3, $t4) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:281:31+140 + assume {:print "$at(179,10606,10746)"} true; + call $t11 := $1_collection_create_unlimited_collection($t0, $t1, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(179,10606,10746)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,6):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[constructor_ref]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:281:13+15 + assume {:print "$track_local(57,6,5):", $t11} $t11 == $t11; + + // $t12 := object::generate_transfer_ref($t11) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:357:28+46 + assume {:print "$at(179,13193,13239)"} true; + call $t12 := $1_object_generate_transfer_ref($t11); + if ($abort_flag) { + assume {:print "$at(179,13193,13239)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,6):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[transfer_ref#93]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:357:13+12 + assume {:print "$track_local(57,6,6):", $t12} $t12 == $t12; + + // object::enable_ungated_transfer($t12) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:358:9+46 + assume {:print "$at(179,13249,13295)"} true; + call $1_object_enable_ungated_transfer($t12); + if ($abort_flag) { + assume {:print "$at(179,13249,13295)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,6):", $t8} $t8 == $t8; + goto L4; + } + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:289:9+15 + assume {:print "$at(179,10807,10822)"} true; + assume {:print "$track_return(57,6,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:290:5+1 + assume {:print "$at(179,10827,10828)"} true; +L3: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:290:5+1 + assume {:print "$at(179,10827,10828)"} true; + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:290:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:290:5+1 + assume {:print "$at(179,10827,10828)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun collection::create_untracked_collection [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+559 +procedure {:timeLimit 80} $1_collection_create_untracked_collection$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_option_Option'$1_royalty_Royalty', _$t4: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t5: $1_collection_Collection; + var $t6: Vec (int); + var $t7: $1_object_ConstructorRef; + var $t8: $1_object_ConstructorRef; + var $t9: $signer; + var $t10: $1_string_String; + var $t11: $1_string_String; + var $t12: $signer; + var $t13: $1_option_Option'$1_royalty_Royalty'; + var $t14: $1_option_Option'$1_collection_FixedSupply'; + var $t15: $1_object_TransferRef; + var $t16: $1_string_String; + var $t17: Vec (int); + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $1_object_ConstructorRef; + var $t22: $1_option_Option'$1_collection_FixedSupply'; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: $signer; + var $t39: int; + var $t40: $1_object_ObjectCore; + var $t41: $1_guid_GUID; + var $t42: $1_event_EventHandle'$1_collection_MutationEvent'; + var $t43: $1_collection_Collection; + var $t44: bool; + var $t45: $1_collection_FixedSupply; + var $t46: bool; + var $t47: bool; + var $t48: $1_option_Option'$1_royalty_Royalty'; + var $t49: bool; + var $t50: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t51: $1_royalty_Royalty; + var $t52: $1_option_Option'$1_royalty_Royalty'; + var $t53: bool; + var $t54: $1_object_TransferRef; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_option_Option'$1_royalty_Royalty'; + var $t4: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_collection_FixedSupply'': $1_option_Option'$1_collection_FixedSupply'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$at(179,11099,11100)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$track_local(57,7,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$track_local(57,7,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$track_local(57,7,2):", $t2} $t2 == $t2; + + // trace_local[royalty]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$track_local(57,7,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:295:5+1 + assume {:print "$track_local(57,7,4):", $t4} $t4 == $t4; + + // $t17 := collection::create_collection_seed($t2) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:302:31+29 + assume {:print "$at(179,11318,11347)"} true; + call $t17 := $1_collection_create_collection_seed($t2); + if ($abort_flag) { + assume {:print "$at(179,11318,11347)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_local[collection_seed]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:302:13+15 + assume {:print "$track_local(57,7,6):", $t17} $t17 == $t17; + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, object::spec_create_object_address($t19, $t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t20 == $1_object_spec_create_object_address($t19, $t17)); + + // $t21 := object::create_named_object($t0, $t17) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:303:31+53 + assume {:print "$at(179,11379,11432)"} true; + call $t21 := $1_object_create_named_object($t0, $t17); + if ($abort_flag) { + assume {:print "$at(179,11379,11432)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_local[constructor_ref]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:303:13+15 + assume {:print "$track_local(57,7,7):", $t21} $t21 == $t21; + + // $t22 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:312:13+14 + assume {:print "$at(179,11627,11641)"} true; + + // assume And(WellFormed($t22), Le(Len(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:312:13+14 + assume ($IsValid'$1_option_Option'$1_collection_FixedSupply''($t22) && (LenVec($t22->$vec) <= 1)); + + // assume Eq>($t22, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:312:13+14 + assume $IsEqual'$1_option_Option'$1_collection_FixedSupply''($t22, $1_option_spec_none'$1_collection_FixedSupply'()); + + // $t22 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:312:13+14 + + // trace_local[supply#100]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:323:9+6 + assume {:print "$at(179,11897,11903)"} true; + assume {:print "$track_local(57,7,14):", $t22} $t22 == $t22; + + // trace_local[uri#99]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:322:9+3 + assume {:print "$at(179,11876,11879)"} true; + assume {:print "$track_local(57,7,16):", $t4} $t4 == $t4; + + // $t13 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$at(179,11842,11849)"} true; + $t13 := $t3; + + // trace_local[royalty#98]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:321:9+7 + assume {:print "$track_local(57,7,13):", $t13} $t13 == $t13; + + // trace_local[name#97]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:320:9+4 + assume {:print "$at(179,11820,11824)"} true; + assume {:print "$track_local(57,7,11):", $t2} $t2 == $t2; + + // trace_local[description#96]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:319:9+11 + assume {:print "$at(179,11791,11802)"} true; + assume {:print "$track_local(57,7,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#95]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:318:9+15 + assume {:print "$at(179,11750,11765)"} true; + assume {:print "$track_local(57,7,8):", $t21} $t21 == $t21; + + // trace_local[creator#94]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:317:9+7 + assume {:print "$at(179,11724,11731)"} true; + assume {:print "$track_local(57,7,9):", $t0} $t0 == $t0; + + // $t23 := string::length($t2) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:17+21 + assume {:print "$at(179,11961,11982)"} true; + call $t23 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(179,11961,11982)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // $t24 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:42+26 + $t24 := 128; + assume $IsValid'u64'($t24); + + // $t25 := <=($t23, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:39+2 + call $t25 := $Le($t23, $t24); + + // if ($t25) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 +L0: + + // $t26 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:90+25 + assume {:print "$at(179,12034,12059)"} true; + $t26 := 3; + assume $IsValid'u64'($t26); + + // $t27 := error::out_of_range($t26) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:70+46 + call $t27 := $1_error_out_of_range($t26); + if ($abort_flag) { + assume {:print "$at(179,12014,12060)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + assume {:print "$at(179,11953,12061)"} true; + assume {:print "$track_abort(57,7):", $t27} $t27 == $t27; + + // $t18 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + $t18 := $t27; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:325:9+108 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:32+4 + assume {:print "$at(179,12094,12098)"} true; +L2: + + // $t28 := string::length($t4) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:17+20 + assume {:print "$at(179,12079,12099)"} true; + call $t28 := $1_string_length($t4); + if ($abort_flag) { + assume {:print "$at(179,12079,12099)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // $t29 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:41+14 + $t29 := 512; + assume $IsValid'u64'($t29); + + // $t30 := <=($t28, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:38+2 + call $t30 := $Le($t28, $t29); + + // if ($t30) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + if ($t30) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 +L3: + + // $t31 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:77+13 + assume {:print "$at(179,12139,12152)"} true; + $t31 := 4; + assume $IsValid'u64'($t31); + + // $t32 := error::out_of_range($t31) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:57+34 + call $t32 := $1_error_out_of_range($t31); + if ($abort_flag) { + assume {:print "$at(179,12119,12153)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + assume {:print "$at(179,12071,12154)"} true; + assume {:print "$track_abort(57,7):", $t32} $t32 == $t32; + + // $t18 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + $t18 := $t32; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:326:9+83 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:32+12 + assume {:print "$at(179,12187,12199)"} true; +L5: + + // $t33 := string::length($t1) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:17+28 + assume {:print "$at(179,12172,12200)"} true; + call $t33 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,12172,12200)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // $t34 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:49+22 + $t34 := 2048; + assume $IsValid'u64'($t34); + + // $t35 := <=($t33, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:46+2 + call $t35 := $Le($t33, $t34); + + // if ($t35) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + if ($t35) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 +L6: + + // $t36 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:93+21 + assume {:print "$at(179,12248,12269)"} true; + $t36 := 5; + assume $IsValid'u64'($t36); + + // $t37 := error::out_of_range($t36) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:73+42 + call $t37 := $1_error_out_of_range($t36); + if ($abort_flag) { + assume {:print "$at(179,12228,12270)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + assume {:print "$at(179,12164,12271)"} true; + assume {:print "$track_abort(57,7):", $t37} $t37 == $t37; + + // $t18 := move($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + $t18 := $t37; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:327:9+107 + goto L15; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:53+16 + assume {:print "$at(179,12326,12342)"} true; +L8: + + // $t38 := object::generate_signer($t21) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:29+41 + assume {:print "$at(179,12302,12343)"} true; + call $t38 := $1_object_generate_signer($t21); + if ($abort_flag) { + assume {:print "$at(179,12302,12343)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_local[object_signer#101]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:329:13+13 + assume {:print "$track_local(57,7,12):", $t38} $t38 == $t38; + + // $t39 := signer::address_of($t0) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:332:22+27 + assume {:print "$at(179,12405,12432)"} true; + call $t39 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(179,12405,12432)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // assume Identical($t40, global(signer::$address_of($t38))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t40 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t38))); + + // assume Identical($t41, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t40), signer::$address_of($t38)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t41 == $1_guid_GUID($1_guid_ID($t40->$guid_creation_num, $1_signer_$address_of($t38)))); + + // $t42 := object::new_event_handle($t38) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:336:30+40 + assume {:print "$at(179,12523,12563)"} true; + call $t42 := $1_object_new_event_handle'$1_collection_MutationEvent'($t38); + if ($abort_flag) { + assume {:print "$at(179,12523,12563)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // $t43 := pack collection::Collection($t39, $t1, $t2, $t4, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:26+203 + assume {:print "$at(179,12371,12574)"} true; + $t43 := $1_collection_Collection($t39, $t1, $t2, $t4, $t42); + + // trace_local[collection#102]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:331:13+10 + assume {:print "$track_local(57,7,5):", $t43} $t43 == $t43; + + // move_to($t43, $t38) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:338:9+7 + assume {:print "$at(179,12584,12591)"} true; + if ($ResourceExists($1_collection_Collection_$memory, $t38->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $t38->$addr, $t43); + } + if ($abort_flag) { + assume {:print "$at(179,12584,12591)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // $t44 := opaque begin: option::is_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume {:print "$at(179,12634,12658)"} true; + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsValid'bool'($t44); + + // assume Eq($t44, option::spec_is_some($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + assume $IsEqual'bool'($t44, $1_option_spec_is_some'$1_collection_FixedSupply'($t22)); + + // $t44 := opaque end: option::is_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:13+24 + + // if ($t44) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:340:9+165 + if ($t44) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:21+14 + assume {:print "$at(179,12682,12696)"} true; +L10: + + // $t45 := opaque begin: option::destroy_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + + // assume Identical($t46, option::spec_is_none($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume ($t46 == $1_option_spec_is_none'$1_collection_FixedSupply'($t22)); + + // if ($t46) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + if ($t46) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L17: + + // assume And(option::spec_is_none($t22), Eq(262145, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume ($1_option_spec_is_none'$1_collection_FixedSupply'($t22) && $IsEqual'num'(262145, $t18)); + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + goto L15; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 +L16: + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume {:print "$at(179,12698,12726)"} true; + assume $IsValid'$1_collection_FixedSupply'($t45); + + // assume Eq($t45, option::spec_borrow($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + assume $IsEqual'$1_collection_FixedSupply'($t45, $1_option_spec_borrow'$1_collection_FixedSupply'($t22)); + + // $t45 := opaque end: option::destroy_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:37+28 + + // move_to($t45, $t38) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+7 + if ($ResourceExists($1_collection_FixedSupply_$memory, $t38->$addr)) { + call $ExecFailureAbort(); + } else { + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $t38->$addr, $t45); + } + if ($abort_flag) { + assume {:print "$at(179,12674,12681)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:341:13+53 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:34+6 + assume {:print "$at(179,12778,12784)"} true; +L9: + + // opaque begin: option::destroy_none($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // assume Identical($t47, option::spec_is_some($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume ($t47 == $1_option_spec_is_some'$1_collection_FixedSupply'($t22)); + + // if ($t47) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + if ($t47) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L19: + + // assume And(option::spec_is_some($t22), Eq(262144, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume ($1_option_spec_is_some'$1_collection_FixedSupply'($t22) && $IsEqual'num'(262144, $t18)); + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + goto L15; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 +L18: + + // opaque end: option::destroy_none($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:343:13+28 + assume {:print "$at(179,12757,12785)"} true; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; +L11: + + // $t48 := copy($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:29+8 + assume {:print "$at(179,12826,12834)"} true; + $t48 := $t13; + + // $t49 := opaque begin: option::is_some($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsValid'bool'($t49); + + // assume Eq($t49, option::spec_is_some($t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + assume $IsEqual'bool'($t49, $1_option_spec_is_some'$1_royalty_Royalty'($t48)); + + // $t49 := opaque end: option::is_some($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:13+25 + + // if ($t49) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:346:9+117 + if ($t49) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:27+16 + assume {:print "$at(179,12865,12881)"} true; +L13: + + // $t50 := borrow_local($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:61+12 + assume {:print "$at(179,12899,12911)"} true; + $t50 := $Mutation($Local(13), EmptyVec(), $t13); + + // $t51 := opaque begin: option::extract($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // $t52 := read_ref($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + $t52 := $Dereference($t50); + + // assume Identical($t53, option::spec_is_none($t50)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($t53 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t50))); + + // if ($t53) goto L21 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + if ($t53) { goto L21; } else { goto L22; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L21: + + // assume And(option::spec_is_none($t50), Eq(262145, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t50)) && $IsEqual'num'(262145, $t18)); + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + goto L15; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 +L20: + + // $t50 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t50 := $UpdateMutation($t50, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t50), Le(Len(select option::Option.vec($t50)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t50)) && (LenVec($Dereference($t50)->$vec) <= 1)); + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsValid'$1_royalty_Royalty'($t51); + + // assume Eq($t51, option::spec_borrow($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $IsEqual'$1_royalty_Royalty'($t51, $1_option_spec_borrow'$1_royalty_Royalty'($t52)); + + // assume option::spec_is_none($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t50)); + + // $t51 := opaque end: option::extract($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + + // assert Le(Len(select option::Option.vec($t50)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t50)->$vec) <= 1); + + // write_back[LocalRoot($t13)@]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$at(179,12883,12912)"} true; + $t13 := $Dereference($t50); + + // trace_local[royalty#98]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:45+29 + assume {:print "$track_local(57,7,13):", $t13} $t13 == $t13; + + // royalty::init($t21, $t51) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:347:13+62 + call $1_royalty_init($t21, $t51); + if ($abort_flag) { + assume {:print "$at(179,12851,12913)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:58+16 + assume {:print "$at(179,12983,12999)"} true; +L12: + + // $t54 := object::generate_transfer_ref($t21) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:28+47 + assume {:print "$at(179,12953,13000)"} true; + call $t54 := $1_object_generate_transfer_ref($t21); + if ($abort_flag) { + assume {:print "$at(179,12953,13000)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_local[transfer_ref#103]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:350:13+12 + assume {:print "$track_local(57,7,15):", $t54} $t54 == $t54; + + // object::disable_ungated_transfer($t54) on_abort goto L15 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:351:9+47 + assume {:print "$at(179,13010,13057)"} true; + call $1_object_disable_ungated_transfer($t54); + if ($abort_flag) { + assume {:print "$at(179,13010,13057)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(57,7):", $t18} $t18 == $t18; + goto L15; + } + + // trace_return[0]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:353:9+15 + assume {:print "$at(179,13068,13083)"} true; + assume {:print "$track_return(57,7,0):", $t21} $t21 == $t21; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:314:5+1 + assume {:print "$at(179,11657,11658)"} true; +L14: + + // return $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:314:5+1 + assume {:print "$at(179,11657,11658)"} true; + $ret0 := $t21; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:314:5+1 +L15: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:314:5+1 + assume {:print "$at(179,11657,11658)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t50) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L20 at :1:1+10 + goto L20; + +} + +// fun collection::decrement_supply [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+2300 +procedure {:inline 1} $1_collection_decrement_supply(_$t0: $1_object_Object'$1_collection_Collection', _$t1: int, _$t2: $1_option_Option'u64', _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t5: $Mutation ($1_collection_FixedSupply); + var $t6: $Mutation ($1_collection_UnlimitedSupply); + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: $Mutation ($1_collection_ConcurrentSupply); + var $t11: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: $1_collection_Burn; + var $t16: bool; + var $t17: $Mutation ($1_collection_FixedSupply); + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $Mutation (int); + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: $1_collection_Burn; + var $t26: $Mutation ($1_event_EventHandle'$1_collection_BurnEvent'); + var $t27: int; + var $t28: bool; + var $t29: $1_collection_BurnEvent; + var $t30: bool; + var $t31: $Mutation ($1_collection_UnlimitedSupply); + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: $Mutation (int); + var $t36: bool; + var $t37: int; + var $t38: bool; + var $t39: $1_collection_Burn; + var $t40: $Mutation ($1_event_EventHandle'$1_collection_BurnEvent'); + var $t41: int; + var $t42: bool; + var $t43: $1_collection_BurnEvent; + var $t0: $1_object_Object'$1_collection_Collection'; + var $t1: int; + var $t2: $1_option_Option'u64'; + var $t3: int; + var $temp_0'$1_collection_FixedSupply': $1_collection_FixedSupply; + var $temp_0'$1_collection_UnlimitedSupply': $1_collection_UnlimitedSupply; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$at(179,17013,17014)"} true; + assume {:print "$track_local(57,9,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,1):", $t1} $t1 == $t1; + + // trace_local[index]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,2):", $t2} $t2 == $t2; + + // trace_local[previous_owner]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,3):", $t3} $t3 == $t3; + + // $t7 := object::object_address($t0) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:450:31+34 + assume {:print "$at(179,17270,17304)"} true; + call $t7 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,17270,17304)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[collection_addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:450:13+15 + assume {:print "$track_local(57,9,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:13+6 + assume {:print "$at(179,17318,17324)"} true; + $t9 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:452:62+15 + assume {:print "$at(179,17424,17439)"} true; +L1: + + // $t10 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:452:26+17 + assume {:print "$at(179,17388,17405)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,17388,17405)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t11 := borrow_field.current_supply($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:32+26 + assume {:print "$at(179,17473,17499)"} true; + $t11 := $ChildMutation($t10, 0, $Dereference($t10)->$current_supply); + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:60+1 + $t12 := 1; + assume $IsValid'u64'($t12); + + // aggregator_v2::sub($t11, $t12) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + call $t11 := $1_aggregator_v2_sub'u64'($t11, $t12); + if ($abort_flag) { + assume {:print "$at(179,17454,17503)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // write_back[Reference($t10).current_supply (aggregator_v2::Aggregator)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + $t10 := $UpdateMutation($t10, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t10), $Dereference($t11))); + + // write_back[collection::ConcurrentSupply@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // $t13 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + + // assume Identical($t14, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume ($t14 == $1_option_spec_is_none'u64'($t2)); + + // if ($t14) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + if ($t14) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 +L13: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 +L12: + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume $IsValid'u64'($t13); + + // assume Eq($t13, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume $IsEqual'u64'($t13, $1_option_spec_borrow'u64'($t2)); + + // $t13 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + + // $t15 := pack collection::Burn($t7, $t13, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:456:17+188 + assume {:print "$at(179,17547,17735)"} true; + $t15 := $1_collection_Burn($t7, $t13, $t1, $t3); + + // opaque begin: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:455:13+232 + assume {:print "$at(179,17518,17750)"} true; + + // opaque end: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:455:13+232 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + assume {:print "$at(179,17314,19307)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:40+15 + assume {:print "$at(179,17791,17806)"} true; +L0: + + // $t16 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:20+6 + assume {:print "$at(179,17771,17777)"} true; + $t16 := $ResourceExists($1_collection_FixedSupply_$memory, $t7); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:16+1540 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:57+15 + assume {:print "$at(179,17867,17882)"} true; +L4: + + // $t17 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:26+17 + assume {:print "$at(179,17836,17853)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,17836,17853)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[supply#1]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:17+6 + $temp_0'$1_collection_FixedSupply' := $Dereference($t17); + assume {:print "$track_local(57,9,5):", $temp_0'$1_collection_FixedSupply'} $temp_0'$1_collection_FixedSupply' == $temp_0'$1_collection_FixedSupply'; + + // $t18 := get_field.current_supply($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:37+21 + assume {:print "$at(179,17921,17942)"} true; + $t18 := $Dereference($t17)->$current_supply; + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:61+1 + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := -($t18, $t19) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:59+1 + call $t20 := $Sub($t18, $t19); + if ($abort_flag) { + assume {:print "$at(179,17943,17944)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t21 := borrow_field.current_supply($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+21 + $t21 := $ChildMutation($t17, 0, $Dereference($t17)->$current_supply); + + // write_ref($t21, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+49 + $t21 := $UpdateMutation($t21, $t20); + + // write_back[Reference($t17).current_supply (u64)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+49 + $t17 := $UpdateMutation($t17, $Update'$1_collection_FixedSupply'_current_supply($Dereference($t17), $Dereference($t21))); + + // $t22 := features::module_event_migration_enabled() on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:466:17+47 + assume {:print "$at(179,17964,18011)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,17964,18011)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // if ($t22) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:466:13+346 + if ($t22) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:469:37+15 + assume {:print "$at(179,18107,18122)"} true; +L6: + + // $t23 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + + // assume Identical($t24, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume ($t24 == $1_option_spec_is_none'u64'($t2)); + + // if ($t24) goto L22 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + if ($t24) { goto L22; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 +L15: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + goto L11; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 +L14: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume $IsValid'u64'($t23); + + // assume Eq($t23, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume $IsEqual'u64'($t23, $1_option_spec_borrow'u64'($t2)); + + // $t23 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + + // $t25 := pack collection::Burn($t7, $t23, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:468:21+208 + assume {:print "$at(179,18064,18272)"} true; + $t25 := $1_collection_Burn($t7, $t23, $t1, $t3); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:467:17+260 + assume {:print "$at(179,18031,18291)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:467:17+260 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:477:22+6 + assume {:print "$at(179,18360,18366)"} true; +L5: + + // $t26 := borrow_field.burn_events($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:477:17+23 + assume {:print "$at(179,18355,18378)"} true; + $t26 := $ChildMutation($t17, 3, $Dereference($t17)->$burn_events); + + // $t27 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + + // assume Identical($t28, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume ($t28 == $1_option_spec_is_none'u64'($t2)); + + // if ($t28) goto L23 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + if ($t28) { goto L23; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 +L17: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + goto L11; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 +L16: + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume $IsValid'u64'($t27); + + // assume Eq($t27, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume $IsEqual'u64'($t27, $1_option_spec_borrow'u64'($t2)); + + // $t27 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + + // $t29 := pack collection::BurnEvent($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:478:17+108 + assume {:print "$at(179,18396,18504)"} true; + $t29 := $1_collection_BurnEvent($t27, $t1); + + // opaque begin: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + assume {:print "$at(179,18320,18519)"} true; + + // opaque end: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + + // write_back[Reference($t17).burn_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + $t17 := $UpdateMutation($t17, $Update'$1_collection_FixedSupply'_burn_events($Dereference($t17), $Dereference($t26))); + + // write_back[collection::FixedSupply@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:16+1540 + assume {:print "$at(179,17767,19307)"} true; + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:44+15 + assume {:print "$at(179,18564,18579)"} true; +L3: + + // $t30 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:20+6 + assume {:print "$at(179,18540,18546)"} true; + $t30 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t7); + + // if ($t30) goto L7 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:16+771 + if ($t30) { goto L7; } else { goto L2; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:61+15 + assume {:print "$at(179,18644,18659)"} true; +L7: + + // $t31 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:26+17 + assume {:print "$at(179,18609,18626)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t31 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_UnlimitedSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,18609,18626)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[supply#2]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:17+6 + $temp_0'$1_collection_UnlimitedSupply' := $Dereference($t31); + assume {:print "$track_local(57,9,6):", $temp_0'$1_collection_UnlimitedSupply'} $temp_0'$1_collection_UnlimitedSupply' == $temp_0'$1_collection_UnlimitedSupply'; + + // $t32 := get_field.current_supply($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:37+21 + assume {:print "$at(179,18698,18719)"} true; + $t32 := $Dereference($t31)->$current_supply; + + // $t33 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:61+1 + $t33 := 1; + assume $IsValid'u64'($t33); + + // $t34 := -($t32, $t33) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:59+1 + call $t34 := $Sub($t32, $t33); + if ($abort_flag) { + assume {:print "$at(179,18720,18721)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t35 := borrow_field.current_supply($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+21 + $t35 := $ChildMutation($t31, 0, $Dereference($t31)->$current_supply); + + // write_ref($t35, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+49 + $t35 := $UpdateMutation($t35, $t34); + + // write_back[Reference($t31).current_supply (u64)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+49 + $t31 := $UpdateMutation($t31, $Update'$1_collection_UnlimitedSupply'_current_supply($Dereference($t31), $Dereference($t35))); + + // $t36 := features::module_event_migration_enabled() on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:486:17+47 + assume {:print "$at(179,18741,18788)"} true; + call $t36 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,18741,18788)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // if ($t36) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:486:13+346 + if ($t36) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:489:37+15 + assume {:print "$at(179,18884,18899)"} true; +L9: + + // $t37 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + + // assume Identical($t38, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume ($t38 == $1_option_spec_is_none'u64'($t2)); + + // if ($t38) goto L24 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + if ($t38) { goto L24; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 +L19: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + goto L11; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 +L18: + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume $IsValid'u64'($t37); + + // assume Eq($t37, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume $IsEqual'u64'($t37, $1_option_spec_borrow'u64'($t2)); + + // $t37 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + + // $t39 := pack collection::Burn($t7, $t37, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:488:21+208 + assume {:print "$at(179,18841,19049)"} true; + $t39 := $1_collection_Burn($t7, $t37, $t1, $t3); + + // opaque begin: event::emit($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:487:17+260 + assume {:print "$at(179,18808,19068)"} true; + + // opaque end: event::emit($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:487:17+260 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:497:22+6 + assume {:print "$at(179,19137,19143)"} true; +L8: + + // $t40 := borrow_field.burn_events($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:497:17+23 + assume {:print "$at(179,19132,19155)"} true; + $t40 := $ChildMutation($t31, 2, $Dereference($t31)->$burn_events); + + // $t41 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + + // assume Identical($t42, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume ($t42 == $1_option_spec_is_none'u64'($t2)); + + // if ($t42) goto L25 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + if ($t42) { goto L25; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 +L21: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + goto L11; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 +L20: + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume $IsValid'u64'($t41); + + // assume Eq($t41, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume $IsEqual'u64'($t41, $1_option_spec_borrow'u64'($t2)); + + // $t41 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + + // $t43 := pack collection::BurnEvent($t41, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:498:17+108 + assume {:print "$at(179,19173,19281)"} true; + $t43 := $1_collection_BurnEvent($t41, $t1); + + // opaque begin: event::emit_event($t40, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + assume {:print "$at(179,19097,19296)"} true; + + // opaque end: event::emit_event($t40, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + + // write_back[Reference($t31).burn_events (event::EventHandle)]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + $t31 := $UpdateMutation($t31, $Update'$1_collection_UnlimitedSupply'_burn_events($Dereference($t31), $Dereference($t40))); + + // write_back[collection::UnlimitedSupply@]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + $1_collection_UnlimitedSupply_$memory := $ResourceUpdate($1_collection_UnlimitedSupply_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + assume {:print "$at(179,17314,19307)"} true; +L2: + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; +L10: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L15 at :1:1+10 + goto L15; + + // label L23 at :1:1+10 +L23: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t26) at :1:1+10 + + // goto L17 at :1:1+10 + goto L17; + + // label L24 at :1:1+10 +L24: + + // drop($t31) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L19 at :1:1+10 + goto L19; + + // label L25 at :1:1+10 +L25: + + // drop($t31) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t40) at :1:1+10 + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun collection::decrement_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+2300 +procedure {:timeLimit 80} $1_collection_decrement_supply$verify(_$t0: $1_object_Object'$1_collection_Collection', _$t1: int, _$t2: $1_option_Option'u64', _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t5: $Mutation ($1_collection_FixedSupply); + var $t6: $Mutation ($1_collection_UnlimitedSupply); + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: $Mutation ($1_collection_ConcurrentSupply); + var $t11: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: $1_collection_Burn; + var $t16: bool; + var $t17: $Mutation ($1_collection_FixedSupply); + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: $Mutation (int); + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: $1_collection_Burn; + var $t26: $Mutation ($1_event_EventHandle'$1_collection_BurnEvent'); + var $t27: int; + var $t28: bool; + var $t29: $1_collection_BurnEvent; + var $t30: bool; + var $t31: $Mutation ($1_collection_UnlimitedSupply); + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: $Mutation (int); + var $t36: bool; + var $t37: int; + var $t38: bool; + var $t39: $1_collection_Burn; + var $t40: $Mutation ($1_event_EventHandle'$1_collection_BurnEvent'); + var $t41: int; + var $t42: bool; + var $t43: $1_collection_BurnEvent; + var $t0: $1_object_Object'$1_collection_Collection'; + var $t1: int; + var $t2: $1_option_Option'u64'; + var $t3: int; + var $temp_0'$1_collection_FixedSupply': $1_collection_FixedSupply; + var $temp_0'$1_collection_UnlimitedSupply': $1_collection_UnlimitedSupply; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$at(179,17013,17014)"} true; + assume $IsValid'$1_object_Object'$1_collection_Collection''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume $IsValid'address'($t1); + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume $IsValid'address'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,1):", $t1} $t1 == $t1; + + // trace_local[index]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,2):", $t2} $t2 == $t2; + + // trace_local[previous_owner]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:444:5+1 + assume {:print "$track_local(57,9,3):", $t3} $t3 == $t3; + + // $t7 := object::object_address($t0) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:450:31+34 + assume {:print "$at(179,17270,17304)"} true; + call $t7 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,17270,17304)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[collection_addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:450:13+15 + assume {:print "$track_local(57,9,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:13+6 + assume {:print "$at(179,17318,17324)"} true; + $t9 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:452:62+15 + assume {:print "$at(179,17424,17439)"} true; +L1: + + // $t10 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:452:26+17 + assume {:print "$at(179,17388,17405)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,17388,17405)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t11 := borrow_field.current_supply($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:32+26 + assume {:print "$at(179,17473,17499)"} true; + $t11 := $ChildMutation($t10, 0, $Dereference($t10)->$current_supply); + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:60+1 + $t12 := 1; + assume $IsValid'u64'($t12); + + // aggregator_v2::sub($t11, $t12) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + call $t11 := $1_aggregator_v2_sub'u64'($t11, $t12); + if ($abort_flag) { + assume {:print "$at(179,17454,17503)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // write_back[Reference($t10).current_supply (aggregator_v2::Aggregator)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + $t10 := $UpdateMutation($t10, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t10), $Dereference($t11))); + + // write_back[collection::ConcurrentSupply@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:453:13+49 + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // $t13 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + + // assume Identical($t14, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume ($t14 == $1_option_spec_is_none'u64'($t2)); + + // if ($t14) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + if ($t14) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 +L13: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 +L12: + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume {:print "$at(179,17631,17653)"} true; + assume $IsValid'u64'($t13); + + // assume Eq($t13, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + assume $IsEqual'u64'($t13, $1_option_spec_borrow'u64'($t2)); + + // $t13 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:458:29+22 + + // $t15 := pack collection::Burn($t7, $t13, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:456:17+188 + assume {:print "$at(179,17547,17735)"} true; + $t15 := $1_collection_Burn($t7, $t13, $t1, $t3); + + // opaque begin: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:455:13+232 + assume {:print "$at(179,17518,17750)"} true; + + // opaque end: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:455:13+232 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + assume {:print "$at(179,17314,19307)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:40+15 + assume {:print "$at(179,17791,17806)"} true; +L0: + + // $t16 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:20+6 + assume {:print "$at(179,17771,17777)"} true; + $t16 := $ResourceExists($1_collection_FixedSupply_$memory, $t7); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:16+1540 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:57+15 + assume {:print "$at(179,17867,17882)"} true; +L4: + + // $t17 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:26+17 + assume {:print "$at(179,17836,17853)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,17836,17853)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[supply#1]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:464:17+6 + $temp_0'$1_collection_FixedSupply' := $Dereference($t17); + assume {:print "$track_local(57,9,5):", $temp_0'$1_collection_FixedSupply'} $temp_0'$1_collection_FixedSupply' == $temp_0'$1_collection_FixedSupply'; + + // $t18 := get_field.current_supply($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:37+21 + assume {:print "$at(179,17921,17942)"} true; + $t18 := $Dereference($t17)->$current_supply; + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:61+1 + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := -($t18, $t19) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:59+1 + call $t20 := $Sub($t18, $t19); + if ($abort_flag) { + assume {:print "$at(179,17943,17944)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t21 := borrow_field.current_supply($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+21 + $t21 := $ChildMutation($t17, 0, $Dereference($t17)->$current_supply); + + // write_ref($t21, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+49 + $t21 := $UpdateMutation($t21, $t20); + + // write_back[Reference($t17).current_supply (u64)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:465:13+49 + $t17 := $UpdateMutation($t17, $Update'$1_collection_FixedSupply'_current_supply($Dereference($t17), $Dereference($t21))); + + // $t22 := features::module_event_migration_enabled() on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:466:17+47 + assume {:print "$at(179,17964,18011)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,17964,18011)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // if ($t22) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:466:13+346 + if ($t22) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:469:37+15 + assume {:print "$at(179,18107,18122)"} true; +L6: + + // $t23 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + + // assume Identical($t24, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume ($t24 == $1_option_spec_is_none'u64'($t2)); + + // if ($t24) goto L22 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + if ($t24) { goto L22; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 +L15: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + goto L11; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 +L14: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume {:print "$at(179,18156,18178)"} true; + assume $IsValid'u64'($t23); + + // assume Eq($t23, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + assume $IsEqual'u64'($t23, $1_option_spec_borrow'u64'($t2)); + + // $t23 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:470:33+22 + + // $t25 := pack collection::Burn($t7, $t23, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:468:21+208 + assume {:print "$at(179,18064,18272)"} true; + $t25 := $1_collection_Burn($t7, $t23, $t1, $t3); + + // opaque begin: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:467:17+260 + assume {:print "$at(179,18031,18291)"} true; + + // opaque end: event::emit($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:467:17+260 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:477:22+6 + assume {:print "$at(179,18360,18366)"} true; +L5: + + // $t26 := borrow_field.burn_events($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:477:17+23 + assume {:print "$at(179,18355,18378)"} true; + $t26 := $ChildMutation($t17, 3, $Dereference($t17)->$burn_events); + + // $t27 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + + // assume Identical($t28, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume ($t28 == $1_option_spec_is_none'u64'($t2)); + + // if ($t28) goto L23 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + if ($t28) { goto L23; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 +L17: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + goto L11; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 +L16: + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume {:print "$at(179,18436,18458)"} true; + assume $IsValid'u64'($t27); + + // assume Eq($t27, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + assume $IsEqual'u64'($t27, $1_option_spec_borrow'u64'($t2)); + + // $t27 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:479:29+22 + + // $t29 := pack collection::BurnEvent($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:478:17+108 + assume {:print "$at(179,18396,18504)"} true; + $t29 := $1_collection_BurnEvent($t27, $t1); + + // opaque begin: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + assume {:print "$at(179,18320,18519)"} true; + + // opaque end: event::emit_event($t26, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + + // write_back[Reference($t17).burn_events (event::EventHandle)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + $t17 := $UpdateMutation($t17, $Update'$1_collection_FixedSupply'_burn_events($Dereference($t17), $Dereference($t26))); + + // write_back[collection::FixedSupply@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:476:13+199 + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:463:16+1540 + assume {:print "$at(179,17767,19307)"} true; + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:44+15 + assume {:print "$at(179,18564,18579)"} true; +L3: + + // $t30 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:20+6 + assume {:print "$at(179,18540,18546)"} true; + $t30 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t7); + + // if ($t30) goto L7 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:483:16+771 + if ($t30) { goto L7; } else { goto L2; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:61+15 + assume {:print "$at(179,18644,18659)"} true; +L7: + + // $t31 := borrow_global($t7) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:26+17 + assume {:print "$at(179,18609,18626)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t31 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_collection_UnlimitedSupply_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(179,18609,18626)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[supply#2]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:484:17+6 + $temp_0'$1_collection_UnlimitedSupply' := $Dereference($t31); + assume {:print "$track_local(57,9,6):", $temp_0'$1_collection_UnlimitedSupply'} $temp_0'$1_collection_UnlimitedSupply' == $temp_0'$1_collection_UnlimitedSupply'; + + // $t32 := get_field.current_supply($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:37+21 + assume {:print "$at(179,18698,18719)"} true; + $t32 := $Dereference($t31)->$current_supply; + + // $t33 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:61+1 + $t33 := 1; + assume $IsValid'u64'($t33); + + // $t34 := -($t32, $t33) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:59+1 + call $t34 := $Sub($t32, $t33); + if ($abort_flag) { + assume {:print "$at(179,18720,18721)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // $t35 := borrow_field.current_supply($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+21 + $t35 := $ChildMutation($t31, 0, $Dereference($t31)->$current_supply); + + // write_ref($t35, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+49 + $t35 := $UpdateMutation($t35, $t34); + + // write_back[Reference($t31).current_supply (u64)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:485:13+49 + $t31 := $UpdateMutation($t31, $Update'$1_collection_UnlimitedSupply'_current_supply($Dereference($t31), $Dereference($t35))); + + // $t36 := features::module_event_migration_enabled() on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:486:17+47 + assume {:print "$at(179,18741,18788)"} true; + call $t36 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,18741,18788)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + goto L11; + } + + // if ($t36) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:486:13+346 + if ($t36) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:489:37+15 + assume {:print "$at(179,18884,18899)"} true; +L9: + + // $t37 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + + // assume Identical($t38, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume ($t38 == $1_option_spec_is_none'u64'($t2)); + + // if ($t38) goto L24 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + if ($t38) { goto L24; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 +L19: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + goto L11; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 +L18: + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume {:print "$at(179,18933,18955)"} true; + assume $IsValid'u64'($t37); + + // assume Eq($t37, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + assume $IsEqual'u64'($t37, $1_option_spec_borrow'u64'($t2)); + + // $t37 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:490:33+22 + + // $t39 := pack collection::Burn($t7, $t37, $t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:488:21+208 + assume {:print "$at(179,18841,19049)"} true; + $t39 := $1_collection_Burn($t7, $t37, $t1, $t3); + + // opaque begin: event::emit($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:487:17+260 + assume {:print "$at(179,18808,19068)"} true; + + // opaque end: event::emit($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:487:17+260 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:497:22+6 + assume {:print "$at(179,19137,19143)"} true; +L8: + + // $t40 := borrow_field.burn_events($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:497:17+23 + assume {:print "$at(179,19132,19155)"} true; + $t40 := $ChildMutation($t31, 2, $Dereference($t31)->$burn_events); + + // $t41 := opaque begin: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + + // assume Identical($t42, option::spec_is_none($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume ($t42 == $1_option_spec_is_none'u64'($t2)); + + // if ($t42) goto L25 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + if ($t42) { goto L25; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 +L21: + + // assume And(option::spec_is_none($t2), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume ($1_option_spec_is_none'u64'($t2) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume {:print "$track_abort(57,9):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + goto L11; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 +L20: + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume {:print "$at(179,19213,19235)"} true; + assume $IsValid'u64'($t41); + + // assume Eq($t41, option::spec_borrow($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + assume $IsEqual'u64'($t41, $1_option_spec_borrow'u64'($t2)); + + // $t41 := opaque end: option::borrow($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:499:29+22 + + // $t43 := pack collection::BurnEvent($t41, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:498:17+108 + assume {:print "$at(179,19173,19281)"} true; + $t43 := $1_collection_BurnEvent($t41, $t1); + + // opaque begin: event::emit_event($t40, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + assume {:print "$at(179,19097,19296)"} true; + + // opaque end: event::emit_event($t40, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + + // write_back[Reference($t31).burn_events (event::EventHandle)]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + $t31 := $UpdateMutation($t31, $Update'$1_collection_UnlimitedSupply'_burn_events($Dereference($t31), $Dereference($t40))); + + // write_back[collection::UnlimitedSupply@]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:496:13+199 + $1_collection_UnlimitedSupply_$memory := $ResourceUpdate($1_collection_UnlimitedSupply_$memory, $GlobalLocationAddress($t31), + $Dereference($t31)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:451:9+1993 + assume {:print "$at(179,17314,19307)"} true; +L2: + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; +L10: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:504:5+1 + assume {:print "$at(179,19312,19313)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L15 at :1:1+10 + goto L15; + + // label L23 at :1:1+10 +L23: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t26) at :1:1+10 + + // goto L17 at :1:1+10 + goto L17; + + // label L24 at :1:1+10 +L24: + + // drop($t31) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L19 at :1:1+10 + goto L19; + + // label L25 at :1:1+10 +L25: + + // drop($t31) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t40) at :1:1+10 + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun collection::increment_supply [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+2941 +procedure {:inline 1} $1_collection_increment_supply(_$t0: $1_object_Object'$1_collection_Collection', _$t1: int) returns ($ret0: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'') +{ + // declare local variables + var $t2: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t3: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t4: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t5: int; + var $t6: $Mutation ($1_collection_ConcurrentSupply); + var $t7: $Mutation ($1_collection_FixedSupply); + var $t8: $Mutation ($1_collection_UnlimitedSupply); + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $Mutation ($1_collection_ConcurrentSupply); + var $t13: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t20: int; + var $t21: $1_aggregator_v2_Aggregator'u64'; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: bool; + var $t24: $1_collection_Mint; + var $t25: $1_aggregator_v2_Aggregator'u64'; + var $t26: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t27: bool; + var $t28: bool; + var $t29: $Mutation ($1_collection_FixedSupply); + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $Mutation (int); + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: $Mutation (int); + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: bool; + var $t44: int; + var $t45: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t46: bool; + var $t47: $1_collection_Mint; + var $t48: $Mutation ($1_event_EventHandle'$1_collection_MintEvent'); + var $t49: int; + var $t50: $1_collection_MintEvent; + var $t51: int; + var $t52: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t53: bool; + var $t54: bool; + var $t55: $Mutation ($1_collection_UnlimitedSupply); + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: $Mutation (int); + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: $Mutation (int); + var $t64: bool; + var $t65: int; + var $t66: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t67: bool; + var $t68: $1_collection_Mint; + var $t69: $Mutation ($1_event_EventHandle'$1_collection_MintEvent'); + var $t70: int; + var $t71: $1_collection_MintEvent; + var $t72: int; + var $t73: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t74: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_collection_FixedSupply': $1_collection_FixedSupply; + var $temp_0'$1_collection_UnlimitedSupply': $1_collection_UnlimitedSupply; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''': $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume {:print "$at(179,13973,13974)"} true; + assume {:print "$track_local(57,12,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume {:print "$track_local(57,12,1):", $t1} $t1 == $t1; + + // $t9 := object::object_address($t0) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:377:31+34 + assume {:print "$at(179,14202,14236)"} true; + call $t9 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,14202,14236)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[collection_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:377:13+15 + assume {:print "$track_local(57,12,5):", $t9} $t9 == $t9; + + // $t11 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:13+6 + assume {:print "$at(179,14250,14256)"} true; + $t11 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:62+15 + assume {:print "$at(179,14356,14371)"} true; +L1: + + // $t12 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:26+17 + assume {:print "$at(179,14320,14337)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,14320,14337)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:17+6 + $temp_0'$1_collection_ConcurrentSupply' := $Dereference($t12); + assume {:print "$track_local(57,12,6):", $temp_0'$1_collection_ConcurrentSupply'} $temp_0'$1_collection_ConcurrentSupply' == $temp_0'$1_collection_ConcurrentSupply'; + + // $t13 := borrow_field.current_supply($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:40+26 + assume {:print "$at(179,14434,14460)"} true; + $t13 := $ChildMutation($t12, 0, $Dereference($t12)->$current_supply); + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:68+1 + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := opaque begin: aggregator_v2::try_add($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + havoc $t16; + + // if ($t16) goto L35 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + if ($t16) { goto L35; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 +L22: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume {:print "$at(179,14411,14464)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + goto L20; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 +L21: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume {:print "$at(179,14411,14464)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u64''; + $t13 := $UpdateMutation($t13, $temp_0'$1_aggregator_v2_Aggregator'u64''); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($Dereference($t13)); + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume $IsValid'bool'($t15); + + // $t15 := opaque end: aggregator_v2::try_add($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + + // write_back[Reference($t12).current_supply (aggregator_v2::Aggregator)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + $t12 := $UpdateMutation($t12, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t12), $Dereference($t13))); + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 +L2: + + // write_back[collection::ConcurrentSupply@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + + // $t17 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:382:37+27 + assume {:print "$at(179,14502,14529)"} true; + $t17 := 2; + assume $IsValid'u64'($t17); + + // $t18 := error::out_of_range($t17) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:382:17+48 + call $t18 := $1_error_out_of_range($t17); + if ($abort_flag) { + assume {:print "$at(179,14482,14530)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + assume {:print "$track_abort(57,12):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + $t10 := $t18; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + goto L20; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:37+6 + assume {:print "$at(179,14583,14589)"} true; +L4: + + // $t19 := borrow_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:32+24 + assume {:print "$at(179,14578,14602)"} true; + $t19 := $ChildMutation($t12, 1, $Dereference($t12)->$total_minted); + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:58+1 + $t20 := 1; + assume $IsValid'u64'($t20); + + // aggregator_v2::add($t19, $t20) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:13+47 + call $t19 := $1_aggregator_v2_add'u64'($t19, $t20); + if ($abort_flag) { + assume {:print "$at(179,14559,14606)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // write_back[Reference($t12).total_minted (aggregator_v2::Aggregator)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:13+47 + $t12 := $UpdateMutation($t12, $Update'$1_collection_ConcurrentSupply'_total_minted($Dereference($t12), $Dereference($t19))); + + // $t21 := get_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:52+20 + assume {:print "$at(179,14756,14776)"} true; + $t21 := $Dereference($t12)->$total_minted; + + // $t22 := opaque begin: aggregator_v2::snapshot($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + havoc $t23; + + // if ($t23) goto L36 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + if ($t23) { goto L36; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 +L24: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + assume {:print "$at(179,14732,14777)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + goto L20; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 +L23: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + assume {:print "$at(179,14732,14777)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t22); + + // $t22 := opaque end: aggregator_v2::snapshot($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + + // $t24 := pack collection::Mint($t9, $t22, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:386:17+174 + assume {:print "$at(179,14649,14823)"} true; + $t24 := $1_collection_Mint($t9, $t22, $t1); + + // opaque begin: event::emit($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:385:13+218 + assume {:print "$at(179,14620,14838)"} true; + + // opaque end: event::emit($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:385:13+218 + + // $t25 := get_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:50+20 + assume {:print "$at(179,14889,14909)"} true; + $t25 := $Dereference($t12)->$total_minted; + + // write_back[collection::ConcurrentSupply@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:50+20 + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // $t26 := opaque begin: aggregator_v2::snapshot($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + havoc $t27; + + // if ($t27) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + if ($t27) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 +L26: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + assume {:print "$at(179,14865,14910)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + goto L20; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 +L25: + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + assume {:print "$at(179,14865,14910)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t26); + + // $t26 := opaque end: aggregator_v2::snapshot($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + + // $t4 := opaque begin: option::some>($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + + // assume And(WellFormed($t4), Le(Len>(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume Eq>>($t4, option::spec_some>($t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t4, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t26)); + + // $t4 := opaque end: option::some>($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:40+15 + assume {:print "$at(179,14951,14966)"} true; +L0: + + // $t28 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:20+6 + assume {:print "$at(179,14931,14937)"} true; + $t28 := $ResourceExists($1_collection_FixedSupply_$memory, $t9); + + // if ($t28) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + if ($t28) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:57+15 + assume {:print "$at(179,15027,15042)"} true; +L7: + + // $t29 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:26+17 + assume {:print "$at(179,14996,15013)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t29 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,14996,15013)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply#1]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:17+6 + $temp_0'$1_collection_FixedSupply' := $Dereference($t29); + assume {:print "$track_local(57,12,7):", $temp_0'$1_collection_FixedSupply'} $temp_0'$1_collection_FixedSupply' == $temp_0'$1_collection_FixedSupply'; + + // $t30 := get_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:37+21 + assume {:print "$at(179,15081,15102)"} true; + $t30 := $Dereference($t29)->$current_supply; + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:61+1 + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t30, $t31) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:59+1 + call $t32 := $AddU64($t30, $t31); + if ($abort_flag) { + assume {:print "$at(179,15103,15104)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t33 := borrow_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+21 + $t33 := $ChildMutation($t29, 0, $Dereference($t29)->$current_supply); + + // write_ref($t33, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+49 + $t33 := $UpdateMutation($t33, $t32); + + // write_back[Reference($t29).current_supply (u64)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+49 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_current_supply($Dereference($t29), $Dereference($t33))); + + // $t34 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:35+19 + assume {:print "$at(179,15142,15161)"} true; + $t34 := $Dereference($t29)->$total_minted; + + // $t35 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:57+1 + $t35 := 1; + assume $IsValid'u64'($t35); + + // $t36 := +($t34, $t35) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:55+1 + call $t36 := $AddU64($t34, $t35); + if ($abort_flag) { + assume {:print "$at(179,15162,15163)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t37 := borrow_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+19 + $t37 := $ChildMutation($t29, 2, $Dereference($t29)->$total_minted); + + // write_ref($t37, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+45 + $t37 := $UpdateMutation($t37, $t36); + + // write_back[Reference($t29).total_minted (u64)]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+45 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_total_minted($Dereference($t29), $Dereference($t37))); + + // $t38 := get_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:17+21 + assume {:print "$at(179,15204,15225)"} true; + $t38 := $Dereference($t29)->$current_supply; + + // $t39 := get_field.max_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:42+17 + $t39 := $Dereference($t29)->$max_supply; + + // $t40 := <=($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:39+2 + call $t40 := $Le($t38, $t39); + + // if ($t40) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + if ($t40) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 +L8: + + // write_back[collection::FixedSupply@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t29), + $Dereference($t29)); + + // drop($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + + // $t41 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:399:37+27 + assume {:print "$at(179,15284,15311)"} true; + $t41 := 2; + assume $IsValid'u64'($t41); + + // $t42 := error::out_of_range($t41) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:399:17+48 + call $t42 := $1_error_out_of_range($t41); + if ($abort_flag) { + assume {:print "$at(179,15264,15312)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + assume {:print "$track_abort(57,12):", $t42} $t42 == $t42; + + // $t10 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + $t10 := $t42; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + goto L20; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:17+47 + assume {:print "$at(179,15345,15392)"} true; +L10: + + // $t43 := features::module_event_migration_enabled() on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:17+47 + assume {:print "$at(179,15345,15392)"} true; + call $t43 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,15345,15392)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // if ($t43) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:13+334 + if ($t43) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:404:37+15 + assume {:print "$at(179,15488,15503)"} true; +L12: + + // $t44 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:63+19 + assume {:print "$at(179,15567,15586)"} true; + $t44 := $Dereference($t29)->$total_minted; + + // $t45 := opaque begin: aggregator_v2::create_snapshot($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + havoc $t46; + + // if ($t46) goto L37 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + if ($t46) { goto L37; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 +L28: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + assume {:print "$at(179,15536,15587)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + goto L20; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 +L27: + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + assume {:print "$at(179,15536,15587)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t45); + + // $t45 := opaque end: aggregator_v2::create_snapshot($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + + // $t47 := pack collection::Mint($t9, $t45, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:403:21+196 + assume {:print "$at(179,15445,15641)"} true; + $t47 := $1_collection_Mint($t9, $t45, $t1); + + // opaque begin: event::emit($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:402:17+248 + assume {:print "$at(179,15412,15660)"} true; + + // opaque end: event::emit($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:402:17+248 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:36+6 + assume {:print "$at(179,15712,15718)"} true; +L11: + + // $t48 := borrow_field.mint_events($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:31+23 + assume {:print "$at(179,15707,15730)"} true; + $t48 := $ChildMutation($t29, 4, $Dereference($t29)->$mint_events); + + // $t49 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:412:28+19 + assume {:print "$at(179,15787,15806)"} true; + $t49 := $Dereference($t29)->$total_minted; + + // $t50 := pack collection::MintEvent($t49, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:411:17+104 + assume {:print "$at(179,15748,15852)"} true; + $t50 := $1_collection_MintEvent($t49, $t1); + + // opaque begin: event::emit_event($t48, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + assume {:print "$at(179,15689,15867)"} true; + + // opaque end: event::emit_event($t48, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + + // write_back[Reference($t29).mint_events (event::EventHandle)]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_mint_events($Dereference($t29), $Dereference($t48))); + + // $t51 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:62+19 + assume {:print "$at(179,15930,15949)"} true; + $t51 := $Dereference($t29)->$total_minted; + + // write_back[collection::FixedSupply@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:62+19 + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t29), + $Dereference($t29)); + + // $t52 := opaque begin: aggregator_v2::create_snapshot($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + + // $t53 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + havoc $t53; + + // if ($t53) goto L30 else goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + if ($t53) { goto L30; } else { goto L29; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 +L30: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + assume {:print "$at(179,15894,15950)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + goto L20; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 +L29: + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + assume {:print "$at(179,15894,15950)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t52); + + // $t52 := opaque end: aggregator_v2::create_snapshot($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + + // $t3 := opaque begin: option::some>($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + + // assume And(WellFormed($t3), Le(Len>(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>>($t3, option::spec_some>($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t3, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t52)); + + // $t3 := opaque end: option::some>($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + assume {:print "$at(179,14927,16908)"} true; + goto L13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:44+15 + assume {:print "$at(179,15995,16010)"} true; +L6: + + // $t54 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:20+6 + assume {:print "$at(179,15971,15977)"} true; + $t54 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t9); + + // if ($t54) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + if ($t54) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:61+15 + assume {:print "$at(179,16075,16090)"} true; +L15: + + // $t55 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:26+17 + assume {:print "$at(179,16040,16057)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t55 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_UnlimitedSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,16040,16057)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply#2]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:17+6 + $temp_0'$1_collection_UnlimitedSupply' := $Dereference($t55); + assume {:print "$track_local(57,12,8):", $temp_0'$1_collection_UnlimitedSupply'} $temp_0'$1_collection_UnlimitedSupply' == $temp_0'$1_collection_UnlimitedSupply'; + + // $t56 := get_field.current_supply($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:37+21 + assume {:print "$at(179,16129,16150)"} true; + $t56 := $Dereference($t55)->$current_supply; + + // $t57 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:61+1 + $t57 := 1; + assume $IsValid'u64'($t57); + + // $t58 := +($t56, $t57) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:59+1 + call $t58 := $AddU64($t56, $t57); + if ($abort_flag) { + assume {:print "$at(179,16151,16152)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t59 := borrow_field.current_supply($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+21 + $t59 := $ChildMutation($t55, 0, $Dereference($t55)->$current_supply); + + // write_ref($t59, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+49 + $t59 := $UpdateMutation($t59, $t58); + + // write_back[Reference($t55).current_supply (u64)]($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+49 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_current_supply($Dereference($t55), $Dereference($t59))); + + // $t60 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:35+19 + assume {:print "$at(179,16190,16209)"} true; + $t60 := $Dereference($t55)->$total_minted; + + // $t61 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:57+1 + $t61 := 1; + assume $IsValid'u64'($t61); + + // $t62 := +($t60, $t61) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:55+1 + call $t62 := $AddU64($t60, $t61); + if ($abort_flag) { + assume {:print "$at(179,16210,16211)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t63 := borrow_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+19 + $t63 := $ChildMutation($t55, 1, $Dereference($t55)->$total_minted); + + // write_ref($t63, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+45 + $t63 := $UpdateMutation($t63, $t62); + + // write_back[Reference($t55).total_minted (u64)]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+45 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_total_minted($Dereference($t55), $Dereference($t63))); + + // $t64 := features::module_event_migration_enabled() on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:421:17+47 + assume {:print "$at(179,16231,16278)"} true; + call $t64 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,16231,16278)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // if ($t64) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:421:13+334 + if ($t64) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:424:37+15 + assume {:print "$at(179,16374,16389)"} true; +L17: + + // $t65 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:63+19 + assume {:print "$at(179,16453,16472)"} true; + $t65 := $Dereference($t55)->$total_minted; + + // $t66 := opaque begin: aggregator_v2::create_snapshot($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + + // $t67 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + havoc $t67; + + // if ($t67) goto L38 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + if ($t67) { goto L38; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 +L32: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + assume {:print "$at(179,16422,16473)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + goto L20; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 +L31: + + // assume WellFormed($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + assume {:print "$at(179,16422,16473)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t66); + + // $t66 := opaque end: aggregator_v2::create_snapshot($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + + // $t68 := pack collection::Mint($t9, $t66, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:423:21+196 + assume {:print "$at(179,16331,16527)"} true; + $t68 := $1_collection_Mint($t9, $t66, $t1); + + // opaque begin: event::emit($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:422:17+248 + assume {:print "$at(179,16298,16546)"} true; + + // opaque end: event::emit($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:422:17+248 + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:431:22+6 + assume {:print "$at(179,16615,16621)"} true; +L16: + + // $t69 := borrow_field.mint_events($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:431:17+23 + assume {:print "$at(179,16610,16633)"} true; + $t69 := $ChildMutation($t55, 3, $Dereference($t55)->$mint_events); + + // $t70 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:433:28+19 + assume {:print "$at(179,16690,16709)"} true; + $t70 := $Dereference($t55)->$total_minted; + + // $t71 := pack collection::MintEvent($t70, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:432:17+104 + assume {:print "$at(179,16651,16755)"} true; + $t71 := $1_collection_MintEvent($t70, $t1); + + // opaque begin: event::emit_event($t69, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + assume {:print "$at(179,16575,16770)"} true; + + // opaque end: event::emit_event($t69, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + + // write_back[Reference($t55).mint_events (event::EventHandle)]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_mint_events($Dereference($t55), $Dereference($t69))); + + // $t72 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:62+19 + assume {:print "$at(179,16833,16852)"} true; + $t72 := $Dereference($t55)->$total_minted; + + // write_back[collection::UnlimitedSupply@]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:62+19 + $1_collection_UnlimitedSupply_$memory := $ResourceUpdate($1_collection_UnlimitedSupply_$memory, $GlobalLocationAddress($t55), + $Dereference($t55)); + + // $t73 := opaque begin: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + havoc $t74; + + // if ($t74) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + if ($t74) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 +L34: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + assume {:print "$at(179,16797,16853)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + goto L20; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 +L33: + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + assume {:print "$at(179,16797,16853)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t73); + + // $t73 := opaque end: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + + // $t2 := opaque begin: option::some>($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_some>($t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t73)); + + // $t2 := opaque end: option::some>($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + assume {:print "$at(179,15967,16908)"} true; + goto L18; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume {:print "$at(179,16884,16898)"} true; +L14: + + // $t2 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume {:print "$at(179,16884,16898)"} true; + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2, $1_option_spec_none'$1_aggregator_v2_AggregatorSnapshot'u64''()); + + // $t2 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + assume {:print "$at(179,15967,16908)"} true; +L18: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + assume {:print "$at(179,14927,16908)"} true; + $t3 := $t2; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 +L13: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + assume {:print "$track_return(57,12,0):", $t4} $t4 == $t4; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; +L19: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; + $ret0 := $t4; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 +L20: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L35 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L35: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L22 at :1:1+10 + goto L22; + + // label L36 at :1:1+10 +L36: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L24 at :1:1+10 + goto L24; + + // label L37 at :1:1+10 +L37: + + // drop($t29) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L28 at :1:1+10 + goto L28; + + // label L38 at :1:1+10 +L38: + + // drop($t55) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + +} + +// fun collection::increment_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+2941 +procedure {:timeLimit 80} $1_collection_increment_supply$verify(_$t0: $1_object_Object'$1_collection_Collection', _$t1: int) returns ($ret0: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'') +{ + // declare local variables + var $t2: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t3: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t4: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t5: int; + var $t6: $Mutation ($1_collection_ConcurrentSupply); + var $t7: $Mutation ($1_collection_FixedSupply); + var $t8: $Mutation ($1_collection_UnlimitedSupply); + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $Mutation ($1_collection_ConcurrentSupply); + var $t13: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t20: int; + var $t21: $1_aggregator_v2_Aggregator'u64'; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: bool; + var $t24: $1_collection_Mint; + var $t25: $1_aggregator_v2_Aggregator'u64'; + var $t26: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t27: bool; + var $t28: bool; + var $t29: $Mutation ($1_collection_FixedSupply); + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $Mutation (int); + var $t34: int; + var $t35: int; + var $t36: int; + var $t37: $Mutation (int); + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: bool; + var $t44: int; + var $t45: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t46: bool; + var $t47: $1_collection_Mint; + var $t48: $Mutation ($1_event_EventHandle'$1_collection_MintEvent'); + var $t49: int; + var $t50: $1_collection_MintEvent; + var $t51: int; + var $t52: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t53: bool; + var $t54: bool; + var $t55: $Mutation ($1_collection_UnlimitedSupply); + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: $Mutation (int); + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: $Mutation (int); + var $t64: bool; + var $t65: int; + var $t66: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t67: bool; + var $t68: $1_collection_Mint; + var $t69: $Mutation ($1_event_EventHandle'$1_collection_MintEvent'); + var $t70: int; + var $t71: $1_collection_MintEvent; + var $t72: int; + var $t73: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t74: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $t1: int; + var $temp_0'$1_aggregator_v2_Aggregator'u64'': $1_aggregator_v2_Aggregator'u64'; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_collection_FixedSupply': $1_collection_FixedSupply; + var $temp_0'$1_collection_UnlimitedSupply': $1_collection_UnlimitedSupply; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''': $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume {:print "$at(179,13973,13974)"} true; + assume $IsValid'$1_object_Object'$1_collection_Collection''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume {:print "$track_local(57,12,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:373:5+1 + assume {:print "$track_local(57,12,1):", $t1} $t1 == $t1; + + // $t9 := object::object_address($t0) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:377:31+34 + assume {:print "$at(179,14202,14236)"} true; + call $t9 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(179,14202,14236)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[collection_addr]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:377:13+15 + assume {:print "$track_local(57,12,5):", $t9} $t9 == $t9; + + // $t11 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:13+6 + assume {:print "$at(179,14250,14256)"} true; + $t11 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:62+15 + assume {:print "$at(179,14356,14371)"} true; +L1: + + // $t12 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:26+17 + assume {:print "$at(179,14320,14337)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,14320,14337)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:379:17+6 + $temp_0'$1_collection_ConcurrentSupply' := $Dereference($t12); + assume {:print "$track_local(57,12,6):", $temp_0'$1_collection_ConcurrentSupply'} $temp_0'$1_collection_ConcurrentSupply' == $temp_0'$1_collection_ConcurrentSupply'; + + // $t13 := borrow_field.current_supply($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:40+26 + assume {:print "$at(179,14434,14460)"} true; + $t13 := $ChildMutation($t12, 0, $Dereference($t12)->$current_supply); + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:68+1 + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := opaque begin: aggregator_v2::try_add($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + havoc $t16; + + // if ($t16) goto L35 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + if ($t16) { goto L35; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 +L22: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume {:print "$at(179,14411,14464)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + goto L20; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 +L21: + + // $t13 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume {:print "$at(179,14411,14464)"} true; + havoc $temp_0'$1_aggregator_v2_Aggregator'u64''; + $t13 := $UpdateMutation($t13, $temp_0'$1_aggregator_v2_Aggregator'u64''); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($Dereference($t13)); + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + assume $IsValid'bool'($t15); + + // $t15 := opaque end: aggregator_v2::try_add($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + + // write_back[Reference($t12).current_supply (aggregator_v2::Aggregator)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:381:17+53 + $t12 := $UpdateMutation($t12, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t12), $Dereference($t13))); + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 +L2: + + // write_back[collection::ConcurrentSupply@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + + // $t17 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:382:37+27 + assume {:print "$at(179,14502,14529)"} true; + $t17 := 2; + assume $IsValid'u64'($t17); + + // $t18 := error::out_of_range($t17) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:382:17+48 + call $t18 := $1_error_out_of_range($t17); + if ($abort_flag) { + assume {:print "$at(179,14482,14530)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + assume {:print "$at(179,14386,14545)"} true; + assume {:print "$track_abort(57,12):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + $t10 := $t18; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:380:13+159 + goto L20; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:37+6 + assume {:print "$at(179,14583,14589)"} true; +L4: + + // $t19 := borrow_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:32+24 + assume {:print "$at(179,14578,14602)"} true; + $t19 := $ChildMutation($t12, 1, $Dereference($t12)->$total_minted); + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:58+1 + $t20 := 1; + assume $IsValid'u64'($t20); + + // aggregator_v2::add($t19, $t20) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:13+47 + call $t19 := $1_aggregator_v2_add'u64'($t19, $t20); + if ($abort_flag) { + assume {:print "$at(179,14559,14606)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // write_back[Reference($t12).total_minted (aggregator_v2::Aggregator)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:384:13+47 + $t12 := $UpdateMutation($t12, $Update'$1_collection_ConcurrentSupply'_total_minted($Dereference($t12), $Dereference($t19))); + + // $t21 := get_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:52+20 + assume {:print "$at(179,14756,14776)"} true; + $t21 := $Dereference($t12)->$total_minted; + + // $t22 := opaque begin: aggregator_v2::snapshot($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + havoc $t23; + + // if ($t23) goto L36 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + if ($t23) { goto L36; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 +L24: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + assume {:print "$at(179,14732,14777)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + goto L20; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 +L23: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + assume {:print "$at(179,14732,14777)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t22); + + // $t22 := opaque end: aggregator_v2::snapshot($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:388:28+45 + + // $t24 := pack collection::Mint($t9, $t22, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:386:17+174 + assume {:print "$at(179,14649,14823)"} true; + $t24 := $1_collection_Mint($t9, $t22, $t1); + + // opaque begin: event::emit($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:385:13+218 + assume {:print "$at(179,14620,14838)"} true; + + // opaque end: event::emit($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:385:13+218 + + // $t25 := get_field.total_minted($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:50+20 + assume {:print "$at(179,14889,14909)"} true; + $t25 := $Dereference($t12)->$total_minted; + + // write_back[collection::ConcurrentSupply@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:50+20 + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // $t26 := opaque begin: aggregator_v2::snapshot($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + havoc $t27; + + // if ($t27) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + if ($t27) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 +L26: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + assume {:print "$at(179,14865,14910)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + goto L20; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 +L25: + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + assume {:print "$at(179,14865,14910)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t26); + + // $t26 := opaque end: aggregator_v2::snapshot($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:26+45 + + // $t4 := opaque begin: option::some>($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + + // assume And(WellFormed($t4), Le(Len>(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume Eq>>($t4, option::spec_some>($t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t4, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t26)); + + // $t4 := opaque end: option::some>($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:392:13+59 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:40+15 + assume {:print "$at(179,14951,14966)"} true; +L0: + + // $t28 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:20+6 + assume {:print "$at(179,14931,14937)"} true; + $t28 := $ResourceExists($1_collection_FixedSupply_$memory, $t9); + + // if ($t28) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + if ($t28) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:57+15 + assume {:print "$at(179,15027,15042)"} true; +L7: + + // $t29 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:26+17 + assume {:print "$at(179,14996,15013)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t29 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,14996,15013)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply#1]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:394:17+6 + $temp_0'$1_collection_FixedSupply' := $Dereference($t29); + assume {:print "$track_local(57,12,7):", $temp_0'$1_collection_FixedSupply'} $temp_0'$1_collection_FixedSupply' == $temp_0'$1_collection_FixedSupply'; + + // $t30 := get_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:37+21 + assume {:print "$at(179,15081,15102)"} true; + $t30 := $Dereference($t29)->$current_supply; + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:61+1 + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t30, $t31) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:59+1 + call $t32 := $AddU64($t30, $t31); + if ($abort_flag) { + assume {:print "$at(179,15103,15104)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t33 := borrow_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+21 + $t33 := $ChildMutation($t29, 0, $Dereference($t29)->$current_supply); + + // write_ref($t33, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+49 + $t33 := $UpdateMutation($t33, $t32); + + // write_back[Reference($t29).current_supply (u64)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:395:13+49 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_current_supply($Dereference($t29), $Dereference($t33))); + + // $t34 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:35+19 + assume {:print "$at(179,15142,15161)"} true; + $t34 := $Dereference($t29)->$total_minted; + + // $t35 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:57+1 + $t35 := 1; + assume $IsValid'u64'($t35); + + // $t36 := +($t34, $t35) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:55+1 + call $t36 := $AddU64($t34, $t35); + if ($abort_flag) { + assume {:print "$at(179,15162,15163)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t37 := borrow_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+19 + $t37 := $ChildMutation($t29, 2, $Dereference($t29)->$total_minted); + + // write_ref($t37, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+45 + $t37 := $UpdateMutation($t37, $t36); + + // write_back[Reference($t29).total_minted (u64)]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:396:13+45 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_total_minted($Dereference($t29), $Dereference($t37))); + + // $t38 := get_field.current_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:17+21 + assume {:print "$at(179,15204,15225)"} true; + $t38 := $Dereference($t29)->$current_supply; + + // $t39 := get_field.max_supply($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:42+17 + $t39 := $Dereference($t29)->$max_supply; + + // $t40 := <=($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:398:39+2 + call $t40 := $Le($t38, $t39); + + // if ($t40) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + if ($t40) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 +L8: + + // write_back[collection::FixedSupply@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t29), + $Dereference($t29)); + + // drop($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + + // $t41 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:399:37+27 + assume {:print "$at(179,15284,15311)"} true; + $t41 := 2; + assume $IsValid'u64'($t41); + + // $t42 := error::out_of_range($t41) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:399:17+48 + call $t42 := $1_error_out_of_range($t41); + if ($abort_flag) { + assume {:print "$at(179,15264,15312)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + assume {:print "$at(179,15179,15327)"} true; + assume {:print "$track_abort(57,12):", $t42} $t42 == $t42; + + // $t10 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + $t10 := $t42; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:397:13+148 + goto L20; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:17+47 + assume {:print "$at(179,15345,15392)"} true; +L10: + + // $t43 := features::module_event_migration_enabled() on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:17+47 + assume {:print "$at(179,15345,15392)"} true; + call $t43 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,15345,15392)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // if ($t43) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:401:13+334 + if ($t43) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:404:37+15 + assume {:print "$at(179,15488,15503)"} true; +L12: + + // $t44 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:63+19 + assume {:print "$at(179,15567,15586)"} true; + $t44 := $Dereference($t29)->$total_minted; + + // $t45 := opaque begin: aggregator_v2::create_snapshot($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + havoc $t46; + + // if ($t46) goto L37 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + if ($t46) { goto L37; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 +L28: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + assume {:print "$at(179,15536,15587)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + goto L20; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 +L27: + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + assume {:print "$at(179,15536,15587)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t45); + + // $t45 := opaque end: aggregator_v2::create_snapshot($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:405:32+51 + + // $t47 := pack collection::Mint($t9, $t45, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:403:21+196 + assume {:print "$at(179,15445,15641)"} true; + $t47 := $1_collection_Mint($t9, $t45, $t1); + + // opaque begin: event::emit($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:402:17+248 + assume {:print "$at(179,15412,15660)"} true; + + // opaque end: event::emit($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:402:17+248 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:36+6 + assume {:print "$at(179,15712,15718)"} true; +L11: + + // $t48 := borrow_field.mint_events($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:31+23 + assume {:print "$at(179,15707,15730)"} true; + $t48 := $ChildMutation($t29, 4, $Dereference($t29)->$mint_events); + + // $t49 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:412:28+19 + assume {:print "$at(179,15787,15806)"} true; + $t49 := $Dereference($t29)->$total_minted; + + // $t50 := pack collection::MintEvent($t49, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:411:17+104 + assume {:print "$at(179,15748,15852)"} true; + $t50 := $1_collection_MintEvent($t49, $t1); + + // opaque begin: event::emit_event($t48, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + assume {:print "$at(179,15689,15867)"} true; + + // opaque end: event::emit_event($t48, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + + // write_back[Reference($t29).mint_events (event::EventHandle)]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:410:13+178 + $t29 := $UpdateMutation($t29, $Update'$1_collection_FixedSupply'_mint_events($Dereference($t29), $Dereference($t48))); + + // $t51 := get_field.total_minted($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:62+19 + assume {:print "$at(179,15930,15949)"} true; + $t51 := $Dereference($t29)->$total_minted; + + // write_back[collection::FixedSupply@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:62+19 + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t29), + $Dereference($t29)); + + // $t52 := opaque begin: aggregator_v2::create_snapshot($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + + // $t53 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + havoc $t53; + + // if ($t53) goto L30 else goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + if ($t53) { goto L30; } else { goto L29; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 +L30: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + assume {:print "$at(179,15894,15950)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + goto L20; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 +L29: + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + assume {:print "$at(179,15894,15950)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t52); + + // $t52 := opaque end: aggregator_v2::create_snapshot($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:26+56 + + // $t3 := opaque begin: option::some>($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + + // assume And(WellFormed($t3), Le(Len>(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>>($t3, option::spec_some>($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t3, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t52)); + + // $t3 := opaque end: option::some>($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:416:13+70 + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + assume {:print "$at(179,14927,16908)"} true; + goto L13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:44+15 + assume {:print "$at(179,15995,16010)"} true; +L6: + + // $t54 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:20+6 + assume {:print "$at(179,15971,15977)"} true; + $t54 := $ResourceExists($1_collection_UnlimitedSupply_$memory, $t9); + + // if ($t54) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + if ($t54) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:61+15 + assume {:print "$at(179,16075,16090)"} true; +L15: + + // $t55 := borrow_global($t9) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:26+17 + assume {:print "$at(179,16040,16057)"} true; + if (!$ResourceExists($1_collection_UnlimitedSupply_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t55 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_collection_UnlimitedSupply_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(179,16040,16057)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // trace_local[supply#2]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:418:17+6 + $temp_0'$1_collection_UnlimitedSupply' := $Dereference($t55); + assume {:print "$track_local(57,12,8):", $temp_0'$1_collection_UnlimitedSupply'} $temp_0'$1_collection_UnlimitedSupply' == $temp_0'$1_collection_UnlimitedSupply'; + + // $t56 := get_field.current_supply($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:37+21 + assume {:print "$at(179,16129,16150)"} true; + $t56 := $Dereference($t55)->$current_supply; + + // $t57 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:61+1 + $t57 := 1; + assume $IsValid'u64'($t57); + + // $t58 := +($t56, $t57) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:59+1 + call $t58 := $AddU64($t56, $t57); + if ($abort_flag) { + assume {:print "$at(179,16151,16152)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t59 := borrow_field.current_supply($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+21 + $t59 := $ChildMutation($t55, 0, $Dereference($t55)->$current_supply); + + // write_ref($t59, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+49 + $t59 := $UpdateMutation($t59, $t58); + + // write_back[Reference($t55).current_supply (u64)]($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:419:13+49 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_current_supply($Dereference($t55), $Dereference($t59))); + + // $t60 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:35+19 + assume {:print "$at(179,16190,16209)"} true; + $t60 := $Dereference($t55)->$total_minted; + + // $t61 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:57+1 + $t61 := 1; + assume $IsValid'u64'($t61); + + // $t62 := +($t60, $t61) on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:55+1 + call $t62 := $AddU64($t60, $t61); + if ($abort_flag) { + assume {:print "$at(179,16210,16211)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // $t63 := borrow_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+19 + $t63 := $ChildMutation($t55, 1, $Dereference($t55)->$total_minted); + + // write_ref($t63, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+45 + $t63 := $UpdateMutation($t63, $t62); + + // write_back[Reference($t55).total_minted (u64)]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:420:13+45 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_total_minted($Dereference($t55), $Dereference($t63))); + + // $t64 := features::module_event_migration_enabled() on_abort goto L20 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:421:17+47 + assume {:print "$at(179,16231,16278)"} true; + call $t64 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,16231,16278)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + goto L20; + } + + // if ($t64) goto L17 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:421:13+334 + if ($t64) { goto L17; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:424:37+15 + assume {:print "$at(179,16374,16389)"} true; +L17: + + // $t65 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:63+19 + assume {:print "$at(179,16453,16472)"} true; + $t65 := $Dereference($t55)->$total_minted; + + // $t66 := opaque begin: aggregator_v2::create_snapshot($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + + // $t67 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + havoc $t67; + + // if ($t67) goto L38 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + if ($t67) { goto L38; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 +L32: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + assume {:print "$at(179,16422,16473)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + goto L20; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 +L31: + + // assume WellFormed($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + assume {:print "$at(179,16422,16473)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t66); + + // $t66 := opaque end: aggregator_v2::create_snapshot($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:425:32+51 + + // $t68 := pack collection::Mint($t9, $t66, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:423:21+196 + assume {:print "$at(179,16331,16527)"} true; + $t68 := $1_collection_Mint($t9, $t66, $t1); + + // opaque begin: event::emit($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:422:17+248 + assume {:print "$at(179,16298,16546)"} true; + + // opaque end: event::emit($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:422:17+248 + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:431:22+6 + assume {:print "$at(179,16615,16621)"} true; +L16: + + // $t69 := borrow_field.mint_events($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:431:17+23 + assume {:print "$at(179,16610,16633)"} true; + $t69 := $ChildMutation($t55, 3, $Dereference($t55)->$mint_events); + + // $t70 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:433:28+19 + assume {:print "$at(179,16690,16709)"} true; + $t70 := $Dereference($t55)->$total_minted; + + // $t71 := pack collection::MintEvent($t70, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:432:17+104 + assume {:print "$at(179,16651,16755)"} true; + $t71 := $1_collection_MintEvent($t70, $t1); + + // opaque begin: event::emit_event($t69, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + assume {:print "$at(179,16575,16770)"} true; + + // opaque end: event::emit_event($t69, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + + // write_back[Reference($t55).mint_events (event::EventHandle)]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:430:13+195 + $t55 := $UpdateMutation($t55, $Update'$1_collection_UnlimitedSupply'_mint_events($Dereference($t55), $Dereference($t69))); + + // $t72 := get_field.total_minted($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:62+19 + assume {:print "$at(179,16833,16852)"} true; + $t72 := $Dereference($t55)->$total_minted; + + // write_back[collection::UnlimitedSupply@]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:62+19 + $1_collection_UnlimitedSupply_$memory := $ResourceUpdate($1_collection_UnlimitedSupply_$memory, $GlobalLocationAddress($t55), + $Dereference($t55)); + + // $t73 := opaque begin: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + havoc $t74; + + // if ($t74) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + if ($t74) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 +L34: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + assume {:print "$at(179,16797,16853)"} true; + assume {:print "$track_abort(57,12):", $t10} $t10 == $t10; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + goto L20; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 +L33: + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + assume {:print "$at(179,16797,16853)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t73); + + // $t73 := opaque end: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:26+56 + + // $t2 := opaque begin: option::some>($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_some>($t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2, $1_option_spec_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t73)); + + // $t2 := opaque end: option::some>($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:437:13+70 + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + assume {:print "$at(179,15967,16908)"} true; + goto L18; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume {:print "$at(179,16884,16898)"} true; +L14: + + // $t2 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume {:print "$at(179,16884,16898)"} true; + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume ($IsValid'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + assume $IsEqual'$1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64'''($t2, $1_option_spec_none'$1_aggregator_v2_AggregatorSnapshot'u64''()); + + // $t2 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:439:13+14 + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:417:16+941 + assume {:print "$at(179,15967,16908)"} true; +L18: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 + assume {:print "$at(179,14927,16908)"} true; + $t3 := $t2; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:393:16+1981 +L13: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:378:9+2662 + assume {:print "$at(179,14246,16908)"} true; + assume {:print "$track_return(57,12,0):", $t4} $t4 == $t4; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; +L19: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; + $ret0 := $t4; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 +L20: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:441:5+1 + assume {:print "$at(179,16913,16914)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L35 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L35: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L22 at :1:1+10 + goto L22; + + // label L36 at :1:1+10 +L36: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L24 at :1:1+10 + goto L24; + + // label L37 at :1:1+10 +L37: + + // drop($t29) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L28 at :1:1+10 + goto L28; + + // label L38 at :1:1+10 +L38: + + // drop($t55) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + +} + +// fun collection::set_description [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+832 +procedure {:inline 1} $1_collection_set_description(_$t0: $1_collection_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $Mutation ($1_collection_Collection); + var $t3: $1_collection_MutatorRef; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_collection_Collection); + var $t16: bool; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: $1_object_Object'$1_collection_Collection'; + var $t21: $1_string_String; + var $t22: $1_collection_Mutation; + var $t23: $Mutation ($1_string_String); + var $t24: $Mutation ($1_event_EventHandle'$1_collection_MutationEvent'); + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: $1_collection_MutationEvent; + var $t0: $1_collection_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume {:print "$at(179,25044,25045)"} true; + assume {:print "$track_local(57,14,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume {:print "$track_local(57,14,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:17+28 + assume {:print "$at(179,25156,25184)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,25156,25184)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:49+22 + $t6 := 2048; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:46+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + assume {:print "$at(179,25148,25255)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 +L0: + + // $t8 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:93+21 + assume {:print "$at(179,25232,25253)"} true; + $t8 := 5; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:73+42 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(179,25212,25254)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + assume {:print "$at(179,25148,25255)"} true; + assume {:print "$track_abort(57,14):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:648:37+11 + assume {:print "$at(179,25293,25304)"} true; +L2: + + // trace_local[mutator_ref#113]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:623:27+11 + assume {:print "$at(179,23846,23857)"} true; + assume {:print "$track_local(57,14,3):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:624:33+16 + assume {:print "$at(179,23923,23939)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t11 := $ResourceExists($1_collection_Collection_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,14):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+11 + assume {:print "$at(179,23980,23991)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+16 + assume {:print "$at(179,23980,23996)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:9+17 + if (!$ResourceExists($1_collection_Collection_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_collection_Collection_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(179,23950,23967)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[collection]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:648:13+10 + assume {:print "$at(179,25269,25279)"} true; + $temp_0'$1_collection_Collection' := $Dereference($t15); + assume {:print "$track_local(57,14,2):", $temp_0'$1_collection_Collection'} $temp_0'$1_collection_Collection' == $temp_0'$1_collection_Collection'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:13+47 + assume {:print "$at(179,25319,25366)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,25319,25366)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:9+345 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:50+14 + assume {:print "$at(179,25454,25468)"} true; +L7: + + // $t17 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:50+14 + assume {:print "$at(179,25454,25468)"} true; + $t17 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:37+28 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(179,25441,25469)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:652:55+16 + assume {:print "$at(179,25525,25541)"} true; + $t19 := $t0->$self; + + // $t20 := object::address_to_object($t19) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:652:29+43 + call $t20 := $1_object_address_to_object'$1_collection_Collection'($t19); + if ($abort_flag) { + assume {:print "$at(179,25499,25542)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t21 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:653:28+22 + assume {:print "$at(179,25571,25593)"} true; + $t21 := $Dereference($t15)->$description; + + // $t22 := pack collection::Mutation($t18, $t20, $t21, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:25+254 + assume {:print "$at(179,25394,25648)"} true; + $t22 := $1_collection_Mutation($t18, $t20, $t21, $t1); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:13+267 + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:13+267 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:655:15+1 + assume {:print "$at(179,25649,25650)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:9+345 + assume {:print "$at(179,25315,25660)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:34+11 + assume {:print "$at(179,25695,25706)"} true; +L8: + + // $t23 := borrow_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+22 + assume {:print "$at(179,25670,25692)"} true; + $t23 := $ChildMutation($t15, 1, $Dereference($t15)->$description); + + // write_ref($t23, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+36 + $t23 := $UpdateMutation($t23, $t1); + + // write_back[Reference($t15).description (string::String)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+36 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_description($Dereference($t15), $Dereference($t23))); + + // $t24 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:659:13+31 + assume {:print "$at(179,25747,25778)"} true; + $t24 := $ChildMutation($t15, 4, $Dereference($t15)->$mutation_events); + + // $t25 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:62+14 + assume {:print "$at(179,25841,25855)"} true; + $t25 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:49+28 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(179,25828,25856)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t27 := pack collection::MutationEvent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:13+66 + $t27 := $1_collection_MutationEvent($t26); + + // opaque begin: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + assume {:print "$at(179,25716,25869)"} true; + + // opaque end: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_mutation_events($Dereference($t15), $Dereference($t24))); + + // write_back[collection::Collection@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun collection::set_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+832 +procedure {:timeLimit 80} $1_collection_set_description$verify(_$t0: $1_collection_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $Mutation ($1_collection_Collection); + var $t3: $1_collection_MutatorRef; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_collection_Collection); + var $t16: bool; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: $1_object_Object'$1_collection_Collection'; + var $t21: $1_string_String; + var $t22: $1_collection_Mutation; + var $t23: $Mutation ($1_string_String); + var $t24: $Mutation ($1_event_EventHandle'$1_collection_MutationEvent'); + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: $1_collection_MutationEvent; + var $t0: $1_collection_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume {:print "$at(179,25044,25045)"} true; + assume $IsValid'$1_collection_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume {:print "$track_local(57,14,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:646:5+1 + assume {:print "$track_local(57,14,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:17+28 + assume {:print "$at(179,25156,25184)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,25156,25184)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:49+22 + $t6 := 2048; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:46+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + assume {:print "$at(179,25148,25255)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 +L0: + + // $t8 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:93+21 + assume {:print "$at(179,25232,25253)"} true; + $t8 := 5; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:73+42 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(179,25212,25254)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + assume {:print "$at(179,25148,25255)"} true; + assume {:print "$track_abort(57,14):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:647:9+107 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:648:37+11 + assume {:print "$at(179,25293,25304)"} true; +L2: + + // trace_local[mutator_ref#113]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:623:27+11 + assume {:print "$at(179,23846,23857)"} true; + assume {:print "$track_local(57,14,3):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:624:33+16 + assume {:print "$at(179,23923,23939)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t11 := $ResourceExists($1_collection_Collection_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,14):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+11 + assume {:print "$at(179,23980,23991)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+16 + assume {:print "$at(179,23980,23996)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:9+17 + if (!$ResourceExists($1_collection_Collection_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_collection_Collection_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(179,23950,23967)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[collection]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:648:13+10 + assume {:print "$at(179,25269,25279)"} true; + $temp_0'$1_collection_Collection' := $Dereference($t15); + assume {:print "$track_local(57,14,2):", $temp_0'$1_collection_Collection'} $temp_0'$1_collection_Collection' == $temp_0'$1_collection_Collection'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:13+47 + assume {:print "$at(179,25319,25366)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,25319,25366)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:9+345 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:50+14 + assume {:print "$at(179,25454,25468)"} true; +L7: + + // $t17 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:50+14 + assume {:print "$at(179,25454,25468)"} true; + $t17 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:651:37+28 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(179,25441,25469)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:652:55+16 + assume {:print "$at(179,25525,25541)"} true; + $t19 := $t0->$self; + + // $t20 := object::address_to_object($t19) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:652:29+43 + call $t20 := $1_object_address_to_object'$1_collection_Collection'($t19); + if ($abort_flag) { + assume {:print "$at(179,25499,25542)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t21 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:653:28+22 + assume {:print "$at(179,25571,25593)"} true; + $t21 := $Dereference($t15)->$description; + + // $t22 := pack collection::Mutation($t18, $t20, $t21, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:25+254 + assume {:print "$at(179,25394,25648)"} true; + $t22 := $1_collection_Mutation($t18, $t20, $t21, $t1); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:13+267 + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:650:13+267 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:655:15+1 + assume {:print "$at(179,25649,25650)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:649:9+345 + assume {:print "$at(179,25315,25660)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:34+11 + assume {:print "$at(179,25695,25706)"} true; +L8: + + // $t23 := borrow_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+22 + assume {:print "$at(179,25670,25692)"} true; + $t23 := $ChildMutation($t15, 1, $Dereference($t15)->$description); + + // write_ref($t23, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+36 + $t23 := $UpdateMutation($t23, $t1); + + // write_back[Reference($t15).description (string::String)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:657:9+36 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_description($Dereference($t15), $Dereference($t23))); + + // $t24 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:659:13+31 + assume {:print "$at(179,25747,25778)"} true; + $t24 := $ChildMutation($t15, 4, $Dereference($t15)->$mutation_events); + + // $t25 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:62+14 + assume {:print "$at(179,25841,25855)"} true; + $t25 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:49+28 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(179,25828,25856)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,14):", $t5} $t5 == $t5; + goto L10; + } + + // $t27 := pack collection::MutationEvent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:660:13+66 + $t27 := $1_collection_MutationEvent($t26); + + // opaque begin: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + assume {:print "$at(179,25716,25869)"} true; + + // opaque end: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_mutation_events($Dereference($t15), $Dereference($t24))); + + // write_back[collection::Collection@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:658:9+153 + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:662:5+1 + assume {:print "$at(179,25875,25876)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun collection::set_max_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1466 +procedure {:timeLimit 80} $1_collection_set_max_supply$verify(_$t0: $1_collection_MutatorRef, _$t1: int) returns () +{ + // declare local variables + var $t2: $1_object_Object'$1_collection_Collection'; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $Mutation ($1_collection_ConcurrentSupply); + var $t7: $Mutation ($1_collection_FixedSupply); + var $t8: int; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: $Mutation ($1_collection_ConcurrentSupply); + var $t14: $1_aggregator_v2_Aggregator'u64'; + var $t15: int; + var $t16: bool; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: $1_aggregator_v2_Aggregator'u64'; + var $t21: int; + var $t22: $1_aggregator_v2_Aggregator'u64'; + var $t23: bool; + var $t24: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t25: $Mutation ($1_aggregator_v2_Aggregator'u64'); + var $t26: bool; + var $t27: $Mutation ($1_collection_FixedSupply); + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: $Mutation (int); + var $t36: $1_collection_SetMaxSupply; + var $t0: $1_collection_MutatorRef; + var $t1: int; + var $temp_0'$1_collection_ConcurrentSupply': $1_collection_ConcurrentSupply; + var $temp_0'$1_collection_FixedSupply': $1_collection_FixedSupply; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume {:print "$at(179,26632,26633)"} true; + assume $IsValid'$1_collection_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume {:print "$track_local(57,15,0):", $t0} $t0 == $t0; + + // trace_local[max_supply]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:682:5+1 + assume {:print "$track_local(57,15,1):", $t1} $t1 == $t1; + + // $t8 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:683:64+16 + assume {:print "$at(179,26805,26821)"} true; + $t8 := $t0->$self; + + // $t9 := object::address_to_object($t8) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:683:26+55 + call $t9 := $1_object_address_to_object'$1_collection_Collection'($t8); + if ($abort_flag) { + assume {:print "$at(179,26767,26822)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_local[collection]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:683:13+10 + assume {:print "$track_local(57,15,2):", $t9} $t9 == $t9; + + // $t11 := object::object_address($t9) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:684:34+35 + assume {:print "$at(179,26857,26892)"} true; + call $t11 := $1_object_object_address'$1_collection_Collection'($t9); + if ($abort_flag) { + assume {:print "$at(179,26857,26892)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_local[collection_address]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:684:13+18 + assume {:print "$track_local(57,15,3):", $t11} $t11 == $t11; + + // $t12 := exists($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:687:13+6 + assume {:print "$at(179,26935,26941)"} true; + $t12 := $ResourceExists($1_collection_ConcurrentSupply_$memory, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:687:9+1065 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:688:62+18 + assume {:print "$at(179,27044,27062)"} true; +L1: + + // $t13 := borrow_global($t11) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:688:26+17 + assume {:print "$at(179,27008,27025)"} true; + if (!$ResourceExists($1_collection_ConcurrentSupply_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_collection_ConcurrentSupply_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(179,27008,27025)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_local[supply]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:688:17+6 + $temp_0'$1_collection_ConcurrentSupply' := $Dereference($t13); + assume {:print "$track_local(57,15,6):", $temp_0'$1_collection_ConcurrentSupply'} $temp_0'$1_collection_ConcurrentSupply' == $temp_0'$1_collection_ConcurrentSupply'; + + // $t14 := get_field.current_supply($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:54+22 + assume {:print "$at(179,27118,27140)"} true; + $t14 := $Dereference($t13)->$current_supply; + + // $t15 := opaque begin: aggregator_v2::read($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + havoc $t16; + + // if ($t16) goto L17 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + if ($t16) { goto L17; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 +L14: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + assume {:print "$at(179,27098,27141)"} true; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + goto L12; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 +L13: + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + assume {:print "$at(179,27098,27141)"} true; + assume $IsValid'u64'($t15); + + // $t15 := opaque end: aggregator_v2::read($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:34+43 + + // trace_local[current_supply]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:689:17+14 + assume {:print "$track_local(57,15,4):", $t15} $t15 == $t15; + + // $t17 := >=($t1, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:691:28+2 + assume {:print "$at(179,27191,27193)"} true; + call $t17 := $Ge($t1, $t15); + + // if ($t17) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + assume {:print "$at(179,27155,27281)"} true; + if ($t17) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + assume {:print "$at(179,27155,27281)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 +L2: + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + assume {:print "$at(179,27155,27281)"} true; + + // $t18 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:692:37+19 + assume {:print "$at(179,27246,27265)"} true; + $t18 := 9; + assume $IsValid'u64'($t18); + + // $t19 := error::out_of_range($t18) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:692:17+40 + call $t19 := $1_error_out_of_range($t18); + if ($abort_flag) { + assume {:print "$at(179,27226,27266)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + assume {:print "$at(179,27155,27281)"} true; + assume {:print "$track_abort(57,15):", $t19} $t19 == $t19; + + // $t10 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + $t10 := $t19; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:690:13+126 + goto L12; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:694:56+6 + assume {:print "$at(179,27338,27344)"} true; +L4: + + // $t20 := get_field.current_supply($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:694:55+22 + assume {:print "$at(179,27337,27359)"} true; + $t20 := $Dereference($t13)->$current_supply; + + // $t21 := aggregator_v2::max_value($t20) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:694:30+48 + call $t21 := $1_aggregator_v2_max_value'u64'($t20); + if ($abort_flag) { + assume {:print "$at(179,27312,27360)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // $t5 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:694:13+14 + $t5 := $t21; + + // trace_local[old_max_supply]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:694:13+14 + assume {:print "$track_local(57,15,5):", $t21} $t21 == $t21; + + // $t22 := opaque begin: aggregator_v2::create_aggregator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + assume {:print "$at(179,27398,27442)"} true; + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + havoc $t23; + + // if ($t23) goto L18 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + if ($t23) { goto L18; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 +L16: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + assume {:print "$at(179,27398,27442)"} true; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + goto L12; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 +L15: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + assume {:print "$at(179,27398,27442)"} true; + assume $IsValid'$1_aggregator_v2_Aggregator'u64''($t22); + + // $t22 := opaque end: aggregator_v2::create_aggregator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:37+44 + + // $t24 := borrow_field.current_supply($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:13+21 + $t24 := $ChildMutation($t13, 0, $Dereference($t13)->$current_supply); + + // write_ref($t24, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:13+68 + $t24 := $UpdateMutation($t24, $t22); + + // write_back[Reference($t13).current_supply (aggregator_v2::Aggregator)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:695:13+68 + $t13 := $UpdateMutation($t13, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t13), $Dereference($t24))); + + // $t25 := borrow_field.current_supply($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:696:32+26 + assume {:print "$at(179,27475,27501)"} true; + $t25 := $ChildMutation($t13, 0, $Dereference($t13)->$current_supply); + + // aggregator_v2::add($t25, $t15) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:696:13+62 + call $t25 := $1_aggregator_v2_add'u64'($t25, $t15); + if ($abort_flag) { + assume {:print "$at(179,27456,27518)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // write_back[Reference($t13).current_supply (aggregator_v2::Aggregator)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:696:13+62 + $t13 := $UpdateMutation($t13, $Update'$1_collection_ConcurrentSupply'_current_supply($Dereference($t13), $Dereference($t25))); + + // write_back[collection::ConcurrentSupply@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:696:13+62 + $1_collection_ConcurrentSupply_$memory := $ResourceUpdate($1_collection_ConcurrentSupply_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:696:75+1 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:697:40+18 + assume {:print "$at(179,27559,27577)"} true; +L0: + + // $t26 := exists($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:697:20+6 + assume {:print "$at(179,27539,27545)"} true; + $t26 := $ResourceExists($1_collection_FixedSupply_$memory, $t11); + + // if ($t26) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:697:16+461 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:698:57+18 + assume {:print "$at(179,27638,27656)"} true; +L7: + + // $t27 := borrow_global($t11) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:698:26+17 + assume {:print "$at(179,27607,27624)"} true; + if (!$ResourceExists($1_collection_FixedSupply_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t27 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_collection_FixedSupply_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(179,27607,27624)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_local[supply#1]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:698:17+6 + $temp_0'$1_collection_FixedSupply' := $Dereference($t27); + assume {:print "$track_local(57,15,7):", $temp_0'$1_collection_FixedSupply'} $temp_0'$1_collection_FixedSupply' == $temp_0'$1_collection_FixedSupply'; + + // $t28 := get_field.current_supply($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:700:31+21 + assume {:print "$at(179,27710,27731)"} true; + $t28 := $Dereference($t27)->$current_supply; + + // $t29 := >=($t1, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:700:28+2 + call $t29 := $Ge($t1, $t28); + + // if ($t29) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + assume {:print "$at(179,27671,27804)"} true; + if ($t29) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + assume {:print "$at(179,27671,27804)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 +L8: + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + assume {:print "$at(179,27671,27804)"} true; + + // $t30 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:701:37+19 + assume {:print "$at(179,27769,27788)"} true; + $t30 := 9; + assume $IsValid'u64'($t30); + + // $t31 := error::out_of_range($t30) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:701:17+40 + call $t31 := $1_error_out_of_range($t30); + if ($abort_flag) { + assume {:print "$at(179,27749,27789)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + assume {:print "$at(179,27671,27804)"} true; + assume {:print "$track_abort(57,15):", $t31} $t31 == $t31; + + // $t10 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + $t10 := $t31; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:699:13+133 + goto L12; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:43+28 + assume {:print "$at(179,27957,27985)"} true; +L6: + + // $t32 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:43+28 + assume {:print "$at(179,27957,27985)"} true; + $t32 := 10; + assume $IsValid'u64'($t32); + + // $t33 := error::invalid_argument($t32) on_abort goto L12 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:19+53 + call $t33 := $1_error_invalid_argument($t32); + if ($abort_flag) { + assume {:print "$at(179,27933,27986)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(57,15):", $t10} $t10 == $t10; + goto L12; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:13+59 + assume {:print "$at(179,27927,27986)"} true; + assume {:print "$track_abort(57,15):", $t33} $t33 == $t33; + + // $t10 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:13+59 + $t10 := $t33; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:706:13+59 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:703:30+6 + assume {:print "$at(179,27835,27841)"} true; +L10: + + // $t34 := get_field.max_supply($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:703:30+17 + assume {:print "$at(179,27835,27852)"} true; + $t34 := $Dereference($t27)->$max_supply; + + // $t5 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:703:13+14 + $t5 := $t34; + + // trace_local[old_max_supply]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:703:13+14 + assume {:print "$track_local(57,15,5):", $t34} $t34 == $t34; + + // $t35 := borrow_field.max_supply($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:704:13+17 + assume {:print "$at(179,27866,27883)"} true; + $t35 := $ChildMutation($t27, 1, $Dereference($t27)->$max_supply); + + // write_ref($t35, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:704:13+30 + $t35 := $UpdateMutation($t35, $t1); + + // write_back[Reference($t27).max_supply (u64)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:704:13+30 + $t27 := $UpdateMutation($t27, $Update'$1_collection_FixedSupply'_max_supply($Dereference($t27), $Dereference($t35))); + + // write_back[collection::FixedSupply@]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:704:13+30 + $1_collection_FixedSupply_$memory := $ResourceUpdate($1_collection_FixedSupply_$memory, $GlobalLocationAddress($t27), + $Dereference($t27)); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:709:36+10 + assume {:print "$at(179,28034,28044)"} true; +L5: + + // $t36 := pack collection::SetMaxSupply($t9, $t5, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:709:21+71 + assume {:print "$at(179,28019,28090)"} true; + $t36 := $1_collection_SetMaxSupply($t9, $t5, $t1); + + // opaque begin: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:709:9+84 + + // opaque end: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:709:9+84 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:710:5+1 + assume {:print "$at(179,28097,28098)"} true; +L11: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:710:5+1 + assume {:print "$at(179,28097,28098)"} true; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:710:5+1 +L12: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:710:5+1 + assume {:print "$at(179,28097,28098)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L17 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L17: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L18 at :1:1+10 +L18: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L16 at :1:1+10 + goto L16; + +} + +// fun collection::set_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+524 +procedure {:timeLimit 80} $1_collection_set_name$verify(_$t0: $1_collection_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $Mutation ($1_collection_Collection); + var $t3: $1_collection_MutatorRef; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_collection_Collection); + var $t16: Vec (int); + var $t17: $1_string_String; + var $t18: int; + var $t19: $1_object_Object'$1_collection_Collection'; + var $t20: $1_string_String; + var $t21: $1_collection_Mutation; + var $t22: $Mutation ($1_string_String); + var $t0: $1_collection_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume {:print "$at(179,24514,24515)"} true; + assume $IsValid'$1_collection_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume {:print "$track_local(57,16,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:634:5+1 + assume {:print "$track_local(57,16,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:17+21 + assume {:print "$at(179,24612,24633)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,24612,24633)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // $t6 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:42+26 + $t6 := 128; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:39+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 + assume {:print "$at(179,24604,24712)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 +L0: + + // $t8 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:90+25 + assume {:print "$at(179,24685,24710)"} true; + $t8 := 3; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:70+46 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(179,24665,24711)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 + assume {:print "$at(179,24604,24712)"} true; + assume {:print "$track_abort(57,16):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 + $t5 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:635:9+108 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:636:37+11 + assume {:print "$at(179,24750,24761)"} true; +L2: + + // trace_local[mutator_ref#115]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:623:27+11 + assume {:print "$at(179,23846,23857)"} true; + assume {:print "$track_local(57,16,3):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:624:33+16 + assume {:print "$at(179,23923,23939)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t11 := $ResourceExists($1_collection_Collection_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,16):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t5 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+11 + assume {:print "$at(179,23980,23991)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+16 + assume {:print "$at(179,23980,23996)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:9+17 + if (!$ResourceExists($1_collection_Collection_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_collection_Collection_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(179,23950,23967)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[collection]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:636:13+10 + assume {:print "$at(179,24726,24736)"} true; + $temp_0'$1_collection_Collection' := $Dereference($t15); + assume {:print "$track_local(57,16,2):", $temp_0'$1_collection_Collection'} $temp_0'$1_collection_Collection' == $temp_0'$1_collection_Collection'; + + // $t16 := [110, 97, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:638:46+7 + assume {:print "$at(179,24840,24847)"} true; + $t16 := MakeVec4(110, 97, 109, 101); + assume $IsValid'vec'u8''($t16); + + // $t17 := string::utf8($t16) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:638:33+21 + call $t17 := $1_string_utf8($t16); + if ($abort_flag) { + assume {:print "$at(179,24827,24848)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // $t18 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:639:51+16 + assume {:print "$at(179,24901,24917)"} true; + $t18 := $t0->$self; + + // $t19 := object::address_to_object($t18) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:639:25+43 + call $t19 := $1_object_address_to_object'$1_collection_Collection'($t18); + if ($abort_flag) { + assume {:print "$at(179,24875,24918)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,16):", $t5} $t5 == $t5; + goto L7; + } + + // $t20 := get_field.name($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:640:24+15 + assume {:print "$at(179,24943,24958)"} true; + $t20 := $Dereference($t15)->$name; + + // $t21 := pack collection::Mutation($t17, $t19, $t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:637:21+214 + assume {:print "$at(179,24784,24998)"} true; + $t21 := $1_collection_Mutation($t17, $t19, $t20, $t1); + + // opaque begin: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:637:9+227 + + // opaque end: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:637:9+227 + + // $t22 := borrow_field.name($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:643:9+15 + assume {:print "$at(179,25009,25024)"} true; + $t22 := $ChildMutation($t15, 2, $Dereference($t15)->$name); + + // write_ref($t22, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:643:9+22 + $t22 := $UpdateMutation($t22, $t1); + + // write_back[Reference($t15).name (string::String)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:643:9+22 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_name($Dereference($t15), $Dereference($t22))); + + // write_back[collection::Collection@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:643:9+22 + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:644:5+1 + assume {:print "$at(179,25037,25038)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:644:5+1 + assume {:print "$at(179,25037,25038)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:644:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:644:5+1 + assume {:print "$at(179,25037,25038)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun collection::set_uri [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+744 +procedure {:inline 1} $1_collection_set_uri(_$t0: $1_collection_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $Mutation ($1_collection_Collection); + var $t3: $1_collection_MutatorRef; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_collection_Collection); + var $t16: bool; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: $1_object_Object'$1_collection_Collection'; + var $t21: $1_string_String; + var $t22: $1_collection_Mutation; + var $t23: $Mutation ($1_string_String); + var $t24: $Mutation ($1_event_EventHandle'$1_collection_MutationEvent'); + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: $1_collection_MutationEvent; + var $t0: $1_collection_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume {:print "$at(179,25882,25883)"} true; + assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; + + // trace_local[uri]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume {:print "$track_local(57,17,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:17+20 + assume {:print "$at(179,25978,25998)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,25978,25998)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:41+14 + $t6 := 512; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + assume {:print "$at(179,25970,26053)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 +L0: + + // $t8 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:77+13 + assume {:print "$at(179,26038,26051)"} true; + $t8 := 4; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:57+34 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(179,26018,26052)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + assume {:print "$at(179,25970,26053)"} true; + assume {:print "$track_abort(57,17):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:666:37+11 + assume {:print "$at(179,26091,26102)"} true; +L2: + + // trace_local[mutator_ref#117]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:623:27+11 + assume {:print "$at(179,23846,23857)"} true; + assume {:print "$track_local(57,17,3):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:624:33+16 + assume {:print "$at(179,23923,23939)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t11 := $ResourceExists($1_collection_Collection_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,17):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+11 + assume {:print "$at(179,23980,23991)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+16 + assume {:print "$at(179,23980,23996)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:9+17 + if (!$ResourceExists($1_collection_Collection_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_collection_Collection_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(179,23950,23967)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[collection]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:666:13+10 + assume {:print "$at(179,26067,26077)"} true; + $temp_0'$1_collection_Collection' := $Dereference($t15); + assume {:print "$track_local(57,17,2):", $temp_0'$1_collection_Collection'} $temp_0'$1_collection_Collection' == $temp_0'$1_collection_Collection'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:13+47 + assume {:print "$at(179,26117,26164)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,26117,26164)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:9+321 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:50+6 + assume {:print "$at(179,26252,26258)"} true; +L7: + + // $t17 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:50+6 + assume {:print "$at(179,26252,26258)"} true; + $t17 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:37+20 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(179,26239,26259)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:670:55+16 + assume {:print "$at(179,26315,26331)"} true; + $t19 := $t0->$self; + + // $t20 := object::address_to_object($t19) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:670:29+43 + call $t20 := $1_object_address_to_object'$1_collection_Collection'($t19); + if ($abort_flag) { + assume {:print "$at(179,26289,26332)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t21 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:671:28+14 + assume {:print "$at(179,26361,26375)"} true; + $t21 := $Dereference($t15)->$uri; + + // $t22 := pack collection::Mutation($t18, $t20, $t21, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:25+230 + assume {:print "$at(179,26192,26422)"} true; + $t22 := $1_collection_Mutation($t18, $t20, $t21, $t1); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:13+243 + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:13+243 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:673:15+1 + assume {:print "$at(179,26423,26424)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:9+321 + assume {:print "$at(179,26113,26434)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:26+3 + assume {:print "$at(179,26461,26464)"} true; +L8: + + // $t23 := borrow_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+14 + assume {:print "$at(179,26444,26458)"} true; + $t23 := $ChildMutation($t15, 3, $Dereference($t15)->$uri); + + // write_ref($t23, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+20 + $t23 := $UpdateMutation($t23, $t1); + + // write_back[Reference($t15).uri (string::String)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+20 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_uri($Dereference($t15), $Dereference($t23))); + + // $t24 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:677:13+31 + assume {:print "$at(179,26505,26536)"} true; + $t24 := $ChildMutation($t15, 4, $Dereference($t15)->$mutation_events); + + // $t25 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:62+6 + assume {:print "$at(179,26599,26605)"} true; + $t25 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:49+20 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(179,26586,26606)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t27 := pack collection::MutationEvent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:13+58 + $t27 := $1_collection_MutationEvent($t26); + + // opaque begin: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + assume {:print "$at(179,26474,26619)"} true; + + // opaque end: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_mutation_events($Dereference($t15), $Dereference($t24))); + + // write_back[collection::Collection@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun collection::set_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+744 +procedure {:timeLimit 80} $1_collection_set_uri$verify(_$t0: $1_collection_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $Mutation ($1_collection_Collection); + var $t3: $1_collection_MutatorRef; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_collection_Collection); + var $t16: bool; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: $1_object_Object'$1_collection_Collection'; + var $t21: $1_string_String; + var $t22: $1_collection_Mutation; + var $t23: $Mutation ($1_string_String); + var $t24: $Mutation ($1_event_EventHandle'$1_collection_MutationEvent'); + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: $1_collection_MutationEvent; + var $t0: $1_collection_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_collection_Collection': $1_collection_Collection; + var $temp_0'$1_collection_MutatorRef': $1_collection_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume {:print "$at(179,25882,25883)"} true; + assume $IsValid'$1_collection_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume {:print "$track_local(57,17,0):", $t0} $t0 == $t0; + + // trace_local[uri]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:664:5+1 + assume {:print "$track_local(57,17,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:17+20 + assume {:print "$at(179,25978,25998)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(179,25978,25998)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:41+14 + $t6 := 512; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + assume {:print "$at(179,25970,26053)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 +L0: + + // $t8 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:77+13 + assume {:print "$at(179,26038,26051)"} true; + $t8 := 4; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:57+34 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(179,26018,26052)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + assume {:print "$at(179,25970,26053)"} true; + assume {:print "$track_abort(57,17):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:665:9+83 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:666:37+11 + assume {:print "$at(179,26091,26102)"} true; +L2: + + // trace_local[mutator_ref#117]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:623:27+11 + assume {:print "$at(179,23846,23857)"} true; + assume {:print "$track_local(57,17,3):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:624:33+16 + assume {:print "$at(179,23923,23939)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:565:13+6 + assume {:print "$at(179,21764,21770)"} true; + $t11 := $ResourceExists($1_collection_Collection_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:30+26 + assume {:print "$at(179,21819,21845)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:566:13+44 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(179,21802,21846)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + assume {:print "$at(179,21743,21857)"} true; + assume {:print "$track_abort(57,17):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:564:9+114 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+11 + assume {:print "$at(179,23980,23991)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:39+16 + assume {:print "$at(179,23980,23996)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:625:9+17 + if (!$ResourceExists($1_collection_Collection_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_collection_Collection_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(179,23950,23967)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[collection]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:666:13+10 + assume {:print "$at(179,26067,26077)"} true; + $temp_0'$1_collection_Collection' := $Dereference($t15); + assume {:print "$track_local(57,17,2):", $temp_0'$1_collection_Collection'} $temp_0'$1_collection_Collection' == $temp_0'$1_collection_Collection'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:13+47 + assume {:print "$at(179,26117,26164)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(179,26117,26164)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:9+321 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:50+6 + assume {:print "$at(179,26252,26258)"} true; +L7: + + // $t17 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:50+6 + assume {:print "$at(179,26252,26258)"} true; + $t17 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:669:37+20 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(179,26239,26259)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:670:55+16 + assume {:print "$at(179,26315,26331)"} true; + $t19 := $t0->$self; + + // $t20 := object::address_to_object($t19) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:670:29+43 + call $t20 := $1_object_address_to_object'$1_collection_Collection'($t19); + if ($abort_flag) { + assume {:print "$at(179,26289,26332)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t21 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:671:28+14 + assume {:print "$at(179,26361,26375)"} true; + $t21 := $Dereference($t15)->$uri; + + // $t22 := pack collection::Mutation($t18, $t20, $t21, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:25+230 + assume {:print "$at(179,26192,26422)"} true; + $t22 := $1_collection_Mutation($t18, $t20, $t21, $t1); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:13+243 + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:668:13+243 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:673:15+1 + assume {:print "$at(179,26423,26424)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:667:9+321 + assume {:print "$at(179,26113,26434)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:26+3 + assume {:print "$at(179,26461,26464)"} true; +L8: + + // $t23 := borrow_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+14 + assume {:print "$at(179,26444,26458)"} true; + $t23 := $ChildMutation($t15, 3, $Dereference($t15)->$uri); + + // write_ref($t23, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+20 + $t23 := $UpdateMutation($t23, $t1); + + // write_back[Reference($t15).uri (string::String)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:675:9+20 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_uri($Dereference($t15), $Dereference($t23))); + + // $t24 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:677:13+31 + assume {:print "$at(179,26505,26536)"} true; + $t24 := $ChildMutation($t15, 4, $Dereference($t15)->$mutation_events); + + // $t25 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:62+6 + assume {:print "$at(179,26599,26605)"} true; + $t25 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:49+20 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(179,26586,26606)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(57,17):", $t5} $t5 == $t5; + goto L10; + } + + // $t27 := pack collection::MutationEvent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:678:13+58 + $t27 := $1_collection_MutationEvent($t26); + + // opaque begin: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + assume {:print "$at(179,26474,26619)"} true; + + // opaque end: event::emit_event($t24, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + $t15 := $UpdateMutation($t15, $Update'$1_collection_Collection'_mutation_events($Dereference($t15), $Dereference($t24))); + + // write_back[collection::Collection@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:676:9+145 + $1_collection_Collection_$memory := $ResourceUpdate($1_collection_Collection_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/collection.move:680:5+1 + assume {:print "$at(179,26625,26626)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:30:10+72 +function $1_comparator_spec_compare_u8_vector(left: Vec (int), right: Vec (int)): $1_comparator_Result; +axiom (forall left: Vec (int), right: Vec (int) :: +(var $$res := $1_comparator_spec_compare_u8_vector(left, right); +$IsValid'$1_comparator_Result'($$res))); + +// struct comparator::Result at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:10:5+49 +datatype $1_comparator_Result { + $1_comparator_Result($inner: int) +} +function {:inline} $Update'$1_comparator_Result'_inner(s: $1_comparator_Result, x: int): $1_comparator_Result { + $1_comparator_Result(x) +} +function $IsValid'$1_comparator_Result'(s: $1_comparator_Result): bool { + $IsValid'u8'(s->$inner) +} +function {:inline} $IsEqual'$1_comparator_Result'(s1: $1_comparator_Result, s2: $1_comparator_Result): bool { + s1 == s2 +} + +// fun comparator::compare [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:30:5+204 +procedure {:timeLimit 80} $1_comparator_compare$verify(_$t0: #0, _$t1: #0) returns ($ret0: $1_comparator_Result) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: Vec (int); + var $t7: int; + var $t8: Vec (int); + var $t9: int; + var $t10: int; + var $t11: $1_comparator_Result; + var $t0: #0; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_comparator_Result': $1_comparator_Result; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:30:5+1 + assume {:print "$at(120,823,824)"} true; + assume $IsValid'#0'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:30:5+1 + assume $IsValid'#0'($t1); + + // assume Identical($t4, bcs::$to_bytes<#0>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:25:9+37 + assume {:print "$at(121,643,680)"} true; + assume ($t4 == $1_bcs_$to_bytes'#0'($t0)); + + // assume Identical($t5, bcs::$to_bytes<#0>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:26:9+39 + assume {:print "$at(121,689,728)"} true; + assume ($t5 == $1_bcs_$to_bytes'#0'($t1)); + + // trace_local[left]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:30:5+1 + assume {:print "$at(120,823,824)"} true; + assume {:print "$track_local(58,0,0):", $t0} $t0 == $t0; + + // trace_local[right]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:30:5+1 + assume {:print "$track_local(58,0,1):", $t1} $t1 == $t1; + + // $t6 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:31:26+19 + assume {:print "$at(120,901,920)"} true; + call $t6 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(120,901,920)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[left_bytes]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:31:13+10 + assume {:print "$track_local(58,0,2):", $t6} $t6 == $t6; + + // $t8 := bcs::to_bytes<#0>($t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:32:27+20 + assume {:print "$at(120,948,968)"} true; + call $t8 := $1_bcs_to_bytes'#0'($t1); + if ($abort_flag) { + assume {:print "$at(120,948,968)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(58,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[right_bytes]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:32:13+11 + assume {:print "$track_local(58,0,3):", $t8} $t8 == $t8; + + // assume Identical($t9, Len($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:37:9+28 + assume {:print "$at(121,1052,1080)"} true; + assume ($t9 == LenVec($t6)); + + // assume Identical($t10, Len($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:38:9+30 + assume {:print "$at(121,1089,1119)"} true; + assume ($t10 == LenVec($t8)); + + // $t11 := opaque begin: comparator::compare_u8_vector($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume {:print "$at(120,979,1021)"} true; + + // assume And(WellFormed($t11), Or(Or(Eq(select comparator::Result.inner($t11), 0), Eq(select comparator::Result.inner($t11), 1)), Eq(select comparator::Result.inner($t11), 2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume ($IsValid'$1_comparator_Result'($t11) && (($IsEqual'u8'($t11->$inner, 0) || $IsEqual'u8'($t11->$inner, 1)) || $IsEqual'u8'($t11->$inner, 2))); + + // assume Implies(Eq(select comparator::Result.inner($t11), 0), And(Eq($t9, $t10), forall i: u64: TypeDomain() where Lt(i, $t9): Eq(Index($t6, i), Index($t8, i)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume ($IsEqual'u8'($t11->$inner, 0) ==> ($IsEqual'num'($t9, $t10) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $t9)) ==> ($IsEqual'u8'(ReadVec($t6, i), ReadVec($t8, i)))))); + + // assume Implies(Eq(select comparator::Result.inner($t11), 1), Or(exists i: u64: TypeDomain() where Lt(i, $t9): And(And(Lt(i, $t10), Lt(Index($t6, i), Index($t8, i))), forall j: u64: TypeDomain() where Lt(j, i): Eq(Index($t6, j), Index($t8, j))), Lt($t9, $t10))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume ($IsEqual'u8'($t11->$inner, 1) ==> ((exists i: int :: $IsValid'u64'(i) && ((i < $t9)) && ((((i < $t10) && (ReadVec($t6, i) < ReadVec($t8, i))) && (forall j: int :: $IsValid'u64'(j) ==> ((j < i)) ==> ($IsEqual'u8'(ReadVec($t6, j), ReadVec($t8, j))))))) || ($t9 < $t10))); + + // assume Implies(Eq(select comparator::Result.inner($t11), 2), Or(exists i: u64: TypeDomain() where Lt(i, $t9): And(And(Lt(i, $t10), Gt(Index($t6, i), Index($t8, i))), forall j: u64: TypeDomain() where Lt(j, i): Eq(Index($t6, j), Index($t8, j))), Gt($t9, $t10))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume ($IsEqual'u8'($t11->$inner, 2) ==> ((exists i: int :: $IsValid'u64'(i) && ((i < $t9)) && ((((i < $t10) && (ReadVec($t6, i) > ReadVec($t8, i))) && (forall j: int :: $IsValid'u64'(j) ==> ((j < i)) ==> ($IsEqual'u8'(ReadVec($t6, j), ReadVec($t8, j))))))) || ($t9 > $t10))); + + // assume Eq($t11, comparator::spec_compare_u8_vector($t6, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume $IsEqual'$1_comparator_Result'($t11, $1_comparator_spec_compare_u8_vector($t6, $t8)); + + // $t11 := opaque end: comparator::compare_u8_vector($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:34:9+42 + assume {:print "$track_return(58,0,0):", $t11} $t11 == $t11; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:35:5+1 + assume {:print "$at(120,1026,1027)"} true; +L1: + + // assert Eq($t11, comparator::spec_compare_u8_vector($t4, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:27:9+66 + assume {:print "$at(121,737,803)"} true; + assert {:msg "assert_failed(121,737,803): post-condition does not hold"} + $IsEqual'$1_comparator_Result'($t11, $1_comparator_spec_compare_u8_vector($t4, $t5)); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:27:9+66 + $ret0 := $t11; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:35:5+1 + assume {:print "$at(120,1026,1027)"} true; +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:35:5+1 + assume {:print "$at(120,1026,1027)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun comparator::compare_u8_vector [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+852 +procedure {:timeLimit 80} $1_comparator_compare_u8_vector$verify(_$t0: Vec (int), _$t1: Vec (int)) returns ($ret0: $1_comparator_Result) +{ + // declare local variables + var $t2: bool; + var $t3: $1_comparator_Result; + var $t4: $1_comparator_Result; + 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: bool; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: $1_comparator_Result; + var $t23: $1_comparator_Result; + var $t24: bool; + var $t25: int; + var $t26: $1_comparator_Result; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t0: Vec (int); + var $t1: Vec (int); + var $temp_0'$1_comparator_Result': $1_comparator_Result; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+1 + assume {:print "$at(120,1097,1098)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+1 + assume $IsValid'vec'u8''($t1); + + // assume Identical($t10, Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:37:9+28 + assume {:print "$at(121,1052,1080)"} true; + assume ($t10 == LenVec($t0)); + + // assume Identical($t11, Len($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:38:9+30 + assume {:print "$at(121,1089,1119)"} true; + assume ($t11 == LenVec($t1)); + + // trace_local[left]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+1 + assume {:print "$track_local(58,1,0):", $t0} $t0 == $t0; + + // trace_local[right]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+1 + assume {:print "$track_local(58,1,1):", $t1} $t1 == $t1; + + // $t12 := vector::length($t0) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:39:27+21 + assume {:print "$at(120,1199,1220)"} true; + call $t12 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(120,1199,1220)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_length]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:39:13+11 + assume {:print "$track_local(58,1,7):", $t12} $t12 == $t12; + + // $t14 := vector::length($t1) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:40:28+22 + assume {:print "$at(120,1249,1271)"} true; + call $t14 := $1_vector_length'u8'($t1); + if ($abort_flag) { + assume {:print "$at(120,1249,1271)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_length]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:40:13+12 + assume {:print "$track_local(58,1,9):", $t14} $t14 == $t14; + + // $t15 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:42:19+1 + assume {:print "$at(120,1292,1293)"} true; + $t15 := 0; + assume $IsValid'u64'($t15); + + // trace_local[idx]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:42:13+3 + assume {:print "$track_local(58,1,5):", $t15} $t15 == $t15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L10: + + // $t16 := <($t15, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t15, $t12); + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L2: + + // $t2 := <($t15, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t15, $t14); + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L0: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L3: + + // if ($t2) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L5: + + // $t18 := vector::borrow($t0, $t15) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t15); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t15) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t15); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:40+7 + assume {:print "$at(120,1552,1559)"} true; +L7: + + // $t21 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:40+7 + assume {:print "$at(120,1552,1559)"} true; + $t21 := 1; + assume $IsValid'u8'($t21); + + // $t22 := pack comparator::Result($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:24+25 + $t22 := $1_comparator_Result($t21); + + // assert Or(Or(Eq(select comparator::Result.inner($t22), 0), Eq(select comparator::Result.inner($t22), 1)), Eq(select comparator::Result.inner($t22), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + assume {:print "$at(121,58,123)"} true; + assert {:msg "assert_failed(121,58,123): data invariant does not hold"} + (($IsEqual'u8'($t22->$inner, 0) || $IsEqual'u8'($t22->$inner, 1)) || $IsEqual'u8'($t22->$inner, 2)); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:17+32 + assume {:print "$at(120,1529,1561)"} true; + assume {:print "$track_return(58,1,0):", $t22} $t22 == $t22; + + // $t23 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:17+32 + $t23 := $t22; + + // goto L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:49:17+32 + goto L58; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L6: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:40+7 + assume {:print "$at(120,1650,1657)"} true; +L9: + + // $t25 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:40+7 + assume {:print "$at(120,1650,1657)"} true; + $t25 := 2; + assume $IsValid'u8'($t25); + + // $t26 := pack comparator::Result($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:24+25 + $t26 := $1_comparator_Result($t25); + + // assert Or(Or(Eq(select comparator::Result.inner($t26), 0), Eq(select comparator::Result.inner($t26), 1)), Eq(select comparator::Result.inner($t26), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + assume {:print "$at(121,58,123)"} true; + assert {:msg "assert_failed(121,58,123): data invariant does not hold"} + (($IsEqual'u8'($t26->$inner, 0) || $IsEqual'u8'($t26->$inner, 1)) || $IsEqual'u8'($t26->$inner, 2)); + + // trace_return[0]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:17+32 + assume {:print "$at(120,1627,1659)"} true; + assume {:print "$track_return(58,1,0):", $t26} $t26 == $t26; + + // $t23 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:17+32 + $t23 := $t26; + + // goto L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:51:17+32 + goto L58; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L8: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t15, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t15, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:26+1 + goto L25; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:13+11 + assume {:print "$at(120,1726,1737)"} true; +L4: + + // $t29 := <($t12, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:25+1 + assume {:print "$at(120,1738,1739)"} true; + call $t29 := $Lt($t12, $t14); + + // if ($t29) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + if ($t29) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:57:29+7 + assume {:print "$at(120,1784,1791)"} true; +L12: + + // $t30 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:57:29+7 + assume {:print "$at(120,1784,1791)"} true; + $t30 := 1; + assume $IsValid'u8'($t30); + + // $t4 := pack comparator::Result($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:57:13+25 + $t4 := $1_comparator_Result($t30); + + // assert Or(Or(Eq(select comparator::Result.inner($t4), 0), Eq(select comparator::Result.inner($t4), 1)), Eq(select comparator::Result.inner($t4), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + assume {:print "$at(121,58,123)"} true; + assert {:msg "assert_failed(121,58,123): data invariant does not hold"} + (($IsEqual'u8'($t4->$inner, 0) || $IsEqual'u8'($t4->$inner, 1)) || $IsEqual'u8'($t4->$inner, 2)); + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + assume {:print "$at(120,1722,1943)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:58:20+11 + assume {:print "$at(120,1813,1824)"} true; +L11: + + // $t31 := >($t12, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:58:32+1 + assume {:print "$at(120,1825,1826)"} true; + call $t31 := $Gt($t12, $t14); + + // if ($t31) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:58:16+134 + if ($t31) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:59:29+7 + assume {:print "$at(120,1871,1878)"} true; +L15: + + // $t32 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:59:29+7 + assume {:print "$at(120,1871,1878)"} true; + $t32 := 2; + assume $IsValid'u8'($t32); + + // $t3 := pack comparator::Result($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:59:13+25 + $t3 := $1_comparator_Result($t32); + + // assert Or(Or(Eq(select comparator::Result.inner($t3), 0), Eq(select comparator::Result.inner($t3), 1)), Eq(select comparator::Result.inner($t3), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + assume {:print "$at(121,58,123)"} true; + assert {:msg "assert_failed(121,58,123): data invariant does not hold"} + (($IsEqual'u8'($t3->$inner, 0) || $IsEqual'u8'($t3->$inner, 1)) || $IsEqual'u8'($t3->$inner, 2)); + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:58:16+134 + assume {:print "$at(120,1809,1943)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:61:29+5 + assume {:print "$at(120,1926,1931)"} true; +L14: + + // $t33 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:61:29+5 + assume {:print "$at(120,1926,1931)"} true; + $t33 := 0; + assume $IsValid'u8'($t33); + + // $t3 := pack comparator::Result($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:61:13+23 + $t3 := $1_comparator_Result($t33); + + // assert Or(Or(Eq(select comparator::Result.inner($t3), 0), Eq(select comparator::Result.inner($t3), 1)), Eq(select comparator::Result.inner($t3), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:3:9+65 + assume {:print "$at(121,58,123)"} true; + assert {:msg "assert_failed(121,58,123): data invariant does not hold"} + (($IsEqual'u8'($t3->$inner, 0) || $IsEqual'u8'($t3->$inner, 1)) || $IsEqual'u8'($t3->$inner, 2)); + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:58:16+134 + assume {:print "$at(120,1809,1943)"} true; +L16: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + assume {:print "$at(120,1722,1943)"} true; + $t4 := $t3; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 +L13: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + assume {:print "$at(120,1722,1943)"} true; + assume {:print "$track_return(58,1,0):", $t4} $t4 == $t4; + + // $t23 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + $t23 := $t4; + + // goto L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:56:9+221 + goto L58; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+852 + // End of bounded loop unrolling for loop: L10 + assume {:print "$at(120,1097,1949)"} true; +L17: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:38:5+852 + assume {:print "$at(120,1097,1949)"} true; + assume false; + return; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L25: + + // $t16 := <($t28, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t28, $t12); + + // if ($t16) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L19: + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L20: + + // $t2 := <($t28, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t28, $t14); + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L21; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L18: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L21: + + // if ($t2) goto L22 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L22; } else { goto L4; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L22: + + // $t18 := vector::borrow($t0, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t28); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t28); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L23; } + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L23: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L24; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L24: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t28, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t28, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L33: + + // $t16 := <($t28, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t28, $t12); + + // if ($t16) goto L27 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L27; } else { goto L26; } + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L27: + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L28: + + // $t2 := <($t28, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t28, $t14); + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L29; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L26: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L29: + + // if ($t2) goto L30 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L30; } else { goto L4; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L30: + + // $t18 := vector::borrow($t0, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t28); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t28); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L31; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L31: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L32; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L32: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t28, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t28, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L41: + + // $t16 := <($t28, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t28, $t12); + + // if ($t16) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L35: + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L36: + + // $t2 := <($t28, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t28, $t14); + + // goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L37; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L34: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L37: + + // if ($t2) goto L38 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L38; } else { goto L4; } + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L38: + + // $t18 := vector::borrow($t0, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t28); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t28); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L39; } + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L39: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L40; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L40: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t28, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t28, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L49: + + // $t16 := <($t28, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t28, $t12); + + // if ($t16) goto L43 else goto L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L43; } else { goto L42; } + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L43: + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L44: + + // $t2 := <($t28, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t28, $t14); + + // goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L45; + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L42: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L45: + + // if ($t2) goto L46 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L46; } else { goto L4; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L46: + + // $t18 := vector::borrow($t0, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t28); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t28); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L47; } + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L47: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L48; } + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L48: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t28, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t28, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // label L57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+3 + assume {:print "$at(120,1311,1314)"} true; +L57: + + // $t16 := <($t28, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:20+1 + assume {:print "$at(120,1315,1316)"} true; + call $t16 := $Lt($t28, $t12); + + // if ($t16) goto L51 else goto L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + if ($t16) { goto L51; } else { goto L50; } + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L51: + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:37+3 + assume {:print "$at(120,1332,1335)"} true; +L52: + + // $t2 := <($t28, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:41+1 + assume {:print "$at(120,1336,1337)"} true; + call $t2 := $Lt($t28, $t14); + + // goto L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + goto L53; + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L50: + + // $t17 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + assume {:print "$at(120,1311,1350)"} true; + $t17 := false; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 + $t2 := $t17; + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:16+39 +L53: + + // if ($t2) goto L54 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:44:9+407 + assume {:print "$at(120,1304,1711)"} true; + if ($t2) { goto L54; } else { goto L4; } + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:45+5 + assume {:print "$at(120,1398,1403)"} true; +L54: + + // $t18 := vector::borrow($t0, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:30+26 + assume {:print "$at(120,1383,1409)"} true; + call $t18 := $1_vector_borrow'u8'($t0, $t28); + if ($abort_flag) { + assume {:print "$at(120,1383,1409)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[left_byte]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:45:17+9 + assume {:print "$track_local(58,1,6):", $t18} $t18 == $t18; + + // $t19 := vector::borrow($t1, $t28) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:31+27 + assume {:print "$at(120,1441,1468)"} true; + call $t19 := $1_vector_borrow'u8'($t1, $t28); + if ($abort_flag) { + assume {:print "$at(120,1441,1468)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[right_byte]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:46:17+10 + assume {:print "$track_local(58,1,8):", $t19} $t19 == $t19; + + // $t20 := <($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:27+1 + assume {:print "$at(120,1497,1498)"} true; + call $t20 := $Lt($t18, $t19); + + // if ($t20) goto L7 else goto L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:48:13+190 + if ($t20) { goto L7; } else { goto L55; } + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:24+9 + assume {:print "$at(120,1585,1594)"} true; +L55: + + // $t24 := >($t18, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:34+1 + assume {:print "$at(120,1595,1596)"} true; + call $t24 := $Gt($t18, $t19); + + // if ($t24) goto L9 else goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:50:20+92 + if ($t24) { goto L9; } else { goto L56; } + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:19+3 + assume {:print "$at(120,1693,1696)"} true; +L56: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:25+1 + assume {:print "$at(120,1699,1700)"} true; + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t28, $t27) on_abort goto L59 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:23+1 + call $t28 := $AddU64($t28, $t27); + if ($abort_flag) { + assume {:print "$at(120,1697,1698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(58,1):", $t13} $t13 == $t13; + goto L59; + } + + // trace_local[idx]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:13+3 + assume {:print "$track_local(58,1,5):", $t28} $t28 == $t28; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:53:26+1 + goto L17; + + // label L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:63:5+1 + assume {:print "$at(120,1948,1949)"} true; +L58: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:35:9+16 + assume {:print "$at(121,1026,1042)"} true; + assert {:msg "assert_failed(121,1026,1042): function does not abort under this condition"} + !false; + + // assert Implies(Eq(select comparator::Result.inner($t23), 0), And(Eq($t10, $t11), forall i: u64: TypeDomain() where Lt(i, $t10): Eq(Index($t0, i), Index($t1, i)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:40:9+168 + assume {:print "$at(121,1129,1297)"} true; + assert {:msg "assert_failed(121,1129,1297): post-condition does not hold"} + ($IsEqual'u8'($t23->$inner, 0) ==> ($IsEqual'num'($t10, $t11) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $t10)) ==> ($IsEqual'u8'(ReadVec($t0, i), ReadVec($t1, i)))))); + + // assert Implies(Eq(select comparator::Result.inner($t23), 1), Or(exists i: u64: TypeDomain() where Lt(i, $t10): And(And(Lt(i, $t11), Lt(Index($t0, i), Index($t1, i))), forall j: u64: TypeDomain() where Lt(j, i): Eq(Index($t0, j), Index($t1, j))), Lt($t10, $t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:45:9+313 + assume {:print "$at(121,1307,1620)"} true; + assert {:msg "assert_failed(121,1307,1620): post-condition does not hold"} + ($IsEqual'u8'($t23->$inner, 1) ==> ((exists i: int :: $IsValid'u64'(i) && ((i < $t10)) && ((((i < $t11) && (ReadVec($t0, i) < ReadVec($t1, i))) && (forall j: int :: $IsValid'u64'(j) ==> ((j < i)) ==> ($IsEqual'u8'(ReadVec($t0, j), ReadVec($t1, j))))))) || ($t10 < $t11))); + + // assert Implies(Eq(select comparator::Result.inner($t23), 2), Or(exists i: u64: TypeDomain() where Lt(i, $t10): And(And(Lt(i, $t11), Gt(Index($t0, i), Index($t1, i))), forall j: u64: TypeDomain() where Lt(j, i): Eq(Index($t0, j), Index($t1, j))), Gt($t10, $t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:54:9+313 + assume {:print "$at(121,1630,1943)"} true; + assert {:msg "assert_failed(121,1630,1943): post-condition does not hold"} + ($IsEqual'u8'($t23->$inner, 2) ==> ((exists i: int :: $IsValid'u64'(i) && ((i < $t10)) && ((((i < $t11) && (ReadVec($t0, i) > ReadVec($t1, i))) && (forall j: int :: $IsValid'u64'(j) ==> ((j < i)) ==> ($IsEqual'u8'(ReadVec($t0, j), ReadVec($t1, j))))))) || ($t10 > $t11))); + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:54:9+313 + $ret0 := $t23; + return; + + // label L59 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:63:5+1 + assume {:print "$at(120,1948,1949)"} true; +L59: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:32:5+1126 + assume {:print "$at(121,898,2024)"} true; + assert {:msg "assert_failed(121,898,2024): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:32:5+1126 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun comparator::is_equal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:14:5+76 +procedure {:timeLimit 80} $1_comparator_is_equal$verify(_$t0: $1_comparator_Result) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_comparator_Result; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_comparator_Result; + var $temp_0'$1_comparator_Result': $1_comparator_Result; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Or(Or(Eq(select comparator::Result.inner($t0), 0), Eq(select comparator::Result.inner($t0), 1)), Eq(select comparator::Result.inner($t0), 2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:14:5+1 + assume {:print "$at(120,265,266)"} true; + assume ($IsValid'$1_comparator_Result'($t0) && (($IsEqual'u8'($t0->$inner, 0) || $IsEqual'u8'($t0->$inner, 1)) || $IsEqual'u8'($t0->$inner, 2))); + + // assume Identical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:8:9+15 + assume {:print "$at(121,205,220)"} true; + assume ($t1 == $t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:14:5+1 + assume {:print "$at(120,265,266)"} true; + assume {:print "$track_local(58,2,0):", $t0} $t0 == $t0; + + // $t2 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:15:9+10 + assume {:print "$at(120,316,326)"} true; + $t2 := $t0->$inner; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:15:23+5 + $t3 := 0; + assume $IsValid'u8'($t3); + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:15:20+2 + $t4 := $IsEqual'u8'($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:15:9+19 + assume {:print "$track_return(58,2,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:16:5+1 + assume {:print "$at(120,340,341)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:7:9+16 + assume {:print "$at(121,180,196)"} true; + assert {:msg "assert_failed(121,180,196): function does not abort under this condition"} + !false; + + // assert Eq($t4, Eq(select comparator::Result.inner($t1), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:9:9+39 + assume {:print "$at(121,229,268)"} true; + assert {:msg "assert_failed(121,229,268): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'u8'($t1->$inner, 0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:9:9+39 + $ret0 := $t4; + return; + +} + +// fun comparator::is_greater_than [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:22:5+85 +procedure {:timeLimit 80} $1_comparator_is_greater_than$verify(_$t0: $1_comparator_Result) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_comparator_Result; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_comparator_Result; + var $temp_0'$1_comparator_Result': $1_comparator_Result; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Or(Or(Eq(select comparator::Result.inner($t0), 0), Eq(select comparator::Result.inner($t0), 1)), Eq(select comparator::Result.inner($t0), 2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:22:5+1 + assume {:print "$at(120,438,439)"} true; + assume ($IsValid'$1_comparator_Result'($t0) && (($IsEqual'u8'($t0->$inner, 0) || $IsEqual'u8'($t0->$inner, 1)) || $IsEqual'u8'($t0->$inner, 2))); + + // assume Identical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:20:9+15 + assume {:print "$at(121,511,526)"} true; + assume ($t1 == $t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:22:5+1 + assume {:print "$at(120,438,439)"} true; + assume {:print "$track_local(58,3,0):", $t0} $t0 == $t0; + + // $t2 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:23:9+10 + assume {:print "$at(120,496,506)"} true; + $t2 := $t0->$inner; + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:23:23+7 + $t3 := 2; + assume $IsValid'u8'($t3); + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:23:20+2 + $t4 := $IsEqual'u8'($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:23:9+21 + assume {:print "$track_return(58,3,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:24:5+1 + assume {:print "$at(120,522,523)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:19:9+16 + assume {:print "$at(121,486,502)"} true; + assert {:msg "assert_failed(121,486,502): function does not abort under this condition"} + !false; + + // assert Eq($t4, Eq(select comparator::Result.inner($t1), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:21:9+41 + assume {:print "$at(121,535,576)"} true; + assert {:msg "assert_failed(121,535,576): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'u8'($t1->$inner, 2)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:21:9+41 + $ret0 := $t4; + return; + +} + +// fun comparator::is_smaller_than [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:18:5+85 +procedure {:timeLimit 80} $1_comparator_is_smaller_than$verify(_$t0: $1_comparator_Result) returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_comparator_Result; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_comparator_Result; + var $temp_0'$1_comparator_Result': $1_comparator_Result; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), Or(Or(Eq(select comparator::Result.inner($t0), 0), Eq(select comparator::Result.inner($t0), 1)), Eq(select comparator::Result.inner($t0), 2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:18:5+1 + assume {:print "$at(120,347,348)"} true; + assume ($IsValid'$1_comparator_Result'($t0) && (($IsEqual'u8'($t0->$inner, 0) || $IsEqual'u8'($t0->$inner, 1)) || $IsEqual'u8'($t0->$inner, 2))); + + // assume Identical($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:14:9+15 + assume {:print "$at(121,357,372)"} true; + assume ($t1 == $t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:18:5+1 + assume {:print "$at(120,347,348)"} true; + assume {:print "$track_local(58,4,0):", $t0} $t0 == $t0; + + // $t2 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:19:9+10 + assume {:print "$at(120,405,415)"} true; + $t2 := $t0->$inner; + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:19:23+7 + $t3 := 1; + assume $IsValid'u8'($t3); + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:19:20+2 + $t4 := $IsEqual'u8'($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:19:9+21 + assume {:print "$track_return(58,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.move:20:5+1 + assume {:print "$at(120,431,432)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:13:9+16 + assume {:print "$at(121,332,348)"} true; + assert {:msg "assert_failed(121,332,348): function does not abort under this condition"} + !false; + + // assert Eq($t4, Eq(select comparator::Result.inner($t1), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:15:9+41 + assume {:print "$at(121,381,422)"} true; + assert {:msg "assert_failed(121,381,422): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'u8'($t1->$inner, 1)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/comparator.spec.move:15:9+41 + $ret0 := $t4; + return; + +} + +// struct consensus_config::ConsensusConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:14:5+1034 +datatype $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig($uncle_rate_target: int, $base_block_time_target: int, $base_reward_per_block: int, $base_reward_per_uncle_percent: int, $epoch_block_count: int, $base_block_difficulty_window: int, $min_block_time_target: int, $max_block_time_target: int, $base_max_uncles_per_block: int, $base_block_gas_limit: int, $strategy: int) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_uncle_rate_target(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(x, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_block_time_target(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, x, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_reward_per_block(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, x, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_reward_per_uncle_percent(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, x, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_epoch_block_count(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, x, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_block_difficulty_window(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, x, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_min_block_time_target(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, x, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_max_block_time_target(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, x, s->$base_max_uncles_per_block, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_max_uncles_per_block(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, x, s->$base_block_gas_limit, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_base_block_gas_limit(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, x, s->$strategy) +} +function {:inline} $Update'$1_consensus_config_ConsensusConfig'_strategy(s: $1_consensus_config_ConsensusConfig, x: int): $1_consensus_config_ConsensusConfig { + $1_consensus_config_ConsensusConfig(s->$uncle_rate_target, s->$base_block_time_target, s->$base_reward_per_block, s->$base_reward_per_uncle_percent, s->$epoch_block_count, s->$base_block_difficulty_window, s->$min_block_time_target, s->$max_block_time_target, s->$base_max_uncles_per_block, s->$base_block_gas_limit, x) +} +function $IsValid'$1_consensus_config_ConsensusConfig'(s: $1_consensus_config_ConsensusConfig): bool { + $IsValid'u64'(s->$uncle_rate_target) + && $IsValid'u64'(s->$base_block_time_target) + && $IsValid'u128'(s->$base_reward_per_block) + && $IsValid'u64'(s->$base_reward_per_uncle_percent) + && $IsValid'u64'(s->$epoch_block_count) + && $IsValid'u64'(s->$base_block_difficulty_window) + && $IsValid'u64'(s->$min_block_time_target) + && $IsValid'u64'(s->$max_block_time_target) + && $IsValid'u64'(s->$base_max_uncles_per_block) + && $IsValid'u64'(s->$base_block_gas_limit) + && $IsValid'u8'(s->$strategy) +} +function {:inline} $IsEqual'$1_consensus_config_ConsensusConfig'(s1: $1_consensus_config_ConsensusConfig, s2: $1_consensus_config_ConsensusConfig): bool { + s1 == s2 +} + +// fun consensus_config::get_config [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:116:5+149 +procedure {:inline 1} $1_consensus_config_get_config() returns ($ret0: $1_consensus_config_ConsensusConfig) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:117:58+42 + assume {:print "$at(63,4344,4386)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(63,4344,4386)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,9):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := on_chain_config::get_by_address($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:117:9+92 + call $t2 := $1_on_chain_config_get_by_address'$1_consensus_config_ConsensusConfig'($t0); + if ($abort_flag) { + assume {:print "$at(63,4295,4387)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(59,9):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:117:9+92 + assume {:print "$track_return(59,9,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:118:5+1 + assume {:print "$at(63,4392,4393)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:118:5+1 + assume {:print "$at(63,4392,4393)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:118:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:118:5+1 + assume {:print "$at(63,4392,4393)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun consensus_config::base_block_difficulty_window [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:141:5+122 +procedure {:inline 1} $1_consensus_config_base_block_difficulty_window(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:141:5+1 + assume {:print "$at(63,5012,5013)"} true; + assume {:print "$track_local(59,0,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_block_difficulty_window($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:142:9+35 + assume {:print "$at(63,5093,5128)"} true; + $t1 := $t0->$base_block_difficulty_window; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:142:9+35 + assume {:print "$track_return(59,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:143:5+1 + assume {:print "$at(63,5133,5134)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:143:5+1 + assume {:print "$at(63,5133,5134)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::base_block_gas_limit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:166:5+106 +procedure {:inline 1} $1_consensus_config_base_block_gas_limit(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:166:5+1 + assume {:print "$at(63,5801,5802)"} true; + assume {:print "$track_local(59,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_block_gas_limit($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:167:9+27 + assume {:print "$at(63,5874,5901)"} true; + $t1 := $t0->$base_block_gas_limit; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:167:9+27 + assume {:print "$track_return(59,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:168:5+1 + assume {:print "$at(63,5906,5907)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:168:5+1 + assume {:print "$at(63,5906,5907)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::base_block_time_target [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:126:5+110 +procedure {:inline 1} $1_consensus_config_base_block_time_target(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:126:5+1 + assume {:print "$at(63,4570,4571)"} true; + assume {:print "$track_local(59,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:127:9+29 + assume {:print "$at(63,4645,4674)"} true; + $t1 := $t0->$base_block_time_target; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:127:9+29 + assume {:print "$track_return(59,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:128:5+1 + assume {:print "$at(63,4679,4680)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:128:5+1 + assume {:print "$at(63,4679,4680)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::base_max_uncles_per_block [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:161:5+116 +procedure {:inline 1} $1_consensus_config_base_max_uncles_per_block(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:161:5+1 + assume {:print "$at(63,5646,5647)"} true; + assume {:print "$track_local(59,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_max_uncles_per_block($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:162:9+32 + assume {:print "$at(63,5724,5756)"} true; + $t1 := $t0->$base_max_uncles_per_block; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:162:9+32 + assume {:print "$track_return(59,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:163:5+1 + assume {:print "$at(63,5761,5762)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:163:5+1 + assume {:print "$at(63,5761,5762)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::base_reward_per_block [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:131:5+109 +procedure {:inline 1} $1_consensus_config_base_reward_per_block(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:131:5+1 + assume {:print "$at(63,4720,4721)"} true; + assume {:print "$track_local(59,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_reward_per_block($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:132:9+28 + assume {:print "$at(63,4795,4823)"} true; + $t1 := $t0->$base_reward_per_block; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:132:9+28 + assume {:print "$track_return(59,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:133:5+1 + assume {:print "$at(63,4828,4829)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:133:5+1 + assume {:print "$at(63,4828,4829)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::base_reward_per_uncle_percent [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:146:5+124 +procedure {:inline 1} $1_consensus_config_base_reward_per_uncle_percent(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:146:5+1 + assume {:print "$at(63,5182,5183)"} true; + assume {:print "$track_local(59,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.base_reward_per_uncle_percent($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:147:9+36 + assume {:print "$at(63,5264,5300)"} true; + $t1 := $t0->$base_reward_per_uncle_percent; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:147:9+36 + assume {:print "$track_return(59,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:148:5+1 + assume {:print "$at(63,5305,5306)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:148:5+1 + assume {:print "$at(63,5305,5306)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::do_compute_reward_per_block [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:182:5+293 +procedure {:inline 1} $1_consensus_config_do_compute_reward_per_block(_$t0: $1_consensus_config_ConsensusConfig, _$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 $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + 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 $t0: $1_consensus_config_ConsensusConfig; + var $t1: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:182:5+1 + assume {:print "$at(63,6385,6386)"} true; + assume {:print "$track_local(59,7,0):", $t0} $t0 == $t0; + + // trace_local[new_epoch_block_time_target]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:182:5+1 + assume {:print "$track_local(59,7,1):", $t1} $t1 == $t1; + + // $t5 := get_field.base_reward_per_block($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:184:13+28 + assume {:print "$at(63,6530,6558)"} true; + $t5 := $t0->$base_reward_per_block; + + // $t6 := (u128)($t1) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:185:13+37 + assume {:print "$at(63,6572,6609)"} true; + call $t6 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(63,6572,6609)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t8 := get_field.base_block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:186:14+29 + assume {:print "$at(63,6624,6653)"} true; + $t8 := $t0->$base_block_time_target; + + // $t9 := (u128)($t8) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:186:13+39 + call $t9 := $CastU128($t8); + if ($abort_flag) { + assume {:print "$at(63,6623,6662)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // trace_local[c#124]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(59,7,4):", $t9} $t9 == $t9; + + // trace_local[b#123]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(59,7,3):", $t6} $t6 == $t6; + + // trace_local[a#122]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(59,7,2):", $t5} $t5 == $t5; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t11 := !=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t11 := !$IsEqual'u128'($t9, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 +L0: + + // $t12 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t12 := 4; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(59,7):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t7 := $t13; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L2: + + // $t14 := (u256)($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t14 := $CastU256($t5); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t15 := (u256)($t6) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t15 := $CastU256($t6); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t16 := *($t14, $t15) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t16 := $MulU256($t14, $t15); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t17 := (u256)($t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t17 := $CastU256($t9); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t18 := /($t16, $t17) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t18 := $Div($t16, $t17); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // $t19 := (u128)($t18) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t19 := $CastU128($t18); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(59,7):", $t7} $t7 == $t7; + goto L4; + } + + // trace_return[0]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + assume {:print "$track_return(59,7,0):", $t19} $t19 == $t19; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:188:5+1 + assume {:print "$at(63,6677,6678)"} true; +L3: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:188:5+1 + assume {:print "$at(63,6677,6678)"} true; + $ret0 := $t19; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:188:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:188:5+1 + assume {:print "$at(63,6677,6678)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun consensus_config::epoch_block_count [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:136:5+100 +procedure {:inline 1} $1_consensus_config_epoch_block_count(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:136:5+1 + assume {:print "$at(63,4865,4866)"} true; + assume {:print "$track_local(59,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.epoch_block_count($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:137:9+24 + assume {:print "$at(63,4935,4959)"} true; + $t1 := $t0->$epoch_block_count; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:137:9+24 + assume {:print "$track_return(59,8,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:138:5+1 + assume {:print "$at(63,4964,4965)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:138:5+1 + assume {:print "$at(63,4964,4965)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::uncle_rate_target [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:121:5+100 +procedure {:inline 1} $1_consensus_config_uncle_rate_target(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:121:5+1 + assume {:print "$at(63,4429,4430)"} true; + assume {:print "$track_local(59,15,0):", $t0} $t0 == $t0; + + // $t1 := get_field.uncle_rate_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:122:9+24 + assume {:print "$at(63,4499,4523)"} true; + $t1 := $t0->$uncle_rate_target; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:122:9+24 + assume {:print "$track_return(59,15,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:123:5+1 + assume {:print "$at(63,4528,4529)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:123:5+1 + assume {:print "$at(63,4528,4529)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::min_block_time_target [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:151:5+108 +procedure {:inline 1} $1_consensus_config_min_block_time_target(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:151:5+1 + assume {:print "$at(63,5346,5347)"} true; + assume {:print "$track_local(59,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.min_block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:152:9+28 + assume {:print "$at(63,5420,5448)"} true; + $t1 := $t0->$min_block_time_target; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:152:9+28 + assume {:print "$track_return(59,12,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:153:5+1 + assume {:print "$at(63,5453,5454)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:153:5+1 + assume {:print "$at(63,5453,5454)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::max_block_time_target [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:156:5+108 +procedure {:inline 1} $1_consensus_config_max_block_time_target(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:156:5+1 + assume {:print "$at(63,5494,5495)"} true; + assume {:print "$track_local(59,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field.max_block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:157:9+28 + assume {:print "$at(63,5568,5596)"} true; + $t1 := $t0->$max_block_time_target; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:157:9+28 + assume {:print "$track_return(59,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:158:5+1 + assume {:print "$at(63,5601,5602)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:158:5+1 + assume {:print "$at(63,5601,5602)"} true; + $ret0 := $t1; + return; + +} + +// fun consensus_config::strategy [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:171:5+81 +procedure {:inline 1} $1_consensus_config_strategy(_$t0: $1_consensus_config_ConsensusConfig) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_consensus_config_ConsensusConfig; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u8': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:171:5+1 + assume {:print "$at(63,5934,5935)"} true; + assume {:print "$track_local(59,14,0):", $t0} $t0 == $t0; + + // $t1 := get_field.strategy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:172:9+15 + assume {:print "$at(63,5994,6009)"} true; + $t1 := $t0->$strategy; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:172:9+15 + assume {:print "$track_return(59,14,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:173:5+1 + assume {:print "$at(63,6014,6015)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/consensus_config.move:173:5+1 + assume {:print "$at(63,6014,6015)"} true; + $ret0 := $t1; + return; + +} + +// struct copyable_any::Any at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:12:5+92 +datatype $1_copyable_any_Any { + $1_copyable_any_Any($type_name: $1_string_String, $data: Vec (int)) +} +function {:inline} $Update'$1_copyable_any_Any'_type_name(s: $1_copyable_any_Any, x: $1_string_String): $1_copyable_any_Any { + $1_copyable_any_Any(x, s->$data) +} +function {:inline} $Update'$1_copyable_any_Any'_data(s: $1_copyable_any_Any, x: Vec (int)): $1_copyable_any_Any { + $1_copyable_any_Any(s->$type_name, x) +} +function $IsValid'$1_copyable_any_Any'(s: $1_copyable_any_Any): bool { + $IsValid'$1_string_String'(s->$type_name) + && $IsValid'vec'u8''(s->$data) +} +function {:inline} $IsEqual'$1_copyable_any_Any'(s1: $1_copyable_any_Any, s2: $1_copyable_any_Any): bool { + $IsEqual'$1_string_String'(s1->$type_name, s2->$type_name) + && $IsEqual'vec'u8''(s1->$data, s2->$data)} + +// fun copyable_any::type_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:33:5+73 +procedure {:timeLimit 80} $1_copyable_any_type_name$verify(_$t0: $1_copyable_any_Any) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t0: $1_copyable_any_Any; + var $temp_0'$1_copyable_any_Any': $1_copyable_any_Any; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:33:5+1 + assume {:print "$at(122,1106,1107)"} true; + assume $IsValid'$1_copyable_any_Any'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:33:5+1 + assume {:print "$track_local(61,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.type_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:34:9+15 + assume {:print "$at(122,1158,1173)"} true; + $t1 := $t0->$type_name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:34:9+15 + assume {:print "$track_return(61,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:35:5+1 + assume {:print "$at(122,1178,1179)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:33:9+16 + assume {:print "$at(123,940,956)"} true; + assert {:msg "assert_failed(123,940,956): function does not abort under this condition"} + !false; + + // assert Eq($t1, select copyable_any::Any.type_name($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:34:9+33 + assume {:print "$at(123,965,998)"} true; + assert {:msg "assert_failed(123,965,998): post-condition does not hold"} + $IsEqual'$1_string_String'($t1, $t0->$type_name); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:34:9+33 + $ret0 := $t1; + return; + +} + +// fun copyable_any::pack [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:19:5+168 +procedure {:timeLimit 80} $1_copyable_any_pack$verify(_$t0: #0) returns ($ret0: $1_copyable_any_Any) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: Vec (int); + var $t4: $1_copyable_any_Any; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_copyable_any_Any': $1_copyable_any_Any; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:19:5+1 + assume {:print "$at(122,596,597)"} true; + assume $IsValid'#0'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:19:5+1 + assume {:print "$track_local(61,0,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_name<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:21:24+25 + assume {:print "$at(122,686,711)"} true; + call $t1 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(122,686,711)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(61,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:22:19+17 + assume {:print "$at(122,731,748)"} true; + call $t3 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(122,731,748)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(61,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := pack copyable_any::Any($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:20:9+101 + assume {:print "$at(122,657,758)"} true; + $t4 := $1_copyable_any_Any($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:20:9+101 + assume {:print "$track_return(61,0,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:24:5+1 + assume {:print "$at(122,763,764)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:10:9+16 + assume {:print "$at(123,246,262)"} true; + assert {:msg "assert_failed(123,246,262): function does not abort under this condition"} + !false; + + // assert Eq($t4, pack copyable_any::Any(type_info::$type_name<#0>(), bcs::serialize<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:12:9+123 + assume {:print "$at(123,294,417)"} true; + assert {:msg "assert_failed(123,294,417): post-condition does not hold"} + $IsEqual'$1_copyable_any_Any'($t4, $1_copyable_any_Any($1_type_info_$type_name'#0'(), $1_bcs_serialize'#0'($t0))); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:12:9+123 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:24:5+1 + assume {:print "$at(122,763,764)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:7:5+359 + assume {:print "$at(123,133,492)"} true; + assert {:msg "assert_failed(123,133,492): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:7:5+359 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun copyable_any::unpack [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:27:5+178 +procedure {:timeLimit 80} $1_copyable_any_unpack$verify(_$t0: $1_copyable_any_Any) returns ($ret0: #0) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (int); + var $t8: #0; + var $t9: bool; + var $t0: $1_copyable_any_Any; + var $temp_0'#0': #0; + var $temp_0'$1_copyable_any_Any': $1_copyable_any_Any; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:27:5+1 + assume {:print "$at(122,880,881)"} true; + assume $IsValid'$1_copyable_any_Any'($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:27:5+1 + assume {:print "$track_local(61,2,0):", $t0} $t0 == $t0; + + // $t1 := type_info::type_name<#0>() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:17+25 + assume {:print "$at(122,933,958)"} true; + call $t1 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(122,933,958)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(61,2):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := get_field.type_name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:46+14 + $t3 := $t0->$type_name; + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:43+2 + $t4 := $IsEqual'$1_string_String'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 + assume {:print "$at(122,925,1018)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:86+14 +L0: + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:86+14 + assume {:print "$at(122,1002,1016)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:62+39 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(122,978,1017)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(61,2):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 + assume {:print "$at(122,925,1018)"} true; + assume {:print "$track_abort(61,2):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:28:9+93 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:23+4 + assume {:print "$at(122,1042,1046)"} true; +L2: + + // $t7 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:23+9 + assume {:print "$at(122,1042,1051)"} true; + $t7 := $t0->$data; + + // $t8 := opaque begin: from_bcs::from_bytes<#0>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + + // assume Identical($t9, Not(from_bcs::deserializable<#0>($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + assume ($t9 == !$1_from_bcs_deserializable'#0'($t7)); + + // if ($t9) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + if ($t9) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 +L6: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + assume {:print "$at(122,1028,1052)"} true; + assume {:print "$track_abort(61,2):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 +L5: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + assume {:print "$at(122,1028,1052)"} true; + assume $IsValid'#0'($t8); + + // assume Eq<#0>($t8, from_bcs::deserialize<#0>($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + assume $IsEqual'#0'($t8, $1_from_bcs_deserialize'#0'($t7)); + + // $t8 := opaque end: from_bcs::from_bytes<#0>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:29:9+24 + assume {:print "$track_return(61,2,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:30:5+1 + assume {:print "$at(122,1057,1058)"} true; +L3: + + // assert Not(Neq(type_info::$type_name[]<#0>(), select copyable_any::Any.type_name($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:28:9+54 + assume {:print "$at(123,769,823)"} true; + assert {:msg "assert_failed(123,769,823): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($1_type_info_$type_name'#0'(), $t0->$type_name); + + // assert Not(Not(from_bcs::deserializable[]<#0>(select copyable_any::Any.data($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:29:9+50 + assume {:print "$at(123,832,882)"} true; + assert {:msg "assert_failed(123,832,882): function does not abort under this condition"} + !!$1_from_bcs_deserializable'#0'($t0->$data); + + // assert Eq<#0>($t8, from_bcs::deserialize<#0>(select copyable_any::Any.data($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:22:9+54 + assume {:print "$at(123,608,662)"} true; + assert {:msg "assert_failed(123,608,662): post-condition does not hold"} + $IsEqual'#0'($t8, $1_from_bcs_deserialize'#0'($t0->$data)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:22:9+54 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.move:30:5+1 + assume {:print "$at(122,1057,1058)"} true; +L4: + + // assert Or(Neq(type_info::$type_name[]<#0>(), select copyable_any::Any.type_name($t0)), Not(from_bcs::deserializable[]<#0>(select copyable_any::Any.data($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:19:5+170 + assume {:print "$at(123,498,668)"} true; + assert {:msg "assert_failed(123,498,668): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'$1_string_String'($1_type_info_$type_name'#0'(), $t0->$type_name) || !$1_from_bcs_deserializable'#0'($t0->$data)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/copyable_any.spec.move:19:5+170 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// struct crypto_algebra::Element<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:47:5+68 +datatype $1_crypto_algebra_Element'#0' { + $1_crypto_algebra_Element'#0'($handle: int) +} +function {:inline} $Update'$1_crypto_algebra_Element'#0''_handle(s: $1_crypto_algebra_Element'#0', x: int): $1_crypto_algebra_Element'#0' { + $1_crypto_algebra_Element'#0'(x) +} +function $IsValid'$1_crypto_algebra_Element'#0''(s: $1_crypto_algebra_Element'#0'): bool { + $IsValid'u64'(s->$handle) +} +function {:inline} $IsEqual'$1_crypto_algebra_Element'#0''(s1: $1_crypto_algebra_Element'#0', s2: $1_crypto_algebra_Element'#0'): bool { + s1 == s2 +} + +// struct crypto_algebra::Element<#1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:47:5+68 +datatype $1_crypto_algebra_Element'#1' { + $1_crypto_algebra_Element'#1'($handle: int) +} +function {:inline} $Update'$1_crypto_algebra_Element'#1''_handle(s: $1_crypto_algebra_Element'#1', x: int): $1_crypto_algebra_Element'#1' { + $1_crypto_algebra_Element'#1'(x) +} +function $IsValid'$1_crypto_algebra_Element'#1''(s: $1_crypto_algebra_Element'#1'): bool { + $IsValid'u64'(s->$handle) +} +function {:inline} $IsEqual'$1_crypto_algebra_Element'#1''(s1: $1_crypto_algebra_Element'#1', s2: $1_crypto_algebra_Element'#1'): bool { + s1 == s2 +} + +// struct crypto_algebra::Element<#2> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:47:5+68 +datatype $1_crypto_algebra_Element'#2' { + $1_crypto_algebra_Element'#2'($handle: int) +} +function {:inline} $Update'$1_crypto_algebra_Element'#2''_handle(s: $1_crypto_algebra_Element'#2', x: int): $1_crypto_algebra_Element'#2' { + $1_crypto_algebra_Element'#2'(x) +} +function $IsValid'$1_crypto_algebra_Element'#2''(s: $1_crypto_algebra_Element'#2'): bool { + $IsValid'u64'(s->$handle) +} +function {:inline} $IsEqual'$1_crypto_algebra_Element'#2''(s1: $1_crypto_algebra_Element'#2', s2: $1_crypto_algebra_Element'#2'): bool { + s1 == s2 +} + +// fun crypto_algebra::serialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:221:5+178 +procedure {:timeLimit 80} $1_crypto_algebra_serialize$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: bool; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:221:5+1 + assume {:print "$at(128,9473,9474)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:221:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:221:5+1 + assume {:print "$track_local(62,36,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:222:9+51 + assume {:print "$at(128,9544,9595)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,9544,9595)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,36):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:34+14 + assume {:print "$at(128,9630,9644)"} true; + $t2 := $t0->$handle; + + // $t3 := opaque begin: crypto_algebra::serialize_internal<#0, #1>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + assume {:print "$at(128,9605,9645)"} true; + assume {:print "$track_abort(62,36):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + assume {:print "$at(128,9605,9645)"} true; + assume $IsValid'vec'u8''($t3); + + // $t3 := opaque end: crypto_algebra::serialize_internal<#0, #1>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:223:9+40 + assume {:print "$track_return(62,36,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:224:5+1 + assume {:print "$at(128,9650,9651)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:224:5+1 + assume {:print "$at(128,9650,9651)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:224:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:224:5+1 + assume {:print "$at(128,9650,9651)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+217 +procedure {:timeLimit 80} $1_crypto_algebra_add$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+1 + assume {:print "$at(128,3713,3714)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+1 + assume $IsValid'$1_crypto_algebra_Element'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+1 + assume {:print "$track_local(62,1,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:94:5+1 + assume {:print "$track_local(62,1,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:95:9+51 + assume {:print "$at(128,3785,3836)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,3785,3836)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:37+8 + assume {:print "$at(128,3895,3903)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:47+8 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::add_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + assume {:print "$at(128,3879,3914)"} true; + assume {:print "$track_abort(62,1):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + assume {:print "$at(128,3879,3914)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: crypto_algebra::add_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:97:21+35 + + // $t7 := pack crypto_algebra::Element<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:96:9+78 + assume {:print "$at(128,3846,3924)"} true; + $t7 := $1_crypto_algebra_Element'#0'($t5); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:96:9+78 + assume {:print "$track_return(62,1,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:99:5+1 + assume {:print "$at(128,3929,3930)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:99:5+1 + assume {:print "$at(128,3929,3930)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:99:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:99:5+1 + assume {:print "$at(128,3929,3930)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::deserialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:210:5+317 +procedure {:timeLimit 80} $1_crypto_algebra_deserialize$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_crypto_algebra_Element'#0'') +{ + // declare local variables + var $t1: $1_option_Option'$1_crypto_algebra_Element'#0''; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#0'; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_crypto_algebra_Element'#0''': $1_option_Option'$1_crypto_algebra_Element'#0''; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:210:5+1 + assume {:print "$at(128,9035,9036)"} true; + assume $IsValid'vec'u8''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:210:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:210:5+1 + assume {:print "$track_local(62,3,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:211:9+51 + assume {:print "$at(128,9114,9165)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,9114,9165)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(62,3):", $t3} $t3 == $t3; + goto L4; + } + + // ($t4, $t5) := opaque begin: crypto_algebra::deserialize_internal<#0, #1>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + assume {:print "$at(128,9201,9234)"} true; + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + assume {:print "$at(128,9201,9234)"} true; + assume {:print "$track_abort(62,3):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + assume {:print "$at(128,9201,9234)"} true; + assume $IsValid'bool'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + assume $IsValid'u64'($t5); + + // ($t4, $t5) := opaque end: crypto_algebra::deserialize_internal<#0, #1>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:35+33 + + // trace_local[handle]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:212:25+6 + assume {:print "$track_local(62,3,2):", $t5} $t5 == $t5; + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:213:9+102 + assume {:print "$at(128,9244,9346)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:31+6 + assume {:print "$at(128,9291,9297)"} true; +L1: + + // $t7 := pack crypto_algebra::Element<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:18+21 + assume {:print "$at(128,9278,9299)"} true; + $t7 := $1_crypto_algebra_Element'#0'($t5); + + // $t1 := opaque begin: option::some>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:13+27 + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:13+27 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_some>($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:13+27 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1, $1_option_spec_some'$1_crypto_algebra_Element'#0''($t7)); + + // $t1 := opaque end: option::some>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:214:13+27 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:213:9+102 + assume {:print "$at(128,9244,9346)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:216:13+6 + assume {:print "$at(128,9330,9336)"} true; +L0: + + // $t1 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:216:13+6 + assume {:print "$at(128,9330,9336)"} true; + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:216:13+6 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:216:13+6 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1, $1_option_spec_none'$1_crypto_algebra_Element'#0''()); + + // $t1 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:216:13+6 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:213:9+102 + assume {:print "$at(128,9244,9346)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:213:9+102 + assume {:print "$at(128,9244,9346)"} true; + assume {:print "$track_return(62,3,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:218:5+1 + assume {:print "$at(128,9351,9352)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:218:5+1 + assume {:print "$at(128,9351,9352)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:218:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:218:5+1 + assume {:print "$at(128,9351,9352)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+217 +procedure {:timeLimit 80} $1_crypto_algebra_sub$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+1 + assume {:print "$at(128,4005,4006)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+1 + assume $IsValid'$1_crypto_algebra_Element'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+1 + assume {:print "$track_local(62,40,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:102:5+1 + assume {:print "$track_local(62,40,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:103:9+51 + assume {:print "$at(128,4077,4128)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,4077,4128)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,40):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:37+8 + assume {:print "$at(128,4187,4195)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:47+8 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::sub_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + assume {:print "$at(128,4171,4206)"} true; + assume {:print "$track_abort(62,40):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + assume {:print "$at(128,4171,4206)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: crypto_algebra::sub_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:105:21+35 + + // $t7 := pack crypto_algebra::Element<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:104:9+78 + assume {:print "$at(128,4138,4216)"} true; + $t7 := $1_crypto_algebra_Element'#0'($t5); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:104:9+78 + assume {:print "$track_return(62,40,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:107:5+1 + assume {:print "$at(128,4221,4222)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:107:5+1 + assume {:print "$at(128,4221,4222)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:107:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:107:5+1 + assume {:print "$at(128,4221,4222)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::one [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:78:5+169 +procedure {:timeLimit 80} $1_crypto_algebra_one$verify() returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: bool; + var $t3: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:78:5+1 + assume {:print "$at(128,3214,3215)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:79:9+51 + assume {:print "$at(128,3256,3307)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,3256,3307)"} true; + $t0 := $abort_code; + assume {:print "$track_abort(62,28):", $t0} $t0 == $t0; + goto L2; + } + + // $t1 := opaque begin: crypto_algebra::one_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + assume {:print "$at(128,3350,3367)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 +L4: + + // trace_abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + assume {:print "$at(128,3350,3367)"} true; + assume {:print "$track_abort(62,28):", $t0} $t0 == $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + assume {:print "$at(128,3350,3367)"} true; + assume $IsValid'u64'($t1); + + // $t1 := opaque end: crypto_algebra::one_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:81:21+17 + + // $t3 := pack crypto_algebra::Element<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:80:9+60 + assume {:print "$at(128,3317,3377)"} true; + $t3 := $1_crypto_algebra_Element'#0'($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:80:9+60 + assume {:print "$track_return(62,28,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:83:5+1 + assume {:print "$at(128,3382,3383)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:83:5+1 + assume {:print "$at(128,3382,3383)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:83:5+1 +L2: + + // abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:83:5+1 + assume {:print "$at(128,3382,3383)"} true; + $abort_code := $t0; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:70:5+171 +procedure {:timeLimit 80} $1_crypto_algebra_zero$verify() returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: bool; + var $t3: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:70:5+1 + assume {:print "$at(128,2945,2946)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:71:9+51 + assume {:print "$at(128,2988,3039)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,2988,3039)"} true; + $t0 := $abort_code; + assume {:print "$track_abort(62,44):", $t0} $t0 == $t0; + goto L2; + } + + // $t1 := opaque begin: crypto_algebra::zero_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + assume {:print "$at(128,3082,3100)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 +L4: + + // trace_abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + assume {:print "$at(128,3082,3100)"} true; + assume {:print "$track_abort(62,44):", $t0} $t0 == $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + assume {:print "$at(128,3082,3100)"} true; + assume $IsValid'u64'($t1); + + // $t1 := opaque end: crypto_algebra::zero_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:73:21+18 + + // $t3 := pack crypto_algebra::Element<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:72:9+61 + assume {:print "$at(128,3049,3110)"} true; + $t3 := $1_crypto_algebra_Element'#0'($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:72:9+61 + assume {:print "$track_return(62,44,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:75:5+1 + assume {:print "$at(128,3115,3116)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:75:5+1 + assume {:print "$at(128,3115,3116)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:75:5+1 +L2: + + // abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:75:5+1 + assume {:print "$at(128,3115,3116)"} true; + $abort_code := $t0; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::abort_unless_cryptography_algebra_natives_enabled [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:279:5+171 +procedure {:inline 1} $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled() returns () +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + + // bytecode translation starts here + // $t0 := features::cryptography_algebra_enabled() on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:13+40 + assume {:print "$at(128,11699,11739)"} true; + call $t0 := $1_features_cryptography_algebra_enabled(); + if ($abort_flag) { + assume {:print "$at(128,11699,11739)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,0):", $t1} $t1 == $t1; + goto L3; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:9+52 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:55+6 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:55+6 + assume {:print "$at(128,11741,11747)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:43+1 + assume {:print "$at(128,11791,11792)"} true; +L0: + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:43+1 + assume {:print "$at(128,11791,11792)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := error::not_implemented($t2) on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:14+32 + call $t3 := $1_error_not_implemented($t2); + if ($abort_flag) { + assume {:print "$at(128,11762,11794)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,0):", $t1} $t1 == $t1; + goto L3; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + assume {:print "$at(128,11757,11794)"} true; + assume {:print "$track_abort(62,0):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + $t1 := $t3; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + goto L3; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 +L3: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::abort_unless_cryptography_algebra_natives_enabled [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:279:5+171 +procedure {:timeLimit 80} $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled$verify() returns () +{ + // declare local variables + var $t0: bool; + var $t1: int; + var $t2: int; + var $t3: int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:279:5+1 + assume {:print "$at(128,11629,11630)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // $t0 := features::cryptography_algebra_enabled() on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:13+40 + assume {:print "$at(128,11699,11739)"} true; + call $t0 := $1_features_cryptography_algebra_enabled(); + if ($abort_flag) { + assume {:print "$at(128,11699,11739)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,0):", $t1} $t1 == $t1; + goto L3; + } + + // if ($t0) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:9+52 + if ($t0) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:55+6 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:280:55+6 + assume {:print "$at(128,11741,11747)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:43+1 + assume {:print "$at(128,11791,11792)"} true; +L0: + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:43+1 + assume {:print "$at(128,11791,11792)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := error::not_implemented($t2) on_abort goto L3 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:14+32 + call $t3 := $1_error_not_implemented($t2); + if ($abort_flag) { + assume {:print "$at(128,11762,11794)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,0):", $t1} $t1 == $t1; + goto L3; + } + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + assume {:print "$at(128,11757,11794)"} true; + assume {:print "$track_abort(62,0):", $t3} $t3 == $t3; + + // $t1 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + $t1 := $t3; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:281:9+37 + goto L3; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 +L3: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:282:5+1 + assume {:print "$at(128,11799,11800)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::div [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+310 +procedure {:timeLimit 80} $1_crypto_algebra_div$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#0') returns ($ret0: $1_option_Option'$1_crypto_algebra_Element'#0'') +{ + // declare local variables + var $t2: $1_option_Option'$1_crypto_algebra_Element'#0''; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: bool; + var $t10: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_option_Option'$1_crypto_algebra_Element'#0''': $1_option_Option'$1_crypto_algebra_Element'#0''; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+1 + assume {:print "$at(128,4736,4737)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+1 + assume $IsValid'$1_crypto_algebra_Element'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+1 + assume {:print "$track_local(62,5,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:120:5+1 + assume {:print "$track_local(62,5,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:121:9+51 + assume {:print "$at(128,4816,4867)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,4816,4867)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(62,5):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:46+8 + assume {:print "$at(128,4914,4922)"} true; + $t5 := $t0->$handle; + + // $t6 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:56+8 + $t6 := $t1->$handle; + + // ($t7, $t8) := opaque begin: crypto_algebra::div_internal<#0>($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + havoc $t9; + + // if ($t9) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + if ($t9) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 +L6: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + assume {:print "$at(128,4898,4933)"} true; + assume {:print "$track_abort(62,5):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 +L5: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + assume {:print "$at(128,4898,4933)"} true; + assume $IsValid'bool'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + assume $IsValid'u64'($t8); + + // ($t7, $t8) := opaque end: crypto_algebra::div_internal<#0>($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:30+35 + + // trace_local[handle]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:122:20+6 + assume {:print "$track_local(62,5,3):", $t8} $t8 == $t8; + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:123:9+97 + assume {:print "$at(128,4943,5040)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:31+6 + assume {:print "$at(128,4985,4991)"} true; +L1: + + // $t10 := pack crypto_algebra::Element<#0>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:18+21 + assume {:print "$at(128,4972,4993)"} true; + $t10 := $1_crypto_algebra_Element'#0'($t8); + + // $t2 := opaque begin: option::some>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:13+27 + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:13+27 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_some>($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:13+27 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t2, $1_option_spec_some'$1_crypto_algebra_Element'#0''($t10)); + + // $t2 := opaque end: option::some>($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:124:13+27 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:123:9+97 + assume {:print "$at(128,4943,5040)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:126:13+6 + assume {:print "$at(128,5024,5030)"} true; +L0: + + // $t2 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:126:13+6 + assume {:print "$at(128,5024,5030)"} true; + + // assume And(WellFormed($t2), Le(Len>(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:126:13+6 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>>($t2, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:126:13+6 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t2, $1_option_spec_none'$1_crypto_algebra_Element'#0''()); + + // $t2 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:126:13+6 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:123:9+97 + assume {:print "$at(128,4943,5040)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:123:9+97 + assume {:print "$at(128,4943,5040)"} true; + assume {:print "$track_return(62,5,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:128:5+1 + assume {:print "$at(128,5045,5046)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:128:5+1 + assume {:print "$at(128,5045,5046)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:128:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:128:5+1 + assume {:print "$at(128,5045,5046)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::double [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:153:5+213 +procedure {:timeLimit 80} $1_crypto_algebra_double$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:153:5+1 + assume {:print "$at(128,5989,5990)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:153:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element_p]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:153:5+1 + assume {:print "$track_local(62,7,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:154:9+51 + assume {:print "$at(128,6056,6107)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,6056,6107)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,7):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:40+16 + assume {:print "$at(128,6169,6185)"} true; + $t2 := $t0->$handle; + + // $t3 := opaque begin: crypto_algebra::double_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + assume {:print "$at(128,6150,6186)"} true; + assume {:print "$track_abort(62,7):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + assume {:print "$at(128,6150,6186)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: crypto_algebra::double_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:156:21+36 + + // $t5 := pack crypto_algebra::Element<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:155:9+79 + assume {:print "$at(128,6117,6196)"} true; + $t5 := $1_crypto_algebra_Element'#0'($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:155:9+79 + assume {:print "$track_return(62,7,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:158:5+1 + assume {:print "$at(128,6201,6202)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:158:5+1 + assume {:print "$at(128,6201,6202)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:158:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:158:5+1 + assume {:print "$at(128,6201,6202)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::downcast [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:244:5+330 +procedure {:timeLimit 80} $1_crypto_algebra_downcast$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_option_Option'$1_crypto_algebra_Element'#1'') +{ + // declare local variables + var $t1: $1_option_Option'$1_crypto_algebra_Element'#1''; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: $1_crypto_algebra_Element'#1'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_option_Option'$1_crypto_algebra_Element'#1''': $1_option_Option'$1_crypto_algebra_Element'#1''; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:244:5+1 + assume {:print "$at(128,10436,10437)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element_x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:244:5+1 + assume {:print "$track_local(62,9,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:245:9+51 + assume {:print "$at(128,10515,10566)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,10515,10566)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(62,9):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:57+16 + assume {:print "$at(128,10624,10640)"} true; + $t4 := $t0->$handle; + + // ($t5, $t6) := opaque begin: crypto_algebra::downcast_internal<#0, #1>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + havoc $t7; + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + assume {:print "$at(128,10601,10641)"} true; + assume {:print "$track_abort(62,9):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + assume {:print "$at(128,10601,10641)"} true; + assume $IsValid'bool'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + assume $IsValid'u64'($t6); + + // ($t5, $t6) := opaque end: crypto_algebra::downcast_internal<#0, #1>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:34+40 + + // trace_local[new_handle]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:246:20+10 + assume {:print "$track_local(62,9,2):", $t6} $t6 == $t6; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:247:9+109 + assume {:print "$at(128,10651,10760)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:39+10 + assume {:print "$at(128,10701,10711)"} true; +L1: + + // $t8 := pack crypto_algebra::Element<#1>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:18+33 + assume {:print "$at(128,10680,10713)"} true; + $t8 := $1_crypto_algebra_Element'#1'($t6); + + // $t1 := opaque begin: option::some>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:13+39 + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:13+39 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#1'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_some>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:13+39 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#1'''($t1, $1_option_spec_some'$1_crypto_algebra_Element'#1''($t8)); + + // $t1 := opaque end: option::some>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:248:13+39 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:247:9+109 + assume {:print "$at(128,10651,10760)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:250:13+6 + assume {:print "$at(128,10744,10750)"} true; +L0: + + // $t1 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:250:13+6 + assume {:print "$at(128,10744,10750)"} true; + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:250:13+6 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#1'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:250:13+6 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#1'''($t1, $1_option_spec_none'$1_crypto_algebra_Element'#1''()); + + // $t1 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:250:13+6 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:247:9+109 + assume {:print "$at(128,10651,10760)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:247:9+109 + assume {:print "$at(128,10651,10760)"} true; + assume {:print "$track_return(62,9,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:252:5+1 + assume {:print "$at(128,10765,10766)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:252:5+1 + assume {:print "$at(128,10765,10766)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:252:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:252:5+1 + assume {:print "$at(128,10765,10766)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::eq [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+166 +procedure {:timeLimit 80} $1_crypto_algebra_eq$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#0') returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+1 + assume {:print "$at(128,2436,2437)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+1 + assume $IsValid'$1_crypto_algebra_Element'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+1 + assume {:print "$track_local(62,11,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:56:5+1 + assume {:print "$track_local(62,11,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:57:9+51 + assume {:print "$at(128,2501,2552)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,2501,2552)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,11):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:24+8 + assume {:print "$at(128,2577,2585)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:34+8 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::eq_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + assume {:print "$at(128,2562,2596)"} true; + assume {:print "$track_abort(62,11):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + assume {:print "$at(128,2562,2596)"} true; + assume $IsValid'bool'($t5); + + // $t5 := opaque end: crypto_algebra::eq_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:58:9+34 + assume {:print "$track_return(62,11,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:59:5+1 + assume {:print "$at(128,2601,2602)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:59:5+1 + assume {:print "$at(128,2601,2602)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:59:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:59:5+1 + assume {:print "$at(128,2601,2602)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::from_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:62:5+194 +procedure {:timeLimit 80} $1_crypto_algebra_from_u64$verify(_$t0: int) returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: $1_crypto_algebra_Element'#0'; + var $t0: int; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:62:5+1 + assume {:print "$at(128,2664,2665)"} true; + assume $IsValid'u64'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:62:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:62:5+1 + assume {:print "$track_local(62,13,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:63:9+51 + assume {:print "$at(128,2721,2772)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,2721,2772)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,13):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := opaque begin: crypto_algebra::from_u64_internal<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + assume {:print "$at(128,2815,2842)"} true; + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + assume {:print "$at(128,2815,2842)"} true; + assume {:print "$track_abort(62,13):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + assume {:print "$at(128,2815,2842)"} true; + assume $IsValid'u64'($t2); + + // $t2 := opaque end: crypto_algebra::from_u64_internal<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:65:21+27 + + // $t4 := pack crypto_algebra::Element<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:64:9+70 + assume {:print "$at(128,2782,2852)"} true; + $t4 := $1_crypto_algebra_Element'#0'($t2); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:64:9+70 + assume {:print "$track_return(62,13,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:67:5+1 + assume {:print "$at(128,2857,2858)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:67:5+1 + assume {:print "$at(128,2857,2858)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:67:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:67:5+1 + assume {:print "$at(128,2857,2858)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::handles_from_elements<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+598 +procedure {:inline 1} $1_crypto_algebra_handles_from_elements'#0'(_$t0: Vec ($1_crypto_algebra_Element'#0')) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_crypto_algebra_Element'#0'; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (Vec (int)); + var $t13: Vec (int); + var $t0: Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'u64': int; + var $temp_0'vec'$1_crypto_algebra_Element'#0''': Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[elements]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+1 + assume {:print "$at(128,12034,12035)"} true; + assume {:print "$track_local(62,15,0):", $t0} $t0 == $t0; + + // $t4 := vector::length>($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:28+29 + assume {:print "$at(128,12136,12165)"} true; + call $t4 := $1_vector_length'$1_crypto_algebra_Element'#0''($t0); + if ($abort_flag) { + assume {:print "$at(128,12136,12165)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[num_elements]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:13+12 + assume {:print "$track_local(62,15,3):", $t4} $t4 == $t4; + + // $t1 := vector::empty() on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:31+20 + assume {:print "$at(128,12197,12217)"} true; + call $t1 := $1_vector_empty'u64'(); + if ($abort_flag) { + assume {:print "$at(128,12197,12217)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:13+15 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:17+1 + assume {:print "$at(128,12235,12236)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:13+1 + assume {:print "$track_local(62,15,2):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:294:13+159 + assume {:print "$at(128,12267,12426)"} true; +L3: + + // assert Eq(Len($t1), $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): base case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t6); + + // assert forall k: num: Range(0, $t6): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t6); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'bool'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'$1_crypto_algebra_Element'#0''($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t11); + + // $t12 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($Dereference($t12)); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): enter loop, variable(s) element_handles, i havocked and reassigned"} true; + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$track_local(62,15,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Eq(Len($t1), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assume $IsEqual'num'(LenVec($t1), $t2); + + // assume forall k: num: Range(0, $t2): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assume (var $range_0 := $Range(0, $t2); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t7 := <($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:298:15+1 + assume {:print "$at(128,12442,12443)"} true; + call $t7 := $Lt($t2, $t4); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 + assume {:print "$at(128,12246,12601)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; +L2: + + // $t12 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; + $t12 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t8 := vector::borrow>($t0, $t2) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+32 + call $t8 := $1_vector_borrow'$1_crypto_algebra_Element'#0''($t0, $t2); + if ($abort_flag) { + assume {:print "$at(128,12527,12559)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // $t9 := get_field>.handle($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+39 + $t9 := $t8->$handle; + + // vector::push_back($t12, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + call $t12 := $1_vector_push_back'u64'($t12, $t9); + if ($abort_flag) { + assume {:print "$at(128,12482,12567)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // write_back[LocalRoot($t1)@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + $t1 := $Dereference($t12); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:21+1 + assume {:print "$at(128,12589,12590)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := +($t2, $t10) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:19+1 + call $t11 := $AddU64($t2, $t10); + if ($abort_flag) { + assume {:print "$at(128,12587,12588)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:13+1 + assume {:print "$track_local(62,15,2):", $t11} $t11 == $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; +L0: + + // $t13 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; + $t13 := $t1; + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$track_return(62,15,0):", $t13} $t13 == $t13; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // assert Eq(Len($t1), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): induction case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t11); + + // assert forall k: num: Range(0, $t11): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t11); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::handles_from_elements<#1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+598 +procedure {:inline 1} $1_crypto_algebra_handles_from_elements'#1'(_$t0: Vec ($1_crypto_algebra_Element'#1')) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_crypto_algebra_Element'#1'; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (Vec (int)); + var $t13: Vec (int); + var $t0: Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'u64': int; + var $temp_0'vec'$1_crypto_algebra_Element'#1''': Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[elements]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+1 + assume {:print "$at(128,12034,12035)"} true; + assume {:print "$track_local(62,15,0):", $t0} $t0 == $t0; + + // $t4 := vector::length>($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:28+29 + assume {:print "$at(128,12136,12165)"} true; + call $t4 := $1_vector_length'$1_crypto_algebra_Element'#1''($t0); + if ($abort_flag) { + assume {:print "$at(128,12136,12165)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[num_elements]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:13+12 + assume {:print "$track_local(62,15,3):", $t4} $t4 == $t4; + + // $t1 := vector::empty() on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:31+20 + assume {:print "$at(128,12197,12217)"} true; + call $t1 := $1_vector_empty'u64'(); + if ($abort_flag) { + assume {:print "$at(128,12197,12217)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:13+15 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:17+1 + assume {:print "$at(128,12235,12236)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:13+1 + assume {:print "$track_local(62,15,2):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:294:13+159 + assume {:print "$at(128,12267,12426)"} true; +L3: + + // assert Eq(Len($t1), $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): base case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t6); + + // assert forall k: num: Range(0, $t6): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t6); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'bool'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'$1_crypto_algebra_Element'#1''($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t11); + + // $t12 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($Dereference($t12)); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): enter loop, variable(s) element_handles, i havocked and reassigned"} true; + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$track_local(62,15,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Eq(Len($t1), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assume $IsEqual'num'(LenVec($t1), $t2); + + // assume forall k: num: Range(0, $t2): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assume (var $range_0 := $Range(0, $t2); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t7 := <($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:298:15+1 + assume {:print "$at(128,12442,12443)"} true; + call $t7 := $Lt($t2, $t4); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 + assume {:print "$at(128,12246,12601)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; +L2: + + // $t12 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; + $t12 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t8 := vector::borrow>($t0, $t2) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+32 + call $t8 := $1_vector_borrow'$1_crypto_algebra_Element'#1''($t0, $t2); + if ($abort_flag) { + assume {:print "$at(128,12527,12559)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // $t9 := get_field>.handle($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+39 + $t9 := $t8->$handle; + + // vector::push_back($t12, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + call $t12 := $1_vector_push_back'u64'($t12, $t9); + if ($abort_flag) { + assume {:print "$at(128,12482,12567)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // write_back[LocalRoot($t1)@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + $t1 := $Dereference($t12); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:21+1 + assume {:print "$at(128,12589,12590)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := +($t2, $t10) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:19+1 + call $t11 := $AddU64($t2, $t10); + if ($abort_flag) { + assume {:print "$at(128,12587,12588)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:13+1 + assume {:print "$track_local(62,15,2):", $t11} $t11 == $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; +L0: + + // $t13 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; + $t13 := $t1; + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$track_return(62,15,0):", $t13} $t13 == $t13; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // assert Eq(Len($t1), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): induction case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t11); + + // assert forall k: num: Range(0, $t11): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t11); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::handles_from_elements [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+598 +procedure {:timeLimit 80} $1_crypto_algebra_handles_from_elements$verify(_$t0: Vec ($1_crypto_algebra_Element'#0')) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_crypto_algebra_Element'#0'; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (Vec (int)); + var $t13: Vec (int); + var $t0: Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'u64': int; + var $temp_0'vec'$1_crypto_algebra_Element'#0''': Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+1 + assume {:print "$at(128,12034,12035)"} true; + assume $IsValid'vec'$1_crypto_algebra_Element'#0'''($t0); + + // trace_local[elements]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:289:5+1 + assume {:print "$track_local(62,15,0):", $t0} $t0 == $t0; + + // $t4 := vector::length>($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:28+29 + assume {:print "$at(128,12136,12165)"} true; + call $t4 := $1_vector_length'$1_crypto_algebra_Element'#0''($t0); + if ($abort_flag) { + assume {:print "$at(128,12136,12165)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[num_elements]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:290:13+12 + assume {:print "$track_local(62,15,3):", $t4} $t4 == $t4; + + // $t1 := vector::empty() on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:31+20 + assume {:print "$at(128,12197,12217)"} true; + call $t1 := $1_vector_empty'u64'(); + if ($abort_flag) { + assume {:print "$at(128,12197,12217)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:291:13+15 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:17+1 + assume {:print "$at(128,12235,12236)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:292:13+1 + assume {:print "$track_local(62,15,2):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:294:13+159 + assume {:print "$at(128,12267,12426)"} true; +L3: + + // assert Eq(Len($t1), $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): base case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t6); + + // assert forall k: num: Range(0, $t6): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): base case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t6); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'bool'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'$1_crypto_algebra_Element'#0''($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'u64'($t11); + + // $t12 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume $IsValid'vec'u64''($Dereference($t12)); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): enter loop, variable(s) element_handles, i havocked and reassigned"} true; + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$track_local(62,15,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$info(): loop invariant holds at current state"} true; + assume !$abort_flag; + + // assume Eq(Len($t1), $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assume $IsEqual'num'(LenVec($t1), $t2); + + // assume forall k: num: Range(0, $t2): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assume (var $range_0 := $Range(0, $t2); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // $t7 := <($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:298:15+1 + assume {:print "$at(128,12442,12443)"} true; + call $t7 := $Lt($t2, $t4); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 + assume {:print "$at(128,12246,12601)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:293:9+355 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; +L2: + + // $t12 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:36+20 + assume {:print "$at(128,12505,12525)"} true; + $t12 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t8 := vector::borrow>($t0, $t2) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+32 + call $t8 := $1_vector_borrow'$1_crypto_algebra_Element'#0''($t0, $t2); + if ($abort_flag) { + assume {:print "$at(128,12527,12559)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // $t9 := get_field>.handle($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:58+39 + $t9 := $t8->$handle; + + // vector::push_back($t12, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + call $t12 := $1_vector_push_back'u64'($t12, $t9); + if ($abort_flag) { + assume {:print "$at(128,12482,12567)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // write_back[LocalRoot($t1)@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + $t1 := $Dereference($t12); + + // trace_local[element_handles]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:300:13+85 + assume {:print "$track_local(62,15,1):", $t1} $t1 == $t1; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:21+1 + assume {:print "$at(128,12589,12590)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := +($t2, $t10) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:19+1 + call $t11 := $AddU64($t2, $t10); + if ($abort_flag) { + assume {:print "$at(128,12587,12588)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,15):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:13+1 + assume {:print "$track_local(62,15,2):", $t11} $t11 == $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:301:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; +L0: + + // $t13 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$at(128,12611,12626)"} true; + $t13 := $t1; + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + assume {:print "$track_return(62,15,0):", $t13} $t13 == $t13; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:303:9+15 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // assert Eq(Len($t1), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:295:17+36 + assume {:print "$at(128,12290,12326)"} true; + assert {:msg "assert_failed(128,12290,12326): induction case of the loop invariant does not hold"} + $IsEqual'num'(LenVec($t1), $t11); + + // assert forall k: num: Range(0, $t11): Eq(Index($t1, k), select crypto_algebra::Element.handle>(Index($t0, k))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume {:print "$at(128,12343,12412)"} true; + assert {:msg "assert_failed(128,12343,12412): induction case of the loop invariant does not hold"} + (var $range_0 := $Range(0, $t11); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var k := $i_1; + ($IsEqual'u64'(ReadVec($t1, k), ReadVec($t0, k)->$handle))))); + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:296:17+69 + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; +L5: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.spec.move:4:9+16 + assume {:print "$at(129,125,141)"} true; + assert {:msg "assert_failed(129,125,141): function does not abort under this condition"} + !false; + + // assert forall i: num: Range(0, Len>($t0)): Eq(Index($t13, i), select crypto_algebra::Element.handle>(Index($t0, i))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.spec.move:5:9+70 + assume {:print "$at(129,150,220)"} true; + assert {:msg "assert_failed(129,150,220): post-condition does not hold"} + (var $range_0 := $Range(0, LenVec($t0)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'u64'(ReadVec($t13, i), ReadVec($t0, i)->$handle))))); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.spec.move:5:9+70 + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:304:5+1 + assume {:print "$at(128,12631,12632)"} true; +L6: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.spec.move:3:5+185 + assume {:print "$at(129,41,226)"} true; + assert {:msg "assert_failed(129,41,226): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.spec.move:3:5+185 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::hash_to [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+222 +procedure {:timeLimit 80} $1_crypto_algebra_hash_to$verify(_$t0: Vec (int), _$t1: Vec (int)) returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_crypto_algebra_Element'#0'; + var $t0: Vec (int); + var $t1: Vec (int); + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+1 + assume {:print "$at(128,11041,11042)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[dst]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+1 + assume {:print "$track_local(62,16,0):", $t0} $t0 == $t0; + + // trace_local[msg]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:258:5+1 + assume {:print "$track_local(62,16,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:259:9+51 + assume {:print "$at(128,11124,11175)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,11124,11175)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,16):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := opaque begin: crypto_algebra::hash_to_internal<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + assume {:print "$at(128,11215,11247)"} true; + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + assume {:print "$at(128,11215,11247)"} true; + assume {:print "$track_abort(62,16):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + assume {:print "$at(128,11215,11247)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: crypto_algebra::hash_to_internal<#0, #1>($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:261:21+32 + + // $t5 := pack crypto_algebra::Element<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:260:9+72 + assume {:print "$at(128,11185,11257)"} true; + $t5 := $1_crypto_algebra_Element'#0'($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:260:9+72 + assume {:print "$track_return(62,16,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:263:5+1 + assume {:print "$at(128,11262,11263)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:263:5+1 + assume {:print "$at(128,11262,11263)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:263:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:263:5+1 + assume {:print "$at(128,11262,11263)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::inv [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:141:5+327 +procedure {:timeLimit 80} $1_crypto_algebra_inv$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_option_Option'$1_crypto_algebra_Element'#0'') +{ + // declare local variables + var $t1: $1_option_Option'$1_crypto_algebra_Element'#0''; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_option_Option'$1_crypto_algebra_Element'#0''': $1_option_Option'$1_crypto_algebra_Element'#0''; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:141:5+1 + assume {:print "$at(128,5558,5559)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:141:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:141:5+1 + assume {:print "$track_local(62,18,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:142:9+51 + assume {:print "$at(128,5622,5673)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,5622,5673)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(62,18):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:51+8 + assume {:print "$at(128,5725,5733)"} true; + $t4 := $t0->$handle; + + // ($t5, $t6) := opaque begin: crypto_algebra::inv_internal<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + havoc $t7; + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + assume {:print "$at(128,5709,5734)"} true; + assume {:print "$track_abort(62,18):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + assume {:print "$at(128,5709,5734)"} true; + assume $IsValid'bool'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + assume $IsValid'u64'($t6); + + // ($t5, $t6) := opaque end: crypto_algebra::inv_internal<#0>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:35+25 + + // trace_local[handle]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:143:25+6 + assume {:print "$track_local(62,18,2):", $t6} $t6 == $t6; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:144:9+135 + assume {:print "$at(128,5744,5879)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:145:39+6 + assume {:print "$at(128,5799,5805)"} true; +L1: + + // $t8 := pack crypto_algebra::Element<#0>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:145:26+21 + assume {:print "$at(128,5786,5807)"} true; + $t8 := $1_crypto_algebra_Element'#0'($t6); + + // $t1 := opaque begin: option::some>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:146:13+12 + assume {:print "$at(128,5821,5833)"} true; + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:146:13+12 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_some>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:146:13+12 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1, $1_option_spec_some'$1_crypto_algebra_Element'#0''($t8)); + + // $t1 := opaque end: option::some>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:146:13+12 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:144:9+135 + assume {:print "$at(128,5744,5879)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:148:13+6 + assume {:print "$at(128,5863,5869)"} true; +L0: + + // $t1 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:148:13+6 + assume {:print "$at(128,5863,5869)"} true; + + // assume And(WellFormed($t1), Le(Len>(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:148:13+6 + assume ($IsValid'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>>($t1, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:148:13+6 + assume $IsEqual'$1_option_Option'$1_crypto_algebra_Element'#0'''($t1, $1_option_spec_none'$1_crypto_algebra_Element'#0''()); + + // $t1 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:148:13+6 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:144:9+135 + assume {:print "$at(128,5744,5879)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:144:9+135 + assume {:print "$at(128,5744,5879)"} true; + assume {:print "$track_return(62,18,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:150:5+1 + assume {:print "$at(128,5884,5885)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:150:5+1 + assume {:print "$at(128,5884,5885)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:150:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:150:5+1 + assume {:print "$at(128,5884,5885)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+217 +procedure {:timeLimit 80} $1_crypto_algebra_mul$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+1 + assume {:print "$at(128,4297,4298)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+1 + assume $IsValid'$1_crypto_algebra_Element'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+1 + assume {:print "$track_local(62,20,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:110:5+1 + assume {:print "$track_local(62,20,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:111:9+51 + assume {:print "$at(128,4369,4420)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,4369,4420)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,20):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:37+8 + assume {:print "$at(128,4479,4487)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:47+8 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::mul_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + assume {:print "$at(128,4463,4498)"} true; + assume {:print "$track_abort(62,20):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + assume {:print "$at(128,4463,4498)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: crypto_algebra::mul_internal<#0>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:113:21+35 + + // $t7 := pack crypto_algebra::Element<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:112:9+78 + assume {:print "$at(128,4430,4508)"} true; + $t7 := $1_crypto_algebra_Element'#0'($t5); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:112:9+78 + assume {:print "$track_return(62,20,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:115:5+1 + assume {:print "$at(128,4513,4514)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:115:5+1 + assume {:print "$at(128,4513,4514)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:115:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:115:5+1 + assume {:print "$at(128,4513,4514)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::multi_pairing [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+417 +procedure {:timeLimit 80} $1_crypto_algebra_multi_pairing$verify(_$t0: Vec ($1_crypto_algebra_Element'#0'), _$t1: Vec ($1_crypto_algebra_Element'#1')) returns ($ret0: $1_crypto_algebra_Element'#2') +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $t5: Vec (int); + var $t6: Vec (int); + var $t7: int; + var $t8: bool; + var $t9: $1_crypto_algebra_Element'#2'; + var $t0: Vec ($1_crypto_algebra_Element'#0'); + var $t1: Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'$1_crypto_algebra_Element'#2'': $1_crypto_algebra_Element'#2'; + var $temp_0'vec'$1_crypto_algebra_Element'#0''': Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'vec'$1_crypto_algebra_Element'#1''': Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+1 + assume {:print "$at(128,8007,8008)"} true; + assume $IsValid'vec'$1_crypto_algebra_Element'#0'''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+1 + assume $IsValid'vec'$1_crypto_algebra_Element'#1'''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[g1_elements]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+1 + assume {:print "$track_local(62,22,0):", $t0} $t0 == $t0; + + // trace_local[g2_elements]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:190:5+1 + assume {:print "$track_local(62,22,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:191:9+51 + assume {:print "$at(128,8135,8186)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,8135,8186)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(62,22):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := crypto_algebra::handles_from_elements<#0>($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:192:26+34 + assume {:print "$at(128,8213,8247)"} true; + call $t5 := $1_crypto_algebra_handles_from_elements'#0'($t0); + if ($abort_flag) { + assume {:print "$at(128,8213,8247)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(62,22):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[g1_handles]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:192:13+10 + assume {:print "$track_local(62,22,2):", $t5} $t5 == $t5; + + // $t6 := crypto_algebra::handles_from_elements<#1>($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:193:26+34 + assume {:print "$at(128,8274,8308)"} true; + call $t6 := $1_crypto_algebra_handles_from_elements'#1'($t1); + if ($abort_flag) { + assume {:print "$at(128,8274,8308)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(62,22):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[g2_handles]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:193:13+10 + assume {:print "$track_local(62,22,3):", $t6} $t6 == $t6; + + // $t7 := opaque begin: crypto_algebra::multi_pairing_internal<#0, #1, #2>($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + assume {:print "$at(128,8352,8408)"} true; + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + havoc $t8; + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + assume {:print "$at(128,8352,8408)"} true; + assume {:print "$track_abort(62,22):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 +L3: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + assume {:print "$at(128,8352,8408)"} true; + assume $IsValid'u64'($t7); + + // $t7 := opaque end: crypto_algebra::multi_pairing_internal<#0, #1, #2>($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:195:21+56 + + // $t9 := pack crypto_algebra::Element<#2>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:194:9+100 + assume {:print "$at(128,8318,8418)"} true; + $t9 := $1_crypto_algebra_Element'#2'($t7); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:194:9+100 + assume {:print "$track_return(62,22,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:197:5+1 + assume {:print "$at(128,8423,8424)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:197:5+1 + assume {:print "$at(128,8423,8424)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:197:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:197:5+1 + assume {:print "$at(128,8423,8424)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::multi_scalar_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:165:5+354 +procedure {:timeLimit 80} $1_crypto_algebra_multi_scalar_mul$verify(_$t0: Vec ($1_crypto_algebra_Element'#0'), _$t1: Vec ($1_crypto_algebra_Element'#1')) returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: int; + var $t6: Vec (int); + var $t7: int; + var $t8: bool; + var $t9: $1_crypto_algebra_Element'#0'; + var $t0: Vec ($1_crypto_algebra_Element'#0'); + var $t1: Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'vec'$1_crypto_algebra_Element'#0''': Vec ($1_crypto_algebra_Element'#0'); + var $temp_0'vec'$1_crypto_algebra_Element'#1''': Vec ($1_crypto_algebra_Element'#1'); + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:165:5+1 + assume {:print "$at(128,6588,6589)"} true; + assume $IsValid'vec'$1_crypto_algebra_Element'#0'''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:165:5+1 + assume $IsValid'vec'$1_crypto_algebra_Element'#1'''($t1); + + // trace_local[elements]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:165:5+1 + assume {:print "$track_local(62,24,0):", $t0} $t0 == $t0; + + // trace_local[scalars]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:165:5+1 + assume {:print "$track_local(62,24,1):", $t1} $t1 == $t1; + + // $t4 := crypto_algebra::handles_from_elements<#0>($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:166:31+31 + assume {:print "$at(128,6727,6758)"} true; + call $t4 := $1_crypto_algebra_handles_from_elements'#0'($t0); + if ($abort_flag) { + assume {:print "$at(128,6727,6758)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,24):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[element_handles]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:166:13+15 + assume {:print "$track_local(62,24,2):", $t4} $t4 == $t4; + + // $t6 := crypto_algebra::handles_from_elements<#1>($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:167:30+30 + assume {:print "$at(128,6789,6819)"} true; + call $t6 := $1_crypto_algebra_handles_from_elements'#1'($t1); + if ($abort_flag) { + assume {:print "$at(128,6789,6819)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(62,24):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[scalar_handles]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:167:13+14 + assume {:print "$track_local(62,24,3):", $t6} $t6 == $t6; + + // $t7 := opaque begin: crypto_algebra::multi_scalar_mul_internal<#0, #1>($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + assume {:print "$at(128,6862,6926)"} true; + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + havoc $t8; + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + assume {:print "$at(128,6862,6926)"} true; + assume {:print "$track_abort(62,24):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 +L3: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + assume {:print "$at(128,6862,6926)"} true; + assume $IsValid'u64'($t7); + + // $t7 := opaque end: crypto_algebra::multi_scalar_mul_internal<#0, #1>($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:169:21+64 + + // $t9 := pack crypto_algebra::Element<#0>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:168:9+107 + assume {:print "$at(128,6829,6936)"} true; + $t9 := $1_crypto_algebra_Element'#0'($t7); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:168:9+107 + assume {:print "$track_return(62,24,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:171:5+1 + assume {:print "$at(128,6941,6942)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:171:5+1 + assume {:print "$at(128,6941,6942)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:171:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:171:5+1 + assume {:print "$at(128,6941,6942)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::neg [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:86:5+191 +procedure {:timeLimit 80} $1_crypto_algebra_neg$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:86:5+1 + assume {:print "$at(128,3449,3450)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:86:5+1 + assume {:print "$track_local(62,26,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:87:9+51 + assume {:print "$at(128,3505,3556)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,3505,3556)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,26):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:37+8 + assume {:print "$at(128,3615,3623)"} true; + $t2 := $t0->$handle; + + // $t3 := opaque begin: crypto_algebra::neg_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + assume {:print "$at(128,3599,3624)"} true; + assume {:print "$track_abort(62,26):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + assume {:print "$at(128,3599,3624)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: crypto_algebra::neg_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:89:21+25 + + // $t5 := pack crypto_algebra::Element<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:88:9+68 + assume {:print "$at(128,3566,3634)"} true; + $t5 := $1_crypto_algebra_Element'#0'($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:88:9+68 + assume {:print "$track_return(62,26,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:91:5+1 + assume {:print "$at(128,3639,3640)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:91:5+1 + assume {:print "$at(128,3639,3640)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:91:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:91:5+1 + assume {:print "$at(128,3639,3640)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::order [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:227:5+130 +procedure {:timeLimit 80} $1_crypto_algebra_order$verify() returns ($ret0: Vec (int)) +{ + // declare local variables + var $t0: int; + var $t1: Vec (int); + var $t2: bool; + var $temp_0'vec'u8'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:227:5+1 + assume {:print "$at(128,9750,9751)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:228:9+51 + assume {:print "$at(128,9794,9845)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,9794,9845)"} true; + $t0 := $abort_code; + assume {:print "$track_abort(62,30):", $t0} $t0 == $t0; + goto L2; + } + + // $t1 := opaque begin: crypto_algebra::order_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + assume {:print "$at(128,9855,9874)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 +L4: + + // trace_abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + assume {:print "$at(128,9855,9874)"} true; + assume {:print "$track_abort(62,30):", $t0} $t0 == $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + assume {:print "$at(128,9855,9874)"} true; + assume $IsValid'vec'u8''($t1); + + // $t1 := opaque end: crypto_algebra::order_internal<#0>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:229:9+19 + assume {:print "$track_return(62,30,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:230:5+1 + assume {:print "$at(128,9879,9880)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:230:5+1 + assume {:print "$at(128,9879,9880)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:230:5+1 +L2: + + // abort($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:230:5+1 + assume {:print "$at(128,9879,9880)"} true; + $abort_code := $t0; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::pairing [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+275 +procedure {:timeLimit 80} $1_crypto_algebra_pairing$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#1') returns ($ret0: $1_crypto_algebra_Element'#2') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#2'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#1'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#1'': $1_crypto_algebra_Element'#1'; + var $temp_0'$1_crypto_algebra_Element'#2'': $1_crypto_algebra_Element'#2'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+1 + assume {:print "$at(128,8580,8581)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+1 + assume $IsValid'$1_crypto_algebra_Element'#1''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element_1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+1 + assume {:print "$track_local(62,32,0):", $t0} $t0 == $t0; + + // trace_local[element_2]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:201:5+1 + assume {:print "$track_local(62,32,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:202:9+51 + assume {:print "$at(128,8682,8733)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,8682,8733)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,32):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:48+16 + assume {:print "$at(128,8804,8820)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:66+16 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::pairing_internal<#0, #1, #2>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + assume {:print "$at(128,8777,8839)"} true; + assume {:print "$track_abort(62,32):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + assume {:print "$at(128,8777,8839)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: crypto_algebra::pairing_internal<#0, #1, #2>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:204:21+62 + + // $t7 := pack crypto_algebra::Element<#2>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:203:9+106 + assume {:print "$at(128,8743,8849)"} true; + $t7 := $1_crypto_algebra_Element'#2'($t5); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:203:9+106 + assume {:print "$track_return(62,32,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:206:5+1 + assume {:print "$at(128,8854,8855)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:206:5+1 + assume {:print "$at(128,8854,8855)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:206:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:206:5+1 + assume {:print "$at(128,8854,8855)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::scalar_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+267 +procedure {:timeLimit 80} $1_crypto_algebra_scalar_mul$verify(_$t0: $1_crypto_algebra_Element'#0', _$t1: $1_crypto_algebra_Element'#1') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $t1: $1_crypto_algebra_Element'#1'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#1'': $1_crypto_algebra_Element'#1'; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+1 + assume {:print "$at(128,7085,7086)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+1 + assume $IsValid'$1_crypto_algebra_Element'#1''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element_p]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+1 + assume {:print "$track_local(62,34,0):", $t0} $t0 == $t0; + + // trace_local[scalar_k]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:174:5+1 + assume {:print "$track_local(62,34,1):", $t1} $t1 == $t1; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:175:9+51 + assume {:print "$at(128,7182,7233)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,7182,7233)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(62,34):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:47+16 + assume {:print "$at(128,7302,7318)"} true; + $t3 := $t0->$handle; + + // $t4 := get_field>.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:65+15 + $t4 := $t1->$handle; + + // $t5 := opaque begin: crypto_algebra::scalar_mul_internal<#0, #1>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + assume {:print "$at(128,7276,7336)"} true; + assume {:print "$track_abort(62,34):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + assume {:print "$at(128,7276,7336)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: crypto_algebra::scalar_mul_internal<#0, #1>($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:177:21+60 + + // $t7 := pack crypto_algebra::Element<#0>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:176:9+103 + assume {:print "$at(128,7243,7346)"} true; + $t7 := $1_crypto_algebra_Element'#0'($t5); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:176:9+103 + assume {:print "$track_return(62,34,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:179:5+1 + assume {:print "$at(128,7351,7352)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:179:5+1 + assume {:print "$at(128,7351,7352)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:179:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:179:5+1 + assume {:print "$at(128,7351,7352)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::sqr [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:131:5+191 +procedure {:timeLimit 80} $1_crypto_algebra_sqr$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_crypto_algebra_Element'#0'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:131:5+1 + assume {:print "$at(128,5150,5151)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:131:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:131:5+1 + assume {:print "$track_local(62,38,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:132:9+51 + assume {:print "$at(128,5206,5257)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,5206,5257)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,38):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:37+8 + assume {:print "$at(128,5316,5324)"} true; + $t2 := $t0->$handle; + + // $t3 := opaque begin: crypto_algebra::sqr_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + assume {:print "$at(128,5300,5325)"} true; + assume {:print "$track_abort(62,38):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + assume {:print "$at(128,5300,5325)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: crypto_algebra::sqr_internal<#0>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:134:21+25 + + // $t5 := pack crypto_algebra::Element<#0>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:133:9+68 + assume {:print "$at(128,5267,5335)"} true; + $t5 := $1_crypto_algebra_Element'#0'($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:133:9+68 + assume {:print "$track_return(62,38,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:136:5+1 + assume {:print "$at(128,5340,5341)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:136:5+1 + assume {:print "$at(128,5340,5341)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:136:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:136:5+1 + assume {:print "$at(128,5340,5341)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun crypto_algebra::upcast [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:233:5+213 +procedure {:timeLimit 80} $1_crypto_algebra_upcast$verify(_$t0: $1_crypto_algebra_Element'#0') returns ($ret0: $1_crypto_algebra_Element'#1') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: $1_crypto_algebra_Element'#1'; + var $t0: $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#0'': $1_crypto_algebra_Element'#0'; + var $temp_0'$1_crypto_algebra_Element'#1'': $1_crypto_algebra_Element'#1'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:233:5+1 + assume {:print "$at(128,9956,9957)"} true; + assume $IsValid'$1_crypto_algebra_Element'#0''($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:233:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[element]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:233:5+1 + assume {:print "$track_local(62,42,0):", $t0} $t0 == $t0; + + // crypto_algebra::abort_unless_cryptography_algebra_natives_enabled() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:234:9+51 + assume {:print "$at(128,10023,10074)"} true; + call $1_crypto_algebra_abort_unless_cryptography_algebra_natives_enabled(); + if ($abort_flag) { + assume {:print "$at(128,10023,10074)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(62,42):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_field>.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:42+14 + assume {:print "$at(128,10138,10152)"} true; + $t2 := $t0->$handle; + + // $t3 := opaque begin: crypto_algebra::upcast_internal<#0, #1>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 +L4: + + // trace_abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + assume {:print "$at(128,10117,10153)"} true; + assume {:print "$track_abort(62,42):", $t1} $t1 == $t1; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + assume {:print "$at(128,10117,10153)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: crypto_algebra::upcast_internal<#0, #1>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:236:21+36 + + // $t5 := pack crypto_algebra::Element<#1>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:235:9+79 + assume {:print "$at(128,10084,10163)"} true; + $t5 := $1_crypto_algebra_Element'#1'($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:235:9+79 + assume {:print "$track_return(62,42,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:238:5+1 + assume {:print "$at(128,10168,10169)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:238:5+1 + assume {:print "$at(128,10168,10169)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:238:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/crypto_algebra.move:238:5+1 + assume {:print "$at(128,10168,10169)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// struct stc_version::Version at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:14:5+90 +datatype $1_stc_version_Version { + $1_stc_version_Version($major: int) +} +function {:inline} $Update'$1_stc_version_Version'_major(s: $1_stc_version_Version, x: int): $1_stc_version_Version { + $1_stc_version_Version(x) +} +function $IsValid'$1_stc_version_Version'(s: $1_stc_version_Version): bool { + $IsValid'u64'(s->$major) +} +function {:inline} $IsEqual'$1_stc_version_Version'(s1: $1_stc_version_Version, s2: $1_stc_version_Version): bool { + s1 == s2 +} + +// fun stc_version::get [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:29:5+140 +procedure {:timeLimit 80} $1_stc_version_get$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_stc_version_Version; + var $t2: $1_stc_version_Version; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'$1_stc_version_Version': $1_stc_version_Version; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_on_chain_config_Config'$1_stc_version_Version'_$memory#708: $Memory $1_on_chain_config_Config'$1_stc_version_Version'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:29:5+1 + assume {:print "$at(102,596,597)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: on_chain_config::Config: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:29:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_stc_version_Version'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_stc_version_Version'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'$1_stc_version_Version''($rsc)))); + + // @708 := save_mem(on_chain_config::Config) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:29:5+1 + $1_on_chain_config_Config'$1_stc_version_Version'_$memory#708 := $1_on_chain_config_Config'$1_stc_version_Version'_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:29:5+1 + assume {:print "$track_local(64,0,0):", $t0} $t0 == $t0; + + // $t2 := on_chain_config::get_by_address($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:30:23+52 + assume {:print "$at(102,655,707)"} true; + call $t2 := $1_on_chain_config_get_by_address'$1_stc_version_Version'($t0); + if ($abort_flag) { + assume {:print "$at(102,655,707)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(64,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[version]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:30:13+7 + assume {:print "$track_local(64,0,1):", $t2} $t2 == $t2; + + // $t4 := get_field.major($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:31:9+13 + assume {:print "$at(102,717,730)"} true; + $t4 := $t2->$major; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:31:9+13 + assume {:print "$track_return(64,0,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:32:5+1 + assume {:print "$at(102,735,736)"} true; +L1: + + // assert Not(Not(exists[@708]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:35:9+58 + assume {:print "$at(102,761,819)"} true; + assert {:msg "assert_failed(102,761,819): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_stc_version_Version'_$memory#708, $t0); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:35:9+58 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:32:5+1 + assume {:print "$at(102,735,736)"} true; +L2: + + // assert Not(exists[@708]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:34:5+83 + assume {:print "$at(102,742,825)"} true; + assert {:msg "assert_failed(102,742,825): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_on_chain_config_Config'$1_stc_version_Version'_$memory#708, $t0); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:34:5+83 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun stc_version::new_version [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:20:5+77 +procedure {:timeLimit 80} $1_stc_version_new_version$verify(_$t0: int) returns ($ret0: $1_stc_version_Version) +{ + // declare local variables + var $t1: $1_stc_version_Version; + var $t0: int; + var $temp_0'$1_stc_version_Version': $1_stc_version_Version; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:20:5+1 + assume {:print "$at(102,424,425)"} true; + assume $IsValid'u64'($t0); + + // trace_local[major]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:20:5+1 + assume {:print "$track_local(64,1,0):", $t0} $t0 == $t0; + + // $t1 := pack stc_version::Version($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:21:9+17 + assume {:print "$at(102,478,495)"} true; + $t1 := $1_stc_version_Version($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:21:9+17 + assume {:print "$track_return(64,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:22:5+1 + assume {:print "$at(102,500,501)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:25:9+16 + assume {:print "$at(102,534,550)"} true; + assert {:msg "assert_failed(102,534,550): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_version.move:25:9+16 + $ret0 := $t1; + return; + +} + +// struct reserved_accounts_signer::SignerResponsbility at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:16:5+110 +datatype $1_reserved_accounts_signer_SignerResponsbility { + $1_reserved_accounts_signer_SignerResponsbility($signer_caps: Table int ($1_account_SignerCapability)) +} +function {:inline} $Update'$1_reserved_accounts_signer_SignerResponsbility'_signer_caps(s: $1_reserved_accounts_signer_SignerResponsbility, x: Table int ($1_account_SignerCapability)): $1_reserved_accounts_signer_SignerResponsbility { + $1_reserved_accounts_signer_SignerResponsbility(x) +} +function $IsValid'$1_reserved_accounts_signer_SignerResponsbility'(s: $1_reserved_accounts_signer_SignerResponsbility): bool { + $IsValid'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(s->$signer_caps) +} +function {:inline} $IsEqual'$1_reserved_accounts_signer_SignerResponsbility'(s1: $1_reserved_accounts_signer_SignerResponsbility, s2: $1_reserved_accounts_signer_SignerResponsbility): bool { + $IsEqual'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(s1->$signer_caps, s2->$signer_caps)} +var $1_reserved_accounts_signer_SignerResponsbility_$memory: $Memory $1_reserved_accounts_signer_SignerResponsbility; + +// fun reserved_accounts_signer::get_stored_signer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+286 +procedure {:inline 1} $1_reserved_accounts_signer_get_stored_signer(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_reserved_accounts_signer_SignerResponsbility; + var $t4: Table int ($1_account_SignerCapability); + var $t5: $1_account_SignerCapability; + var $t6: int; + var $t7: $signer; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+1 + assume {:print "$at(85,1387,1388)"} true; + assume {:print "$track_local(69,0,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:44:54+42 + assume {:print "$at(85,1531,1573)"} true; + call $t1 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(85,1531,1573)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_global($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:44:19+13 + if (!$ResourceExists($1_reserved_accounts_signer_SignerResponsbility_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(85,1496,1509)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := get_field.signer_caps($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:67+16 + assume {:print "$at(85,1642,1658)"} true; + $t4 := $t3->$signer_caps; + + // $t5 := simple_map::borrow($t4, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:48+43 + call $t5 := $1_simple_map_borrow'address_$1_account_SignerCapability'($t4, $t0); + if ($abort_flag) { + assume {:print "$at(85,1623,1666)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // assume Identical($t6, select account::SignerCapability.account($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t6 == $t5->$account); + + // $t7 := account::create_signer_with_capability($t5) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:9+83 + assume {:print "$at(85,1584,1667)"} true; + call $t7 := $1_account_create_signer_with_capability($t5); + if ($abort_flag) { + assume {:print "$at(85,1584,1667)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:9+83 + assume {:print "$track_return(69,0,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun reserved_accounts_signer::get_stored_signer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+286 +procedure {:timeLimit 80} $1_reserved_accounts_signer_get_stored_signer$verify(_$t0: int) returns ($ret0: $signer) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_reserved_accounts_signer_SignerResponsbility; + var $t4: Table int ($1_account_SignerCapability); + var $t5: $1_account_SignerCapability; + var $t6: int; + var $t7: $signer; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+1 + assume {:print "$at(85,1387,1388)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: reserved_accounts_signer::SignerResponsbility: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0)}(var $rsc := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0); + ($IsValid'$1_reserved_accounts_signer_SignerResponsbility'($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:43:5+1 + assume {:print "$track_local(69,0,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:44:54+42 + assume {:print "$at(85,1531,1573)"} true; + call $t1 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(85,1531,1573)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_global($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:44:19+13 + if (!$ResourceExists($1_reserved_accounts_signer_SignerResponsbility_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(85,1496,1509)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := get_field.signer_caps($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:67+16 + assume {:print "$at(85,1642,1658)"} true; + $t4 := $t3->$signer_caps; + + // $t5 := simple_map::borrow($t4, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:48+43 + call $t5 := $1_simple_map_borrow'address_$1_account_SignerCapability'($t4, $t0); + if ($abort_flag) { + assume {:print "$at(85,1623,1666)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // assume Identical($t6, select account::SignerCapability.account($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t6 == $t5->$account); + + // $t7 := account::create_signer_with_capability($t5) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:9+83 + assume {:print "$at(85,1584,1667)"} true; + call $t7 := $1_account_create_signer_with_capability($t5); + if ($abort_flag) { + assume {:print "$at(85,1584,1667)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(69,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:45:9+83 + assume {:print "$track_return(69,0,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:46:5+1 + assume {:print "$at(85,1672,1673)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun reserved_accounts_signer::store_signer_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+772 +procedure {:timeLimit 80} $1_reserved_accounts_signer_store_signer_cap$verify(_$t0: $signer, _$t1: int, _$t2: $1_account_SignerCapability) returns () +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: bool; + var $t8: Table int ($1_account_SignerCapability); + var $t9: $1_reserved_accounts_signer_SignerResponsbility; + var $t10: int; + var $t11: $Mutation ($1_reserved_accounts_signer_SignerResponsbility); + var $t12: $Mutation (Table int ($1_account_SignerCapability)); + var $t0: $signer; + var $t1: int; + var $t2: $1_account_SignerCapability; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume {:print "$at(85,608,609)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume $IsValid'$1_account_SignerCapability'($t2); + + // assume forall $rsc: reserved_accounts_signer::SignerResponsbility: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0)}(var $rsc := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0); + ($IsValid'$1_reserved_accounts_signer_SignerResponsbility'($rsc)))); + + // trace_local[starcoin_framework]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume {:print "$track_local(69,1,0):", $t0} $t0 == $t0; + + // trace_local[signer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume {:print "$track_local(69,1,1):", $t1} $t1 == $t1; + + // trace_local[signer_cap]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:22:5+1 + assume {:print "$track_local(69,1,2):", $t2} $t2 == $t2; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + assume {:print "$at(85,799,862)"} true; + + // assume Identical($t3, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + assume ($t3 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t3) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + if ($t3) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + assume {:print "$at(85,799,862)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t4)); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + assume {:print "$at(85,799,862)"} true; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:27:9+63 + assume {:print "$at(85,799,862)"} true; + + // system_addresses::assert_framework_reserved($t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:28:9+59 + assume {:print "$at(85,872,931)"} true; + call $1_system_addresses_assert_framework_reserved($t1); + if ($abort_flag) { + assume {:print "$at(85,872,931)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:30:42+19 + assume {:print "$at(85,975,994)"} true; + $t5 := 1; + assume $IsValid'address'($t5); + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:30:14+6 + $t6 := $ResourceExists($1_reserved_accounts_signer_SignerResponsbility_$memory, $t5); + + // $t7 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:30:13+1 + call $t7 := $Not($t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:30:9+248 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:32:17+18 + assume {:print "$at(85,1036,1054)"} true; +L1: + + // $t8 := simple_map::create() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:33:52+56 + assume {:print "$at(85,1107,1163)"} true; + call $t8 := $1_simple_map_create'address_$1_account_SignerCapability'(); + if ($abort_flag) { + assume {:print "$at(85,1107,1163)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + goto L4; + } + + // $t9 := pack reserved_accounts_signer::SignerResponsbility($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:33:17+93 + $t9 := $1_reserved_accounts_signer_SignerResponsbility($t8); + + // move_to($t9, $t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:31:13+7 + assume {:print "$at(85,1011,1018)"} true; + if ($ResourceExists($1_reserved_accounts_signer_SignerResponsbility_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_reserved_accounts_signer_SignerResponsbility_$memory := $ResourceUpdate($1_reserved_accounts_signer_SignerResponsbility_$memory, $t0->$addr, $t9); + } + if ($abort_flag) { + assume {:print "$at(85,1011,1018)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:34:14+1 + assume {:print "$at(85,1179,1180)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:30:9+248 + assume {:print "$at(85,942,1190)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:38:57+19 + assume {:print "$at(85,1275,1294)"} true; +L2: + + // $t10 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:38:57+19 + assume {:print "$at(85,1275,1294)"} true; + $t10 := 1; + assume $IsValid'address'($t10); + + // $t11 := borrow_global($t10) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:38:18+17 + if (!$ResourceExists($1_reserved_accounts_signer_SignerResponsbility_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(85,1236,1253)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + goto L4; + } + + // $t12 := borrow_field.signer_caps($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:38:13+76 + $t12 := $ChildMutation($t11, 0, $Dereference($t11)->$signer_caps); + + // simple_map::add($t12, $t1, $t2) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:39:9+56 + assume {:print "$at(85,1317,1373)"} true; + call $t12 := $1_simple_map_add'address_$1_account_SignerCapability'($t12, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(85,1317,1373)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(69,1):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[Reference($t11).signer_caps (simple_map::SimpleMap)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:39:9+56 + $t11 := $UpdateMutation($t11, $Update'$1_reserved_accounts_signer_SignerResponsbility'_signer_caps($Dereference($t11), $Dereference($t12))); + + // write_back[reserved_accounts_signer::SignerResponsbility@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:39:9+56 + $1_reserved_accounts_signer_SignerResponsbility_$memory := $ResourceUpdate($1_reserved_accounts_signer_SignerResponsbility_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:40:5+1 + assume {:print "$at(85,1379,1380)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:40:5+1 + assume {:print "$at(85,1379,1380)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:40:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/reserved_accounts_signer.move:40:5+1 + assume {:print "$at(85,1379,1380)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// struct oracle::DataRecord at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:19:5+238 +datatype $1_oracle_DataRecord'u128' { + $1_oracle_DataRecord'u128'($version: int, $value: int, $updated_at: int) +} +function {:inline} $Update'$1_oracle_DataRecord'u128''_version(s: $1_oracle_DataRecord'u128', x: int): $1_oracle_DataRecord'u128' { + $1_oracle_DataRecord'u128'(x, s->$value, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'u128''_value(s: $1_oracle_DataRecord'u128', x: int): $1_oracle_DataRecord'u128' { + $1_oracle_DataRecord'u128'(s->$version, x, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'u128''_updated_at(s: $1_oracle_DataRecord'u128', x: int): $1_oracle_DataRecord'u128' { + $1_oracle_DataRecord'u128'(s->$version, s->$value, x) +} +function $IsValid'$1_oracle_DataRecord'u128''(s: $1_oracle_DataRecord'u128'): bool { + $IsValid'u64'(s->$version) + && $IsValid'u128'(s->$value) + && $IsValid'u64'(s->$updated_at) +} +function {:inline} $IsEqual'$1_oracle_DataRecord'u128''(s1: $1_oracle_DataRecord'u128', s2: $1_oracle_DataRecord'u128'): bool { + s1 == s2 +} + +// struct oracle::DataRecord<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:19:5+238 +datatype $1_oracle_DataRecord'#0' { + $1_oracle_DataRecord'#0'($version: int, $value: #0, $updated_at: int) +} +function {:inline} $Update'$1_oracle_DataRecord'#0''_version(s: $1_oracle_DataRecord'#0', x: int): $1_oracle_DataRecord'#0' { + $1_oracle_DataRecord'#0'(x, s->$value, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#0''_value(s: $1_oracle_DataRecord'#0', x: #0): $1_oracle_DataRecord'#0' { + $1_oracle_DataRecord'#0'(s->$version, x, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#0''_updated_at(s: $1_oracle_DataRecord'#0', x: int): $1_oracle_DataRecord'#0' { + $1_oracle_DataRecord'#0'(s->$version, s->$value, x) +} +function $IsValid'$1_oracle_DataRecord'#0''(s: $1_oracle_DataRecord'#0'): bool { + $IsValid'u64'(s->$version) + && $IsValid'#0'(s->$value) + && $IsValid'u64'(s->$updated_at) +} +function {:inline} $IsEqual'$1_oracle_DataRecord'#0''(s1: $1_oracle_DataRecord'#0', s2: $1_oracle_DataRecord'#0'): bool { + s1 == s2 +} + +// struct oracle::DataRecord<#1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:19:5+238 +datatype $1_oracle_DataRecord'#1' { + $1_oracle_DataRecord'#1'($version: int, $value: #1, $updated_at: int) +} +function {:inline} $Update'$1_oracle_DataRecord'#1''_version(s: $1_oracle_DataRecord'#1', x: int): $1_oracle_DataRecord'#1' { + $1_oracle_DataRecord'#1'(x, s->$value, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#1''_value(s: $1_oracle_DataRecord'#1', x: #1): $1_oracle_DataRecord'#1' { + $1_oracle_DataRecord'#1'(s->$version, x, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#1''_updated_at(s: $1_oracle_DataRecord'#1', x: int): $1_oracle_DataRecord'#1' { + $1_oracle_DataRecord'#1'(s->$version, s->$value, x) +} +function $IsValid'$1_oracle_DataRecord'#1''(s: $1_oracle_DataRecord'#1'): bool { + $IsValid'u64'(s->$version) + && $IsValid'#1'(s->$value) + && $IsValid'u64'(s->$updated_at) +} +function {:inline} $IsEqual'$1_oracle_DataRecord'#1''(s1: $1_oracle_DataRecord'#1', s2: $1_oracle_DataRecord'#1'): bool { + s1 == s2 +} + +// struct oracle::DataRecord<#2> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:19:5+238 +datatype $1_oracle_DataRecord'#2' { + $1_oracle_DataRecord'#2'($version: int, $value: #2, $updated_at: int) +} +function {:inline} $Update'$1_oracle_DataRecord'#2''_version(s: $1_oracle_DataRecord'#2', x: int): $1_oracle_DataRecord'#2' { + $1_oracle_DataRecord'#2'(x, s->$value, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#2''_value(s: $1_oracle_DataRecord'#2', x: #2): $1_oracle_DataRecord'#2' { + $1_oracle_DataRecord'#2'(s->$version, x, s->$updated_at) +} +function {:inline} $Update'$1_oracle_DataRecord'#2''_updated_at(s: $1_oracle_DataRecord'#2', x: int): $1_oracle_DataRecord'#2' { + $1_oracle_DataRecord'#2'(s->$version, s->$value, x) +} +function $IsValid'$1_oracle_DataRecord'#2''(s: $1_oracle_DataRecord'#2'): bool { + $IsValid'u64'(s->$version) + && $IsValid'#2'(s->$value) + && $IsValid'u64'(s->$updated_at) +} +function {:inline} $IsEqual'$1_oracle_DataRecord'#2''(s1: $1_oracle_DataRecord'#2', s2: $1_oracle_DataRecord'#2'): bool { + s1 == s2 +} + +// struct oracle::DataSource, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:37:5+292 +datatype $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'($id: int, $counter: int, $update_events: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'') +} +function {:inline} $Update'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''_id(s: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128', x: int): $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'(x, s->$counter, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''_counter(s: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128', x: int): $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'(s->$id, x, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''_update_events(s: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128', x: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''): $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'(s->$id, s->$counter, x) +} +function $IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(s: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'): bool { + $IsValid'u64'(s->$id) + && $IsValid'u64'(s->$counter) + && $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'''(s->$update_events) +} +function {:inline} $IsEqual'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''(s1: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128', s2: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'): bool { + s1 == s2 +} +var $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory: $Memory $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'; + +// struct oracle::DataSource<#0, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:37:5+292 +datatype $1_oracle_DataSource'#0_u128' { + $1_oracle_DataSource'#0_u128'($id: int, $counter: int, $update_events: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'') +} +function {:inline} $Update'$1_oracle_DataSource'#0_u128''_id(s: $1_oracle_DataSource'#0_u128', x: int): $1_oracle_DataSource'#0_u128' { + $1_oracle_DataSource'#0_u128'(x, s->$counter, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_u128''_counter(s: $1_oracle_DataSource'#0_u128', x: int): $1_oracle_DataSource'#0_u128' { + $1_oracle_DataSource'#0_u128'(s->$id, x, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_u128''_update_events(s: $1_oracle_DataSource'#0_u128', x: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''): $1_oracle_DataSource'#0_u128' { + $1_oracle_DataSource'#0_u128'(s->$id, s->$counter, x) +} +function $IsValid'$1_oracle_DataSource'#0_u128''(s: $1_oracle_DataSource'#0_u128'): bool { + $IsValid'u64'(s->$id) + && $IsValid'u64'(s->$counter) + && $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128'''(s->$update_events) +} +function {:inline} $IsEqual'$1_oracle_DataSource'#0_u128''(s1: $1_oracle_DataSource'#0_u128', s2: $1_oracle_DataSource'#0_u128'): bool { + s1 == s2 +} +var $1_oracle_DataSource'#0_u128'_$memory: $Memory $1_oracle_DataSource'#0_u128'; + +// struct oracle::DataSource<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:37:5+292 +datatype $1_oracle_DataSource'#0_#1' { + $1_oracle_DataSource'#0_#1'($id: int, $counter: int, $update_events: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'') +} +function {:inline} $Update'$1_oracle_DataSource'#0_#1''_id(s: $1_oracle_DataSource'#0_#1', x: int): $1_oracle_DataSource'#0_#1' { + $1_oracle_DataSource'#0_#1'(x, s->$counter, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_#1''_counter(s: $1_oracle_DataSource'#0_#1', x: int): $1_oracle_DataSource'#0_#1' { + $1_oracle_DataSource'#0_#1'(s->$id, x, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_#1''_update_events(s: $1_oracle_DataSource'#0_#1', x: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''): $1_oracle_DataSource'#0_#1' { + $1_oracle_DataSource'#0_#1'(s->$id, s->$counter, x) +} +function $IsValid'$1_oracle_DataSource'#0_#1''(s: $1_oracle_DataSource'#0_#1'): bool { + $IsValid'u64'(s->$id) + && $IsValid'u64'(s->$counter) + && $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1'''(s->$update_events) +} +function {:inline} $IsEqual'$1_oracle_DataSource'#0_#1''(s1: $1_oracle_DataSource'#0_#1', s2: $1_oracle_DataSource'#0_#1'): bool { + s1 == s2 +} +var $1_oracle_DataSource'#0_#1'_$memory: $Memory $1_oracle_DataSource'#0_#1'; + +// struct oracle::DataSource<#0, #2> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:37:5+292 +datatype $1_oracle_DataSource'#0_#2' { + $1_oracle_DataSource'#0_#2'($id: int, $counter: int, $update_events: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'') +} +function {:inline} $Update'$1_oracle_DataSource'#0_#2''_id(s: $1_oracle_DataSource'#0_#2', x: int): $1_oracle_DataSource'#0_#2' { + $1_oracle_DataSource'#0_#2'(x, s->$counter, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_#2''_counter(s: $1_oracle_DataSource'#0_#2', x: int): $1_oracle_DataSource'#0_#2' { + $1_oracle_DataSource'#0_#2'(s->$id, x, s->$update_events) +} +function {:inline} $Update'$1_oracle_DataSource'#0_#2''_update_events(s: $1_oracle_DataSource'#0_#2', x: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''): $1_oracle_DataSource'#0_#2' { + $1_oracle_DataSource'#0_#2'(s->$id, s->$counter, x) +} +function $IsValid'$1_oracle_DataSource'#0_#2''(s: $1_oracle_DataSource'#0_#2'): bool { + $IsValid'u64'(s->$id) + && $IsValid'u64'(s->$counter) + && $IsValid'$1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2'''(s->$update_events) +} +function {:inline} $IsEqual'$1_oracle_DataSource'#0_#2''(s1: $1_oracle_DataSource'#0_#2', s2: $1_oracle_DataSource'#0_#2'): bool { + s1 == s2 +} +var $1_oracle_DataSource'#0_#2'_$memory: $Memory $1_oracle_DataSource'#0_#2'; + +// struct oracle::GenesisSignerCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:49:5+86 +datatype $1_oracle_GenesisSignerCapability { + $1_oracle_GenesisSignerCapability($cap: $1_account_SignerCapability) +} +function {:inline} $Update'$1_oracle_GenesisSignerCapability'_cap(s: $1_oracle_GenesisSignerCapability, x: $1_account_SignerCapability): $1_oracle_GenesisSignerCapability { + $1_oracle_GenesisSignerCapability(x) +} +function $IsValid'$1_oracle_GenesisSignerCapability'(s: $1_oracle_GenesisSignerCapability): bool { + $IsValid'$1_account_SignerCapability'(s->$cap) +} +function {:inline} $IsEqual'$1_oracle_GenesisSignerCapability'(s1: $1_oracle_GenesisSignerCapability, s2: $1_oracle_GenesisSignerCapability): bool { + s1 == s2 +} +var $1_oracle_GenesisSignerCapability_$memory: $Memory $1_oracle_GenesisSignerCapability; + +// struct oracle::OracleFeed, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:28:5+128 +datatype $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'($record: $1_oracle_DataRecord'u128') +} +function {:inline} $Update'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''_record(s: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128', x: $1_oracle_DataRecord'u128'): $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'(x) +} +function $IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(s: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'): bool { + $IsValid'$1_oracle_DataRecord'u128''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''(s1: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128', s2: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'): bool { + s1 == s2 +} +var $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory: $Memory $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'; + +// struct oracle::OracleFeed at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:28:5+128 +datatype $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128' { + $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'($record: $1_oracle_DataRecord'u128') +} +function {:inline} $Update'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''_record(s: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128', x: $1_oracle_DataRecord'u128'): $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128' { + $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'(x) +} +function $IsValid'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(s: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'): bool { + $IsValid'$1_oracle_DataRecord'u128''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''(s1: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128', s2: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'): bool { + s1 == s2 +} +var $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory: $Memory $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'; + +// struct oracle::OracleFeed<#0, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:28:5+128 +datatype $1_oracle_OracleFeed'#0_u128' { + $1_oracle_OracleFeed'#0_u128'($record: $1_oracle_DataRecord'u128') +} +function {:inline} $Update'$1_oracle_OracleFeed'#0_u128''_record(s: $1_oracle_OracleFeed'#0_u128', x: $1_oracle_DataRecord'u128'): $1_oracle_OracleFeed'#0_u128' { + $1_oracle_OracleFeed'#0_u128'(x) +} +function $IsValid'$1_oracle_OracleFeed'#0_u128''(s: $1_oracle_OracleFeed'#0_u128'): bool { + $IsValid'$1_oracle_DataRecord'u128''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleFeed'#0_u128''(s1: $1_oracle_OracleFeed'#0_u128', s2: $1_oracle_OracleFeed'#0_u128'): bool { + s1 == s2 +} +var $1_oracle_OracleFeed'#0_u128'_$memory: $Memory $1_oracle_OracleFeed'#0_u128'; + +// struct oracle::OracleFeed<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:28:5+128 +datatype $1_oracle_OracleFeed'#0_#1' { + $1_oracle_OracleFeed'#0_#1'($record: $1_oracle_DataRecord'#1') +} +function {:inline} $Update'$1_oracle_OracleFeed'#0_#1''_record(s: $1_oracle_OracleFeed'#0_#1', x: $1_oracle_DataRecord'#1'): $1_oracle_OracleFeed'#0_#1' { + $1_oracle_OracleFeed'#0_#1'(x) +} +function $IsValid'$1_oracle_OracleFeed'#0_#1''(s: $1_oracle_OracleFeed'#0_#1'): bool { + $IsValid'$1_oracle_DataRecord'#1''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleFeed'#0_#1''(s1: $1_oracle_OracleFeed'#0_#1', s2: $1_oracle_OracleFeed'#0_#1'): bool { + s1 == s2 +} +var $1_oracle_OracleFeed'#0_#1'_$memory: $Memory $1_oracle_OracleFeed'#0_#1'; + +// struct oracle::OracleFeed<#0, #2> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:28:5+128 +datatype $1_oracle_OracleFeed'#0_#2' { + $1_oracle_OracleFeed'#0_#2'($record: $1_oracle_DataRecord'#2') +} +function {:inline} $Update'$1_oracle_OracleFeed'#0_#2''_record(s: $1_oracle_OracleFeed'#0_#2', x: $1_oracle_DataRecord'#2'): $1_oracle_OracleFeed'#0_#2' { + $1_oracle_OracleFeed'#0_#2'(x) +} +function $IsValid'$1_oracle_OracleFeed'#0_#2''(s: $1_oracle_OracleFeed'#0_#2'): bool { + $IsValid'$1_oracle_DataRecord'#2''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleFeed'#0_#2''(s1: $1_oracle_OracleFeed'#0_#2', s2: $1_oracle_OracleFeed'#0_#2'): bool { + s1 == s2 +} +var $1_oracle_OracleFeed'#0_#2'_$memory: $Memory $1_oracle_OracleFeed'#0_#2'; + +// struct oracle::OracleInfo, oracle_price::PriceOracleInfo> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:12:5+186 +datatype $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'($counter: int, $info: $1_oracle_price_PriceOracleInfo) +} +function {:inline} $Update'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''_counter(s: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo', x: int): $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'(x, s->$info) +} +function {:inline} $Update'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''_info(s: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo', x: $1_oracle_price_PriceOracleInfo): $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'(s->$counter, x) +} +function $IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(s: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_oracle_price_PriceOracleInfo'(s->$info) +} +function {:inline} $IsEqual'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''(s1: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo', s2: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'): bool { + s1 == s2 +} +var $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory: $Memory $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'; + +// struct oracle::OracleInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:12:5+186 +datatype $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'($counter: int, $info: $1_oracle_price_PriceOracleInfo) +} +function {:inline} $Update'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''_counter(s: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo', x: int): $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'(x, s->$info) +} +function {:inline} $Update'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''_info(s: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo', x: $1_oracle_price_PriceOracleInfo): $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'(s->$counter, x) +} +function $IsValid'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(s: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_oracle_price_PriceOracleInfo'(s->$info) +} +function {:inline} $IsEqual'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''(s1: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo', s2: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'): bool { + s1 == s2 +} +var $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory: $Memory $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'; + +// struct oracle::OracleInfo<#0, oracle_price::PriceOracleInfo> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:12:5+186 +datatype $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'($counter: int, $info: $1_oracle_price_PriceOracleInfo) +} +function {:inline} $Update'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''_counter(s: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo', x: int): $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'(x, s->$info) +} +function {:inline} $Update'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''_info(s: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo', x: $1_oracle_price_PriceOracleInfo): $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo' { + $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'(s->$counter, x) +} +function $IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(s: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'$1_oracle_price_PriceOracleInfo'(s->$info) +} +function {:inline} $IsEqual'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''(s1: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo', s2: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'): bool { + s1 == s2 +} +var $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory: $Memory $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'; + +// struct oracle::OracleInfo<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:12:5+186 +datatype $1_oracle_OracleInfo'#0_#1' { + $1_oracle_OracleInfo'#0_#1'($counter: int, $info: #1) +} +function {:inline} $Update'$1_oracle_OracleInfo'#0_#1''_counter(s: $1_oracle_OracleInfo'#0_#1', x: int): $1_oracle_OracleInfo'#0_#1' { + $1_oracle_OracleInfo'#0_#1'(x, s->$info) +} +function {:inline} $Update'$1_oracle_OracleInfo'#0_#1''_info(s: $1_oracle_OracleInfo'#0_#1', x: #1): $1_oracle_OracleInfo'#0_#1' { + $1_oracle_OracleInfo'#0_#1'(s->$counter, x) +} +function $IsValid'$1_oracle_OracleInfo'#0_#1''(s: $1_oracle_OracleInfo'#0_#1'): bool { + $IsValid'u64'(s->$counter) + && $IsValid'#1'(s->$info) +} +function {:inline} $IsEqual'$1_oracle_OracleInfo'#0_#1''(s1: $1_oracle_OracleInfo'#0_#1', s2: $1_oracle_OracleInfo'#0_#1'): bool { + s1 == s2 +} +var $1_oracle_OracleInfo'#0_#1'_$memory: $Memory $1_oracle_OracleInfo'#0_#1'; + +// struct oracle::OracleUpdateEvent, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:32:5+173 +datatype $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'($source_id: int, $record: $1_oracle_DataRecord'u128') +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''_source_id(s: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128', x: int): $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'(x, s->$record) +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''_record(s: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128', x: $1_oracle_DataRecord'u128'): $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128' { + $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'(s->$source_id, x) +} +function $IsValid'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(s: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'): bool { + $IsValid'u64'(s->$source_id) + && $IsValid'$1_oracle_DataRecord'u128''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''(s1: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128', s2: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'): bool { + s1 == s2 +} + +// struct oracle::OracleUpdateEvent<#0, u128> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:32:5+173 +datatype $1_oracle_OracleUpdateEvent'#0_u128' { + $1_oracle_OracleUpdateEvent'#0_u128'($source_id: int, $record: $1_oracle_DataRecord'u128') +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_u128''_source_id(s: $1_oracle_OracleUpdateEvent'#0_u128', x: int): $1_oracle_OracleUpdateEvent'#0_u128' { + $1_oracle_OracleUpdateEvent'#0_u128'(x, s->$record) +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_u128''_record(s: $1_oracle_OracleUpdateEvent'#0_u128', x: $1_oracle_DataRecord'u128'): $1_oracle_OracleUpdateEvent'#0_u128' { + $1_oracle_OracleUpdateEvent'#0_u128'(s->$source_id, x) +} +function $IsValid'$1_oracle_OracleUpdateEvent'#0_u128''(s: $1_oracle_OracleUpdateEvent'#0_u128'): bool { + $IsValid'u64'(s->$source_id) + && $IsValid'$1_oracle_DataRecord'u128''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleUpdateEvent'#0_u128''(s1: $1_oracle_OracleUpdateEvent'#0_u128', s2: $1_oracle_OracleUpdateEvent'#0_u128'): bool { + s1 == s2 +} + +// struct oracle::OracleUpdateEvent<#0, #1> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:32:5+173 +datatype $1_oracle_OracleUpdateEvent'#0_#1' { + $1_oracle_OracleUpdateEvent'#0_#1'($source_id: int, $record: $1_oracle_DataRecord'#1') +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_#1''_source_id(s: $1_oracle_OracleUpdateEvent'#0_#1', x: int): $1_oracle_OracleUpdateEvent'#0_#1' { + $1_oracle_OracleUpdateEvent'#0_#1'(x, s->$record) +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_#1''_record(s: $1_oracle_OracleUpdateEvent'#0_#1', x: $1_oracle_DataRecord'#1'): $1_oracle_OracleUpdateEvent'#0_#1' { + $1_oracle_OracleUpdateEvent'#0_#1'(s->$source_id, x) +} +function $IsValid'$1_oracle_OracleUpdateEvent'#0_#1''(s: $1_oracle_OracleUpdateEvent'#0_#1'): bool { + $IsValid'u64'(s->$source_id) + && $IsValid'$1_oracle_DataRecord'#1''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleUpdateEvent'#0_#1''(s1: $1_oracle_OracleUpdateEvent'#0_#1', s2: $1_oracle_OracleUpdateEvent'#0_#1'): bool { + s1 == s2 +} + +// struct oracle::OracleUpdateEvent<#0, #2> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:32:5+173 +datatype $1_oracle_OracleUpdateEvent'#0_#2' { + $1_oracle_OracleUpdateEvent'#0_#2'($source_id: int, $record: $1_oracle_DataRecord'#2') +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_#2''_source_id(s: $1_oracle_OracleUpdateEvent'#0_#2', x: int): $1_oracle_OracleUpdateEvent'#0_#2' { + $1_oracle_OracleUpdateEvent'#0_#2'(x, s->$record) +} +function {:inline} $Update'$1_oracle_OracleUpdateEvent'#0_#2''_record(s: $1_oracle_OracleUpdateEvent'#0_#2', x: $1_oracle_DataRecord'#2'): $1_oracle_OracleUpdateEvent'#0_#2' { + $1_oracle_OracleUpdateEvent'#0_#2'(s->$source_id, x) +} +function $IsValid'$1_oracle_OracleUpdateEvent'#0_#2''(s: $1_oracle_OracleUpdateEvent'#0_#2'): bool { + $IsValid'u64'(s->$source_id) + && $IsValid'$1_oracle_DataRecord'#2''(s->$record) +} +function {:inline} $IsEqual'$1_oracle_OracleUpdateEvent'#0_#2''(s1: $1_oracle_OracleUpdateEvent'#0_#2', s2: $1_oracle_OracleUpdateEvent'#0_#2'): bool { + s1 == s2 +} + +// struct oracle::UpdateCapability> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:45:5+106 +datatype $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'' { + $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''($account: int) +} +function {:inline} $Update'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''_account(s: $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'', x: int): $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'' { + $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''(x) +} +function $IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(s: $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''): bool { + $IsValid'address'(s->$account) +} +function {:inline} $IsEqual'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''(s1: $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'', s2: $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''): bool { + s1 == s2 +} +var $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory: $Memory $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''; + +// struct oracle::UpdateCapability<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:45:5+106 +datatype $1_oracle_UpdateCapability'#0' { + $1_oracle_UpdateCapability'#0'($account: int) +} +function {:inline} $Update'$1_oracle_UpdateCapability'#0''_account(s: $1_oracle_UpdateCapability'#0', x: int): $1_oracle_UpdateCapability'#0' { + $1_oracle_UpdateCapability'#0'(x) +} +function $IsValid'$1_oracle_UpdateCapability'#0''(s: $1_oracle_UpdateCapability'#0'): bool { + $IsValid'address'(s->$account) +} +function {:inline} $IsEqual'$1_oracle_UpdateCapability'#0''(s1: $1_oracle_UpdateCapability'#0', s2: $1_oracle_UpdateCapability'#0'): bool { + s1 == s2 +} +var $1_oracle_UpdateCapability'#0'_$memory: $Memory $1_oracle_UpdateCapability'#0'; + +// fun oracle::update, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+454 +procedure {:inline 1} $1_oracle_update'$1_easy_gas_STCToken'#0'_u128'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''); + var $t0: $signer; + var $t1: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$at(81,4982,4983)"} true; + assume {:print "$track_local(70,13,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$track_local(70,13,1):", $t1} $t1 == $t1; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:23+26 + assume {:print "$at(81,5179,5205)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,5179,5205)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[account]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:13+7 + assume {:print "$track_local(70,13,2):", $t3} $t3 == $t3; + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:17+6 + assume {:print "$at(81,5223,5229)"} true; + $t5 := $ResourceExists($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 +L0: + + // $t6 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 + assume {:print "$at(81,5293,5317)"} true; + $t6 := 102; + assume $IsValid'u64'($t6); + + // $t7 := error::resource_exhausted($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:61+51 + call $t7 := $1_error_resource_exhausted($t6); + if ($abort_flag) { + assume {:print "$at(81,5267,5318)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + assume {:print "$track_abort(70,13):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:64+7 + assume {:print "$at(81,5384,5391)"} true; +L2: + + // $t8 := borrow_global>($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:19+17 + assume {:print "$at(81,5339,5356)"} true; + if (!$ResourceExists($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(81,5339,5356)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // oracle::update_with_cap<#0, #1>($t8, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + assume {:print "$at(81,5402,5429)"} true; + call $t8 := $1_oracle_update_with_cap'$1_easy_gas_STCToken'#0'_u128'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(81,5402,5429)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[oracle::UpdateCapability<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory := $ResourceUpdate($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::update<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+454 +procedure {:inline 1} $1_oracle_update'#0_u128'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t0: $signer; + var $t1: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$at(81,4982,4983)"} true; + assume {:print "$track_local(70,13,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$track_local(70,13,1):", $t1} $t1 == $t1; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:23+26 + assume {:print "$at(81,5179,5205)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,5179,5205)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[account]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:13+7 + assume {:print "$track_local(70,13,2):", $t3} $t3 == $t3; + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:17+6 + assume {:print "$at(81,5223,5229)"} true; + $t5 := $ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 +L0: + + // $t6 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 + assume {:print "$at(81,5293,5317)"} true; + $t6 := 102; + assume $IsValid'u64'($t6); + + // $t7 := error::resource_exhausted($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:61+51 + call $t7 := $1_error_resource_exhausted($t6); + if ($abort_flag) { + assume {:print "$at(81,5267,5318)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + assume {:print "$track_abort(70,13):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:64+7 + assume {:print "$at(81,5384,5391)"} true; +L2: + + // $t8 := borrow_global>($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:19+17 + assume {:print "$at(81,5339,5356)"} true; + if (!$ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(81,5339,5356)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // oracle::update_with_cap<#0, #1>($t8, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + assume {:print "$at(81,5402,5429)"} true; + call $t8 := $1_oracle_update_with_cap'#0_u128'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(81,5402,5429)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[oracle::UpdateCapability<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + $1_oracle_UpdateCapability'#0'_$memory := $ResourceUpdate($1_oracle_UpdateCapability'#0'_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::update [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+454 +procedure {:timeLimit 80} $1_oracle_update$verify(_$t0: $signer, _$t1: #1) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t0: $signer; + var $t1: #1; + var $temp_0'#1': #1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$at(81,4982,4983)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume $IsValid'#1'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_#1''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#1''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+454 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$track_local(70,13,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:127:5+1 + assume {:print "$track_local(70,13,1):", $t1} $t1 == $t1; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:23+26 + assume {:print "$at(81,5179,5205)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,5179,5205)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[account]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:131:13+7 + assume {:print "$track_local(70,13,2):", $t3} $t3 == $t3; + + // $t5 := exists>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:17+6 + assume {:print "$at(81,5223,5229)"} true; + $t5 := $ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t3); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 +L0: + + // $t6 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:87+24 + assume {:print "$at(81,5293,5317)"} true; + $t6 := 102; + assume $IsValid'u64'($t6); + + // $t7 := error::resource_exhausted($t6) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:61+51 + call $t7 := $1_error_resource_exhausted($t6); + if ($abort_flag) { + assume {:print "$at(81,5267,5318)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + assume {:print "$at(81,5215,5319)"} true; + assume {:print "$track_abort(70,13):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + $t4 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:132:9+104 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:64+7 + assume {:print "$at(81,5384,5391)"} true; +L2: + + // $t8 := borrow_global>($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:133:19+17 + assume {:print "$at(81,5339,5356)"} true; + if (!$ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t3), EmptyVec(), $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $t3)); + } + if ($abort_flag) { + assume {:print "$at(81,5339,5356)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // oracle::update_with_cap<#0, #1>($t8, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + assume {:print "$at(81,5402,5429)"} true; + call $t8 := $1_oracle_update_with_cap'#0_#1'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(81,5402,5429)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,13):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[oracle::UpdateCapability<#0>@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:134:9+27 + $1_oracle_UpdateCapability'#0'_$memory := $ResourceUpdate($1_oracle_UpdateCapability'#0'_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:135:5+1 + assume {:print "$at(81,5435,5436)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:61:5+42 +procedure {:timeLimit 80} $1_oracle_initialize$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:61:5+1 + assume {:print "$at(81,1817,1818)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // trace_local[_sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:61:5+1 + assume {:print "$track_local(70,5,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:61:46+1 +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:61:46+1 + assume {:print "$at(81,1858,1859)"} true; + return; + +} + +// fun oracle::read, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+234 +procedure {:inline 1} $1_oracle_read'$1_easy_gas_STCToken'#0'_u128'(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume {:print "$at(81,6479,6480)"} true; + assume {:print "$track_local(70,7,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:159:27+13 + assume {:print "$at(81,6620,6633)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6620,6633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:11+18 + assume {:print "$at(81,6683,6701)"} true; + $t3 := $t1->$record; + + // $t4 := get_field>.value($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:10+25 + $t4 := $t3->$value; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:9+26 + assume {:print "$track_return(70,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+234 +procedure {:inline 1} $1_oracle_read'$1_oracle_stc_usd_STCUSD_u128'(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume {:print "$at(81,6479,6480)"} true; + assume {:print "$track_local(70,7,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:159:27+13 + assume {:print "$at(81,6620,6633)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6620,6633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:11+18 + assume {:print "$at(81,6683,6701)"} true; + $t3 := $t1->$record; + + // $t4 := get_field>.value($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:10+25 + $t4 := $t3->$value; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:9+26 + assume {:print "$track_return(70,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+234 +procedure {:inline 1} $1_oracle_read'#0_u128'(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'#0_u128'; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume {:print "$at(81,6479,6480)"} true; + assume {:print "$track_local(70,7,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:159:27+13 + assume {:print "$at(81,6620,6633)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_u128'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6620,6633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:11+18 + assume {:print "$at(81,6683,6701)"} true; + $t3 := $t1->$record; + + // $t4 := get_field>.value($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:10+25 + $t4 := $t3->$value; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:9+26 + assume {:print "$track_return(70,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+234 +procedure {:timeLimit 80} $1_oracle_read$verify(_$t0: int) returns ($ret0: #1) +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'#0_#1'; + var $t2: int; + var $t3: $1_oracle_DataRecord'#1'; + var $t4: #1; + var $t0: int; + var $temp_0'#1': #1; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume {:print "$at(81,6479,6480)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#1''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:158:5+1 + assume {:print "$track_local(70,7,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:159:27+13 + assume {:print "$at(81,6620,6633)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6620,6633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,7):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:11+18 + assume {:print "$at(81,6683,6701)"} true; + $t3 := $t1->$record; + + // $t4 := get_field>.value($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:10+25 + $t4 := $t3->$value; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:160:9+26 + assume {:print "$track_return(70,7,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:161:5+1 + assume {:print "$at(81,6712,6713)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::add_update_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+320 +procedure {:timeLimit 80} $1_oracle_add_update_capability$verify(_$t0: $signer, _$t1: $1_oracle_UpdateCapability'#0') 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_oracle_UpdateCapability'#0'; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+1 + assume {:print "$at(81,8099,8100)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+1 + assume $IsValid'$1_oracle_UpdateCapability'#0''($t1); + + // assume forall $rsc: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+1 + assume {:print "$track_local(70,0,0):", $t0} $t0 == $t0; + + // trace_local[update_cap]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:197:5+1 + assume {:print "$track_local(70,0,1):", $t1} $t1 == $t1; + + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:199:13+26 + assume {:print "$at(81,8245,8271)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,8245,8271)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,0):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := get_field>.account($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:199:43+18 + $t4 := $t1->$account; + + // $t5 := ==($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:199:40+2 + $t5 := $IsEqual'address'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 + assume {:print "$at(81,8224,8375)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 + assume {:print "$at(81,8224,8375)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 +L0: + + // $t6 := 104 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:200:37+33 + assume {:print "$at(81,8331,8364)"} true; + $t6 := 104; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:200:13+58 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(81,8307,8365)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,0):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 + assume {:print "$at(81,8224,8375)"} true; + assume {:print "$track_abort(70,0):", $t7} $t7 == $t7; + + // $t3 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 + $t3 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:198:9+151 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:202:17+6 + assume {:print "$at(81,8393,8399)"} true; +L2: + + // move_to>($t1, $t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:202:9+7 + assume {:print "$at(81,8385,8392)"} true; + if ($ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_UpdateCapability'#0'_$memory := $ResourceUpdate($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(81,8385,8392)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,0):", $t3} $t3 == $t3; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:203:5+1 + assume {:print "$at(81,8418,8419)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:203:5+1 + assume {:print "$at(81,8418,8419)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:203:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:203:5+1 + assume {:print "$at(81,8418,8419)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun oracle::extract_signer_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:64:5+378 +procedure {:timeLimit 80} $1_oracle_extract_signer_cap$verify(_$t0: $signer) returns ($ret0: $1_account_SignerCapability) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: $1_oracle_GenesisSignerCapability; + var $t5: $1_account_SignerCapability; + var $t0: $signer; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:64:5+1 + assume {:print "$at(81,2010,2011)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: oracle::GenesisSignerCapability: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:64:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_GenesisSignerCapability_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_GenesisSignerCapability_$memory, $a_0); + ($IsValid'$1_oracle_GenesisSignerCapability'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:64:5+1 + assume {:print "$track_local(70,1,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + assume {:print "$at(81,2185,2236)"} true; + + // assume Identical($t1, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + assume ($t1 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + assume {:print "$at(81,2185,2236)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + assume {:print "$at(81,2185,2236)"} true; + assume {:print "$track_abort(70,1):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:66:9+51 + assume {:print "$at(81,2185,2236)"} true; + + // $t3 := signer::address_of($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:67:54+26 + assume {:print "$at(81,2291,2317)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,2291,2317)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := move_from($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:67:19+9 + if (!$ResourceExists($1_oracle_GenesisSignerCapability_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t4 := $ResourceValue($1_oracle_GenesisSignerCapability_$memory, $t3); + $1_oracle_GenesisSignerCapability_$memory := $ResourceRemove($1_oracle_GenesisSignerCapability_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(81,2256,2265)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := unpack oracle::GenesisSignerCapability($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:68:13+31 + assume {:print "$at(81,2332,2363)"} true; + $t5 := $t4->$cap; + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:69:9+3 + assume {:print "$at(81,2379,2382)"} true; + assume {:print "$track_return(70,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:70:5+1 + assume {:print "$at(81,2387,2388)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:70:5+1 + assume {:print "$at(81,2387,2388)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:70:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:70:5+1 + assume {:print "$at(81,2387,2388)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::get_oracle_counter [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:83:5+265 +procedure {:timeLimit 80} $1_oracle_get_oracle_counter$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $Mutation ($1_oracle_OracleInfo'#0_#1'); + var $t3: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: oracle::OracleInfo<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:83:5+1 + assume {:print "$at(81,2882,2883)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_#1''($rsc)))); + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:84:72+42 + assume {:print "$at(81,3069,3111)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3069,3111)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := borrow_global>($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:84:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(81,3024,3041)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field>.counter($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:85:9+19 + assume {:print "$at(81,3122,3141)"} true; + $t3 := $Dereference($t2)->$counter; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:85:9+19 + assume {:print "$track_return(70,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:86:5+1 + assume {:print "$at(81,3146,3147)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:86:5+1 + assume {:print "$at(81,3146,3147)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:86:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:86:5+1 + assume {:print "$at(81,3146,3147)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun oracle::get_oracle_info, oracle_price::PriceOracleInfo> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:88:5+262 +procedure {:inline 1} $1_oracle_get_oracle_info'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'() returns ($ret0: $1_oracle_price_PriceOracleInfo) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $Mutation ($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'); + var $t3: $1_oracle_price_PriceOracleInfo; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:72+42 + assume {:print "$at(81,3338,3380)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3338,3380)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := borrow_global>($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(81,3293,3310)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field>.info($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:10+17 + assume {:print "$at(81,3392,3409)"} true; + $t3 := $Dereference($t2)->$info; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:9+18 + assume {:print "$track_return(70,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun oracle::get_oracle_info<#0, oracle_price::PriceOracleInfo> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:88:5+262 +procedure {:inline 1} $1_oracle_get_oracle_info'#0_$1_oracle_price_PriceOracleInfo'() returns ($ret0: $1_oracle_price_PriceOracleInfo) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $Mutation ($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'); + var $t3: $1_oracle_price_PriceOracleInfo; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:72+42 + assume {:print "$at(81,3338,3380)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3338,3380)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := borrow_global>($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(81,3293,3310)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field>.info($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:10+17 + assume {:print "$at(81,3392,3409)"} true; + $t3 := $Dereference($t2)->$info; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:9+18 + assume {:print "$track_return(70,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun oracle::get_oracle_info [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:88:5+262 +procedure {:timeLimit 80} $1_oracle_get_oracle_info$verify() returns ($ret0: #1) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $Mutation ($1_oracle_OracleInfo'#0_#1'); + var $t3: #1; + var $temp_0'#1': #1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: oracle::OracleInfo<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:88:5+1 + assume {:print "$at(81,3153,3154)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_#1''($rsc)))); + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:72+42 + assume {:print "$at(81,3338,3380)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3338,3380)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := borrow_global>($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:89:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(81,3293,3310)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(70,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field>.info($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:10+17 + assume {:print "$at(81,3392,3409)"} true; + $t3 := $Dereference($t2)->$info; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:90:9+18 + assume {:print "$track_return(70,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:91:5+1 + assume {:print "$at(81,3414,3415)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun oracle::init_data_source, oracle_price::PriceOracleInfo, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1163 +procedure {:inline 1} $1_oracle_init_data_source'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo_u128'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'); + var $t12: int; + var $t13: int; + var $t14: $1_oracle_DataRecord'u128'; + var $t15: $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''; + var $t22: $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'; + var $t23: $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $temp_0'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'': $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$at(81,3467,3468)"} true; + assume {:print "$track_local(70,4,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$track_local(70,4,1):", $t1} $t1 == $t1; + + // $t5 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:47+42 + assume {:print "$at(81,3713,3755)"} true; + call $t5 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3713,3755)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:13+6 + $t7 := $ResourceExists($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L0: + + // $t8 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:34+28 + assume {:print "$at(81,3791,3819)"} true; + $t8 := 101; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_state($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:13+50 + call $t9 := $1_error_invalid_state($t8); + if ($abort_flag) { + assume {:print "$at(81,3770,3820)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + assume {:print "$track_abort(70,4):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + $t6 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; +L2: + + // $t10 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; + call $t10 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3903,3945)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t11 := borrow_global>($t10) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(81,3858,3875)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[oracle_info]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:13+11 + $temp_0'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'' := $Dereference($t11); + assume {:print "$track_local(70,4,3):", $temp_0'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''} $temp_0'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'' == $temp_0'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:19+29 + assume {:print "$at(81,3966,3995)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,3966,3995)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:13+3 + assume {:print "$track_local(70,4,2):", $t12} $t12 == $t12; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:106:26+1 + assume {:print "$at(81,4117,4118)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := pack oracle::DataRecord<#2>($t13, $t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:105:21+130 + assume {:print "$at(81,4071,4201)"} true; + $t14 := $1_oracle_DataRecord'u128'($t13, $t1, $t12); + + // $t15 := pack oracle::OracleFeed<#0, #2>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:25+190 + assume {:print "$at(81,4021,4211)"} true; + $t15 := $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'($t14); + + // move_to>($t15, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:9+7 + if ($ResourceExists($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory := $ResourceUpdate($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0->$addr, $t15); + } + if ($abort_flag) { + assume {:print "$at(81,4005,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t16 := signer::address_of($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:27+26 + assume {:print "$at(81,4240,4266)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,4240,4266)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[sender_addr]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:13+11 + assume {:print "$track_local(70,4,4):", $t16} $t16 == $t16; + + // $t17 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:113:17+19 + assume {:print "$at(81,4338,4357)"} true; + $t17 := $Dereference($t11)->$counter; + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:114:22+1 + assume {:print "$at(81,4380,4381)"} true; + $t18 := 1; + assume $IsValid'u64'($t18); + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle>($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:115:28+69 + assume {:print "$at(81,4410,4479)"} true; + call $t21 := $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''($t0); + if ($abort_flag) { + assume {:print "$at(81,4410,4479)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t22 := pack oracle::DataSource<#0, #2>($t17, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:25+198 + assume {:print "$at(81,4292,4490)"} true; + $t22 := $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'($t17, $t18, $t21); + + // move_to>($t22, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:9+7 + if ($ResourceExists($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory := $ResourceUpdate($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(81,4276,4283)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t23 := pack oracle::UpdateCapability<#0>($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:25+50 + assume {:print "$at(81,4517,4567)"} true; + $t23 := $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''($t16); + + // move_to>($t23, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:9+7 + if ($ResourceExists($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory := $ResourceUpdate($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $t0->$addr, $t23); + } + if ($abort_flag) { + assume {:print "$at(81,4501,4508)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t24 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:31+19 + assume {:print "$at(81,4600,4619)"} true; + $t24 := $Dereference($t11)->$counter; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:53+1 + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := +($t24, $t25) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:51+1 + call $t26 := $AddU64($t24, $t25); + if ($abort_flag) { + assume {:print "$at(81,4620,4621)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t27 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+19 + $t27 := $ChildMutation($t11, 0, $Dereference($t11)->$counter); + + // write_ref($t27, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t11).counter (u64)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''_counter($Dereference($t11), $Dereference($t27))); + + // write_back[oracle::OracleInfo<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory := $ResourceUpdate($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::init_data_source<#0, oracle_price::PriceOracleInfo, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1163 +procedure {:inline 1} $1_oracle_init_data_source'#0_$1_oracle_price_PriceOracleInfo_u128'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'); + var $t12: int; + var $t13: int; + var $t14: $1_oracle_DataRecord'u128'; + var $t15: $1_oracle_OracleFeed'#0_u128'; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''; + var $t22: $1_oracle_DataSource'#0_u128'; + var $t23: $1_oracle_UpdateCapability'#0'; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t0: $signer; + var $t1: int; + var $temp_0'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'': $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$at(81,3467,3468)"} true; + assume {:print "$track_local(70,4,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$track_local(70,4,1):", $t1} $t1 == $t1; + + // $t5 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:47+42 + assume {:print "$at(81,3713,3755)"} true; + call $t5 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3713,3755)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:13+6 + $t7 := $ResourceExists($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L0: + + // $t8 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:34+28 + assume {:print "$at(81,3791,3819)"} true; + $t8 := 101; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_state($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:13+50 + call $t9 := $1_error_invalid_state($t8); + if ($abort_flag) { + assume {:print "$at(81,3770,3820)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + assume {:print "$track_abort(70,4):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + $t6 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; +L2: + + // $t10 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; + call $t10 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3903,3945)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t11 := borrow_global>($t10) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(81,3858,3875)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[oracle_info]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:13+11 + $temp_0'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'' := $Dereference($t11); + assume {:print "$track_local(70,4,3):", $temp_0'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''} $temp_0'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'' == $temp_0'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:19+29 + assume {:print "$at(81,3966,3995)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,3966,3995)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:13+3 + assume {:print "$track_local(70,4,2):", $t12} $t12 == $t12; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:106:26+1 + assume {:print "$at(81,4117,4118)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := pack oracle::DataRecord<#2>($t13, $t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:105:21+130 + assume {:print "$at(81,4071,4201)"} true; + $t14 := $1_oracle_DataRecord'u128'($t13, $t1, $t12); + + // $t15 := pack oracle::OracleFeed<#0, #2>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:25+190 + assume {:print "$at(81,4021,4211)"} true; + $t15 := $1_oracle_OracleFeed'#0_u128'($t14); + + // move_to>($t15, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:9+7 + if ($ResourceExists($1_oracle_OracleFeed'#0_u128'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleFeed'#0_u128'_$memory := $ResourceUpdate($1_oracle_OracleFeed'#0_u128'_$memory, $t0->$addr, $t15); + } + if ($abort_flag) { + assume {:print "$at(81,4005,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t16 := signer::address_of($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:27+26 + assume {:print "$at(81,4240,4266)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,4240,4266)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[sender_addr]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:13+11 + assume {:print "$track_local(70,4,4):", $t16} $t16 == $t16; + + // $t17 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:113:17+19 + assume {:print "$at(81,4338,4357)"} true; + $t17 := $Dereference($t11)->$counter; + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:114:22+1 + assume {:print "$at(81,4380,4381)"} true; + $t18 := 1; + assume $IsValid'u64'($t18); + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle>($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:115:28+69 + assume {:print "$at(81,4410,4479)"} true; + call $t21 := $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'#0_u128''($t0); + if ($abort_flag) { + assume {:print "$at(81,4410,4479)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t22 := pack oracle::DataSource<#0, #2>($t17, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:25+198 + assume {:print "$at(81,4292,4490)"} true; + $t22 := $1_oracle_DataSource'#0_u128'($t17, $t18, $t21); + + // move_to>($t22, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:9+7 + if ($ResourceExists($1_oracle_DataSource'#0_u128'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_DataSource'#0_u128'_$memory := $ResourceUpdate($1_oracle_DataSource'#0_u128'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(81,4276,4283)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t23 := pack oracle::UpdateCapability<#0>($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:25+50 + assume {:print "$at(81,4517,4567)"} true; + $t23 := $1_oracle_UpdateCapability'#0'($t16); + + // move_to>($t23, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:9+7 + if ($ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_UpdateCapability'#0'_$memory := $ResourceUpdate($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr, $t23); + } + if ($abort_flag) { + assume {:print "$at(81,4501,4508)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t24 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:31+19 + assume {:print "$at(81,4600,4619)"} true; + $t24 := $Dereference($t11)->$counter; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:53+1 + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := +($t24, $t25) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:51+1 + call $t26 := $AddU64($t24, $t25); + if ($abort_flag) { + assume {:print "$at(81,4620,4621)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t27 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+19 + $t27 := $ChildMutation($t11, 0, $Dereference($t11)->$counter); + + // write_ref($t27, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t11).counter (u64)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''_counter($Dereference($t11), $Dereference($t27))); + + // write_back[oracle::OracleInfo<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory := $ResourceUpdate($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::init_data_source [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1163 +procedure {:timeLimit 80} $1_oracle_init_data_source$verify(_$t0: $signer, _$t1: #2) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation ($1_oracle_OracleInfo'#0_#1'); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_OracleInfo'#0_#1'); + var $t12: int; + var $t13: int; + var $t14: $1_oracle_DataRecord'#2'; + var $t15: $1_oracle_OracleFeed'#0_#2'; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $1_account_Account; + var $t21: $1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#2''; + var $t22: $1_oracle_DataSource'#0_#2'; + var $t23: $1_oracle_UpdateCapability'#0'; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $Mutation (int); + var $t0: $signer; + var $t1: #2; + var $temp_0'#2': #2; + var $temp_0'$1_oracle_OracleInfo'#0_#1'': $1_oracle_OracleInfo'#0_#1'; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$at(81,3467,3468)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume $IsValid'#2'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::OracleInfo<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_#1''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, #2>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_#2'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_#2'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_#2''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, #2>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#2'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#2'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#2''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1163 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$track_local(70,4,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:94:5+1 + assume {:print "$track_local(70,4,1):", $t1} $t1 == $t1; + + // $t5 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:47+42 + assume {:print "$at(81,3713,3755)"} true; + call $t5 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3713,3755)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := exists>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:99:13+6 + $t7 := $ResourceExists($1_oracle_OracleInfo'#0_#1'_$memory, $t5); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 +L0: + + // $t8 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:34+28 + assume {:print "$at(81,3791,3819)"} true; + $t8 := 101; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_state($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:100:13+50 + call $t9 := $1_error_invalid_state($t8); + if ($abort_flag) { + assume {:print "$at(81,3770,3820)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + assume {:print "$at(81,3658,3830)"} true; + assume {:print "$track_abort(70,4):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + $t6 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:98:9+172 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; +L2: + + // $t10 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:72+42 + assume {:print "$at(81,3903,3945)"} true; + call $t10 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(81,3903,3945)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t11 := borrow_global>($t10) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:27+17 + if (!$ResourceExists($1_oracle_OracleInfo'#0_#1'_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(81,3858,3875)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[oracle_info]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:102:13+11 + $temp_0'$1_oracle_OracleInfo'#0_#1'' := $Dereference($t11); + assume {:print "$track_local(70,4,3):", $temp_0'$1_oracle_OracleInfo'#0_#1''} $temp_0'$1_oracle_OracleInfo'#0_#1'' == $temp_0'$1_oracle_OracleInfo'#0_#1''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:19+29 + assume {:print "$at(81,3966,3995)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,3966,3995)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:103:13+3 + assume {:print "$track_local(70,4,2):", $t12} $t12 == $t12; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:106:26+1 + assume {:print "$at(81,4117,4118)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := pack oracle::DataRecord<#2>($t13, $t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:105:21+130 + assume {:print "$at(81,4071,4201)"} true; + $t14 := $1_oracle_DataRecord'#2'($t13, $t1, $t12); + + // $t15 := pack oracle::OracleFeed<#0, #2>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:25+190 + assume {:print "$at(81,4021,4211)"} true; + $t15 := $1_oracle_OracleFeed'#0_#2'($t14); + + // move_to>($t15, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:104:9+7 + if ($ResourceExists($1_oracle_OracleFeed'#0_#2'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleFeed'#0_#2'_$memory := $ResourceUpdate($1_oracle_OracleFeed'#0_#2'_$memory, $t0->$addr, $t15); + } + if ($abort_flag) { + assume {:print "$at(81,4005,4012)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t16 := signer::address_of($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:27+26 + assume {:print "$at(81,4240,4266)"} true; + call $t16 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,4240,4266)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[sender_addr]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:111:13+11 + assume {:print "$track_local(70,4,4):", $t16} $t16 == $t16; + + // $t17 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:113:17+19 + assume {:print "$at(81,4338,4357)"} true; + $t17 := $Dereference($t11)->$counter; + + // $t18 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:114:22+1 + assume {:print "$at(81,4380,4381)"} true; + $t18 := 1; + assume $IsValid'u64'($t18); + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t20 == $ResourceValue($1_account_Account_$memory, $t19)); + + // $t21 := account::new_event_handle>($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:115:28+69 + assume {:print "$at(81,4410,4479)"} true; + call $t21 := $1_account_new_event_handle'$1_oracle_OracleUpdateEvent'#0_#2''($t0); + if ($abort_flag) { + assume {:print "$at(81,4410,4479)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t22 := pack oracle::DataSource<#0, #2>($t17, $t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:25+198 + assume {:print "$at(81,4292,4490)"} true; + $t22 := $1_oracle_DataSource'#0_#2'($t17, $t18, $t21); + + // move_to>($t22, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:112:9+7 + if ($ResourceExists($1_oracle_DataSource'#0_#2'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_DataSource'#0_#2'_$memory := $ResourceUpdate($1_oracle_DataSource'#0_#2'_$memory, $t0->$addr, $t22); + } + if ($abort_flag) { + assume {:print "$at(81,4276,4283)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t23 := pack oracle::UpdateCapability<#0>($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:25+50 + assume {:print "$at(81,4517,4567)"} true; + $t23 := $1_oracle_UpdateCapability'#0'($t16); + + // move_to>($t23, $t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:117:9+7 + if ($ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_UpdateCapability'#0'_$memory := $ResourceUpdate($1_oracle_UpdateCapability'#0'_$memory, $t0->$addr, $t23); + } + if ($abort_flag) { + assume {:print "$at(81,4501,4508)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t24 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:31+19 + assume {:print "$at(81,4600,4619)"} true; + $t24 := $Dereference($t11)->$counter; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:53+1 + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := +($t24, $t25) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:51+1 + call $t26 := $AddU64($t24, $t25); + if ($abort_flag) { + assume {:print "$at(81,4620,4621)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,4):", $t6} $t6 == $t6; + goto L4; + } + + // $t27 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+19 + $t27 := $ChildMutation($t11, 0, $Dereference($t11)->$counter); + + // write_ref($t27, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t27 := $UpdateMutation($t27, $t26); + + // write_back[Reference($t11).counter (u64)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_OracleInfo'#0_#1''_counter($Dereference($t11), $Dereference($t27))); + + // write_back[oracle::OracleInfo<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:118:9+45 + $1_oracle_OracleInfo'#0_#1'_$memory := $ResourceUpdate($1_oracle_OracleInfo'#0_#1'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:119:5+1 + assume {:print "$at(81,4629,4630)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::is_data_source_initialized<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+173 +procedure {:inline 1} $1_oracle_is_data_source_initialized'#0_u128'(_$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[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+1 + assume {:print "$at(81,4707,4708)"} true; + assume {:print "$track_local(70,6,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:123:9+6 + assume {:print "$at(81,4830,4836)"} true; + $t1 := $ResourceExists($1_oracle_DataSource'#0_u128'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:123:9+44 + assume {:print "$track_return(70,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:124:5+1 + assume {:print "$at(81,4879,4880)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:124:5+1 + assume {:print "$at(81,4879,4880)"} true; + $ret0 := $t1; + return; + +} + +// fun oracle::is_data_source_initialized [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+173 +procedure {:timeLimit 80} $1_oracle_is_data_source_initialized$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+1 + assume {:print "$at(81,4707,4708)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::DataSource<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_#1''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:122:5+1 + assume {:print "$track_local(70,6,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:123:9+6 + assume {:print "$at(81,4830,4836)"} true; + $t1 := $ResourceExists($1_oracle_DataSource'#0_#1'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:123:9+44 + assume {:print "$track_return(70,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:124:5+1 + assume {:print "$at(81,4879,4880)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:124:5+1 + assume {:print "$at(81,4879,4880)"} true; + $ret0 := $t1; + return; + +} + +// fun oracle::read_record [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+261 +procedure {:inline 1} $1_oracle_read_record'$1_oracle_stc_usd_STCUSD_u128'(_$t0: int) returns ($ret0: $1_oracle_DataRecord'u128') +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume {:print "$at(81,6771,6772)"} true; + assume {:print "$track_local(70,8,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:167:27+13 + assume {:print "$at(81,6945,6958)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6945,6958)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:10+19 + assume {:print "$at(81,7007,7026)"} true; + $t3 := $t1->$record; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:9+20 + assume {:print "$track_return(70,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read_record<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+261 +procedure {:inline 1} $1_oracle_read_record'#0_u128'(_$t0: int) returns ($ret0: $1_oracle_DataRecord'u128') +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'#0_u128'; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume {:print "$at(81,6771,6772)"} true; + assume {:print "$track_local(70,8,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:167:27+13 + assume {:print "$at(81,6945,6958)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_u128'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6945,6958)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:10+19 + assume {:print "$at(81,7007,7026)"} true; + $t3 := $t1->$record; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:9+20 + assume {:print "$track_return(70,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read_record<#0, #1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+261 +procedure {:inline 1} $1_oracle_read_record'#0_#1'(_$t0: int) returns ($ret0: $1_oracle_DataRecord'#1') +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'#0_#1'; + var $t2: int; + var $t3: $1_oracle_DataRecord'#1'; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'#1'': $1_oracle_DataRecord'#1'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume {:print "$at(81,6771,6772)"} true; + assume {:print "$track_local(70,8,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:167:27+13 + assume {:print "$at(81,6945,6958)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6945,6958)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:10+19 + assume {:print "$at(81,7007,7026)"} true; + $t3 := $t1->$record; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:9+20 + assume {:print "$track_return(70,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read_record [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+261 +procedure {:timeLimit 80} $1_oracle_read_record$verify(_$t0: int) returns ($ret0: $1_oracle_DataRecord'#1') +{ + // declare local variables + var $t1: $1_oracle_OracleFeed'#0_#1'; + var $t2: int; + var $t3: $1_oracle_DataRecord'#1'; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'#1'': $1_oracle_DataRecord'#1'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume {:print "$at(81,6771,6772)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#1''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:164:5+1 + assume {:print "$track_local(70,8,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:167:27+13 + assume {:print "$at(81,6945,6958)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_#1'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(81,6945,6958)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(70,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.record($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:10+19 + assume {:print "$at(81,7007,7026)"} true; + $t3 := $t1->$record; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:168:9+20 + assume {:print "$track_return(70,8,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:169:5+1 + assume {:print "$at(81,7031,7032)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle::read_records [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+523 +procedure {:inline 1} $1_oracle_read_records'$1_oracle_stc_usd_STCUSD_u128'(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t4: Vec ($1_oracle_DataRecord'u128'); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: $1_oracle_DataRecord'u128'; + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec ($1_oracle_DataRecord'u128')); + var $t14: Vec ($1_oracle_DataRecord'u128'); + var $t0: Vec (int); + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'u64': int; + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+1 + assume {:print "$at(81,7093,7094)"} true; + assume {:print "$track_local(70,9,0):", $t0} $t0 == $t0; + + // $t5 := vector::length
($t0) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:19+24 + assume {:print "$at(81,7278,7302)"} true; + call $t5 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(81,7278,7302)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[len]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:13+3 + assume {:print "$track_local(70,9,2):", $t5} $t5 == $t5; + + // $t4 := vector::empty>() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:23+15 + assume {:print "$at(81,7326,7341)"} true; + call $t4 := $1_vector_empty'$1_oracle_DataRecord'u128''(); + if ($abort_flag) { + assume {:print "$at(81,7326,7341)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:13+7 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:17+1 + assume {:print "$at(81,7359,7360)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[i]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:13+1 + assume {:print "$track_local(70,9,1):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t1); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($t4); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'address'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'$1_oracle_DataRecord'u128''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($Dereference($t13)); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$info(): enter loop, variable(s) i, results havocked and reassigned"} true; + assume {:print "$track_local(70,9,1):", $t1} $t1 == $t1; + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:18+1 + call $t8 := $Lt($t1, $t5); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:40+8 + assume {:print "$at(81,7427,7435)"} true; +L2: + + // $t9 := vector::borrow
($t0, $t1) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:25+27 + assume {:print "$at(81,7412,7439)"} true; + call $t9 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(81,7412,7439)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // $t10 := oracle::read_record<#0, #1>($t9) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:26+40 + assume {:print "$at(81,7466,7506)"} true; + call $t10 := $1_oracle_read_record'$1_oracle_stc_usd_STCUSD_u128'($t9); + if ($abort_flag) { + assume {:print "$at(81,7466,7506)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[record]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:17+6 + assume {:print "$track_local(70,9,3):", $t10} $t10 == $t10; + + // $t13 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:31+12 + assume {:print "$at(81,7538,7550)"} true; + $t13 := $Mutation($Local(4), EmptyVec(), $t4); + + // vector::push_back>($t13, $t10) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + call $t13 := $1_vector_push_back'$1_oracle_DataRecord'u128''($t13, $t10); + if ($abort_flag) { + assume {:print "$at(81,7520,7559)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // write_back[LocalRoot($t4)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + $t4 := $Dereference($t13); + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:21+1 + assume {:print "$at(81,7581,7582)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(81,7579,7580)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:13+1 + assume {:print "$track_local(70,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; +L0: + + // $t14 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + $t14 := $t4; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$track_return(70,9,0):", $t14} $t14 == $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; +L5: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $ret0 := $t14; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 +L6: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::read_records<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+523 +procedure {:inline 1} $1_oracle_read_records'#0_u128'(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_oracle_DataRecord'u128'; + var $t4: Vec ($1_oracle_DataRecord'u128'); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: $1_oracle_DataRecord'u128'; + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec ($1_oracle_DataRecord'u128')); + var $t14: Vec ($1_oracle_DataRecord'u128'); + var $t0: Vec (int); + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'u64': int; + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ds_addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+1 + assume {:print "$at(81,7093,7094)"} true; + assume {:print "$track_local(70,9,0):", $t0} $t0 == $t0; + + // $t5 := vector::length
($t0) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:19+24 + assume {:print "$at(81,7278,7302)"} true; + call $t5 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(81,7278,7302)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[len]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:13+3 + assume {:print "$track_local(70,9,2):", $t5} $t5 == $t5; + + // $t4 := vector::empty>() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:23+15 + assume {:print "$at(81,7326,7341)"} true; + call $t4 := $1_vector_empty'$1_oracle_DataRecord'u128''(); + if ($abort_flag) { + assume {:print "$at(81,7326,7341)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:13+7 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:17+1 + assume {:print "$at(81,7359,7360)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[i]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:13+1 + assume {:print "$track_local(70,9,1):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t1); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($t4); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'address'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'$1_oracle_DataRecord'u128''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($Dereference($t13)); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$info(): enter loop, variable(s) i, results havocked and reassigned"} true; + assume {:print "$track_local(70,9,1):", $t1} $t1 == $t1; + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:18+1 + call $t8 := $Lt($t1, $t5); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:40+8 + assume {:print "$at(81,7427,7435)"} true; +L2: + + // $t9 := vector::borrow
($t0, $t1) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:25+27 + assume {:print "$at(81,7412,7439)"} true; + call $t9 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(81,7412,7439)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // $t10 := oracle::read_record<#0, #1>($t9) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:26+40 + assume {:print "$at(81,7466,7506)"} true; + call $t10 := $1_oracle_read_record'#0_u128'($t9); + if ($abort_flag) { + assume {:print "$at(81,7466,7506)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[record]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:17+6 + assume {:print "$track_local(70,9,3):", $t10} $t10 == $t10; + + // $t13 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:31+12 + assume {:print "$at(81,7538,7550)"} true; + $t13 := $Mutation($Local(4), EmptyVec(), $t4); + + // vector::push_back>($t13, $t10) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + call $t13 := $1_vector_push_back'$1_oracle_DataRecord'u128''($t13, $t10); + if ($abort_flag) { + assume {:print "$at(81,7520,7559)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // write_back[LocalRoot($t4)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + $t4 := $Dereference($t13); + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:21+1 + assume {:print "$at(81,7581,7582)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(81,7579,7580)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:13+1 + assume {:print "$track_local(70,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; +L0: + + // $t14 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + $t14 := $t4; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$track_return(70,9,0):", $t14} $t14 == $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; +L5: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $ret0 := $t14; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 +L6: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::read_records [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+523 +procedure {:timeLimit 80} $1_oracle_read_records$verify(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'#1')) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_oracle_DataRecord'#1'; + var $t4: Vec ($1_oracle_DataRecord'#1'); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: $1_oracle_DataRecord'#1'; + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec ($1_oracle_DataRecord'#1')); + var $t14: Vec ($1_oracle_DataRecord'#1'); + var $t0: Vec (int); + var $temp_0'$1_oracle_DataRecord'#1'': $1_oracle_DataRecord'#1'; + var $temp_0'u64': int; + var $temp_0'vec'$1_oracle_DataRecord'#1''': Vec ($1_oracle_DataRecord'#1'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+1 + assume {:print "$at(81,7093,7094)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#1''($rsc)))); + + // trace_local[ds_addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:172:5+1 + assume {:print "$track_local(70,9,0):", $t0} $t0 == $t0; + + // $t5 := vector::length
($t0) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:19+24 + assume {:print "$at(81,7278,7302)"} true; + call $t5 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(81,7278,7302)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[len]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:175:13+3 + assume {:print "$track_local(70,9,2):", $t5} $t5 == $t5; + + // $t4 := vector::empty>() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:23+15 + assume {:print "$at(81,7326,7341)"} true; + call $t4 := $1_vector_empty'$1_oracle_DataRecord'#1''(); + if ($abort_flag) { + assume {:print "$at(81,7326,7341)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:176:13+7 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:17+1 + assume {:print "$at(81,7359,7360)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[i]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:177:13+1 + assume {:print "$track_local(70,9,1):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$at(81,7377,7378)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t1); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'#1'''($t4); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'address'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'$1_oracle_DataRecord'#1''($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'#1'''($Dereference($t13)); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$info(): enter loop, variable(s) i, results havocked and reassigned"} true; + assume {:print "$track_local(70,9,1):", $t1} $t1 == $t1; + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:18+1 + call $t8 := $Lt($t1, $t5); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:178:9+223 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:40+8 + assume {:print "$at(81,7427,7435)"} true; +L2: + + // $t9 := vector::borrow
($t0, $t1) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:179:25+27 + assume {:print "$at(81,7412,7439)"} true; + call $t9 := $1_vector_borrow'address'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(81,7412,7439)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // $t10 := oracle::read_record<#0, #1>($t9) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:26+40 + assume {:print "$at(81,7466,7506)"} true; + call $t10 := $1_oracle_read_record'#0_#1'($t9); + if ($abort_flag) { + assume {:print "$at(81,7466,7506)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[record]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:180:17+6 + assume {:print "$track_local(70,9,3):", $t10} $t10 == $t10; + + // $t13 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:31+12 + assume {:print "$at(81,7538,7550)"} true; + $t13 := $Mutation($Local(4), EmptyVec(), $t4); + + // vector::push_back>($t13, $t10) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + call $t13 := $1_vector_push_back'$1_oracle_DataRecord'#1''($t13, $t10); + if ($abort_flag) { + assume {:print "$at(81,7520,7559)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // write_back[LocalRoot($t4)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + $t4 := $Dereference($t13); + + // trace_local[results]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:181:13+39 + assume {:print "$track_local(70,9,4):", $t4} $t4 == $t4; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:21+1 + assume {:print "$at(81,7581,7582)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(81,7579,7580)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(70,9):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:13+1 + assume {:print "$track_local(70,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:182:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; +L0: + + // $t14 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + $t14 := $t4; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$track_return(70,9,0):", $t14} $t14 == $t14; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:184:9+7 + assume {:print "$at(81,7603,7610)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; +L5: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $ret0 := $t14; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 +L6: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:185:5+1 + assume {:print "$at(81,7615,7616)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun oracle::register_oracle, oracle_price::PriceOracleInfo> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+339 +procedure {:inline 1} $1_oracle_register_oracle'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'(_$t0: $signer, _$t1: $1_oracle_price_PriceOracleInfo) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'; + var $t4: int; + var $t0: $signer; + var $t1: $1_oracle_price_PriceOracleInfo; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$at(81,2440,2441)"} true; + assume {:print "$track_local(70,10,0):", $t0} $t0 == $t0; + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$track_local(70,10,1):", $t1} $t1 == $t1; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:77:22+1 + assume {:print "$at(81,2741,2742)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := pack oracle::OracleInfo<#0, #1>($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:25+79 + assume {:print "$at(81,2692,2771)"} true; + $t3 := $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'($t2, $t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:9+7 + if ($ResourceExists($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory := $ResourceUpdate($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(81,2676,2683)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::register_oracle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+339 +procedure {:inline 1} $1_oracle_register_oracle'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'(_$t0: $signer, _$t1: $1_oracle_price_PriceOracleInfo) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'; + var $t4: int; + var $t0: $signer; + var $t1: $1_oracle_price_PriceOracleInfo; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$at(81,2440,2441)"} true; + assume {:print "$track_local(70,10,0):", $t0} $t0 == $t0; + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$track_local(70,10,1):", $t1} $t1 == $t1; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:77:22+1 + assume {:print "$at(81,2741,2742)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := pack oracle::OracleInfo<#0, #1>($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:25+79 + assume {:print "$at(81,2692,2771)"} true; + $t3 := $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'($t2, $t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:9+7 + if ($ResourceExists($1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory := $ResourceUpdate($1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(81,2676,2683)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::register_oracle<#0, oracle_price::PriceOracleInfo> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+339 +procedure {:inline 1} $1_oracle_register_oracle'#0_$1_oracle_price_PriceOracleInfo'(_$t0: $signer, _$t1: $1_oracle_price_PriceOracleInfo) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'; + var $t4: int; + var $t0: $signer; + var $t1: $1_oracle_price_PriceOracleInfo; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$at(81,2440,2441)"} true; + assume {:print "$track_local(70,10,0):", $t0} $t0 == $t0; + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$track_local(70,10,1):", $t1} $t1 == $t1; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:77:22+1 + assume {:print "$at(81,2741,2742)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := pack oracle::OracleInfo<#0, #1>($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:25+79 + assume {:print "$at(81,2692,2771)"} true; + $t3 := $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'($t2, $t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:9+7 + if ($ResourceExists($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory := $ResourceUpdate($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(81,2676,2683)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::register_oracle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+339 +procedure {:timeLimit 80} $1_oracle_register_oracle$verify(_$t0: $signer, _$t1: #1) returns () +{ + // declare local variables + var $t2: int; + var $t3: $1_oracle_OracleInfo'#0_#1'; + var $t4: int; + var $t0: $signer; + var $t1: #1; + var $temp_0'#1': #1; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$at(81,2440,2441)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume $IsValid'#1'($t1); + + // assume forall $rsc: oracle::OracleInfo<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_#1''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$track_local(70,10,0):", $t0} $t0 == $t0; + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:73:5+1 + assume {:print "$track_local(70,10,1):", $t1} $t1 == $t1; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:77:22+1 + assume {:print "$at(81,2741,2742)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := pack oracle::OracleInfo<#0, #1>($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:25+79 + assume {:print "$at(81,2692,2771)"} true; + $t3 := $1_oracle_OracleInfo'#0_#1'($t2, $t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:76:9+7 + if ($ResourceExists($1_oracle_OracleInfo'#0_#1'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_oracle_OracleInfo'#0_#1'_$memory := $ResourceUpdate($1_oracle_OracleInfo'#0_#1'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(81,2676,2683)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(70,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:80:5+1 + assume {:print "$at(81,2778,2779)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun oracle::remove_update_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:188:5+371 +procedure {:timeLimit 80} $1_oracle_remove_update_capability$verify(_$t0: $signer) returns ($ret0: $1_oracle_UpdateCapability'#0') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_oracle_UpdateCapability'#0'; + var $t0: $signer; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:188:5+1 + assume {:print "$at(81,7675,7676)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:188:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:188:5+1 + assume {:print "$track_local(70,11,0):", $t0} $t0 == $t0; + + // $t2 := signer::address_of($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:191:23+26 + assume {:print "$at(81,7845,7871)"} true; + call $t2 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(81,7845,7871)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,11):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[account]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:191:13+7 + assume {:print "$track_local(70,11,1):", $t2} $t2 == $t2; + + // $t4 := exists>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:17+6 + assume {:print "$at(81,7889,7895)"} true; + $t4 := $ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 + assume {:print "$at(81,7881,7985)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:87+24 +L0: + + // $t5 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:87+24 + assume {:print "$at(81,7959,7983)"} true; + $t5 := 102; + assume $IsValid'u64'($t5); + + // $t6 := error::resource_exhausted($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:61+51 + call $t6 := $1_error_resource_exhausted($t5); + if ($abort_flag) { + assume {:print "$at(81,7933,7984)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,11):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 + assume {:print "$at(81,7881,7985)"} true; + assume {:print "$track_abort(70,11):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:192:9+104 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:193:46+7 + assume {:print "$at(81,8032,8039)"} true; +L2: + + // $t7 := move_from>($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:193:9+9 + assume {:print "$at(81,7995,8004)"} true; + if (!$ResourceExists($1_oracle_UpdateCapability'#0'_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $t2); + $1_oracle_UpdateCapability'#0'_$memory := $ResourceRemove($1_oracle_UpdateCapability'#0'_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(81,7995,8004)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(70,11):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:193:9+45 + assume {:print "$track_return(70,11,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:194:5+1 + assume {:print "$at(81,8045,8046)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:194:5+1 + assume {:print "$at(81,8045,8046)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:194:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:194:5+1 + assume {:print "$at(81,8045,8046)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun oracle::unpack_record [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:206:5+165 +procedure {:inline 1} $1_oracle_unpack_record'u128'(_$t0: $1_oracle_DataRecord'u128') returns ($ret0: int, $ret1: int, $ret2: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t0: $1_oracle_DataRecord'u128'; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[record]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:206:5+1 + assume {:print "$at(81,8487,8488)"} true; + assume {:print "$track_local(70,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.version($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:10+14 + assume {:print "$at(81,8596,8610)"} true; + $t1 := $t0->$version; + + // $t2 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:27+13 + $t2 := $t0->$value; + + // $t3 := get_field>.updated_at($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:42+17 + $t3 := $t0->$updated_at; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,0):", $t1} $t1 == $t1; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,1):", $t2} $t2 == $t2; + + // trace_return[2]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,2):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:208:5+1 + assume {:print "$at(81,8651,8652)"} true; +L1: + + // return ($t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:208:5+1 + assume {:print "$at(81,8651,8652)"} true; + $ret0 := $t1; + $ret1 := $t2; + $ret2 := $t3; + return; + +} + +// fun oracle::unpack_record [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:206:5+165 +procedure {:timeLimit 80} $1_oracle_unpack_record$verify(_$t0: $1_oracle_DataRecord'#0') returns ($ret0: int, $ret1: #0, $ret2: int) +{ + // declare local variables + var $t1: int; + var $t2: #0; + var $t3: int; + var $t0: $1_oracle_DataRecord'#0'; + var $temp_0'#0': #0; + var $temp_0'$1_oracle_DataRecord'#0'': $1_oracle_DataRecord'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:206:5+1 + assume {:print "$at(81,8487,8488)"} true; + assume $IsValid'$1_oracle_DataRecord'#0''($t0); + + // trace_local[record]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:206:5+1 + assume {:print "$track_local(70,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.version($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:10+14 + assume {:print "$at(81,8596,8610)"} true; + $t1 := $t0->$version; + + // $t2 := get_field>.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:27+13 + $t2 := $t0->$value; + + // $t3 := get_field>.updated_at($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:42+17 + $t3 := $t0->$updated_at; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,0):", $t1} $t1 == $t1; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,1):", $t2} $t2 == $t2; + + // trace_return[2]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:207:9+51 + assume {:print "$track_return(70,12,2):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:208:5+1 + assume {:print "$at(81,8651,8652)"} true; +L1: + + // return ($t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:208:5+1 + assume {:print "$at(81,8651,8652)"} true; + $ret0 := $t1; + $ret1 := $t2; + $ret2 := $t3; + return; + +} + +// fun oracle::update_with_cap, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+908 +procedure {:inline 1} $1_oracle_update_with_cap'$1_easy_gas_STCToken'#0'_u128'(_$t0: $Mutation ($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''), _$t1: int) returns ($ret0: $Mutation ($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'); + var $t5: $Mutation ($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'); + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'); + var $t12: int; + var $t13: $Mutation ($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'); + var $t14: int; + var $t15: $Mutation ($1_oracle_DataRecord'u128'); + var $t16: $Mutation (int); + var $t17: $Mutation ($1_oracle_DataRecord'u128'); + var $t18: $Mutation (int); + var $t19: $Mutation ($1_oracle_DataRecord'u128'); + var $t20: $Mutation (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t25: $Mutation ($1_event_EventHandle'$1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128''); + var $t26: int; + var $t27: $1_oracle_DataRecord'u128'; + var $t28: $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'; + var $t0: $Mutation ($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''); + var $t1: int; + var $temp_0'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'': $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'; + var $temp_0'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'': $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'; + var $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''': $1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$at(81,5518,5519)"} true; + $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''} $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''' == $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$track_local(70,14,1):", $t1} $t1 == $t1; + + // $t6 := get_field>.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:23+11 + assume {:print "$at(81,5726,5737)"} true; + $t6 := $Dereference($t0)->$account; + + // trace_local[account]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:13+7 + assume {:print "$track_local(70,14,2):", $t6} $t6 == $t6; + + // $t7 := exists>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:17+6 + assume {:print "$at(81,5755,5761)"} true; + $t7 := $ResourceExists($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $t6); + + // if ($t7) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + if ($t7) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 +L0: + + // $t8 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 + assume {:print "$at(81,5827,5845)"} true; + $t8 := 103; + assume $IsValid'u64'($t8); + + // $t9 := error::resource_exhausted($t8) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:63+45 + call $t9 := $1_error_resource_exhausted($t8); + if ($abort_flag) { + assume {:print "$at(81,5801,5846)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + assume {:print "$track_abort(70,14):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + $t10 := $t9; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:69+7 + assume {:print "$at(81,5917,5924)"} true; +L2: + + // $t11 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:22+17 + assume {:print "$at(81,5870,5887)"} true; + if (!$ResourceExists($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,5870,5887)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[source]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:13+6 + $temp_0'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'' := $Dereference($t11); + assume {:print "$track_local(70,14,5):", $temp_0'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''} $temp_0'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'' == $temp_0'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:19+29 + assume {:print "$at(81,5945,5974)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,5945,5974)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:13+3 + assume {:print "$track_local(70,14,3):", $t12} $t12 == $t12; + + // $t13 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:27+17 + assume {:print "$at(81,6002,6019)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,6002,6019)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[oracle_feed]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:13+11 + $temp_0'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'' := $Dereference($t13); + assume {:print "$track_local(70,14,4):", $temp_0'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''} $temp_0'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'' == $temp_0'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''; + + // $t14 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:38+14 + assume {:print "$at(81,6096,6110)"} true; + $t14 := $Dereference($t11)->$counter; + + // $t15 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+18 + $t15 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t16 := borrow_field>.version($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+26 + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$version); + + // write_ref($t16, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t16 := $UpdateMutation($t16, $t14); + + // write_back[Reference($t15).version (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t15 := $UpdateMutation($t15, $Update'$1_oracle_DataRecord'u128''_version($Dereference($t15), $Dereference($t16))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''_record($Dereference($t13), $Dereference($t15))); + + // $t17 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+18 + assume {:print "$at(81,6120,6138)"} true; + $t17 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t18 := borrow_field>.value($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+24 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$value); + + // write_ref($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t18 := $UpdateMutation($t18, $t1); + + // write_back[Reference($t17).value (#1)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t17 := $UpdateMutation($t17, $Update'$1_oracle_DataRecord'u128''_value($Dereference($t17), $Dereference($t18))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''_record($Dereference($t13), $Dereference($t17))); + + // $t19 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+18 + assume {:print "$at(81,6162,6180)"} true; + $t19 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t20 := borrow_field>.updated_at($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+29 + $t20 := $ChildMutation($t19, 2, $Dereference($t19)->$updated_at); + + // write_ref($t20, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t20 := $UpdateMutation($t20, $t12); + + // write_back[Reference($t19).updated_at (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t19 := $UpdateMutation($t19, $Update'$1_oracle_DataRecord'u128''_updated_at($Dereference($t19), $Dereference($t20))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''_record($Dereference($t13), $Dereference($t19))); + + // $t21 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:26+14 + assume {:print "$at(81,6224,6238)"} true; + $t21 := $Dereference($t11)->$counter; + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:43+1 + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t21, $t22) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:41+1 + call $t23 := $AddU64($t21, $t22); + if ($abort_flag) { + assume {:print "$at(81,6239,6240)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // $t24 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+14 + $t24 := $ChildMutation($t11, 1, $Dereference($t11)->$counter); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t11).counter (u64)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''_counter($Dereference($t11), $Dereference($t24))); + + // $t25 := borrow_field>.update_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:27+25 + assume {:print "$at(81,6270,6295)"} true; + $t25 := $ChildMutation($t11, 2, $Dereference($t11)->$update_events); + + // $t26 := get_field>.id($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:152:24+9 + assume {:print "$at(81,6357,6366)"} true; + $t26 := $Dereference($t11)->$id; + + // $t27 := get_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + assume {:print "$at(81,6389,6408)"} true; + $t27 := $Dereference($t13)->$record; + + // write_back[oracle::OracleFeed<#0, #1>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + $1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory := $ResourceUpdate($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t28 := pack oracle::OracleUpdateEvent<#0, #1>($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:54+121 + assume {:print "$at(81,6297,6418)"} true; + $t28 := $1_oracle_OracleUpdateEvent'$1_easy_gas_STCToken'#0'_u128'($t26, $t27); + + // opaque begin: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // opaque end: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // write_back[Reference($t11).update_events (event::EventHandle>)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''_update_events($Dereference($t11), $Dereference($t25))); + + // write_back[oracle::DataSource<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory := $ResourceUpdate($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + assume {:print "$at(81,6419,6420)"} true; + $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''} $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''' == $temp_0'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 +L5: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun oracle::update_with_cap<#0, u128> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+908 +procedure {:inline 1} $1_oracle_update_with_cap'#0_u128'(_$t0: $Mutation ($1_oracle_UpdateCapability'#0'), _$t1: int) returns ($ret0: $Mutation ($1_oracle_UpdateCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_oracle_OracleFeed'#0_u128'); + var $t5: $Mutation ($1_oracle_DataSource'#0_u128'); + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_DataSource'#0_u128'); + var $t12: int; + var $t13: $Mutation ($1_oracle_OracleFeed'#0_u128'); + var $t14: int; + var $t15: $Mutation ($1_oracle_DataRecord'u128'); + var $t16: $Mutation (int); + var $t17: $Mutation ($1_oracle_DataRecord'u128'); + var $t18: $Mutation (int); + var $t19: $Mutation ($1_oracle_DataRecord'u128'); + var $t20: $Mutation (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t25: $Mutation ($1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_u128''); + var $t26: int; + var $t27: $1_oracle_DataRecord'u128'; + var $t28: $1_oracle_OracleUpdateEvent'#0_u128'; + var $t0: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t1: int; + var $temp_0'$1_oracle_DataSource'#0_u128'': $1_oracle_DataSource'#0_u128'; + var $temp_0'$1_oracle_OracleFeed'#0_u128'': $1_oracle_OracleFeed'#0_u128'; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$at(81,5518,5519)"} true; + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$track_local(70,14,1):", $t1} $t1 == $t1; + + // $t6 := get_field>.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:23+11 + assume {:print "$at(81,5726,5737)"} true; + $t6 := $Dereference($t0)->$account; + + // trace_local[account]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:13+7 + assume {:print "$track_local(70,14,2):", $t6} $t6 == $t6; + + // $t7 := exists>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:17+6 + assume {:print "$at(81,5755,5761)"} true; + $t7 := $ResourceExists($1_oracle_DataSource'#0_u128'_$memory, $t6); + + // if ($t7) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + if ($t7) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 +L0: + + // $t8 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 + assume {:print "$at(81,5827,5845)"} true; + $t8 := 103; + assume $IsValid'u64'($t8); + + // $t9 := error::resource_exhausted($t8) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:63+45 + call $t9 := $1_error_resource_exhausted($t8); + if ($abort_flag) { + assume {:print "$at(81,5801,5846)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + assume {:print "$track_abort(70,14):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + $t10 := $t9; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:69+7 + assume {:print "$at(81,5917,5924)"} true; +L2: + + // $t11 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:22+17 + assume {:print "$at(81,5870,5887)"} true; + if (!$ResourceExists($1_oracle_DataSource'#0_u128'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,5870,5887)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[source]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:13+6 + $temp_0'$1_oracle_DataSource'#0_u128'' := $Dereference($t11); + assume {:print "$track_local(70,14,5):", $temp_0'$1_oracle_DataSource'#0_u128''} $temp_0'$1_oracle_DataSource'#0_u128'' == $temp_0'$1_oracle_DataSource'#0_u128''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:19+29 + assume {:print "$at(81,5945,5974)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,5945,5974)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:13+3 + assume {:print "$track_local(70,14,3):", $t12} $t12 == $t12; + + // $t13 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:27+17 + assume {:print "$at(81,6002,6019)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_u128'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,6002,6019)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[oracle_feed]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:13+11 + $temp_0'$1_oracle_OracleFeed'#0_u128'' := $Dereference($t13); + assume {:print "$track_local(70,14,4):", $temp_0'$1_oracle_OracleFeed'#0_u128''} $temp_0'$1_oracle_OracleFeed'#0_u128'' == $temp_0'$1_oracle_OracleFeed'#0_u128''; + + // $t14 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:38+14 + assume {:print "$at(81,6096,6110)"} true; + $t14 := $Dereference($t11)->$counter; + + // $t15 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+18 + $t15 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t16 := borrow_field>.version($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+26 + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$version); + + // write_ref($t16, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t16 := $UpdateMutation($t16, $t14); + + // write_back[Reference($t15).version (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t15 := $UpdateMutation($t15, $Update'$1_oracle_DataRecord'u128''_version($Dereference($t15), $Dereference($t16))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_u128''_record($Dereference($t13), $Dereference($t15))); + + // $t17 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+18 + assume {:print "$at(81,6120,6138)"} true; + $t17 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t18 := borrow_field>.value($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+24 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$value); + + // write_ref($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t18 := $UpdateMutation($t18, $t1); + + // write_back[Reference($t17).value (#1)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t17 := $UpdateMutation($t17, $Update'$1_oracle_DataRecord'u128''_value($Dereference($t17), $Dereference($t18))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_u128''_record($Dereference($t13), $Dereference($t17))); + + // $t19 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+18 + assume {:print "$at(81,6162,6180)"} true; + $t19 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t20 := borrow_field>.updated_at($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+29 + $t20 := $ChildMutation($t19, 2, $Dereference($t19)->$updated_at); + + // write_ref($t20, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t20 := $UpdateMutation($t20, $t12); + + // write_back[Reference($t19).updated_at (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t19 := $UpdateMutation($t19, $Update'$1_oracle_DataRecord'u128''_updated_at($Dereference($t19), $Dereference($t20))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_u128''_record($Dereference($t13), $Dereference($t19))); + + // $t21 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:26+14 + assume {:print "$at(81,6224,6238)"} true; + $t21 := $Dereference($t11)->$counter; + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:43+1 + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t21, $t22) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:41+1 + call $t23 := $AddU64($t21, $t22); + if ($abort_flag) { + assume {:print "$at(81,6239,6240)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // $t24 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+14 + $t24 := $ChildMutation($t11, 1, $Dereference($t11)->$counter); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t11).counter (u64)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_u128''_counter($Dereference($t11), $Dereference($t24))); + + // $t25 := borrow_field>.update_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:27+25 + assume {:print "$at(81,6270,6295)"} true; + $t25 := $ChildMutation($t11, 2, $Dereference($t11)->$update_events); + + // $t26 := get_field>.id($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:152:24+9 + assume {:print "$at(81,6357,6366)"} true; + $t26 := $Dereference($t11)->$id; + + // $t27 := get_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + assume {:print "$at(81,6389,6408)"} true; + $t27 := $Dereference($t13)->$record; + + // write_back[oracle::OracleFeed<#0, #1>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + $1_oracle_OracleFeed'#0_u128'_$memory := $ResourceUpdate($1_oracle_OracleFeed'#0_u128'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t28 := pack oracle::OracleUpdateEvent<#0, #1>($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:54+121 + assume {:print "$at(81,6297,6418)"} true; + $t28 := $1_oracle_OracleUpdateEvent'#0_u128'($t26, $t27); + + // opaque begin: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // opaque end: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // write_back[Reference($t11).update_events (event::EventHandle>)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_u128''_update_events($Dereference($t11), $Dereference($t25))); + + // write_back[oracle::DataSource<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $1_oracle_DataSource'#0_u128'_$memory := $ResourceUpdate($1_oracle_DataSource'#0_u128'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + assume {:print "$at(81,6419,6420)"} true; + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 +L5: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun oracle::update_with_cap<#0, #1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+908 +procedure {:inline 1} $1_oracle_update_with_cap'#0_#1'(_$t0: $Mutation ($1_oracle_UpdateCapability'#0'), _$t1: #1) returns ($ret0: $Mutation ($1_oracle_UpdateCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_oracle_OracleFeed'#0_#1'); + var $t5: $Mutation ($1_oracle_DataSource'#0_#1'); + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_DataSource'#0_#1'); + var $t12: int; + var $t13: $Mutation ($1_oracle_OracleFeed'#0_#1'); + var $t14: int; + var $t15: $Mutation ($1_oracle_DataRecord'#1'); + var $t16: $Mutation (int); + var $t17: $Mutation ($1_oracle_DataRecord'#1'); + var $t18: $Mutation (#1); + var $t19: $Mutation ($1_oracle_DataRecord'#1'); + var $t20: $Mutation (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t25: $Mutation ($1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''); + var $t26: int; + var $t27: $1_oracle_DataRecord'#1'; + var $t28: $1_oracle_OracleUpdateEvent'#0_#1'; + var $t0: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t1: #1; + var $temp_0'#1': #1; + var $temp_0'$1_oracle_DataSource'#0_#1'': $1_oracle_DataSource'#0_#1'; + var $temp_0'$1_oracle_OracleFeed'#0_#1'': $1_oracle_OracleFeed'#0_#1'; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$at(81,5518,5519)"} true; + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$track_local(70,14,1):", $t1} $t1 == $t1; + + // $t6 := get_field>.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:23+11 + assume {:print "$at(81,5726,5737)"} true; + $t6 := $Dereference($t0)->$account; + + // trace_local[account]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:13+7 + assume {:print "$track_local(70,14,2):", $t6} $t6 == $t6; + + // $t7 := exists>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:17+6 + assume {:print "$at(81,5755,5761)"} true; + $t7 := $ResourceExists($1_oracle_DataSource'#0_#1'_$memory, $t6); + + // if ($t7) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + if ($t7) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 +L0: + + // $t8 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 + assume {:print "$at(81,5827,5845)"} true; + $t8 := 103; + assume $IsValid'u64'($t8); + + // $t9 := error::resource_exhausted($t8) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:63+45 + call $t9 := $1_error_resource_exhausted($t8); + if ($abort_flag) { + assume {:print "$at(81,5801,5846)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + assume {:print "$track_abort(70,14):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + $t10 := $t9; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:69+7 + assume {:print "$at(81,5917,5924)"} true; +L2: + + // $t11 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:22+17 + assume {:print "$at(81,5870,5887)"} true; + if (!$ResourceExists($1_oracle_DataSource'#0_#1'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,5870,5887)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[source]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:13+6 + $temp_0'$1_oracle_DataSource'#0_#1'' := $Dereference($t11); + assume {:print "$track_local(70,14,5):", $temp_0'$1_oracle_DataSource'#0_#1''} $temp_0'$1_oracle_DataSource'#0_#1'' == $temp_0'$1_oracle_DataSource'#0_#1''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:19+29 + assume {:print "$at(81,5945,5974)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,5945,5974)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:13+3 + assume {:print "$track_local(70,14,3):", $t12} $t12 == $t12; + + // $t13 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:27+17 + assume {:print "$at(81,6002,6019)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_#1'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,6002,6019)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[oracle_feed]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:13+11 + $temp_0'$1_oracle_OracleFeed'#0_#1'' := $Dereference($t13); + assume {:print "$track_local(70,14,4):", $temp_0'$1_oracle_OracleFeed'#0_#1''} $temp_0'$1_oracle_OracleFeed'#0_#1'' == $temp_0'$1_oracle_OracleFeed'#0_#1''; + + // $t14 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:38+14 + assume {:print "$at(81,6096,6110)"} true; + $t14 := $Dereference($t11)->$counter; + + // $t15 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+18 + $t15 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t16 := borrow_field>.version($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+26 + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$version); + + // write_ref($t16, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t16 := $UpdateMutation($t16, $t14); + + // write_back[Reference($t15).version (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t15 := $UpdateMutation($t15, $Update'$1_oracle_DataRecord'#1''_version($Dereference($t15), $Dereference($t16))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t15))); + + // $t17 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+18 + assume {:print "$at(81,6120,6138)"} true; + $t17 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t18 := borrow_field>.value($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+24 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$value); + + // write_ref($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t18 := $UpdateMutation($t18, $t1); + + // write_back[Reference($t17).value (#1)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t17 := $UpdateMutation($t17, $Update'$1_oracle_DataRecord'#1''_value($Dereference($t17), $Dereference($t18))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t17))); + + // $t19 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+18 + assume {:print "$at(81,6162,6180)"} true; + $t19 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t20 := borrow_field>.updated_at($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+29 + $t20 := $ChildMutation($t19, 2, $Dereference($t19)->$updated_at); + + // write_ref($t20, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t20 := $UpdateMutation($t20, $t12); + + // write_back[Reference($t19).updated_at (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t19 := $UpdateMutation($t19, $Update'$1_oracle_DataRecord'#1''_updated_at($Dereference($t19), $Dereference($t20))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t19))); + + // $t21 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:26+14 + assume {:print "$at(81,6224,6238)"} true; + $t21 := $Dereference($t11)->$counter; + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:43+1 + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t21, $t22) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:41+1 + call $t23 := $AddU64($t21, $t22); + if ($abort_flag) { + assume {:print "$at(81,6239,6240)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // $t24 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+14 + $t24 := $ChildMutation($t11, 1, $Dereference($t11)->$counter); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t11).counter (u64)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_#1''_counter($Dereference($t11), $Dereference($t24))); + + // $t25 := borrow_field>.update_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:27+25 + assume {:print "$at(81,6270,6295)"} true; + $t25 := $ChildMutation($t11, 2, $Dereference($t11)->$update_events); + + // $t26 := get_field>.id($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:152:24+9 + assume {:print "$at(81,6357,6366)"} true; + $t26 := $Dereference($t11)->$id; + + // $t27 := get_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + assume {:print "$at(81,6389,6408)"} true; + $t27 := $Dereference($t13)->$record; + + // write_back[oracle::OracleFeed<#0, #1>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + $1_oracle_OracleFeed'#0_#1'_$memory := $ResourceUpdate($1_oracle_OracleFeed'#0_#1'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t28 := pack oracle::OracleUpdateEvent<#0, #1>($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:54+121 + assume {:print "$at(81,6297,6418)"} true; + $t28 := $1_oracle_OracleUpdateEvent'#0_#1'($t26, $t27); + + // opaque begin: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // opaque end: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // write_back[Reference($t11).update_events (event::EventHandle>)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_#1''_update_events($Dereference($t11), $Dereference($t25))); + + // write_back[oracle::DataSource<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $1_oracle_DataSource'#0_#1'_$memory := $ResourceUpdate($1_oracle_DataSource'#0_#1'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + assume {:print "$at(81,6419,6420)"} true; + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 +L5: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun oracle::update_with_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+908 +procedure {:timeLimit 80} $1_oracle_update_with_cap$verify(_$t0: $Mutation ($1_oracle_UpdateCapability'#0'), _$t1: #1) returns ($ret0: $Mutation ($1_oracle_UpdateCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $Mutation ($1_oracle_OracleFeed'#0_#1'); + var $t5: $Mutation ($1_oracle_DataSource'#0_#1'); + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_oracle_DataSource'#0_#1'); + var $t12: int; + var $t13: $Mutation ($1_oracle_OracleFeed'#0_#1'); + var $t14: int; + var $t15: $Mutation ($1_oracle_DataRecord'#1'); + var $t16: $Mutation (int); + var $t17: $Mutation ($1_oracle_DataRecord'#1'); + var $t18: $Mutation (#1); + var $t19: $Mutation ($1_oracle_DataRecord'#1'); + var $t20: $Mutation (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $Mutation (int); + var $t25: $Mutation ($1_event_EventHandle'$1_oracle_OracleUpdateEvent'#0_#1''); + var $t26: int; + var $t27: $1_oracle_DataRecord'#1'; + var $t28: $1_oracle_OracleUpdateEvent'#0_#1'; + var $t0: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t1: #1; + var $temp_0'#1': #1; + var $temp_0'$1_oracle_DataSource'#0_#1'': $1_oracle_DataSource'#0_#1'; + var $temp_0'$1_oracle_OracleFeed'#0_#1'': $1_oracle_OracleFeed'#0_#1'; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$at(81,5518,5519)"} true; + assume $IsValid'$1_oracle_UpdateCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume $IsValid'#1'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138: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: oracle::DataSource<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_#1''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, #1>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_#1''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+908 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:138:5+1 + assume {:print "$track_local(70,14,1):", $t1} $t1 == $t1; + + // $t6 := get_field>.account($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:23+11 + assume {:print "$at(81,5726,5737)"} true; + $t6 := $Dereference($t0)->$account; + + // trace_local[account]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:142:13+7 + assume {:print "$track_local(70,14,2):", $t6} $t6 == $t6; + + // $t7 := exists>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:17+6 + assume {:print "$at(81,5755,5761)"} true; + $t7 := $ResourceExists($1_oracle_DataSource'#0_#1'_$memory, $t6); + + // if ($t7) goto L1 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + if ($t7) { goto L1; } else { goto L3; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 +L0: + + // $t8 := 103 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:89+18 + assume {:print "$at(81,5827,5845)"} true; + $t8 := 103; + assume $IsValid'u64'($t8); + + // $t9 := error::resource_exhausted($t8) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:63+45 + call $t9 := $1_error_resource_exhausted($t8); + if ($abort_flag) { + assume {:print "$at(81,5801,5846)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + assume {:print "$at(81,5747,5847)"} true; + assume {:print "$track_abort(70,14):", $t9} $t9 == $t9; + + // $t10 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + $t10 := $t9; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:143:9+100 + goto L5; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:69+7 + assume {:print "$at(81,5917,5924)"} true; +L2: + + // $t11 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:22+17 + assume {:print "$at(81,5870,5887)"} true; + if (!$ResourceExists($1_oracle_DataSource'#0_#1'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_DataSource'#0_#1'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,5870,5887)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[source]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:144:13+6 + $temp_0'$1_oracle_DataSource'#0_#1'' := $Dereference($t11); + assume {:print "$track_local(70,14,5):", $temp_0'$1_oracle_DataSource'#0_#1''} $temp_0'$1_oracle_DataSource'#0_#1'' == $temp_0'$1_oracle_DataSource'#0_#1''; + + // $t12 := timestamp::now_milliseconds() on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:19+29 + assume {:print "$at(81,5945,5974)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(81,5945,5974)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[now]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:145:13+3 + assume {:print "$track_local(70,14,3):", $t12} $t12 == $t12; + + // $t13 := borrow_global>($t6) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:27+17 + assume {:print "$at(81,6002,6019)"} true; + if (!$ResourceExists($1_oracle_OracleFeed'#0_#1'_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_oracle_OracleFeed'#0_#1'_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(81,6002,6019)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // trace_local[oracle_feed]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:146:13+11 + $temp_0'$1_oracle_OracleFeed'#0_#1'' := $Dereference($t13); + assume {:print "$track_local(70,14,4):", $temp_0'$1_oracle_OracleFeed'#0_#1''} $temp_0'$1_oracle_OracleFeed'#0_#1'' == $temp_0'$1_oracle_OracleFeed'#0_#1''; + + // $t14 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:38+14 + assume {:print "$at(81,6096,6110)"} true; + $t14 := $Dereference($t11)->$counter; + + // $t15 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+18 + $t15 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t16 := borrow_field>.version($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+26 + $t16 := $ChildMutation($t15, 0, $Dereference($t15)->$version); + + // write_ref($t16, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t16 := $UpdateMutation($t16, $t14); + + // write_back[Reference($t15).version (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t15 := $UpdateMutation($t15, $Update'$1_oracle_DataRecord'#1''_version($Dereference($t15), $Dereference($t16))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:147:9+43 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t15))); + + // $t17 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+18 + assume {:print "$at(81,6120,6138)"} true; + $t17 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t18 := borrow_field>.value($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+24 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$value); + + // write_ref($t18, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t18 := $UpdateMutation($t18, $t1); + + // write_back[Reference($t17).value (#1)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t17 := $UpdateMutation($t17, $Update'$1_oracle_DataRecord'#1''_value($Dereference($t17), $Dereference($t18))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:148:9+32 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t17))); + + // $t19 := borrow_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+18 + assume {:print "$at(81,6162,6180)"} true; + $t19 := $ChildMutation($t13, 0, $Dereference($t13)->$record); + + // $t20 := borrow_field>.updated_at($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+29 + $t20 := $ChildMutation($t19, 2, $Dereference($t19)->$updated_at); + + // write_ref($t20, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t20 := $UpdateMutation($t20, $t12); + + // write_back[Reference($t19).updated_at (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t19 := $UpdateMutation($t19, $Update'$1_oracle_DataRecord'#1''_updated_at($Dereference($t19), $Dereference($t20))); + + // write_back[Reference($t13).record (oracle::DataRecord<#1>)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:149:9+35 + $t13 := $UpdateMutation($t13, $Update'$1_oracle_OracleFeed'#0_#1''_record($Dereference($t13), $Dereference($t19))); + + // $t21 := get_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:26+14 + assume {:print "$at(81,6224,6238)"} true; + $t21 := $Dereference($t11)->$counter; + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:43+1 + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t21, $t22) on_abort goto L5 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:41+1 + call $t23 := $AddU64($t21, $t22); + if ($abort_flag) { + assume {:print "$at(81,6239,6240)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(70,14):", $t10} $t10 == $t10; + goto L5; + } + + // $t24 := borrow_field>.counter($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+14 + $t24 := $ChildMutation($t11, 1, $Dereference($t11)->$counter); + + // write_ref($t24, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t24 := $UpdateMutation($t24, $t23); + + // write_back[Reference($t11).counter (u64)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:150:9+35 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_#1''_counter($Dereference($t11), $Dereference($t24))); + + // $t25 := borrow_field>.update_events($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:27+25 + assume {:print "$at(81,6270,6295)"} true; + $t25 := $ChildMutation($t11, 2, $Dereference($t11)->$update_events); + + // $t26 := get_field>.id($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:152:24+9 + assume {:print "$at(81,6357,6366)"} true; + $t26 := $Dereference($t11)->$id; + + // $t27 := get_field>.record($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + assume {:print "$at(81,6389,6408)"} true; + $t27 := $Dereference($t13)->$record; + + // write_back[oracle::OracleFeed<#0, #1>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:153:22+19 + $1_oracle_OracleFeed'#0_#1'_$memory := $ResourceUpdate($1_oracle_OracleFeed'#0_#1'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // $t28 := pack oracle::OracleUpdateEvent<#0, #1>($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:54+121 + assume {:print "$at(81,6297,6418)"} true; + $t28 := $1_oracle_OracleUpdateEvent'#0_#1'($t26, $t27); + + // opaque begin: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // opaque end: event::emit_event>($t25, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + + // write_back[Reference($t11).update_events (event::EventHandle>)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $t11 := $UpdateMutation($t11, $Update'$1_oracle_DataSource'#0_#1''_update_events($Dereference($t11), $Dereference($t25))); + + // write_back[oracle::DataSource<#0, #1>@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:151:9+167 + $1_oracle_DataSource'#0_#1'_$memory := $ResourceUpdate($1_oracle_DataSource'#0_#1'_$memory, $GlobalLocationAddress($t11), + $Dereference($t11)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + assume {:print "$at(81,6419,6420)"} true; + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(70,14,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:154:11+1 + goto L4; + + // label L3 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L3: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; +L4: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $ret0 := $t0; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 +L5: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle.move:155:5+1 + assume {:print "$at(81,6425,6426)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// struct oracle_price::PriceOracleInfo at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:6:5+82 +datatype $1_oracle_price_PriceOracleInfo { + $1_oracle_price_PriceOracleInfo($scaling_factor: int) +} +function {:inline} $Update'$1_oracle_price_PriceOracleInfo'_scaling_factor(s: $1_oracle_price_PriceOracleInfo, x: int): $1_oracle_price_PriceOracleInfo { + $1_oracle_price_PriceOracleInfo(x) +} +function $IsValid'$1_oracle_price_PriceOracleInfo'(s: $1_oracle_price_PriceOracleInfo): bool { + $IsValid'u128'(s->$scaling_factor) +} +function {:inline} $IsEqual'$1_oracle_price_PriceOracleInfo'(s1: $1_oracle_price_PriceOracleInfo, s2: $1_oracle_price_PriceOracleInfo): bool { + s1 == s2 +} + +// fun oracle_price::update> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+135 +procedure {:inline 1} $1_oracle_price_update'$1_easy_gas_STCToken'#0''(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$at(83,1544,1545)"} true; + assume {:print "$track_local(71,9,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$track_local(71,9,1):", $t1} $t1 == $t1; + + // oracle::update<#0, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:44:9+44 + assume {:print "$at(83,1628,1672)"} true; + call $1_oracle_update'$1_easy_gas_STCToken'#0'_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,1628,1672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,9):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::update<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+135 +procedure {:inline 1} $1_oracle_price_update'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$at(83,1544,1545)"} true; + assume {:print "$track_local(71,9,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$track_local(71,9,1):", $t1} $t1 == $t1; + + // oracle::update<#0, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:44:9+44 + assume {:print "$at(83,1628,1672)"} true; + call $1_oracle_update'#0_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,1628,1672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,9):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::update [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+135 +procedure {:timeLimit 80} $1_oracle_price_update$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$at(83,1544,1545)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+135 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$track_local(71,9,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:43:5+1 + assume {:print "$track_local(71,9,1):", $t1} $t1 == $t1; + + // oracle::update<#0, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:44:9+44 + assume {:print "$at(83,1628,1672)"} true; + call $1_oracle_update'#0_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,1628,1672)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,9):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:45:5+1 + assume {:print "$at(83,1678,1679)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+112 +procedure {:inline 1} $1_oracle_price_read'$1_easy_gas_STCToken'#0''(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+1 + assume {:print "$at(83,1861,1862)"} true; + assume {:print "$track_local(71,4,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$at(83,1934,1967)"} true; + call $t1 := $1_oracle_read'$1_easy_gas_STCToken'#0'_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,1934,1967)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$track_return(71,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+112 +procedure {:inline 1} $1_oracle_price_read'$1_oracle_stc_usd_STCUSD'(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+1 + assume {:print "$at(83,1861,1862)"} true; + assume {:print "$track_local(71,4,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$at(83,1934,1967)"} true; + call $t1 := $1_oracle_read'$1_oracle_stc_usd_STCUSD_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,1934,1967)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$track_return(71,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+112 +procedure {:timeLimit 80} $1_oracle_price_read$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+1 + assume {:print "$at(83,1861,1862)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:51:5+1 + assume {:print "$track_local(71,4,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$at(83,1934,1967)"} true; + call $t1 := $1_oracle_read'#0_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,1934,1967)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:52:9+33 + assume {:print "$track_return(71,4,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:53:5+1 + assume {:print "$at(83,1972,1973)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::init_data_source> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+182 +procedure {:inline 1} $1_oracle_price_init_data_source'$1_easy_gas_STCToken'#0''(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$at(83,868,869)"} true; + assume {:print "$track_local(71,1,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$track_local(71,1,1):", $t1} $t1 == $t1; + + // oracle::init_data_source<#0, oracle_price::PriceOracleInfo, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:27:9+76 + assume {:print "$at(83,967,1043)"} true; + call $1_oracle_init_data_source'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,967,1043)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,1):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::init_data_source<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+182 +procedure {:inline 1} $1_oracle_price_init_data_source'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$at(83,868,869)"} true; + assume {:print "$track_local(71,1,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$track_local(71,1,1):", $t1} $t1 == $t1; + + // oracle::init_data_source<#0, oracle_price::PriceOracleInfo, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:27:9+76 + assume {:print "$at(83,967,1043)"} true; + call $1_oracle_init_data_source'#0_$1_oracle_price_PriceOracleInfo_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,967,1043)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,1):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::init_data_source [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+182 +procedure {:timeLimit 80} $1_oracle_price_init_data_source$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$at(83,868,869)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleInfo<#0, oracle_price::PriceOracleInfo>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+182 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$track_local(71,1,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:26:5+1 + assume {:print "$track_local(71,1,1):", $t1} $t1 == $t1; + + // oracle::init_data_source<#0, oracle_price::PriceOracleInfo, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:27:9+76 + assume {:print "$at(83,967,1043)"} true; + call $1_oracle_init_data_source'#0_$1_oracle_price_PriceOracleInfo_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,967,1043)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,1):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:28:5+1 + assume {:print "$at(83,1049,1050)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::is_data_source_initialized [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:30:5+162 +procedure {:timeLimit 80} $1_oracle_price_is_data_source_initialized$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:30:5+1 + assume {:print "$at(83,1056,1057)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:30:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:30:5+1 + assume {:print "$track_local(71,3,0):", $t0} $t0 == $t0; + + // $t1 := oracle::is_data_source_initialized<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:31:9+58 + assume {:print "$at(83,1154,1212)"} true; + call $t1 := $1_oracle_is_data_source_initialized'#0_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,1154,1212)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,3):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:31:9+58 + assume {:print "$track_return(71,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:32:5+1 + assume {:print "$at(83,1217,1218)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:32:5+1 + assume {:print "$at(83,1217,1218)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:32:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:32:5+1 + assume {:print "$at(83,1217,1218)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read_record [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+138 +procedure {:inline 1} $1_oracle_price_read_record'$1_oracle_stc_usd_STCUSD'(_$t0: int) returns ($ret0: $1_oracle_DataRecord'u128') +{ + // declare local variables + var $t1: $1_oracle_DataRecord'u128'; + var $t2: int; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+1 + assume {:print "$at(83,1979,1980)"} true; + assume {:print "$track_local(71,5,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read_record<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:56:9+40 + assume {:print "$at(83,2071,2111)"} true; + call $t1 := $1_oracle_read_record'$1_oracle_stc_usd_STCUSD_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,2071,2111)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,5):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:56:9+40 + assume {:print "$track_return(71,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read_record [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+138 +procedure {:timeLimit 80} $1_oracle_price_read_record$verify(_$t0: int) returns ($ret0: $1_oracle_DataRecord'u128') +{ + // declare local variables + var $t1: $1_oracle_DataRecord'u128'; + var $t2: int; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+1 + assume {:print "$at(83,1979,1980)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:55:5+1 + assume {:print "$track_local(71,5,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read_record<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:56:9+40 + assume {:print "$at(83,2071,2111)"} true; + call $t1 := $1_oracle_read_record'#0_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,2071,2111)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,5):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:56:9+40 + assume {:print "$track_return(71,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:57:5+1 + assume {:print "$at(83,2116,2117)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read_records [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+159 +procedure {:inline 1} $1_oracle_price_read_records'$1_oracle_stc_usd_STCUSD'(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: Vec ($1_oracle_DataRecord'u128'); + var $t2: int; + var $t0: Vec (int); + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+1 + assume {:print "$at(83,2123,2124)"} true; + assume {:print "$track_local(71,6,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read_records<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$at(83,2234,2276)"} true; + call $t1 := $1_oracle_read_records'$1_oracle_stc_usd_STCUSD_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,2234,2276)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,6):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$track_return(71,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read_records<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+159 +procedure {:inline 1} $1_oracle_price_read_records'#0'(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: Vec ($1_oracle_DataRecord'u128'); + var $t2: int; + var $t0: Vec (int); + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+1 + assume {:print "$at(83,2123,2124)"} true; + assume {:print "$track_local(71,6,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read_records<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$at(83,2234,2276)"} true; + call $t1 := $1_oracle_read_records'#0_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,2234,2276)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,6):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$track_return(71,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::read_records [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+159 +procedure {:timeLimit 80} $1_oracle_price_read_records$verify(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: Vec ($1_oracle_DataRecord'u128'); + var $t2: int; + var $t0: Vec (int); + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+1 + assume {:print "$at(83,2123,2124)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // trace_local[addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:59:5+1 + assume {:print "$track_local(71,6,0):", $t0} $t0 == $t0; + + // $t1 := oracle::read_records<#0, u128>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$at(83,2234,2276)"} true; + call $t1 := $1_oracle_read_records'#0_u128'($t0); + if ($abort_flag) { + assume {:print "$at(83,2234,2276)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,6):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:60:9+42 + assume {:print "$track_return(71,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:61:5+1 + assume {:print "$at(83,2281,2282)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::register_oracle> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+288 +procedure {:inline 1} $1_oracle_price_register_oracle'$1_easy_gas_STCToken'#0''(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_oracle_price_PriceOracleInfo; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$at(83,404,405)"} true; + assume {:print "$track_local(71,7,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$track_local(71,7,1):", $t1} $t1 == $t1; + + // $t3 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:43+2 + assume {:print "$at(83,537,539)"} true; + $t3 := 10; + assume $IsValid'u128'($t3); + + // $t4 := (u128)($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:47+19 + call $t4 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(83,541,560)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := opaque begin: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // assume Identical($t7, Gt(math128::spec_pow($t3, $t4), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume ($t7 == ($1_math128_spec_pow($t3, $t4) > 340282366920938463463374607431768211455)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume $IsValid'u128'($t6); + + // assume Eq($t6, math128::spec_pow($t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume $IsEqual'u128'($t6, $1_math128_spec_pow($t3, $t4)); + + // $t6 := opaque end: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // trace_local[scaling_factor]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:13+14 + assume {:print "$track_local(71,7,2):", $t6} $t6 == $t6; + + // $t8 := pack oracle_price::PriceOracleInfo($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:67+55 + assume {:print "$at(83,629,684)"} true; + $t8 := $1_oracle_price_PriceOracleInfo($t6); + + // oracle::register_oracle<#0, oracle_price::PriceOracleInfo>($t0, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:9+114 + call $1_oracle_register_oracle'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(83,571,685)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun oracle_price::register_oracle [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+288 +procedure {:inline 1} $1_oracle_price_register_oracle'$1_oracle_stc_usd_STCUSD'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_oracle_price_PriceOracleInfo; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$at(83,404,405)"} true; + assume {:print "$track_local(71,7,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$track_local(71,7,1):", $t1} $t1 == $t1; + + // $t3 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:43+2 + assume {:print "$at(83,537,539)"} true; + $t3 := 10; + assume $IsValid'u128'($t3); + + // $t4 := (u128)($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:47+19 + call $t4 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(83,541,560)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := opaque begin: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // assume Identical($t7, Gt(math128::spec_pow($t3, $t4), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume ($t7 == ($1_math128_spec_pow($t3, $t4) > 340282366920938463463374607431768211455)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume $IsValid'u128'($t6); + + // assume Eq($t6, math128::spec_pow($t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume $IsEqual'u128'($t6, $1_math128_spec_pow($t3, $t4)); + + // $t6 := opaque end: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // trace_local[scaling_factor]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:13+14 + assume {:print "$track_local(71,7,2):", $t6} $t6 == $t6; + + // $t8 := pack oracle_price::PriceOracleInfo($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:67+55 + assume {:print "$at(83,629,684)"} true; + $t8 := $1_oracle_price_PriceOracleInfo($t6); + + // oracle::register_oracle<#0, oracle_price::PriceOracleInfo>($t0, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:9+114 + call $1_oracle_register_oracle'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(83,571,685)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun oracle_price::register_oracle<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+288 +procedure {:inline 1} $1_oracle_price_register_oracle'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_oracle_price_PriceOracleInfo; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$at(83,404,405)"} true; + assume {:print "$track_local(71,7,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$track_local(71,7,1):", $t1} $t1 == $t1; + + // $t3 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:43+2 + assume {:print "$at(83,537,539)"} true; + $t3 := 10; + assume $IsValid'u128'($t3); + + // $t4 := (u128)($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:47+19 + call $t4 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(83,541,560)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := opaque begin: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // assume Identical($t7, Gt(math128::spec_pow($t3, $t4), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume ($t7 == ($1_math128_spec_pow($t3, $t4) > 340282366920938463463374607431768211455)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume $IsValid'u128'($t6); + + // assume Eq($t6, math128::spec_pow($t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume $IsEqual'u128'($t6, $1_math128_spec_pow($t3, $t4)); + + // $t6 := opaque end: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // trace_local[scaling_factor]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:13+14 + assume {:print "$track_local(71,7,2):", $t6} $t6 == $t6; + + // $t8 := pack oracle_price::PriceOracleInfo($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:67+55 + assume {:print "$at(83,629,684)"} true; + $t8 := $1_oracle_price_PriceOracleInfo($t6); + + // oracle::register_oracle<#0, oracle_price::PriceOracleInfo>($t0, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:9+114 + call $1_oracle_register_oracle'#0_$1_oracle_price_PriceOracleInfo'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(83,571,685)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun oracle_price::register_oracle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+288 +procedure {:timeLimit 80} $1_oracle_price_register_oracle$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: $1_oracle_price_PriceOracleInfo; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$at(83,404,405)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: oracle::OracleInfo<#0, oracle_price::PriceOracleInfo>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$track_local(71,7,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:14:5+1 + assume {:print "$track_local(71,7,1):", $t1} $t1 == $t1; + + // $t3 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:43+2 + assume {:print "$at(83,537,539)"} true; + $t3 := 10; + assume $IsValid'u128'($t3); + + // $t4 := (u128)($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:47+19 + call $t4 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(83,541,560)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := opaque begin: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // assume Identical($t7, Gt(math128::spec_pow($t3, $t4), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume ($t7 == ($1_math128_spec_pow($t3, $t4) > 340282366920938463463374607431768211455)); + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume {:print "$at(83,524,561)"} true; + assume $IsValid'u128'($t6); + + // assume Eq($t6, math128::spec_pow($t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + assume $IsEqual'u128'($t6, $1_math128_spec_pow($t3, $t4)); + + // $t6 := opaque end: math128::pow($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:30+37 + + // trace_local[scaling_factor]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:15:13+14 + assume {:print "$track_local(71,7,2):", $t6} $t6 == $t6; + + // $t8 := pack oracle_price::PriceOracleInfo($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:67+55 + assume {:print "$at(83,629,684)"} true; + $t8 := $1_oracle_price_PriceOracleInfo($t6); + + // oracle::register_oracle<#0, oracle_price::PriceOracleInfo>($t0, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:16:9+114 + call $1_oracle_register_oracle'#0_$1_oracle_price_PriceOracleInfo'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(83,571,685)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(71,7):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:19:5+1 + assume {:print "$at(83,691,692)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun oracle_price::update_with_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+170 +procedure {:timeLimit 80} $1_oracle_price_update_with_cap$verify(_$t0: $Mutation ($1_oracle_UpdateCapability'#0'), _$t1: int) returns ($ret0: $Mutation ($1_oracle_UpdateCapability'#0')) +{ + // declare local variables + var $t2: int; + var $t0: $Mutation ($1_oracle_UpdateCapability'#0'); + var $t1: int; + var $temp_0'$1_oracle_UpdateCapability'#0'': $1_oracle_UpdateCapability'#0'; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + assume {:print "$at(83,1685,1686)"} true; + assume $IsValid'$1_oracle_UpdateCapability'#0''($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47: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: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+170 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(71,11,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:47:5+1 + assume {:print "$track_local(71,11,1):", $t1} $t1 == $t1; + + // oracle::update_with_cap<#0, u128>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:48:9+50 + assume {:print "$at(83,1798,1848)"} true; + call $t0 := $1_oracle_update_with_cap'#0_u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,1798,1848)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,11):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[cap]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:48:59+1 + $temp_0'$1_oracle_UpdateCapability'#0'' := $Dereference($t0); + assume {:print "$track_local(71,11,0):", $temp_0'$1_oracle_UpdateCapability'#0''} $temp_0'$1_oracle_UpdateCapability'#0'' == $temp_0'$1_oracle_UpdateCapability'#0''; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:49:5+1 + assume {:print "$at(83,1854,1855)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:49:5+1 + assume {:print "$at(83,1854,1855)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:49:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:49:5+1 + assume {:print "$at(83,1854,1855)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::get_scaling_factor> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:34:5+175 +procedure {:inline 1} $1_oracle_price_get_scaling_factor'$1_easy_gas_STCToken'#0''() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_oracle_price_PriceOracleInfo; + var $t1: $1_oracle_price_PriceOracleInfo; + var $t2: int; + var $t3: int; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + var $temp_0'u128': int; + + // bytecode translation starts here + // $t1 := oracle::get_oracle_info<#0, oracle_price::PriceOracleInfo>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:35:20+51 + assume {:print "$at(83,1313,1364)"} true; + call $t1 := $1_oracle_get_oracle_info'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'(); + if ($abort_flag) { + assume {:print "$at(83,1313,1364)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:35:13+4 + assume {:print "$track_local(71,0,0):", $t1} $t1 == $t1; + + // $t3 := get_field.scaling_factor($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:36:9+19 + assume {:print "$at(83,1374,1393)"} true; + $t3 := $t1->$scaling_factor; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:36:9+19 + assume {:print "$track_return(71,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::get_scaling_factor [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:34:5+175 +procedure {:timeLimit 80} $1_oracle_price_get_scaling_factor$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_oracle_price_PriceOracleInfo; + var $t1: $1_oracle_price_PriceOracleInfo; + var $t2: int; + var $t3: int; + var $temp_0'$1_oracle_price_PriceOracleInfo': $1_oracle_price_PriceOracleInfo; + var $temp_0'u128': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: oracle::OracleInfo<#0, oracle_price::PriceOracleInfo>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:34:5+1 + assume {:print "$at(83,1224,1225)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // $t1 := oracle::get_oracle_info<#0, oracle_price::PriceOracleInfo>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:35:20+51 + assume {:print "$at(83,1313,1364)"} true; + call $t1 := $1_oracle_get_oracle_info'#0_$1_oracle_price_PriceOracleInfo'(); + if ($abort_flag) { + assume {:print "$at(83,1313,1364)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[info]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:35:13+4 + assume {:print "$track_local(71,0,0):", $t1} $t1 == $t1; + + // $t3 := get_field.scaling_factor($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:36:9+19 + assume {:print "$at(83,1374,1393)"} true; + $t3 := $t1->$scaling_factor; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:36:9+19 + assume {:print "$track_return(71,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:37:5+1 + assume {:print "$at(83,1398,1399)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::init_data_source_entry [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+163 +procedure {:timeLimit 80} $1_oracle_price_init_data_source_entry$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume {:print "$at(83,699,700)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleInfo<#0, oracle_price::PriceOracleInfo>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+163 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume {:print "$track_local(71,2,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:22:5+1 + assume {:print "$track_local(71,2,1):", $t1} $t1 == $t1; + + // oracle_price::init_data_source<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:23:9+46 + assume {:print "$at(83,809,855)"} true; + call $1_oracle_price_init_data_source'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,809,855)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,2):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:24:5+1 + assume {:print "$at(83,861,862)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:24:5+1 + assume {:print "$at(83,861,862)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:24:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:24:5+1 + assume {:print "$at(83,861,862)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::register_oracle_entry [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+157 +procedure {:timeLimit 80} $1_oracle_price_register_oracle_entry$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+1 + assume {:print "$at(83,241,242)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: oracle::OracleInfo<#0, oracle_price::PriceOracleInfo>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'#0_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+1 + assume {:print "$track_local(71,8,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:10:5+1 + assume {:print "$track_local(71,8,1):", $t1} $t1 == $t1; + + // oracle_price::register_oracle<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:11:9+44 + assume {:print "$at(83,347,391)"} true; + call $1_oracle_price_register_oracle'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,347,391)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,8):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:12:5+1 + assume {:print "$at(83,397,398)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:12:5+1 + assume {:print "$at(83,397,398)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:12:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:12:5+1 + assume {:print "$at(83,397,398)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_price::update_entry [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+133 +procedure {:timeLimit 80} $1_oracle_price_update_entry$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume {:print "$at(83,1405,1406)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39: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: oracle::UpdateCapability<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'#0'_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'#0''($rsc)))); + + // assume forall $rsc: oracle::DataSource<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'#0_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+133 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume {:print "$track_local(71,10,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:39:5+1 + assume {:print "$track_local(71,10,1):", $t1} $t1 == $t1; + + // oracle_price::update<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:40:9+31 + assume {:print "$at(83,1500,1531)"} true; + call $1_oracle_price_update'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(83,1500,1531)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(71,10):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:41:5+1 + assume {:print "$at(83,1537,1538)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:41:5+1 + assume {:print "$at(83,1537,1538)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:41:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_price.move:41:5+1 + assume {:print "$at(83,1537,1538)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// struct easy_gas::GasFeeAddress at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:26:5+117 +datatype $1_easy_gas_GasFeeAddress { + $1_easy_gas_GasFeeAddress($gas_fee_address: int, $cap: $1_account_SignerCapability) +} +function {:inline} $Update'$1_easy_gas_GasFeeAddress'_gas_fee_address(s: $1_easy_gas_GasFeeAddress, x: int): $1_easy_gas_GasFeeAddress { + $1_easy_gas_GasFeeAddress(x, s->$cap) +} +function {:inline} $Update'$1_easy_gas_GasFeeAddress'_cap(s: $1_easy_gas_GasFeeAddress, x: $1_account_SignerCapability): $1_easy_gas_GasFeeAddress { + $1_easy_gas_GasFeeAddress(s->$gas_fee_address, x) +} +function $IsValid'$1_easy_gas_GasFeeAddress'(s: $1_easy_gas_GasFeeAddress): bool { + $IsValid'address'(s->$gas_fee_address) + && $IsValid'$1_account_SignerCapability'(s->$cap) +} +function {:inline} $IsEqual'$1_easy_gas_GasFeeAddress'(s1: $1_easy_gas_GasFeeAddress, s2: $1_easy_gas_GasFeeAddress): bool { + s1 == s2 +} +var $1_easy_gas_GasFeeAddress_$memory: $Memory $1_easy_gas_GasFeeAddress; + +// struct easy_gas::GasTokenEntry at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:19:5+179 +datatype $1_easy_gas_GasTokenEntry { + $1_easy_gas_GasTokenEntry($account_address: int, $module_name: Vec (int), $struct_name: Vec (int), $data_source: int) +} +function {:inline} $Update'$1_easy_gas_GasTokenEntry'_account_address(s: $1_easy_gas_GasTokenEntry, x: int): $1_easy_gas_GasTokenEntry { + $1_easy_gas_GasTokenEntry(x, s->$module_name, s->$struct_name, s->$data_source) +} +function {:inline} $Update'$1_easy_gas_GasTokenEntry'_module_name(s: $1_easy_gas_GasTokenEntry, x: Vec (int)): $1_easy_gas_GasTokenEntry { + $1_easy_gas_GasTokenEntry(s->$account_address, x, s->$struct_name, s->$data_source) +} +function {:inline} $Update'$1_easy_gas_GasTokenEntry'_struct_name(s: $1_easy_gas_GasTokenEntry, x: Vec (int)): $1_easy_gas_GasTokenEntry { + $1_easy_gas_GasTokenEntry(s->$account_address, s->$module_name, x, s->$data_source) +} +function {:inline} $Update'$1_easy_gas_GasTokenEntry'_data_source(s: $1_easy_gas_GasTokenEntry, x: int): $1_easy_gas_GasTokenEntry { + $1_easy_gas_GasTokenEntry(s->$account_address, s->$module_name, s->$struct_name, x) +} +function $IsValid'$1_easy_gas_GasTokenEntry'(s: $1_easy_gas_GasTokenEntry): bool { + $IsValid'address'(s->$account_address) + && $IsValid'vec'u8''(s->$module_name) + && $IsValid'vec'u8''(s->$struct_name) + && $IsValid'address'(s->$data_source) +} +function {:inline} $IsEqual'$1_easy_gas_GasTokenEntry'(s1: $1_easy_gas_GasTokenEntry, s2: $1_easy_gas_GasTokenEntry): bool { + $IsEqual'address'(s1->$account_address, s2->$account_address) + && $IsEqual'vec'u8''(s1->$module_name, s2->$module_name) + && $IsEqual'vec'u8''(s1->$struct_name, s2->$struct_name) + && $IsEqual'address'(s1->$data_source, s2->$data_source)} +var $1_easy_gas_GasTokenEntry_$memory: $Memory $1_easy_gas_GasTokenEntry; + +// struct easy_gas::STCToken<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:17:5+56 +datatype $1_easy_gas_STCToken'#0' { + $1_easy_gas_STCToken'#0'($dummy_field: bool) +} +function {:inline} $Update'$1_easy_gas_STCToken'#0''_dummy_field(s: $1_easy_gas_STCToken'#0', x: bool): $1_easy_gas_STCToken'#0' { + $1_easy_gas_STCToken'#0'(x) +} +function $IsValid'$1_easy_gas_STCToken'#0''(s: $1_easy_gas_STCToken'#0'): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_easy_gas_STCToken'#0''(s1: $1_easy_gas_STCToken'#0', s2: $1_easy_gas_STCToken'#0'): bool { + s1 == s2 +} + +// fun easy_gas::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+382 +procedure {:timeLimit 80} $1_easy_gas_initialize$verify(_$t0: $signer, _$t1: int, _$t2: Vec (int), _$t3: Vec (int), _$t4: int) returns () +{ + // declare local variables + var $t5: int; + var $t0: $signer; + var $t1: int; + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$at(73,817,818)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $IsValid'address'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: reserved_accounts_signer::SignerResponsbility: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0)}(var $rsc := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0); + ($IsValid'$1_reserved_accounts_signer_SignerResponsbility'($rsc)))); + + // assume forall $rsc: easy_gas::GasFeeAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0); + ($IsValid'$1_easy_gas_GasFeeAddress'($rsc)))); + + // assume forall $rsc: easy_gas::GasTokenEntry: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0); + ($IsValid'$1_easy_gas_GasTokenEntry'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$track_local(72,6,0):", $t0} $t0 == $t0; + + // trace_local[token_account_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$track_local(72,6,1):", $t1} $t1 == $t1; + + // trace_local[token_module_name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$track_local(72,6,2):", $t2} $t2 == $t2; + + // trace_local[token_struct_name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$track_local(72,6,3):", $t3} $t3 == $t3; + + // trace_local[data_source]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:31:5+1 + assume {:print "$track_local(72,6,4):", $t4} $t4 == $t4; + + // easy_gas::register_gas_token($t0, $t1, $t2, $t3, $t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:38:9+100 + assume {:print "$at(73,1052,1152)"} true; + call $1_easy_gas_register_gas_token($t0, $t1, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(73,1052,1152)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,6):", $t5} $t5 == $t5; + goto L2; + } + + // easy_gas::create_gas_fee_address($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:39:9+30 + assume {:print "$at(73,1162,1192)"} true; + call $1_easy_gas_create_gas_fee_address($t0); + if ($abort_flag) { + assume {:print "$at(73,1162,1192)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,6):", $t5} $t5 == $t5; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:40:5+1 + assume {:print "$at(73,1198,1199)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:40:5+1 + assume {:print "$at(73,1198,1199)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:40:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:40:5+1 + assume {:print "$at(73,1198,1199)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun easy_gas::register_oracle<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+381 +procedure {:inline 1} $1_easy_gas_register_oracle'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume {:print "$at(73,1205,1206)"} true; + assume {:print "$track_local(72,8,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume {:print "$track_local(72,8,1):", $t1} $t1 == $t1; + + // oracle_price::register_oracle>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:43:9+66 + assume {:print "$at(73,1282,1348)"} true; + call $1_oracle_price_register_oracle'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1282,1348)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,8):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::register_oracle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+381 +procedure {:timeLimit 80} $1_easy_gas_register_oracle$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume {:print "$at(73,1205,1206)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: oracle::OracleInfo, oracle_price::PriceOracleInfo>: ResourceDomain, oracle_price::PriceOracleInfo>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume {:print "$track_local(72,8,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:42:5+1 + assume {:print "$track_local(72,8,1):", $t1} $t1 == $t1; + + // oracle_price::register_oracle>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:43:9+66 + assume {:print "$at(73,1282,1348)"} true; + call $1_oracle_price_register_oracle'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1282,1348)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,8):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:48:5+1 + assume {:print "$at(73,1585,1586)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::get_scaling_factor [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:58:5+114 +procedure {:timeLimit 80} $1_easy_gas_get_scaling_factor$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $temp_0'u128': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: oracle::OracleInfo, oracle_price::PriceOracleInfo>: ResourceDomain, oracle_price::PriceOracleInfo>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:58:5+1 + assume {:print "$at(73,1895,1896)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // $t0 := oracle_price::get_scaling_factor>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:59:9+52 + assume {:print "$at(73,1951,2003)"} true; + call $t0 := $1_oracle_price_get_scaling_factor'$1_easy_gas_STCToken'#0''(); + if ($abort_flag) { + assume {:print "$at(73,1951,2003)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(72,4):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:59:9+52 + assume {:print "$track_return(72,4,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:60:5+1 + assume {:print "$at(73,2008,2009)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:60:5+1 + assume {:print "$at(73,2008,2009)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:60:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:60:5+1 + assume {:print "$at(73,2008,2009)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun easy_gas::create_gas_fee_address [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+735 +procedure {:inline 1} $1_easy_gas_create_gas_fee_address(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t3: $1_account_SignerCapability; + var $t4: $signer; + var $t5: $signer; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $signer; + var $t10: int; + var $t11: Vec (int); + var $t12: int; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $signer; + var $t16: $1_account_SignerCapability; + var $t17: int; + var $t18: $1_easy_gas_GasFeeAddress; + var $t0: $signer; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume {:print "$at(73,3612,3613)"} true; + assume {:print "$track_local(72,0,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + + // assume Identical($t6, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume ($t6 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + + // $t8 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:101:57+42 + assume {:print "$at(73,3805,3847)"} true; + call $t8 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,3805,3847)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t9 := reserved_accounts_signer::get_stored_signer($t8) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:101:13+87 + call $t9 := $1_reserved_accounts_signer_get_stored_signer($t8); + if ($abort_flag) { + assume {:print "$at(73,3761,3848)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[genesis_account]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:100:13+15 + assume {:print "$at(73,3731,3746)"} true; + assume {:print "$track_local(72,0,5):", $t9} $t9 == $t9; + + // $t10 := signer::address_of($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:104:28+26 + assume {:print "$at(73,3977,4003)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(73,3977,4003)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t11 := bcs::to_bytes
($t10) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:104:13+42 + call $t11 := $1_bcs_to_bytes'address'($t10); + if ($abort_flag) { + assume {:print "$at(73,3962,4004)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t12, signer::$address_of($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:585:9+45 + assume {:print "$at(18,29789,29834)"} true; + assume ($t12 == $1_signer_$address_of($t9)); + + // assume Identical($t13, account::spec_create_resource_address($t12, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:586:9+68 + assume {:print "$at(18,29843,29911)"} true; + assume ($t13 == $1_account_spec_create_resource_address($t12, $t11)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // ($t15, $t16) := account::create_resource_account($t9, $t11) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:37+128 + assume {:print "$at(73,3886,4014)"} true; + call $t15,$t16 := $1_account_create_resource_account($t9, $t11); + if ($abort_flag) { + assume {:print "$at(73,3886,4014)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[cap]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:30+3 + assume {:print "$track_local(72,0,3):", $t16} $t16 == $t16; + + // trace_local[gas_fee_signer]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:14+14 + assume {:print "$track_local(72,0,4):", $t15} $t15 == $t15; + + // coin::register($t15) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:106:9+36 + assume {:print "$at(73,4024,4060)"} true; + call $1_coin_register'$1_starcoin_coin_STC'($t15); + if ($abort_flag) { + assume {:print "$at(73,4024,4060)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t17 := signer::address_of($t15) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:110:30+35 + assume {:print "$at(73,4277,4312)"} true; + call $t17 := $1_signer_address_of($t15); + if ($abort_flag) { + assume {:print "$at(73,4277,4312)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t18 := pack easy_gas::GasFeeAddress($t17, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:109:35+107 + assume {:print "$at(73,4232,4339)"} true; + $t18 := $1_easy_gas_GasFeeAddress($t17, $t16); + + // move_to($t18, $t9) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:109:9+7 + if ($ResourceExists($1_easy_gas_GasFeeAddress_$memory, $t9->$addr)) { + call $ExecFailureAbort(); + } else { + $1_easy_gas_GasFeeAddress_$memory := $ResourceUpdate($1_easy_gas_GasFeeAddress_$memory, $t9->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(73,4206,4213)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun easy_gas::create_gas_fee_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+735 +procedure {:timeLimit 80} $1_easy_gas_create_gas_fee_address$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $signer; + var $t3: $1_account_SignerCapability; + var $t4: $signer; + var $t5: $signer; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $signer; + var $t10: int; + var $t11: Vec (int); + var $t12: int; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $signer; + var $t16: $1_account_SignerCapability; + var $t17: int; + var $t18: $1_easy_gas_GasFeeAddress; + var $t0: $signer; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume {:print "$at(73,3612,3613)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: reserved_accounts_signer::SignerResponsbility: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0)}(var $rsc := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0); + ($IsValid'$1_reserved_accounts_signer_SignerResponsbility'($rsc)))); + + // assume forall $rsc: easy_gas::GasFeeAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0); + ($IsValid'$1_easy_gas_GasFeeAddress'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:98:5+1 + assume {:print "$track_local(72,0,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + + // assume Identical($t6, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume ($t6 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:99:9+51 + assume {:print "$at(73,3666,3717)"} true; + + // $t8 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:101:57+42 + assume {:print "$at(73,3805,3847)"} true; + call $t8 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,3805,3847)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t9 := reserved_accounts_signer::get_stored_signer($t8) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:101:13+87 + call $t9 := $1_reserved_accounts_signer_get_stored_signer($t8); + if ($abort_flag) { + assume {:print "$at(73,3761,3848)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[genesis_account]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:100:13+15 + assume {:print "$at(73,3731,3746)"} true; + assume {:print "$track_local(72,0,5):", $t9} $t9 == $t9; + + // $t10 := signer::address_of($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:104:28+26 + assume {:print "$at(73,3977,4003)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(73,3977,4003)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t11 := bcs::to_bytes
($t10) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:104:13+42 + call $t11 := $1_bcs_to_bytes'address'($t10); + if ($abort_flag) { + assume {:print "$at(73,3962,4004)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t12, signer::$address_of($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:585:9+45 + assume {:print "$at(18,29789,29834)"} true; + assume ($t12 == $1_signer_$address_of($t9)); + + // assume Identical($t13, account::spec_create_resource_address($t12, $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:586:9+68 + assume {:print "$at(18,29843,29911)"} true; + assume ($t13 == $1_account_spec_create_resource_address($t12, $t11)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // ($t15, $t16) := account::create_resource_account($t9, $t11) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:37+128 + assume {:print "$at(73,3886,4014)"} true; + call $t15,$t16 := $1_account_create_resource_account($t9, $t11); + if ($abort_flag) { + assume {:print "$at(73,3886,4014)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[cap]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:30+3 + assume {:print "$track_local(72,0,3):", $t16} $t16 == $t16; + + // trace_local[gas_fee_signer]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:102:14+14 + assume {:print "$track_local(72,0,4):", $t15} $t15 == $t15; + + // coin::register($t15) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:106:9+36 + assume {:print "$at(73,4024,4060)"} true; + call $1_coin_register'$1_starcoin_coin_STC'($t15); + if ($abort_flag) { + assume {:print "$at(73,4024,4060)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t17 := signer::address_of($t15) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:110:30+35 + assume {:print "$at(73,4277,4312)"} true; + call $t17 := $1_signer_address_of($t15); + if ($abort_flag) { + assume {:print "$at(73,4277,4312)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // $t18 := pack easy_gas::GasFeeAddress($t17, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:109:35+107 + assume {:print "$at(73,4232,4339)"} true; + $t18 := $1_easy_gas_GasFeeAddress($t17, $t16); + + // move_to($t18, $t9) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:109:9+7 + if ($ResourceExists($1_easy_gas_GasFeeAddress_$memory, $t9->$addr)) { + call $ExecFailureAbort(); + } else { + $1_easy_gas_GasFeeAddress_$memory := $ResourceUpdate($1_easy_gas_GasFeeAddress_$memory, $t9->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(73,4206,4213)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(72,0):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:113:5+1 + assume {:print "$at(73,4346,4347)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun easy_gas::gas_oracle_read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:62:5+192 +procedure {:timeLimit 80} $1_easy_gas_gas_oracle_read$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u128': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: oracle::OracleFeed, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:62:5+1 + assume {:print "$at(73,2015,2016)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: easy_gas::GasTokenEntry: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:62:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0); + ($IsValid'$1_easy_gas_GasTokenEntry'($rsc)))); + + // $t0 := easy_gas::get_data_source_address<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:63:27+33 + assume {:print "$at(73,2109,2142)"} true; + call $t0 := $1_easy_gas_get_data_source_address'#0'(); + if ($abort_flag) { + assume {:print "$at(73,2109,2142)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(72,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := oracle_price::read>($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:64:9+49 + assume {:print "$at(73,2152,2201)"} true; + call $t2 := $1_oracle_price_read'$1_easy_gas_STCToken'#0''($t0); + if ($abort_flag) { + assume {:print "$at(73,2152,2201)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(72,1):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:64:9+49 + assume {:print "$track_return(72,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:65:5+1 + assume {:print "$at(73,2206,2207)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:65:5+1 + assume {:print "$at(73,2206,2207)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:65:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:65:5+1 + assume {:print "$at(73,2206,2207)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun easy_gas::get_data_source_address<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:86:5+660 +procedure {:inline 1} $1_easy_gas_get_data_source_address'#0'() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: bool; + var $t2: $1_easy_gas_GasTokenEntry; + var $t3: $1_type_info_TypeInfo; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: int; + var $t7: $1_easy_gas_GasTokenEntry; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: Vec (int); + var $t15: Vec (int); + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $temp_0'$1_easy_gas_GasTokenEntry': $1_easy_gas_GasTokenEntry; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + + // bytecode translation starts here + // $t4 := type_info::type_of<#0>() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:87:31+28 + assume {:print "$at(73,3048,3076)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(73,3048,3076)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token_type_info]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:87:13+15 + assume {:print "$track_local(72,2,3):", $t4} $t4 == $t4; + + // $t6 := system_addresses::get_starcoin_framework() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:88:23+42 + assume {:print "$at(73,3100,3142)"} true; + call $t6 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,3100,3142)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t7 := get_global($t6) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:89:31+13 + assume {:print "$at(73,3174,3187)"} true; + if (!$ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(73,3174,3187)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[gas_token_entry]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:89:13+15 + assume {:print "$track_local(72,2,2):", $t7} $t7 == $t7; + + // $t8 := type_info::module_name($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+40 + assume {:print "$at(73,3229,3269)"} true; + call $t8 := $1_type_info_module_name($t4); + if ($abort_flag) { + assume {:print "$at(73,3229,3269)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t9 := get_field.module_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:62+28 + $t9 := $t7->$module_name; + + // $t10 := ==($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:58+2 + $t10 := $IsEqual'vec'u8''($t8, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:43+16 + assume {:print "$at(73,3345,3361)"} true; +L1: + + // $t11 := type_info::account_address($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:16+44 + assume {:print "$at(73,3318,3362)"} true; + call $t11 := $1_type_info_account_address($t4); + if ($abort_flag) { + assume {:print "$at(73,3318,3362)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t12 := get_field.account_address($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:65+32 + $t12 := $t7->$account_address; + + // $t0 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:61+2 + $t0 := $IsEqual'address'($t11, $t12); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + assume {:print "$at(73,3229,3399)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 +L0: + + // $t13 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + assume {:print "$at(73,3229,3399)"} true; + $t13 := false; + assume $IsValid'bool'($t13); + + // $t0 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + $t0 := $t13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 +L2: + + // if ($t0) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + if ($t0) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:39+16 + assume {:print "$at(73,3438,3454)"} true; +L4: + + // $t14 := type_info::struct_name($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:16+40 + assume {:print "$at(73,3415,3455)"} true; + call $t14 := $1_type_info_struct_name($t4); + if ($abort_flag) { + assume {:print "$at(73,3415,3455)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t15 := get_field.struct_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:61+28 + $t15 := $t7->$struct_name; + + // $t1 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:57+2 + $t1 := $IsEqual'vec'u8''($t14, $t15); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 +L3: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t1 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + $t1 := $t16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 +L5: + + // if ($t1) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + if ($t1) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 +L6: + + // $t17 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:93:37+26 + assume {:print "$at(73,3526,3552)"} true; + $t17 := 18; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:93:13+51 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(73,3502,3553)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + assume {:print "$track_abort(72,2):", $t18} $t18 == $t18; + + // $t5 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + $t5 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+15 + assume {:print "$at(73,3573,3588)"} true; +L8: + + // $t19 := get_field.data_source($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+27 + assume {:print "$at(73,3573,3600)"} true; + $t19 := $t7->$data_source; + + // trace_return[0]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+27 + assume {:print "$track_return(72,2,0):", $t19} $t19 == $t19; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; +L9: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; + $ret0 := $t19; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun easy_gas::get_data_source_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:86:5+660 +procedure {:timeLimit 80} $1_easy_gas_get_data_source_address$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: bool; + var $t1: bool; + var $t2: $1_easy_gas_GasTokenEntry; + var $t3: $1_type_info_TypeInfo; + var $t4: $1_type_info_TypeInfo; + var $t5: int; + var $t6: int; + var $t7: $1_easy_gas_GasTokenEntry; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: Vec (int); + var $t15: Vec (int); + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $temp_0'$1_easy_gas_GasTokenEntry': $1_easy_gas_GasTokenEntry; + var $temp_0'$1_type_info_TypeInfo': $1_type_info_TypeInfo; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: easy_gas::GasTokenEntry: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:86:5+1 + assume {:print "$at(73,2946,2947)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0); + ($IsValid'$1_easy_gas_GasTokenEntry'($rsc)))); + + // $t4 := type_info::type_of<#0>() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:87:31+28 + assume {:print "$at(73,3048,3076)"} true; + call $t4 := $1_type_info_type_of'#0'(); + if ($abort_flag) { + assume {:print "$at(73,3048,3076)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token_type_info]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:87:13+15 + assume {:print "$track_local(72,2,3):", $t4} $t4 == $t4; + + // $t6 := system_addresses::get_starcoin_framework() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:88:23+42 + assume {:print "$at(73,3100,3142)"} true; + call $t6 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,3100,3142)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t7 := get_global($t6) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:89:31+13 + assume {:print "$at(73,3174,3187)"} true; + if (!$ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(73,3174,3187)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[gas_token_entry]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:89:13+15 + assume {:print "$track_local(72,2,2):", $t7} $t7 == $t7; + + // $t8 := type_info::module_name($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+40 + assume {:print "$at(73,3229,3269)"} true; + call $t8 := $1_type_info_module_name($t4); + if ($abort_flag) { + assume {:print "$at(73,3229,3269)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t9 := get_field.module_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:62+28 + $t9 := $t7->$module_name; + + // $t10 := ==($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:58+2 + $t10 := $IsEqual'vec'u8''($t8, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:43+16 + assume {:print "$at(73,3345,3361)"} true; +L1: + + // $t11 := type_info::account_address($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:16+44 + assume {:print "$at(73,3318,3362)"} true; + call $t11 := $1_type_info_account_address($t4); + if ($abort_flag) { + assume {:print "$at(73,3318,3362)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t12 := get_field.account_address($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:65+32 + $t12 := $t7->$account_address; + + // $t0 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:91:61+2 + $t0 := $IsEqual'address'($t11, $t12); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + assume {:print "$at(73,3229,3399)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 +L0: + + // $t13 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + assume {:print "$at(73,3229,3399)"} true; + $t13 := false; + assume $IsValid'bool'($t13); + + // $t0 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 + $t0 := $t13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+170 +L2: + + // if ($t0) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + if ($t0) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:39+16 + assume {:print "$at(73,3438,3454)"} true; +L4: + + // $t14 := type_info::struct_name($t4) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:16+40 + assume {:print "$at(73,3415,3455)"} true; + call $t14 := $1_type_info_struct_name($t4); + if ($abort_flag) { + assume {:print "$at(73,3415,3455)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // $t15 := get_field.struct_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:61+28 + $t15 := $t7->$struct_name; + + // $t1 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:92:57+2 + $t1 := $IsEqual'vec'u8''($t14, $t15); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 +L3: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + assume {:print "$at(73,3229,3488)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t1 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 + $t1 := $t16; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:17+259 +L5: + + // if ($t1) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + if ($t1) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 +L6: + + // $t17 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:93:37+26 + assume {:print "$at(73,3526,3552)"} true; + $t17 := 18; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:93:13+51 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(73,3502,3553)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(72,2):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + assume {:print "$at(73,3221,3563)"} true; + assume {:print "$track_abort(72,2):", $t18} $t18 == $t18; + + // $t5 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + $t5 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:90:9+342 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+15 + assume {:print "$at(73,3573,3588)"} true; +L8: + + // $t19 := get_field.data_source($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+27 + assume {:print "$at(73,3573,3600)"} true; + $t19 := $t7->$data_source; + + // trace_return[0]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:95:9+27 + assume {:print "$track_return(72,2,0):", $t19} $t19 == $t19; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; +L9: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; + $ret0 := $t19; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:96:5+1 + assume {:print "$at(73,3605,3606)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun easy_gas::get_gas_fee_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:115:5+169 +procedure {:timeLimit 80} $1_easy_gas_get_gas_fee_address$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_easy_gas_GasFeeAddress; + var $t3: int; + var $temp_0'address': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: easy_gas::GasFeeAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:115:5+1 + assume {:print "$at(73,4353,4354)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0); + ($IsValid'$1_easy_gas_GasFeeAddress'($rsc)))); + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:116:38+42 + assume {:print "$at(73,4457,4499)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,4457,4499)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(72,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:116:9+13 + if (!$ResourceExists($1_easy_gas_GasFeeAddress_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(73,4428,4441)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(72,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.gas_fee_address($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:116:9+88 + $t3 := $t2->$gas_fee_address; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:116:9+88 + assume {:print "$track_return(72,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:117:5+1 + assume {:print "$at(73,4521,4522)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:117:5+1 + assume {:print "$at(73,4521,4522)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:117:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:117:5+1 + assume {:print "$at(73,4521,4522)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun easy_gas::init_oracle_source<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+158 +procedure {:inline 1} $1_easy_gas_init_oracle_source'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume {:print "$at(73,1592,1593)"} true; + assume {:print "$track_local(72,5,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume {:print "$track_local(72,5,1):", $t1} $t1 == $t1; + + // oracle_price::init_data_source>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:51:9+68 + assume {:print "$at(73,1675,1743)"} true; + call $1_oracle_price_init_data_source'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1675,1743)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,5):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::init_oracle_source [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+158 +procedure {:timeLimit 80} $1_easy_gas_init_oracle_source$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume {:print "$at(73,1592,1593)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50: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: oracle::UpdateCapability>: ResourceDomain>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($rsc)))); + + // assume forall $rsc: oracle::DataSource, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleInfo, oracle_price::PriceOracleInfo>: ResourceDomain, oracle_price::PriceOracleInfo>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+158 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume {:print "$track_local(72,5,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:50:5+1 + assume {:print "$track_local(72,5,1):", $t1} $t1 == $t1; + + // oracle_price::init_data_source>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:51:9+68 + assume {:print "$at(73,1675,1743)"} true; + call $1_oracle_price_init_data_source'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1675,1743)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,5):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:52:5+1 + assume {:print "$at(73,1749,1750)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::register_gas_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+726 +procedure {:inline 1} $1_easy_gas_register_gas_token(_$t0: $signer, _$t1: int, _$t2: Vec (int), _$t3: Vec (int), _$t4: int) returns () +{ + // declare local variables + var $t5: $1_easy_gas_GasTokenEntry; + var $t6: $signer; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $signer; + var $t11: $1_easy_gas_GasTokenEntry; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: $1_easy_gas_GasTokenEntry; + var $t0: $signer; + var $t1: int; + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $temp_0'$1_easy_gas_GasTokenEntry': $1_easy_gas_GasTokenEntry; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$at(73,2214,2215)"} true; + assume {:print "$track_local(72,7,0):", $t0} $t0 == $t0; + + // trace_local[account_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,1):", $t1} $t1 == $t1; + + // trace_local[module_name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,2):", $t2} $t2 == $t2; + + // trace_local[struct_name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,3):", $t3} $t3 == $t3; + + // trace_local[data_source]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,4):", $t4} $t4 == $t4; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + + // assume Identical($t7, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume ($t7 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t7) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + if ($t7) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 +L5: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 +L4: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + + // $t9 := system_addresses::get_starcoin_framework() on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:78:57+42 + assume {:print "$at(73,2572,2614)"} true; + call $t9 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,2572,2614)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t10 := reserved_accounts_signer::get_stored_signer($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:78:13+87 + call $t10 := $1_reserved_accounts_signer_get_stored_signer($t9); + if ($abort_flag) { + assume {:print "$at(73,2528,2615)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // trace_local[genesis_account]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:77:13+15 + assume {:print "$at(73,2498,2513)"} true; + assume {:print "$track_local(72,7,6):", $t10} $t10 == $t10; + + // $t11 := pack easy_gas::GasTokenEntry($t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:79:31+72 + assume {:print "$at(73,2647,2719)"} true; + $t11 := $1_easy_gas_GasTokenEntry($t1, $t2, $t3, $t4); + + // trace_local[gas_token_entry]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:79:13+15 + assume {:print "$track_local(72,7,5):", $t11} $t11 == $t11; + + // $t12 := signer::address_of($t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:35+36 + assume {:print "$at(73,2755,2791)"} true; + call $t12 := $1_signer_address_of($t10); + if ($abort_flag) { + assume {:print "$at(73,2755,2791)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:13+6 + $t13 := $ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:9+152 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:57+16 + assume {:print "$at(73,2852,2868)"} true; +L1: + + // $t14 := signer::address_of($t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:38+36 + assume {:print "$at(73,2833,2869)"} true; + call $t14 := $1_signer_address_of($t10); + if ($abort_flag) { + assume {:print "$at(73,2833,2869)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t15 := move_from($t14) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:13+9 + if (!$ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $t14); + $1_easy_gas_GasTokenEntry_$memory := $ResourceRemove($1_easy_gas_GasTokenEntry_$memory, $t14); + } + if ($abort_flag) { + assume {:print "$at(73,2808,2817)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:13+62 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:83:17+16 + assume {:print "$at(73,2899,2915)"} true; +L0: + + // move_to($t11, $t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:83:9+7 + assume {:print "$at(73,2891,2898)"} true; + if ($ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t10->$addr)) { + call $ExecFailureAbort(); + } else { + $1_easy_gas_GasTokenEntry_$memory := $ResourceUpdate($1_easy_gas_GasTokenEntry_$memory, $t10->$addr, $t11); + } + if ($abort_flag) { + assume {:print "$at(73,2891,2898)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 +L3: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun easy_gas::register_gas_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+726 +procedure {:timeLimit 80} $1_easy_gas_register_gas_token$verify(_$t0: $signer, _$t1: int, _$t2: Vec (int), _$t3: Vec (int), _$t4: int) returns () +{ + // declare local variables + var $t5: $1_easy_gas_GasTokenEntry; + var $t6: $signer; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $signer; + var $t11: $1_easy_gas_GasTokenEntry; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: $1_easy_gas_GasTokenEntry; + var $t0: $signer; + var $t1: int; + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: int; + var $temp_0'$1_easy_gas_GasTokenEntry': $1_easy_gas_GasTokenEntry; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$at(73,2214,2215)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume $IsValid'vec'u8''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume $IsValid'address'($t4); + + // assume forall $rsc: reserved_accounts_signer::SignerResponsbility: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0)}(var $rsc := $ResourceValue($1_reserved_accounts_signer_SignerResponsbility_$memory, $a_0); + ($IsValid'$1_reserved_accounts_signer_SignerResponsbility'($rsc)))); + + // assume forall $rsc: easy_gas::GasTokenEntry: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $a_0); + ($IsValid'$1_easy_gas_GasTokenEntry'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,0):", $t0} $t0 == $t0; + + // trace_local[account_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,1):", $t1} $t1 == $t1; + + // trace_local[module_name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,2):", $t2} $t2 == $t2; + + // trace_local[struct_name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,3):", $t3} $t3 == $t3; + + // trace_local[data_source]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:68:5+1 + assume {:print "$track_local(72,7,4):", $t4} $t4 == $t4; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + + // assume Identical($t7, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume ($t7 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t7) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + if ($t7) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 +L5: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 +L4: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:75:9+51 + assume {:print "$at(73,2432,2483)"} true; + + // $t9 := system_addresses::get_starcoin_framework() on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:78:57+42 + assume {:print "$at(73,2572,2614)"} true; + call $t9 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,2572,2614)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t10 := reserved_accounts_signer::get_stored_signer($t9) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:78:13+87 + call $t10 := $1_reserved_accounts_signer_get_stored_signer($t9); + if ($abort_flag) { + assume {:print "$at(73,2528,2615)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // trace_local[genesis_account]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:77:13+15 + assume {:print "$at(73,2498,2513)"} true; + assume {:print "$track_local(72,7,6):", $t10} $t10 == $t10; + + // $t11 := pack easy_gas::GasTokenEntry($t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:79:31+72 + assume {:print "$at(73,2647,2719)"} true; + $t11 := $1_easy_gas_GasTokenEntry($t1, $t2, $t3, $t4); + + // trace_local[gas_token_entry]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:79:13+15 + assume {:print "$track_local(72,7,5):", $t11} $t11 == $t11; + + // $t12 := signer::address_of($t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:35+36 + assume {:print "$at(73,2755,2791)"} true; + call $t12 := $1_signer_address_of($t10); + if ($abort_flag) { + assume {:print "$at(73,2755,2791)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t13 := exists($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:13+6 + $t13 := $ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:80:9+152 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:57+16 + assume {:print "$at(73,2852,2868)"} true; +L1: + + // $t14 := signer::address_of($t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:38+36 + assume {:print "$at(73,2833,2869)"} true; + call $t14 := $1_signer_address_of($t10); + if ($abort_flag) { + assume {:print "$at(73,2833,2869)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // $t15 := move_from($t14) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:13+9 + if (!$ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $ResourceValue($1_easy_gas_GasTokenEntry_$memory, $t14); + $1_easy_gas_GasTokenEntry_$memory := $ResourceRemove($1_easy_gas_GasTokenEntry_$memory, $t14); + } + if ($abort_flag) { + assume {:print "$at(73,2808,2817)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:81:13+62 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:83:17+16 + assume {:print "$at(73,2899,2915)"} true; +L0: + + // move_to($t11, $t10) on_abort goto L3 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:83:9+7 + assume {:print "$at(73,2891,2898)"} true; + if ($ResourceExists($1_easy_gas_GasTokenEntry_$memory, $t10->$addr)) { + call $ExecFailureAbort(); + } else { + $1_easy_gas_GasTokenEntry_$memory := $ResourceUpdate($1_easy_gas_GasTokenEntry_$memory, $t10->$addr, $t11); + } + if ($abort_flag) { + assume {:print "$at(73,2891,2898)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(72,7):", $t8} $t8 == $t8; + goto L3; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 +L3: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:84:5+1 + assume {:print "$at(73,2939,2940)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun easy_gas::update_oracle<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+133 +procedure {:inline 1} $1_easy_gas_update_oracle'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume {:print "$at(73,1756,1757)"} true; + assume {:print "$track_local(72,9,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume {:print "$track_local(72,9,1):", $t1} $t1 == $t1; + + // oracle_price::update>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:55:9+53 + assume {:print "$at(73,1829,1882)"} true; + call $1_oracle_price_update'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1829,1882)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,9):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::update_oracle [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+133 +procedure {:timeLimit 80} $1_easy_gas_update_oracle$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume {:print "$at(73,1756,1757)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54: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: oracle::UpdateCapability>: ResourceDomain>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($rsc)))); + + // assume forall $rsc: oracle::DataSource, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+133 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume {:print "$track_local(72,9,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:54:5+1 + assume {:print "$track_local(72,9,1):", $t1} $t1 == $t1; + + // oracle_price::update>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:55:9+53 + assume {:print "$at(73,1829,1882)"} true; + call $1_oracle_price_update'$1_easy_gas_STCToken'#0''($t0, $t1); + if ($abort_flag) { + assume {:print "$at(73,1829,1882)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(72,9):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:56:5+1 + assume {:print "$at(73,1888,1889)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas::withdraw_gas_fee<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+760 +procedure {:inline 1} $1_easy_gas_withdraw_gas_fee'#0'(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: int; + var $t4: int; + var $t5: $1_easy_gas_GasFeeAddress; + var $t6: $1_account_SignerCapability; + var $t7: int; + var $t8: $signer; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_coin_CoinStore'#0'; + var $t13: int; + var $t14: int; + var $t15: $1_coin_CoinStore'#0'; + var $t16: int; + var $t17: $1_coin_Coin'#0'; + var $t18: $1_coin_CoinStore'#0'; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[_sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume {:print "$at(73,4528,4529)"} true; + assume {:print "$track_local(72,10,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume {:print "$track_local(72,10,1):", $t1} $t1 == $t1; + + // $t3 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:121:42+42 + assume {:print "$at(73,4698,4740)"} true; + call $t3 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,4698,4740)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_global($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:121:13+13 + if (!$ResourceExists($1_easy_gas_GasFeeAddress_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(73,4669,4682)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := get_field.cap($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:69+26 + assume {:print "$at(73,4811,4837)"} true; + $t6 := $t5->$cap; + + // assume Identical($t7, select account::SignerCapability.account($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t7 == $t6->$account); + + // $t8 := account::create_signer_with_capability($t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:30+66 + assume {:print "$at(73,4772,4838)"} true; + call $t8 := $1_account_create_signer_with_capability($t6); + if ($abort_flag) { + assume {:print "$at(73,4772,4838)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[gas_fee_signer]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:13+14 + assume {:print "$track_local(72,10,2):", $t8} $t8 == $t8; + + // $t9 := system_addresses::get_core_resource_address() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:129:13+45 + assume {:print "$at(73,5156,5201)"} true; + call $t9 := $1_system_addresses_get_core_resource_address(); + if ($abort_flag) { + assume {:print "$at(73,5156,5201)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t10 := (u64)($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:130:53+15 + assume {:print "$at(73,5255,5270)"} true; + call $t10 := $CastU64($t1); + if ($abort_flag) { + assume {:print "$at(73,5255,5270)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t11, signer::$address_of($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:562:9+47 + assume {:print "$at(32,24737,24784)"} true; + assume ($t11 == $1_signer_$address_of($t8)); + + // assume Identical($t12, global>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:563:9+59 + assume {:print "$at(32,24793,24852)"} true; + assume ($t12 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t11)); + + // assume Identical($t13, select coin::Coin.value>(select coin::CoinStore.coin>($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:564:9+36 + assume {:print "$at(32,24861,24897)"} true; + assume ($t13 == $t12->$coin->$value); + + // assume Identical($t14, signer::$address_of($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:572:9+47 + assume {:print "$at(32,25194,25241)"} true; + assume ($t14 == $1_signer_$address_of($t8)); + + // assume Identical($t15, global>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:573:9+59 + assume {:print "$at(32,25250,25309)"} true; + assume ($t15 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t14)); + + // assume Identical($t16, select coin::Coin.value>(select coin::CoinStore.coin>($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:574:9+36 + assume {:print "$at(32,25318,25354)"} true; + assume ($t16 == $t15->$coin->$value); + + // $t17 := coin::withdraw<#0>($t8, $t10) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:130:13+56 + assume {:print "$at(73,5215,5271)"} true; + call $t17 := $1_coin_withdraw'#0'($t8, $t10); + if ($abort_flag) { + assume {:print "$at(73,5215,5271)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t18, global>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t18 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t9)); + + // coin::deposit<#0>($t9, $t17) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:128:9+152 + assume {:print "$at(73,5129,5281)"} true; + call $1_coin_deposit'#0'($t9, $t17); + if ($abort_flag) { + assume {:print "$at(73,5129,5281)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun easy_gas::withdraw_gas_fee [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+760 +procedure {:timeLimit 80} $1_easy_gas_withdraw_gas_fee$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: int; + var $t4: int; + var $t5: $1_easy_gas_GasFeeAddress; + var $t6: $1_account_SignerCapability; + var $t7: int; + var $t8: $signer; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_coin_CoinStore'#0'; + var $t13: int; + var $t14: int; + var $t15: $1_coin_CoinStore'#0'; + var $t16: int; + var $t17: $1_coin_Coin'#0'; + var $t18: $1_coin_CoinStore'#0'; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume {:print "$at(73,4528,4529)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: easy_gas::GasFeeAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0); + ($IsValid'$1_easy_gas_GasFeeAddress'($rsc)))); + + // trace_local[_sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume {:print "$track_local(72,10,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:119:5+1 + assume {:print "$track_local(72,10,1):", $t1} $t1 == $t1; + + // $t3 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:121:42+42 + assume {:print "$at(73,4698,4740)"} true; + call $t3 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(73,4698,4740)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := get_global($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:121:13+13 + if (!$ResourceExists($1_easy_gas_GasFeeAddress_$memory, $t3)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $t3); + } + if ($abort_flag) { + assume {:print "$at(73,4669,4682)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := get_field.cap($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:69+26 + assume {:print "$at(73,4811,4837)"} true; + $t6 := $t5->$cap; + + // assume Identical($t7, select account::SignerCapability.account($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:656:9+30 + assume {:print "$at(18,32788,32818)"} true; + assume ($t7 == $t6->$account); + + // $t8 := account::create_signer_with_capability($t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:30+66 + assume {:print "$at(73,4772,4838)"} true; + call $t8 := $1_account_create_signer_with_capability($t6); + if ($abort_flag) { + assume {:print "$at(73,4772,4838)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[gas_fee_signer]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:122:13+14 + assume {:print "$track_local(72,10,2):", $t8} $t8 == $t8; + + // $t9 := system_addresses::get_core_resource_address() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:129:13+45 + assume {:print "$at(73,5156,5201)"} true; + call $t9 := $1_system_addresses_get_core_resource_address(); + if ($abort_flag) { + assume {:print "$at(73,5156,5201)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // $t10 := (u64)($t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:130:53+15 + assume {:print "$at(73,5255,5270)"} true; + call $t10 := $CastU64($t1); + if ($abort_flag) { + assume {:print "$at(73,5255,5270)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t11, signer::$address_of($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:562:9+47 + assume {:print "$at(32,24737,24784)"} true; + assume ($t11 == $1_signer_$address_of($t8)); + + // assume Identical($t12, global>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:563:9+59 + assume {:print "$at(32,24793,24852)"} true; + assume ($t12 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t11)); + + // assume Identical($t13, select coin::Coin.value>(select coin::CoinStore.coin>($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:564:9+36 + assume {:print "$at(32,24861,24897)"} true; + assume ($t13 == $t12->$coin->$value); + + // assume Identical($t14, signer::$address_of($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:572:9+47 + assume {:print "$at(32,25194,25241)"} true; + assume ($t14 == $1_signer_$address_of($t8)); + + // assume Identical($t15, global>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:573:9+59 + assume {:print "$at(32,25250,25309)"} true; + assume ($t15 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t14)); + + // assume Identical($t16, select coin::Coin.value>(select coin::CoinStore.coin>($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:574:9+36 + assume {:print "$at(32,25318,25354)"} true; + assume ($t16 == $t15->$coin->$value); + + // $t17 := coin::withdraw<#0>($t8, $t10) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:130:13+56 + assume {:print "$at(73,5215,5271)"} true; + call $t17 := $1_coin_withdraw'#0'($t8, $t10); + if ($abort_flag) { + assume {:print "$at(73,5215,5271)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t18, global>($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:336:9+59 + assume {:print "$at(32,15059,15118)"} true; + assume ($t18 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t9)); + + // coin::deposit<#0>($t9, $t17) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:128:9+152 + assume {:print "$at(73,5129,5281)"} true; + call $1_coin_deposit'#0'($t9, $t17); + if ($abort_flag) { + assume {:print "$at(73,5129,5281)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(72,10):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas.move:132:5+1 + assume {:print "$at(73,5287,5288)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun easy_gas_script::update [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+137 +procedure {:timeLimit 80} $1_easy_gas_script_update$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume {:print "$at(74,411,412)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13: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: oracle::UpdateCapability>: ResourceDomain>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($rsc)))); + + // assume forall $rsc: oracle::DataSource, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+137 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume {:print "$track_local(73,2,0):", $t0} $t0 == $t0; + + // trace_local[value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:13:5+1 + assume {:print "$track_local(73,2,1):", $t1} $t1 == $t1; + + // easy_gas::update_oracle<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:14:9+50 + assume {:print "$at(74,492,542)"} true; + call $1_easy_gas_update_oracle'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(74,492,542)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(73,2):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:15:5+1 + assume {:print "$at(74,547,548)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:15:5+1 + assume {:print "$at(74,547,548)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:15:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:15:5+1 + assume {:print "$at(74,547,548)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas_script::register [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+147 +procedure {:timeLimit 80} $1_easy_gas_script_register$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+1 + assume {:print "$at(74,89,90)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+1 + assume $IsValid'u8'($t1); + + // assume forall $rsc: oracle::OracleInfo, oracle_price::PriceOracleInfo>: ResourceDomain, oracle_price::PriceOracleInfo>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+1 + assume {:print "$track_local(73,1,0):", $t0} $t0 == $t0; + + // trace_local[precision]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:5:5+1 + assume {:print "$track_local(73,1,1):", $t1} $t1 == $t1; + + // easy_gas::register_oracle<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:6:9+56 + assume {:print "$at(74,174,230)"} true; + call $1_easy_gas_register_oracle'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(74,174,230)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(73,1):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:7:5+1 + assume {:print "$at(74,235,236)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:7:5+1 + assume {:print "$at(74,235,236)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:7:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:7:5+1 + assume {:print "$at(74,235,236)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas_script::init_data_source [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+163 +procedure {:timeLimit 80} $1_easy_gas_script_init_data_source$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume {:print "$at(74,242,243)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9: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: oracle::UpdateCapability>: ResourceDomain>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0''_$memory, $a_0); + ($IsValid'$1_oracle_UpdateCapability'$1_easy_gas_STCToken'#0'''($rsc)))); + + // assume forall $rsc: oracle::DataSource, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_DataSource'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleFeed, u128>: ResourceDomain, u128>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_easy_gas_STCToken'#0'_u128''($rsc)))); + + // assume forall $rsc: oracle::OracleInfo, oracle_price::PriceOracleInfo>: ResourceDomain, oracle_price::PriceOracleInfo>>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_easy_gas_STCToken'#0'_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+163 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume {:print "$track_local(73,0,0):", $t0} $t0 == $t0; + + // trace_local[init_value]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:9:5+1 + assume {:print "$track_local(73,0,1):", $t1} $t1 == $t1; + + // easy_gas::init_oracle_source<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:10:9+60 + assume {:print "$at(74,338,398)"} true; + call $1_easy_gas_init_oracle_source'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(74,338,398)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(73,0):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:11:5+1 + assume {:print "$at(74,404,405)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:11:5+1 + assume {:print "$at(74,404,405)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:11:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:11:5+1 + assume {:print "$at(74,404,405)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun easy_gas_script::withdraw_gas_fee_entry [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+159 +procedure {:timeLimit 80} $1_easy_gas_script_withdraw_gas_fee_entry$verify(_$t0: $signer, _$t1: int) returns () +{ + // declare local variables + var $t2: int; + var $t0: $signer; + var $t1: int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume {:print "$at(74,554,555)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume $IsValid'u128'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: easy_gas::GasFeeAddress: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0)}(var $rsc := $ResourceValue($1_easy_gas_GasFeeAddress_$memory, $a_0); + ($IsValid'$1_easy_gas_GasFeeAddress'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume {:print "$track_local(73,3,0):", $t0} $t0 == $t0; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:17:5+1 + assume {:print "$track_local(73,3,1):", $t1} $t1 == $t1; + + // easy_gas::withdraw_gas_fee<#0>($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:18:9+54 + assume {:print "$at(74,652,706)"} true; + call $1_easy_gas_withdraw_gas_fee'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(74,652,706)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(73,3):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:19:5+1 + assume {:print "$at(74,712,713)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:19:5+1 + assume {:print "$at(74,712,713)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:19:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/easy_gas_script.move:19:5+1 + assume {:print "$at(74,712,713)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// struct epoch::Epoch at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:16:5+1133 +datatype $1_epoch_Epoch { + $1_epoch_Epoch($number: int, $start_time: int, $start_block_number: int, $end_block_number: int, $block_time_target: int, $reward_per_block: int, $reward_per_uncle_percent: int, $block_difficulty_window: int, $max_uncles_per_block: int, $block_gas_limit: int, $strategy: int, $new_epoch_events: $1_event_EventHandle'$1_epoch_NewEpochEvent') +} +function {:inline} $Update'$1_epoch_Epoch'_number(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(x, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_start_time(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, x, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_start_block_number(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, x, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_end_block_number(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, x, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_block_time_target(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, x, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_reward_per_block(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, x, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_reward_per_uncle_percent(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, x, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_block_difficulty_window(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, x, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_max_uncles_per_block(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, x, s->$block_gas_limit, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_block_gas_limit(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, x, s->$strategy, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_strategy(s: $1_epoch_Epoch, x: int): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, x, s->$new_epoch_events) +} +function {:inline} $Update'$1_epoch_Epoch'_new_epoch_events(s: $1_epoch_Epoch, x: $1_event_EventHandle'$1_epoch_NewEpochEvent'): $1_epoch_Epoch { + $1_epoch_Epoch(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$reward_per_uncle_percent, s->$block_difficulty_window, s->$max_uncles_per_block, s->$block_gas_limit, s->$strategy, x) +} +function $IsValid'$1_epoch_Epoch'(s: $1_epoch_Epoch): bool { + $IsValid'u64'(s->$number) + && $IsValid'u64'(s->$start_time) + && $IsValid'u64'(s->$start_block_number) + && $IsValid'u64'(s->$end_block_number) + && $IsValid'u64'(s->$block_time_target) + && $IsValid'u128'(s->$reward_per_block) + && $IsValid'u64'(s->$reward_per_uncle_percent) + && $IsValid'u64'(s->$block_difficulty_window) + && $IsValid'u64'(s->$max_uncles_per_block) + && $IsValid'u64'(s->$block_gas_limit) + && $IsValid'u8'(s->$strategy) + && $IsValid'$1_event_EventHandle'$1_epoch_NewEpochEvent''(s->$new_epoch_events) +} +function {:inline} $IsEqual'$1_epoch_Epoch'(s1: $1_epoch_Epoch, s2: $1_epoch_Epoch): bool { + s1 == s2 +} +var $1_epoch_Epoch_$memory: $Memory $1_epoch_Epoch; + +// struct epoch::EpochData at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:62:5+286 +datatype $1_epoch_EpochData { + $1_epoch_EpochData($uncles: int, $total_reward: int, $total_gas: int) +} +function {:inline} $Update'$1_epoch_EpochData'_uncles(s: $1_epoch_EpochData, x: int): $1_epoch_EpochData { + $1_epoch_EpochData(x, s->$total_reward, s->$total_gas) +} +function {:inline} $Update'$1_epoch_EpochData'_total_reward(s: $1_epoch_EpochData, x: int): $1_epoch_EpochData { + $1_epoch_EpochData(s->$uncles, x, s->$total_gas) +} +function {:inline} $Update'$1_epoch_EpochData'_total_gas(s: $1_epoch_EpochData, x: int): $1_epoch_EpochData { + $1_epoch_EpochData(s->$uncles, s->$total_reward, x) +} +function $IsValid'$1_epoch_EpochData'(s: $1_epoch_EpochData): bool { + $IsValid'u64'(s->$uncles) + && $IsValid'u128'(s->$total_reward) + && $IsValid'u128'(s->$total_gas) +} +function {:inline} $IsEqual'$1_epoch_EpochData'(s1: $1_epoch_EpochData, s2: $1_epoch_EpochData): bool { + s1 == s2 +} +var $1_epoch_EpochData_$memory: $Memory $1_epoch_EpochData; + +// struct epoch::NewEpochEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:44:5+512 +datatype $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent($number: int, $start_time: int, $start_block_number: int, $end_block_number: int, $block_time_target: int, $reward_per_block: int, $previous_epoch_total_reward: int) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_number(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(x, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_start_time(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, x, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_start_block_number(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, s->$start_time, x, s->$end_block_number, s->$block_time_target, s->$reward_per_block, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_end_block_number(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, s->$start_time, s->$start_block_number, x, s->$block_time_target, s->$reward_per_block, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_block_time_target(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, x, s->$reward_per_block, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_reward_per_block(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, x, s->$previous_epoch_total_reward) +} +function {:inline} $Update'$1_epoch_NewEpochEvent'_previous_epoch_total_reward(s: $1_epoch_NewEpochEvent, x: int): $1_epoch_NewEpochEvent { + $1_epoch_NewEpochEvent(s->$number, s->$start_time, s->$start_block_number, s->$end_block_number, s->$block_time_target, s->$reward_per_block, x) +} +function $IsValid'$1_epoch_NewEpochEvent'(s: $1_epoch_NewEpochEvent): bool { + $IsValid'u64'(s->$number) + && $IsValid'u64'(s->$start_time) + && $IsValid'u64'(s->$start_block_number) + && $IsValid'u64'(s->$end_block_number) + && $IsValid'u64'(s->$block_time_target) + && $IsValid'u128'(s->$reward_per_block) + && $IsValid'u128'(s->$previous_epoch_total_reward) +} +function {:inline} $IsEqual'$1_epoch_NewEpochEvent'(s1: $1_epoch_NewEpochEvent, s2: $1_epoch_NewEpochEvent): bool { + s1 == s2 +} + +// fun epoch::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1282 +procedure {:timeLimit 80} $1_epoch_initialize$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_consensus_config_ConsensusConfig; + var $t2: bool; + var $t3: int; + var $t4: $1_consensus_config_ConsensusConfig; + 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: $1_account_Account; + var $t18: $1_event_EventHandle'$1_epoch_NewEpochEvent'; + var $t19: $1_epoch_Epoch; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: $1_epoch_EpochData; + var $t0: $signer; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'signer': $signer; + var $1_timestamp_CurrentTimeMicroseconds_$memory#729: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory#730: $Memory $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'; + var $1_epoch_Epoch_$memory#731: $Memory $1_epoch_Epoch; + var $1_epoch_EpochData_$memory#732: $Memory $1_epoch_EpochData; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + assume {:print "$at(75,2668,2669)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79: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: on_chain_config::Config: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''($rsc)))); + + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // assume forall $rsc: epoch::EpochData: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_epoch_EpochData_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_EpochData_$memory, $a_0); + ($IsValid'$1_epoch_EpochData'($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1282 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @729 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#729 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @730 := save_mem(on_chain_config::Config) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory#730 := $1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory; + + // @731 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + $1_epoch_Epoch_$memory#731 := $1_epoch_Epoch_$memory; + + // @732 := save_mem(epoch::EpochData) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + $1_epoch_EpochData_$memory#732 := $1_epoch_EpochData_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:79:5+1 + assume {:print "$track_local(74,9,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + assume {:print "$at(75,2758,2810)"} true; + + // assume Identical($t2, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + assume ($t2 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + assume {:print "$at(75,2758,2810)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + assume {:print "$at(75,2758,2810)"} true; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:81:9+52 + assume {:print "$at(75,2758,2810)"} true; + + // $t4 := consensus_config::get_config() on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:83:22+30 + assume {:print "$at(75,2834,2864)"} true; + call $t4 := $1_consensus_config_get_config(); + if ($abort_flag) { + assume {:print "$at(75,2834,2864)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[config]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:83:13+6 + assume {:print "$track_local(74,9,1):", $t4} $t4 == $t4; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:87:25+1 + assume {:print "$at(75,2955,2956)"} true; + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := timestamp::now_milliseconds() on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:88:29+29 + assume {:print "$at(75,2986,3015)"} true; + call $t6 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(75,2986,3015)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:89:37+1 + assume {:print "$at(75,3053,3054)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := consensus_config::epoch_block_count($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:90:35+44 + assume {:print "$at(75,3090,3134)"} true; + call $t8 := $1_consensus_config_epoch_block_count($t4); + if ($abort_flag) { + assume {:print "$at(75,3090,3134)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t9 := consensus_config::base_block_time_target($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:91:36+49 + assume {:print "$at(75,3171,3220)"} true; + call $t9 := $1_consensus_config_base_block_time_target($t4); + if ($abort_flag) { + assume {:print "$at(75,3171,3220)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t10 := consensus_config::base_reward_per_block($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:92:35+48 + assume {:print "$at(75,3256,3304)"} true; + call $t10 := $1_consensus_config_base_reward_per_block($t4); + if ($abort_flag) { + assume {:print "$at(75,3256,3304)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t11 := consensus_config::base_reward_per_uncle_percent($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:93:43+56 + assume {:print "$at(75,3348,3404)"} true; + call $t11 := $1_consensus_config_base_reward_per_uncle_percent($t4); + if ($abort_flag) { + assume {:print "$at(75,3348,3404)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t12 := consensus_config::base_block_difficulty_window($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:94:42+55 + assume {:print "$at(75,3447,3502)"} true; + call $t12 := $1_consensus_config_base_block_difficulty_window($t4); + if ($abort_flag) { + assume {:print "$at(75,3447,3502)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t13 := consensus_config::base_max_uncles_per_block($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:95:39+52 + assume {:print "$at(75,3542,3594)"} true; + call $t13 := $1_consensus_config_base_max_uncles_per_block($t4); + if ($abort_flag) { + assume {:print "$at(75,3542,3594)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t14 := consensus_config::base_block_gas_limit($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:96:34+47 + assume {:print "$at(75,3629,3676)"} true; + call $t14 := $1_consensus_config_base_block_gas_limit($t4); + if ($abort_flag) { + assume {:print "$at(75,3629,3676)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t15 := consensus_config::strategy($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:97:27+35 + assume {:print "$at(75,3704,3739)"} true; + call $t15 := $1_consensus_config_strategy($t4); + if ($abort_flag) { + assume {:print "$at(75,3704,3739)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // $t18 := account::new_event_handle($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:98:35+49 + assume {:print "$at(75,3775,3824)"} true; + call $t18 := $1_account_new_event_handle'$1_epoch_NewEpochEvent'($t0); + if ($abort_flag) { + assume {:print "$at(75,3775,3824)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t19 := pack epoch::Epoch($t5, $t6, $t7, $t8, $t9, $t10, $t11, $t12, $t13, $t14, $t15, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:86:13+916 + assume {:print "$at(75,2923,3839)"} true; + $t19 := $1_epoch_Epoch($t5, $t6, $t7, $t8, $t9, $t10, $t11, $t12, $t13, $t14, $t15, $t18); + + // move_to($t19, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:84:9+7 + assume {:print "$at(75,2874,2881)"} true; + if ($ResourceExists($1_epoch_Epoch_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_epoch_Epoch_$memory := $ResourceUpdate($1_epoch_Epoch_$memory, $t0->$addr, $t19); + } + if ($abort_flag) { + assume {:print "$at(75,2874,2881)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:101:57+1 + assume {:print "$at(75,3908,3909)"} true; + $t20 := 0; + assume $IsValid'u64'($t20); + + // $t21 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:101:74+1 + $t21 := 0; + assume $IsValid'u128'($t21); + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:101:88+1 + $t22 := 0; + assume $IsValid'u128'($t22); + + // $t23 := pack epoch::EpochData($t20, $t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:101:37+54 + $t23 := $1_epoch_EpochData($t20, $t21, $t22); + + // move_to($t23, $t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:101:9+7 + if ($ResourceExists($1_epoch_EpochData_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_epoch_EpochData_$memory := $ResourceUpdate($1_epoch_EpochData_$memory, $t0->$addr, $t23); + } + if ($abort_flag) { + assume {:print "$at(75,3860,3867)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(74,9):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:102:5+1 + assume {:print "$at(75,3949,3950)"} true; +L1: + + // assert Not(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:14:9+84 + assume {:print "$at(76,372,456)"} true; + assert {:msg "assert_failed(76,372,456): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@729](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:15:9+98 + assume {:print "$at(76,465,563)"} true; + assert {:msg "assert_failed(76,465,563): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#729, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@730]>(system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:16:9+104 + assume {:print "$at(76,572,676)"} true; + assert {:msg "assert_failed(76,572,676): function does not abort under this condition"} + !!$ResourceExists($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory#730, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(exists[@731](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:18:9+53 + assume {:print "$at(76,686,739)"} true; + assert {:msg "assert_failed(76,686,739): function does not abort under this condition"} + !$ResourceExists($1_epoch_Epoch_$memory#731, $1_signer_$address_of($t0)); + + // assert Not(exists[@732](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:19:9+57 + assume {:print "$at(76,748,805)"} true; + assert {:msg "assert_failed(76,748,805): function does not abort under this condition"} + !$ResourceExists($1_epoch_EpochData_$memory#732, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:19:9+57 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:102:5+1 + assume {:print "$at(75,3949,3950)"} true; +L2: + + // assert Or(Or(Or(Or(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]()), Not(exists[@729](system_addresses::$get_starcoin_framework[]()))), Not(exists[@730]>(system_addresses::$get_starcoin_framework[]()))), exists[@731](signer::$address_of[]($t0))), exists[@732](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:8:5+633 + assume {:print "$at(76,178,811)"} true; + assert {:msg "assert_failed(76,178,811): abort not covered by any of the `aborts_if` clauses"} + ((((!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#729, $1_system_addresses_$get_starcoin_framework())) || !$ResourceExists($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory#730, $1_system_addresses_$get_starcoin_framework())) || $ResourceExists($1_epoch_Epoch_$memory#731, $1_signer_$address_of($t0))) || $ResourceExists($1_epoch_EpochData_$memory#732, $1_signer_$address_of($t0))); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:8:5+633 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun epoch::number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:390:5+162 +procedure {:timeLimit 80} $1_epoch_number$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#733: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:390:5+1 + assume {:print "$at(75,15357,15358)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @733 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:390:5+1 + $1_epoch_Epoch_$memory#733 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:391:46+42 + assume {:print "$at(75,15444,15486)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,15444,15486)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,10):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:391:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,15423,15436)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,10):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.number($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:392:9+16 + assume {:print "$at(75,15497,15513)"} true; + $t3 := $t2->$number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:392:9+16 + assume {:print "$track_return(74,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:393:5+1 + assume {:print "$at(75,15518,15519)"} true; +L1: + + // assert Not(Not(exists[@733](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:396:9+69 + assume {:print "$at(75,15547,15616)"} true; + assert {:msg "assert_failed(75,15547,15616): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#733, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@733](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:90:9+69 + assume {:print "$at(76,2898,2967)"} true; + assert {:msg "assert_failed(76,2898,2967): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#733, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:90:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:393:5+1 + assume {:print "$at(75,15518,15519)"} true; +L2: + + // assert Or(Not(exists[@733](system_addresses::$get_starcoin_framework[]())), Not(exists[@733](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:89:5+97 + assume {:print "$at(76,2876,2973)"} true; + assert {:msg "assert_failed(76,2876,2973): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#733, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#733, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:89:5+97 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::start_time [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:330:5+170 +procedure {:timeLimit 80} $1_epoch_start_time$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#734: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:330:5+1 + assume {:print "$at(75,13328,13329)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @734 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:330:5+1 + $1_epoch_Epoch_$memory#734 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:331:46+42 + assume {:print "$at(75,13419,13461)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,13419,13461)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,12):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:331:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,13398,13411)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,12):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.start_time($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:332:9+20 + assume {:print "$at(75,13472,13492)"} true; + $t3 := $t2->$start_time; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:332:9+20 + assume {:print "$track_return(74,12,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:333:5+1 + assume {:print "$at(75,13497,13498)"} true; +L1: + + // assert Not(Not(exists[@734](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:336:9+69 + assume {:print "$at(75,13530,13599)"} true; + assert {:msg "assert_failed(75,13530,13599): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#734, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@734](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:64:9+69 + assume {:print "$at(76,2236,2305)"} true; + assert {:msg "assert_failed(76,2236,2305): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#734, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:64:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:333:5+1 + assume {:print "$at(75,13497,13498)"} true; +L2: + + // assert Or(Not(exists[@734](system_addresses::$get_starcoin_framework[]())), Not(exists[@734](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:63:5+101 + assume {:print "$at(76,2210,2311)"} true; + assert {:msg "assert_failed(76,2210,2311): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#734, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#734, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:63:5+101 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::adjust_epoch [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+3518 +procedure {:inline 1} $1_epoch_adjust_epoch(_$t0: $signer, _$t1: int, _$t2: int, _$t3: int, _$t4: int) returns ($ret0: int) +{ + // declare local variables + var $t5: $1_string_String; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: $1_string_String; + var $t10: $1_consensus_config_ConsensusConfig; + var $t11: $Mutation ($1_epoch_EpochData); + var $t12: $Mutation ($1_epoch_Epoch); + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: $Mutation ($1_epoch_Epoch); + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: $Mutation ($1_epoch_EpochData); + var $t33: int; + var $t34: bool; + var $t35: bool; + var $t36: int; + var $t37: bool; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: $1_consensus_config_ConsensusConfig; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: $Mutation (int); + var $t55: $Mutation (int); + var $t56: $Mutation (int); + var $t57: int; + var $t58: int; + var $t59: $Mutation (int); + var $t60: $Mutation (int); + var $t61: $Mutation (int); + var $t62: int; + var $t63: $Mutation (int); + var $t64: int; + var $t65: $Mutation (int); + var $t66: int; + var $t67: $Mutation (int); + var $t68: int; + var $t69: $Mutation (int); + var $t70: int; + var $t71: $Mutation (int); + var $t72: int; + var $t73: int; + var $t74: int; + var $t75: int; + var $t76: bool; + var $t77: int; + var $t78: int; + var $t79: int; + var $t80: int; + var $t81: int; + var $t82: int; + var $t83: int; + var $t84: int; + var $t85: int; + var $t86: Vec (int); + var $t87: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'$1_epoch_Epoch': $1_epoch_Epoch; + var $temp_0'$1_epoch_EpochData': $1_epoch_EpochData; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+1 + assume {:print "$at(75,5545,5546)"} true; + assume {:print "$track_local(74,0,0):", $t0} $t0 == $t0; + + // trace_local[block_number]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+1 + assume {:print "$track_local(74,0,1):", $t1} $t1 == $t1; + + // trace_local[timestamp]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+1 + assume {:print "$track_local(74,0,2):", $t2} $t2 == $t2; + + // trace_local[uncles]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+1 + assume {:print "$track_local(74,0,3):", $t3} $t3 == $t3; + + // trace_local[parent_gas_used]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:138:5+1 + assume {:print "$track_local(74,0,4):", $t4} $t4 == $t4; + + // $t21 := [101, 112, 111, 99, 104, 58, 58, 97, 100, 106, 117, 115, 116, 95, 101, 112, 111, 99, 104, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:146:41+32 + assume {:print "$at(75,5781,5813)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(101, 112, 111, 99), MakeVec4(104, 58, 58, 97)), MakeVec4(100, 106, 117, 115)), MakeVec4(116, 95, 101, 112)), MakeVec4(111, 99, 104, 32)), MakeVec4(124, 32, 69, 110)), MakeVec4(116, 101, 114, 101)), MakeVec1(100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:146:23+51 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(75,5763,5814)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // debug::print($t22) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:146:9+66 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(75,5749,5815)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + assume {:print "$at(75,5826,5878)"} true; + + // assume Identical($t24, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + assume ($t24 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t24) goto L14 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + if ($t24) { goto L14; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 +L14: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + assume {:print "$at(75,5826,5878)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t23)); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + assume {:print "$at(75,5826,5878)"} true; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + goto L12; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 +L13: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:148:9+52 + assume {:print "$at(75,5826,5878)"} true; + + // $t25 := system_addresses::get_starcoin_framework() on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:150:50+42 + assume {:print "$at(75,5930,5972)"} true; + call $t25 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,5930,5972)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t26 := borrow_global($t25) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:150:25+17 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t25)) { + call $ExecFailureAbort(); + } else { + $t26 := $Mutation($Global($t25), EmptyVec(), $ResourceValue($1_epoch_Epoch_$memory, $t25)); + } + if ($abort_flag) { + assume {:print "$at(75,5905,5922)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[epoch_ref]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:150:13+9 + $temp_0'$1_epoch_Epoch' := $Dereference($t26); + assume {:print "$track_local(74,0,12):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // $t27 := get_field.max_uncles_per_block($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:17+30 + assume {:print "$at(75,5991,6021)"} true; + $t27 := $Dereference($t26)->$max_uncles_per_block; + + // $t28 := >=($t27, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:48+2 + call $t28 := $Ge($t27, $t3); + + // if ($t28) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + if ($t28) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + assume {:print "$at(75,5983,6080)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 +L0: + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + assume {:print "$at(75,5983,6080)"} true; + + // $t29 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:83+21 + $t29 := 101; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_argument($t29) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:59+46 + call $t30 := $1_error_invalid_argument($t29); + if ($abort_flag) { + assume {:print "$at(75,6033,6079)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + assume {:print "$at(75,5983,6080)"} true; + assume {:print "$track_abort(74,0):", $t30} $t30 == $t30; + + // $t23 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + $t23 := $t30; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:151:9+97 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:153:55+42 + assume {:print "$at(75,6137,6179)"} true; +L2: + + // $t31 := system_addresses::get_starcoin_framework() on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:153:55+42 + assume {:print "$at(75,6137,6179)"} true; + call $t31 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,6137,6179)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t32 := borrow_global($t31) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:153:26+17 + if (!$ResourceExists($1_epoch_EpochData_$memory, $t31)) { + call $ExecFailureAbort(); + } else { + $t32 := $Mutation($Global($t31), EmptyVec(), $ResourceValue($1_epoch_EpochData_$memory, $t31)); + } + if ($abort_flag) { + assume {:print "$at(75,6108,6125)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[epoch_data]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:153:13+10 + $temp_0'$1_epoch_EpochData' := $Dereference($t32); + assume {:print "$track_local(74,0,11):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t33 := get_field.end_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:64+26 + assume {:print "$at(75,6245,6271)"} true; + $t33 := $Dereference($t26)->$end_block_number; + + // $t34 := <($t1, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:62+1 + call $t34 := $Lt($t1, $t33); + + // if ($t34) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 + if ($t34) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:155:14+5 + assume {:print "$at(75,6288,6293)"} true; +L4: + + // $t35 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:155:14+5 + assume {:print "$at(75,6288,6293)"} true; + $t35 := false; + assume $IsValid'bool'($t35); + + // $t8 := get_field.reward_per_block($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:155:21+26 + $t8 := $Dereference($t26)->$reward_per_block; + + // $t7 := $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 + assume {:print "$at(75,6226,8685)"} true; + $t7 := $t35; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:156:20+12 + assume {:print "$at(75,6342,6354)"} true; +L3: + + // $t36 := get_field.end_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:156:36+26 + assume {:print "$at(75,6358,6384)"} true; + $t36 := $Dereference($t26)->$end_block_number; + + // $t37 := ==($t1, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:156:33+2 + $t37 := $IsEqual'u64'($t1, $t36); + + // if ($t37) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:156:16+2347 + if ($t37) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:21+6 + assume {:print "$at(75,6440,6446)"} true; +L7: + + // $t38 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:31+1 + assume {:print "$at(75,6450,6451)"} true; + $t38 := 0; + assume $IsValid'u64'($t38); + + // $t39 := ==($t3, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:28+2 + $t39 := $IsEqual'u64'($t3, $t38); + + // if ($t39) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + if ($t39) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + assume {:print "$at(75,6432,6500)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 +L8: + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + assume {:print "$at(75,6432,6500)"} true; + + // drop($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + + // $t40 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:58+21 + $t40 := 101; + assume $IsValid'u64'($t40); + + // $t41 := error::invalid_argument($t40) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:34+46 + call $t41 := $1_error_invalid_argument($t40); + if ($abort_flag) { + assume {:print "$at(75,6453,6499)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + assume {:print "$at(75,6432,6500)"} true; + assume {:print "$track_abort(74,0):", $t41} $t41 == $t41; + + // $t23 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + $t23 := $t41; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:158:13+68 + goto L12; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + assume {:print "$at(75,8657,8675)"} true; +L6: + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + assume {:print "$at(75,8657,8675)"} true; + + // drop($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + + // $t42 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:19+12 + $t42 := 19; + assume $IsValid'u64'($t42); + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + assume {:print "$at(75,8657,8675)"} true; + assume {:print "$track_abort(74,0):", $t42} $t42 == $t42; + + // $t23 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + $t23 := $t42; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:203:13+18 + goto L12; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:160:37+9 + assume {:print "$at(75,6594,6603)"} true; +L10: + + // trace_local[now_milli_seconds]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:160:17+17 + assume {:print "$at(75,6574,6591)"} true; + assume {:print "$track_local(74,0,18):", $t2} $t2 == $t2; + + // $t43 := consensus_config::get_config() on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:162:26+30 + assume {:print "$at(75,6631,6661)"} true; + call $t43 := $1_consensus_config_get_config(); + if ($abort_flag) { + assume {:print "$at(75,6631,6661)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[config]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:162:17+6 + assume {:print "$track_local(74,0,10):", $t43} $t43 == $t43; + + // $t44 := get_field.block_time_target($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:163:42+27 + assume {:print "$at(75,6704,6731)"} true; + $t44 := $Dereference($t26)->$block_time_target; + + // trace_local[last_epoch_time_target]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:163:17+22 + assume {:print "$track_local(74,0,13):", $t44} $t44 == $t44; + + // $t45 := get_field.start_time($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:167:17+20 + assume {:print "$at(75,6892,6912)"} true; + $t45 := $Dereference($t26)->$start_time; + + // $t46 := get_field.start_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:169:17+28 + assume {:print "$at(75,6965,6993)"} true; + $t46 := $Dereference($t26)->$start_block_number; + + // $t47 := get_field.end_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:170:17+26 + assume {:print "$at(75,7011,7037)"} true; + $t47 := $Dereference($t26)->$end_block_number; + + // $t48 := get_field.uncles($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:171:17+17 + assume {:print "$at(75,7055,7072)"} true; + $t48 := $Dereference($t32)->$uncles; + + // $t49 := epoch::compute_next_block_time_target($t43, $t44, $t45, $t2, $t46, $t47, $t48) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:164:47+307 + assume {:print "$at(75,6779,7086)"} true; + call $t49 := $1_epoch_compute_next_block_time_target($t43, $t44, $t45, $t2, $t46, $t47, $t48); + if ($abort_flag) { + assume {:print "$at(75,6779,7086)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[new_epoch_block_time_target]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:164:17+27 + assume {:print "$track_local(74,0,16):", $t49} $t49 == $t49; + + // $t50 := consensus_config::do_compute_reward_per_block($t43, $t49) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:173:40+129 + assume {:print "$at(75,7127,7256)"} true; + call $t50 := $1_consensus_config_do_compute_reward_per_block($t43, $t49); + if ($abort_flag) { + assume {:print "$at(75,7127,7256)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[new_reward_per_block]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:173:17+20 + assume {:print "$track_local(74,0,17):", $t50} $t50 == $t50; + + // $t51 := get_field.number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:32+16 + assume {:print "$at(75,7385,7401)"} true; + $t51 := $Dereference($t26)->$number; + + // $t52 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:51+1 + $t52 := 1; + assume $IsValid'u64'($t52); + + // $t53 := +($t51, $t52) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:49+1 + call $t53 := $AddU64($t51, $t52); + if ($abort_flag) { + assume {:print "$at(75,7402,7403)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t54 := borrow_field.number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:13+16 + $t54 := $ChildMutation($t26, 0, $Dereference($t26)->$number); + + // write_ref($t54, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:13+39 + $t54 := $UpdateMutation($t54, $t53); + + // write_back[Reference($t26).number (u64)]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:179:13+39 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_number($Dereference($t26), $Dereference($t54))); + + // $t55 := borrow_field.start_time($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:180:13+20 + assume {:print "$at(75,7419,7439)"} true; + $t55 := $ChildMutation($t26, 1, $Dereference($t26)->$start_time); + + // write_ref($t55, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:180:13+40 + $t55 := $UpdateMutation($t55, $t2); + + // write_back[Reference($t26).start_time (u64)]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:180:13+40 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_start_time($Dereference($t26), $Dereference($t55))); + + // $t56 := borrow_field.start_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:181:13+28 + assume {:print "$at(75,7473,7501)"} true; + $t56 := $ChildMutation($t26, 2, $Dereference($t26)->$start_block_number); + + // write_ref($t56, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:181:13+43 + $t56 := $UpdateMutation($t56, $t1); + + // write_back[Reference($t26).start_block_number (u64)]($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:181:13+43 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_start_block_number($Dereference($t26), $Dereference($t56))); + + // $t57 := consensus_config::epoch_block_count($t43) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:182:57+44 + assume {:print "$at(75,7574,7618)"} true; + call $t57 := $1_consensus_config_epoch_block_count($t43); + if ($abort_flag) { + assume {:print "$at(75,7574,7618)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t58 := +($t1, $t57) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:182:55+1 + call $t58 := $AddU64($t1, $t57); + if ($abort_flag) { + assume {:print "$at(75,7572,7573)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t59 := borrow_field.end_block_number($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:182:13+26 + $t59 := $ChildMutation($t26, 3, $Dereference($t26)->$end_block_number); + + // write_ref($t59, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:182:13+88 + $t59 := $UpdateMutation($t59, $t58); + + // write_back[Reference($t26).end_block_number (u64)]($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:182:13+88 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_end_block_number($Dereference($t26), $Dereference($t59))); + + // $t60 := borrow_field.block_time_target($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:183:13+27 + assume {:print "$at(75,7632,7659)"} true; + $t60 := $ChildMutation($t26, 4, $Dereference($t26)->$block_time_target); + + // write_ref($t60, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:183:13+57 + $t60 := $UpdateMutation($t60, $t49); + + // write_back[Reference($t26).block_time_target (u64)]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:183:13+57 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_block_time_target($Dereference($t26), $Dereference($t60))); + + // $t61 := borrow_field.reward_per_block($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:184:13+26 + assume {:print "$at(75,7703,7729)"} true; + $t61 := $ChildMutation($t26, 5, $Dereference($t26)->$reward_per_block); + + // write_ref($t61, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:184:13+49 + $t61 := $UpdateMutation($t61, $t50); + + // write_back[Reference($t26).reward_per_block (u128)]($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:184:13+49 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_reward_per_block($Dereference($t26), $Dereference($t61))); + + // $t62 := consensus_config::base_reward_per_uncle_percent($t43) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:185:50+56 + assume {:print "$at(75,7803,7859)"} true; + call $t62 := $1_consensus_config_base_reward_per_uncle_percent($t43); + if ($abort_flag) { + assume {:print "$at(75,7803,7859)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t63 := borrow_field.reward_per_uncle_percent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:185:13+34 + $t63 := $ChildMutation($t26, 6, $Dereference($t26)->$reward_per_uncle_percent); + + // write_ref($t63, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:185:13+93 + $t63 := $UpdateMutation($t63, $t62); + + // write_back[Reference($t26).reward_per_uncle_percent (u64)]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:185:13+93 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_reward_per_uncle_percent($Dereference($t26), $Dereference($t63))); + + // $t64 := consensus_config::base_block_difficulty_window($t43) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:186:49+55 + assume {:print "$at(75,7909,7964)"} true; + call $t64 := $1_consensus_config_base_block_difficulty_window($t43); + if ($abort_flag) { + assume {:print "$at(75,7909,7964)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t65 := borrow_field.block_difficulty_window($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:186:13+33 + $t65 := $ChildMutation($t26, 7, $Dereference($t26)->$block_difficulty_window); + + // write_ref($t65, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:186:13+91 + $t65 := $UpdateMutation($t65, $t64); + + // write_back[Reference($t26).block_difficulty_window (u64)]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:186:13+91 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_block_difficulty_window($Dereference($t26), $Dereference($t65))); + + // $t66 := consensus_config::base_max_uncles_per_block($t43) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:187:46+52 + assume {:print "$at(75,8011,8063)"} true; + call $t66 := $1_consensus_config_base_max_uncles_per_block($t43); + if ($abort_flag) { + assume {:print "$at(75,8011,8063)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t67 := borrow_field.max_uncles_per_block($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:187:13+30 + $t67 := $ChildMutation($t26, 8, $Dereference($t26)->$max_uncles_per_block); + + // write_ref($t67, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:187:13+85 + $t67 := $UpdateMutation($t67, $t66); + + // write_back[Reference($t26).max_uncles_per_block (u64)]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:187:13+85 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_max_uncles_per_block($Dereference($t26), $Dereference($t67))); + + // $t68 := consensus_config::strategy($t43) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:188:34+35 + assume {:print "$at(75,8098,8133)"} true; + call $t68 := $1_consensus_config_strategy($t43); + if ($abort_flag) { + assume {:print "$at(75,8098,8133)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t69 := borrow_field.strategy($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:188:13+18 + $t69 := $ChildMutation($t26, 10, $Dereference($t26)->$strategy); + + // write_ref($t69, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:188:13+56 + $t69 := $UpdateMutation($t69, $t68); + + // write_back[Reference($t26).strategy (u8)]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:188:13+56 + $t26 := $UpdateMutation($t26, $Update'$1_epoch_Epoch'_strategy($Dereference($t26), $Dereference($t69))); + + // $t70 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:190:33+1 + assume {:print "$at(75,8168,8169)"} true; + $t70 := 0; + assume $IsValid'u64'($t70); + + // $t71 := borrow_field.uncles($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:190:13+17 + $t71 := $ChildMutation($t32, 0, $Dereference($t32)->$uncles); + + // write_ref($t71, $t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:190:13+21 + $t71 := $UpdateMutation($t71, $t70); + + // write_back[Reference($t32).uncles (u64)]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:190:13+21 + $t32 := $UpdateMutation($t32, $Update'$1_epoch_EpochData'_uncles($Dereference($t32), $Dereference($t71))); + + // $t72 := get_field.total_gas($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:191:40+20 + assume {:print "$at(75,8210,8230)"} true; + $t72 := $Dereference($t32)->$total_gas; + + // $t73 := (u128)($t4) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:191:63+25 + call $t73 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(75,8233,8258)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t74 := +($t72, $t73) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:191:61+1 + call $t74 := $AddU128($t72, $t73); + if ($abort_flag) { + assume {:print "$at(75,8231,8232)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[last_epoch_total_gas]($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:191:17+20 + assume {:print "$track_local(74,0,14):", $t74} $t74 == $t74; + + // epoch::adjust_gas_limit($t43, $t26, $t44, $t49, $t74) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:192:13+205 + assume {:print "$at(75,8272,8477)"} true; + call $t26 := $1_epoch_adjust_gas_limit($t43, $t26, $t44, $t49, $t74); + if ($abort_flag) { + assume {:print "$at(75,8272,8477)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t75 := get_field.total_reward($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:199:41+23 + assume {:print "$at(75,8519,8542)"} true; + $t75 := $Dereference($t32)->$total_reward; + + // epoch::emit_epoch_event($t26, $t75) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:199:13+52 + call $t26 := $1_epoch_emit_epoch_event($t26, $t75); + if ($abort_flag) { + assume {:print "$at(75,8491,8543)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t76 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:200:14+4 + assume {:print "$at(75,8558,8562)"} true; + $t76 := true; + assume $IsValid'bool'($t76); + + // $t8 := $t50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 + assume {:print "$at(75,6226,8685)"} true; + $t8 := $t50; + + // $t7 := $t76 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 + $t7 := $t76; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:45+2459 +L5: + + // trace_local[reward_per_block]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:25+16 + assume {:print "$at(75,6206,6222)"} true; + assume {:print "$track_local(74,0,20):", $t8} $t8 == $t8; + + // trace_local[new_epoch]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:154:14+9 + assume {:print "$track_local(74,0,15):", $t7} $t7 == $t7; + + // $t77 := get_field.reward_per_uncle_percent($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:33+34 + assume {:print "$at(75,8759,8793)"} true; + $t77 := $Dereference($t26)->$reward_per_uncle_percent; + + // write_back[epoch::Epoch@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:33+34 + $1_epoch_Epoch_$memory := $ResourceUpdate($1_epoch_Epoch_$memory, $GlobalLocationAddress($t26), + $Dereference($t26)); + + // $t78 := (u128)($t77) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:32+44 + call $t78 := $CastU128($t77); + if ($abort_flag) { + assume {:print "$at(75,8758,8802)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t79 := *($t8, $t78) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:30+1 + call $t79 := $MulU128($t8, $t78); + if ($abort_flag) { + assume {:print "$at(75,8756,8757)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t80 := (u128)($t3) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:79+16 + call $t80 := $CastU128($t3); + if ($abort_flag) { + assume {:print "$at(75,8805,8821)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t81 := *($t79, $t80) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:77+1 + call $t81 := $MulU128($t79, $t80); + if ($abort_flag) { + assume {:print "$at(75,8803,8804)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t82 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:99+7 + $t82 := 100; + assume $IsValid'u64'($t82); + + // $t83 := (u128)($t82) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:98+17 + call $t83 := $CastU128($t82); + if ($abort_flag) { + assume {:print "$at(75,8824,8841)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t84 := /($t81, $t83) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:206:96+1 + call $t84 := $Div($t81, $t83); + if ($abort_flag) { + assume {:print "$at(75,8822,8823)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // $t85 := +($t8, $t84) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:205:39+1 + assume {:print "$at(75,8725,8726)"} true; + call $t85 := $AddU128($t8, $t84); + if ($abort_flag) { + assume {:print "$at(75,8725,8726)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_local[reward]($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:205:13+6 + assume {:print "$track_local(74,0,19):", $t85} $t85 == $t85; + + // epoch::update_epoch_data($t32, $t7, $t85, $t3, $t4) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:207:9+73 + assume {:print "$at(75,8851,8924)"} true; + call $t32 := $1_epoch_update_epoch_data($t32, $t7, $t85, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(75,8851,8924)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // write_back[epoch::EpochData@]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:207:9+73 + $1_epoch_EpochData_$memory := $ResourceUpdate($1_epoch_EpochData_$memory, $GlobalLocationAddress($t32), + $Dereference($t32)); + + // $t86 := [101, 112, 111, 99, 104, 58, 58, 97, 100, 106, 117, 115, 116, 95, 101, 112, 111, 99, 104, 32, 124, 32, 69, 120, 105, 116, 101, 100, 44, 32, 114, 101, 119, 97, 114, 100, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:209:41+41 + assume {:print "$at(75,8967,9008)"} true; + $t86 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(101, 112, 111, 99), MakeVec4(104, 58, 58, 97)), MakeVec4(100, 106, 117, 115)), MakeVec4(116, 95, 101, 112)), MakeVec4(111, 99, 104, 32)), MakeVec4(124, 32, 69, 120)), MakeVec4(105, 116, 101, 100)), MakeVec4(44, 32, 114, 101)), MakeVec4(119, 97, 114, 100)), MakeVec2(58, 32)); + assume $IsValid'vec'u8''($t86); + + // $t87 := string::utf8($t86) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:209:23+60 + call $t87 := $1_string_utf8($t86); + if ($abort_flag) { + assume {:print "$at(75,8949,9009)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // debug::print($t87) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:209:9+75 + call $1_debug_print'$1_string_String'($t87); + if ($abort_flag) { + assume {:print "$at(75,8935,9010)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // debug::print($t85) on_abort goto L12 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:210:9+21 + assume {:print "$at(75,9020,9041)"} true; + call $1_debug_print'u128'($t85); + if ($abort_flag) { + assume {:print "$at(75,9020,9041)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(74,0):", $t23} $t23 == $t23; + goto L12; + } + + // trace_return[0]($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:211:9+6 + assume {:print "$at(75,9051,9057)"} true; + assume {:print "$track_return(74,0,0):", $t85} $t85 == $t85; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:212:5+1 + assume {:print "$at(75,9062,9063)"} true; +L11: + + // return $t85 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:212:5+1 + assume {:print "$at(75,9062,9063)"} true; + $ret0 := $t85; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:212:5+1 +L12: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:212:5+1 + assume {:print "$at(75,9062,9063)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun epoch::uncles [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:340:5+172 +procedure {:timeLimit 80} $1_epoch_uncles$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_EpochData; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_EpochData_$memory#737: $Memory $1_epoch_EpochData; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::EpochData: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:340:5+1 + assume {:print "$at(75,13654,13655)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_EpochData_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_EpochData_$memory, $a_0); + ($IsValid'$1_epoch_EpochData'($rsc)))); + + // @737 := save_mem(epoch::EpochData) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:340:5+1 + $1_epoch_EpochData_$memory#737 := $1_epoch_EpochData_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:341:51+42 + assume {:print "$at(75,13750,13792)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,13750,13792)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,14):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:341:26+13 + if (!$ResourceExists($1_epoch_EpochData_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_EpochData_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,13725,13738)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,14):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.uncles($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:342:9+17 + assume {:print "$at(75,13803,13820)"} true; + $t3 := $t2->$uncles; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:342:9+17 + assume {:print "$track_return(74,14,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:343:5+1 + assume {:print "$at(75,13825,13826)"} true; +L1: + + // assert Not(Not(exists[@737](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:346:9+73 + assume {:print "$at(75,13854,13927)"} true; + assert {:msg "assert_failed(75,13854,13927): function does not abort under this condition"} + !!$ResourceExists($1_epoch_EpochData_$memory#737, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@737](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:69:9+73 + assume {:print "$at(76,2340,2413)"} true; + assert {:msg "assert_failed(76,2340,2413): function does not abort under this condition"} + !!$ResourceExists($1_epoch_EpochData_$memory#737, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:69:9+73 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:343:5+1 + assume {:print "$at(75,13825,13826)"} true; +L2: + + // assert Or(Not(exists[@737](system_addresses::$get_starcoin_framework[]())), Not(exists[@737](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:68:5+101 + assume {:print "$at(76,2318,2419)"} true; + assert {:msg "assert_failed(76,2318,2419): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_EpochData_$memory#737, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_EpochData_$memory#737, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:68:5+101 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::adjust_gas_limit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+563 +procedure {:inline 1} $1_epoch_adjust_gas_limit(_$t0: $1_consensus_config_ConsensusConfig, _$t1: $Mutation ($1_epoch_Epoch), _$t2: int, _$t3: int, _$t4: int) returns ($ret0: $Mutation ($1_epoch_Epoch)) +{ + // declare local variables + var $t5: $1_option_Option'u64'; + var $t6: int; + var $t7: $1_option_Option'u64'; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: $Mutation (int); + var $t0: $1_consensus_config_ConsensusConfig; + var $t1: $Mutation ($1_epoch_Epoch); + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'$1_epoch_Epoch': $1_epoch_Epoch; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+1 + assume {:print "$at(75,9070,9071)"} true; + assume {:print "$track_local(74,1,0):", $t0} $t0 == $t0; + + // trace_local[epoch_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+1 + $temp_0'$1_epoch_Epoch' := $Dereference($t1); + assume {:print "$track_local(74,1,1):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // trace_local[last_epoch_time_target]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+1 + assume {:print "$track_local(74,1,2):", $t2} $t2 == $t2; + + // trace_local[new_epoch_time_target]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+1 + assume {:print "$track_local(74,1,3):", $t3} $t3 == $t3; + + // trace_local[last_epoch_total_gas]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:215:5+1 + assume {:print "$track_local(74,1,4):", $t4} $t4 == $t4; + + // $t6 := get_field.block_gas_limit($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:226:13+25 + assume {:print "$at(75,9423,9448)"} true; + $t6 := $Dereference($t1)->$block_gas_limit; + + // $t7 := epoch::compute_gas_limit($t0, $t2, $t3, $t6, $t4) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:222:29+191 + assume {:print "$at(75,9301,9492)"} true; + call $t7 := $1_epoch_compute_gas_limit($t0, $t2, $t3, $t6, $t4); + if ($abort_flag) { + assume {:print "$at(75,9301,9492)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(74,1):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[new_gas_limit]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:222:13+13 + assume {:print "$track_local(74,1,5):", $t7} $t7 == $t7; + + // $t9 := opaque begin: option::is_some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:13+31 + assume {:print "$at(75,9506,9537)"} true; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:13+31 + assume $IsValid'bool'($t9); + + // assume Eq($t9, option::spec_is_some($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:13+31 + assume $IsEqual'bool'($t9, $1_option_spec_is_some'u64'($t7)); + + // $t9 := opaque end: option::is_some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:13+31 + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:62+13 + assume {:print "$at(75,9602,9615)"} true; +L1: + + // $t10 := opaque begin: option::destroy_some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume {:print "$at(75,9581,9616)"} true; + + // assume Identical($t11, option::spec_is_none($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume ($t11 == $1_option_spec_is_none'u64'($t7)); + + // if ($t11) goto L7 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + if ($t11) { goto L7; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 +L6: + + // assume And(option::spec_is_none($t7), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume {:print "$at(75,9581,9616)"} true; + assume ($1_option_spec_is_none'u64'($t7) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume {:print "$at(75,9581,9616)"} true; + assume {:print "$track_abort(74,1):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 +L5: + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume {:print "$at(75,9581,9616)"} true; + assume $IsValid'u64'($t10); + + // assume Eq($t10, option::spec_borrow($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + assume $IsEqual'u64'($t10, $1_option_spec_borrow'u64'($t7)); + + // $t10 := opaque end: option::destroy_some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:41+35 + + // $t12 := borrow_field.block_gas_limit($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:13+25 + $t12 := $ChildMutation($t1, 9, $Dereference($t1)->$block_gas_limit); + + // write_ref($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:13+63 + $t12 := $UpdateMutation($t12, $t10); + + // write_back[Reference($t1).block_gas_limit (u64)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:13+63 + $t1 := $UpdateMutation($t1, $Update'$1_epoch_Epoch'_block_gas_limit($Dereference($t1), $Dereference($t12))); + + // trace_local[epoch_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:230:13+63 + $temp_0'$1_epoch_Epoch' := $Dereference($t1); + assume {:print "$track_local(74,1,1):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 + assume {:print "$at(75,9502,9627)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 +L0: + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 + assume {:print "$at(75,9502,9627)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 +L2: + + // trace_local[epoch_ref]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:229:9+125 + assume {:print "$at(75,9502,9627)"} true; + $temp_0'$1_epoch_Epoch' := $Dereference($t1); + assume {:print "$track_local(74,1,1):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:232:5+1 + assume {:print "$at(75,9632,9633)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:232:5+1 + assume {:print "$at(75,9632,9633)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:232:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:232:5+1 + assume {:print "$at(75,9632,9633)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t1) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + +} + +// fun epoch::block_gas_limit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:360:5+180 +procedure {:timeLimit 80} $1_epoch_block_gas_limit$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#738: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:360:5+1 + assume {:print "$at(75,14320,14321)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @738 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:360:5+1 + $1_epoch_Epoch_$memory#738 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:361:46+42 + assume {:print "$at(75,14416,14458)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,14416,14458)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:361:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,14395,14408)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.block_gas_limit($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:362:9+25 + assume {:print "$at(75,14469,14494)"} true; + $t3 := $t2->$block_gas_limit; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:362:9+25 + assume {:print "$track_return(74,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:363:5+1 + assume {:print "$at(75,14499,14500)"} true; +L1: + + // assert Not(Not(exists[@738](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:366:9+69 + assume {:print "$at(75,14537,14606)"} true; + assert {:msg "assert_failed(75,14537,14606): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#738, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@738](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:78:9+69 + assume {:print "$at(76,2567,2636)"} true; + assert {:msg "assert_failed(76,2567,2636): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#738, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:78:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:363:5+1 + assume {:print "$at(75,14499,14500)"} true; +L2: + + // assert Or(Not(exists[@738](system_addresses::$get_starcoin_framework[]())), Not(exists[@738](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:77:5+106 + assume {:print "$at(76,2536,2642)"} true; + assert {:msg "assert_failed(76,2536,2642): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#738, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#738, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:77:5+106 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::block_time_target [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:400:5+184 +procedure {:timeLimit 80} $1_epoch_block_time_target$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#739: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:400:5+1 + assume {:print "$at(75,15666,15667)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @739 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:400:5+1 + $1_epoch_Epoch_$memory#739 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:401:46+42 + assume {:print "$at(75,15764,15806)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,15764,15806)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:401:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,15743,15756)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.block_time_target($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:402:9+27 + assume {:print "$at(75,15817,15844)"} true; + $t3 := $t2->$block_time_target; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:402:9+27 + assume {:print "$track_return(74,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:403:5+1 + assume {:print "$at(75,15849,15850)"} true; +L1: + + // assert Not(Not(exists[@739](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:406:9+69 + assume {:print "$at(75,15889,15958)"} true; + assert {:msg "assert_failed(75,15889,15958): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#739, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@739](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:94:9+69 + assume {:print "$at(76,3012,3081)"} true; + assert {:msg "assert_failed(76,3012,3081): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#739, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:94:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:403:5+1 + assume {:print "$at(75,15849,15850)"} true; +L2: + + // assert Or(Not(exists[@739](system_addresses::$get_starcoin_framework[]())), Not(exists[@739](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:93:5+108 + assume {:print "$at(76,2979,3087)"} true; + assert {:msg "assert_failed(76,2979,3087): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#739, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#739, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:93:5+108 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::compute_gas_limit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1602 +procedure {:inline 1} $1_epoch_compute_gas_limit(_$t0: $1_consensus_config_ConsensusConfig, _$t1: int, _$t2: int, _$t3: int, _$t4: int) returns ($ret0: $1_option_Option'u64') +{ + // declare local variables + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $1_option_Option'u64'; + 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: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: bool; + var $t32: $1_option_Option'u64'; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: bool; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: $1_option_Option'u64'; + var $t42: bool; + var $t43: bool; + var $t44: int; + var $t45: int; + var $t46: $1_option_Option'u64'; + var $t0: $1_consensus_config_ConsensusConfig; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'bool': bool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1 + assume {:print "$at(75,9688,9689)"} true; + assume {:print "$track_local(74,4,0):", $t0} $t0 == $t0; + + // trace_local[last_epoch_time_target]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1 + assume {:print "$track_local(74,4,1):", $t1} $t1 == $t1; + + // trace_local[new_epoch_time_target]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1 + assume {:print "$track_local(74,4,2):", $t2} $t2 == $t2; + + // trace_local[last_epoch_block_gas_limit]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1 + assume {:print "$track_local(74,4,3):", $t3} $t3 == $t3; + + // trace_local[last_epoch_total_gas]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:235:5+1 + assume {:print "$track_local(74,4,4):", $t4} $t4 == $t4; + + // $t14 := consensus_config::epoch_block_count($t0) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:242:34+43 + assume {:print "$at(75,9963,10006)"} true; + call $t14 := $1_consensus_config_epoch_block_count($t0); + if ($abort_flag) { + assume {:print "$at(75,9963,10006)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t16 := (u128)($t14) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:242:33+53 + call $t16 := $CastU128($t14); + if ($abort_flag) { + assume {:print "$at(75,9962,10015)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_local[epoch_block_count]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:242:13+17 + assume {:print "$track_local(74,4,9):", $t16} $t16 == $t16; + + // $t17 := (u128)($t3) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:244:13+36 + assume {:print "$at(75,10106,10142)"} true; + call $t17 := $CastU128($t3); + if ($abort_flag) { + assume {:print "$at(75,10106,10142)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t18 := *($t17, $t16) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:244:50+1 + call $t18 := $MulU128($t17, $t16); + if ($abort_flag) { + assume {:print "$at(75,10143,10144)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t19 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:246:14+7 + assume {:print "$at(75,10203,10210)"} true; + $t19 := 100; + assume $IsValid'u64'($t19); + + // $t20 := (u128)($t19) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:246:13+17 + call $t20 := $CastU128($t19); + if ($abort_flag) { + assume {:print "$at(75,10202,10219)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_local[c#132]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(74,4,8):", $t20} $t20 == $t20; + + // trace_local[a#130]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(74,4,6):", $t18} $t18 == $t18; + + // $t21 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t21 := 0; + assume $IsValid'u128'($t21); + + // $t22 := !=($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t22 := !$IsEqual'u128'($t20, $t21); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L0: + + // $t23 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t23 := 4; + assume $IsValid'u64'($t23); + + // $t24 := error::invalid_argument($t23) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t24 := $1_error_invalid_argument($t23); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(74,4):", $t24} $t24 == $t24; + + // $t15 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t15 := $t24; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:243:36+20 + assume {:print "$at(75,10052,10072)"} true; +L2: + + // $t25 := (u256)($t18) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t25 := $CastU256($t18); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t26 := 80 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + $t26 := 80; + assume $IsValid'u256'($t26); + + // $t27 := *($t25, $t26) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t27 := $MulU256($t25, $t26); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t28 := (u256)($t20) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t28 := $CastU256($t20); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t29 := /($t27, $t28) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t29 := $Div($t27, $t28); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t30 := (u128)($t29) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t30 := $CastU128($t29); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t31 := >=($t4, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:243:57+2 + assume {:print "$at(75,10073,10075)"} true; + call $t31 := $Ge($t4, $t30); + + // trace_local[gas_limit_threshold]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:243:13+19 + assume {:print "$track_local(74,4,10):", $t31} $t31 == $t31; + + // $t32 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:29+19 + assume {:print "$at(75,10260,10279)"} true; + + // assume And(WellFormed($t32), Le(Len(select option::Option.vec($t32)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:29+19 + assume ($IsValid'$1_option_Option'u64''($t32) && (LenVec($t32->$vec) <= 1)); + + // assume Eq>($t32, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:29+19 + assume $IsEqual'$1_option_Option'u64''($t32, $1_option_spec_none'u64'()); + + // $t32 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:29+19 + + // $t13 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:13+13 + $t13 := $t32; + + // trace_local[new_gas_limit]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:248:13+13 + assume {:print "$track_local(74,4,13):", $t32} $t32 == $t32; + + // $t33 := consensus_config::min_block_time_target($t0) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:250:37+47 + assume {:print "$at(75,10318,10365)"} true; + call $t33 := $1_consensus_config_min_block_time_target($t0); + if ($abort_flag) { + assume {:print "$at(75,10318,10365)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_local[min_block_time_target]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:250:13+21 + assume {:print "$track_local(74,4,12):", $t33} $t33 == $t33; + + // $t34 := consensus_config::max_block_time_target($t0) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:251:37+47 + assume {:print "$at(75,10403,10450)"} true; + call $t34 := $1_consensus_config_max_block_time_target($t0); + if ($abort_flag) { + assume {:print "$at(75,10403,10450)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_local[max_block_time_target]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:251:13+21 + assume {:print "$track_local(74,4,11):", $t34} $t34 == $t34; + + // $t35 := consensus_config::base_block_gas_limit($t0) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:252:36+46 + assume {:print "$at(75,10487,10533)"} true; + call $t35 := $1_consensus_config_base_block_gas_limit($t0); + if ($abort_flag) { + assume {:print "$at(75,10487,10533)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // trace_local[base_block_gas_limit]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:252:13+20 + assume {:print "$track_local(74,4,7):", $t35} $t35 == $t35; + + // $t36 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:253:36+2 + assume {:print "$at(75,10570,10572)"} true; + $t36 := $IsEqual'u64'($t1, $t2); + + // if ($t36) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:253:9+717 + if ($t36) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:254:17+21 + assume {:print "$at(75,10614,10635)"} true; +L4: + + // $t37 := ==($t2, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:254:39+2 + assume {:print "$at(75,10636,10638)"} true; + $t37 := $IsEqual'u64'($t2, $t33); + + // $t38 := &&($t37, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:254:64+2 + call $t38 := $And($t37, $t31); + + // if ($t38) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:254:13+640 + if ($t38) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:256:21+26 + assume {:print "$at(75,10774,10800)"} true; +L6: + + // $t39 := 110 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:257:21+3 + assume {:print "$at(75,10822,10825)"} true; + $t39 := 110; + assume $IsValid'u64'($t39); + + // $t40 := epoch::in_or_decrease_gas_limit($t3, $t39, $t35) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:255:42+157 + assume {:print "$at(75,10728,10885)"} true; + call $t40 := $1_epoch_in_or_decrease_gas_limit($t3, $t39, $t35); + if ($abort_flag) { + assume {:print "$at(75,10728,10885)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t41 := opaque begin: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:33+32 + assume {:print "$at(75,10919,10951)"} true; + + // assume And(WellFormed($t41), Le(Len(select option::Option.vec($t41)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:33+32 + assume ($IsValid'$1_option_Option'u64''($t41) && (LenVec($t41->$vec) <= 1)); + + // assume Eq>($t41, option::spec_some($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:33+32 + assume $IsEqual'$1_option_Option'u64''($t41, $1_option_spec_some'u64'($t40)); + + // $t41 := opaque end: option::some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:33+32 + + // $t13 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:17+13 + $t13 := $t41; + + // trace_local[new_gas_limit]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:260:17+13 + assume {:print "$track_local(74,4,13):", $t41} $t41 == $t41; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:254:13+640 + assume {:print "$at(75,10610,11250)"} true; + goto L3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+21 + assume {:print "$at(75,10976,10997)"} true; +L5: + + // $t42 := ==($t2, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:46+2 + assume {:print "$at(75,10998,11000)"} true; + $t42 := $IsEqual'u64'($t2, $t34); + + // if ($t42) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 + if ($t42) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:75+19 +L8: + + // $t5 := !($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:74+1 + assume {:print "$at(75,11026,11027)"} true; + call $t5 := $Not($t31); + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 + goto L9; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 +L7: + + // $t43 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 + assume {:print "$at(75,10976,11046)"} true; + $t43 := false; + assume $IsValid'bool'($t43); + + // $t5 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 + $t5 := $t43; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:24+70 +L9: + + // if ($t5) goto L10 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:261:20+278 + assume {:print "$at(75,10972,11250)"} true; + if ($t5) { goto L10; } else { goto L3; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:262:67+26 + assume {:print "$at(75,11116,11142)"} true; +L10: + + // $t44 := 90 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:262:95+2 + assume {:print "$at(75,11144,11146)"} true; + $t44 := 90; + assume $IsValid'u64'($t44); + + // $t45 := epoch::in_or_decrease_gas_limit($t3, $t44, $t35) on_abort goto L12 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:262:42+78 + call $t45 := $1_epoch_in_or_decrease_gas_limit($t3, $t44, $t35); + if ($abort_flag) { + assume {:print "$at(75,11091,11169)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,4):", $t15} $t15 == $t15; + goto L12; + } + + // $t46 := opaque begin: option::some($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:33+32 + assume {:print "$at(75,11203,11235)"} true; + + // assume And(WellFormed($t46), Le(Len(select option::Option.vec($t46)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:33+32 + assume ($IsValid'$1_option_Option'u64''($t46) && (LenVec($t46->$vec) <= 1)); + + // assume Eq>($t46, option::spec_some($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:33+32 + assume $IsEqual'$1_option_Option'u64''($t46, $1_option_spec_some'u64'($t45)); + + // $t46 := opaque end: option::some($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:33+32 + + // $t13 := $t46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:17+13 + $t13 := $t46; + + // trace_local[new_gas_limit]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:263:17+13 + assume {:print "$track_local(74,4,13):", $t46} $t46 == $t46; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:267:9+13 + assume {:print "$at(75,11271,11284)"} true; +L3: + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:267:9+13 + assume {:print "$at(75,11271,11284)"} true; + assume {:print "$track_return(74,4,0):", $t13} $t13 == $t13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:268:5+1 + assume {:print "$at(75,11289,11290)"} true; +L11: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:268:5+1 + assume {:print "$at(75,11289,11290)"} true; + $ret0 := $t13; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:268:5+1 +L12: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:268:5+1 + assume {:print "$at(75,11289,11290)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun epoch::compute_next_block_time_target [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1470 +procedure {:inline 1} $1_epoch_compute_next_block_time_target(_$t0: $1_consensus_config_ConsensusConfig, _$t1: int, _$t2: int, _$t3: int, _$t4: int, _$t5: int, _$t6: int) returns ($ret0: int) +{ + // declare local variables + 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 $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: bool; + var $t0: $1_consensus_config_ConsensusConfig; + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $temp_0'$1_consensus_config_ConsensusConfig': $1_consensus_config_ConsensusConfig; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // bytecode translation starts here + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$at(75,3996,3997)"} true; + assume {:print "$track_local(74,5,0):", $t0} $t0 == $t0; + + // trace_local[last_epoch_time_target]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,1):", $t1} $t1 == $t1; + + // trace_local[epoch_start_time]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,2):", $t2} $t2 == $t2; + + // trace_local[now_milli_second]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,3):", $t3} $t3 == $t3; + + // trace_local[start_block_number]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,4):", $t4} $t4 == $t4; + + // trace_local[end_block_number]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,5):", $t5} $t5 == $t5; + + // trace_local[total_uncles]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:105:5+1 + assume {:print "$track_local(74,5,6):", $t6} $t6 == $t6; + + // $t14 := -($t3, $t2) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:114:43+1 + assume {:print "$at(75,4317,4318)"} true; + call $t14 := $Sub($t3, $t2); + if ($abort_flag) { + assume {:print "$at(75,4317,4318)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[total_time]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:114:13+10 + assume {:print "$track_local(74,5,12):", $t14} $t14 == $t14; + + // $t16 := -($t5, $t4) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:115:39+1 + assume {:print "$at(75,4375,4376)"} true; + call $t16 := $Sub($t5, $t4); + if ($abort_flag) { + assume {:print "$at(75,4375,4376)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[blocks]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:115:13+6 + assume {:print "$track_local(74,5,8):", $t16} $t16 == $t16; + + // $t17 := /($t14, $t16) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:116:41+1 + assume {:print "$at(75,4437,4438)"} true; + call $t17 := $Div($t14, $t16); + if ($abort_flag) { + assume {:print "$at(75,4437,4438)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[avg_block_time]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:116:13+14 + assume {:print "$track_local(74,5,7):", $t17} $t17 == $t17; + + // $t18 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:117:42+8 + assume {:print "$at(75,4488,4496)"} true; + $t18 := 1000; + assume $IsValid'u64'($t18); + + // $t19 := *($t6, $t18) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:117:40+1 + call $t19 := $MulU64($t6, $t18); + if ($abort_flag) { + assume {:print "$at(75,4486,4487)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t20 := /($t19, $t16) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:117:51+1 + call $t20 := $Div($t19, $t16); + if ($abort_flag) { + assume {:print "$at(75,4497,4498)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[uncles_rate]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:117:13+11 + assume {:print "$track_local(74,5,13):", $t20} $t20 == $t20; + + // $t21 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:44+8 + assume {:print "$at(75,4550,4558)"} true; + $t21 := 1000; + assume $IsValid'u64'($t21); + + // $t22 := +($t21, $t20) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:53+1 + call $t22 := $AddU64($t21, $t20); + if ($abort_flag) { + assume {:print "$at(75,4559,4560)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t23 := *($t22, $t17) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:68+1 + call $t23 := $MulU64($t22, $t17); + if ($abort_flag) { + assume {:print "$at(75,4574,4575)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t24 := consensus_config::uncle_rate_target($t0) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:119:14+43 + assume {:print "$at(75,4606,4649)"} true; + call $t24 := $1_consensus_config_uncle_rate_target($t0); + if ($abort_flag) { + assume {:print "$at(75,4606,4649)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t25 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:119:60+8 + $t25 := 1000; + assume $IsValid'u64'($t25); + + // $t26 := +($t24, $t25) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:119:58+1 + call $t26 := $AddU64($t24, $t25); + if ($abort_flag) { + assume {:print "$at(75,4650,4651)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t27 := /($t23, $t26) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:85+1 + assume {:print "$at(75,4591,4592)"} true; + call $t27 := $Div($t23, $t26); + if ($abort_flag) { + assume {:print "$at(75,4591,4592)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t11 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:13+27 + $t11 := $t27; + + // trace_local[new_epoch_block_time_target]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:118:13+27 + assume {:print "$track_local(74,5,11):", $t27} $t27 == $t27; + + // $t28 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:120:68+1 + assume {:print "$at(75,4730,4731)"} true; + $t28 := 2; + assume $IsValid'u64'($t28); + + // $t29 := *($t1, $t28) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:120:66+1 + call $t29 := $MulU64($t1, $t28); + if ($abort_flag) { + assume {:print "$at(75,4728,4729)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t30 := >($t27, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:120:41+1 + call $t30 := $Gt($t27, $t29); + + // if ($t30) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:120:9+143 + if ($t30) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:121:43+22 + assume {:print "$at(75,4777,4799)"} true; +L1: + + // $t31 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:121:68+1 + assume {:print "$at(75,4802,4803)"} true; + $t31 := 2; + assume $IsValid'u64'($t31); + + // $t32 := *($t1, $t31) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:121:66+1 + call $t32 := $MulU64($t1, $t31); + if ($abort_flag) { + assume {:print "$at(75,4800,4801)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t11 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:121:13+27 + $t11 := $t32; + + // trace_local[new_epoch_block_time_target]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:121:13+27 + assume {:print "$track_local(74,5,11):", $t32} $t32 == $t32; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:123:13+27 + assume {:print "$at(75,4828,4855)"} true; +L0: + + // $t33 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:123:68+1 + assume {:print "$at(75,4883,4884)"} true; + $t33 := 2; + assume $IsValid'u64'($t33); + + // $t34 := /($t1, $t33) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:123:66+1 + call $t34 := $Div($t1, $t33); + if ($abort_flag) { + assume {:print "$at(75,4881,4882)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t35 := <($t11, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:123:41+1 + call $t35 := $Lt($t11, $t34); + + // if ($t35) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:123:9+143 + if ($t35) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:124:43+22 + assume {:print "$at(75,4930,4952)"} true; +L3: + + // $t36 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:124:68+1 + assume {:print "$at(75,4955,4956)"} true; + $t36 := 2; + assume $IsValid'u64'($t36); + + // $t37 := /($t1, $t36) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:124:66+1 + call $t37 := $Div($t1, $t36); + if ($abort_flag) { + assume {:print "$at(75,4953,4954)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // $t11 := $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:124:13+27 + $t11 := $t37; + + // trace_local[new_epoch_block_time_target]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:124:13+27 + assume {:print "$track_local(74,5,11):", $t37} $t37 == $t37; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:126:77+6 + assume {:print "$at(75,5045,5051)"} true; +L2: + + // $t38 := consensus_config::min_block_time_target($t0) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:126:37+47 + assume {:print "$at(75,5005,5052)"} true; + call $t38 := $1_consensus_config_min_block_time_target($t0); + if ($abort_flag) { + assume {:print "$at(75,5005,5052)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[min_block_time_target]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:126:13+21 + assume {:print "$track_local(74,5,10):", $t38} $t38 == $t38; + + // $t39 := consensus_config::max_block_time_target($t0) on_abort goto L9 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:127:37+47 + assume {:print "$at(75,5090,5137)"} true; + call $t39 := $1_consensus_config_max_block_time_target($t0); + if ($abort_flag) { + assume {:print "$at(75,5090,5137)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(74,5):", $t15} $t15 == $t15; + goto L9; + } + + // trace_local[max_block_time_target]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:127:13+21 + assume {:print "$track_local(74,5,9):", $t39} $t39 == $t39; + + // $t40 := <($t11, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:128:41+1 + assume {:print "$at(75,5179,5180)"} true; + call $t40 := $Lt($t11, $t38); + + // if ($t40) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:128:9+133 + if ($t40) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:129:43+21 + assume {:print "$at(75,5248,5269)"} true; +L5: + + // $t11 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:129:13+27 + assume {:print "$at(75,5218,5245)"} true; + $t11 := $t38; + + // trace_local[new_epoch_block_time_target]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:129:13+27 + assume {:print "$track_local(74,5,11):", $t38} $t38 == $t38; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:131:13+27 + assume {:print "$at(75,5294,5321)"} true; +L4: + + // $t41 := >($t11, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:131:41+1 + assume {:print "$at(75,5322,5323)"} true; + call $t41 := $Gt($t11, $t39); + + // if ($t41) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:131:9+133 + if ($t41) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:132:43+21 + assume {:print "$at(75,5391,5412)"} true; +L7: + + // $t11 := $t39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:132:13+27 + assume {:print "$at(75,5361,5388)"} true; + $t11 := $t39; + + // trace_local[new_epoch_block_time_target]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:132:13+27 + assume {:print "$track_local(74,5,11):", $t39} $t39 == $t39; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:134:9+27 + assume {:print "$at(75,5433,5460)"} true; +L6: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:134:9+27 + assume {:print "$at(75,5433,5460)"} true; + assume {:print "$track_return(74,5,0):", $t11} $t11 == $t11; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:135:5+1 + assume {:print "$at(75,5465,5466)"} true; +L8: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:135:5+1 + assume {:print "$at(75,5465,5466)"} true; + $ret0 := $t11; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:135:5+1 +L9: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:135:5+1 + assume {:print "$at(75,5465,5466)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun epoch::start_block_number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:370:5+186 +procedure {:timeLimit 80} $1_epoch_start_block_number$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#740: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:370:5+1 + assume {:print "$at(75,14668,14669)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @740 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:370:5+1 + $1_epoch_Epoch_$memory#740 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:371:46+42 + assume {:print "$at(75,14767,14809)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,14767,14809)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,11):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:371:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,14746,14759)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,11):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.start_block_number($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:372:9+28 + assume {:print "$at(75,14820,14848)"} true; + $t3 := $t2->$start_block_number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:372:9+28 + assume {:print "$track_return(74,11,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:373:5+1 + assume {:print "$at(75,14853,14854)"} true; +L1: + + // assert Not(Not(exists[@740](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:376:9+69 + assume {:print "$at(75,14894,14963)"} true; + assert {:msg "assert_failed(75,14894,14963): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#740, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@740](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:82:9+69 + assume {:print "$at(76,2682,2751)"} true; + assert {:msg "assert_failed(76,2682,2751): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#740, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:82:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:373:5+1 + assume {:print "$at(75,14853,14854)"} true; +L2: + + // assert Or(Not(exists[@740](system_addresses::$get_starcoin_framework[]())), Not(exists[@740](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:81:5+109 + assume {:print "$at(76,2648,2757)"} true; + assert {:msg "assert_failed(76,2648,2757): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#740, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#740, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:81:5+109 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::end_block_number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:380:5+182 +procedure {:timeLimit 80} $1_epoch_end_block_number$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_Epoch; + var $t3: int; + var $temp_0'u64': int; + var $1_epoch_Epoch_$memory#741: $Memory $1_epoch_Epoch; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:380:5+1 + assume {:print "$at(75,15023,15024)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // @741 := save_mem(epoch::Epoch) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:380:5+1 + $1_epoch_Epoch_$memory#741 := $1_epoch_Epoch_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:381:46+42 + assume {:print "$at(75,15120,15162)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,15120,15162)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,7):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:381:25+13 + if (!$ResourceExists($1_epoch_Epoch_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_Epoch_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,15099,15112)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,7):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.end_block_number($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:382:9+26 + assume {:print "$at(75,15173,15199)"} true; + $t3 := $t2->$end_block_number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:382:9+26 + assume {:print "$track_return(74,7,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:383:5+1 + assume {:print "$at(75,15204,15205)"} true; +L1: + + // assert Not(Not(exists[@741](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:386:9+69 + assume {:print "$at(75,15243,15312)"} true; + assert {:msg "assert_failed(75,15243,15312): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#741, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@741](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:86:9+69 + assume {:print "$at(76,2795,2864)"} true; + assert {:msg "assert_failed(76,2795,2864): function does not abort under this condition"} + !!$ResourceExists($1_epoch_Epoch_$memory#741, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:86:9+69 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:383:5+1 + assume {:print "$at(75,15204,15205)"} true; +L2: + + // assert Or(Not(exists[@741](system_addresses::$get_starcoin_framework[]())), Not(exists[@741](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:85:5+107 + assume {:print "$at(76,2763,2870)"} true; + assert {:msg "assert_failed(76,2763,2870): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_Epoch_$memory#741, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_Epoch_$memory#741, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:85:5+107 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::emit_epoch_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+603 +procedure {:inline 1} $1_epoch_emit_epoch_event(_$t0: $Mutation ($1_epoch_Epoch), _$t1: int) returns ($ret0: $Mutation ($1_epoch_Epoch)) +{ + // declare local variables + var $t2: $Mutation ($1_event_EventHandle'$1_epoch_NewEpochEvent'); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_epoch_NewEpochEvent; + var $t0: $Mutation ($1_epoch_Epoch); + var $t1: int; + var $temp_0'$1_epoch_Epoch': $1_epoch_Epoch; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + assume {:print "$at(75,12618,12619)"} true; + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // trace_local[previous_epoch_total_reward]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + assume {:print "$track_local(74,6,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.new_epoch_events($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:312:13+31 + assume {:print "$at(75,12738,12769)"} true; + $t2 := $ChildMutation($t0, 11, $Dereference($t0)->$new_epoch_events); + + // $t3 := get_field.number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:314:25+16 + assume {:print "$at(75,12823,12839)"} true; + $t3 := $Dereference($t0)->$number; + + // $t4 := get_field.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:315:29+20 + assume {:print "$at(75,12869,12889)"} true; + $t4 := $Dereference($t0)->$start_time; + + // $t5 := get_field.start_block_number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:316:37+28 + assume {:print "$at(75,12927,12955)"} true; + $t5 := $Dereference($t0)->$start_block_number; + + // $t6 := get_field.end_block_number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:317:35+26 + assume {:print "$at(75,12991,13017)"} true; + $t6 := $Dereference($t0)->$end_block_number; + + // $t7 := get_field.block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:318:36+27 + assume {:print "$at(75,13054,13081)"} true; + $t7 := $Dereference($t0)->$block_time_target; + + // $t8 := get_field.reward_per_block($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:319:35+26 + assume {:print "$at(75,13117,13143)"} true; + $t8 := $Dereference($t0)->$reward_per_block; + + // $t9 := pack epoch::NewEpochEvent($t3, $t4, $t5, $t6, $t7, $t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:313:13+420 + assume {:print "$at(75,12783,13203)"} true; + $t9 := $1_epoch_NewEpochEvent($t3, $t4, $t5, $t6, $t7, $t8, $t1); + + // opaque begin: event::emit_event($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + assume {:print "$at(75,12707,13214)"} true; + + // opaque end: event::emit_event($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + + // write_back[Reference($t0).new_epoch_events (event::EventHandle)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_Epoch'_new_epoch_events($Dereference($t0), $Dereference($t2))); + + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:322:10+1 + assume {:print "$at(75,13214,13215)"} true; + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:323:5+1 + assume {:print "$at(75,13220,13221)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:323:5+1 + assume {:print "$at(75,13220,13221)"} true; + $ret0 := $t0; + return; + +} + +// fun epoch::emit_epoch_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+603 +procedure {:timeLimit 80} $1_epoch_emit_epoch_event$verify(_$t0: $Mutation ($1_epoch_Epoch), _$t1: int) returns ($ret0: $Mutation ($1_epoch_Epoch)) +{ + // declare local variables + var $t2: $Mutation ($1_event_EventHandle'$1_epoch_NewEpochEvent'); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_epoch_NewEpochEvent; + var $t0: $Mutation ($1_epoch_Epoch); + var $t1: int; + var $temp_0'$1_epoch_Epoch': $1_epoch_Epoch; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + assume {:print "$at(75,12618,12619)"} true; + assume $IsValid'$1_epoch_Epoch'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + assume $IsValid'u128'($t1); + + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // trace_local[previous_epoch_total_reward]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:310:5+1 + assume {:print "$track_local(74,6,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.new_epoch_events($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:312:13+31 + assume {:print "$at(75,12738,12769)"} true; + $t2 := $ChildMutation($t0, 11, $Dereference($t0)->$new_epoch_events); + + // $t3 := get_field.number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:314:25+16 + assume {:print "$at(75,12823,12839)"} true; + $t3 := $Dereference($t0)->$number; + + // $t4 := get_field.start_time($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:315:29+20 + assume {:print "$at(75,12869,12889)"} true; + $t4 := $Dereference($t0)->$start_time; + + // $t5 := get_field.start_block_number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:316:37+28 + assume {:print "$at(75,12927,12955)"} true; + $t5 := $Dereference($t0)->$start_block_number; + + // $t6 := get_field.end_block_number($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:317:35+26 + assume {:print "$at(75,12991,13017)"} true; + $t6 := $Dereference($t0)->$end_block_number; + + // $t7 := get_field.block_time_target($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:318:36+27 + assume {:print "$at(75,13054,13081)"} true; + $t7 := $Dereference($t0)->$block_time_target; + + // $t8 := get_field.reward_per_block($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:319:35+26 + assume {:print "$at(75,13117,13143)"} true; + $t8 := $Dereference($t0)->$reward_per_block; + + // $t9 := pack epoch::NewEpochEvent($t3, $t4, $t5, $t6, $t7, $t8, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:313:13+420 + assume {:print "$at(75,12783,13203)"} true; + $t9 := $1_epoch_NewEpochEvent($t3, $t4, $t5, $t6, $t7, $t8, $t1); + + // opaque begin: event::emit_event($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + assume {:print "$at(75,12707,13214)"} true; + + // opaque end: event::emit_event($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + + // write_back[Reference($t0).new_epoch_events (event::EventHandle)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_Epoch'_new_epoch_events($Dereference($t0), $Dereference($t2))); + + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:311:9+507 + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // trace_local[epoch_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:322:10+1 + assume {:print "$at(75,13214,13215)"} true; + $temp_0'$1_epoch_Epoch' := $Dereference($t0); + assume {:print "$track_local(74,6,0):", $temp_0'$1_epoch_Epoch'} $temp_0'$1_epoch_Epoch' == $temp_0'$1_epoch_Epoch'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:323:5+1 + assume {:print "$at(75,13220,13221)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:326:9+16 + assume {:print "$at(75,13259,13275)"} true; + assert {:msg "assert_failed(75,13259,13275): function does not abort under this condition"} + !false; + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:60:9+16 + assume {:print "$at(76,2182,2198)"} true; + assert {:msg "assert_failed(76,2182,2198): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:60:9+16 + $ret0 := $t0; + return; + +} + +// fun epoch::in_or_decrease_gas_limit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+481 +procedure {:inline 1} $1_epoch_in_or_decrease_gas_limit(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: int; + var $t4: 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: bool; + 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 $t24: bool; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[last_epoch_block_gas_limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$at(75,11296,11297)"} true; + assume {:print "$track_local(74,8,0):", $t0} $t0 == $t0; + + // trace_local[percent]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$track_local(74,8,1):", $t1} $t1 == $t1; + + // trace_local[min_block_gas_limit]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$track_local(74,8,2):", $t2} $t2 == $t2; + + // $t8 := (u128)($t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:272:13+36 + assume {:print "$at(75,11463,11499)"} true; + call $t8 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(75,11463,11499)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t10 := (u128)($t1) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:273:13+17 + assume {:print "$at(75,11513,11530)"} true; + call $t10 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(75,11513,11530)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:274:14+7 + assume {:print "$at(75,11545,11552)"} true; + $t11 := 100; + assume $IsValid'u64'($t11); + + // $t12 := (u128)($t11) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:274:13+17 + call $t12 := $CastU128($t11); + if ($abort_flag) { + assume {:print "$at(75,11544,11561)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_local[c#135]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(74,8,6):", $t12} $t12 == $t12; + + // trace_local[b#134]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(74,8,5):", $t10} $t10 == $t10; + + // trace_local[a#133]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(74,8,4):", $t8} $t8 == $t8; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t13 := 0; + assume $IsValid'u128'($t13); + + // $t14 := !=($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t14 := !$IsEqual'u128'($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 +L0: + + // $t15 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t15 := 4; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(74,8):", $t16} $t16 == $t16; + + // $t9 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t9 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L2: + + // $t17 := (u256)($t8) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t17 := $CastU256($t8); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t18 := (u256)($t10) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t18 := $CastU256($t10); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t19 := *($t17, $t18) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t19 := $MulU256($t17, $t18); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t20 := (u256)($t12) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t20 := $CastU256($t12); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t21 := /($t19, $t20) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t21 := $Div($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t22 := (u128)($t21) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t22 := $CastU128($t21); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_local[tmp_gas_limit]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:271:13+13 + assume {:print "$at(75,11417,11430)"} true; + assume {:print "$track_local(74,8,7):", $t22} $t22 == $t22; + + // $t23 := (u128)($t2) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:49+29 + assume {:print "$at(75,11621,11650)"} true; + call $t23 := $CastU128($t2); + if ($abort_flag) { + assume {:print "$at(75,11621,11650)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t24 := >($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:47+1 + call $t24 := $Gt($t22, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:277:14+13 + assume {:print "$at(75,11667,11680)"} true; +L4: + + // $t3 := (u64)($t22) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:277:13+22 + assume {:print "$at(75,11666,11688)"} true; + call $t3 := $CastU64($t22); + if ($abort_flag) { + assume {:print "$at(75,11666,11688)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + assume {:print "$at(75,11601,11747)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:279:13+19 + assume {:print "$at(75,11718,11737)"} true; +L3: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + assume {:print "$at(75,11601,11747)"} true; + $t3 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 +L5: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:282:9+13 + assume {:print "$at(75,11758,11771)"} true; + assume {:print "$track_return(74,8,0):", $t3} $t3 == $t3; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 + assume {:print "$at(75,11776,11777)"} true; +L6: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 + assume {:print "$at(75,11776,11777)"} true; + $ret0 := $t3; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 +L7: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 + assume {:print "$at(75,11776,11777)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun epoch::in_or_decrease_gas_limit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+481 +procedure {:timeLimit 80} $1_epoch_in_or_decrease_gas_limit$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: int; + var $t4: 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: bool; + 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 $t24: bool; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$at(75,11296,11297)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume $IsValid'u64'($t2); + + // trace_local[last_epoch_block_gas_limit]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$track_local(74,8,0):", $t0} $t0 == $t0; + + // trace_local[percent]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$track_local(74,8,1):", $t1} $t1 == $t1; + + // trace_local[min_block_gas_limit]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:270:5+1 + assume {:print "$track_local(74,8,2):", $t2} $t2 == $t2; + + // $t8 := (u128)($t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:272:13+36 + assume {:print "$at(75,11463,11499)"} true; + call $t8 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(75,11463,11499)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t10 := (u128)($t1) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:273:13+17 + assume {:print "$at(75,11513,11530)"} true; + call $t10 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(75,11513,11530)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := 100 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:274:14+7 + assume {:print "$at(75,11545,11552)"} true; + $t11 := 100; + assume $IsValid'u64'($t11); + + // $t12 := (u128)($t11) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:274:13+17 + call $t12 := $CastU128($t11); + if ($abort_flag) { + assume {:print "$at(75,11544,11561)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_local[c#135]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$at(159,1451,1452)"} true; + assume {:print "$track_local(74,8,6):", $t12} $t12 == $t12; + + // trace_local[b#134]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(74,8,5):", $t10} $t10 == $t10; + + // trace_local[a#133]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(74,8,4):", $t8} $t8 == $t8; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t13 := 0; + assume $IsValid'u128'($t13); + + // $t14 := !=($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t14 := !$IsEqual'u128'($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 +L0: + + // $t15 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t15 := 4; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(74,8):", $t16} $t16 == $t16; + + // $t9 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t9 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L2: + + // $t17 := (u256)($t8) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t17 := $CastU256($t8); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t18 := (u256)($t10) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t18 := $CastU256($t10); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t19 := *($t17, $t18) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t19 := $MulU256($t17, $t18); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t20 := (u256)($t12) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t20 := $CastU256($t12); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t21 := /($t19, $t20) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t21 := $Div($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t22 := (u128)($t21) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t22 := $CastU128($t21); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // trace_local[tmp_gas_limit]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:271:13+13 + assume {:print "$at(75,11417,11430)"} true; + assume {:print "$track_local(74,8,7):", $t22} $t22 == $t22; + + // $t23 := (u128)($t2) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:49+29 + assume {:print "$at(75,11621,11650)"} true; + call $t23 := $CastU128($t2); + if ($abort_flag) { + assume {:print "$at(75,11621,11650)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // $t24 := >($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:47+1 + call $t24 := $Gt($t22, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:277:14+13 + assume {:print "$at(75,11667,11680)"} true; +L4: + + // $t3 := (u64)($t22) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:277:13+22 + assume {:print "$at(75,11666,11688)"} true; + call $t3 := $CastU64($t22); + if ($abort_flag) { + assume {:print "$at(75,11666,11688)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(74,8):", $t9} $t9 == $t9; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + assume {:print "$at(75,11601,11747)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:279:13+19 + assume {:print "$at(75,11718,11737)"} true; +L3: + + // $t3 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 + assume {:print "$at(75,11601,11747)"} true; + $t3 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:276:29+146 +L5: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:282:9+13 + assume {:print "$at(75,11758,11771)"} true; + assume {:print "$track_return(74,8,0):", $t3} $t3 == $t3; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 + assume {:print "$at(75,11776,11777)"} true; +L6: + + // assert Not(And(And(Neq($t1, 100), Gt($t0, 100)), Eq(100, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:72:9+36 + assume {:print "$at(160,2014,2050)"} true; + assert {:msg "assert_failed(160,2014,2050): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 > 100)) && $IsEqual'num'(100, 0)); + + // assert Not(And(And(And(Neq($t1, 100), Gt($t0, 100)), Neq(100, 0)), Gt(Mul(Div($t0, 100), $t1), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:73:9+54 + assume {:print "$at(160,2059,2113)"} true; + assert {:msg "assert_failed(160,2059,2113): function does not abort under this condition"} + !(((!$IsEqual'u64'($t1, 100) && ($t0 > 100)) && !$IsEqual'num'(100, 0)) && ((($t0 div 100) * $t1) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Eq(100, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:74:9+37 + assume {:print "$at(160,2122,2159)"} true; + assert {:msg "assert_failed(160,2122,2159): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && $IsEqual'num'(100, 0)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Div($t0, 100), Mod($t0, 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:76:9+57 + assume {:print "$at(160,2193,2250)"} true; + assert {:msg "assert_failed(160,2193,2250): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 div 100) * ($t0 mod 100)) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:78:9+61 + assume {:print "$at(160,2288,2349)"} true; + assert {:msg "assert_failed(160,2288,2349): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((($t0 div 100) * ($t0 mod 100)) * 100) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Div($t0, 100), Mod($t1, 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:80:9+57 + assume {:print "$at(160,2383,2440)"} true; + assert {:msg "assert_failed(160,2383,2440): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 div 100) * ($t1 mod 100)) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:82:9+79 + assume {:print "$at(160,2486,2565)"} true; + assert {:msg "assert_failed(160,2486,2565): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mod($t0, 100), Div($t1, 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:84:9+57 + assume {:print "$at(160,2599,2656)"} true; + assert {:msg "assert_failed(160,2599,2656): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 mod 100) * ($t1 div 100)) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mod($t0, 100), Mod($t1, 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:86:9+57 + assume {:print "$at(160,2690,2747)"} true; + assert {:msg "assert_failed(160,2690,2747): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 mod 100) * ($t1 mod 100)) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Div(Mul(Mod($t0, 100), Mod($t1, 100)), 100), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:88:9+61 + assume {:print "$at(160,2785,2846)"} true; + assert {:msg "assert_failed(160,2785,2846): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((($t0 mod 100) * ($t1 mod 100)) div 100) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), Mul(Mod($t0, 100), Div($t1, 100))), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:90:9+97 + assume {:print "$at(160,2900,2997)"} true; + assert {:msg "assert_failed(160,2900,2997): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) + (($t0 mod 100) * ($t1 div 100))) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Add(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), Mul(Mod($t0, 100), Div($t1, 100))), Div(Mul(Mod($t0, 100), Mod($t1, 100)), 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:92:9+119 + assume {:print "$at(160,3063,3182)"} true; + assert {:msg "assert_failed(160,3063,3182): function does not abort under this condition"} + !((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) + (($t0 mod 100) * ($t1 div 100))) + ((($t0 mod 100) * ($t1 mod 100)) div 100)) > 340282366920938463463374607431768211455)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.spec.move:92:9+119 + $ret0 := $t3; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:283:5+1 + assume {:print "$at(75,11776,11777)"} true; +L7: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(And(And(Neq($t1, 100), Gt($t0, 100)), Eq(100, 0)), And(And(And(Neq($t1, 100), Gt($t0, 100)), Neq(100, 0)), Gt(Mul(Div($t0, 100), $t1), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Eq(100, 0))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Div($t0, 100), Mod($t0, 100)), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Div($t0, 100), Mod($t1, 100)), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mod($t0, 100), Div($t1, 100)), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Mul(Mod($t0, 100), Mod($t1, 100)), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Div(Mul(Mod($t0, 100), Mod($t1, 100)), 100), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), Mul(Mod($t0, 100), Div($t1, 100))), 340282366920938463463374607431768211455))), And(And(Neq($t1, 100), Le($t0, 100)), Gt(Add(Add(Add(Mul(Mul(Div($t0, 100), Mod($t0, 100)), 100), Mul(Div($t0, 100), Mod($t1, 100))), Mul(Mod($t0, 100), Div($t1, 100))), Div(Mul(Mod($t0, 100), Mod($t1, 100)), 100)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:47:5+269 + assume {:print "$at(76,1608,1877)"} true; + assert {:msg "assert_failed(76,1608,1877): abort not covered by any of the `aborts_if` clauses"} + (((((((((((((!$IsEqual'u64'($t1, 100) && ($t0 > 100)) && $IsEqual'num'(100, 0)) || (((!$IsEqual'u64'($t1, 100) && ($t0 > 100)) && !$IsEqual'num'(100, 0)) && ((($t0 div 100) * $t1) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && $IsEqual'num'(100, 0))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 div 100) * ($t0 mod 100)) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((($t0 div 100) * ($t0 mod 100)) * 100) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 div 100) * ($t1 mod 100)) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 mod 100) * ($t1 div 100)) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((($t0 mod 100) * ($t1 mod 100)) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((($t0 mod 100) * ($t1 mod 100)) div 100) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && (((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) + (($t0 mod 100) * ($t1 div 100))) > 340282366920938463463374607431768211455))) || ((!$IsEqual'u64'($t1, 100) && ($t0 <= 100)) && ((((((($t0 div 100) * ($t0 mod 100)) * 100) + (($t0 div 100) * ($t1 mod 100))) + (($t0 mod 100) * ($t1 div 100))) + ((($t0 mod 100) * ($t1 mod 100)) div 100)) > 340282366920938463463374607431768211455))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:47:5+269 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun epoch::total_gas [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:350:5+179 +procedure {:timeLimit 80} $1_epoch_total_gas$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_epoch_EpochData; + var $t3: int; + var $temp_0'u128': int; + var $1_epoch_EpochData_$memory#742: $Memory $1_epoch_EpochData; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: epoch::EpochData: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:350:5+1 + assume {:print "$at(75,13978,13979)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_epoch_EpochData_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_EpochData_$memory, $a_0); + ($IsValid'$1_epoch_EpochData'($rsc)))); + + // @742 := save_mem(epoch::EpochData) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:350:5+1 + $1_epoch_EpochData_$memory#742 := $1_epoch_EpochData_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:351:51+42 + assume {:print "$at(75,14078,14120)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(75,14078,14120)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,13):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:351:26+13 + if (!$ResourceExists($1_epoch_EpochData_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_epoch_EpochData_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(75,14053,14066)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(74,13):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.total_gas($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:352:9+20 + assume {:print "$at(75,14131,14151)"} true; + $t3 := $t2->$total_gas; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:352:9+20 + assume {:print "$track_return(74,13,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:353:5+1 + assume {:print "$at(75,14156,14157)"} true; +L1: + + // assert Not(Not(exists[@742](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:356:9+73 + assume {:print "$at(75,14188,14261)"} true; + assert {:msg "assert_failed(75,14188,14261): function does not abort under this condition"} + !!$ResourceExists($1_epoch_EpochData_$memory#742, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@742](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:73:9+73 + assume {:print "$at(76,2450,2523)"} true; + assert {:msg "assert_failed(76,2450,2523): function does not abort under this condition"} + !!$ResourceExists($1_epoch_EpochData_$memory#742, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:73:9+73 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:353:5+1 + assume {:print "$at(75,14156,14157)"} true; +L2: + + // assert Or(Not(exists[@742](system_addresses::$get_starcoin_framework[]())), Not(exists[@742](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:72:5+104 + assume {:print "$at(76,2425,2529)"} true; + assert {:msg "assert_failed(76,2425,2529): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_epoch_EpochData_$memory#742, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_epoch_EpochData_$memory#742, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:72:5+104 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun epoch::update_epoch_data [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+562 +procedure {:inline 1} $1_epoch_update_epoch_data(_$t0: $Mutation ($1_epoch_EpochData), _$t1: bool, _$t2: int, _$t3: int, _$t4: int) returns ($ret0: $Mutation ($1_epoch_EpochData)) +{ + // declare local variables + var $t5: $Mutation (int); + var $t6: $Mutation (int); + var $t7: int; + var $t8: $Mutation (int); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (int); + var $t13: int; + var $t14: int; + var $t15: $Mutation (int); + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $Mutation (int); + var $t0: $Mutation ($1_epoch_EpochData); + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_epoch_EpochData': $1_epoch_EpochData; + var $temp_0'bool': bool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$at(75,11784,11785)"} true; + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // trace_local[new_epoch]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,1):", $t1} $t1 == $t1; + + // trace_local[reward]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,2):", $t2} $t2 == $t2; + + // trace_local[uncles]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,3):", $t3} $t3 == $t3; + + // trace_local[parent_gas_used]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,4):", $t4} $t4 == $t4; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:39+6 + assume {:print "$at(75,12011,12017)"} true; +L1: + + // $t5 := borrow_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+23 + assume {:print "$at(75,11985,12008)"} true; + $t5 := $ChildMutation($t0, 1, $Dereference($t0)->$total_reward); + + // write_ref($t5, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $t5 := $UpdateMutation($t5, $t2); + + // write_back[Reference($t0).total_reward (u128)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_reward($Dereference($t0), $Dereference($t5))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t6 := borrow_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+17 + assume {:print "$at(75,12031,12048)"} true; + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$uncles); + + // write_ref($t6, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $t6 := $UpdateMutation($t6, $t3); + + // write_back[Reference($t0).uncles (u64)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_uncles($Dereference($t0), $Dereference($t6))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:36+1 + assume {:print "$at(75,12094,12095)"} true; + $t7 := 0; + assume $IsValid'u128'($t7); + + // $t8 := borrow_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+20 + $t8 := $ChildMutation($t0, 2, $Dereference($t0)->$total_gas); + + // write_ref($t8, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $t8 := $UpdateMutation($t8, $t7); + + // write_back[Reference($t0).total_gas (u128)]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_gas($Dereference($t0), $Dereference($t8))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:39+10 + assume {:print "$at(75,12152,12162)"} true; +L0: + + // $t9 := get_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:39+23 + assume {:print "$at(75,12152,12175)"} true; + $t9 := $Dereference($t0)->$total_reward; + + // $t10 := +($t9, $t2) on_abort goto L4 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:63+1 + call $t10 := $AddU128($t9, $t2); + if ($abort_flag) { + assume {:print "$at(75,12176,12177)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(74,15):", $t11} $t11 == $t11; + goto L4; + } + + // $t12 := borrow_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+23 + $t12 := $ChildMutation($t0, 1, $Dereference($t0)->$total_reward); + + // write_ref($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $t12 := $UpdateMutation($t12, $t10); + + // write_back[Reference($t0).total_reward (u128)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_reward($Dereference($t0), $Dereference($t12))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t13 := get_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:33+17 + assume {:print "$at(75,12218,12235)"} true; + $t13 := $Dereference($t0)->$uncles; + + // $t14 := +($t13, $t3) on_abort goto L4 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:51+1 + call $t14 := $AddU64($t13, $t3); + if ($abort_flag) { + assume {:print "$at(75,12236,12237)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(74,15):", $t11} $t11 == $t11; + goto L4; + } + + // $t15 := borrow_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+17 + $t15 := $ChildMutation($t0, 0, $Dereference($t0)->$uncles); + + // write_ref($t15, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $t15 := $UpdateMutation($t15, $t14); + + // write_back[Reference($t0).uncles (u64)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_uncles($Dereference($t0), $Dereference($t15))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t16 := get_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:36+20 + assume {:print "$at(75,12281,12301)"} true; + $t16 := $Dereference($t0)->$total_gas; + + // $t17 := (u128)($t4) on_abort goto L4 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:59+25 + call $t17 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(75,12304,12329)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(74,15):", $t11} $t11 == $t11; + goto L4; + } + + // $t18 := +($t16, $t17) on_abort goto L4 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:57+1 + call $t18 := $AddU128($t16, $t17); + if ($abort_flag) { + assume {:print "$at(75,12302,12303)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(74,15):", $t11} $t11 == $t11; + goto L4; + } + + // $t19 := borrow_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+20 + $t19 := $ChildMutation($t0, 2, $Dereference($t0)->$total_gas); + + // write_ref($t19, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $t19 := $UpdateMutation($t19, $t18); + + // write_back[Reference($t0).total_gas (u128)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_gas($Dereference($t0), $Dereference($t19))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; +L2: + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 + assume {:print "$at(75,12345,12346)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 + assume {:print "$at(75,12345,12346)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 +L4: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 + assume {:print "$at(75,12345,12346)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun epoch::update_epoch_data [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+562 +procedure {:timeLimit 80} $1_epoch_update_epoch_data$verify(_$t0: $Mutation ($1_epoch_EpochData), _$t1: bool, _$t2: int, _$t3: int, _$t4: int) returns ($ret0: $Mutation ($1_epoch_EpochData)) +{ + // declare local variables + var $t5: $1_epoch_EpochData; + var $t6: $Mutation (int); + var $t7: $Mutation (int); + var $t8: int; + var $t9: $Mutation (int); + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $Mutation (int); + var $t14: int; + var $t15: int; + var $t16: $Mutation (int); + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $Mutation (int); + var $t0: $Mutation ($1_epoch_EpochData); + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_epoch_EpochData': $1_epoch_EpochData; + var $temp_0'bool': bool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$at(75,11784,11785)"} true; + assume $IsValid'$1_epoch_EpochData'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume $IsValid'bool'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume $IsValid'u128'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume $IsValid'u64'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume $IsValid'u64'($t4); + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + $t5 := $Dereference($t0); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // trace_local[new_epoch]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,1):", $t1} $t1 == $t1; + + // trace_local[reward]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,2):", $t2} $t2 == $t2; + + // trace_local[uncles]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,3):", $t3} $t3 == $t3; + + // trace_local[parent_gas_used]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:286:5+1 + assume {:print "$track_local(74,15,4):", $t4} $t4 == $t4; + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:39+6 + assume {:print "$at(75,12011,12017)"} true; +L1: + + // $t6 := borrow_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+23 + assume {:print "$at(75,11985,12008)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$total_reward); + + // write_ref($t6, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $t6 := $UpdateMutation($t6, $t2); + + // write_back[Reference($t0).total_reward (u128)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_reward($Dereference($t0), $Dereference($t6))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:294:13+32 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t7 := borrow_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+17 + assume {:print "$at(75,12031,12048)"} true; + $t7 := $ChildMutation($t0, 0, $Dereference($t0)->$uncles); + + // write_ref($t7, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $t7 := $UpdateMutation($t7, $t3); + + // write_back[Reference($t0).uncles (u64)]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_uncles($Dereference($t0), $Dereference($t7))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:295:13+26 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:36+1 + assume {:print "$at(75,12094,12095)"} true; + $t8 := 0; + assume $IsValid'u128'($t8); + + // $t9 := borrow_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+20 + $t9 := $ChildMutation($t0, 2, $Dereference($t0)->$total_gas); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).total_gas (u128)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_gas($Dereference($t0), $Dereference($t9))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:296:13+24 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:39+10 + assume {:print "$at(75,12152,12162)"} true; +L0: + + // $t10 := get_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:39+23 + assume {:print "$at(75,12152,12175)"} true; + $t10 := $Dereference($t0)->$total_reward; + + // $t11 := +($t10, $t2) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:63+1 + call $t11 := $AddU128($t10, $t2); + if ($abort_flag) { + assume {:print "$at(75,12176,12177)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(74,15):", $t12} $t12 == $t12; + goto L4; + } + + // $t13 := borrow_field.total_reward($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+23 + $t13 := $ChildMutation($t0, 1, $Dereference($t0)->$total_reward); + + // write_ref($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $t13 := $UpdateMutation($t13, $t11); + + // write_back[Reference($t0).total_reward (u128)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_reward($Dereference($t0), $Dereference($t13))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:298:13+58 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t14 := get_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:33+17 + assume {:print "$at(75,12218,12235)"} true; + $t14 := $Dereference($t0)->$uncles; + + // $t15 := +($t14, $t3) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:51+1 + call $t15 := $AddU64($t14, $t3); + if ($abort_flag) { + assume {:print "$at(75,12236,12237)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(74,15):", $t12} $t12 == $t12; + goto L4; + } + + // $t16 := borrow_field.uncles($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+17 + $t16 := $ChildMutation($t0, 0, $Dereference($t0)->$uncles); + + // write_ref($t16, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $t16 := $UpdateMutation($t16, $t15); + + // write_back[Reference($t0).uncles (u64)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_uncles($Dereference($t0), $Dereference($t16))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:299:13+46 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // $t17 := get_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:36+20 + assume {:print "$at(75,12281,12301)"} true; + $t17 := $Dereference($t0)->$total_gas; + + // $t18 := (u128)($t4) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:59+25 + call $t18 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(75,12304,12329)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(74,15):", $t12} $t12 == $t12; + goto L4; + } + + // $t19 := +($t17, $t18) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:57+1 + call $t19 := $AddU128($t17, $t18); + if ($abort_flag) { + assume {:print "$at(75,12302,12303)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(74,15):", $t12} $t12 == $t12; + goto L4; + } + + // $t20 := borrow_field.total_gas($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+20 + $t20 := $ChildMutation($t0, 2, $Dereference($t0)->$total_gas); + + // write_ref($t20, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $t20 := $UpdateMutation($t20, $t19); + + // write_back[Reference($t0).total_gas (u128)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $t0 := $UpdateMutation($t0, $Update'$1_epoch_EpochData'_total_gas($Dereference($t0), $Dereference($t20))); + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:300:13+71 + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; +L2: + + // trace_local[epoch_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:293:9+384 + assume {:print "$at(75,11956,12340)"} true; + $temp_0'$1_epoch_EpochData' := $Dereference($t0); + assume {:print "$track_local(74,15,0):", $temp_0'$1_epoch_EpochData'} $temp_0'$1_epoch_EpochData' == $temp_0'$1_epoch_EpochData'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 + assume {:print "$at(75,12345,12346)"} true; +L3: + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.total_reward($t5), $t2), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:305:9+68 + assume {:print "$at(75,12385,12453)"} true; + assert {:msg "assert_failed(75,12385,12453): function does not abort under this condition"} + !(!$t1 && (($t5->$total_reward + $t2) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.uncles($t5), $t3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:306:9+61 + assume {:print "$at(75,12462,12523)"} true; + assert {:msg "assert_failed(75,12462,12523): function does not abort under this condition"} + !(!$t1 && (($t5->$uncles + $t3) > 18446744073709551615)); + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.total_gas($t5), $t4), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:307:9+74 + assume {:print "$at(75,12532,12606)"} true; + assert {:msg "assert_failed(75,12532,12606): function does not abort under this condition"} + !(!$t1 && (($t5->$total_gas + $t4) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.total_reward($t5), $t2), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:54:9+68 + assume {:print "$at(76,1917,1985)"} true; + assert {:msg "assert_failed(76,1917,1985): function does not abort under this condition"} + !(!$t1 && (($t5->$total_reward + $t2) > 340282366920938463463374607431768211455)); + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.uncles($t5), $t3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:55:9+61 + assume {:print "$at(76,1994,2055)"} true; + assert {:msg "assert_failed(76,1994,2055): function does not abort under this condition"} + !(!$t1 && (($t5->$uncles + $t3) > 18446744073709551615)); + + // assert Not(And(Not($t1), Gt(Add(select epoch::EpochData.total_gas($t5), $t4), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:56:9+74 + assume {:print "$at(76,2064,2138)"} true; + assert {:msg "assert_failed(76,2064,2138): function does not abort under this condition"} + !(!$t1 && (($t5->$total_gas + $t4) > 340282366920938463463374607431768211455)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:56:9+74 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.move:302:5+1 + assume {:print "$at(75,12345,12346)"} true; +L4: + + // assert Or(Or(Or(Or(Or(And(Not($t1), Gt(Add(select epoch::EpochData.total_reward($t5), $t2), 340282366920938463463374607431768211455)), And(Not($t1), Gt(Add(select epoch::EpochData.uncles($t5), $t3), 18446744073709551615))), And(Not($t1), Gt(Add(select epoch::EpochData.total_gas($t5), $t4), 340282366920938463463374607431768211455))), And(Not($t1), Gt(Add(select epoch::EpochData.total_reward($t5), $t2), 340282366920938463463374607431768211455))), And(Not($t1), Gt(Add(select epoch::EpochData.uncles($t5), $t3), 18446744073709551615))), And(Not($t1), Gt(Add(select epoch::EpochData.total_gas($t5), $t4), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:53:5+260 + assume {:print "$at(76,1884,2144)"} true; + assert {:msg "assert_failed(76,1884,2144): abort not covered by any of the `aborts_if` clauses"} + ((((((!$t1 && (($t5->$total_reward + $t2) > 340282366920938463463374607431768211455)) || (!$t1 && (($t5->$uncles + $t3) > 18446744073709551615))) || (!$t1 && (($t5->$total_gas + $t4) > 340282366920938463463374607431768211455))) || (!$t1 && (($t5->$total_reward + $t2) > 340282366920938463463374607431768211455))) || (!$t1 && (($t5->$uncles + $t3) > 18446744073709551615))) || (!$t1 && (($t5->$total_gas + $t4) > 340282366920938463463374607431768211455))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/epoch.spec.move:53:5+260 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// struct managed_coin::Capabilities<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:29:5+189 +datatype $1_managed_coin_Capabilities'#0' { + $1_managed_coin_Capabilities'#0'($burn_cap: $1_coin_BurnCapability'#0', $freeze_cap: $1_coin_FreezeCapability'#0', $mint_cap: $1_coin_MintCapability'#0') +} +function {:inline} $Update'$1_managed_coin_Capabilities'#0''_burn_cap(s: $1_managed_coin_Capabilities'#0', x: $1_coin_BurnCapability'#0'): $1_managed_coin_Capabilities'#0' { + $1_managed_coin_Capabilities'#0'(x, s->$freeze_cap, s->$mint_cap) +} +function {:inline} $Update'$1_managed_coin_Capabilities'#0''_freeze_cap(s: $1_managed_coin_Capabilities'#0', x: $1_coin_FreezeCapability'#0'): $1_managed_coin_Capabilities'#0' { + $1_managed_coin_Capabilities'#0'(s->$burn_cap, x, s->$mint_cap) +} +function {:inline} $Update'$1_managed_coin_Capabilities'#0''_mint_cap(s: $1_managed_coin_Capabilities'#0', x: $1_coin_MintCapability'#0'): $1_managed_coin_Capabilities'#0' { + $1_managed_coin_Capabilities'#0'(s->$burn_cap, s->$freeze_cap, x) +} +function $IsValid'$1_managed_coin_Capabilities'#0''(s: $1_managed_coin_Capabilities'#0'): bool { + $IsValid'$1_coin_BurnCapability'#0''(s->$burn_cap) + && $IsValid'$1_coin_FreezeCapability'#0''(s->$freeze_cap) + && $IsValid'$1_coin_MintCapability'#0''(s->$mint_cap) +} +function {:inline} $IsEqual'$1_managed_coin_Capabilities'#0''(s1: $1_managed_coin_Capabilities'#0', s2: $1_managed_coin_Capabilities'#0'): bool { + s1 == s2 +} +var $1_managed_coin_Capabilities'#0'_$memory: $Memory $1_managed_coin_Capabilities'#0'; + +// fun managed_coin::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+538 +procedure {:timeLimit 80} $1_managed_coin_initialize$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int), _$t3: int, _$t4: bool) returns () +{ + // declare local variables + var $t5: $1_coin_BurnCapability'#0'; + var $t6: $1_coin_FreezeCapability'#0'; + var $t7: $1_coin_MintCapability'#0'; + var $t8: int; + var $t9: int; + var $t10: $1_string_String; + var $t11: int; + var $t12: $1_string_String; + var $t13: int; + var $t14: $1_coin_BurnCapability'#0'; + var $t15: $1_coin_FreezeCapability'#0'; + var $t16: $1_coin_MintCapability'#0'; + var $t17: $1_managed_coin_Capabilities'#0'; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: int; + var $t4: bool; + var $temp_0'$1_coin_BurnCapability'#0'': $1_coin_BurnCapability'#0'; + var $temp_0'$1_coin_FreezeCapability'#0'': $1_coin_FreezeCapability'#0'; + var $temp_0'$1_coin_MintCapability'#0'': $1_coin_MintCapability'#0'; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + var $1_coin_CoinInfo'#0'_$memory#743: $Memory $1_coin_CoinInfo'#0'; + var $1_managed_coin_Capabilities'#0'_$memory#744: $Memory $1_managed_coin_Capabilities'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$at(47,1863,1864)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $IsValid'u8'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $IsValid'bool'($t4); + + // assume forall $rsc: aggregator_factory::AggregatorFactory: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0)}(var $rsc := $ResourceValue($1_aggregator_factory_AggregatorFactory_$memory, $a_0); + ($IsValid'$1_aggregator_factory_AggregatorFactory'($rsc)))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: managed_coin::Capabilities<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_managed_coin_Capabilities'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_managed_coin_Capabilities'#0'_$memory, $a_0); + ($IsValid'$1_managed_coin_Capabilities'#0''($rsc)))); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:460:9+47 + assume {:print "$at(32,20090,20137)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:461:9+66 + assume {:print "$at(32,20146,20212)"} true; + assume ($t9 == $1_type_info_$type_of'#0'()->$account_address); + + // @743 := save_mem(coin::CoinInfo<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$at(47,1863,1864)"} true; + $1_coin_CoinInfo'#0'_$memory#743 := $1_coin_CoinInfo'#0'_$memory; + + // @744 := save_mem(managed_coin::Capabilities<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + $1_managed_coin_Capabilities'#0'_$memory#744 := $1_managed_coin_Capabilities'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$track_local(76,1,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$track_local(76,1,1):", $t1} $t1 == $t1; + + // trace_local[symbol]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$track_local(76,1,2):", $t2} $t2 == $t2; + + // trace_local[decimals]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$track_local(76,1,3):", $t3} $t3 == $t3; + + // trace_local[monitor_supply]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:59:5+1 + assume {:print "$track_local(76,1,4):", $t4} $t4 == $t4; + + // $t10 := string::utf8($t1) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:68:13+18 + assume {:print "$at(47,2150,2168)"} true; + call $t10 := $1_string_utf8($t1); + if ($abort_flag) { + assume {:print "$at(47,2150,2168)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(76,1):", $t11} $t11 == $t11; + goto L2; + } + + // $t12 := string::utf8($t2) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:69:13+20 + assume {:print "$at(47,2182,2202)"} true; + call $t12 := $1_string_utf8($t2); + if ($abort_flag) { + assume {:print "$at(47,2182,2202)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(76,1):", $t11} $t11 == $t11; + goto L2; + } + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:426:9+47 + assume {:print "$at(32,18696,18743)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // ($t14, $t15, $t16) := coin::initialize<#0>($t0, $t10, $t12, $t3, $t4) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:66:48+174 + assume {:print "$at(47,2089,2263)"} true; + call $t14,$t15,$t16 := $1_coin_initialize'#0'($t0, $t10, $t12, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(47,2089,2263)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(76,1):", $t11} $t11 == $t11; + goto L2; + } + + // trace_local[mint_cap]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:66:36+8 + assume {:print "$track_local(76,1,7):", $t16} $t16 == $t16; + + // trace_local[freeze_cap]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:66:24+10 + assume {:print "$track_local(76,1,6):", $t15} $t15 == $t15; + + // trace_local[burn_cap]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:66:14+8 + assume {:print "$track_local(76,1,5):", $t14} $t14 == $t14; + + // $t17 := pack managed_coin::Capabilities<#0>($t14, $t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:74:26+102 + assume {:print "$at(47,2291,2393)"} true; + $t17 := $1_managed_coin_Capabilities'#0'($t14, $t15, $t16); + + // move_to>($t17, $t0) on_abort goto L2 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:74:9+7 + if ($ResourceExists($1_managed_coin_Capabilities'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_managed_coin_Capabilities'#0'_$memory := $ResourceUpdate($1_managed_coin_Capabilities'#0'_$memory, $t0->$addr, $t17); + } + if ($abort_flag) { + assume {:print "$at(47,2274,2281)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(76,1):", $t11} $t11 == $t11; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:79:5+1 + assume {:print "$at(47,2400,2401)"} true; +L1: + + // assert Not(Neq
($t9, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:462:9+39 + assume {:print "$at(32,20221,20260)"} true; + assert {:msg "assert_failed(32,20221,20260): function does not abort under this condition"} + !!$IsEqual'address'($t9, $t8); + + // assert Not(exists[@743]>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:463:9+51 + assume {:print "$at(32,20269,20320)"} true; + assert {:msg "assert_failed(32,20269,20320): function does not abort under this condition"} + !$ResourceExists($1_coin_CoinInfo'#0'_$memory#743, $t8); + + // assert Not(Gt(Len($t1), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:464:9+43 + assume {:print "$at(32,20329,20372)"} true; + assert {:msg "assert_failed(32,20329,20372): function does not abort under this condition"} + !(LenVec($t1) > 32); + + // assert Not(Gt(Len($t2), 10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:465:9+47 + assume {:print "$at(32,20381,20428)"} true; + assert {:msg "assert_failed(32,20381,20428): function does not abort under this condition"} + !(LenVec($t2) > 10); + + // assert Not(Not(string::spec_internal_check_utf8[]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:101:9+50 + assume {:print "$at(48,4405,4455)"} true; + assert {:msg "assert_failed(48,4405,4455): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:102:9+52 + assume {:print "$at(48,4464,4516)"} true; + assert {:msg "assert_failed(48,4464,4516): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t2); + + // assert Not(exists[@744]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:103:9+70 + assume {:print "$at(48,4525,4595)"} true; + assert {:msg "assert_failed(48,4525,4595): function does not abort under this condition"} + !$ResourceExists($1_managed_coin_Capabilities'#0'_$memory#744, $1_signer_$address_of($t0)); + + // assert exists>(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:106:9+68 + assume {:print "$at(48,4668,4736)"} true; + assert {:msg "assert_failed(48,4668,4736): post-condition does not hold"} + $ResourceExists($1_managed_coin_Capabilities'#0'_$memory, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:106:9+68 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.move:79:5+1 + assume {:print "$at(47,2400,2401)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Or(Neq
($t9, $t8), exists[@743]>($t8)), Gt(Len($t1), 32)), Gt(Len($t2), 10)), Not(string::spec_internal_check_utf8[]($t1))), Not(string::spec_internal_check_utf8[]($t2))), exists[@744]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:93:5+570 + assume {:print "$at(48,4172,4742)"} true; + assert {:msg "assert_failed(48,4172,4742): abort not covered by any of the `aborts_if` clauses"} + ((((((!$IsEqual'address'($t9, $t8) || $ResourceExists($1_coin_CoinInfo'#0'_$memory#743, $t8)) || (LenVec($t1) > 32)) || (LenVec($t2) > 10)) || !$1_string_spec_internal_check_utf8($t1)) || !$1_string_spec_internal_check_utf8($t2)) || $ResourceExists($1_managed_coin_Capabilities'#0'_$memory#744, $1_signer_$address_of($t0))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/managed_coin.spec.move:93:5+570 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// recursive spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:51:10+145 +function $1_math64_spec_pow(n: int, e: int): int { + (if ($IsEqual'u64'(e, 0)) then (1) else ((n * $1_math64_spec_pow(n, (e - 1))))) +} + +// fun math64::max [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+72 +procedure {:inline 1} $1_math64_max(_$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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume {:print "$at(161,284,285)"} true; + assume {:print "$track_local(77,4,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume {:print "$track_local(77,4,1):", $t1} $t1 == $t1; + + // $t3 := >=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:15+2 + assume {:print "$at(161,336,338)"} true; + call $t3 := $Ge($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:21+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:28+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + assume {:print "$track_return(77,4,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:13:5+1 + assume {:print "$at(161,355,356)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:13:5+1 + assume {:print "$at(161,355,356)"} true; + $ret0 := $t2; + return; + +} + +// fun math64::max [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+72 +procedure {:timeLimit 80} $1_math64_max$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume {:print "$at(161,284,285)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume $IsValid'u64'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume {:print "$track_local(77,4,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:11:5+1 + assume {:print "$track_local(77,4,1):", $t1} $t1 == $t1; + + // $t3 := >=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:15+2 + assume {:print "$at(161,336,338)"} true; + call $t3 := $Ge($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:21+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:28+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:12:9+20 + assume {:print "$at(161,330,350)"} true; + assume {:print "$track_return(77,4,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:13:5+1 + assume {:print "$at(161,355,356)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:3:9+16 + assume {:print "$at(162,72,88)"} true; + assert {:msg "assert_failed(162,72,88): function does not abort under this condition"} + !false; + + // assert Implies(Ge($t0, $t1), Eq($t2, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:4:9+31 + assume {:print "$at(162,97,128)"} true; + assert {:msg "assert_failed(162,97,128): post-condition does not hold"} + (($t0 >= $t1) ==> $IsEqual'u64'($t2, $t0)); + + // assert Implies(Lt($t0, $t1), Eq($t2, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:5:9+30 + assume {:print "$at(162,137,167)"} true; + assert {:msg "assert_failed(162,137,167): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u64'($t2, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:5:9+30 + $ret0 := $t2; + return; + +} + +// fun math64::min [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16: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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume {:print "$at(161,406,407)"} true; + assume {:print "$track_local(77,5,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume {:print "$track_local(77,5,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:15+1 + assume {:print "$at(161,458,459)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:20+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:27+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + assume {:print "$track_return(77,5,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:18:5+1 + assume {:print "$at(161,476,477)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:18:5+1 + assume {:print "$at(161,476,477)"} true; + $ret0 := $t2; + return; + +} + +// fun math64::min [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+71 +procedure {:timeLimit 80} $1_math64_min$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume {:print "$at(161,406,407)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume $IsValid'u64'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume {:print "$track_local(77,5,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:16:5+1 + assume {:print "$track_local(77,5,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:15+1 + assume {:print "$at(161,458,459)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:20+1 +L1: + + // $t2 := $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + $t2 := $t0; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:27+1 +L0: + + // $t2 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + $t2 := $t1; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:17:9+19 + assume {:print "$at(161,452,471)"} true; + assume {:print "$track_return(77,5,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:18:5+1 + assume {:print "$at(161,476,477)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:9:9+16 + assume {:print "$at(162,219,235)"} true; + assert {:msg "assert_failed(162,219,235): function does not abort under this condition"} + !false; + + // assert Implies(Lt($t0, $t1), Eq($t2, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:10:9+30 + assume {:print "$at(162,244,274)"} true; + assert {:msg "assert_failed(162,244,274): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u64'($t2, $t0)); + + // assert Implies(Ge($t0, $t1), Eq($t2, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:11:9+31 + assume {:print "$at(162,283,314)"} true; + assert {:msg "assert_failed(162,283,314): post-condition does not hold"} + (($t0 >= $t1) ==> $IsEqual'u64'($t2, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:11:9+31 + $ret0 := $t2; + return; + +} + +// fun math64::average [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:21:5+151 +procedure {:timeLimit 80} $1_math64_average$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: int; + var $t1: int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:21:5+1 + assume {:print "$at(161,518,519)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:21:5+1 + assume $IsValid'u64'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:21:5+1 + assume {:print "$track_local(77,0,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:21:5+1 + assume {:print "$track_local(77,0,1):", $t1} $t1 == $t1; + + // $t3 := <($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:22:15+1 + assume {:print "$at(161,574,575)"} true; + call $t3 := $Lt($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:22:9+95 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:23:13+1 + assume {:print "$at(161,593,594)"} true; +L1: + + // $t4 := -($t1, $t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:23:20+1 + assume {:print "$at(161,600,601)"} true; + call $t4 := $Sub($t1, $t0); + if ($abort_flag) { + assume {:print "$at(161,600,601)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:23:27+1 + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := /($t4, $t6) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:23:25+1 + call $t7 := $Div($t4, $t6); + if ($abort_flag) { + assume {:print "$at(161,605,606)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t2 := +($t0, $t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:23:15+1 + call $t2 := $AddU64($t0, $t7); + if ($abort_flag) { + assume {:print "$at(161,595,596)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:22:9+95 + assume {:print "$at(161,568,663)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:25:13+1 + assume {:print "$at(161,638,639)"} true; +L0: + + // $t8 := -($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:25:20+1 + assume {:print "$at(161,645,646)"} true; + call $t8 := $Sub($t0, $t1); + if ($abort_flag) { + assume {:print "$at(161,645,646)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t9 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:25:27+1 + $t9 := 2; + assume $IsValid'u64'($t9); + + // $t10 := /($t8, $t9) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:25:25+1 + call $t10 := $Div($t8, $t9); + if ($abort_flag) { + assume {:print "$at(161,650,651)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // $t2 := +($t1, $t10) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:25:15+1 + call $t2 := $AddU64($t1, $t10); + if ($abort_flag) { + assume {:print "$at(161,640,641)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(77,0):", $t5} $t5 == $t5; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:22:9+95 + assume {:print "$at(161,568,663)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:22:9+95 + assume {:print "$at(161,568,663)"} true; + assume {:print "$track_return(77,0,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:27:5+1 + assume {:print "$at(161,668,669)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:16:9+16 + assume {:print "$at(162,393,409)"} true; + assert {:msg "assert_failed(162,393,409): function does not abort under this condition"} + !false; + + // assert Eq($t2, Div(Add($t0, $t1), 2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:17:9+30 + assume {:print "$at(162,418,448)"} true; + assert {:msg "assert_failed(162,418,448): post-condition does not hold"} + $IsEqual'u64'($t2, (($t0 + $t1) div 2)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:17:9+30 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:27:5+1 + assume {:print "$at(161,668,669)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:14:5+128 + assume {:print "$at(162,326,454)"} true; + assert {:msg "assert_failed(162,326,454): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:14:5+128 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math64::clamp [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+95 +procedure {:timeLimit 80} $1_math64_clamp$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: int) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume {:print "$at(161,1647,1648)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume $IsValid'u64'($t2); + + // assume Le($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:21:9+26 + assume {:print "$at(162,518,544)"} true; + assume ($t1 <= $t2); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume {:print "$at(161,1647,1648)"} true; + assume {:print "$track_local(77,1,0):", $t0} $t0 == $t0; + + // trace_local[lower]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume {:print "$track_local(77,1,1):", $t1} $t1 == $t1; + + // trace_local[upper]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:57:5+1 + assume {:print "$track_local(77,1,2):", $t2} $t2 == $t2; + + // $t3 := math64::max($t1, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:58:20+13 + assume {:print "$at(161,1722,1735)"} true; + call $t3 := $1_math64_max($t1, $t0); + if ($abort_flag) { + assume {:print "$at(161,1722,1735)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(77,1):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := math64::min($t2, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:58:9+25 + call $t5 := $1_math64_min($t2, $t3); + if ($abort_flag) { + assume {:print "$at(161,1711,1736)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(77,1):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:58:9+25 + assume {:print "$track_return(77,1,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:59:5+1 + assume {:print "$at(161,1741,1742)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:22:9+16 + assume {:print "$at(162,553,569)"} true; + assert {:msg "assert_failed(162,553,569): function does not abort under this condition"} + !false; + + // assert Implies(And(Le($t1, $t0), Le($t0, $t2)), Eq($t5, $t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:23:9+50 + assume {:print "$at(162,578,628)"} true; + assert {:msg "assert_failed(162,578,628): post-condition does not hold"} + ((($t1 <= $t0) && ($t0 <= $t2)) ==> $IsEqual'u64'($t5, $t0)); + + // assert Implies(Lt($t0, $t1), Eq($t5, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:24:9+40 + assume {:print "$at(162,637,677)"} true; + assert {:msg "assert_failed(162,637,677): post-condition does not hold"} + (($t0 < $t1) ==> $IsEqual'u64'($t5, $t1)); + + // assert Implies(Lt($t2, $t0), Eq($t5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:25:9+40 + assume {:print "$at(162,686,726)"} true; + assert {:msg "assert_failed(162,686,726): post-condition does not hold"} + (($t2 < $t0) ==> $IsEqual'u64'($t5, $t2)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:25:9+40 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:59:5+1 + assume {:print "$at(161,1741,1742)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:20:5+272 + assume {:print "$at(162,460,732)"} true; + assert {:msg "assert_failed(162,460,732): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.spec.move:20:5+272 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun math64::floor_log2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:79:5+408 +procedure {:timeLimit 80} $1_math64_floor_log2$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t0: int; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:79:5+1 + assume {:print "$at(161,2160,2161)"} true; + assume $IsValid'u64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:79:5+1 + assume {:print "$track_local(77,2,0):", $t0} $t0 == $t0; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:80:19+1 + assume {:print "$at(161,2214,2215)"} true; + $t3 := 0; + assume $IsValid'u8'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:80:13+3 + assume {:print "$track_local(77,2,2):", $t3} $t3 == $t3; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:22+1 + assume {:print "$at(161,2238,2239)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := !=($t0, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:19+2 + $t5 := !$IsEqual'u64'($t0, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 + assume {:print "$at(161,2225,2295)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:54+23 +L0: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:54+23 + assume {:print "$at(161,2270,2293)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:25+53 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(161,2241,2294)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 + assume {:print "$at(161,2225,2295)"} true; + assume {:print "$track_abort(77,2):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 + $t8 := $t7; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:81:9+70 + goto L11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:83:17+2 + assume {:print "$at(161,2381,2383)"} true; +L2: + + // $t9 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:83:17+2 + assume {:print "$at(161,2381,2383)"} true; + $t9 := 32; + assume $IsValid'u8'($t9); + + // trace_local[n]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:83:13+1 + assume {:print "$track_local(77,2,1):", $t9} $t9 == $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume {:print "$at(161,2400,2401)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume {:print "$at(161,2400,2401)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u64'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t2); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'bool'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u64'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'bool'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume $IsValid'u8'($t18); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(77,2,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume {:print "$track_local(77,2,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume {:print "$track_local(77,2,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:16+1 + assume !$abort_flag; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:20+1 + $t10 := 0; + assume $IsValid'u8'($t10); + + // $t11 := >($t1, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:18+1 + call $t11 := $Gt($t1, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:9+156 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:84:9+156 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:85:17+1 + assume {:print "$at(161,2425,2426)"} true; +L5: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:85:23+1 + assume {:print "$at(161,2431,2432)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := <<($t12, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:85:25+2 + call $t13 := $ShlU64($t12, $t1); + if ($abort_flag) { + assume {:print "$at(161,2433,2435)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,2):", $t8} $t8 == $t8; + goto L11; + } + + // $t14 := >=($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:85:19+2 + call $t14 := $Ge($t0, $t13); + + // if ($t14) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:85:13+93 + if ($t14) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:86:21+1 + assume {:print "$at(161,2462,2463)"} true; +L7: + + // $t15 := >>($t0, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:86:23+2 + assume {:print "$at(161,2464,2466)"} true; + call $t15 := $ShrU64($t0, $t1); + if ($abort_flag) { + assume {:print "$at(161,2464,2466)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[x]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:86:17+1 + assume {:print "$track_local(77,2,0):", $t15} $t15 == $t15; + + // $t16 := +($t2, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:87:27+1 + assume {:print "$at(161,2496,2497)"} true; + call $t16 := $AddU8($t2, $t1); + if ($abort_flag) { + assume {:print "$at(161,2496,2497)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[res]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:87:17+3 + assume {:print "$track_local(77,2,2):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:89:17+1 + assume {:print "$at(161,2532,2533)"} true; +L6: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:89:22+1 + assume {:print "$at(161,2537,2538)"} true; + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t1, $t17) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:89:19+2 + call $t18 := $ShrU8($t1, $t17); + if ($abort_flag) { + assume {:print "$at(161,2534,2536)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,2):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[n]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:89:13+1 + assume {:print "$track_local(77,2,1):", $t18} $t18 == $t18; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:89:23+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + assume {:print "$at(161,2559,2562)"} true; +L3: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + assume {:print "$at(161,2559,2562)"} true; + assume {:print "$track_return(77,2,0):", $t2} $t2 == $t2; + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + $t19 := $t2; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:91:9+3 + assume {:print "$at(161,2559,2562)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:92:5+1 + assume {:print "$at(161,2567,2568)"} true; +L10: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:92:5+1 + assume {:print "$at(161,2567,2568)"} true; + $ret0 := $t19; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:92:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:92:5+1 + assume {:print "$at(161,2567,2568)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun math64::log2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:95:5+750 +procedure {:timeLimit 80} $1_math64_log2$verify(_$t0: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + 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: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + 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: $1_fixed_point32_FixedPoint32; + var $t0: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:95:5+1 + assume {:print "$at(161,2597,2598)"} true; + assume $IsValid'u64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:95:5+1 + assume {:print "$track_local(77,3,0):", $t0} $t0 == $t0; + + // $t6 := opaque begin: math64::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume {:print "$at(161,2664,2677)"} true; + + // assume Identical($t7, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume ($t7 == $IsEqual'u64'($t0, 0)); + + // if ($t7) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + if ($t7) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 +L13: + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume {:print "$at(161,2664,2677)"} true; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 +L12: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume {:print "$at(161,2664,2677)"} true; + assume $IsValid'u8'($t6); + + // assume Le(math64::spec_pow(2, $t6), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume ($1_math64_spec_pow(2, $t6) <= $t0); + + // assume Lt($t0, math64::spec_pow(2, Add($t6, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + assume ($t0 < $1_math64_spec_pow(2, ($t6 + 1))); + + // $t6 := opaque end: math64::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:28+13 + + // trace_local[integer_part]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:96:13+12 + assume {:print "$track_local(77,3,4):", $t6} $t6 == $t6; + + // $t9 := 4294967296 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:27+7 + assume {:print "$at(161,2757,2764)"} true; + $t9 := 4294967296; + assume $IsValid'u64'($t9); + + // $t10 := >=($t0, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:24+2 + call $t10 := $Ge($t0, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:18+120 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:99:13+1 + assume {:print "$at(161,2780,2781)"} true; +L1: + + // $t11 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:99:34+2 + assume {:print "$at(161,2801,2803)"} true; + $t11 := 32; + assume $IsValid'u8'($t11); + + // $t12 := -($t6, $t11) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:99:32+1 + call $t12 := $Sub($t6, $t11); + if ($abort_flag) { + assume {:print "$at(161,2799,2800)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t1 := >>($t0, $t12) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:99:15+2 + call $t1 := $ShrU64($t0, $t12); + if ($abort_flag) { + assume {:print "$at(161,2782,2784)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:18+120 + assume {:print "$at(161,2748,2868)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:101:13+1 + assume {:print "$at(161,2834,2835)"} true; +L0: + + // $t13 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:101:19+2 + assume {:print "$at(161,2840,2842)"} true; + $t13 := 32; + assume $IsValid'u8'($t13); + + // $t14 := -($t13, $t6) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:101:22+1 + call $t14 := $Sub($t13, $t6); + if ($abort_flag) { + assume {:print "$at(161,2843,2844)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t1 := <<($t0, $t14) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:101:15+2 + call $t1 := $ShlU64($t0, $t14); + if ($abort_flag) { + assume {:print "$at(161,2836,2838)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:18+120 + assume {:print "$at(161,2748,2868)"} true; +L2: + + // $t15 := (u128)($t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:17+130 + assume {:print "$at(161,2747,2877)"} true; + call $t15 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(161,2747,2877)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[y]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:98:13+1 + assume {:print "$track_local(77,3,5):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:103:20+1 + assume {:print "$at(161,2898,2899)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // trace_local[frac]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:103:13+4 + assume {:print "$track_local(77,3,3):", $t16} $t16 == $t16; + + // $t17 := 2147483648 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:104:21+7 + assume {:print "$at(161,2921,2928)"} true; + $t17 := 2147483648; + assume $IsValid'u64'($t17); + + // trace_local[delta]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:104:13+5 + assume {:print "$track_local(77,3,2):", $t17} $t17 == $t17; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume {:print "$at(161,2945,2950)"} true; +L8: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume {:print "$at(161,2945,2950)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u64'($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u64'($t3); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u128'($t5); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u128'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u8'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u128'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u128'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u64'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u8'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u128'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u8'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume $IsValid'u64'($t29); + + // trace_local[delta]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume {:print "$info(): enter loop, variable(s) delta, frac, y havocked and reassigned"} true; + assume {:print "$track_local(77,3,2):", $t2} $t2 == $t2; + + // trace_local[frac]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume {:print "$track_local(77,3,3):", $t3} $t3 == $t3; + + // trace_local[y]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume {:print "$track_local(77,3,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:16+5 + assume !$abort_flag; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:25+1 + $t18 := 0; + assume $IsValid'u64'($t18); + + // $t19 := !=($t2, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:22+2 + $t19 := !$IsEqual'u64'($t2, $t18); + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:9+318 + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:105:9+318 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:108:18+1 + assume {:print "$at(161,3038,3039)"} true; +L5: + + // $t20 := *($t5, $t5) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:108:20+1 + assume {:print "$at(161,3040,3041)"} true; + call $t20 := $MulU128($t5, $t5); + if ($abort_flag) { + assume {:print "$at(161,3040,3041)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t21 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:108:28+2 + $t21 := 32; + assume $IsValid'u8'($t21); + + // $t22 := >>($t20, $t21) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:108:25+2 + call $t22 := $ShrU128($t20, $t21); + if ($abort_flag) { + assume {:print "$at(161,3045,3047)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[y]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:108:13+1 + assume {:print "$track_local(77,3,5):", $t22} $t22 == $t22; + + // $t23 := 8589934592 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:22+9 + assume {:print "$at(161,3166,3175)"} true; + $t23 := 8589934592; + assume $IsValid'u128'($t23); + + // $t24 := >=($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:19+2 + call $t24 := $Ge($t22, $t23); + + // if ($t24) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:13+56 + if ($t24) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:42+4 +L7: + + // $t25 := +($t3, $t2) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:47+1 + assume {:print "$at(161,3191,3192)"} true; + call $t25 := $AddU64($t3, $t2); + if ($abort_flag) { + assume {:print "$at(161,3191,3192)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[frac]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:35+4 + assume {:print "$track_local(77,3,3):", $t25} $t25 == $t25; + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:65+1 + $t26 := 1; + assume $IsValid'u8'($t26); + + // $t27 := >>($t22, $t26) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:62+2 + call $t27 := $ShrU128($t22, $t26); + if ($abort_flag) { + assume {:print "$at(161,3206,3208)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[y]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:111:56+1 + assume {:print "$track_local(77,3,5):", $t27} $t27 == $t27; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:112:21+5 + assume {:print "$at(161,3235,3240)"} true; +L6: + + // $t28 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:112:30+1 + assume {:print "$at(161,3244,3245)"} true; + $t28 := 1; + assume $IsValid'u8'($t28); + + // $t29 := >>($t2, $t28) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:112:27+2 + call $t29 := $ShrU64($t2, $t28); + if ($abort_flag) { + assume {:print "$at(161,3241,3243)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[delta]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:112:13+5 + assume {:print "$track_local(77,3,2):", $t29} $t29 == $t29; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:112:31+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:49+12 + assume {:print "$at(161,3306,3318)"} true; +L3: + + // $t30 := (u64)($t6) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:48+21 + assume {:print "$at(161,3305,3326)"} true; + call $t30 := $CastU64($t6); + if ($abort_flag) { + assume {:print "$at(161,3305,3326)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t31 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:73+2 + $t31 := 32; + assume $IsValid'u8'($t31); + + // $t32 := <<($t30, $t31) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:70+2 + call $t32 := $ShlU64($t30, $t31); + if ($abort_flag) { + assume {:print "$at(161,3327,3329)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t33 := +($t32, $t3) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:77+1 + call $t33 := $AddU64($t32, $t3); + if ($abort_flag) { + assume {:print "$at(161,3334,3335)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(77,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t34 := opaque begin: fixed_point32::create_from_raw_value($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t34); + + // assume Eq(select fixed_point32::FixedPoint32.value($t34), $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + assume $IsEqual'u64'($t34->$value, $t33); + + // $t34 := opaque end: fixed_point32::create_from_raw_value($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + + // trace_return[0]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + assume {:print "$track_return(77,3,0):", $t34} $t34 == $t34; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:9+75 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:49+12 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:114:49+12 + assume {:print "$at(161,3306,3318)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:115:5+1 + assume {:print "$at(161,3346,3347)"} true; +L10: + + // return $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:115:5+1 + assume {:print "$at(161,3346,3347)"} true; + $ret0 := $t34; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:115:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:115:5+1 + assume {:print "$at(161,3346,3347)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun math64::pow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:62:5+328 +procedure {:timeLimit 80} $1_math64_pow$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t0: int; + var $t1: int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:62:5+1 + assume {:print "$at(161,1796,1797)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:62:5+1 + assume $IsValid'u64'($t1); + + // trace_local[n]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:62:5+1 + assume {:print "$track_local(77,6,0):", $t0} $t0 == $t0; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:62:5+1 + assume {:print "$track_local(77,6,1):", $t1} $t1 == $t1; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:18+1 + assume {:print "$at(161,1851,1852)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t5 := ==($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:15+2 + $t5 := $IsEqual'u64'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:64:13+1 + assume {:print "$at(161,1868,1869)"} true; +L1: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:64:13+1 + assume {:print "$at(161,1868,1869)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + assume {:print "$at(161,1842,2118)"} true; + $t2 := $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:66:21+1 + assume {:print "$at(161,1907,1908)"} true; +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:66:21+1 + assume {:print "$at(161,1907,1908)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // trace_local[p]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:66:17+1 + assume {:print "$track_local(77,6,3):", $t7} $t7 == $t7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume {:print "$at(161,1929,1930)"} true; +L8: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume {:print "$at(161,1929,1930)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'bool'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume $IsValid'u64'($t17); + + // trace_local[n]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume {:print "$info(): enter loop, variable(s) n, e, p havocked and reassigned"} true; + assume {:print "$track_local(77,6,0):", $t0} $t0 == $t0; + + // trace_local[e]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume {:print "$track_local(77,6,1):", $t1} $t1 == $t1; + + // trace_local[p]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume {:print "$track_local(77,6,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:20+1 + assume !$abort_flag; + + // $t8 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:24+1 + $t8 := 1; + assume $IsValid'u64'($t8); + + // $t9 := >($t1, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:22+1 + call $t9 := $Gt($t1, $t8); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:13+167 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:67:13+167 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:21+1 + assume {:print "$at(161,1958,1959)"} true; +L5: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:25+1 + assume {:print "$at(161,1962,1963)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := %($t1, $t10) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:23+1 + call $t11 := $Mod($t1, $t10); + if ($abort_flag) { + assume {:print "$at(161,1960,1961)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(77,6):", $t18} $t18 == $t18; + goto L11; + } + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:30+1 + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:27+2 + $t13 := $IsEqual'u64'($t11, $t12); + + // if ($t13) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:68:17+66 + if ($t13) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:69:25+1 + assume {:print "$at(161,1996,1997)"} true; +L7: + + // $t14 := *($t3, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:69:27+1 + assume {:print "$at(161,1998,1999)"} true; + call $t14 := $MulU64($t3, $t0); + if ($abort_flag) { + assume {:print "$at(161,1998,1999)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(77,6):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[p]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:69:21+1 + assume {:print "$track_local(77,6,3):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:71:21+1 + assume {:print "$at(161,2042,2043)"} true; +L6: + + // $t15 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:71:25+1 + assume {:print "$at(161,2046,2047)"} true; + $t15 := 2; + assume $IsValid'u64'($t15); + + // $t16 := /($t1, $t15) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:71:23+1 + call $t16 := $Div($t1, $t15); + if ($abort_flag) { + assume {:print "$at(161,2044,2045)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(77,6):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[e]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:71:17+1 + assume {:print "$track_local(77,6,1):", $t16} $t16 == $t16; + + // $t17 := *($t0, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:72:23+1 + assume {:print "$at(161,2071,2072)"} true; + call $t17 := $MulU64($t0, $t0); + if ($abort_flag) { + assume {:print "$at(161,2071,2072)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(77,6):", $t18} $t18 == $t18; + goto L11; + } + + // trace_local[n]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:72:17+1 + assume {:print "$track_local(77,6,0):", $t17} $t17 == $t17; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:72:26+1 + goto L9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:74:13+1 + assume {:print "$at(161,2103,2104)"} true; +L3: + + // $t2 := *($t3, $t0) on_abort goto L11 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:74:15+1 + assume {:print "$at(161,2105,2106)"} true; + call $t2 := $MulU64($t3, $t0); + if ($abort_flag) { + assume {:print "$at(161,2105,2106)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(77,6):", $t18} $t18 == $t18; + goto L11; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + assume {:print "$at(161,1842,2118)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + assume {:print "$at(161,1842,2118)"} true; + assume {:print "$track_return(77,6,0):", $t2} $t2 == $t2; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + // Loop invariant checking block for the loop started with header: L8 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:63:9+276 + assume {:print "$at(161,1842,2118)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:76:5+1 + assume {:print "$at(161,2123,2124)"} true; +L10: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:76:5+1 + assume {:print "$at(161,2123,2124)"} true; + $ret0 := $t2; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:76:5+1 +L11: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:76:5+1 + assume {:print "$at(161,2123,2124)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun math64::sqrt [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:118:5+1131 +procedure {:timeLimit 80} $1_math64_sqrt$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + 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 $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t0: int; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:118:5+1 + assume {:print "$at(161,3412,3413)"} true; + assume $IsValid'u64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:118:5+1 + assume {:print "$track_local(77,7,0):", $t0} $t0 == $t0; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:18+1 + assume {:print "$at(161,3460,3461)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := ==($t0, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:15+2 + $t3 := $IsEqual'u64'($t0, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:9+20 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:28+1 +L1: + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:28+1 + assume {:print "$at(161,3470,3471)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:21+8 + assume {:print "$track_return(77,7,0):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:21+8 + $t5 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:119:21+8 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:19+1 + assume {:print "$at(161,4048,4049)"} true; +L0: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:19+1 + assume {:print "$at(161,4048,4049)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := opaque begin: math64::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + + // assume Identical($t8, Eq($t0, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + assume ($t8 == $IsEqual'u64'($t0, 0)); + + // if ($t8) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + if ($t8) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 +L5: + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + assume {:print "$at(161,4055,4068)"} true; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 +L4: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + assume {:print "$at(161,4055,4068)"} true; + assume $IsValid'u8'($t7); + + // assume Le(math64::spec_pow(2, $t7), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + assume ($1_math64_spec_pow(2, $t7) <= $t0); + + // assume Lt($t0, math64::spec_pow(2, Add($t7, 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + assume ($t0 < $1_math64_spec_pow(2, ($t7 + 1))); + + // $t7 := opaque end: math64::floor_log2($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:26+13 + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:42+1 + $t10 := 1; + assume $IsValid'u8'($t10); + + // $t11 := +($t7, $t10) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:40+1 + call $t11 := $AddU8($t7, $t10); + if ($abort_flag) { + assume {:print "$at(161,4069,4070)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:48+1 + $t12 := 1; + assume $IsValid'u8'($t12); + + // $t13 := >>($t11, $t12) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:45+2 + call $t13 := $ShrU8($t11, $t12); + if ($abort_flag) { + assume {:print "$at(161,4074,4076)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t14 := <<($t6, $t13) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:21+2 + call $t14 := $ShlU64($t6, $t13); + if ($abort_flag) { + assume {:print "$at(161,4050,4052)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:125:13+3 + assume {:print "$track_local(77,7,1):", $t14} $t14 == $t14; + + // $t15 := /($t0, $t14) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:129:24+1 + assume {:print "$at(161,4391,4392)"} true; + call $t15 := $Div($t0, $t14); + if ($abort_flag) { + assume {:print "$at(161,4391,4392)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t16 := +($t14, $t15) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:129:20+1 + call $t16 := $AddU64($t14, $t15); + if ($abort_flag) { + assume {:print "$at(161,4387,4388)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:129:34+1 + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t16, $t17) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:129:31+2 + call $t18 := $ShrU64($t16, $t17); + if ($abort_flag) { + assume {:print "$at(161,4398,4400)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:129:9+3 + assume {:print "$track_local(77,7,1):", $t18} $t18 == $t18; + + // $t19 := /($t0, $t18) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:130:24+1 + assume {:print "$at(161,4427,4428)"} true; + call $t19 := $Div($t0, $t18); + if ($abort_flag) { + assume {:print "$at(161,4427,4428)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t20 := +($t18, $t19) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:130:20+1 + call $t20 := $AddU64($t18, $t19); + if ($abort_flag) { + assume {:print "$at(161,4423,4424)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t21 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:130:34+1 + $t21 := 1; + assume $IsValid'u8'($t21); + + // $t22 := >>($t20, $t21) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:130:31+2 + call $t22 := $ShrU64($t20, $t21); + if ($abort_flag) { + assume {:print "$at(161,4434,4436)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:130:9+3 + assume {:print "$track_local(77,7,1):", $t22} $t22 == $t22; + + // $t23 := /($t0, $t22) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:131:24+1 + assume {:print "$at(161,4463,4464)"} true; + call $t23 := $Div($t0, $t22); + if ($abort_flag) { + assume {:print "$at(161,4463,4464)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t24 := +($t22, $t23) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:131:20+1 + call $t24 := $AddU64($t22, $t23); + if ($abort_flag) { + assume {:print "$at(161,4459,4460)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:131:34+1 + $t25 := 1; + assume $IsValid'u8'($t25); + + // $t26 := >>($t24, $t25) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:131:31+2 + call $t26 := $ShrU64($t24, $t25); + if ($abort_flag) { + assume {:print "$at(161,4470,4472)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:131:9+3 + assume {:print "$track_local(77,7,1):", $t26} $t26 == $t26; + + // $t27 := /($t0, $t26) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:132:24+1 + assume {:print "$at(161,4499,4500)"} true; + call $t27 := $Div($t0, $t26); + if ($abort_flag) { + assume {:print "$at(161,4499,4500)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t28 := +($t26, $t27) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:132:20+1 + call $t28 := $AddU64($t26, $t27); + if ($abort_flag) { + assume {:print "$at(161,4495,4496)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:132:34+1 + $t29 := 1; + assume $IsValid'u8'($t29); + + // $t30 := >>($t28, $t29) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:132:31+2 + call $t30 := $ShrU64($t28, $t29); + if ($abort_flag) { + assume {:print "$at(161,4506,4508)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_local[res]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:132:9+3 + assume {:print "$track_local(77,7,1):", $t30} $t30 == $t30; + + // $t31 := /($t0, $t30) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:133:20+1 + assume {:print "$at(161,4531,4532)"} true; + call $t31 := $Div($t0, $t30); + if ($abort_flag) { + assume {:print "$at(161,4531,4532)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // $t32 := math64::min($t30, $t31) on_abort goto L3 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:133:9+17 + call $t32 := $1_math64_min($t30, $t31); + if ($abort_flag) { + assume {:print "$at(161,4520,4537)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(77,7):", $t9} $t9 == $t9; + goto L3; + } + + // trace_return[0]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:133:9+17 + assume {:print "$track_return(77,7,0):", $t32} $t32 == $t32; + + // $t5 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:133:9+17 + $t5 := $t32; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:134:5+1 + assume {:print "$at(161,4542,4543)"} true; +L2: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:134:5+1 + assume {:print "$at(161,4542,4543)"} true; + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:134:5+1 +L3: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:134:5+1 + assume {:print "$at(161,4542,4543)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun math_fixed::mul_div [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+310 +procedure {:timeLimit 80} $1_math_fixed_mul_div$verify(_$t0: $1_fixed_point32_FixedPoint32, _$t1: $1_fixed_point32_FixedPoint32, _$t2: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t3: int; + var $t4: 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: bool; + 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: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $t1: $1_fixed_point32_FixedPoint32; + var $t2: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume {:print "$at(163,1937,1938)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t2); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume {:print "$track_local(78,5,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume {:print "$track_local(78,5,1):", $t1} $t1 == $t1; + + // trace_local[z]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:49:5+1 + assume {:print "$track_local(78,5,2):", $t2} $t2 == $t2; + + // $t9 := fixed_point32::get_raw_value($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:50:17+31 + assume {:print "$at(163,2039,2070)"} true; + call $t9 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,2039,2070)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[a]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:50:13+1 + assume {:print "$track_local(78,5,3):", $t9} $t9 == $t9; + + // $t11 := fixed_point32::get_raw_value($t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:51:17+31 + assume {:print "$at(163,2088,2119)"} true; + call $t11 := $1_fixed_point32_get_raw_value($t1); + if ($abort_flag) { + assume {:print "$at(163,2088,2119)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[b]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:51:13+1 + assume {:print "$track_local(78,5,5):", $t11} $t11 == $t11; + + // $t12 := fixed_point32::get_raw_value($t2) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:52:17+31 + assume {:print "$at(163,2137,2168)"} true; + call $t12 := $1_fixed_point32_get_raw_value($t2); + if ($abort_flag) { + assume {:print "$at(163,2137,2168)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[c]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:52:13+1 + assume {:print "$track_local(78,5,7):", $t12} $t12 == $t12; + + // trace_local[c#219]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:50:47+1 + assume {:print "$at(161,1347,1348)"} true; + assume {:print "$track_local(78,5,8):", $t12} $t12 == $t12; + + // trace_local[b#218]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:50:39+1 + assume {:print "$track_local(78,5,6):", $t11} $t11 == $t11; + + // trace_local[a#217]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:50:31+1 + assume {:print "$track_local(78,5,4):", $t9} $t9 == $t9; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:22+1 + assume {:print "$at(161,1483,1484)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := !=($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:19+2 + $t14 := !$IsEqual'u64'($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 + assume {:print "$at(161,1470,1518)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:54+1 +L0: + + // $t15 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:54+1 + assume {:print "$at(161,1515,1516)"} true; + $t15 := 4; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:25+31 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(161,1486,1517)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 + assume {:print "$at(161,1470,1518)"} true; + assume {:print "$track_abort(78,5):", $t16} $t16 == $t16; + + // $t10 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 + $t10 := $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:52:9+48 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:12+1 + assume {:print "$at(161,1531,1532)"} true; +L2: + + // $t17 := (u128)($t9) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:11+11 + assume {:print "$at(161,1530,1541)"} true; + call $t17 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(161,1530,1541)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t18 := (u128)($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:25+11 + call $t18 := $CastU128($t11); + if ($abort_flag) { + assume {:print "$at(161,1544,1555)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t19 := *($t17, $t18) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:23+1 + call $t19 := $MulU128($t17, $t18); + if ($abort_flag) { + assume {:print "$at(161,1542,1543)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t20 := (u128)($t12) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:39+11 + call $t20 := $CastU128($t12); + if ($abort_flag) { + assume {:print "$at(161,1558,1569)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t21 := /($t19, $t20) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:37+1 + call $t21 := $Div($t19, $t20); + if ($abort_flag) { + assume {:print "$at(161,1556,1557)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t22 := (u64)($t21) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math64.move:53:9+50 + call $t22 := $CastU64($t21); + if ($abort_flag) { + assume {:print "$at(161,1528,1578)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(78,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t23 := opaque begin: fixed_point32::create_from_raw_value($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:53:9+63 + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:53:9+63 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t23); + + // assume Eq(select fixed_point32::FixedPoint32.value($t23), $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:53:9+63 + assume $IsEqual'u64'($t23->$value, $t22); + + // $t23 := opaque end: fixed_point32::create_from_raw_value($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:53:9+63 + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:53:9+63 + assume {:print "$track_return(78,5,0):", $t23} $t23 == $t23; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:54:5+1 + assume {:print "$at(163,2246,2247)"} true; +L3: + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:54:5+1 + assume {:print "$at(163,2246,2247)"} true; + $ret0 := $t23; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:54:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:54:5+1 + assume {:print "$at(163,2246,2247)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun math_fixed::pow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:43:5+215 +procedure {:timeLimit 80} $1_math_fixed_pow$verify(_$t0: $1_fixed_point32_FixedPoint32, _$t1: int) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $t1: int; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:43:5+1 + assume {:print "$at(163,1640,1641)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:43:5+1 + assume $IsValid'u64'($t1); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:43:5+1 + assume {:print "$track_local(78,6,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:43:5+1 + assume {:print "$track_local(78,6,1):", $t1} $t1 == $t1; + + // $t2 := fixed_point32::get_raw_value($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:44:26+31 + assume {:print "$at(163,1721,1752)"} true; + call $t2 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,1721,1752)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := (u128)($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:44:25+41 + call $t4 := $CastU128($t2); + if ($abort_flag) { + assume {:print "$at(163,1720,1761)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := (u128)($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:66+11 + assume {:print "$at(163,1828,1839)"} true; + call $t5 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(163,1828,1839)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := math_fixed::pow_raw($t4, $t5) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:47+31 + call $t6 := $1_math_fixed_pow_raw($t4, $t5); + if ($abort_flag) { + assume {:print "$at(163,1809,1840)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t7 := (u64)($t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:46+40 + call $t7 := $CastU64($t6); + if ($abort_flag) { + assume {:print "$at(163,1808,1848)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := opaque begin: fixed_point32::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:9+78 + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:9+78 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t8); + + // assume Eq(select fixed_point32::FixedPoint32.value($t8), $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:9+78 + assume $IsEqual'u64'($t8->$value, $t7); + + // $t8 := opaque end: fixed_point32::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:9+78 + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:45:9+78 + assume {:print "$track_return(78,6,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:46:5+1 + assume {:print "$at(163,1854,1855)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:46:5+1 + assume {:print "$at(163,1854,1855)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:46:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:46:5+1 + assume {:print "$at(163,1854,1855)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun math_fixed::sqrt [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:18:5+191 +procedure {:timeLimit 80} $1_math_fixed_sqrt$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:18:5+1 + assume {:print "$at(163,559,560)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:18:5+1 + assume {:print "$track_local(78,8,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point32::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:19:18+31 + assume {:print "$at(163,625,656)"} true; + call $t1 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,625,656)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u128)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:19:17+41 + call $t3 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(163,624,665)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:66+2 + assume {:print "$at(163,732,734)"} true; + $t4 := 32; + assume $IsValid'u8'($t4); + + // $t5 := <<($t3, $t4) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:63+2 + call $t5 := $ShlU128($t3, $t4); + if ($abort_flag) { + assume {:print "$at(163,729,731)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t6 := opaque begin: math128::sqrt($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:47+22 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:47+22 + assume $IsValid'u128'($t6); + + // assume Implies(Gt($t5, 0), Le(Mul($t6, $t6), $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:47+22 + assume (($t5 > 0) ==> (($t6 * $t6) <= $t5)); + + // assume Implies(Gt($t5, 0), Lt($t5, Mul(Add($t6, 1), Add($t6, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:47+22 + assume (($t5 > 0) ==> ($t5 < (($t6 + 1) * ($t6 + 1)))); + + // $t6 := opaque end: math128::sqrt($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:47+22 + + // $t7 := (u64)($t6) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:46+31 + call $t7 := $CastU64($t6); + if ($abort_flag) { + assume {:print "$at(163,712,743)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,8):", $t2} $t2 == $t2; + goto L2; + } + + // $t8 := opaque begin: fixed_point32::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:9+69 + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:9+69 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t8); + + // assume Eq(select fixed_point32::FixedPoint32.value($t8), $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:9+69 + assume $IsEqual'u64'($t8->$value, $t7); + + // $t8 := opaque end: fixed_point32::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:9+69 + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:20:9+69 + assume {:print "$track_return(78,8,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:21:5+1 + assume {:print "$at(163,749,750)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:21:5+1 + assume {:print "$at(163,749,750)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:21:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:21:5+1 + assume {:print "$at(163,749,750)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed::avg [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:109:5+147 +procedure {:inline 1} $1_math_fixed_avg(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:109:5+1 + assume {:print "$at(163,4376,4377)"} true; + assume {:print "$track_local(78,0,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:110:19+20 + assume {:print "$at(163,4438,4458)"} true; + call $t2 := $1_vector_length'u128'($t0); + if ($abort_flag) { + assume {:print "$at(163,4438,4458)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[len]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:110:13+3 + assume {:print "$track_local(78,0,1):", $t2} $t2 == $t2; + + // $t4 := math_fixed::sum($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:112:19+9 + assume {:print "$at(163,4479,4488)"} true; + call $t4 := $1_math_fixed_sum($t0); + if ($abort_flag) { + assume {:print "$at(163,4479,4488)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := (u128)($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:15+13 + assume {:print "$at(163,4504,4517)"} true; + call $t5 := $CastU128($t2); + if ($abort_flag) { + assume {:print "$at(163,4504,4517)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := /($t4, $t5) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:13+1 + call $t6 := $Div($t4, $t5); + if ($abort_flag) { + assume {:print "$at(163,4502,4503)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:9+19 + assume {:print "$track_return(78,0,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun math_fixed::avg [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:109:5+147 +procedure {:timeLimit 80} $1_math_fixed_avg$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:109:5+1 + assume {:print "$at(163,4376,4377)"} true; + assume $IsValid'vec'u128''($t0); + + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:109:5+1 + assume {:print "$track_local(78,0,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:110:19+20 + assume {:print "$at(163,4438,4458)"} true; + call $t2 := $1_vector_length'u128'($t0); + if ($abort_flag) { + assume {:print "$at(163,4438,4458)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[len]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:110:13+3 + assume {:print "$track_local(78,0,1):", $t2} $t2 == $t2; + + // $t4 := math_fixed::sum($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:112:19+9 + assume {:print "$at(163,4479,4488)"} true; + call $t4 := $1_math_fixed_sum($t0); + if ($abort_flag) { + assume {:print "$at(163,4479,4488)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := (u128)($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:15+13 + assume {:print "$at(163,4504,4517)"} true; + call $t5 := $CastU128($t2); + if ($abort_flag) { + assume {:print "$at(163,4504,4517)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := /($t4, $t5) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:13+1 + call $t6 := $Div($t4, $t5); + if ($abort_flag) { + assume {:print "$at(163,4502,4503)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(78,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:113:9+19 + assume {:print "$track_return(78,0,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:114:5+1 + assume {:print "$at(163,4522,4523)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun math_fixed::exp [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:24:5+194 +procedure {:timeLimit 80} $1_math_fixed_exp$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:24:5+1 + assume {:print "$at(163,813,814)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:24:5+1 + assume {:print "$track_local(78,1,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point32::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:25:26+31 + assume {:print "$at(163,886,917)"} true; + call $t1 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,886,917)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u128)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:25:25+41 + call $t3 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(163,885,926)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := math_fixed::exp_raw($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:47+18 + assume {:print "$at(163,974,992)"} true; + call $t4 := $1_math_fixed_exp_raw($t3); + if ($abort_flag) { + assume {:print "$at(163,974,992)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := (u64)($t4) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:46+27 + call $t5 := $CastU64($t4); + if ($abort_flag) { + assume {:print "$at(163,973,1000)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t6 := opaque begin: fixed_point32::create_from_raw_value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:9+65 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:9+65 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t6); + + // assume Eq(select fixed_point32::FixedPoint32.value($t6), $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:9+65 + assume $IsEqual'u64'($t6->$value, $t5); + + // $t6 := opaque end: fixed_point32::create_from_raw_value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:9+65 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:26:9+65 + assume {:print "$track_return(78,1,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:27:5+1 + assume {:print "$at(163,1006,1007)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:27:5+1 + assume {:print "$at(163,1006,1007)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:27:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:27:5+1 + assume {:print "$at(163,1006,1007)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed::exp_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:57:5+1293 +procedure {:inline 1} $1_math_fixed_exp_raw(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: 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: bool; + 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: int; + 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 $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t0: int; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:57:5+1 + assume {:print "$at(163,2321,2322)"} true; + assume {:print "$track_local(78,2,0):", $t0} $t0 == $t0; + + // $t11 := 2977044472 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:30+3 + assume {:print "$at(163,2488,2491)"} true; + $t11 := 2977044472; + assume $IsValid'u128'($t11); + + // $t12 := /($t0, $t11) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:28+1 + call $t12 := $Div($t0, $t11); + if ($abort_flag) { + assume {:print "$at(163,2486,2487)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[shift_long]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:13+10 + assume {:print "$track_local(78,2,6):", $t12} $t12 == $t12; + + // $t14 := 31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:31+2 + assume {:print "$at(163,2523,2525)"} true; + $t14 := 31; + assume $IsValid'u128'($t14); + + // $t15 := <=($t12, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:28+2 + call $t15 := $Le($t12, $t14); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + assume {:print "$at(163,2501,2568)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:61+13 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:61+13 + assume {:print "$at(163,2553,2566)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_state($t16) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:35+40 + call $t17 := $1_error_invalid_state($t16); + if ($abort_flag) { + assume {:print "$at(163,2527,2567)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + assume {:print "$at(163,2501,2568)"} true; + assume {:print "$track_abort(78,2):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + $t13 := $t17; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:22+10 + assume {:print "$at(163,2591,2601)"} true; +L2: + + // $t18 := (u8)($t12) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:21+18 + assume {:print "$at(163,2590,2608)"} true; + call $t18 := $CastU8($t12); + if ($abort_flag) { + assume {:print "$at(163,2590,2608)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[shift]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:13+5 + assume {:print "$track_local(78,2,5):", $t18} $t18 == $t18; + + // $t19 := 2977044472 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:29+3 + assume {:print "$at(163,2638,2641)"} true; + $t19 := 2977044472; + assume $IsValid'u128'($t19); + + // $t20 := %($t0, $t19) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:27+1 + call $t20 := $Mod($t0, $t19); + if ($abort_flag) { + assume {:print "$at(163,2636,2637)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[remainder]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:13+9 + assume {:print "$track_local(78,2,4):", $t20} $t20 == $t20; + + // $t21 := 595528 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:65:25+6 + assume {:print "$at(163,2785,2791)"} true; + $t21 := 595528; + assume $IsValid'u128'($t21); + + // trace_local[bigfactor]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:65:13+9 + assume {:print "$track_local(78,2,1):", $t21} $t21 == $t21; + + // $t22 := /($t20, $t21) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:66:34+1 + assume {:print "$at(163,2826,2827)"} true; + call $t22 := $Div($t20, $t21); + if ($abort_flag) { + assume {:print "$at(163,2826,2827)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[exponent]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:66:13+8 + assume {:print "$track_local(78,2,2):", $t22} $t22 == $t22; + + // $t23 := %($t20, $t21) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:67:27+1 + assume {:print "$at(163,2865,2866)"} true; + call $t23 := $Mod($t20, $t21); + if ($abort_flag) { + assume {:print "$at(163,2865,2866)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[x#1]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:67:13+1 + assume {:print "$track_local(78,2,10):", $t23} $t23 == $t23; + + // $t24 := 4295562865 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:69:23+10 + assume {:print "$at(163,2971,2981)"} true; + $t24 := 4295562865; + assume $IsValid'u128'($t24); + + // $t25 := math_fixed::pow_raw($t24, $t22) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:71:21+26 + assume {:print "$at(163,3125,3151)"} true; + call $t25 := $1_math_fixed_pow_raw($t24, $t22); + if ($abort_flag) { + assume {:print "$at(163,3125,3151)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[power]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:71:13+5 + assume {:print "$track_local(78,2,3):", $t25} $t25 == $t25; + + // $t26 := 1241009291 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:72:30+10 + assume {:print "$at(163,3182,3192)"} true; + $t26 := 1241009291; + assume $IsValid'u128'($t26); + + // $t27 := *($t25, $t26) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:33+1 + assume {:print "$at(163,3226,3227)"} true; + call $t27 := $MulU128($t25, $t26); + if ($abort_flag) { + assume {:print "$at(163,3226,3227)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t28 := *($t27, $t22) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:50+1 + call $t28 := $MulU128($t27, $t22); + if ($abort_flag) { + assume {:print "$at(163,3243,3244)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t29 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:65+2 + $t29 := 64; + assume $IsValid'u8'($t29); + + // $t30 := >>($t28, $t29) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:62+2 + call $t30 := $ShrU128($t28, $t29); + if ($abort_flag) { + assume {:print "$at(163,3255,3257)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t31 := +($t25, $t30) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:23+1 + call $t31 := $AddU128($t25, $t30); + if ($abort_flag) { + assume {:print "$at(163,3216,3217)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[power]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:9+5 + assume {:print "$track_local(78,2,3):", $t31} $t31 == $t31; + + // $t32 := *($t31, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:30+1 + assume {:print "$at(163,3438,3439)"} true; + call $t32 := $MulU128($t31, $t23); + if ($abort_flag) { + assume {:print "$at(163,3438,3439)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t33 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:39+2 + $t33 := 32; + assume $IsValid'u8'($t33); + + // $t34 := -($t33, $t18) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:42+1 + call $t34 := $Sub($t33, $t18); + if ($abort_flag) { + assume {:print "$at(163,3450,3451)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t35 := >>($t32, $t34) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:35+2 + call $t35 := $ShrU128($t32, $t34); + if ($abort_flag) { + assume {:print "$at(163,3443,3445)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor1]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:13+7 + assume {:print "$track_local(78,2,7):", $t35} $t35 == $t35; + + // $t36 := *($t35, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:32+1 + assume {:print "$at(163,3491,3492)"} true; + call $t36 := $MulU128($t35, $t23); + if ($abort_flag) { + assume {:print "$at(163,3491,3492)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t37 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:40+2 + $t37 := 32; + assume $IsValid'u8'($t37); + + // $t38 := >>($t36, $t37) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:37+2 + call $t38 := $ShrU128($t36, $t37); + if ($abort_flag) { + assume {:print "$at(163,3496,3498)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor2]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:13+7 + assume {:print "$track_local(78,2,8):", $t38} $t38 == $t38; + + // $t39 := *($t38, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:32+1 + assume {:print "$at(163,3534,3535)"} true; + call $t39 := $MulU128($t38, $t23); + if ($abort_flag) { + assume {:print "$at(163,3534,3535)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t40 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:40+2 + $t40 := 32; + assume $IsValid'u8'($t40); + + // $t41 := >>($t39, $t40) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:37+2 + call $t41 := $ShrU128($t39, $t40); + if ($abort_flag) { + assume {:print "$at(163,3539,3541)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor3]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:13+7 + assume {:print "$track_local(78,2,9):", $t41} $t41 == $t41; + + // $t42 := <<($t31, $t18) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:16+2 + assume {:print "$at(163,3561,3563)"} true; + call $t42 := $ShlU128($t31, $t18); + if ($abort_flag) { + assume {:print "$at(163,3561,3563)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t43 := +($t42, $t35) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:26+1 + call $t43 := $AddU128($t42, $t35); + if ($abort_flag) { + assume {:print "$at(163,3571,3572)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t44 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:48+1 + $t44 := 2; + assume $IsValid'u128'($t44); + + // $t45 := /($t38, $t44) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:46+1 + call $t45 := $Div($t38, $t44); + if ($abort_flag) { + assume {:print "$at(163,3591,3592)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t46 := +($t43, $t45) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:36+1 + call $t46 := $AddU128($t43, $t45); + if ($abort_flag) { + assume {:print "$at(163,3581,3582)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t47 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:62+1 + $t47 := 6; + assume $IsValid'u128'($t47); + + // $t48 := /($t41, $t47) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:60+1 + call $t48 := $Div($t41, $t47); + if ($abort_flag) { + assume {:print "$at(163,3605,3606)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t49 := +($t46, $t48) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:50+1 + call $t49 := $AddU128($t46, $t48); + if ($abort_flag) { + assume {:print "$at(163,3595,3596)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_return[0]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:9+54 + assume {:print "$track_return(78,2,0):", $t49} $t49 == $t49; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; +L3: + + // return $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; + $ret0 := $t49; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 +L4: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun math_fixed::exp_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:57:5+1293 +procedure {:timeLimit 80} $1_math_fixed_exp_raw$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: 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: bool; + 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: int; + 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 $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t0: int; + var $temp_0'u128': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:57:5+1 + assume {:print "$at(163,2321,2322)"} true; + assume $IsValid'u128'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:57:5+1 + assume {:print "$track_local(78,2,0):", $t0} $t0 == $t0; + + // $t11 := 2977044472 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:30+3 + assume {:print "$at(163,2488,2491)"} true; + $t11 := 2977044472; + assume $IsValid'u128'($t11); + + // $t12 := /($t0, $t11) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:28+1 + call $t12 := $Div($t0, $t11); + if ($abort_flag) { + assume {:print "$at(163,2486,2487)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[shift_long]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:59:13+10 + assume {:print "$track_local(78,2,6):", $t12} $t12 == $t12; + + // $t14 := 31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:31+2 + assume {:print "$at(163,2523,2525)"} true; + $t14 := 31; + assume $IsValid'u128'($t14); + + // $t15 := <=($t12, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:28+2 + call $t15 := $Le($t12, $t14); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + assume {:print "$at(163,2501,2568)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:61+13 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:61+13 + assume {:print "$at(163,2553,2566)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_state($t16) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:35+40 + call $t17 := $1_error_invalid_state($t16); + if ($abort_flag) { + assume {:print "$at(163,2527,2567)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + assume {:print "$at(163,2501,2568)"} true; + assume {:print "$track_abort(78,2):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + $t13 := $t17; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:60:9+67 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:22+10 + assume {:print "$at(163,2591,2601)"} true; +L2: + + // $t18 := (u8)($t12) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:21+18 + assume {:print "$at(163,2590,2608)"} true; + call $t18 := $CastU8($t12); + if ($abort_flag) { + assume {:print "$at(163,2590,2608)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[shift]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:61:13+5 + assume {:print "$track_local(78,2,5):", $t18} $t18 == $t18; + + // $t19 := 2977044472 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:29+3 + assume {:print "$at(163,2638,2641)"} true; + $t19 := 2977044472; + assume $IsValid'u128'($t19); + + // $t20 := %($t0, $t19) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:27+1 + call $t20 := $Mod($t0, $t19); + if ($abort_flag) { + assume {:print "$at(163,2636,2637)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[remainder]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:62:13+9 + assume {:print "$track_local(78,2,4):", $t20} $t20 == $t20; + + // $t21 := 595528 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:65:25+6 + assume {:print "$at(163,2785,2791)"} true; + $t21 := 595528; + assume $IsValid'u128'($t21); + + // trace_local[bigfactor]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:65:13+9 + assume {:print "$track_local(78,2,1):", $t21} $t21 == $t21; + + // $t22 := /($t20, $t21) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:66:34+1 + assume {:print "$at(163,2826,2827)"} true; + call $t22 := $Div($t20, $t21); + if ($abort_flag) { + assume {:print "$at(163,2826,2827)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[exponent]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:66:13+8 + assume {:print "$track_local(78,2,2):", $t22} $t22 == $t22; + + // $t23 := %($t20, $t21) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:67:27+1 + assume {:print "$at(163,2865,2866)"} true; + call $t23 := $Mod($t20, $t21); + if ($abort_flag) { + assume {:print "$at(163,2865,2866)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[x#1]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:67:13+1 + assume {:print "$track_local(78,2,10):", $t23} $t23 == $t23; + + // $t24 := 4295562865 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:69:23+10 + assume {:print "$at(163,2971,2981)"} true; + $t24 := 4295562865; + assume $IsValid'u128'($t24); + + // $t25 := math_fixed::pow_raw($t24, $t22) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:71:21+26 + assume {:print "$at(163,3125,3151)"} true; + call $t25 := $1_math_fixed_pow_raw($t24, $t22); + if ($abort_flag) { + assume {:print "$at(163,3125,3151)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[power]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:71:13+5 + assume {:print "$track_local(78,2,3):", $t25} $t25 == $t25; + + // $t26 := 1241009291 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:72:30+10 + assume {:print "$at(163,3182,3192)"} true; + $t26 := 1241009291; + assume $IsValid'u128'($t26); + + // $t27 := *($t25, $t26) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:33+1 + assume {:print "$at(163,3226,3227)"} true; + call $t27 := $MulU128($t25, $t26); + if ($abort_flag) { + assume {:print "$at(163,3226,3227)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t28 := *($t27, $t22) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:50+1 + call $t28 := $MulU128($t27, $t22); + if ($abort_flag) { + assume {:print "$at(163,3243,3244)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t29 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:65+2 + $t29 := 64; + assume $IsValid'u8'($t29); + + // $t30 := >>($t28, $t29) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:62+2 + call $t30 := $ShrU128($t28, $t29); + if ($abort_flag) { + assume {:print "$at(163,3255,3257)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t31 := +($t25, $t30) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:23+1 + call $t31 := $AddU128($t25, $t30); + if ($abort_flag) { + assume {:print "$at(163,3216,3217)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[power]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:73:9+5 + assume {:print "$track_local(78,2,3):", $t31} $t31 == $t31; + + // $t32 := *($t31, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:30+1 + assume {:print "$at(163,3438,3439)"} true; + call $t32 := $MulU128($t31, $t23); + if ($abort_flag) { + assume {:print "$at(163,3438,3439)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t33 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:39+2 + $t33 := 32; + assume $IsValid'u8'($t33); + + // $t34 := -($t33, $t18) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:42+1 + call $t34 := $Sub($t33, $t18); + if ($abort_flag) { + assume {:print "$at(163,3450,3451)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t35 := >>($t32, $t34) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:35+2 + call $t35 := $ShrU128($t32, $t34); + if ($abort_flag) { + assume {:print "$at(163,3443,3445)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor1]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:76:13+7 + assume {:print "$track_local(78,2,7):", $t35} $t35 == $t35; + + // $t36 := *($t35, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:32+1 + assume {:print "$at(163,3491,3492)"} true; + call $t36 := $MulU128($t35, $t23); + if ($abort_flag) { + assume {:print "$at(163,3491,3492)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t37 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:40+2 + $t37 := 32; + assume $IsValid'u8'($t37); + + // $t38 := >>($t36, $t37) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:37+2 + call $t38 := $ShrU128($t36, $t37); + if ($abort_flag) { + assume {:print "$at(163,3496,3498)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor2]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:77:13+7 + assume {:print "$track_local(78,2,8):", $t38} $t38 == $t38; + + // $t39 := *($t38, $t23) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:32+1 + assume {:print "$at(163,3534,3535)"} true; + call $t39 := $MulU128($t38, $t23); + if ($abort_flag) { + assume {:print "$at(163,3534,3535)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t40 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:40+2 + $t40 := 32; + assume $IsValid'u8'($t40); + + // $t41 := >>($t39, $t40) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:37+2 + call $t41 := $ShrU128($t39, $t40); + if ($abort_flag) { + assume {:print "$at(163,3539,3541)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_local[taylor3]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:78:13+7 + assume {:print "$track_local(78,2,9):", $t41} $t41 == $t41; + + // $t42 := <<($t31, $t18) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:16+2 + assume {:print "$at(163,3561,3563)"} true; + call $t42 := $ShlU128($t31, $t18); + if ($abort_flag) { + assume {:print "$at(163,3561,3563)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t43 := +($t42, $t35) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:26+1 + call $t43 := $AddU128($t42, $t35); + if ($abort_flag) { + assume {:print "$at(163,3571,3572)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t44 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:48+1 + $t44 := 2; + assume $IsValid'u128'($t44); + + // $t45 := /($t38, $t44) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:46+1 + call $t45 := $Div($t38, $t44); + if ($abort_flag) { + assume {:print "$at(163,3591,3592)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t46 := +($t43, $t45) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:36+1 + call $t46 := $AddU128($t43, $t45); + if ($abort_flag) { + assume {:print "$at(163,3581,3582)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t47 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:62+1 + $t47 := 6; + assume $IsValid'u128'($t47); + + // $t48 := /($t41, $t47) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:60+1 + call $t48 := $Div($t41, $t47); + if ($abort_flag) { + assume {:print "$at(163,3605,3606)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // $t49 := +($t46, $t48) on_abort goto L4 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:50+1 + call $t49 := $AddU128($t46, $t48); + if ($abort_flag) { + assume {:print "$at(163,3595,3596)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(78,2):", $t13} $t13 == $t13; + goto L4; + } + + // trace_return[0]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:79:9+54 + assume {:print "$track_return(78,2,0):", $t49} $t49 == $t49; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; +L3: + + // return $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; + $ret0 := $t49; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 +L4: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:80:5+1 + assume {:print "$at(163,3613,3614)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun math_fixed::ln_plus_32ln2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:36:5+281 +procedure {:timeLimit 80} $1_math_fixed_ln_plus_32ln2$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_fixed_point32_FixedPoint32; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:36:5+1 + assume {:print "$at(163,1307,1308)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:36:5+1 + assume {:print "$track_local(78,3,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point32::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:37:26+31 + assume {:print "$at(163,1390,1421)"} true; + call $t1 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,1390,1421)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u128)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:37:25+41 + call $t3 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(163,1389,1430)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := math128::log2($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:38:47+24 + assume {:print "$at(163,1478,1502)"} true; + call $t4 := $1_math128_log2($t3); + if ($abort_flag) { + assume {:print "$at(163,1478,1502)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := fixed_point32::get_raw_value($t4) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:38:18+54 + call $t5 := $1_fixed_point32_get_raw_value($t4); + if ($abort_flag) { + assume {:print "$at(163,1449,1503)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t6 := (u128)($t5) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:38:17+64 + call $t6 := $CastU128($t5); + if ($abort_flag) { + assume {:print "$at(163,1448,1512)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t7 := 2977044472 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:51+3 + assume {:print "$at(163,1564,1567)"} true; + $t7 := 2977044472; + assume $IsValid'u128'($t7); + + // $t8 := *($t6, $t7) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:49+1 + call $t8 := $MulU128($t6, $t7); + if ($abort_flag) { + assume {:print "$at(163,1562,1563)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t9 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:58+2 + $t9 := 32; + assume $IsValid'u8'($t9); + + // $t10 := >>($t8, $t9) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:55+2 + call $t10 := $ShrU128($t8, $t9); + if ($abort_flag) { + assume {:print "$at(163,1568,1570)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t11 := (u64)($t10) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:46+22 + call $t11 := $CastU64($t10); + if ($abort_flag) { + assume {:print "$at(163,1559,1581)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t12 := opaque begin: fixed_point32::create_from_raw_value($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:9+60 + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:9+60 + assume $IsValid'$1_fixed_point32_FixedPoint32'($t12); + + // assume Eq(select fixed_point32::FixedPoint32.value($t12), $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:9+60 + assume $IsEqual'u64'($t12->$value, $t11); + + // $t12 := opaque end: fixed_point32::create_from_raw_value($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:9+60 + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:39:9+60 + assume {:print "$track_return(78,3,0):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:40:5+1 + assume {:print "$at(163,1587,1588)"} true; +L1: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:40:5+1 + assume {:print "$at(163,1587,1588)"} true; + $ret0 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:40:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:40:5+1 + assume {:print "$at(163,1587,1588)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed::log2_plus_32 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:31:5+162 +procedure {:timeLimit 80} $1_math_fixed_log2_plus_32$verify(_$t0: $1_fixed_point32_FixedPoint32) returns ($ret0: $1_fixed_point32_FixedPoint32) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_fixed_point32_FixedPoint32; + var $t0: $1_fixed_point32_FixedPoint32; + var $temp_0'$1_fixed_point32_FixedPoint32': $1_fixed_point32_FixedPoint32; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:31:5+1 + assume {:print "$at(163,1139,1140)"} true; + assume $IsValid'$1_fixed_point32_FixedPoint32'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:31:5+1 + assume {:print "$track_local(78,4,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point32::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:32:26+31 + assume {:print "$at(163,1221,1252)"} true; + call $t1 := $1_fixed_point32_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(163,1221,1252)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u128)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:32:25+41 + call $t3 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(163,1220,1261)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := math128::log2($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:33:9+24 + assume {:print "$at(163,1271,1295)"} true; + call $t4 := $1_math128_log2($t3); + if ($abort_flag) { + assume {:print "$at(163,1271,1295)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(78,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:33:9+24 + assume {:print "$track_return(78,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:34:5+1 + assume {:print "$at(163,1300,1301)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:34:5+1 + assume {:print "$at(163,1300,1301)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:34:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:34:5+1 + assume {:print "$at(163,1300,1301)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed::pow_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+344 +procedure {:inline 1} $1_math_fixed_pow_raw(_$t0: int, _$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 $t8: bool; + var $t9: int; + var $t10: bv128; + var $t11: bv128; + var $t12: bool; + 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 $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t0: int; + var $t1: int; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume {:print "$at(163,3706,3707)"} true; + assume {:print "$track_local(78,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume {:print "$track_local(78,7,1):", $t1} $t1 == $t1; + + // $t3 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:84:25+7 + assume {:print "$at(163,3768,3775)"} true; + $t3 := 18446744073709551616; + assume $IsValid'u256'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:84:13+3 + assume {:print "$track_local(78,7,2):", $t3} $t3 == $t3; + + // $t4 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:18+2 + assume {:print "$at(163,3794,3796)"} true; + $t4 := 32; + assume $IsValid'u8'($t4); + + // $t5 := <<($t0, $t4) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:15+2 + call $t5 := $ShlU128($t0, $t4); + if ($abort_flag) { + assume {:print "$at(163,3791,3793)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[x]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:9+1 + assume {:print "$track_local(78,7,0):", $t5} $t5 == $t5; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$at(163,3813,3814)"} true; +L5: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$at(163,3813,3814)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bv128'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bv128'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t24); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(78,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$track_local(78,7,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$track_local(78,7,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume !$abort_flag; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:21+1 + $t7 := 0; + assume $IsValid'u128'($t7); + + // $t8 := !=($t1, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:18+2 + $t8 := !$IsEqual'u128'($t1, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:9+207 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:9+207 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:17+1 + assume {:print "$at(163,3839,3840)"} true; +L2: + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:21+1 + assume {:print "$at(163,3843,3844)"} true; + $t9 := 1; + assume $IsValid'u128'($t9); + + // $t10 := &($t1, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:19+1 + call $t10 := $AndBv128($int2bv.128($t1), $int2bv.128($t9)); + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:26+1 + $t11 := 0bv128; + assume $IsValid'bv128'($t11); + + // $t12 := !=($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:23+2 + $t12 := !$IsEqual'bv128'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:13+80 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:24+3 + assume {:print "$at(163,3876,3879)"} true; +L4: + + // $t13 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:30+11 + assume {:print "$at(163,3882,3893)"} true; + call $t13 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3882,3893)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t14 := *($t2, $t13) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:28+1 + call $t14 := $MulU256($t2, $t13); + if ($abort_flag) { + assume {:print "$at(163,3880,3881)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t15 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:46+2 + $t15 := 64; + assume $IsValid'u8'($t15); + + // $t16 := >>($t14, $t15) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:43+2 + call $t16 := $ShrU256($t14, $t15); + if ($abort_flag) { + assume {:print "$at(163,3895,3897)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[res]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:17+3 + assume {:print "$track_local(78,7,2):", $t16} $t16 == $t16; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:17+1 + assume {:print "$at(163,3933,3934)"} true; +L3: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:22+1 + assume {:print "$at(163,3938,3939)"} true; + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t1, $t17) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:19+2 + call $t18 := $ShrU128($t1, $t17); + if ($abort_flag) { + assume {:print "$at(163,3935,3937)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[n]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:13+1 + assume {:print "$track_local(78,7,1):", $t18} $t18 == $t18; + + // $t19 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:20+11 + assume {:print "$at(163,3960,3971)"} true; + call $t19 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3960,3971)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t20 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:34+11 + call $t20 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3974,3985)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t21 := *($t19, $t20) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:32+1 + call $t21 := $MulU256($t19, $t20); + if ($abort_flag) { + assume {:print "$at(163,3972,3973)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t22 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:50+2 + $t22 := 64; + assume $IsValid'u8'($t22); + + // $t23 := >>($t21, $t22) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:47+2 + call $t23 := $ShrU256($t21, $t22); + if ($abort_flag) { + assume {:print "$at(163,3987,3989)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t24 := (u128)($t23) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:17+45 + call $t24 := $CastU128($t23); + if ($abort_flag) { + assume {:print "$at(163,3957,4002)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[x]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:13+1 + assume {:print "$track_local(78,7,0):", $t24} $t24 == $t24; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:62+1 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + assume {:print "$at(163,4025,4028)"} true; +L0: + + // $t25 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:18+2 + assume {:print "$at(163,4032,4034)"} true; + $t25 := 32; + assume $IsValid'u8'($t25); + + // $t26 := >>($t2, $t25) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:15+2 + call $t26 := $ShrU256($t2, $t25); + if ($abort_flag) { + assume {:print "$at(163,4029,4031)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t27 := (u128)($t26) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + call $t27 := $CastU128($t26); + if ($abort_flag) { + assume {:print "$at(163,4023,4044)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + assume {:print "$track_return(78,7,0):", $t27} $t27 == $t27; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + goto L7; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + // Loop invariant checking block for the loop started with header: L5 +L6: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + assume {:print "$at(163,4025,4028)"} true; + assume false; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; +L7: + + // return $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; + $ret0 := $t27; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 +L8: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math_fixed::pow_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+344 +procedure {:timeLimit 80} $1_math_fixed_pow_raw$verify(_$t0: int, _$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 $t8: bool; + var $t9: int; + var $t10: bv128; + var $t11: bv128; + var $t12: bool; + 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 $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t0: int; + var $t1: int; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume {:print "$at(163,3706,3707)"} true; + assume $IsValid'u128'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume $IsValid'u128'($t1); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume {:print "$track_local(78,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:83:5+1 + assume {:print "$track_local(78,7,1):", $t1} $t1 == $t1; + + // $t3 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:84:25+7 + assume {:print "$at(163,3768,3775)"} true; + $t3 := 18446744073709551616; + assume $IsValid'u256'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:84:13+3 + assume {:print "$track_local(78,7,2):", $t3} $t3 == $t3; + + // $t4 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:18+2 + assume {:print "$at(163,3794,3796)"} true; + $t4 := 32; + assume $IsValid'u8'($t4); + + // $t5 := <<($t0, $t4) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:15+2 + call $t5 := $ShlU128($t0, $t4); + if ($abort_flag) { + assume {:print "$at(163,3791,3793)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[x]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:85:9+1 + assume {:print "$track_local(78,7,0):", $t5} $t5 == $t5; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$at(163,3813,3814)"} true; +L5: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$at(163,3813,3814)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t2); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bv128'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bv128'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u8'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u256'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume $IsValid'u128'($t24); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(78,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$track_local(78,7,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume {:print "$track_local(78,7,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:16+1 + assume !$abort_flag; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:21+1 + $t7 := 0; + assume $IsValid'u128'($t7); + + // $t8 := !=($t1, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:18+2 + $t8 := !$IsEqual'u128'($t1, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:9+207 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:86:9+207 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:17+1 + assume {:print "$at(163,3839,3840)"} true; +L2: + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:21+1 + assume {:print "$at(163,3843,3844)"} true; + $t9 := 1; + assume $IsValid'u128'($t9); + + // $t10 := &($t1, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:19+1 + call $t10 := $AndBv128($int2bv.128($t1), $int2bv.128($t9)); + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:26+1 + $t11 := 0bv128; + assume $IsValid'bv128'($t11); + + // $t12 := !=($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:23+2 + $t12 := !$IsEqual'bv128'($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:87:13+80 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:24+3 + assume {:print "$at(163,3876,3879)"} true; +L4: + + // $t13 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:30+11 + assume {:print "$at(163,3882,3893)"} true; + call $t13 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3882,3893)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t14 := *($t2, $t13) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:28+1 + call $t14 := $MulU256($t2, $t13); + if ($abort_flag) { + assume {:print "$at(163,3880,3881)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t15 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:46+2 + $t15 := 64; + assume $IsValid'u8'($t15); + + // $t16 := >>($t14, $t15) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:43+2 + call $t16 := $ShrU256($t14, $t15); + if ($abort_flag) { + assume {:print "$at(163,3895,3897)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[res]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:88:17+3 + assume {:print "$track_local(78,7,2):", $t16} $t16 == $t16; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:17+1 + assume {:print "$at(163,3933,3934)"} true; +L3: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:22+1 + assume {:print "$at(163,3938,3939)"} true; + $t17 := 1; + assume $IsValid'u8'($t17); + + // $t18 := >>($t1, $t17) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:19+2 + call $t18 := $ShrU128($t1, $t17); + if ($abort_flag) { + assume {:print "$at(163,3935,3937)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[n]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:90:13+1 + assume {:print "$track_local(78,7,1):", $t18} $t18 == $t18; + + // $t19 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:20+11 + assume {:print "$at(163,3960,3971)"} true; + call $t19 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3960,3971)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t20 := (u256)($t0) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:34+11 + call $t20 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(163,3974,3985)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t21 := *($t19, $t20) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:32+1 + call $t21 := $MulU256($t19, $t20); + if ($abort_flag) { + assume {:print "$at(163,3972,3973)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t22 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:50+2 + $t22 := 64; + assume $IsValid'u8'($t22); + + // $t23 := >>($t21, $t22) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:47+2 + call $t23 := $ShrU256($t21, $t22); + if ($abort_flag) { + assume {:print "$at(163,3987,3989)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t24 := (u128)($t23) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:17+45 + call $t24 := $CastU128($t23); + if ($abort_flag) { + assume {:print "$at(163,3957,4002)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_local[x]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:13+1 + assume {:print "$track_local(78,7,0):", $t24} $t24 == $t24; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:91:62+1 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + assume {:print "$at(163,4025,4028)"} true; +L0: + + // $t25 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:18+2 + assume {:print "$at(163,4032,4034)"} true; + $t25 := 32; + assume $IsValid'u8'($t25); + + // $t26 := >>($t2, $t25) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:15+2 + call $t26 := $ShrU256($t2, $t25); + if ($abort_flag) { + assume {:print "$at(163,4029,4031)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // $t27 := (u128)($t26) on_abort goto L8 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + call $t27 := $CastU128($t26); + if ($abort_flag) { + assume {:print "$at(163,4023,4044)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(78,7):", $t6} $t6 == $t6; + goto L8; + } + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + assume {:print "$track_return(78,7,0):", $t27} $t27 == $t27; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:9+21 + goto L7; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + // Loop invariant checking block for the loop started with header: L5 +L6: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:93:11+3 + assume {:print "$at(163,4025,4028)"} true; + assume false; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; +L7: + + // return $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; + $ret0 := $t27; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 +L8: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:94:5+1 + assume {:print "$at(163,4049,4050)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun math_fixed::sum [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:97:5+250 +procedure {:inline 1} $1_math_fixed_sum(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:97:5+1 + assume {:print "$at(163,4086,4087)"} true; + assume {:print "$track_local(78,9,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:98:19+20 + assume {:print "$at(163,4148,4168)"} true; + call $t4 := $1_vector_length'u128'($t0); + if ($abort_flag) { + assume {:print "$at(163,4148,4168)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[len]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:98:13+3 + assume {:print "$track_local(78,9,2):", $t4} $t4 == $t4; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:99:17+1 + assume {:print "$at(163,4186,4187)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:99:13+1 + assume {:print "$track_local(78,9,1):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:100:19+1 + assume {:print "$at(163,4207,4208)"} true; + $t7 := 0; + assume $IsValid'u128'($t7); + + // trace_local[sum]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:100:13+3 + assume {:print "$track_local(78,9,3):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$at(163,4225,4226)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$at(163,4225,4226)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t12); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$info(): enter loop, variable(s) i, sum havocked and reassigned"} true; + assume {:print "$track_local(78,9,1):", $t1} $t1 == $t1; + + // trace_local[sum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$track_local(78,9,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:18+1 + call $t8 := $Lt($t1, $t4); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:9+99 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:9+99 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:19+3 + assume {:print "$at(163,4253,4256)"} true; +L2: + + // $t9 := vector::borrow($t0, $t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:26+23 + assume {:print "$at(163,4260,4283)"} true; + call $t9 := $1_vector_borrow'u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(163,4260,4283)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t10 := +($t3, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:23+1 + call $t10 := $AddU128($t3, $t9); + if ($abort_flag) { + assume {:print "$at(163,4257,4258)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[sum]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:13+3 + assume {:print "$track_local(78,9,3):", $t10} $t10 == $t10; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:21+1 + assume {:print "$at(163,4305,4306)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(163,4303,4304)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:13+1 + assume {:print "$track_local(78,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; +L0: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; + assume {:print "$track_return(78,9,0):", $t3} $t3 == $t3; + + // $t13 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + $t13 := $t3; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math_fixed::sum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:97:5+250 +procedure {:timeLimit 80} $1_math_fixed_sum$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: Vec (int); + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:97:5+1 + assume {:print "$at(163,4086,4087)"} true; + assume $IsValid'vec'u128''($t0); + + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:97:5+1 + assume {:print "$track_local(78,9,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:98:19+20 + assume {:print "$at(163,4148,4168)"} true; + call $t4 := $1_vector_length'u128'($t0); + if ($abort_flag) { + assume {:print "$at(163,4148,4168)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[len]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:98:13+3 + assume {:print "$track_local(78,9,2):", $t4} $t4 == $t4; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:99:17+1 + assume {:print "$at(163,4186,4187)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:99:13+1 + assume {:print "$track_local(78,9,1):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:100:19+1 + assume {:print "$at(163,4207,4208)"} true; + $t7 := 0; + assume $IsValid'u128'($t7); + + // trace_local[sum]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:100:13+3 + assume {:print "$track_local(78,9,3):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$at(163,4225,4226)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$at(163,4225,4226)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u128'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume $IsValid'u64'($t12); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$info(): enter loop, variable(s) i, sum havocked and reassigned"} true; + assume {:print "$track_local(78,9,1):", $t1} $t1 == $t1; + + // trace_local[sum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume {:print "$track_local(78,9,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:18+1 + call $t8 := $Lt($t1, $t4); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:9+99 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:101:9+99 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:19+3 + assume {:print "$at(163,4253,4256)"} true; +L2: + + // $t9 := vector::borrow($t0, $t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:26+23 + assume {:print "$at(163,4260,4283)"} true; + call $t9 := $1_vector_borrow'u128'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(163,4260,4283)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t10 := +($t3, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:23+1 + call $t10 := $AddU128($t3, $t9); + if ($abort_flag) { + assume {:print "$at(163,4257,4258)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[sum]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:102:13+3 + assume {:print "$track_local(78,9,3):", $t10} $t10 == $t10; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:21+1 + assume {:print "$at(163,4305,4306)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(163,4303,4304)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(78,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:13+1 + assume {:print "$track_local(78,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:103:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; +L0: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; + assume {:print "$track_return(78,9,0):", $t3} $t3 == $t3; + + // $t13 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + $t13 := $t3; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:105:9+3 + assume {:print "$at(163,4327,4330)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed.move:106:5+1 + assume {:print "$at(163,4335,4336)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math_fixed64::mul_div [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+311 +procedure {:timeLimit 80} $1_math_fixed64_mul_div$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: $1_fixed_point64_FixedPoint64, _$t2: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t3: int; + var $t4: 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: bool; + 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: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: $1_fixed_point64_FixedPoint64; + var $t2: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume {:print "$at(164,1921,1922)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t2); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume {:print "$track_local(79,5,0):", $t0} $t0 == $t0; + + // trace_local[y]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume {:print "$track_local(79,5,1):", $t1} $t1 == $t1; + + // trace_local[z]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:49:5+1 + assume {:print "$track_local(79,5,2):", $t2} $t2 == $t2; + + // $t9 := fixed_point64::get_raw_value($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:50:17+31 + assume {:print "$at(164,2023,2054)"} true; + call $t9 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,2023,2054)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[a]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:50:13+1 + assume {:print "$track_local(79,5,3):", $t9} $t9 == $t9; + + // $t11 := fixed_point64::get_raw_value($t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:51:17+31 + assume {:print "$at(164,2072,2103)"} true; + call $t11 := $1_fixed_point64_get_raw_value($t1); + if ($abort_flag) { + assume {:print "$at(164,2072,2103)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[b]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:51:13+1 + assume {:print "$track_local(79,5,5):", $t11} $t11 == $t11; + + // $t12 := fixed_point64::get_raw_value($t2) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:52:17+31 + assume {:print "$at(164,2121,2152)"} true; + call $t12 := $1_fixed_point64_get_raw_value($t2); + if ($abort_flag) { + assume {:print "$at(164,2121,2152)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[c]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:52:13+1 + assume {:print "$track_local(79,5,7):", $t12} $t12 == $t12; + + // trace_local[c#222]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:49+1 + assume {:print "$track_local(79,5,8):", $t12} $t12 == $t12; + + // trace_local[b#221]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:40+1 + assume {:print "$track_local(79,5,6):", $t11} $t11 == $t11; + + // trace_local[a#220]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:52:31+1 + assume {:print "$track_local(79,5,4):", $t9} $t9 == $t9; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:22+1 + assume {:print "$at(159,1589,1590)"} true; + $t13 := 0; + assume $IsValid'u128'($t13); + + // $t14 := !=($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:19+2 + $t14 := !$IsEqual'u128'($t12, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 +L0: + + // $t15 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:54+1 + assume {:print "$at(159,1621,1622)"} true; + $t15 := 4; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:25+31 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(159,1592,1623)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + assume {:print "$at(159,1576,1624)"} true; + assume {:print "$track_abort(79,5):", $t16} $t16 == $t16; + + // $t10 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + $t10 := $t16; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:54:9+48 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:12+1 + assume {:print "$at(159,1637,1638)"} true; +L2: + + // $t17 := (u256)($t9) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:11+11 + assume {:print "$at(159,1636,1647)"} true; + call $t17 := $CastU256($t9); + if ($abort_flag) { + assume {:print "$at(159,1636,1647)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t18 := (u256)($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:25+11 + call $t18 := $CastU256($t11); + if ($abort_flag) { + assume {:print "$at(159,1650,1661)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t19 := *($t17, $t18) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:23+1 + call $t19 := $MulU256($t17, $t18); + if ($abort_flag) { + assume {:print "$at(159,1648,1649)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t20 := (u256)($t12) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:39+11 + call $t20 := $CastU256($t12); + if ($abort_flag) { + assume {:print "$at(159,1664,1675)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t21 := /($t19, $t20) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:37+1 + call $t21 := $Div($t19, $t20); + if ($abort_flag) { + assume {:print "$at(159,1662,1663)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t22 := (u128)($t21) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math128.move:55:9+51 + call $t22 := $CastU128($t21); + if ($abort_flag) { + assume {:print "$at(159,1634,1685)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(79,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t23 := opaque begin: fixed_point64::create_from_raw_value($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:53:9+64 + assume {:print "$at(164,2162,2226)"} true; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:53:9+64 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t23); + + // assume Eq(select fixed_point64::FixedPoint64.value($t23), $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:53:9+64 + assume $IsEqual'u128'($t23->$value, $t22); + + // $t23 := opaque end: fixed_point64::create_from_raw_value($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:53:9+64 + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:53:9+64 + assume {:print "$track_return(79,5,0):", $t23} $t23 == $t23; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:54:5+1 + assume {:print "$at(164,2231,2232)"} true; +L3: + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:54:5+1 + assume {:print "$at(164,2231,2232)"} true; + $ret0 := $t23; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:54:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:54:5+1 + assume {:print "$at(164,2231,2232)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun math_fixed64::pow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:43:5+216 +procedure {:timeLimit 80} $1_math_fixed64_pow$verify(_$t0: $1_fixed_point64_FixedPoint64, _$t1: int) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $t1: int; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:43:5+1 + assume {:print "$at(164,1623,1624)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:43:5+1 + assume $IsValid'u64'($t1); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:43:5+1 + assume {:print "$track_local(79,6,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:43:5+1 + assume {:print "$track_local(79,6,1):", $t1} $t1 == $t1; + + // $t2 := fixed_point64::get_raw_value($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:44:26+31 + assume {:print "$at(164,1704,1735)"} true; + call $t2 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,1704,1735)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := (u256)($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:44:25+41 + call $t4 := $CastU256($t2); + if ($abort_flag) { + assume {:print "$at(164,1703,1744)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := (u128)($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:66+11 + assume {:print "$at(164,1811,1822)"} true; + call $t5 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(164,1811,1822)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := math_fixed64::pow_raw($t4, $t5) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:47+31 + call $t6 := $1_math_fixed64_pow_raw($t4, $t5); + if ($abort_flag) { + assume {:print "$at(164,1792,1823)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t7 := (u128)($t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:46+41 + call $t7 := $CastU128($t6); + if ($abort_flag) { + assume {:print "$at(164,1791,1832)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,6):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := opaque begin: fixed_point64::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:9+79 + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:9+79 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t8); + + // assume Eq(select fixed_point64::FixedPoint64.value($t8), $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:9+79 + assume $IsEqual'u128'($t8->$value, $t7); + + // $t8 := opaque end: fixed_point64::create_from_raw_value($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:9+79 + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:45:9+79 + assume {:print "$track_return(79,6,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:46:5+1 + assume {:print "$at(164,1838,1839)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:46:5+1 + assume {:print "$at(164,1838,1839)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:46:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:46:5+1 + assume {:print "$at(164,1838,1839)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun math_fixed64::sqrt [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:16:5+259 +procedure {:timeLimit 80} $1_math_fixed64_sqrt$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: 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: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:16:5+1 + assume {:print "$at(164,474,475)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:16:5+1 + assume {:print "$track_local(79,8,0):", $t0} $t0 == $t0; + + // $t3 := fixed_point64::get_raw_value($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:17:17+31 + assume {:print "$at(164,539,570)"} true; + call $t3 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,539,570)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[y]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:17:13+1 + assume {:print "$track_local(79,8,1):", $t3} $t3 == $t3; + + // $t5 := opaque begin: math128::sqrt($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:18+16 + assume {:print "$at(164,589,605)"} true; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:18+16 + assume $IsValid'u128'($t5); + + // assume Implies(Gt($t3, 0), Le(Mul($t5, $t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:18+16 + assume (($t3 > 0) ==> (($t5 * $t5) <= $t3)); + + // assume Implies(Gt($t3, 0), Lt($t3, Mul(Add($t5, 1), Add($t5, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:18+16 + assume (($t3 > 0) ==> ($t3 < (($t5 + 1) * ($t5 + 1)))); + + // $t5 := opaque end: math128::sqrt($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:18+16 + + // $t6 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:38+2 + $t6 := 32; + assume $IsValid'u8'($t6); + + // $t7 := <<($t5, $t6) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:35+2 + call $t7 := $ShlU128($t5, $t6); + if ($abort_flag) { + assume {:print "$at(164,606,608)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t8 := (u256)($t7) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:17+32 + call $t8 := $CastU256($t7); + if ($abort_flag) { + assume {:print "$at(164,588,620)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[z]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:18:13+1 + assume {:print "$track_local(79,8,2):", $t8} $t8 == $t8; + + // $t9 := (u256)($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:19+11 + assume {:print "$at(164,640,651)"} true; + call $t9 := $CastU256($t3); + if ($abort_flag) { + assume {:print "$at(164,640,651)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t10 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:34+2 + $t10 := 64; + assume $IsValid'u8'($t10); + + // $t11 := <<($t9, $t10) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:31+2 + call $t11 := $ShlU256($t9, $t10); + if ($abort_flag) { + assume {:print "$at(164,652,654)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t12 := /($t11, $t8) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:38+1 + call $t12 := $Div($t11, $t8); + if ($abort_flag) { + assume {:print "$at(164,659,660)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t13 := +($t8, $t12) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:16+1 + call $t13 := $AddU256($t8, $t12); + if ($abort_flag) { + assume {:print "$at(164,637,638)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:46+1 + $t14 := 1; + assume $IsValid'u8'($t14); + + // $t15 := >>($t13, $t14) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:19:43+2 + call $t15 := $ShrU256($t13, $t14); + if ($abort_flag) { + assume {:print "$at(164,664,666)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t16 := (u128)($t15) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:46+11 + assume {:print "$at(164,715,726)"} true; + call $t16 := $CastU128($t15); + if ($abort_flag) { + assume {:print "$at(164,715,726)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(79,8):", $t4} $t4 == $t4; + goto L2; + } + + // $t17 := opaque begin: fixed_point64::create_from_raw_value($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:9+49 + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:9+49 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t17); + + // assume Eq(select fixed_point64::FixedPoint64.value($t17), $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:9+49 + assume $IsEqual'u128'($t17->$value, $t16); + + // $t17 := opaque end: fixed_point64::create_from_raw_value($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:9+49 + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:20:9+49 + assume {:print "$track_return(79,8,0):", $t17} $t17 == $t17; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:21:5+1 + assume {:print "$at(164,732,733)"} true; +L1: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:21:5+1 + assume {:print "$at(164,732,733)"} true; + $ret0 := $t17; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:21:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:21:5+1 + assume {:print "$at(164,732,733)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun math_fixed64::avg [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:111:5+135 +procedure {:timeLimit 80} $1_math_fixed64_avg$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:111:5+1 + assume {:print "$at(164,4521,4522)"} true; + assume $IsValid'vec'u64''($t0); + + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:111:5+1 + assume {:print "$track_local(79,0,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:112:19+20 + assume {:print "$at(164,4581,4601)"} true; + call $t2 := $1_vector_length'u64'($t0); + if ($abort_flag) { + assume {:print "$at(164,4581,4601)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[len]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:112:13+3 + assume {:print "$track_local(79,0,1):", $t2} $t2 == $t2; + + // $t4 := math_fixed64::sum($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:114:19+9 + assume {:print "$at(164,4622,4631)"} true; + call $t4 := $1_math_fixed64_sum($t0); + if ($abort_flag) { + assume {:print "$at(164,4622,4631)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,0):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := /($t4, $t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:115:13+1 + assume {:print "$at(164,4645,4646)"} true; + call $t5 := $Div($t4, $t2); + if ($abort_flag) { + assume {:print "$at(164,4645,4646)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(79,0):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:115:9+9 + assume {:print "$track_return(79,0,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:116:5+1 + assume {:print "$at(164,4655,4656)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:116:5+1 + assume {:print "$at(164,4655,4656)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:116:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:116:5+1 + assume {:print "$at(164,4655,4656)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun math_fixed64::exp [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:24:5+195 +procedure {:timeLimit 80} $1_math_fixed64_exp$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:24:5+1 + assume {:print "$at(164,796,797)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:24:5+1 + assume {:print "$track_local(79,1,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point64::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:25:26+31 + assume {:print "$at(164,869,900)"} true; + call $t1 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,869,900)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u256)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:25:25+41 + call $t3 := $CastU256($t1); + if ($abort_flag) { + assume {:print "$at(164,868,909)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := math_fixed64::exp_raw($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:47+18 + assume {:print "$at(164,957,975)"} true; + call $t4 := $1_math_fixed64_exp_raw($t3); + if ($abort_flag) { + assume {:print "$at(164,957,975)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := (u128)($t4) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:46+28 + call $t5 := $CastU128($t4); + if ($abort_flag) { + assume {:print "$at(164,956,984)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,1):", $t2} $t2 == $t2; + goto L2; + } + + // $t6 := opaque begin: fixed_point64::create_from_raw_value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:9+66 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:9+66 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t6); + + // assume Eq(select fixed_point64::FixedPoint64.value($t6), $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:9+66 + assume $IsEqual'u128'($t6->$value, $t5); + + // $t6 := opaque end: fixed_point64::create_from_raw_value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:9+66 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:26:9+66 + assume {:print "$track_return(79,1,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:27:5+1 + assume {:print "$at(164,990,991)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:27:5+1 + assume {:print "$at(164,990,991)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:27:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:27:5+1 + assume {:print "$at(164,990,991)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed64::exp_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:57:5+1535 +procedure {:inline 1} $1_math_fixed64_exp_raw(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + 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 $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: int; + var $t70: int; + var $t71: int; + var $t0: int; + var $temp_0'u256': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:57:5+1 + assume {:print "$at(164,2306,2307)"} true; + assume {:print "$track_local(79,2,0):", $t0} $t0 == $t0; + + // $t14 := 12786308645202655660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:30+3 + assume {:print "$at(164,2473,2476)"} true; + $t14 := 12786308645202655660; + assume $IsValid'u256'($t14); + + // $t15 := /($t0, $t14) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:28+1 + call $t15 := $Div($t0, $t14); + if ($abort_flag) { + assume {:print "$at(164,2471,2472)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[shift_long]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:13+10 + assume {:print "$track_local(79,2,6):", $t15} $t15 == $t15; + + // $t17 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:31+2 + assume {:print "$at(164,2508,2510)"} true; + $t17 := 63; + assume $IsValid'u256'($t17); + + // $t18 := <=($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:28+2 + call $t18 := $Le($t15, $t17); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + assume {:print "$at(164,2486,2553)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:61+13 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:61+13 + assume {:print "$at(164,2538,2551)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_state($t19) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:35+40 + call $t20 := $1_error_invalid_state($t19); + if ($abort_flag) { + assume {:print "$at(164,2512,2552)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + assume {:print "$at(164,2486,2553)"} true; + assume {:print "$track_abort(79,2):", $t20} $t20 == $t20; + + // $t16 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + $t16 := $t20; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:22+10 + assume {:print "$at(164,2576,2586)"} true; +L2: + + // $t21 := (u8)($t15) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:21+18 + assume {:print "$at(164,2575,2593)"} true; + call $t21 := $CastU8($t15); + if ($abort_flag) { + assume {:print "$at(164,2575,2593)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[shift]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:13+5 + assume {:print "$track_local(79,2,5):", $t21} $t21 == $t21; + + // $t22 := 12786308645202655660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:29+3 + assume {:print "$at(164,2623,2626)"} true; + $t22 := 12786308645202655660; + assume $IsValid'u256'($t22); + + // $t23 := %($t0, $t22) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:27+1 + call $t23 := $Mod($t0, $t22); + if ($abort_flag) { + assume {:print "$at(164,2621,2622)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[remainder]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:13+9 + assume {:print "$track_local(79,2,4):", $t23} $t23 == $t23; + + // $t24 := 22045359733108027 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:65:25+17 + assume {:print "$at(164,2768,2785)"} true; + $t24 := 22045359733108027; + assume $IsValid'u256'($t24); + + // trace_local[bigfactor]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:65:13+9 + assume {:print "$track_local(79,2,1):", $t24} $t24 == $t24; + + // $t25 := /($t23, $t24) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:66:34+1 + assume {:print "$at(164,2820,2821)"} true; + call $t25 := $Div($t23, $t24); + if ($abort_flag) { + assume {:print "$at(164,2820,2821)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[exponent]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:66:13+8 + assume {:print "$track_local(79,2,2):", $t25} $t25 == $t25; + + // $t26 := %($t23, $t24) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:67:27+1 + assume {:print "$at(164,2859,2860)"} true; + call $t26 := $Mod($t23, $t24); + if ($abort_flag) { + assume {:print "$at(164,2859,2860)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[x#1]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:67:13+1 + assume {:print "$track_local(79,2,13):", $t26} $t26 == $t26; + + // $t27 := 18468802611690918839 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:69:23+20 + assume {:print "$at(164,2964,2984)"} true; + $t27 := 18468802611690918839; + assume $IsValid'u256'($t27); + + // $t28 := (u128)($t25) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:38+18 + assume {:print "$at(164,3171,3189)"} true; + call $t28 := $CastU128($t25); + if ($abort_flag) { + assume {:print "$at(164,3171,3189)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t29 := math_fixed64::pow_raw($t27, $t28) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:21+36 + call $t29 := $1_math_fixed64_pow_raw($t27, $t28); + if ($abort_flag) { + assume {:print "$at(164,3154,3190)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[power]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:13+5 + assume {:print "$track_local(79,2,3):", $t29} $t29 == $t29; + + // $t30 := 219071715585908898 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:72:30+18 + assume {:print "$at(164,3221,3239)"} true; + $t30 := 219071715585908898; + assume $IsValid'u256'($t30); + + // $t31 := *($t29, $t30) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:33+1 + assume {:print "$at(164,3273,3274)"} true; + call $t31 := $MulU256($t29, $t30); + if ($abort_flag) { + assume {:print "$at(164,3273,3274)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t32 := *($t31, $t25) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:50+1 + call $t32 := $MulU256($t31, $t25); + if ($abort_flag) { + assume {:print "$at(164,3290,3291)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t33 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:65+3 + $t33 := 128; + assume $IsValid'u8'($t33); + + // $t34 := >>($t32, $t33) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:62+2 + call $t34 := $ShrU256($t32, $t33); + if ($abort_flag) { + assume {:print "$at(164,3302,3304)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t35 := -($t29, $t34) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:23+1 + call $t35 := $Sub($t29, $t34); + if ($abort_flag) { + assume {:print "$at(164,3263,3264)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[power]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:9+5 + assume {:print "$track_local(79,2,3):", $t35} $t35 == $t35; + + // $t36 := *($t35, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:30+1 + assume {:print "$at(164,3489,3490)"} true; + call $t36 := $MulU256($t35, $t26); + if ($abort_flag) { + assume {:print "$at(164,3489,3490)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t37 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:39+2 + $t37 := 64; + assume $IsValid'u8'($t37); + + // $t38 := -($t37, $t21) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:42+1 + call $t38 := $Sub($t37, $t21); + if ($abort_flag) { + assume {:print "$at(164,3501,3502)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t39 := >>($t36, $t38) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:35+2 + call $t39 := $ShrU256($t36, $t38); + if ($abort_flag) { + assume {:print "$at(164,3494,3496)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor1]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:13+7 + assume {:print "$track_local(79,2,7):", $t39} $t39 == $t39; + + // $t40 := *($t39, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:32+1 + assume {:print "$at(164,3542,3543)"} true; + call $t40 := $MulU256($t39, $t26); + if ($abort_flag) { + assume {:print "$at(164,3542,3543)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t41 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:40+2 + $t41 := 64; + assume $IsValid'u8'($t41); + + // $t42 := >>($t40, $t41) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:37+2 + call $t42 := $ShrU256($t40, $t41); + if ($abort_flag) { + assume {:print "$at(164,3547,3549)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor2]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:13+7 + assume {:print "$track_local(79,2,8):", $t42} $t42 == $t42; + + // $t43 := *($t42, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:32+1 + assume {:print "$at(164,3585,3586)"} true; + call $t43 := $MulU256($t42, $t26); + if ($abort_flag) { + assume {:print "$at(164,3585,3586)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t44 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:40+2 + $t44 := 64; + assume $IsValid'u8'($t44); + + // $t45 := >>($t43, $t44) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:37+2 + call $t45 := $ShrU256($t43, $t44); + if ($abort_flag) { + assume {:print "$at(164,3590,3592)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor3]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:13+7 + assume {:print "$track_local(79,2,9):", $t45} $t45 == $t45; + + // $t46 := *($t45, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:32+1 + assume {:print "$at(164,3628,3629)"} true; + call $t46 := $MulU256($t45, $t26); + if ($abort_flag) { + assume {:print "$at(164,3628,3629)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t47 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:40+2 + $t47 := 64; + assume $IsValid'u8'($t47); + + // $t48 := >>($t46, $t47) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:37+2 + call $t48 := $ShrU256($t46, $t47); + if ($abort_flag) { + assume {:print "$at(164,3633,3635)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor4]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:13+7 + assume {:print "$track_local(79,2,10):", $t48} $t48 == $t48; + + // $t49 := *($t48, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:32+1 + assume {:print "$at(164,3671,3672)"} true; + call $t49 := $MulU256($t48, $t26); + if ($abort_flag) { + assume {:print "$at(164,3671,3672)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t50 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:40+2 + $t50 := 64; + assume $IsValid'u8'($t50); + + // $t51 := >>($t49, $t50) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:37+2 + call $t51 := $ShrU256($t49, $t50); + if ($abort_flag) { + assume {:print "$at(164,3676,3678)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor5]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:13+7 + assume {:print "$track_local(79,2,11):", $t51} $t51 == $t51; + + // $t52 := *($t51, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:32+1 + assume {:print "$at(164,3714,3715)"} true; + call $t52 := $MulU256($t51, $t26); + if ($abort_flag) { + assume {:print "$at(164,3714,3715)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t53 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:40+2 + $t53 := 64; + assume $IsValid'u8'($t53); + + // $t54 := >>($t52, $t53) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:37+2 + call $t54 := $ShrU256($t52, $t53); + if ($abort_flag) { + assume {:print "$at(164,3719,3721)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor6]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:13+7 + assume {:print "$track_local(79,2,12):", $t54} $t54 == $t54; + + // $t55 := <<($t35, $t21) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:16+2 + assume {:print "$at(164,3741,3743)"} true; + call $t55 := $ShlU256($t35, $t21); + if ($abort_flag) { + assume {:print "$at(164,3741,3743)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t56 := +($t55, $t39) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:26+1 + call $t56 := $AddU256($t55, $t39); + if ($abort_flag) { + assume {:print "$at(164,3751,3752)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t57 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:48+1 + $t57 := 2; + assume $IsValid'u256'($t57); + + // $t58 := /($t42, $t57) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:46+1 + call $t58 := $Div($t42, $t57); + if ($abort_flag) { + assume {:print "$at(164,3771,3772)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t59 := +($t56, $t58) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:36+1 + call $t59 := $AddU256($t56, $t58); + if ($abort_flag) { + assume {:print "$at(164,3761,3762)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t60 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:62+1 + $t60 := 6; + assume $IsValid'u256'($t60); + + // $t61 := /($t45, $t60) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:60+1 + call $t61 := $Div($t45, $t60); + if ($abort_flag) { + assume {:print "$at(164,3785,3786)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t62 := +($t59, $t61) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:50+1 + call $t62 := $AddU256($t59, $t61); + if ($abort_flag) { + assume {:print "$at(164,3775,3776)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t63 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:76+2 + $t63 := 24; + assume $IsValid'u256'($t63); + + // $t64 := /($t48, $t63) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:74+1 + call $t64 := $Div($t48, $t63); + if ($abort_flag) { + assume {:print "$at(164,3799,3800)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t65 := +($t62, $t64) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:64+1 + call $t65 := $AddU256($t62, $t64); + if ($abort_flag) { + assume {:print "$at(164,3789,3790)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t66 := 120 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:91+3 + $t66 := 120; + assume $IsValid'u256'($t66); + + // $t67 := /($t51, $t66) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:89+1 + call $t67 := $Div($t51, $t66); + if ($abort_flag) { + assume {:print "$at(164,3814,3815)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t68 := +($t65, $t67) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:79+1 + call $t68 := $AddU256($t65, $t67); + if ($abort_flag) { + assume {:print "$at(164,3804,3805)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t69 := 720 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:107+3 + $t69 := 720; + assume $IsValid'u256'($t69); + + // $t70 := /($t54, $t69) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:105+1 + call $t70 := $Div($t54, $t69); + if ($abort_flag) { + assume {:print "$at(164,3830,3831)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t71 := +($t68, $t70) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:95+1 + call $t71 := $AddU256($t68, $t70); + if ($abort_flag) { + assume {:print "$at(164,3820,3821)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_return[0]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:9+101 + assume {:print "$track_return(79,2,0):", $t71} $t71 == $t71; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; +L3: + + // return $t71 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; + $ret0 := $t71; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 +L4: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun math_fixed64::exp_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:57:5+1535 +procedure {:timeLimit 80} $1_math_fixed64_exp_raw$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: 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: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + 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 $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: int; + var $t70: int; + var $t71: int; + var $t0: int; + var $temp_0'u256': int; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:57:5+1 + assume {:print "$at(164,2306,2307)"} true; + assume $IsValid'u256'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:57:5+1 + assume {:print "$track_local(79,2,0):", $t0} $t0 == $t0; + + // $t14 := 12786308645202655660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:30+3 + assume {:print "$at(164,2473,2476)"} true; + $t14 := 12786308645202655660; + assume $IsValid'u256'($t14); + + // $t15 := /($t0, $t14) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:28+1 + call $t15 := $Div($t0, $t14); + if ($abort_flag) { + assume {:print "$at(164,2471,2472)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[shift_long]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:59:13+10 + assume {:print "$track_local(79,2,6):", $t15} $t15 == $t15; + + // $t17 := 63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:31+2 + assume {:print "$at(164,2508,2510)"} true; + $t17 := 63; + assume $IsValid'u256'($t17); + + // $t18 := <=($t15, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:28+2 + call $t18 := $Le($t15, $t17); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + assume {:print "$at(164,2486,2553)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:61+13 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:61+13 + assume {:print "$at(164,2538,2551)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_state($t19) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:35+40 + call $t20 := $1_error_invalid_state($t19); + if ($abort_flag) { + assume {:print "$at(164,2512,2552)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + assume {:print "$at(164,2486,2553)"} true; + assume {:print "$track_abort(79,2):", $t20} $t20 == $t20; + + // $t16 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + $t16 := $t20; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:60:9+67 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:22+10 + assume {:print "$at(164,2576,2586)"} true; +L2: + + // $t21 := (u8)($t15) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:21+18 + assume {:print "$at(164,2575,2593)"} true; + call $t21 := $CastU8($t15); + if ($abort_flag) { + assume {:print "$at(164,2575,2593)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[shift]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:61:13+5 + assume {:print "$track_local(79,2,5):", $t21} $t21 == $t21; + + // $t22 := 12786308645202655660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:29+3 + assume {:print "$at(164,2623,2626)"} true; + $t22 := 12786308645202655660; + assume $IsValid'u256'($t22); + + // $t23 := %($t0, $t22) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:27+1 + call $t23 := $Mod($t0, $t22); + if ($abort_flag) { + assume {:print "$at(164,2621,2622)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[remainder]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:62:13+9 + assume {:print "$track_local(79,2,4):", $t23} $t23 == $t23; + + // $t24 := 22045359733108027 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:65:25+17 + assume {:print "$at(164,2768,2785)"} true; + $t24 := 22045359733108027; + assume $IsValid'u256'($t24); + + // trace_local[bigfactor]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:65:13+9 + assume {:print "$track_local(79,2,1):", $t24} $t24 == $t24; + + // $t25 := /($t23, $t24) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:66:34+1 + assume {:print "$at(164,2820,2821)"} true; + call $t25 := $Div($t23, $t24); + if ($abort_flag) { + assume {:print "$at(164,2820,2821)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[exponent]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:66:13+8 + assume {:print "$track_local(79,2,2):", $t25} $t25 == $t25; + + // $t26 := %($t23, $t24) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:67:27+1 + assume {:print "$at(164,2859,2860)"} true; + call $t26 := $Mod($t23, $t24); + if ($abort_flag) { + assume {:print "$at(164,2859,2860)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[x#1]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:67:13+1 + assume {:print "$track_local(79,2,13):", $t26} $t26 == $t26; + + // $t27 := 18468802611690918839 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:69:23+20 + assume {:print "$at(164,2964,2984)"} true; + $t27 := 18468802611690918839; + assume $IsValid'u256'($t27); + + // $t28 := (u128)($t25) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:38+18 + assume {:print "$at(164,3171,3189)"} true; + call $t28 := $CastU128($t25); + if ($abort_flag) { + assume {:print "$at(164,3171,3189)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t29 := math_fixed64::pow_raw($t27, $t28) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:21+36 + call $t29 := $1_math_fixed64_pow_raw($t27, $t28); + if ($abort_flag) { + assume {:print "$at(164,3154,3190)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[power]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:71:13+5 + assume {:print "$track_local(79,2,3):", $t29} $t29 == $t29; + + // $t30 := 219071715585908898 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:72:30+18 + assume {:print "$at(164,3221,3239)"} true; + $t30 := 219071715585908898; + assume $IsValid'u256'($t30); + + // $t31 := *($t29, $t30) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:33+1 + assume {:print "$at(164,3273,3274)"} true; + call $t31 := $MulU256($t29, $t30); + if ($abort_flag) { + assume {:print "$at(164,3273,3274)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t32 := *($t31, $t25) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:50+1 + call $t32 := $MulU256($t31, $t25); + if ($abort_flag) { + assume {:print "$at(164,3290,3291)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t33 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:65+3 + $t33 := 128; + assume $IsValid'u8'($t33); + + // $t34 := >>($t32, $t33) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:62+2 + call $t34 := $ShrU256($t32, $t33); + if ($abort_flag) { + assume {:print "$at(164,3302,3304)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t35 := -($t29, $t34) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:23+1 + call $t35 := $Sub($t29, $t34); + if ($abort_flag) { + assume {:print "$at(164,3263,3264)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[power]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:73:9+5 + assume {:print "$track_local(79,2,3):", $t35} $t35 == $t35; + + // $t36 := *($t35, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:30+1 + assume {:print "$at(164,3489,3490)"} true; + call $t36 := $MulU256($t35, $t26); + if ($abort_flag) { + assume {:print "$at(164,3489,3490)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t37 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:39+2 + $t37 := 64; + assume $IsValid'u8'($t37); + + // $t38 := -($t37, $t21) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:42+1 + call $t38 := $Sub($t37, $t21); + if ($abort_flag) { + assume {:print "$at(164,3501,3502)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t39 := >>($t36, $t38) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:35+2 + call $t39 := $ShrU256($t36, $t38); + if ($abort_flag) { + assume {:print "$at(164,3494,3496)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor1]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:76:13+7 + assume {:print "$track_local(79,2,7):", $t39} $t39 == $t39; + + // $t40 := *($t39, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:32+1 + assume {:print "$at(164,3542,3543)"} true; + call $t40 := $MulU256($t39, $t26); + if ($abort_flag) { + assume {:print "$at(164,3542,3543)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t41 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:40+2 + $t41 := 64; + assume $IsValid'u8'($t41); + + // $t42 := >>($t40, $t41) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:37+2 + call $t42 := $ShrU256($t40, $t41); + if ($abort_flag) { + assume {:print "$at(164,3547,3549)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor2]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:77:13+7 + assume {:print "$track_local(79,2,8):", $t42} $t42 == $t42; + + // $t43 := *($t42, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:32+1 + assume {:print "$at(164,3585,3586)"} true; + call $t43 := $MulU256($t42, $t26); + if ($abort_flag) { + assume {:print "$at(164,3585,3586)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t44 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:40+2 + $t44 := 64; + assume $IsValid'u8'($t44); + + // $t45 := >>($t43, $t44) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:37+2 + call $t45 := $ShrU256($t43, $t44); + if ($abort_flag) { + assume {:print "$at(164,3590,3592)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor3]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:78:13+7 + assume {:print "$track_local(79,2,9):", $t45} $t45 == $t45; + + // $t46 := *($t45, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:32+1 + assume {:print "$at(164,3628,3629)"} true; + call $t46 := $MulU256($t45, $t26); + if ($abort_flag) { + assume {:print "$at(164,3628,3629)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t47 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:40+2 + $t47 := 64; + assume $IsValid'u8'($t47); + + // $t48 := >>($t46, $t47) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:37+2 + call $t48 := $ShrU256($t46, $t47); + if ($abort_flag) { + assume {:print "$at(164,3633,3635)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor4]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:79:13+7 + assume {:print "$track_local(79,2,10):", $t48} $t48 == $t48; + + // $t49 := *($t48, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:32+1 + assume {:print "$at(164,3671,3672)"} true; + call $t49 := $MulU256($t48, $t26); + if ($abort_flag) { + assume {:print "$at(164,3671,3672)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t50 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:40+2 + $t50 := 64; + assume $IsValid'u8'($t50); + + // $t51 := >>($t49, $t50) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:37+2 + call $t51 := $ShrU256($t49, $t50); + if ($abort_flag) { + assume {:print "$at(164,3676,3678)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor5]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:80:13+7 + assume {:print "$track_local(79,2,11):", $t51} $t51 == $t51; + + // $t52 := *($t51, $t26) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:32+1 + assume {:print "$at(164,3714,3715)"} true; + call $t52 := $MulU256($t51, $t26); + if ($abort_flag) { + assume {:print "$at(164,3714,3715)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t53 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:40+2 + $t53 := 64; + assume $IsValid'u8'($t53); + + // $t54 := >>($t52, $t53) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:37+2 + call $t54 := $ShrU256($t52, $t53); + if ($abort_flag) { + assume {:print "$at(164,3719,3721)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_local[taylor6]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:81:13+7 + assume {:print "$track_local(79,2,12):", $t54} $t54 == $t54; + + // $t55 := <<($t35, $t21) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:16+2 + assume {:print "$at(164,3741,3743)"} true; + call $t55 := $ShlU256($t35, $t21); + if ($abort_flag) { + assume {:print "$at(164,3741,3743)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t56 := +($t55, $t39) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:26+1 + call $t56 := $AddU256($t55, $t39); + if ($abort_flag) { + assume {:print "$at(164,3751,3752)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t57 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:48+1 + $t57 := 2; + assume $IsValid'u256'($t57); + + // $t58 := /($t42, $t57) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:46+1 + call $t58 := $Div($t42, $t57); + if ($abort_flag) { + assume {:print "$at(164,3771,3772)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t59 := +($t56, $t58) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:36+1 + call $t59 := $AddU256($t56, $t58); + if ($abort_flag) { + assume {:print "$at(164,3761,3762)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t60 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:62+1 + $t60 := 6; + assume $IsValid'u256'($t60); + + // $t61 := /($t45, $t60) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:60+1 + call $t61 := $Div($t45, $t60); + if ($abort_flag) { + assume {:print "$at(164,3785,3786)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t62 := +($t59, $t61) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:50+1 + call $t62 := $AddU256($t59, $t61); + if ($abort_flag) { + assume {:print "$at(164,3775,3776)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t63 := 24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:76+2 + $t63 := 24; + assume $IsValid'u256'($t63); + + // $t64 := /($t48, $t63) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:74+1 + call $t64 := $Div($t48, $t63); + if ($abort_flag) { + assume {:print "$at(164,3799,3800)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t65 := +($t62, $t64) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:64+1 + call $t65 := $AddU256($t62, $t64); + if ($abort_flag) { + assume {:print "$at(164,3789,3790)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t66 := 120 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:91+3 + $t66 := 120; + assume $IsValid'u256'($t66); + + // $t67 := /($t51, $t66) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:89+1 + call $t67 := $Div($t51, $t66); + if ($abort_flag) { + assume {:print "$at(164,3814,3815)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t68 := +($t65, $t67) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:79+1 + call $t68 := $AddU256($t65, $t67); + if ($abort_flag) { + assume {:print "$at(164,3804,3805)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t69 := 720 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:107+3 + $t69 := 720; + assume $IsValid'u256'($t69); + + // $t70 := /($t54, $t69) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:105+1 + call $t70 := $Div($t54, $t69); + if ($abort_flag) { + assume {:print "$at(164,3830,3831)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // $t71 := +($t68, $t70) on_abort goto L4 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:95+1 + call $t71 := $AddU256($t68, $t70); + if ($abort_flag) { + assume {:print "$at(164,3820,3821)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(79,2):", $t16} $t16 == $t16; + goto L4; + } + + // trace_return[0]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:82:9+101 + assume {:print "$track_return(79,2,0):", $t71} $t71 == $t71; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; +L3: + + // return $t71 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; + $ret0 := $t71; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 +L4: + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:83:5+1 + assume {:print "$at(164,3840,3841)"} true; + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun math_fixed64::ln_plus_32ln2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:36:5+277 +procedure {:timeLimit 80} $1_math_fixed64_ln_plus_32ln2$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_fixed_point64_FixedPoint64; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:36:5+1 + assume {:print "$at(164,1294,1295)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:36:5+1 + assume {:print "$track_local(79,3,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point64::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:37:25+31 + assume {:print "$at(164,1376,1407)"} true; + call $t1 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,1376,1407)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := math128::log2_64($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:38:47+27 + assume {:print "$at(164,1455,1482)"} true; + call $t3 := $1_math128_log2_64($t1); + if ($abort_flag) { + assume {:print "$at(164,1455,1482)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := fixed_point64::get_raw_value($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:38:18+57 + call $t4 := $1_fixed_point64_get_raw_value($t3); + if ($abort_flag) { + assume {:print "$at(164,1426,1483)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t5 := (u256)($t4) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:38:17+67 + call $t5 := $CastU256($t4); + if ($abort_flag) { + assume {:print "$at(164,1425,1492)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t6 := 12786308645202655660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:52+3 + assume {:print "$at(164,1545,1548)"} true; + $t6 := 12786308645202655660; + assume $IsValid'u256'($t6); + + // $t7 := *($t5, $t6) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:50+1 + call $t7 := $MulU256($t5, $t6); + if ($abort_flag) { + assume {:print "$at(164,1543,1544)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t8 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:60+2 + $t8 := 64; + assume $IsValid'u8'($t8); + + // $t9 := >>($t7, $t8) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:57+2 + call $t9 := $ShrU256($t7, $t8); + if ($abort_flag) { + assume {:print "$at(164,1550,1552)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t10 := (u128)($t9) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:46+25 + call $t10 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(164,1539,1564)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t11 := opaque begin: fixed_point64::create_from_raw_value($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:9+63 + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:9+63 + assume $IsValid'$1_fixed_point64_FixedPoint64'($t11); + + // assume Eq(select fixed_point64::FixedPoint64.value($t11), $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:9+63 + assume $IsEqual'u128'($t11->$value, $t10); + + // $t11 := opaque end: fixed_point64::create_from_raw_value($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:9+63 + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:39:9+63 + assume {:print "$track_return(79,3,0):", $t11} $t11 == $t11; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:40:5+1 + assume {:print "$at(164,1570,1571)"} true; +L1: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:40:5+1 + assume {:print "$at(164,1570,1571)"} true; + $ret0 := $t11; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:40:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:40:5+1 + assume {:print "$at(164,1570,1571)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun math_fixed64::pow_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+263 +procedure {:inline 1} $1_math_fixed64_pow_raw(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bv128; + var $t8: bv128; + var $t9: bool; + 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 $t0: int; + var $t1: int; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume {:print "$at(164,3933,3934)"} true; + assume {:print "$track_local(79,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume {:print "$track_local(79,7,1):", $t1} $t1 == $t1; + + // $t3 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:87:25+7 + assume {:print "$at(164,3995,4002)"} true; + $t3 := 18446744073709551616; + assume $IsValid'u256'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:87:13+3 + assume {:print "$track_local(79,7,2):", $t3} $t3 == $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$at(164,4019,4020)"} true; +L5: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$at(164,4019,4020)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t4); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bool'($t5); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t6); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bv128'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bv128'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t17); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(79,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$track_local(79,7,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$track_local(79,7,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume !$abort_flag; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:21+1 + $t4 := 0; + assume $IsValid'u128'($t4); + + // $t5 := !=($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:18+2 + $t5 := !$IsEqual'u128'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:9+165 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:9+165 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:17+1 + assume {:print "$at(164,4045,4046)"} true; +L2: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:21+1 + assume {:print "$at(164,4049,4050)"} true; + $t6 := 1; + assume $IsValid'u128'($t6); + + // $t7 := &($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:19+1 + call $t7 := $AndBv128($int2bv.128($t1), $int2bv.128($t6)); + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:26+1 + $t8 := 0bv128; + assume $IsValid'bv128'($t8); + + // $t9 := !=($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:23+2 + $t9 := !$IsEqual'bv128'($t7, $t8); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:13+70 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:24+3 + assume {:print "$at(164,4082,4085)"} true; +L4: + + // $t10 := *($t2, $t0) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:28+1 + assume {:print "$at(164,4086,4087)"} true; + call $t10 := $MulU256($t2, $t0); + if ($abort_flag) { + assume {:print "$at(164,4086,4087)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // $t11 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:36+2 + $t11 := 64; + assume $IsValid'u8'($t11); + + // $t12 := >>($t10, $t11) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:33+2 + call $t12 := $ShrU256($t10, $t11); + if ($abort_flag) { + assume {:print "$at(164,4091,4093)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[res]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:17+3 + assume {:print "$track_local(79,7,2):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:17+1 + assume {:print "$at(164,4129,4130)"} true; +L3: + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:22+1 + assume {:print "$at(164,4134,4135)"} true; + $t13 := 1; + assume $IsValid'u8'($t13); + + // $t14 := >>($t1, $t13) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:19+2 + call $t14 := $ShrU128($t1, $t13); + if ($abort_flag) { + assume {:print "$at(164,4131,4133)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[n]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:13+1 + assume {:print "$track_local(79,7,1):", $t14} $t14 == $t14; + + // $t15 := *($t0, $t0) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:20+1 + assume {:print "$at(164,4156,4157)"} true; + call $t15 := $MulU256($t0, $t0); + if ($abort_flag) { + assume {:print "$at(164,4156,4157)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // $t16 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:28+2 + $t16 := 64; + assume $IsValid'u8'($t16); + + // $t17 := >>($t15, $t16) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:25+2 + call $t17 := $ShrU256($t15, $t16); + if ($abort_flag) { + assume {:print "$at(164,4161,4163)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[x]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:13+1 + assume {:print "$track_local(79,7,0):", $t17} $t17 == $t17; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:30+1 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; +L0: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; + assume {:print "$track_return(79,7,0):", $t2} $t2 == $t2; + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + $t19 := $t2; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + goto L7; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + // Loop invariant checking block for the loop started with header: L5 +L6: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; + assume false; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; +L7: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; + $ret0 := $t19; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 +L8: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun math_fixed64::pow_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+263 +procedure {:timeLimit 80} $1_math_fixed64_pow_raw$verify(_$t0: int, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bv128; + var $t8: bv128; + var $t9: bool; + 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 $t0: int; + var $t1: int; + var $temp_0'u128': int; + var $temp_0'u256': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume {:print "$at(164,3933,3934)"} true; + assume $IsValid'u256'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume $IsValid'u128'($t1); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume {:print "$track_local(79,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:86:5+1 + assume {:print "$track_local(79,7,1):", $t1} $t1 == $t1; + + // $t3 := 18446744073709551616 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:87:25+7 + assume {:print "$at(164,3995,4002)"} true; + $t3 := 18446744073709551616; + assume $IsValid'u256'($t3); + + // trace_local[res]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:87:13+3 + assume {:print "$track_local(79,7,2):", $t3} $t3 == $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$at(164,4019,4020)"} true; +L5: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$at(164,4019,4020)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t4); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bool'($t5); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t6); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bv128'($t7); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bv128'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u128'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u8'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume $IsValid'u256'($t17); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$info(): enter loop, variable(s) x, n, res havocked and reassigned"} true; + assume {:print "$track_local(79,7,0):", $t0} $t0 == $t0; + + // trace_local[n]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$track_local(79,7,1):", $t1} $t1 == $t1; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume {:print "$track_local(79,7,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:16+1 + assume !$abort_flag; + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:21+1 + $t4 := 0; + assume $IsValid'u128'($t4); + + // $t5 := !=($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:18+2 + $t5 := !$IsEqual'u128'($t1, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:9+165 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:88:9+165 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:17+1 + assume {:print "$at(164,4045,4046)"} true; +L2: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:21+1 + assume {:print "$at(164,4049,4050)"} true; + $t6 := 1; + assume $IsValid'u128'($t6); + + // $t7 := &($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:19+1 + call $t7 := $AndBv128($int2bv.128($t1), $int2bv.128($t6)); + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:26+1 + $t8 := 0bv128; + assume $IsValid'bv128'($t8); + + // $t9 := !=($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:23+2 + $t9 := !$IsEqual'bv128'($t7, $t8); + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:89:13+70 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:24+3 + assume {:print "$at(164,4082,4085)"} true; +L4: + + // $t10 := *($t2, $t0) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:28+1 + assume {:print "$at(164,4086,4087)"} true; + call $t10 := $MulU256($t2, $t0); + if ($abort_flag) { + assume {:print "$at(164,4086,4087)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // $t11 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:36+2 + $t11 := 64; + assume $IsValid'u8'($t11); + + // $t12 := >>($t10, $t11) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:33+2 + call $t12 := $ShrU256($t10, $t11); + if ($abort_flag) { + assume {:print "$at(164,4091,4093)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[res]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:90:17+3 + assume {:print "$track_local(79,7,2):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:17+1 + assume {:print "$at(164,4129,4130)"} true; +L3: + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:22+1 + assume {:print "$at(164,4134,4135)"} true; + $t13 := 1; + assume $IsValid'u8'($t13); + + // $t14 := >>($t1, $t13) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:19+2 + call $t14 := $ShrU128($t1, $t13); + if ($abort_flag) { + assume {:print "$at(164,4131,4133)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[n]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:92:13+1 + assume {:print "$track_local(79,7,1):", $t14} $t14 == $t14; + + // $t15 := *($t0, $t0) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:20+1 + assume {:print "$at(164,4156,4157)"} true; + call $t15 := $MulU256($t0, $t0); + if ($abort_flag) { + assume {:print "$at(164,4156,4157)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // $t16 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:28+2 + $t16 := 64; + assume $IsValid'u8'($t16); + + // $t17 := >>($t15, $t16) on_abort goto L8 with $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:25+2 + call $t17 := $ShrU256($t15, $t16); + if ($abort_flag) { + assume {:print "$at(164,4161,4163)"} true; + $t18 := $abort_code; + assume {:print "$track_abort(79,7):", $t18} $t18 == $t18; + goto L8; + } + + // trace_local[x]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:13+1 + assume {:print "$track_local(79,7,0):", $t17} $t17 == $t17; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:93:30+1 + goto L6; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; +L0: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; + assume {:print "$track_return(79,7,0):", $t2} $t2 == $t2; + + // $t19 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + $t19 := $t2; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + goto L7; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + // Loop invariant checking block for the loop started with header: L5 +L6: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:95:9+3 + assume {:print "$at(164,4187,4190)"} true; + assume false; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; +L7: + + // return $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; + $ret0 := $t19; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 +L8: + + // abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:96:5+1 + assume {:print "$at(164,4195,4196)"} true; + $abort_code := $t18; + $abort_flag := true; + return; + +} + +// fun math_fixed64::sum [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:99:5+249 +procedure {:inline 1} $1_math_fixed64_sum(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:99:5+1 + assume {:print "$at(164,4232,4233)"} true; + assume {:print "$track_local(79,9,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:100:19+20 + assume {:print "$at(164,4292,4312)"} true; + call $t4 := $1_vector_length'u64'($t0); + if ($abort_flag) { + assume {:print "$at(164,4292,4312)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[len]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:100:13+3 + assume {:print "$track_local(79,9,2):", $t4} $t4 == $t4; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:101:17+1 + assume {:print "$at(164,4330,4331)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:101:13+1 + assume {:print "$track_local(79,9,1):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:102:19+1 + assume {:print "$at(164,4351,4352)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[sum]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:102:13+3 + assume {:print "$track_local(79,9,3):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$at(164,4369,4370)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$at(164,4369,4370)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t12); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$info(): enter loop, variable(s) i, sum havocked and reassigned"} true; + assume {:print "$track_local(79,9,1):", $t1} $t1 == $t1; + + // trace_local[sum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$track_local(79,9,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:18+1 + call $t8 := $Lt($t1, $t4); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:9+100 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:9+100 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:19+3 + assume {:print "$at(164,4398,4401)"} true; +L2: + + // $t9 := vector::borrow($t0, $t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:26+23 + assume {:print "$at(164,4405,4428)"} true; + call $t9 := $1_vector_borrow'u64'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(164,4405,4428)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t10 := +($t3, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:23+1 + call $t10 := $AddU64($t3, $t9); + if ($abort_flag) { + assume {:print "$at(164,4402,4403)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[sum]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:13+3 + assume {:print "$track_local(79,9,3):", $t10} $t10 == $t10; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:21+1 + assume {:print "$at(164,4450,4451)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(164,4448,4449)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:13+1 + assume {:print "$track_local(79,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; +L0: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; + assume {:print "$track_return(79,9,0):", $t3} $t3 == $t3; + + // $t13 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + $t13 := $t3; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math_fixed64::sum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:99:5+249 +procedure {:timeLimit 80} $1_math_fixed64_sum$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t0: Vec (int); + var $temp_0'u64': int; + var $temp_0'vec'u64'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:99:5+1 + assume {:print "$at(164,4232,4233)"} true; + assume $IsValid'vec'u64''($t0); + + // trace_local[nums]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:99:5+1 + assume {:print "$track_local(79,9,0):", $t0} $t0 == $t0; + + // $t4 := vector::length($t0) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:100:19+20 + assume {:print "$at(164,4292,4312)"} true; + call $t4 := $1_vector_length'u64'($t0); + if ($abort_flag) { + assume {:print "$at(164,4292,4312)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[len]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:100:13+3 + assume {:print "$track_local(79,9,2):", $t4} $t4 == $t4; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:101:17+1 + assume {:print "$at(164,4330,4331)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:101:13+1 + assume {:print "$track_local(79,9,1):", $t6} $t6 == $t6; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:102:19+1 + assume {:print "$at(164,4351,4352)"} true; + $t7 := 0; + assume $IsValid'u64'($t7); + + // trace_local[sum]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:102:13+3 + assume {:print "$track_local(79,9,3):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$at(164,4369,4370)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$at(164,4369,4370)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'bool'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume $IsValid'u64'($t12); + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$info(): enter loop, variable(s) i, sum havocked and reassigned"} true; + assume {:print "$track_local(79,9,1):", $t1} $t1 == $t1; + + // trace_local[sum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume {:print "$track_local(79,9,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:16+1 + assume !$abort_flag; + + // $t8 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:18+1 + call $t8 := $Lt($t1, $t4); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:9+100 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:103:9+100 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:19+3 + assume {:print "$at(164,4398,4401)"} true; +L2: + + // $t9 := vector::borrow($t0, $t1) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:26+23 + assume {:print "$at(164,4405,4428)"} true; + call $t9 := $1_vector_borrow'u64'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(164,4405,4428)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // $t10 := +($t3, $t9) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:23+1 + call $t10 := $AddU64($t3, $t9); + if ($abort_flag) { + assume {:print "$at(164,4402,4403)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[sum]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:104:13+3 + assume {:print "$track_local(79,9,3):", $t10} $t10 == $t10; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:21+1 + assume {:print "$at(164,4450,4451)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L6 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(164,4448,4449)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(79,9):", $t5} $t5 == $t5; + goto L6; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:13+1 + assume {:print "$track_local(79,9,1):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:105:22+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; +L0: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; + assume {:print "$track_return(79,9,0):", $t3} $t3 == $t3; + + // $t13 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + $t13 := $t3; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + // Loop invariant checking block for the loop started with header: L3 +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:107:9+3 + assume {:print "$at(164,4472,4475)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; +L5: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; + $ret0 := $t13; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 +L6: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:108:5+1 + assume {:print "$at(164,4480,4481)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun math_fixed64::log2_plus_64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:31:5+165 +procedure {:timeLimit 80} $1_math_fixed64_log2_plus_64$verify(_$t0: $1_fixed_point64_FixedPoint64) returns ($ret0: $1_fixed_point64_FixedPoint64) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_fixed_point64_FixedPoint64; + var $t0: $1_fixed_point64_FixedPoint64; + var $temp_0'$1_fixed_point64_FixedPoint64': $1_fixed_point64_FixedPoint64; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:31:5+1 + assume {:print "$at(164,1123,1124)"} true; + assume $IsValid'$1_fixed_point64_FixedPoint64'($t0); + + // trace_local[x]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:31:5+1 + assume {:print "$track_local(79,4,0):", $t0} $t0 == $t0; + + // $t1 := fixed_point64::get_raw_value($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:32:26+31 + assume {:print "$at(164,1205,1236)"} true; + call $t1 := $1_fixed_point64_get_raw_value($t0); + if ($abort_flag) { + assume {:print "$at(164,1205,1236)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := (u128)($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:32:25+41 + call $t3 := $CastU128($t1); + if ($abort_flag) { + assume {:print "$at(164,1204,1245)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,4):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := math128::log2_64($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:33:9+27 + assume {:print "$at(164,1255,1282)"} true; + call $t4 := $1_math128_log2_64($t3); + if ($abort_flag) { + assume {:print "$at(164,1255,1282)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(79,4):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:33:9+27 + assume {:print "$track_return(79,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:34:5+1 + assume {:print "$at(164,1287,1288)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:34:5+1 + assume {:print "$at(164,1287,1288)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:34:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/math_fixed64.move:34:5+1 + assume {:print "$at(164,1287,1288)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// struct object_property_map::MutatorRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:66:5+64 +datatype $1_object_property_map_MutatorRef { + $1_object_property_map_MutatorRef($self: int) +} +function {:inline} $Update'$1_object_property_map_MutatorRef'_self(s: $1_object_property_map_MutatorRef, x: int): $1_object_property_map_MutatorRef { + $1_object_property_map_MutatorRef(x) +} +function $IsValid'$1_object_property_map_MutatorRef'(s: $1_object_property_map_MutatorRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_property_map_MutatorRef'(s1: $1_object_property_map_MutatorRef, s2: $1_object_property_map_MutatorRef): bool { + s1 == s2 +} + +// struct object_property_map::PropertyMap at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:55:5+89 +datatype $1_object_property_map_PropertyMap { + $1_object_property_map_PropertyMap($inner: Table int ($1_object_property_map_PropertyValue)) +} +function {:inline} $Update'$1_object_property_map_PropertyMap'_inner(s: $1_object_property_map_PropertyMap, x: Table int ($1_object_property_map_PropertyValue)): $1_object_property_map_PropertyMap { + $1_object_property_map_PropertyMap(x) +} +function $IsValid'$1_object_property_map_PropertyMap'(s: $1_object_property_map_PropertyMap): bool { + $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(s->$inner) +} +function {:inline} $IsEqual'$1_object_property_map_PropertyMap'(s1: $1_object_property_map_PropertyMap, s2: $1_object_property_map_PropertyMap): bool { + $IsEqual'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''(s1->$inner, s2->$inner)} +var $1_object_property_map_PropertyMap_$memory: $Memory $1_object_property_map_PropertyMap; + +// struct object_property_map::PropertyValue at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:60:5+89 +datatype $1_object_property_map_PropertyValue { + $1_object_property_map_PropertyValue($type: int, $value: Vec (int)) +} +function {:inline} $Update'$1_object_property_map_PropertyValue'_type(s: $1_object_property_map_PropertyValue, x: int): $1_object_property_map_PropertyValue { + $1_object_property_map_PropertyValue(x, s->$value) +} +function {:inline} $Update'$1_object_property_map_PropertyValue'_value(s: $1_object_property_map_PropertyValue, x: Vec (int)): $1_object_property_map_PropertyValue { + $1_object_property_map_PropertyValue(s->$type, x) +} +function $IsValid'$1_object_property_map_PropertyValue'(s: $1_object_property_map_PropertyValue): bool { + $IsValid'u8'(s->$type) + && $IsValid'vec'u8''(s->$value) +} +function {:inline} $IsEqual'$1_object_property_map_PropertyValue'(s1: $1_object_property_map_PropertyValue, s2: $1_object_property_map_PropertyValue): bool { + $IsEqual'u8'(s1->$type, s2->$type) + && $IsEqual'vec'u8''(s1->$value, s2->$value)} + +// fun object_property_map::update [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+250 +procedure {:inline 1} $1_object_property_map_update(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec (int)) returns () +{ + // 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 $t11: int; + var $t12: int; + var $t13: $1_string_String; + var $t14: int; + var $t15: $Mutation ($1_object_property_map_PropertyValue); + var $t16: $1_object_property_map_MutatorRef; + var $t17: $1_string_String; + var $t18: int; + var $t19: int; + var $t20: Vec (int); + var $t21: Vec (int); + var $t22: Vec (int); + var $t23: $1_string_String; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: Vec (int); + var $t28: $1_string_String; + var $t29: bool; + var $t30: int; + var $t31: Vec (int); + var $t32: $1_string_String; + var $t33: bool; + var $t34: int; + var $t35: Vec (int); + var $t36: $1_string_String; + var $t37: bool; + var $t38: int; + var $t39: Vec (int); + var $t40: $1_string_String; + var $t41: bool; + var $t42: int; + var $t43: Vec (int); + var $t44: $1_string_String; + var $t45: bool; + var $t46: int; + var $t47: Vec (int); + var $t48: $1_string_String; + var $t49: bool; + var $t50: int; + var $t51: Vec (int); + var $t52: $1_string_String; + var $t53: bool; + var $t54: int; + var $t55: Vec (int); + var $t56: $1_string_String; + var $t57: bool; + var $t58: int; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: bool; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: bool; + var $t67: bool; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: bool; + var $t73: int; + var $t74: int; + var $t75: bool; + var $t76: int; + var $t77: int; + var $t78: bool; + var $t79: int; + var $t80: int; + var $t81: bool; + var $t82: int; + var $t83: int; + var $t84: bool; + var $t85: int; + var $t86: int; + var $t87: bool; + var $t88: int; + var $t89: int; + var $t90: bool; + var $t91: int; + var $t92: bool; + var $t93: int; + var $t94: int; + var $t95: $1_string_String; + var $t96: int; + var $t97: bool; + var $t98: int; + var $t99: int; + var $t100: int; + var $t101: $Mutation ($1_object_property_map_PropertyMap); + var $t102: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t103: $Mutation ($1_object_property_map_PropertyValue); + var $t104: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$at(180,12087,12088)"} true; + assume {:print "$track_local(80,22,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,1):", $t1} $t1 == $t1; + + // trace_local[type]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,3):", $t3} $t3 == $t3; + + // trace_local[type#297]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,22,17):", $t2} $t2 == $t2; + + // $t22 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t22 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t22); + + // $t23 := string::utf8($t22) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t23 := $1_string_utf8($t22); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t25 := ==($t2, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t25 := $IsEqual'$1_string_String'($t2, $t23); + + // if ($t25) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t26 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t26 := 0; + assume $IsValid'u8'($t26); + + // $t4 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t26; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t27 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t27 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t27); + + // $t28 := string::utf8($t27) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t28 := $1_string_utf8($t27); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t29 := ==($t2, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t29 := $IsEqual'$1_string_String'($t2, $t28); + + // if ($t29) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t29) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t30 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t30 := 1; + assume $IsValid'u8'($t30); + + // $t12 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t30; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t31 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t31 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t33 := ==($t2, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t33 := $IsEqual'$1_string_String'($t2, $t32); + + // if ($t33) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t33) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t34 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t34 := 2; + assume $IsValid'u8'($t34); + + // $t11 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t34; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t35 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t35 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t35); + + // $t36 := string::utf8($t35) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t36 := $1_string_utf8($t35); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t37 := ==($t2, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t37 := $IsEqual'$1_string_String'($t2, $t36); + + // if ($t37) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t37) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t38 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t38 := 3; + assume $IsValid'u8'($t38); + + // $t10 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t38; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t39 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t39 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t39); + + // $t40 := string::utf8($t39) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t40 := $1_string_utf8($t39); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t41 := ==($t2, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t41 := $IsEqual'$1_string_String'($t2, $t40); + + // if ($t41) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t41) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t42 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t42 := 4; + assume $IsValid'u8'($t42); + + // $t9 := $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t42; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t43 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t43 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t43); + + // $t44 := string::utf8($t43) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t44 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t45 := ==($t2, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t45 := $IsEqual'$1_string_String'($t2, $t44); + + // if ($t45) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t45) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t46 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t46 := 5; + assume $IsValid'u8'($t46); + + // $t8 := $t46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t46; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t47 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t47 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t47); + + // $t48 := string::utf8($t47) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t48 := $1_string_utf8($t47); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t49 := ==($t2, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t49 := $IsEqual'$1_string_String'($t2, $t48); + + // if ($t49) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t49) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t50 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t50 := 6; + assume $IsValid'u8'($t50); + + // $t7 := $t50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t50; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t51 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t51 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t51); + + // $t52 := string::utf8($t51) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t52 := $1_string_utf8($t51); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t53 := ==($t2, $t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t53 := $IsEqual'$1_string_String'($t2, $t52); + + // if ($t53) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t53) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t54 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t54 := 7; + assume $IsValid'u8'($t54); + + // $t6 := $t54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t54; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t55 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t55 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t55); + + // $t56 := string::utf8($t55) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t56 := $1_string_utf8($t55); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t57 := ==($t2, $t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t57 := $IsEqual'$1_string_String'($t2, $t56); + + // if ($t57) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t57) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t58 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t58 := 8; + assume $IsValid'u8'($t58); + + // $t5 := $t58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t58; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t59 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t59 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t61 := ==($t2, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t61 := $IsEqual'$1_string_String'($t2, $t60); + + // if ($t61) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t61) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t62 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t62 := 7; + assume $IsValid'u64'($t62); + + // $t63 := error::invalid_argument($t62) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t63 := $1_error_invalid_argument($t62); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,22):", $t63} $t63 == $t63; + + // $t24 := move($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t24 := $t63; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L56; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t64 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t64 := 9; + assume $IsValid'u8'($t64); + + // $t5 := $t64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t64; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t5; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t6; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t7; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t9; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[new_type]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:321:13+8 + assume {:print "$at(180,12205,12213)"} true; + assume {:print "$track_local(80,22,14):", $t4} $t4 == $t4; + + // trace_local[value#299]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,22,20):", $t3} $t3 == $t3; + + // trace_local[type#298]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,22,18):", $t4} $t4 == $t4; + + // $t65 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t65 := 0; + assume $IsValid'u8'($t65); + + // $t66 := ==($t4, $t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t66 := $IsEqual'u8'($t4, $t65); + + // if ($t66) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t66) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L31: + + // $t67 := from_bcs::to_bool($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t67 := $1_from_bcs_to_bool($t3); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L30: + + // $t68 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t68 := 1; + assume $IsValid'u8'($t68); + + // $t69 := ==($t4, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t69 := $IsEqual'u8'($t4, $t68); + + // if ($t69) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t69) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L34: + + // $t70 := from_bcs::to_u8($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t70 := $1_from_bcs_to_u8($t3); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L32; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L33: + + // $t71 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t71 := 2; + assume $IsValid'u8'($t71); + + // $t72 := ==($t4, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t72 := $IsEqual'u8'($t4, $t71); + + // if ($t72) goto L36 else goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t72) { goto L36; } else { goto L35; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L36: + + // $t73 := from_bcs::to_u16($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t73 := $1_from_bcs_to_u16($t3); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L32; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L35: + + // $t74 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t74 := 3; + assume $IsValid'u8'($t74); + + // $t75 := ==($t4, $t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t75 := $IsEqual'u8'($t4, $t74); + + // if ($t75) goto L38 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t75) { goto L38; } else { goto L37; } + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L38: + + // $t76 := from_bcs::to_u32($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t76 := $1_from_bcs_to_u32($t3); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L32; + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L37: + + // $t77 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t77 := 4; + assume $IsValid'u8'($t77); + + // $t78 := ==($t4, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t78 := $IsEqual'u8'($t4, $t77); + + // if ($t78) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t78) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L40: + + // $t79 := from_bcs::to_u64($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t79 := $1_from_bcs_to_u64($t3); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L32; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L39: + + // $t80 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t80 := 5; + assume $IsValid'u8'($t80); + + // $t81 := ==($t4, $t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t81 := $IsEqual'u8'($t4, $t80); + + // if ($t81) goto L42 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t81) { goto L42; } else { goto L41; } + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L42: + + // $t82 := from_bcs::to_u128($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t82 := $1_from_bcs_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L32; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L41: + + // $t83 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t83 := 6; + assume $IsValid'u8'($t83); + + // $t84 := ==($t4, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t84 := $IsEqual'u8'($t4, $t83); + + // if ($t84) goto L44 else goto L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t84) { goto L44; } else { goto L43; } + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L44: + + // $t85 := from_bcs::to_u256($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t85 := $1_from_bcs_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L32; + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L43: + + // $t86 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t86 := 7; + assume $IsValid'u8'($t86); + + // $t87 := ==($t4, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t87 := $IsEqual'u8'($t4, $t86); + + // if ($t87) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t87) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L46: + + // $t88 := from_bcs::to_address($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t88 := $1_from_bcs_to_address($t3); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L32; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L45: + + // $t89 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t89 := 8; + assume $IsValid'u8'($t89); + + // $t90 := ==($t4, $t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t90 := $IsEqual'u8'($t4, $t89); + + // if ($t90) goto L48 else goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t90) { goto L48; } else { goto L47; } + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L48: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L32; + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L47: + + // $t91 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t91 := 9; + assume $IsValid'u8'($t91); + + // $t92 := ==($t4, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t92 := $IsEqual'u8'($t4, $t91); + + // if ($t92) goto L50 else goto L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t92) { goto L50; } else { goto L49; } + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L50: + + // goto L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L51; + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; +L49: + + // $t93 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t93 := 6; + assume $IsValid'u64'($t93); + + // $t94 := error::invalid_argument($t93) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t94 := $1_error_invalid_argument($t93); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,22):", $t94} $t94 == $t94; + + // $t24 := move($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t24 := $t94; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L56; + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L51: + + // $t95 := from_bcs::to_string($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t95 := $1_from_bcs_to_string($t3); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:323:25+3 + assume {:print "$at(180,12304,12307)"} true; +L32: + + // trace_local[value#303]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:74+5 + assume {:print "$at(180,12705,12710)"} true; + assume {:print "$track_local(80,22,21):", $t3} $t3 == $t3; + + // trace_local[type#302]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:64+4 + assume {:print "$track_local(80,22,19):", $t4} $t4 == $t4; + + // trace_local[key#301]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:50+3 + assume {:print "$track_local(80,22,13):", $t1} $t1 == $t1; + + // trace_local[ref#300]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:32+3 + assume {:print "$track_local(80,22,16):", $t0} $t0 == $t0; + + // $t96 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:333:23+8 + assume {:print "$at(180,12769,12777)"} true; + $t96 := $t0->$self; + + // $t97 := exists($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t97 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t96); + + // if ($t97) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t97) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L53: + + // goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L54; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L52: + + // $t98 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t98 := 1; + assume $IsValid'u64'($t98); + + // $t99 := error::not_found($t98) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t99 := $1_error_not_found($t98); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,22):", $t99} $t99 == $t99; + + // $t24 := move($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t24 := $t99; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L56; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+3 + assume {:print "$at(180,12838,12841)"} true; +L54: + + // $t100 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+8 + assume {:print "$at(180,12838,12846)"} true; + $t100 := $t0->$self; + + // $t101 := borrow_global($t100) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t100)) { + call $ExecFailureAbort(); + } else { + $t101 := $Mutation($Global($t100), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t100)); + } + if ($abort_flag) { + assume {:print "$at(180,12807,12824)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t102 := borrow_field.inner($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:48+23 + assume {:print "$at(180,12896,12919)"} true; + $t102 := $ChildMutation($t101, 0, $Dereference($t101)->$inner); + + // $t103 := simple_map::borrow_mut($t102, $t1) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:25+52 + call $t103,$t102 := $1_simple_map_borrow_mut'$1_string_String_$1_object_property_map_PropertyValue'($t102, $t1); + if ($abort_flag) { + assume {:print "$at(180,12873,12925)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_local[old_value#305]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:13+9 + $temp_0'$1_object_property_map_PropertyValue' := $Dereference($t103); + assume {:print "$track_local(80,22,15):", $temp_0'$1_object_property_map_PropertyValue'} $temp_0'$1_object_property_map_PropertyValue' == $temp_0'$1_object_property_map_PropertyValue'; + + // $t104 := pack object_property_map::PropertyValue($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:22+29 + assume {:print "$at(180,12948,12977)"} true; + $t104 := $1_object_property_map_PropertyValue($t4, $t3); + + // write_ref($t103, $t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t103 := $UpdateMutation($t103, $t104); + + // write_back[Reference($t102)[]]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t102 := $UpdateMutation($t102, UpdateTable($Dereference($t102), ReadVec($t103->p, LenVec($t102->p)), $Dereference($t103))); + + // write_back[Reference($t101).inner (simple_map::SimpleMap)]($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t101 := $UpdateMutation($t101, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t101), $Dereference($t102))); + + // write_back[object_property_map::PropertyMap@]($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t101), + $Dereference($t101)); + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; +L55: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; + return; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 +L56: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + +} + +// fun object_property_map::update [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+250 +procedure {:timeLimit 80} $1_object_property_map_update$verify(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec (int)) returns () +{ + // 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 $t11: int; + var $t12: int; + var $t13: $1_string_String; + var $t14: int; + var $t15: $Mutation ($1_object_property_map_PropertyValue); + var $t16: $1_object_property_map_MutatorRef; + var $t17: $1_string_String; + var $t18: int; + var $t19: int; + var $t20: Vec (int); + var $t21: Vec (int); + var $t22: Vec (int); + var $t23: $1_string_String; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: Vec (int); + var $t28: $1_string_String; + var $t29: bool; + var $t30: int; + var $t31: Vec (int); + var $t32: $1_string_String; + var $t33: bool; + var $t34: int; + var $t35: Vec (int); + var $t36: $1_string_String; + var $t37: bool; + var $t38: int; + var $t39: Vec (int); + var $t40: $1_string_String; + var $t41: bool; + var $t42: int; + var $t43: Vec (int); + var $t44: $1_string_String; + var $t45: bool; + var $t46: int; + var $t47: Vec (int); + var $t48: $1_string_String; + var $t49: bool; + var $t50: int; + var $t51: Vec (int); + var $t52: $1_string_String; + var $t53: bool; + var $t54: int; + var $t55: Vec (int); + var $t56: $1_string_String; + var $t57: bool; + var $t58: int; + var $t59: Vec (int); + var $t60: $1_string_String; + var $t61: bool; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: bool; + var $t67: bool; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: bool; + var $t73: int; + var $t74: int; + var $t75: bool; + var $t76: int; + var $t77: int; + var $t78: bool; + var $t79: int; + var $t80: int; + var $t81: bool; + var $t82: int; + var $t83: int; + var $t84: bool; + var $t85: int; + var $t86: int; + var $t87: bool; + var $t88: int; + var $t89: int; + var $t90: bool; + var $t91: int; + var $t92: bool; + var $t93: int; + var $t94: int; + var $t95: $1_string_String; + var $t96: int; + var $t97: bool; + var $t98: int; + var $t99: int; + var $t100: int; + var $t101: $Mutation ($1_object_property_map_PropertyMap); + var $t102: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t103: $Mutation ($1_object_property_map_PropertyValue); + var $t104: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$at(180,12087,12088)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume $IsValid'vec'u8''($t3); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,1):", $t1} $t1 == $t1; + + // trace_local[type]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:320:5+1 + assume {:print "$track_local(80,22,3):", $t3} $t3 == $t3; + + // trace_local[type#297]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,22,17):", $t2} $t2 == $t2; + + // $t22 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t22 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t22); + + // $t23 := string::utf8($t22) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t23 := $1_string_utf8($t22); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t25 := ==($t2, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t25 := $IsEqual'$1_string_String'($t2, $t23); + + // if ($t25) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t26 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t26 := 0; + assume $IsValid'u8'($t26); + + // $t4 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t26; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t27 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t27 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t27); + + // $t28 := string::utf8($t27) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t28 := $1_string_utf8($t27); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t29 := ==($t2, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t29 := $IsEqual'$1_string_String'($t2, $t28); + + // if ($t29) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t29) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t30 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t30 := 1; + assume $IsValid'u8'($t30); + + // $t12 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t30; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t31 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t31 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t33 := ==($t2, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t33 := $IsEqual'$1_string_String'($t2, $t32); + + // if ($t33) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t33) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t34 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t34 := 2; + assume $IsValid'u8'($t34); + + // $t11 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t34; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t35 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t35 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t35); + + // $t36 := string::utf8($t35) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t36 := $1_string_utf8($t35); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t37 := ==($t2, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t37 := $IsEqual'$1_string_String'($t2, $t36); + + // if ($t37) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t37) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t38 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t38 := 3; + assume $IsValid'u8'($t38); + + // $t10 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t38; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t39 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t39 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t39); + + // $t40 := string::utf8($t39) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t40 := $1_string_utf8($t39); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t41 := ==($t2, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t41 := $IsEqual'$1_string_String'($t2, $t40); + + // if ($t41) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t41) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t42 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t42 := 4; + assume $IsValid'u8'($t42); + + // $t9 := $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t42; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t43 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t43 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t43); + + // $t44 := string::utf8($t43) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t44 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t45 := ==($t2, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t45 := $IsEqual'$1_string_String'($t2, $t44); + + // if ($t45) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t45) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t46 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t46 := 5; + assume $IsValid'u8'($t46); + + // $t8 := $t46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t46; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t47 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t47 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t47); + + // $t48 := string::utf8($t47) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t48 := $1_string_utf8($t47); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t49 := ==($t2, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t49 := $IsEqual'$1_string_String'($t2, $t48); + + // if ($t49) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t49) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t50 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t50 := 6; + assume $IsValid'u8'($t50); + + // $t7 := $t50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t50; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t51 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t51 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t51); + + // $t52 := string::utf8($t51) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t52 := $1_string_utf8($t51); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t53 := ==($t2, $t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t53 := $IsEqual'$1_string_String'($t2, $t52); + + // if ($t53) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t53) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t54 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t54 := 7; + assume $IsValid'u8'($t54); + + // $t6 := $t54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t54; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t55 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t55 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t55); + + // $t56 := string::utf8($t55) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t56 := $1_string_utf8($t55); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t57 := ==($t2, $t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t57 := $IsEqual'$1_string_String'($t2, $t56); + + // if ($t57) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t57) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t58 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t58 := 8; + assume $IsValid'u8'($t58); + + // $t5 := $t58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t58; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t59 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t59 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t59); + + // $t60 := string::utf8($t59) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t60 := $1_string_utf8($t59); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t61 := ==($t2, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t61 := $IsEqual'$1_string_String'($t2, $t60); + + // if ($t61) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t61) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t62 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t62 := 7; + assume $IsValid'u64'($t62); + + // $t63 := error::invalid_argument($t62) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t63 := $1_error_invalid_argument($t62); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,22):", $t63} $t63 == $t63; + + // $t24 := move($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t24 := $t63; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L56; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t64 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t64 := 9; + assume $IsValid'u8'($t64); + + // $t5 := $t64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t64; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t5; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t6; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t7; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t9; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[new_type]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:321:13+8 + assume {:print "$at(180,12205,12213)"} true; + assume {:print "$track_local(80,22,14):", $t4} $t4 == $t4; + + // trace_local[value#299]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,22,20):", $t3} $t3 == $t3; + + // trace_local[type#298]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,22,18):", $t4} $t4 == $t4; + + // $t65 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t65 := 0; + assume $IsValid'u8'($t65); + + // $t66 := ==($t4, $t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t66 := $IsEqual'u8'($t4, $t65); + + // if ($t66) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t66) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L31: + + // $t67 := from_bcs::to_bool($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t67 := $1_from_bcs_to_bool($t3); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L30: + + // $t68 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t68 := 1; + assume $IsValid'u8'($t68); + + // $t69 := ==($t4, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t69 := $IsEqual'u8'($t4, $t68); + + // if ($t69) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t69) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L34: + + // $t70 := from_bcs::to_u8($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t70 := $1_from_bcs_to_u8($t3); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L32; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L33: + + // $t71 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t71 := 2; + assume $IsValid'u8'($t71); + + // $t72 := ==($t4, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t72 := $IsEqual'u8'($t4, $t71); + + // if ($t72) goto L36 else goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t72) { goto L36; } else { goto L35; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L36: + + // $t73 := from_bcs::to_u16($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t73 := $1_from_bcs_to_u16($t3); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L32; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L35: + + // $t74 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t74 := 3; + assume $IsValid'u8'($t74); + + // $t75 := ==($t4, $t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t75 := $IsEqual'u8'($t4, $t74); + + // if ($t75) goto L38 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t75) { goto L38; } else { goto L37; } + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L38: + + // $t76 := from_bcs::to_u32($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t76 := $1_from_bcs_to_u32($t3); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L32; + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L37: + + // $t77 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t77 := 4; + assume $IsValid'u8'($t77); + + // $t78 := ==($t4, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t78 := $IsEqual'u8'($t4, $t77); + + // if ($t78) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t78) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L40: + + // $t79 := from_bcs::to_u64($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t79 := $1_from_bcs_to_u64($t3); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L32; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L39: + + // $t80 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t80 := 5; + assume $IsValid'u8'($t80); + + // $t81 := ==($t4, $t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t81 := $IsEqual'u8'($t4, $t80); + + // if ($t81) goto L42 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t81) { goto L42; } else { goto L41; } + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L42: + + // $t82 := from_bcs::to_u128($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t82 := $1_from_bcs_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L32; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L41: + + // $t83 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t83 := 6; + assume $IsValid'u8'($t83); + + // $t84 := ==($t4, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t84 := $IsEqual'u8'($t4, $t83); + + // if ($t84) goto L44 else goto L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t84) { goto L44; } else { goto L43; } + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L44: + + // $t85 := from_bcs::to_u256($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t85 := $1_from_bcs_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L32; + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L43: + + // $t86 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t86 := 7; + assume $IsValid'u8'($t86); + + // $t87 := ==($t4, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t87 := $IsEqual'u8'($t4, $t86); + + // if ($t87) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t87) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L46: + + // $t88 := from_bcs::to_address($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t88 := $1_from_bcs_to_address($t3); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L32; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L45: + + // $t89 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t89 := 8; + assume $IsValid'u8'($t89); + + // $t90 := ==($t4, $t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t90 := $IsEqual'u8'($t4, $t89); + + // if ($t90) goto L48 else goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t90) { goto L48; } else { goto L47; } + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L48: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L32; + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L47: + + // $t91 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t91 := 9; + assume $IsValid'u8'($t91); + + // $t92 := ==($t4, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t92 := $IsEqual'u8'($t4, $t91); + + // if ($t92) goto L50 else goto L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t92) { goto L50; } else { goto L49; } + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L50: + + // goto L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L51; + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; +L49: + + // $t93 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t93 := 6; + assume $IsValid'u64'($t93); + + // $t94 := error::invalid_argument($t93) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t94 := $1_error_invalid_argument($t93); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,22):", $t94} $t94 == $t94; + + // $t24 := move($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t24 := $t94; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L56; + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L51: + + // $t95 := from_bcs::to_string($t3) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t95 := $1_from_bcs_to_string($t3); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // drop($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:323:25+3 + assume {:print "$at(180,12304,12307)"} true; +L32: + + // trace_local[value#303]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:74+5 + assume {:print "$at(180,12705,12710)"} true; + assume {:print "$track_local(80,22,21):", $t3} $t3 == $t3; + + // trace_local[type#302]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:64+4 + assume {:print "$track_local(80,22,19):", $t4} $t4 == $t4; + + // trace_local[key#301]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:50+3 + assume {:print "$track_local(80,22,13):", $t1} $t1 == $t1; + + // trace_local[ref#300]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:32+3 + assume {:print "$track_local(80,22,16):", $t0} $t0 == $t0; + + // $t96 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:333:23+8 + assume {:print "$at(180,12769,12777)"} true; + $t96 := $t0->$self; + + // $t97 := exists($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t97 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t96); + + // if ($t97) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t97) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L53: + + // goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L54; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L52: + + // $t98 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t98 := 1; + assume $IsValid'u64'($t98); + + // $t99 := error::not_found($t98) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t99 := $1_error_not_found($t98); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_abort($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,22):", $t99} $t99 == $t99; + + // $t24 := move($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t24 := $t99; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L56; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+3 + assume {:print "$at(180,12838,12841)"} true; +L54: + + // $t100 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+8 + assume {:print "$at(180,12838,12846)"} true; + $t100 := $t0->$self; + + // $t101 := borrow_global($t100) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t100)) { + call $ExecFailureAbort(); + } else { + $t101 := $Mutation($Global($t100), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t100)); + } + if ($abort_flag) { + assume {:print "$at(180,12807,12824)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // $t102 := borrow_field.inner($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:48+23 + assume {:print "$at(180,12896,12919)"} true; + $t102 := $ChildMutation($t101, 0, $Dereference($t101)->$inner); + + // $t103 := simple_map::borrow_mut($t102, $t1) on_abort goto L56 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:25+52 + call $t103,$t102 := $1_simple_map_borrow_mut'$1_string_String_$1_object_property_map_PropertyValue'($t102, $t1); + if ($abort_flag) { + assume {:print "$at(180,12873,12925)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(80,22):", $t24} $t24 == $t24; + goto L56; + } + + // trace_local[old_value#305]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:13+9 + $temp_0'$1_object_property_map_PropertyValue' := $Dereference($t103); + assume {:print "$track_local(80,22,15):", $temp_0'$1_object_property_map_PropertyValue'} $temp_0'$1_object_property_map_PropertyValue' == $temp_0'$1_object_property_map_PropertyValue'; + + // $t104 := pack object_property_map::PropertyValue($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:22+29 + assume {:print "$at(180,12948,12977)"} true; + $t104 := $1_object_property_map_PropertyValue($t4, $t3); + + // write_ref($t103, $t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t103 := $UpdateMutation($t103, $t104); + + // write_back[Reference($t102)[]]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t102 := $UpdateMutation($t102, UpdateTable($Dereference($t102), ReadVec($t103->p, LenVec($t102->p)), $Dereference($t103))); + + // write_back[Reference($t101).inner (simple_map::SimpleMap)]($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t101 := $UpdateMutation($t101, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t101), $Dereference($t102))); + + // write_back[object_property_map::PropertyMap@]($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t101), + $Dereference($t101)); + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; +L55: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; + return; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 +L56: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:324:5+1 + assume {:print "$at(180,12336,12337)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + +} + +// fun object_property_map::init [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+157 +procedure {:inline 1} $1_object_property_map_init(_$t0: $1_object_ConstructorRef, _$t1: $1_object_property_map_PropertyMap) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t0: $1_object_ConstructorRef; + var $t1: $1_object_property_map_PropertyMap; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume {:print "$at(180,2496,2497)"} true; + assume {:print "$track_local(80,7,0):", $t0} $t0 == $t0; + + // trace_local[container]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume {:print "$track_local(80,7,1):", $t1} $t1 == $t1; + + // $t3 := object::generate_signer($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:71:22+28 + assume {:print "$at(180,2581,2609)"} true; + call $t3 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(180,2581,2609)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,7):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:71:13+6 + assume {:print "$track_local(80,7,2):", $t3} $t3 == $t3; + + // move_to($t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:72:9+7 + assume {:print "$at(180,2619,2626)"} true; + if ($ResourceExists($1_object_property_map_PropertyMap_$memory, $t3->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $t3->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(180,2619,2626)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,7):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object_property_map::init [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+157 +procedure {:timeLimit 80} $1_object_property_map_init$verify(_$t0: $1_object_ConstructorRef, _$t1: $1_object_property_map_PropertyMap) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t0: $1_object_ConstructorRef; + var $t1: $1_object_property_map_PropertyMap; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume {:print "$at(180,2496,2497)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume $IsValid'$1_object_property_map_PropertyMap'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume {:print "$track_local(80,7,0):", $t0} $t0 == $t0; + + // trace_local[container]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:70:5+1 + assume {:print "$track_local(80,7,1):", $t1} $t1 == $t1; + + // $t3 := object::generate_signer($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:71:22+28 + assume {:print "$at(180,2581,2609)"} true; + call $t3 := $1_object_generate_signer($t0); + if ($abort_flag) { + assume {:print "$at(180,2581,2609)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,7):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:71:13+6 + assume {:print "$track_local(80,7,2):", $t3} $t3 == $t3; + + // move_to($t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:72:9+7 + assume {:print "$at(180,2619,2626)"} true; + if ($ResourceExists($1_object_property_map_PropertyMap_$memory, $t3->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $t3->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(180,2619,2626)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,7):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:73:5+1 + assume {:print "$at(180,2652,2653)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object_property_map::length [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+269 +procedure {:inline 1} $1_object_property_map_length'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_property_map_PropertyMap; + var $t8: Table int ($1_object_property_map_PropertyValue); + var $t9: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+1 + assume {:print "$at(180,7773,7774)"} true; + assume {:print "$track_local(80,8,0):", $t0} $t0 == $t0; + + // $t1 := object::object_address<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:216:23+30 + assume {:print "$at(180,7869,7899)"} true; + call $t1 := $1_object_object_address'$1_object_ObjectCore'($t0); + if ($abort_flag) { + assume {:print "$at(180,7869,7899)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t3 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,8):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t2 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:78+6 + assume {:print "$at(180,7979,7985)"} true; +L2: + + // $t6 := object::object_address<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:55+30 + assume {:print "$at(180,7956,7986)"} true; + call $t6 := $1_object_object_address'$1_object_ObjectCore'($t0); + if ($abort_flag) { + assume {:print "$at(180,7956,7986)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t7 := get_global($t6) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(180,7929,7942)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t8 := get_field.inner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:28+19 + assume {:print "$at(180,8016,8035)"} true; + $t8 := $t7->$inner; + + // $t9 := simple_map::length($t8) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:9+39 + call $t9 := $1_simple_map_length'$1_string_String_$1_object_property_map_PropertyValue'($t8); + if ($abort_flag) { + assume {:print "$at(180,7997,8036)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:9+39 + assume {:print "$track_return(80,8,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun object_property_map::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+269 +procedure {:timeLimit 80} $1_object_property_map_length$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_property_map_PropertyMap; + var $t8: Table int ($1_object_property_map_PropertyValue); + var $t9: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+1 + assume {:print "$at(180,7773,7774)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:215:5+1 + assume {:print "$track_local(80,8,0):", $t0} $t0 == $t0; + + // $t1 := object::object_address<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:216:23+30 + assume {:print "$at(180,7869,7899)"} true; + call $t1 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,7869,7899)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t3 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,8):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t2 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:78+6 + assume {:print "$at(180,7979,7985)"} true; +L2: + + // $t6 := object::object_address<#0>($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:55+30 + assume {:print "$at(180,7956,7986)"} true; + call $t6 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,7956,7986)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t7 := get_global($t6) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:217:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(180,7929,7942)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // $t8 := get_field.inner($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:28+19 + assume {:print "$at(180,8016,8035)"} true; + $t8 := $t7->$inner; + + // $t9 := simple_map::length($t8) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:9+39 + call $t9 := $1_simple_map_length'$1_string_String_$1_object_property_map_PropertyValue'($t8); + if ($abort_flag) { + assume {:print "$at(180,7997,8036)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,8):", $t2} $t2 == $t2; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:218:9+39 + assume {:print "$track_return(80,8,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:219:5+1 + assume {:print "$at(180,8041,8042)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun object_property_map::remove [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+238 +procedure {:inline 1} $1_object_property_map_remove(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_object_property_map_PropertyMap); + var $t9: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t10: $1_string_String; + var $t11: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume {:print "$at(180,13067,13068)"} true; + assume {:print "$track_local(80,21,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume {:print "$track_local(80,21,1):", $t1} $t1 == $t1; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:341:23+8 + assume {:print "$at(180,13162,13170)"} true; + $t2 := $t0->$self; + + // $t3 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t3 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,21):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:59+3 + assume {:print "$at(180,13231,13234)"} true; +L2: + + // $t7 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:59+8 + assume {:print "$at(180,13231,13239)"} true; + $t7 := $t0->$self; + + // $t8 := borrow_global($t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(180,13200,13217)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // $t9 := borrow_field.inner($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:28+23 + assume {:print "$at(180,13269,13292)"} true; + $t9 := $ChildMutation($t8, 0, $Dereference($t8)->$inner); + + // ($t10, $t11) := simple_map::remove($t9, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + call $t10,$t11,$t9 := $1_simple_map_remove'$1_string_String_$1_object_property_map_PropertyValue'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(180,13250,13298)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // write_back[Reference($t8).inner (simple_map::SimpleMap)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + $t8 := $UpdateMutation($t8, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t8), $Dereference($t9))); + + // write_back[object_property_map::PropertyMap@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + + // drop($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun object_property_map::remove [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+238 +procedure {:timeLimit 80} $1_object_property_map_remove$verify(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $Mutation ($1_object_property_map_PropertyMap); + var $t9: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t10: $1_string_String; + var $t11: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume {:print "$at(180,13067,13068)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume {:print "$track_local(80,21,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:340:5+1 + assume {:print "$track_local(80,21,1):", $t1} $t1 == $t1; + + // $t2 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:341:23+8 + assume {:print "$at(180,13162,13170)"} true; + $t2 := $t0->$self; + + // $t3 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t3 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,21):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:59+3 + assume {:print "$at(180,13231,13234)"} true; +L2: + + // $t7 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:59+8 + assume {:print "$at(180,13231,13239)"} true; + $t7 := $t0->$self; + + // $t8 := borrow_global($t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:342:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(180,13200,13217)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // $t9 := borrow_field.inner($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:28+23 + assume {:print "$at(180,13269,13292)"} true; + $t9 := $ChildMutation($t8, 0, $Dereference($t8)->$inner); + + // ($t10, $t11) := simple_map::remove($t9, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + call $t10,$t11,$t9 := $1_simple_map_remove'$1_string_String_$1_object_property_map_PropertyValue'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(180,13250,13298)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(80,21):", $t6} $t6 == $t6; + goto L4; + } + + // write_back[Reference($t8).inner (simple_map::SimpleMap)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + $t8 := $UpdateMutation($t8, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t8), $Dereference($t9))); + + // write_back[object_property_map::PropertyMap@]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t8), + $Dereference($t8)); + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + + // drop($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:343:9+48 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:344:5+1 + assume {:print "$at(180,13304,13305)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun object_property_map::add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+243 +procedure {:inline 1} $1_object_property_map_add(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec (int)) returns () +{ + // 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 $t11: int; + var $t12: int; + var $t13: $1_string_String; + var $t14: int; + var $t15: $1_object_property_map_MutatorRef; + var $t16: $1_string_String; + var $t17: int; + var $t18: int; + var $t19: Vec (int); + var $t20: Vec (int); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: Vec (int); + var $t27: $1_string_String; + var $t28: bool; + var $t29: int; + var $t30: Vec (int); + var $t31: $1_string_String; + var $t32: bool; + var $t33: int; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: bool; + var $t37: int; + var $t38: Vec (int); + var $t39: $1_string_String; + var $t40: bool; + var $t41: int; + var $t42: Vec (int); + var $t43: $1_string_String; + var $t44: bool; + var $t45: int; + var $t46: Vec (int); + var $t47: $1_string_String; + var $t48: bool; + var $t49: int; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: bool; + var $t53: int; + var $t54: Vec (int); + var $t55: $1_string_String; + var $t56: bool; + var $t57: int; + var $t58: Vec (int); + var $t59: $1_string_String; + var $t60: bool; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: bool; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: bool; + var $t72: int; + var $t73: int; + var $t74: bool; + var $t75: int; + var $t76: int; + var $t77: bool; + var $t78: int; + var $t79: int; + var $t80: bool; + var $t81: int; + var $t82: int; + var $t83: bool; + var $t84: int; + var $t85: int; + var $t86: bool; + var $t87: int; + var $t88: int; + var $t89: bool; + var $t90: int; + var $t91: bool; + var $t92: int; + var $t93: int; + var $t94: $1_string_String; + var $t95: int; + var $t96: bool; + var $t97: int; + var $t98: int; + var $t99: int; + var $t100: $Mutation ($1_object_property_map_PropertyMap); + var $t101: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t102: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$at(180,11190,11191)"} true; + assume {:print "$track_local(80,0,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,1):", $t1} $t1 == $t1; + + // trace_local[type]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,3):", $t3} $t3 == $t3; + + // trace_local[type#232]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,0,16):", $t2} $t2 == $t2; + + // $t21 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t21 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t24 := ==($t2, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t24 := $IsEqual'$1_string_String'($t2, $t22); + + // if ($t24) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t24) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t25 := 0; + assume $IsValid'u8'($t25); + + // $t4 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t25; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t26 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t26 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t26); + + // $t27 := string::utf8($t26) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t27 := $1_string_utf8($t26); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t28 := ==($t2, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t28 := $IsEqual'$1_string_String'($t2, $t27); + + // if ($t28) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t28) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t29 := 1; + assume $IsValid'u8'($t29); + + // $t12 := $t29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t29; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t30 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t30 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t30); + + // $t31 := string::utf8($t30) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t31 := $1_string_utf8($t30); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t32 := ==($t2, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t32 := $IsEqual'$1_string_String'($t2, $t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t33 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t33 := 2; + assume $IsValid'u8'($t33); + + // $t11 := $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t33; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t34 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t34 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t36 := ==($t2, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t36 := $IsEqual'$1_string_String'($t2, $t35); + + // if ($t36) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t36) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t37 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t37 := 3; + assume $IsValid'u8'($t37); + + // $t10 := $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t37; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t38 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t38 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t38); + + // $t39 := string::utf8($t38) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t39 := $1_string_utf8($t38); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t40 := ==($t2, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t40 := $IsEqual'$1_string_String'($t2, $t39); + + // if ($t40) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t40) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t41 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t41 := 4; + assume $IsValid'u8'($t41); + + // $t9 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t41; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t42 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t42 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t42); + + // $t43 := string::utf8($t42) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t43 := $1_string_utf8($t42); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t44 := ==($t2, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t44 := $IsEqual'$1_string_String'($t2, $t43); + + // if ($t44) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t44) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t45 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t45 := 5; + assume $IsValid'u8'($t45); + + // $t8 := $t45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t45; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t46 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t46 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t46); + + // $t47 := string::utf8($t46) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t47 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t48 := ==($t2, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t48 := $IsEqual'$1_string_String'($t2, $t47); + + // if ($t48) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t48) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t49 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t49 := 6; + assume $IsValid'u8'($t49); + + // $t7 := $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t49; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t50 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t50 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t52 := ==($t2, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t52 := $IsEqual'$1_string_String'($t2, $t51); + + // if ($t52) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t52) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t53 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t53 := 7; + assume $IsValid'u8'($t53); + + // $t6 := $t53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t53; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t54 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t54 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t54); + + // $t55 := string::utf8($t54) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t55 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t56 := ==($t2, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t56 := $IsEqual'$1_string_String'($t2, $t55); + + // if ($t56) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t56) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t57 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t57 := 8; + assume $IsValid'u8'($t57); + + // $t5 := $t57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t57; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t58 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t58 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t58); + + // $t59 := string::utf8($t58) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t59 := $1_string_utf8($t58); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t60 := ==($t2, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t60 := $IsEqual'$1_string_String'($t2, $t59); + + // if ($t60) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t60) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t61 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t61 := 7; + assume $IsValid'u64'($t61); + + // $t62 := error::invalid_argument($t61) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t62 := $1_error_invalid_argument($t61); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,0):", $t62} $t62 == $t62; + + // $t23 := move($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t23 := $t62; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L56; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t63 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t63 := 9; + assume $IsValid'u8'($t63); + + // $t5 := $t63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t63; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t5; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t6; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t7; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t9; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[new_type]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:302:13+8 + assume {:print "$at(180,11304,11312)"} true; + assume {:print "$track_local(80,0,14):", $t4} $t4 == $t4; + + // trace_local[value#234]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,0,19):", $t3} $t3 == $t3; + + // trace_local[type#233]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,0,17):", $t4} $t4 == $t4; + + // $t64 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t64 := 0; + assume $IsValid'u8'($t64); + + // $t65 := ==($t4, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t65 := $IsEqual'u8'($t4, $t64); + + // if ($t65) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t65) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L31: + + // $t66 := from_bcs::to_bool($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t66 := $1_from_bcs_to_bool($t3); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L30: + + // $t67 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t67 := 1; + assume $IsValid'u8'($t67); + + // $t68 := ==($t4, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t68 := $IsEqual'u8'($t4, $t67); + + // if ($t68) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t68) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L34: + + // $t69 := from_bcs::to_u8($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t69 := $1_from_bcs_to_u8($t3); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L32; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L33: + + // $t70 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t70 := 2; + assume $IsValid'u8'($t70); + + // $t71 := ==($t4, $t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t71 := $IsEqual'u8'($t4, $t70); + + // if ($t71) goto L36 else goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t71) { goto L36; } else { goto L35; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L36: + + // $t72 := from_bcs::to_u16($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t72 := $1_from_bcs_to_u16($t3); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L32; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L35: + + // $t73 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t73 := 3; + assume $IsValid'u8'($t73); + + // $t74 := ==($t4, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t74 := $IsEqual'u8'($t4, $t73); + + // if ($t74) goto L38 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t74) { goto L38; } else { goto L37; } + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L38: + + // $t75 := from_bcs::to_u32($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t75 := $1_from_bcs_to_u32($t3); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L32; + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L37: + + // $t76 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t76 := 4; + assume $IsValid'u8'($t76); + + // $t77 := ==($t4, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t77 := $IsEqual'u8'($t4, $t76); + + // if ($t77) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t77) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L40: + + // $t78 := from_bcs::to_u64($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t78 := $1_from_bcs_to_u64($t3); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L32; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L39: + + // $t79 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t79 := 5; + assume $IsValid'u8'($t79); + + // $t80 := ==($t4, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t80 := $IsEqual'u8'($t4, $t79); + + // if ($t80) goto L42 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t80) { goto L42; } else { goto L41; } + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L42: + + // $t81 := from_bcs::to_u128($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t81 := $1_from_bcs_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L32; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L41: + + // $t82 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t82 := 6; + assume $IsValid'u8'($t82); + + // $t83 := ==($t4, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t83 := $IsEqual'u8'($t4, $t82); + + // if ($t83) goto L44 else goto L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t83) { goto L44; } else { goto L43; } + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L44: + + // $t84 := from_bcs::to_u256($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t84 := $1_from_bcs_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L32; + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L43: + + // $t85 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t85 := 7; + assume $IsValid'u8'($t85); + + // $t86 := ==($t4, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t86 := $IsEqual'u8'($t4, $t85); + + // if ($t86) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t86) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L46: + + // $t87 := from_bcs::to_address($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t87 := $1_from_bcs_to_address($t3); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L32; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L45: + + // $t88 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t88 := 8; + assume $IsValid'u8'($t88); + + // $t89 := ==($t4, $t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t89 := $IsEqual'u8'($t4, $t88); + + // if ($t89) goto L48 else goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t89) { goto L48; } else { goto L47; } + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L48: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L32; + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L47: + + // $t90 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t90 := 9; + assume $IsValid'u8'($t90); + + // $t91 := ==($t4, $t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t91 := $IsEqual'u8'($t4, $t90); + + // if ($t91) goto L50 else goto L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t91) { goto L50; } else { goto L49; } + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L50: + + // goto L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L51; + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; +L49: + + // $t92 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t92 := 6; + assume $IsValid'u64'($t92); + + // $t93 := error::invalid_argument($t92) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t93 := $1_error_invalid_argument($t92); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,0):", $t93} $t93 == $t93; + + // $t23 := move($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t23 := $t93; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L56; + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L51: + + // $t94 := from_bcs::to_string($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t94 := $1_from_bcs_to_string($t3); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:304:22+3 + assume {:print "$at(180,11400,11403)"} true; +L32: + + // trace_local[value#238]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:70+5 + assume {:print "$at(180,11790,11795)"} true; + assume {:print "$track_local(80,0,20):", $t3} $t3 == $t3; + + // trace_local[type#237]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:60+4 + assume {:print "$track_local(80,0,18):", $t4} $t4 == $t4; + + // trace_local[key#236]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:47+3 + assume {:print "$track_local(80,0,13):", $t1} $t1 == $t1; + + // trace_local[ref#235]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:29+3 + assume {:print "$track_local(80,0,15):", $t0} $t0 == $t0; + + // $t95 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:314:23+8 + assume {:print "$at(180,11854,11862)"} true; + $t95 := $t0->$self; + + // $t96 := exists($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t96 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t95); + + // if ($t96) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t96) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L53: + + // goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L54; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L52: + + // $t97 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t97 := 1; + assume $IsValid'u64'($t97); + + // $t98 := error::not_found($t97) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t98 := $1_error_not_found($t97); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,0):", $t98} $t98 == $t98; + + // $t23 := move($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t23 := $t98; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L56; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+3 + assume {:print "$at(180,11923,11926)"} true; +L54: + + // $t99 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+8 + assume {:print "$at(180,11923,11931)"} true; + $t99 := $t0->$self; + + // $t100 := borrow_global($t99) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t99)) { + call $ExecFailureAbort(); + } else { + $t100 := $Mutation($Global($t99), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t99)); + } + if ($abort_flag) { + assume {:print "$at(180,11892,11909)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t101 := borrow_field.inner($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:25+23 + assume {:print "$at(180,11958,11981)"} true; + $t101 := $ChildMutation($t100, 0, $Dereference($t100)->$inner); + + // $t102 := pack object_property_map::PropertyValue($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:55+29 + $t102 := $1_object_property_map_PropertyValue($t4, $t3); + + // simple_map::add($t101, $t1, $t102) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + call $t101 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t101, $t1, $t102); + if ($abort_flag) { + assume {:print "$at(180,11942,12018)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // write_back[Reference($t100).inner (simple_map::SimpleMap)]($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $t100 := $UpdateMutation($t100, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t100), $Dereference($t101))); + + // write_back[object_property_map::PropertyMap@]($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t100), + $Dereference($t100)); + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; +L55: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; + return; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 +L56: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun object_property_map::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+243 +procedure {:timeLimit 80} $1_object_property_map_add$verify(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec (int)) returns () +{ + // 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 $t11: int; + var $t12: int; + var $t13: $1_string_String; + var $t14: int; + var $t15: $1_object_property_map_MutatorRef; + var $t16: $1_string_String; + var $t17: int; + var $t18: int; + var $t19: Vec (int); + var $t20: Vec (int); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: Vec (int); + var $t27: $1_string_String; + var $t28: bool; + var $t29: int; + var $t30: Vec (int); + var $t31: $1_string_String; + var $t32: bool; + var $t33: int; + var $t34: Vec (int); + var $t35: $1_string_String; + var $t36: bool; + var $t37: int; + var $t38: Vec (int); + var $t39: $1_string_String; + var $t40: bool; + var $t41: int; + var $t42: Vec (int); + var $t43: $1_string_String; + var $t44: bool; + var $t45: int; + var $t46: Vec (int); + var $t47: $1_string_String; + var $t48: bool; + var $t49: int; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: bool; + var $t53: int; + var $t54: Vec (int); + var $t55: $1_string_String; + var $t56: bool; + var $t57: int; + var $t58: Vec (int); + var $t59: $1_string_String; + var $t60: bool; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: bool; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: bool; + var $t72: int; + var $t73: int; + var $t74: bool; + var $t75: int; + var $t76: int; + var $t77: bool; + var $t78: int; + var $t79: int; + var $t80: bool; + var $t81: int; + var $t82: int; + var $t83: bool; + var $t84: int; + var $t85: int; + var $t86: bool; + var $t87: int; + var $t88: int; + var $t89: bool; + var $t90: int; + var $t91: bool; + var $t92: int; + var $t93: int; + var $t94: $1_string_String; + var $t95: int; + var $t96: bool; + var $t97: int; + var $t98: int; + var $t99: int; + var $t100: $Mutation ($1_object_property_map_PropertyMap); + var $t101: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t102: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec (int); + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$at(180,11190,11191)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume $IsValid'vec'u8''($t3); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,1):", $t1} $t1 == $t1; + + // trace_local[type]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:301:5+1 + assume {:print "$track_local(80,0,3):", $t3} $t3 == $t3; + + // trace_local[type#232]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,0,16):", $t2} $t2 == $t2; + + // $t21 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t21 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t24 := ==($t2, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t24 := $IsEqual'$1_string_String'($t2, $t22); + + // if ($t24) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t24) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t25 := 0; + assume $IsValid'u8'($t25); + + // $t4 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t25; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t26 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t26 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t26); + + // $t27 := string::utf8($t26) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t27 := $1_string_utf8($t26); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t28 := ==($t2, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t28 := $IsEqual'$1_string_String'($t2, $t27); + + // if ($t28) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t28) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t29 := 1; + assume $IsValid'u8'($t29); + + // $t12 := $t29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t29; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t30 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t30 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t30); + + // $t31 := string::utf8($t30) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t31 := $1_string_utf8($t30); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t32 := ==($t2, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t32 := $IsEqual'$1_string_String'($t2, $t31); + + // if ($t32) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t32) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t33 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t33 := 2; + assume $IsValid'u8'($t33); + + // $t11 := $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t33; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t34 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t34 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t34); + + // $t35 := string::utf8($t34) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t35 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t36 := ==($t2, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t36 := $IsEqual'$1_string_String'($t2, $t35); + + // if ($t36) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t36) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t37 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t37 := 3; + assume $IsValid'u8'($t37); + + // $t10 := $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t37; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t38 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t38 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t38); + + // $t39 := string::utf8($t38) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t39 := $1_string_utf8($t38); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t40 := ==($t2, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t40 := $IsEqual'$1_string_String'($t2, $t39); + + // if ($t40) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t40) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t41 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t41 := 4; + assume $IsValid'u8'($t41); + + // $t9 := $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t41; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t42 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t42 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t42); + + // $t43 := string::utf8($t42) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t43 := $1_string_utf8($t42); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t44 := ==($t2, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t44 := $IsEqual'$1_string_String'($t2, $t43); + + // if ($t44) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t44) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t45 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t45 := 5; + assume $IsValid'u8'($t45); + + // $t8 := $t45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t45; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t46 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t46 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t46); + + // $t47 := string::utf8($t46) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t47 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t48 := ==($t2, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t48 := $IsEqual'$1_string_String'($t2, $t47); + + // if ($t48) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t48) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t49 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t49 := 6; + assume $IsValid'u8'($t49); + + // $t7 := $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t49; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t50 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t50 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t52 := ==($t2, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t52 := $IsEqual'$1_string_String'($t2, $t51); + + // if ($t52) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t52) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t53 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t53 := 7; + assume $IsValid'u8'($t53); + + // $t6 := $t53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t53; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t54 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t54 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t54); + + // $t55 := string::utf8($t54) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t55 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t56 := ==($t2, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t56 := $IsEqual'$1_string_String'($t2, $t55); + + // if ($t56) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t56) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t57 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t57 := 8; + assume $IsValid'u8'($t57); + + // $t5 := $t57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t57; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t58 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t58 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t58); + + // $t59 := string::utf8($t58) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t59 := $1_string_utf8($t58); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t60 := ==($t2, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t60 := $IsEqual'$1_string_String'($t2, $t59); + + // if ($t60) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t60) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t61 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t61 := 7; + assume $IsValid'u64'($t61); + + // $t62 := error::invalid_argument($t61) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t62 := $1_error_invalid_argument($t61); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,0):", $t62} $t62 == $t62; + + // $t23 := move($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t23 := $t62; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L56; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t63 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t63 := 9; + assume $IsValid'u8'($t63); + + // $t5 := $t63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t5 := $t63; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t6 := $t5; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t7 := $t6; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t8 := $t7; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t9 := $t8; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t10 := $t9; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t11 := $t10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t12 := $t11; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t4 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t4 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[new_type]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:302:13+8 + assume {:print "$at(180,11304,11312)"} true; + assume {:print "$track_local(80,0,14):", $t4} $t4 == $t4; + + // trace_local[value#234]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,0,19):", $t3} $t3 == $t3; + + // trace_local[type#233]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,0,17):", $t4} $t4 == $t4; + + // $t64 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t64 := 0; + assume $IsValid'u8'($t64); + + // $t65 := ==($t4, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t65 := $IsEqual'u8'($t4, $t64); + + // if ($t65) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t65) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L31: + + // $t66 := from_bcs::to_bool($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t66 := $1_from_bcs_to_bool($t3); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L30: + + // $t67 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t67 := 1; + assume $IsValid'u8'($t67); + + // $t68 := ==($t4, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t68 := $IsEqual'u8'($t4, $t67); + + // if ($t68) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t68) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L34: + + // $t69 := from_bcs::to_u8($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t69 := $1_from_bcs_to_u8($t3); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L32; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L33: + + // $t70 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t70 := 2; + assume $IsValid'u8'($t70); + + // $t71 := ==($t4, $t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t71 := $IsEqual'u8'($t4, $t70); + + // if ($t71) goto L36 else goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t71) { goto L36; } else { goto L35; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L36: + + // $t72 := from_bcs::to_u16($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t72 := $1_from_bcs_to_u16($t3); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L32; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L35: + + // $t73 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t73 := 3; + assume $IsValid'u8'($t73); + + // $t74 := ==($t4, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t74 := $IsEqual'u8'($t4, $t73); + + // if ($t74) goto L38 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t74) { goto L38; } else { goto L37; } + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L38: + + // $t75 := from_bcs::to_u32($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t75 := $1_from_bcs_to_u32($t3); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L32; + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L37: + + // $t76 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t76 := 4; + assume $IsValid'u8'($t76); + + // $t77 := ==($t4, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t77 := $IsEqual'u8'($t4, $t76); + + // if ($t77) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t77) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L40: + + // $t78 := from_bcs::to_u64($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t78 := $1_from_bcs_to_u64($t3); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L32; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L39: + + // $t79 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t79 := 5; + assume $IsValid'u8'($t79); + + // $t80 := ==($t4, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t80 := $IsEqual'u8'($t4, $t79); + + // if ($t80) goto L42 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t80) { goto L42; } else { goto L41; } + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L42: + + // $t81 := from_bcs::to_u128($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t81 := $1_from_bcs_to_u128($t3); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L32; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L41: + + // $t82 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t82 := 6; + assume $IsValid'u8'($t82); + + // $t83 := ==($t4, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t83 := $IsEqual'u8'($t4, $t82); + + // if ($t83) goto L44 else goto L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t83) { goto L44; } else { goto L43; } + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L44: + + // $t84 := from_bcs::to_u256($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t84 := $1_from_bcs_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L32; + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L43: + + // $t85 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t85 := 7; + assume $IsValid'u8'($t85); + + // $t86 := ==($t4, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t86 := $IsEqual'u8'($t4, $t85); + + // if ($t86) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t86) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L46: + + // $t87 := from_bcs::to_address($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t87 := $1_from_bcs_to_address($t3); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L32; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L45: + + // $t88 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t88 := 8; + assume $IsValid'u8'($t88); + + // $t89 := ==($t4, $t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t89 := $IsEqual'u8'($t4, $t88); + + // if ($t89) goto L48 else goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t89) { goto L48; } else { goto L47; } + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L48: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L32; + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L47: + + // $t90 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t90 := 9; + assume $IsValid'u8'($t90); + + // $t91 := ==($t4, $t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t91 := $IsEqual'u8'($t4, $t90); + + // if ($t91) goto L50 else goto L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t91) { goto L50; } else { goto L49; } + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L50: + + // goto L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L51; + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; +L49: + + // $t92 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t92 := 6; + assume $IsValid'u64'($t92); + + // $t93 := error::invalid_argument($t92) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t93 := $1_error_invalid_argument($t92); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,0):", $t93} $t93 == $t93; + + // $t23 := move($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t23 := $t93; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L56; + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L51: + + // $t94 := from_bcs::to_string($t3) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t94 := $1_from_bcs_to_string($t3); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // drop($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:304:22+3 + assume {:print "$at(180,11400,11403)"} true; +L32: + + // trace_local[value#238]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:70+5 + assume {:print "$at(180,11790,11795)"} true; + assume {:print "$track_local(80,0,20):", $t3} $t3 == $t3; + + // trace_local[type#237]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:60+4 + assume {:print "$track_local(80,0,18):", $t4} $t4 == $t4; + + // trace_local[key#236]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:47+3 + assume {:print "$track_local(80,0,13):", $t1} $t1 == $t1; + + // trace_local[ref#235]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:29+3 + assume {:print "$track_local(80,0,15):", $t0} $t0 == $t0; + + // $t95 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:314:23+8 + assume {:print "$at(180,11854,11862)"} true; + $t95 := $t0->$self; + + // $t96 := exists($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t96 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t95); + + // if ($t96) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t96) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L53: + + // goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L54; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L52: + + // $t97 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t97 := 1; + assume $IsValid'u64'($t97); + + // $t98 := error::not_found($t97) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t98 := $1_error_not_found($t97); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // trace_abort($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,0):", $t98} $t98 == $t98; + + // $t23 := move($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t23 := $t98; + + // goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L56; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+3 + assume {:print "$at(180,11923,11926)"} true; +L54: + + // $t99 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+8 + assume {:print "$at(180,11923,11931)"} true; + $t99 := $t0->$self; + + // $t100 := borrow_global($t99) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t99)) { + call $ExecFailureAbort(); + } else { + $t100 := $Mutation($Global($t99), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t99)); + } + if ($abort_flag) { + assume {:print "$at(180,11892,11909)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // $t101 := borrow_field.inner($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:25+23 + assume {:print "$at(180,11958,11981)"} true; + $t101 := $ChildMutation($t100, 0, $Dereference($t100)->$inner); + + // $t102 := pack object_property_map::PropertyValue($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:55+29 + $t102 := $1_object_property_map_PropertyValue($t4, $t3); + + // simple_map::add($t101, $t1, $t102) on_abort goto L56 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + call $t101 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t101, $t1, $t102); + if ($abort_flag) { + assume {:print "$at(180,11942,12018)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(80,0):", $t23} $t23 == $t23; + goto L56; + } + + // write_back[Reference($t100).inner (simple_map::SimpleMap)]($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $t100 := $UpdateMutation($t100, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t100), $Dereference($t101))); + + // write_back[object_property_map::PropertyMap@]($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t100), + $Dereference($t100)); + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; +L55: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; + return; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 +L56: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:305:5+1 + assume {:print "$at(180,11432,11433)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + +} + +// fun object_property_map::read [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+428 +procedure {:inline 1} $1_object_property_map_read'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: $1_string_String, $ret1: Vec (int)) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $1_string_String; + var $t11: $1_object_property_map_PropertyValue; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $1_object_property_map_PropertyMap; + var $t20: Table int ($1_object_property_map_PropertyValue); + var $t21: $1_object_property_map_PropertyValue; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: Vec (int); + var $t26: int; + var $t27: bool; + var $t28: Vec (int); + var $t29: int; + var $t30: bool; + var $t31: Vec (int); + var $t32: int; + var $t33: bool; + var $t34: Vec (int); + var $t35: int; + var $t36: bool; + var $t37: Vec (int); + var $t38: int; + var $t39: bool; + var $t40: Vec (int); + var $t41: int; + var $t42: bool; + var $t43: Vec (int); + var $t44: int; + var $t45: bool; + var $t46: Vec (int); + var $t47: int; + var $t48: bool; + var $t49: Vec (int); + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: Vec (int); + var $t55: Vec (int); + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$at(180,8222,8223)"} true; + assume {:print "$track_local(80,10,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$track_local(80,10,1):", $t1} $t1 == $t1; + + // $t13 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:225:23+30 + assume {:print "$at(180,8347,8377)"} true; + call $t13 := $1_object_object_address'$1_object_ObjectCore'($t0); + if ($abort_flag) { + assume {:print "$at(180,8347,8377)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t15 := exists($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t15 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t13); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::not_found($t16) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t17 := $1_error_not_found($t16); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,10):", $t17} $t17 == $t17; + + // $t14 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t14 := $t17; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:78+6 + assume {:print "$at(180,8457,8463)"} true; +L2: + + // $t18 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:55+30 + assume {:print "$at(180,8434,8464)"} true; + call $t18 := $1_object_object_address'$1_object_ObjectCore'($t0); + if ($abort_flag) { + assume {:print "$at(180,8434,8464)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t19 := get_global($t18) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t18); + } + if ($abort_flag) { + assume {:print "$at(180,8407,8420)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t20 := get_field.inner($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:49+19 + assume {:print "$at(180,8515,8534)"} true; + $t20 := $t19->$inner; + + // $t21 := simple_map::borrow($t20, $t1) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:30+44 + call $t21 := $1_simple_map_borrow'$1_string_String_$1_object_property_map_PropertyValue'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(180,8496,8540)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_local[property_value]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:13+14 + assume {:print "$track_local(80,10,11):", $t21} $t21 == $t21; + + // $t22 := get_field.type($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:228:41+19 + assume {:print "$at(180,8582,8601)"} true; + $t22 := $t21->$type; + + // trace_local[type#255]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:117:33+4 + assume {:print "$at(180,4366,4370)"} true; + assume {:print "$track_local(80,10,12):", $t22} $t22 == $t22; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:21+4 + assume {:print "$at(180,4406,4410)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:18+2 + $t24 := $IsEqual'u8'($t22, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; +L4: + + // $t25 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; + $t25 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t25); + + // $t2 := string::utf8($t25) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:13+21 + call $t2 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(180,4426,4447)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:20+4 + assume {:print "$at(180,4467,4471)"} true; +L3: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:28+2 + assume {:print "$at(180,4475,4477)"} true; + $t26 := 1; + assume $IsValid'u8'($t26); + + // $t27 := ==($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:25+2 + $t27 := $IsEqual'u8'($t22, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; +L7: + + // $t28 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; + $t28 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t28); + + // $t10 := string::utf8($t28) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:13+19 + call $t10 := $1_string_utf8($t28); + if ($abort_flag) { + assume {:print "$at(180,4493,4512)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:20+4 + assume {:print "$at(180,4532,4536)"} true; +L6: + + // $t29 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:28+3 + assume {:print "$at(180,4540,4543)"} true; + $t29 := 2; + assume $IsValid'u8'($t29); + + // $t30 := ==($t22, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:25+2 + $t30 := $IsEqual'u8'($t22, $t29); + + // if ($t30) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + if ($t30) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; +L10: + + // $t31 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; + $t31 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t31); + + // $t9 := string::utf8($t31) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:13+20 + call $t9 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(180,4559,4579)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:20+4 + assume {:print "$at(180,4599,4603)"} true; +L9: + + // $t32 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:28+3 + assume {:print "$at(180,4607,4610)"} true; + $t32 := 3; + assume $IsValid'u8'($t32); + + // $t33 := ==($t22, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:25+2 + $t33 := $IsEqual'u8'($t22, $t32); + + // if ($t33) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + if ($t33) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; +L13: + + // $t34 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; + $t34 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t34); + + // $t8 := string::utf8($t34) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:13+20 + call $t8 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(180,4626,4646)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:20+4 + assume {:print "$at(180,4666,4670)"} true; +L12: + + // $t35 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:28+3 + assume {:print "$at(180,4674,4677)"} true; + $t35 := 4; + assume $IsValid'u8'($t35); + + // $t36 := ==($t22, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:25+2 + $t36 := $IsEqual'u8'($t22, $t35); + + // if ($t36) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + if ($t36) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; +L16: + + // $t37 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; + $t37 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t37); + + // $t7 := string::utf8($t37) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:13+20 + call $t7 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(180,4693,4713)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:20+4 + assume {:print "$at(180,4733,4737)"} true; +L15: + + // $t38 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:28+4 + assume {:print "$at(180,4741,4745)"} true; + $t38 := 5; + assume $IsValid'u8'($t38); + + // $t39 := ==($t22, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:25+2 + $t39 := $IsEqual'u8'($t22, $t38); + + // if ($t39) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + if ($t39) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; +L19: + + // $t40 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; + $t40 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t40); + + // $t6 := string::utf8($t40) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:13+21 + call $t6 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(180,4761,4782)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:20+4 + assume {:print "$at(180,4802,4806)"} true; +L18: + + // $t41 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:28+4 + assume {:print "$at(180,4810,4814)"} true; + $t41 := 6; + assume $IsValid'u8'($t41); + + // $t42 := ==($t22, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:25+2 + $t42 := $IsEqual'u8'($t22, $t41); + + // if ($t42) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + if ($t42) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; +L22: + + // $t43 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; + $t43 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t43); + + // $t5 := string::utf8($t43) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:13+21 + call $t5 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(180,4830,4851)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:20+4 + assume {:print "$at(180,4871,4875)"} true; +L21: + + // $t44 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:28+7 + assume {:print "$at(180,4879,4886)"} true; + $t44 := 7; + assume $IsValid'u8'($t44); + + // $t45 := ==($t22, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:25+2 + $t45 := $IsEqual'u8'($t22, $t44); + + // if ($t45) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + if ($t45) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; +L25: + + // $t46 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; + $t46 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t46); + + // $t4 := string::utf8($t46) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:13+24 + call $t4 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(180,4902,4926)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:20+4 + assume {:print "$at(180,4946,4950)"} true; +L24: + + // $t47 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:28+11 + assume {:print "$at(180,4954,4965)"} true; + $t47 := 8; + assume $IsValid'u8'($t47); + + // $t48 := ==($t22, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:25+2 + $t48 := $IsEqual'u8'($t22, $t47); + + // if ($t48) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + if ($t48) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; +L28: + + // $t49 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; + $t49 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t49); + + // $t3 := string::utf8($t49) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:13+27 + call $t3 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(180,4981,5008)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:20+4 + assume {:print "$at(180,5028,5032)"} true; +L27: + + // $t50 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:28+6 + assume {:print "$at(180,5036,5042)"} true; + $t50 := 9; + assume $IsValid'u8'($t50); + + // $t51 := ==($t22, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:25+2 + $t51 := $IsEqual'u8'($t22, $t50); + + // if ($t51) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + if ($t51) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + assume {:print "$at(180,5024,5211)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; +L30: + + // $t52 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:44+13 + assume {:print "$at(180,5186,5199)"} true; + $t52 := 7; + assume $IsValid'u64'($t52); + + // $t53 := error::invalid_argument($t52) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:19+40 + call $t53 := $1_error_invalid_argument($t52); + if ($abort_flag) { + assume {:print "$at(180,5161,5201)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; + assume {:print "$track_abort(80,10):", $t53} $t53 == $t53; + + // $t14 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + $t14 := $t53; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; +L32: + + // $t54 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; + $t54 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t54); + + // $t3 := string::utf8($t54) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:13+67 + call $t3 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5058,5125)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; +L29: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + $t4 := $t3; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 +L8: + + // $t2 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + $t2 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 +L5: + + // $t55 := get_field.value($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:20+20 + assume {:print "$at(180,8623,8643)"} true; + $t55 := $t21->$value; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,0):", $t2} $t2 == $t2; + + // trace_return[1]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,1):", $t55} $t55 == $t55; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; +L33: + + // return ($t2, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $ret0 := $t2; + $ret1 := $t55; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 +L34: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun object_property_map::read<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+428 +procedure {:inline 1} $1_object_property_map_read'#0'(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: $1_string_String, $ret1: Vec (int)) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $1_string_String; + var $t11: $1_object_property_map_PropertyValue; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $1_object_property_map_PropertyMap; + var $t20: Table int ($1_object_property_map_PropertyValue); + var $t21: $1_object_property_map_PropertyValue; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: Vec (int); + var $t26: int; + var $t27: bool; + var $t28: Vec (int); + var $t29: int; + var $t30: bool; + var $t31: Vec (int); + var $t32: int; + var $t33: bool; + var $t34: Vec (int); + var $t35: int; + var $t36: bool; + var $t37: Vec (int); + var $t38: int; + var $t39: bool; + var $t40: Vec (int); + var $t41: int; + var $t42: bool; + var $t43: Vec (int); + var $t44: int; + var $t45: bool; + var $t46: Vec (int); + var $t47: int; + var $t48: bool; + var $t49: Vec (int); + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: Vec (int); + var $t55: Vec (int); + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$at(180,8222,8223)"} true; + assume {:print "$track_local(80,10,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$track_local(80,10,1):", $t1} $t1 == $t1; + + // $t13 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:225:23+30 + assume {:print "$at(180,8347,8377)"} true; + call $t13 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,8347,8377)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t15 := exists($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t15 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t13); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::not_found($t16) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t17 := $1_error_not_found($t16); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,10):", $t17} $t17 == $t17; + + // $t14 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t14 := $t17; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:78+6 + assume {:print "$at(180,8457,8463)"} true; +L2: + + // $t18 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:55+30 + assume {:print "$at(180,8434,8464)"} true; + call $t18 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,8434,8464)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t19 := get_global($t18) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t18); + } + if ($abort_flag) { + assume {:print "$at(180,8407,8420)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t20 := get_field.inner($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:49+19 + assume {:print "$at(180,8515,8534)"} true; + $t20 := $t19->$inner; + + // $t21 := simple_map::borrow($t20, $t1) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:30+44 + call $t21 := $1_simple_map_borrow'$1_string_String_$1_object_property_map_PropertyValue'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(180,8496,8540)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_local[property_value]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:13+14 + assume {:print "$track_local(80,10,11):", $t21} $t21 == $t21; + + // $t22 := get_field.type($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:228:41+19 + assume {:print "$at(180,8582,8601)"} true; + $t22 := $t21->$type; + + // trace_local[type#255]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:117:33+4 + assume {:print "$at(180,4366,4370)"} true; + assume {:print "$track_local(80,10,12):", $t22} $t22 == $t22; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:21+4 + assume {:print "$at(180,4406,4410)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:18+2 + $t24 := $IsEqual'u8'($t22, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; +L4: + + // $t25 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; + $t25 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t25); + + // $t2 := string::utf8($t25) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:13+21 + call $t2 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(180,4426,4447)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:20+4 + assume {:print "$at(180,4467,4471)"} true; +L3: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:28+2 + assume {:print "$at(180,4475,4477)"} true; + $t26 := 1; + assume $IsValid'u8'($t26); + + // $t27 := ==($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:25+2 + $t27 := $IsEqual'u8'($t22, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; +L7: + + // $t28 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; + $t28 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t28); + + // $t10 := string::utf8($t28) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:13+19 + call $t10 := $1_string_utf8($t28); + if ($abort_flag) { + assume {:print "$at(180,4493,4512)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:20+4 + assume {:print "$at(180,4532,4536)"} true; +L6: + + // $t29 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:28+3 + assume {:print "$at(180,4540,4543)"} true; + $t29 := 2; + assume $IsValid'u8'($t29); + + // $t30 := ==($t22, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:25+2 + $t30 := $IsEqual'u8'($t22, $t29); + + // if ($t30) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + if ($t30) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; +L10: + + // $t31 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; + $t31 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t31); + + // $t9 := string::utf8($t31) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:13+20 + call $t9 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(180,4559,4579)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:20+4 + assume {:print "$at(180,4599,4603)"} true; +L9: + + // $t32 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:28+3 + assume {:print "$at(180,4607,4610)"} true; + $t32 := 3; + assume $IsValid'u8'($t32); + + // $t33 := ==($t22, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:25+2 + $t33 := $IsEqual'u8'($t22, $t32); + + // if ($t33) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + if ($t33) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; +L13: + + // $t34 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; + $t34 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t34); + + // $t8 := string::utf8($t34) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:13+20 + call $t8 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(180,4626,4646)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:20+4 + assume {:print "$at(180,4666,4670)"} true; +L12: + + // $t35 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:28+3 + assume {:print "$at(180,4674,4677)"} true; + $t35 := 4; + assume $IsValid'u8'($t35); + + // $t36 := ==($t22, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:25+2 + $t36 := $IsEqual'u8'($t22, $t35); + + // if ($t36) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + if ($t36) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; +L16: + + // $t37 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; + $t37 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t37); + + // $t7 := string::utf8($t37) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:13+20 + call $t7 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(180,4693,4713)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:20+4 + assume {:print "$at(180,4733,4737)"} true; +L15: + + // $t38 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:28+4 + assume {:print "$at(180,4741,4745)"} true; + $t38 := 5; + assume $IsValid'u8'($t38); + + // $t39 := ==($t22, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:25+2 + $t39 := $IsEqual'u8'($t22, $t38); + + // if ($t39) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + if ($t39) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; +L19: + + // $t40 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; + $t40 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t40); + + // $t6 := string::utf8($t40) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:13+21 + call $t6 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(180,4761,4782)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:20+4 + assume {:print "$at(180,4802,4806)"} true; +L18: + + // $t41 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:28+4 + assume {:print "$at(180,4810,4814)"} true; + $t41 := 6; + assume $IsValid'u8'($t41); + + // $t42 := ==($t22, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:25+2 + $t42 := $IsEqual'u8'($t22, $t41); + + // if ($t42) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + if ($t42) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; +L22: + + // $t43 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; + $t43 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t43); + + // $t5 := string::utf8($t43) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:13+21 + call $t5 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(180,4830,4851)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:20+4 + assume {:print "$at(180,4871,4875)"} true; +L21: + + // $t44 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:28+7 + assume {:print "$at(180,4879,4886)"} true; + $t44 := 7; + assume $IsValid'u8'($t44); + + // $t45 := ==($t22, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:25+2 + $t45 := $IsEqual'u8'($t22, $t44); + + // if ($t45) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + if ($t45) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; +L25: + + // $t46 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; + $t46 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t46); + + // $t4 := string::utf8($t46) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:13+24 + call $t4 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(180,4902,4926)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:20+4 + assume {:print "$at(180,4946,4950)"} true; +L24: + + // $t47 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:28+11 + assume {:print "$at(180,4954,4965)"} true; + $t47 := 8; + assume $IsValid'u8'($t47); + + // $t48 := ==($t22, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:25+2 + $t48 := $IsEqual'u8'($t22, $t47); + + // if ($t48) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + if ($t48) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; +L28: + + // $t49 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; + $t49 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t49); + + // $t3 := string::utf8($t49) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:13+27 + call $t3 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(180,4981,5008)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:20+4 + assume {:print "$at(180,5028,5032)"} true; +L27: + + // $t50 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:28+6 + assume {:print "$at(180,5036,5042)"} true; + $t50 := 9; + assume $IsValid'u8'($t50); + + // $t51 := ==($t22, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:25+2 + $t51 := $IsEqual'u8'($t22, $t50); + + // if ($t51) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + if ($t51) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + assume {:print "$at(180,5024,5211)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; +L30: + + // $t52 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:44+13 + assume {:print "$at(180,5186,5199)"} true; + $t52 := 7; + assume $IsValid'u64'($t52); + + // $t53 := error::invalid_argument($t52) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:19+40 + call $t53 := $1_error_invalid_argument($t52); + if ($abort_flag) { + assume {:print "$at(180,5161,5201)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; + assume {:print "$track_abort(80,10):", $t53} $t53 == $t53; + + // $t14 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + $t14 := $t53; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; +L32: + + // $t54 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; + $t54 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t54); + + // $t3 := string::utf8($t54) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:13+67 + call $t3 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5058,5125)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; +L29: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + $t4 := $t3; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 +L8: + + // $t2 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + $t2 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 +L5: + + // $t55 := get_field.value($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:20+20 + assume {:print "$at(180,8623,8643)"} true; + $t55 := $t21->$value; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,0):", $t2} $t2 == $t2; + + // trace_return[1]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,1):", $t55} $t55 == $t55; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; +L33: + + // return ($t2, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $ret0 := $t2; + $ret1 := $t55; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 +L34: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun object_property_map::read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+428 +procedure {:timeLimit 80} $1_object_property_map_read$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: $1_string_String, $ret1: Vec (int)) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $1_string_String; + var $t11: $1_object_property_map_PropertyValue; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $1_object_property_map_PropertyMap; + var $t20: Table int ($1_object_property_map_PropertyValue); + var $t21: $1_object_property_map_PropertyValue; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: Vec (int); + var $t26: int; + var $t27: bool; + var $t28: Vec (int); + var $t29: int; + var $t30: bool; + var $t31: Vec (int); + var $t32: int; + var $t33: bool; + var $t34: Vec (int); + var $t35: int; + var $t36: bool; + var $t37: Vec (int); + var $t38: int; + var $t39: bool; + var $t40: Vec (int); + var $t41: int; + var $t42: bool; + var $t43: Vec (int); + var $t44: int; + var $t45: bool; + var $t46: Vec (int); + var $t47: int; + var $t48: bool; + var $t49: Vec (int); + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: Vec (int); + var $t55: Vec (int); + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$at(180,8222,8223)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$track_local(80,10,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:224:5+1 + assume {:print "$track_local(80,10,1):", $t1} $t1 == $t1; + + // $t13 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:225:23+30 + assume {:print "$at(180,8347,8377)"} true; + call $t13 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,8347,8377)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t15 := exists($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t15 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t13); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t16 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t16 := 1; + assume $IsValid'u64'($t16); + + // $t17 := error::not_found($t16) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t17 := $1_error_not_found($t16); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,10):", $t17} $t17 == $t17; + + // $t14 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t14 := $t17; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:78+6 + assume {:print "$at(180,8457,8463)"} true; +L2: + + // $t18 := object::object_address<#0>($t0) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:55+30 + assume {:print "$at(180,8434,8464)"} true; + call $t18 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,8434,8464)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t19 := get_global($t18) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:226:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t18); + } + if ($abort_flag) { + assume {:print "$at(180,8407,8420)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // $t20 := get_field.inner($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:49+19 + assume {:print "$at(180,8515,8534)"} true; + $t20 := $t19->$inner; + + // $t21 := simple_map::borrow($t20, $t1) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:30+44 + call $t21 := $1_simple_map_borrow'$1_string_String_$1_object_property_map_PropertyValue'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(180,8496,8540)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_local[property_value]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:227:13+14 + assume {:print "$track_local(80,10,11):", $t21} $t21 == $t21; + + // $t22 := get_field.type($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:228:41+19 + assume {:print "$at(180,8582,8601)"} true; + $t22 := $t21->$type; + + // trace_local[type#255]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:117:33+4 + assume {:print "$at(180,4366,4370)"} true; + assume {:print "$track_local(80,10,12):", $t22} $t22 == $t22; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:21+4 + assume {:print "$at(180,4406,4410)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t24 := ==($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:18+2 + $t24 := $IsEqual'u8'($t22, $t23); + + // if ($t24) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + if ($t24) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; +L4: + + // $t25 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:26+7 + assume {:print "$at(180,4439,4446)"} true; + $t25 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t25); + + // $t2 := string::utf8($t25) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:119:13+21 + call $t2 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(180,4426,4447)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:20+4 + assume {:print "$at(180,4467,4471)"} true; +L3: + + // $t26 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:28+2 + assume {:print "$at(180,4475,4477)"} true; + $t26 := 1; + assume $IsValid'u8'($t26); + + // $t27 := ==($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:25+2 + $t27 := $IsEqual'u8'($t22, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; +L7: + + // $t28 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:26+5 + assume {:print "$at(180,4506,4511)"} true; + $t28 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t28); + + // $t10 := string::utf8($t28) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:121:13+19 + call $t10 := $1_string_utf8($t28); + if ($abort_flag) { + assume {:print "$at(180,4493,4512)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:20+4 + assume {:print "$at(180,4532,4536)"} true; +L6: + + // $t29 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:28+3 + assume {:print "$at(180,4540,4543)"} true; + $t29 := 2; + assume $IsValid'u8'($t29); + + // $t30 := ==($t22, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:25+2 + $t30 := $IsEqual'u8'($t22, $t29); + + // if ($t30) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + if ($t30) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; +L10: + + // $t31 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:26+6 + assume {:print "$at(180,4572,4578)"} true; + $t31 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t31); + + // $t9 := string::utf8($t31) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:123:13+20 + call $t9 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(180,4559,4579)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:20+4 + assume {:print "$at(180,4599,4603)"} true; +L9: + + // $t32 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:28+3 + assume {:print "$at(180,4607,4610)"} true; + $t32 := 3; + assume $IsValid'u8'($t32); + + // $t33 := ==($t22, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:25+2 + $t33 := $IsEqual'u8'($t22, $t32); + + // if ($t33) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + if ($t33) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; +L13: + + // $t34 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:26+6 + assume {:print "$at(180,4639,4645)"} true; + $t34 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t34); + + // $t8 := string::utf8($t34) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:125:13+20 + call $t8 := $1_string_utf8($t34); + if ($abort_flag) { + assume {:print "$at(180,4626,4646)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:20+4 + assume {:print "$at(180,4666,4670)"} true; +L12: + + // $t35 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:28+3 + assume {:print "$at(180,4674,4677)"} true; + $t35 := 4; + assume $IsValid'u8'($t35); + + // $t36 := ==($t22, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:25+2 + $t36 := $IsEqual'u8'($t22, $t35); + + // if ($t36) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + if ($t36) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; +L16: + + // $t37 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:26+6 + assume {:print "$at(180,4706,4712)"} true; + $t37 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t37); + + // $t7 := string::utf8($t37) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:127:13+20 + call $t7 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(180,4693,4713)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:20+4 + assume {:print "$at(180,4733,4737)"} true; +L15: + + // $t38 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:28+4 + assume {:print "$at(180,4741,4745)"} true; + $t38 := 5; + assume $IsValid'u8'($t38); + + // $t39 := ==($t22, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:25+2 + $t39 := $IsEqual'u8'($t22, $t38); + + // if ($t39) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + if ($t39) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; +L19: + + // $t40 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:26+7 + assume {:print "$at(180,4774,4781)"} true; + $t40 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t40); + + // $t6 := string::utf8($t40) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:129:13+21 + call $t6 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(180,4761,4782)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:20+4 + assume {:print "$at(180,4802,4806)"} true; +L18: + + // $t41 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:28+4 + assume {:print "$at(180,4810,4814)"} true; + $t41 := 6; + assume $IsValid'u8'($t41); + + // $t42 := ==($t22, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:25+2 + $t42 := $IsEqual'u8'($t22, $t41); + + // if ($t42) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + if ($t42) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; +L22: + + // $t43 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:26+7 + assume {:print "$at(180,4843,4850)"} true; + $t43 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t43); + + // $t5 := string::utf8($t43) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:131:13+21 + call $t5 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(180,4830,4851)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:20+4 + assume {:print "$at(180,4871,4875)"} true; +L21: + + // $t44 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:28+7 + assume {:print "$at(180,4879,4886)"} true; + $t44 := 7; + assume $IsValid'u8'($t44); + + // $t45 := ==($t22, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:25+2 + $t45 := $IsEqual'u8'($t22, $t44); + + // if ($t45) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + if ($t45) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; +L25: + + // $t46 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:26+10 + assume {:print "$at(180,4915,4925)"} true; + $t46 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t46); + + // $t4 := string::utf8($t46) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:133:13+24 + call $t4 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(180,4902,4926)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:20+4 + assume {:print "$at(180,4946,4950)"} true; +L24: + + // $t47 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:28+11 + assume {:print "$at(180,4954,4965)"} true; + $t47 := 8; + assume $IsValid'u8'($t47); + + // $t48 := ==($t22, $t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:25+2 + $t48 := $IsEqual'u8'($t22, $t47); + + // if ($t48) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + if ($t48) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; +L28: + + // $t49 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:26+13 + assume {:print "$at(180,4994,5007)"} true; + $t49 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t49); + + // $t3 := string::utf8($t49) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:135:13+27 + call $t3 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(180,4981,5008)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:20+4 + assume {:print "$at(180,5028,5032)"} true; +L27: + + // $t50 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:28+6 + assume {:print "$at(180,5036,5042)"} true; + $t50 := 9; + assume $IsValid'u8'($t50); + + // $t51 := ==($t22, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:25+2 + $t51 := $IsEqual'u8'($t22, $t50); + + // if ($t51) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + if ($t51) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:136:16+187 + assume {:print "$at(180,5024,5211)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; +L30: + + // $t52 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:44+13 + assume {:print "$at(180,5186,5199)"} true; + $t52 := 7; + assume $IsValid'u64'($t52); + + // $t53 := error::invalid_argument($t52) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:19+40 + call $t53 := $1_error_invalid_argument($t52); + if ($abort_flag) { + assume {:print "$at(180,5161,5201)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + assume {:print "$at(180,5155,5201)"} true; + assume {:print "$track_abort(80,10):", $t53} $t53 == $t53; + + // $t14 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + $t14 := $t53; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:139:13+46 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; +L32: + + // $t54 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:26+53 + assume {:print "$at(180,5071,5124)"} true; + $t54 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t54); + + // $t3 := string::utf8($t54) on_abort goto L34 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:137:13+67 + call $t3 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5058,5125)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(80,10):", $t14} $t14 == $t14; + goto L34; + } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:134:16+269 + assume {:print "$at(180,4942,5211)"} true; +L29: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 + assume {:print "$at(180,4867,5211)"} true; + $t4 := $t3; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:132:16+344 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 + assume {:print "$at(180,4798,5211)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:130:16+413 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 + assume {:print "$at(180,4729,5211)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:128:16+482 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 + assume {:print "$at(180,4662,5211)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:126:16+549 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 + assume {:print "$at(180,4595,5211)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:124:16+616 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 + assume {:print "$at(180,4528,5211)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:122:16+683 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 + assume {:print "$at(180,4463,5211)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:120:16+748 +L8: + + // $t2 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 + assume {:print "$at(180,4394,5211)"} true; + $t2 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:118:9+817 +L5: + + // $t55 := get_field.value($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:20+20 + assume {:print "$at(180,8623,8643)"} true; + $t55 := $t21->$value; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,0):", $t2} $t2 == $t2; + + // trace_return[1]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:229:9+32 + assume {:print "$track_return(80,10,1):", $t55} $t55 == $t55; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; +L33: + + // return ($t2, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $ret0 := $t2; + $ret1 := $t55; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 +L34: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:230:5+1 + assume {:print "$at(180,8649,8650)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun object_property_map::burn [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+103 +procedure {:inline 1} $1_object_property_map_burn(_$t0: $1_object_property_map_MutatorRef) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_object_property_map_PropertyMap; + var $t3: int; + var $t0: $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+1 + assume {:print "$at(180,2871,2872)"} true; + assume {:print "$track_local(80,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:32+8 + assume {:print "$at(180,2958,2966)"} true; + $t1 := $t0->$self; + + // $t2 := move_from($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:9+9 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t1); + $1_object_property_map_PropertyMap_$memory := $ResourceRemove($1_object_property_map_PropertyMap_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(180,2935,2944)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,3):", $t3} $t3 == $t3; + goto L2; + } + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:9+32 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_property_map::burn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+103 +procedure {:timeLimit 80} $1_object_property_map_burn$verify(_$t0: $1_object_property_map_MutatorRef) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_object_property_map_PropertyMap; + var $t3: int; + var $t0: $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+1 + assume {:print "$at(180,2871,2872)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:81:5+1 + assume {:print "$track_local(80,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:32+8 + assume {:print "$at(180,2958,2966)"} true; + $t1 := $t0->$self; + + // $t2 := move_from($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:9+9 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t1); + $1_object_property_map_PropertyMap_$memory := $ResourceRemove($1_object_property_map_PropertyMap_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(180,2935,2944)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,3):", $t3} $t3 == $t3; + goto L2; + } + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:82:9+32 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:83:5+1 + assume {:print "$at(180,2973,2974)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_property_map::generate_mutator_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:203:5+144 +procedure {:inline 1} $1_object_property_map_generate_mutator_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_property_map_MutatorRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_object_property_map_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:203:5+1 + assume {:print "$at(180,7298,7299)"} true; + assume {:print "$track_local(80,6,0):", $t0} $t0 == $t0; + + // $t1 := object::address_from_constructor_ref($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:28+41 + assume {:print "$at(180,7393,7434)"} true; + call $t1 := $1_object_address_from_constructor_ref($t0); + if ($abort_flag) { + assume {:print "$at(180,7393,7434)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,6):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack object_property_map::MutatorRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:9+62 + $t3 := $1_object_property_map_MutatorRef($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:9+62 + assume {:print "$track_return(80,6,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun object_property_map::generate_mutator_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:203:5+144 +procedure {:timeLimit 80} $1_object_property_map_generate_mutator_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_property_map_MutatorRef) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_object_property_map_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:203:5+1 + assume {:print "$at(180,7298,7299)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:203:5+1 + assume {:print "$track_local(80,6,0):", $t0} $t0 == $t0; + + // $t1 := object::address_from_constructor_ref($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:28+41 + assume {:print "$at(180,7393,7434)"} true; + call $t1 := $1_object_address_from_constructor_ref($t0); + if ($abort_flag) { + assume {:print "$at(180,7393,7434)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(80,6):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack object_property_map::MutatorRef($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:9+62 + $t3 := $1_object_property_map_MutatorRef($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:204:9+62 + assume {:print "$track_return(80,6,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:205:5+1 + assume {:print "$at(180,7441,7442)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun object_property_map::contains_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+301 +procedure {:timeLimit 80} $1_object_property_map_contains_key$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_object_property_map_PropertyMap; + var $t9: Table int ($1_object_property_map_PropertyValue); + var $t10: bool; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+1 + assume {:print "$at(180,7466,7467)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+1 + assume {:print "$track_local(80,4,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:209:5+1 + assume {:print "$track_local(80,4,1):", $t1} $t1 == $t1; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:210:23+30 + assume {:print "$at(180,7583,7613)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,7583,7613)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,4):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t4 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,4):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,4):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:211:78+6 + assume {:print "$at(180,7693,7699)"} true; +L2: + + // $t7 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:211:55+30 + assume {:print "$at(180,7670,7700)"} true; + call $t7 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(180,7670,7700)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,4):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_global($t7) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:211:28+13 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_object_property_map_PropertyMap_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(180,7643,7656)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,4):", $t3} $t3 == $t3; + goto L4; + } + + // $t9 := get_field.inner($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:212:34+19 + assume {:print "$at(180,7736,7755)"} true; + $t9 := $t8->$inner; + + // $t10 := simple_map::contains_key($t9, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:212:9+50 + call $t10 := $1_simple_map_contains_key'$1_string_String_$1_object_property_map_PropertyValue'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(180,7711,7761)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(80,4):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:212:9+50 + assume {:print "$track_return(80,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:213:5+1 + assume {:print "$at(180,7766,7767)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:213:5+1 + assume {:print "$at(180,7766,7767)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:213:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:213:5+1 + assume {:print "$at(180,7766,7767)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_property_map::add_typed<#1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+212 +procedure {:inline 1} $1_object_property_map_add_typed'#1'(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: #1) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: $1_object_property_map_MutatorRef; + var $t14: int; + var $t15: $1_string_String; + var $t16: int; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: Vec (int); + var $t21: $1_string_String; + var $t22: bool; + var $t23: int; + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: bool; + var $t27: int; + var $t28: Vec (int); + var $t29: $1_string_String; + var $t30: bool; + var $t31: int; + var $t32: Vec (int); + var $t33: $1_string_String; + var $t34: bool; + var $t35: int; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t38: bool; + var $t39: int; + var $t40: Vec (int); + var $t41: $1_string_String; + var $t42: bool; + var $t43: int; + var $t44: Vec (int); + var $t45: $1_string_String; + var $t46: bool; + var $t47: int; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: bool; + var $t51: int; + var $t52: Vec (int); + var $t53: $1_string_String; + var $t54: bool; + var $t55: int; + var $t56: Vec (int); + var $t57: $1_string_String; + var $t58: bool; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: Vec (int); + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $Mutation ($1_object_property_map_PropertyMap); + var $t69: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t70: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: #1; + var $temp_0'#1': #1; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$at(180,11507,11508)"} true; + assume {:print "$track_local(80,1,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$track_local(80,1,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$track_local(80,1,2):", $t2} $t2 == $t2; + + // $t18 := type_info::type_name<#0>() on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:172:20+25 + assume {:print "$at(180,6280,6305)"} true; + call $t18 := $1_type_info_type_name'#1'(); + if ($abort_flag) { + assume {:print "$at(180,6280,6305)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_local[type#242]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,1,15):", $t18} $t18 == $t18; + + // $t20 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t20 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t22 := ==($t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t22 := $IsEqual'$1_string_String'($t18, $t21); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t3 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t23; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t24 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t24 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t26 := ==($t18, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t26 := $IsEqual'$1_string_String'($t18, $t25); + + // if ($t26) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t26) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t11 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t27; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t28 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t28 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t28); + + // $t29 := string::utf8($t28) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t29 := $1_string_utf8($t28); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t30 := ==($t18, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t30 := $IsEqual'$1_string_String'($t18, $t29); + + // if ($t30) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t30) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t31 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t31 := 2; + assume $IsValid'u8'($t31); + + // $t10 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t31; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t32 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t32 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t32); + + // $t33 := string::utf8($t32) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t33 := $1_string_utf8($t32); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t34 := ==($t18, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t34 := $IsEqual'$1_string_String'($t18, $t33); + + // if ($t34) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t34) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t35 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t35 := 3; + assume $IsValid'u8'($t35); + + // $t9 := $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t35; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t36 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t36 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t38 := ==($t18, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t38 := $IsEqual'$1_string_String'($t18, $t37); + + // if ($t38) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t38) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t39 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t39 := 4; + assume $IsValid'u8'($t39); + + // $t8 := $t39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t39; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t40 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t40 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t40); + + // $t41 := string::utf8($t40) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t41 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t42 := ==($t18, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t42 := $IsEqual'$1_string_String'($t18, $t41); + + // if ($t42) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t42) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t43 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t43 := 5; + assume $IsValid'u8'($t43); + + // $t7 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t43; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t44 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t44 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t44); + + // $t45 := string::utf8($t44) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t45 := $1_string_utf8($t44); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t46 := ==($t18, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t46 := $IsEqual'$1_string_String'($t18, $t45); + + // if ($t46) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t46) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t47 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t47 := 6; + assume $IsValid'u8'($t47); + + // $t6 := $t47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t47; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t48 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t48 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t48); + + // $t49 := string::utf8($t48) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t49 := $1_string_utf8($t48); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t50 := ==($t18, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t50 := $IsEqual'$1_string_String'($t18, $t49); + + // if ($t50) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t50) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t51 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t51 := 7; + assume $IsValid'u8'($t51); + + // $t5 := $t51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t51; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t52 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t52 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t52); + + // $t53 := string::utf8($t52) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t53 := $1_string_utf8($t52); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t54 := ==($t18, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t54 := $IsEqual'$1_string_String'($t18, $t53); + + // if ($t54) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t54) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t55 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t55 := 8; + assume $IsValid'u8'($t55); + + // $t4 := $t55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t55; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t56 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t56 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t56); + + // $t57 := string::utf8($t56) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t57 := $1_string_utf8($t56); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t58 := ==($t18, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t58 := $IsEqual'$1_string_String'($t18, $t57); + + // if ($t58) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t58) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t59 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t59 := 7; + assume $IsValid'u64'($t59); + + // $t60 := error::invalid_argument($t59) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t60 := $1_error_invalid_argument($t59); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_abort($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,1):", $t60} $t60 == $t60; + + // $t19 := move($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t19 := $t60; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L34; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t61 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t61 := 9; + assume $IsValid'u8'($t61); + + // $t4 := $t61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t61; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t3 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:309:13+4 + assume {:print "$at(180,11613,11617)"} true; + assume {:print "$track_local(80,1,14):", $t3} $t3 == $t3; + + // $t62 := bcs::to_bytes<#0>($t2) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:310:38+21 + assume {:print "$at(180,11690,11711)"} true; + call $t62 := $1_bcs_to_bytes'#1'($t2); + if ($abort_flag) { + assume {:print "$at(180,11690,11711)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_local[value#246]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:70+5 + assume {:print "$at(180,11790,11795)"} true; + assume {:print "$track_local(80,1,17):", $t62} $t62 == $t62; + + // trace_local[type#245]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:60+4 + assume {:print "$track_local(80,1,16):", $t3} $t3 == $t3; + + // trace_local[key#244]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:47+3 + assume {:print "$track_local(80,1,12):", $t1} $t1 == $t1; + + // trace_local[ref#243]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:29+3 + assume {:print "$track_local(80,1,13):", $t0} $t0 == $t0; + + // $t63 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:314:23+8 + assume {:print "$at(180,11854,11862)"} true; + $t63 := $t0->$self; + + // $t64 := exists($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t64 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t63); + + // if ($t64) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t64) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L30: + + // $t65 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t65 := 1; + assume $IsValid'u64'($t65); + + // $t66 := error::not_found($t65) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t66 := $1_error_not_found($t65); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_abort($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,1):", $t66} $t66 == $t66; + + // $t19 := move($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t19 := $t66; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+3 + assume {:print "$at(180,11923,11926)"} true; +L32: + + // $t67 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+8 + assume {:print "$at(180,11923,11931)"} true; + $t67 := $t0->$self; + + // $t68 := borrow_global($t67) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t67)) { + call $ExecFailureAbort(); + } else { + $t68 := $Mutation($Global($t67), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t67)); + } + if ($abort_flag) { + assume {:print "$at(180,11892,11909)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t69 := borrow_field.inner($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:25+23 + assume {:print "$at(180,11958,11981)"} true; + $t69 := $ChildMutation($t68, 0, $Dereference($t68)->$inner); + + // $t70 := pack object_property_map::PropertyValue($t3, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:55+29 + $t70 := $1_object_property_map_PropertyValue($t3, $t62); + + // simple_map::add($t69, $t1, $t70) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + call $t69 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t69, $t1, $t70); + if ($abort_flag) { + assume {:print "$at(180,11942,12018)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // write_back[Reference($t68).inner (simple_map::SimpleMap)]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $t68 := $UpdateMutation($t68, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t68), $Dereference($t69))); + + // write_back[object_property_map::PropertyMap@]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t68), + $Dereference($t68)); + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; +L33: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 +L34: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun object_property_map::add_typed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+212 +procedure {:timeLimit 80} $1_object_property_map_add_typed$verify(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: #0) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: $1_object_property_map_MutatorRef; + var $t14: int; + var $t15: $1_string_String; + var $t16: int; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: Vec (int); + var $t21: $1_string_String; + var $t22: bool; + var $t23: int; + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: bool; + var $t27: int; + var $t28: Vec (int); + var $t29: $1_string_String; + var $t30: bool; + var $t31: int; + var $t32: Vec (int); + var $t33: $1_string_String; + var $t34: bool; + var $t35: int; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t38: bool; + var $t39: int; + var $t40: Vec (int); + var $t41: $1_string_String; + var $t42: bool; + var $t43: int; + var $t44: Vec (int); + var $t45: $1_string_String; + var $t46: bool; + var $t47: int; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: bool; + var $t51: int; + var $t52: Vec (int); + var $t53: $1_string_String; + var $t54: bool; + var $t55: int; + var $t56: Vec (int); + var $t57: $1_string_String; + var $t58: bool; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: Vec (int); + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $Mutation ($1_object_property_map_PropertyMap); + var $t69: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t70: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$at(180,11507,11508)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume $IsValid'#0'($t2); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$track_local(80,1,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$track_local(80,1,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:308:5+1 + assume {:print "$track_local(80,1,2):", $t2} $t2 == $t2; + + // $t18 := type_info::type_name<#0>() on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:172:20+25 + assume {:print "$at(180,6280,6305)"} true; + call $t18 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(180,6280,6305)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_local[type#242]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,1,15):", $t18} $t18 == $t18; + + // $t20 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t20 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t20); + + // $t21 := string::utf8($t20) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t21 := $1_string_utf8($t20); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t22 := ==($t18, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t22 := $IsEqual'$1_string_String'($t18, $t21); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t23 := 0; + assume $IsValid'u8'($t23); + + // $t3 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t23; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t24 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t24 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t26 := ==($t18, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t26 := $IsEqual'$1_string_String'($t18, $t25); + + // if ($t26) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t26) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t27 := 1; + assume $IsValid'u8'($t27); + + // $t11 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t27; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t28 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t28 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t28); + + // $t29 := string::utf8($t28) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t29 := $1_string_utf8($t28); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t30 := ==($t18, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t30 := $IsEqual'$1_string_String'($t18, $t29); + + // if ($t30) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t30) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t31 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t31 := 2; + assume $IsValid'u8'($t31); + + // $t10 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t31; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t32 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t32 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t32); + + // $t33 := string::utf8($t32) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t33 := $1_string_utf8($t32); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t34 := ==($t18, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t34 := $IsEqual'$1_string_String'($t18, $t33); + + // if ($t34) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t34) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t35 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t35 := 3; + assume $IsValid'u8'($t35); + + // $t9 := $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t35; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t36 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t36 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t38 := ==($t18, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t38 := $IsEqual'$1_string_String'($t18, $t37); + + // if ($t38) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t38) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t39 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t39 := 4; + assume $IsValid'u8'($t39); + + // $t8 := $t39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t39; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t40 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t40 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t40); + + // $t41 := string::utf8($t40) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t41 := $1_string_utf8($t40); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t42 := ==($t18, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t42 := $IsEqual'$1_string_String'($t18, $t41); + + // if ($t42) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t42) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t43 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t43 := 5; + assume $IsValid'u8'($t43); + + // $t7 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t43; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t44 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t44 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t44); + + // $t45 := string::utf8($t44) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t45 := $1_string_utf8($t44); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t46 := ==($t18, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t46 := $IsEqual'$1_string_String'($t18, $t45); + + // if ($t46) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t46) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t47 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t47 := 6; + assume $IsValid'u8'($t47); + + // $t6 := $t47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t47; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t48 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t48 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t48); + + // $t49 := string::utf8($t48) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t49 := $1_string_utf8($t48); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t50 := ==($t18, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t50 := $IsEqual'$1_string_String'($t18, $t49); + + // if ($t50) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t50) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t51 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t51 := 7; + assume $IsValid'u8'($t51); + + // $t5 := $t51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t51; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t52 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t52 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t52); + + // $t53 := string::utf8($t52) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t53 := $1_string_utf8($t52); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t54 := ==($t18, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t54 := $IsEqual'$1_string_String'($t18, $t53); + + // if ($t54) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t54) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t55 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t55 := 8; + assume $IsValid'u8'($t55); + + // $t4 := $t55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t55; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t56 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t56 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t56); + + // $t57 := string::utf8($t56) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t57 := $1_string_utf8($t56); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t58 := ==($t18, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t58 := $IsEqual'$1_string_String'($t18, $t57); + + // if ($t58) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t58) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t59 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t59 := 7; + assume $IsValid'u64'($t59); + + // $t60 := error::invalid_argument($t59) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t60 := $1_error_invalid_argument($t59); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_abort($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,1):", $t60} $t60 == $t60; + + // $t19 := move($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t19 := $t60; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L34; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t61 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t61 := 9; + assume $IsValid'u8'($t61); + + // $t4 := $t61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t61; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t3 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:309:13+4 + assume {:print "$at(180,11613,11617)"} true; + assume {:print "$track_local(80,1,14):", $t3} $t3 == $t3; + + // $t62 := bcs::to_bytes<#0>($t2) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:310:38+21 + assume {:print "$at(180,11690,11711)"} true; + call $t62 := $1_bcs_to_bytes'#0'($t2); + if ($abort_flag) { + assume {:print "$at(180,11690,11711)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_local[value#246]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:70+5 + assume {:print "$at(180,11790,11795)"} true; + assume {:print "$track_local(80,1,17):", $t62} $t62 == $t62; + + // trace_local[type#245]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:60+4 + assume {:print "$track_local(80,1,16):", $t3} $t3 == $t3; + + // trace_local[key#244]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:47+3 + assume {:print "$track_local(80,1,12):", $t1} $t1 == $t1; + + // trace_local[ref#243]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:313:29+3 + assume {:print "$track_local(80,1,13):", $t0} $t0 == $t0; + + // $t63 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:314:23+8 + assume {:print "$at(180,11854,11862)"} true; + $t63 := $t0->$self; + + // $t64 := exists($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t64 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t63); + + // if ($t64) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t64) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L30: + + // $t65 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t65 := 1; + assume $IsValid'u64'($t65); + + // $t66 := error::not_found($t65) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t66 := $1_error_not_found($t65); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // trace_abort($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,1):", $t66} $t66 == $t66; + + // $t19 := move($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t19 := $t66; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+3 + assume {:print "$at(180,11923,11926)"} true; +L32: + + // $t67 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:59+8 + assume {:print "$at(180,11923,11931)"} true; + $t67 := $t0->$self; + + // $t68 := borrow_global($t67) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:315:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t67)) { + call $ExecFailureAbort(); + } else { + $t68 := $Mutation($Global($t67), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t67)); + } + if ($abort_flag) { + assume {:print "$at(180,11892,11909)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // $t69 := borrow_field.inner($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:25+23 + assume {:print "$at(180,11958,11981)"} true; + $t69 := $ChildMutation($t68, 0, $Dereference($t68)->$inner); + + // $t70 := pack object_property_map::PropertyValue($t3, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:55+29 + $t70 := $1_object_property_map_PropertyValue($t3, $t62); + + // simple_map::add($t69, $t1, $t70) on_abort goto L34 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + call $t69 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t69, $t1, $t70); + if ($abort_flag) { + assume {:print "$at(180,11942,12018)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(80,1):", $t19} $t19 == $t19; + goto L34; + } + + // write_back[Reference($t68).inner (simple_map::SimpleMap)]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $t68 := $UpdateMutation($t68, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t68), $Dereference($t69))); + + // write_back[object_property_map::PropertyMap@]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:316:9+76 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t68), + $Dereference($t68)); + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; +L33: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 +L34: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:311:5+1 + assume {:print "$at(180,11718,11719)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun object_property_map::assert_end_to_end_input [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:649:5+1028 +procedure {:timeLimit 80} $1_object_property_map_assert_end_to_end_input$verify(_$t0: $1_object_Object'$1_object_ObjectCore') returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_object_Object'$1_object_ObjectCore'; + var $t3: $1_string_String; + var $t4: $1_object_Object'$1_object_ObjectCore'; + var $t5: $1_string_String; + var $t6: $1_object_Object'$1_object_ObjectCore'; + var $t7: $1_string_String; + var $t8: $1_object_Object'$1_object_ObjectCore'; + var $t9: $1_string_String; + var $t10: $1_object_Object'$1_object_ObjectCore'; + var $t11: $1_object_Object'$1_object_ObjectCore'; + var $t12: $1_string_String; + var $t13: $1_object_Object'$1_object_ObjectCore'; + var $t14: $1_string_String; + var $t15: $1_object_Object'$1_object_ObjectCore'; + var $t16: $1_string_String; + var $t17: $1_object_Object'$1_object_ObjectCore'; + var $t18: $1_string_String; + var $t19: Vec (int); + var $t20: $1_string_String; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: Vec (int); + var $t31: $1_string_String; + var $t32: int; + var $t33: int; + var $t34: bool; + var $t35: int; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: Vec (int); + var $t43: $1_string_String; + var $t44: int; + var $t45: int; + var $t46: bool; + var $t47: int; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: int; + var $t51: int; + var $t52: bool; + var $t53: int; + var $t54: Vec (int); + var $t55: $1_string_String; + var $t56: int; + var $t57: int; + var $t58: bool; + var $t59: int; + var $t60: Vec (int); + var $t61: $1_string_String; + var $t62: Vec (int); + var $t63: Vec (int); + var $t64: bool; + var $t65: int; + var $t66: Vec (int); + var $t67: $1_string_String; + var $t68: $1_string_String; + var $t69: Vec (int); + var $t70: $1_string_String; + var $t71: bool; + var $t72: int; + var $t73: int; + var $t74: int; + var $t75: bool; + var $t76: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:649:5+1 + assume {:print "$at(180,27537,27538)"} true; + assume $IsValid'$1_object_Object'$1_object_ObjectCore''($t0); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:649:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:649:5+1 + assume {:print "$track_local(80,2,0):", $t0} $t0 == $t0; + + // $t19 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:50+7 + assume {:print "$at(180,27665,27672)"} true; + $t19 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t19); + + // $t20 := string::utf8($t19) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:37+21 + call $t20 := $1_string_utf8($t19); + if ($abort_flag) { + assume {:print "$at(180,27652,27673)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t22 := object_property_map::read_bool($t0, $t20) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:17+42 + call $t22 := $1_object_property_map_read_bool'$1_object_ObjectCore'($t0, $t20); + if ($abort_flag) { + assume {:print "$at(180,27632,27674)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 + assume {:print "$at(180,27624,27678)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:61+1 +L0: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:61+1 + assume {:print "$at(180,27676,27677)"} true; + $t23 := 0; + assume $IsValid'u64'($t23); + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 + assume {:print "$at(180,27624,27678)"} true; + assume {:print "$track_abort(80,2):", $t23} $t23 == $t23; + + // $t21 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 + $t21 := $t23; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:650:9+54 + goto L31; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:25+7 + assume {:print "$at(180,27704,27711)"} true; +L2: + + // $t24 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:48+5 + assume {:print "$at(180,27727,27732)"} true; + $t24 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:35+19 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(180,27714,27733)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t26 := object_property_map::read_u8($t0, $t25) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:17+38 + call $t26 := $1_object_property_map_read_u8'$1_object_ObjectCore'($t0, $t25); + if ($abort_flag) { + assume {:print "$at(180,27696,27734)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t27 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:59+4 + $t27 := 18; + assume $IsValid'u8'($t27); + + // $t28 := ==($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:56+2 + $t28 := $IsEqual'u8'($t26, $t27); + + // if ($t28) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 + if ($t28) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 + assume {:print "$at(180,27688,27746)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:65+1 +L3: + + // $t29 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:65+1 + assume {:print "$at(180,27744,27745)"} true; + $t29 := 1; + assume $IsValid'u64'($t29); + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 + assume {:print "$at(180,27688,27746)"} true; + assume {:print "$track_abort(80,2):", $t29} $t29 == $t29; + + // $t21 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 + $t21 := $t29; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:651:9+58 + goto L31; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:26+7 + assume {:print "$at(180,27773,27780)"} true; +L5: + + // $t30 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:49+6 + assume {:print "$at(180,27796,27802)"} true; + $t30 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t30); + + // $t31 := string::utf8($t30) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:36+20 + call $t31 := $1_string_utf8($t30); + if ($abort_flag) { + assume {:print "$at(180,27783,27803)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t32 := object_property_map::read_u16($t0, $t31) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:17+40 + call $t32 := $1_object_property_map_read_u16'$1_object_ObjectCore'($t0, $t31); + if ($abort_flag) { + assume {:print "$at(180,27764,27804)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t33 := 4660 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:61+6 + $t33 := 4660; + assume $IsValid'u16'($t33); + + // $t34 := ==($t32, $t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:58+2 + $t34 := $IsEqual'u16'($t32, $t33); + + // if ($t34) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 + if ($t34) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 + assume {:print "$at(180,27756,27818)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:69+1 +L6: + + // $t35 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:69+1 + assume {:print "$at(180,27816,27817)"} true; + $t35 := 2; + assume $IsValid'u64'($t35); + + // trace_abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 + assume {:print "$at(180,27756,27818)"} true; + assume {:print "$track_abort(80,2):", $t35} $t35 == $t35; + + // $t21 := move($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 + $t21 := $t35; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:652:9+62 + goto L31; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:26+7 + assume {:print "$at(180,27845,27852)"} true; +L8: + + // $t36 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:49+6 + assume {:print "$at(180,27868,27874)"} true; + $t36 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:36+20 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(180,27855,27875)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t38 := object_property_map::read_u32($t0, $t37) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:17+40 + call $t38 := $1_object_property_map_read_u32'$1_object_ObjectCore'($t0, $t37); + if ($abort_flag) { + assume {:print "$at(180,27836,27876)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t39 := 305419896 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:61+10 + $t39 := 305419896; + assume $IsValid'u32'($t39); + + // $t40 := ==($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:58+2 + $t40 := $IsEqual'u32'($t38, $t39); + + // if ($t40) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 + if ($t40) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 + assume {:print "$at(180,27828,27894)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:73+1 +L9: + + // $t41 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:73+1 + assume {:print "$at(180,27892,27893)"} true; + $t41 := 3; + assume $IsValid'u64'($t41); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 + assume {:print "$at(180,27828,27894)"} true; + assume {:print "$track_abort(80,2):", $t41} $t41 == $t41; + + // $t21 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 + $t21 := $t41; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:653:9+66 + goto L31; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:26+7 + assume {:print "$at(180,27921,27928)"} true; +L11: + + // $t42 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:49+6 + assume {:print "$at(180,27944,27950)"} true; + $t42 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t42); + + // $t43 := string::utf8($t42) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:36+20 + call $t43 := $1_string_utf8($t42); + if ($abort_flag) { + assume {:print "$at(180,27931,27951)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t44 := object_property_map::read_u64($t0, $t43) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:17+40 + call $t44 := $1_object_property_map_read_u64'$1_object_ObjectCore'($t0, $t43); + if ($abort_flag) { + assume {:print "$at(180,27912,27952)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t45 := 1311768465173141112 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:61+18 + $t45 := 1311768465173141112; + assume $IsValid'u64'($t45); + + // $t46 := ==($t44, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:58+2 + $t46 := $IsEqual'u64'($t44, $t45); + + // if ($t46) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 + if ($t46) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 + assume {:print "$at(180,27904,27978)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:81+1 +L12: + + // $t47 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:81+1 + assume {:print "$at(180,27976,27977)"} true; + $t47 := 4; + assume $IsValid'u64'($t47); + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 + assume {:print "$at(180,27904,27978)"} true; + assume {:print "$track_abort(80,2):", $t47} $t47 == $t47; + + // $t21 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 + $t21 := $t47; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:654:9+74 + goto L31; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:27+7 + assume {:print "$at(180,28006,28013)"} true; +L14: + + // $t48 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:50+7 + assume {:print "$at(180,28029,28036)"} true; + $t48 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t48); + + // $t49 := string::utf8($t48) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:37+21 + call $t49 := $1_string_utf8($t48); + if ($abort_flag) { + assume {:print "$at(180,28016,28037)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t50 := object_property_map::read_u128($t0, $t49) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:17+42 + call $t50 := $1_object_property_map_read_u128'$1_object_ObjectCore'($t0, $t49); + if ($abort_flag) { + assume {:print "$at(180,27996,28038)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t51 := 24197857161011715162171839636988778104 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:63+34 + $t51 := 24197857161011715162171839636988778104; + assume $IsValid'u128'($t51); + + // $t52 := ==($t50, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:60+2 + $t52 := $IsEqual'u128'($t50, $t51); + + // if ($t52) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 + if ($t52) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 +L16: + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 + assume {:print "$at(180,27988,28080)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:99+1 +L15: + + // $t53 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:99+1 + assume {:print "$at(180,28078,28079)"} true; + $t53 := 5; + assume $IsValid'u64'($t53); + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 + assume {:print "$at(180,27988,28080)"} true; + assume {:print "$track_abort(80,2):", $t53} $t53 == $t53; + + // $t21 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 + $t21 := $t53; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:655:9+92 + goto L31; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:658:17+7 + assume {:print "$at(180,28138,28145)"} true; +L17: + + // $t54 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:659:31+7 + assume {:print "$at(180,28177,28184)"} true; + $t54 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t54); + + // $t55 := string::utf8($t54) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:659:18+21 + call $t55 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,28164,28185)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t56 := object_property_map::read_u256($t0, $t55) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:657:13+88 + assume {:print "$at(180,28111,28199)"} true; + call $t56 := $1_object_property_map_read_u256'$1_object_ObjectCore'($t0, $t55); + if ($abort_flag) { + assume {:print "$at(180,28111,28199)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t57 := 8234104109163846782070252339365257009018342705797375773105269991143923537528 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:660:18+66 + assume {:print "$at(180,28203,28269)"} true; + $t57 := 8234104109163846782070252339365257009018342705797375773105269991143923537528; + assume $IsValid'u256'($t57); + + // $t58 := ==($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:660:15+2 + $t58 := $IsEqual'u256'($t56, $t57); + + // if ($t58) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 + assume {:print "$at(180,28090,28294)"} true; + if ($t58) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 +L19: + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 + assume {:print "$at(180,28090,28294)"} true; + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:661:13+1 + assume {:print "$at(180,28283,28284)"} true; +L18: + + // $t59 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:661:13+1 + assume {:print "$at(180,28283,28284)"} true; + $t59 := 6; + assume $IsValid'u64'($t59); + + // trace_abort($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 + assume {:print "$at(180,28090,28294)"} true; + assume {:print "$track_abort(80,2):", $t59} $t59 == $t59; + + // $t21 := move($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 + $t21 := $t59; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:656:9+204 + goto L31; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:28+7 + assume {:print "$at(180,28323,28330)"} true; +L20: + + // $t60 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:51+13 + assume {:print "$at(180,28346,28359)"} true; + $t60 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t60); + + // $t61 := string::utf8($t60) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:38+27 + call $t61 := $1_string_utf8($t60); + if ($abort_flag) { + assume {:print "$at(180,28333,28360)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t62 := object_property_map::read_bytes($t0, $t61) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:17+49 + call $t62 := $1_object_property_map_read_bytes'$1_object_ObjectCore'($t0, $t61); + if ($abort_flag) { + assume {:print "$at(180,28312,28361)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t63 := [1] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:70+12 + $t63 := MakeVec1(1); + assume $IsValid'vec'u8''($t63); + + // $t64 := ==($t62, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:67+2 + $t64 := $IsEqual'vec'u8''($t62, $t63); + + // if ($t64) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 + if ($t64) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 +L22: + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 + assume {:print "$at(180,28304,28381)"} true; + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:84+1 +L21: + + // $t65 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:84+1 + assume {:print "$at(180,28379,28380)"} true; + $t65 := 7; + assume $IsValid'u64'($t65); + + // trace_abort($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 + assume {:print "$at(180,28304,28381)"} true; + assume {:print "$track_abort(80,2):", $t65} $t65 == $t65; + + // $t21 := move($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 + $t21 := $t65; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:663:9+77 + goto L31; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:29+7 + assume {:print "$at(180,28411,28418)"} true; +L23: + + // $t66 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:52+53 + assume {:print "$at(180,28434,28487)"} true; + $t66 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t66); + + // $t67 := string::utf8($t66) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:39+67 + call $t67 := $1_string_utf8($t66); + if ($abort_flag) { + assume {:print "$at(180,28421,28488)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t68 := object_property_map::read_string($t0, $t67) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:17+90 + call $t68 := $1_object_property_map_read_string'$1_object_ObjectCore'($t0, $t67); + if ($abort_flag) { + assume {:print "$at(180,28399,28489)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t69 := [97] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:124+4 + $t69 := MakeVec1(97); + assume $IsValid'vec'u8''($t69); + + // $t70 := string::utf8($t69) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:111+18 + call $t70 := $1_string_utf8($t69); + if ($abort_flag) { + assume {:print "$at(180,28493,28511)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t71 := ==($t68, $t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:108+2 + $t71 := $IsEqual'$1_string_String'($t68, $t70); + + // if ($t71) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 + if ($t71) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 +L25: + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 + assume {:print "$at(180,28391,28515)"} true; + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:131+1 +L24: + + // $t72 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:131+1 + assume {:print "$at(180,28513,28514)"} true; + $t72 := 8; + assume $IsValid'u64'($t72); + + // trace_abort($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 + assume {:print "$at(180,28391,28515)"} true; + assume {:print "$track_abort(80,2):", $t72} $t72 == $t72; + + // $t21 := move($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 + $t21 := $t72; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:664:9+124 + goto L31; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:24+7 + assume {:print "$at(180,28541,28548)"} true; +L26: + + // $t73 := object_property_map::length($t0) on_abort goto L31 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:17+15 + assume {:print "$at(180,28534,28549)"} true; + call $t73 := $1_object_property_map_length'$1_object_ObjectCore'($t0); + if ($abort_flag) { + assume {:print "$at(180,28534,28549)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(80,2):", $t21} $t21 == $t21; + goto L31; + } + + // $t74 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:36+1 + $t74 := 9; + assume $IsValid'u64'($t74); + + // $t75 := ==($t73, $t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:33+2 + $t75 := $IsEqual'u64'($t73, $t74); + + // if ($t75) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 + if ($t75) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 + assume {:print "$at(180,28526,28558)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:39+1 +L27: + + // $t76 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:39+1 + assume {:print "$at(180,28556,28557)"} true; + $t76 := 9; + assume $IsValid'u64'($t76); + + // trace_abort($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 + assume {:print "$at(180,28526,28558)"} true; + assume {:print "$track_abort(80,2):", $t76} $t76 == $t76; + + // $t21 := move($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 + $t21 := $t76; + + // goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:9+32 + goto L31; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:666:41+1 +L29: + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:667:5+1 + assume {:print "$at(180,28564,28565)"} true; +L30: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:667:5+1 + assume {:print "$at(180,28564,28565)"} true; + return; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:667:5+1 +L31: + + // abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:667:5+1 + assume {:print "$at(180,28564,28565)"} true; + $abort_code := $t21; + $abort_flag := true; + return; + +} + +// fun object_property_map::extend [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+168 +procedure {:timeLimit 80} $1_object_property_map_extend$verify(_$t0: $1_object_ExtendRef, _$t1: $1_object_property_map_PropertyMap) returns () +{ + // declare local variables + var $t2: $signer; + var $t3: $signer; + var $t4: int; + var $t0: $1_object_ExtendRef; + var $t1: $1_object_property_map_PropertyMap; + var $temp_0'$1_object_ExtendRef': $1_object_ExtendRef; + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+1 + assume {:print "$at(180,2659,2660)"} true; + assume $IsValid'$1_object_ExtendRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+1 + assume $IsValid'$1_object_property_map_PropertyMap'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+1 + assume {:print "$track_local(80,5,0):", $t0} $t0 == $t0; + + // trace_local[container]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:75:5+1 + assume {:print "$track_local(80,5,1):", $t1} $t1 == $t1; + + // $t3 := object::generate_signer_for_extending($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:76:22+42 + assume {:print "$at(180,2741,2783)"} true; + call $t3 := $1_object_generate_signer_for_extending($t0); + if ($abort_flag) { + assume {:print "$at(180,2741,2783)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_local[signer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:76:13+6 + assume {:print "$track_local(80,5,2):", $t3} $t3 == $t3; + + // move_to($t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:77:9+7 + assume {:print "$at(180,2793,2800)"} true; + if ($ResourceExists($1_object_property_map_PropertyMap_$memory, $t3->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $t3->$addr, $t1); + } + if ($abort_flag) { + assume {:print "$at(180,2793,2800)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(80,5):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:78:5+1 + assume {:print "$at(180,2826,2827)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:78:5+1 + assume {:print "$at(180,2826,2827)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:78:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:78:5+1 + assume {:print "$at(180,2826,2827)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object_property_map::prepare_input [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1181 +procedure {:inline 1} $1_object_property_map_prepare_input(_$t0: Vec ($1_string_String), _$t1: Vec ($1_string_String), _$t2: Vec (Vec (int))) returns ($ret0: $1_object_property_map_PropertyMap) +{ + // declare local variables + var $t3: int; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: $Mutation (Table int ($1_object_property_map_PropertyValue)); + 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: Table int ($1_object_property_map_PropertyValue); + var $t17: $1_string_String; + var $t18: int; + var $t19: int; + var $t20: $1_string_String; + var $t21: int; + var $t22: Vec (int); + var $t23: Vec (int); + var $t24: Vec ($1_string_String); + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: Vec (Vec (int)); + var $t32: int; + var $t33: bool; + var $t34: int; + var $t35: int; + var $t36: Vec ($1_string_String); + var $t37: int; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: Vec ($1_string_String); + var $t42: bool; + var $t43: bool; + var $t44: $1_string_String; + var $t45: int; + var $t46: int; + var $t47: bool; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: bool; + var $t53: int; + var $t54: Vec (int); + var $t55: $1_string_String; + var $t56: bool; + var $t57: int; + var $t58: Vec (int); + var $t59: $1_string_String; + var $t60: bool; + var $t61: int; + var $t62: Vec (int); + var $t63: $1_string_String; + var $t64: bool; + var $t65: int; + var $t66: Vec (int); + var $t67: $1_string_String; + var $t68: bool; + var $t69: int; + var $t70: Vec (int); + var $t71: $1_string_String; + var $t72: bool; + var $t73: int; + var $t74: Vec (int); + var $t75: $1_string_String; + var $t76: bool; + var $t77: int; + var $t78: Vec (int); + var $t79: $1_string_String; + var $t80: bool; + var $t81: int; + var $t82: Vec (int); + var $t83: $1_string_String; + var $t84: bool; + var $t85: int; + var $t86: Vec (int); + var $t87: $1_string_String; + var $t88: bool; + var $t89: int; + var $t90: int; + var $t91: bool; + var $t92: bool; + var $t93: int; + var $t94: bool; + var $t95: int; + var $t96: int; + var $t97: bool; + var $t98: int; + var $t99: int; + var $t100: bool; + var $t101: int; + var $t102: int; + var $t103: bool; + var $t104: int; + var $t105: int; + var $t106: bool; + var $t107: int; + var $t108: int; + var $t109: bool; + var $t110: int; + var $t111: int; + var $t112: bool; + var $t113: int; + var $t114: int; + var $t115: bool; + var $t116: int; + var $t117: bool; + var $t118: $1_string_String; + var $t119: $1_object_property_map_PropertyValue; + var $t120: $Mutation (Vec ($1_string_String)); + var $t121: $Mutation (Vec (Vec (int))); + var $t122: $Mutation (Vec ($1_string_String)); + var $t123: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t124: int; + var $t125: int; + var $t126: int; + var $t127: int; + var $t128: int; + var $t129: int; + var $t130: Table int ($1_object_property_map_PropertyValue); + var $t131: $1_object_property_map_PropertyMap; + var $t0: Vec ($1_string_String); + var $t1: Vec ($1_string_String); + var $t2: Vec (Vec (int)); + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue'': Table int ($1_object_property_map_PropertyValue); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'u8'': Vec (int); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$at(180,3074,3075)"} true; + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // $t24 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:37+5 + assume {:print "$at(180,3254,3259)"} true; + $t24 := $t0; + + // $t25 := vector::length($t24) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:22+21 + call $t25 := $1_vector_length'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(180,3239,3260)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_local[length]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:13+6 + assume {:print "$track_local(80,9,18):", $t25} $t25 == $t25; + + // $t27 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:27+21 + assume {:print "$at(180,3288,3309)"} true; + $t27 := 1000; + assume $IsValid'u64'($t27); + + // $t28 := <=($t25, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:24+2 + call $t28 := $Le($t25, $t27); + + // if ($t28) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + if ($t28) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + assume {:print "$at(180,3270,3357)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:74+20 +L0: + + // $t29 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:74+20 + assume {:print "$at(180,3335,3355)"} true; + $t29 := 3; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_argument($t29) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:50+45 + call $t30 := $1_error_invalid_argument($t29); + if ($abort_flag) { + assume {:print "$at(180,3311,3356)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + assume {:print "$at(180,3270,3357)"} true; + assume {:print "$track_abort(80,9):", $t30} $t30 == $t30; + + // $t26 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + $t26 := $t30; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + goto L70; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:17+6 + assume {:print "$at(180,3375,3381)"} true; +L2: + + // $t31 := copy($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:42+7 + assume {:print "$at(180,3400,3407)"} true; + $t31 := $t2; + + // $t32 := vector::length>($t31) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:27+23 + call $t32 := $1_vector_length'vec'u8''($t31); + if ($abort_flag) { + assume {:print "$at(180,3385,3408)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t33 := ==($t25, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:24+2 + $t33 := $IsEqual'u64'($t25, $t32); + + // if ($t33) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + if ($t33) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + assume {:print "$at(180,3367,3461)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:76+25 +L3: + + // $t34 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:76+25 + assume {:print "$at(180,3434,3459)"} true; + $t34 := 4; + assume $IsValid'u64'($t34); + + // $t35 := error::invalid_argument($t34) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:52+50 + call $t35 := $1_error_invalid_argument($t34); + if ($abort_flag) { + assume {:print "$at(180,3410,3460)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + assume {:print "$at(180,3367,3461)"} true; + assume {:print "$track_abort(80,9):", $t35} $t35 == $t35; + + // $t26 := move($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + $t26 := $t35; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + goto L70; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:17+6 + assume {:print "$at(180,3479,3485)"} true; +L5: + + // $t36 := copy($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:42+6 + assume {:print "$at(180,3504,3510)"} true; + $t36 := $t1; + + // $t37 := vector::length($t36) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:27+22 + call $t37 := $1_vector_length'$1_string_String'($t36); + if ($abort_flag) { + assume {:print "$at(180,3489,3511)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t38 := ==($t25, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:24+2 + $t38 := $IsEqual'u64'($t25, $t37); + + // if ($t38) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + if ($t38) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + assume {:print "$at(180,3471,3563)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:75+24 +L6: + + // $t39 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:75+24 + assume {:print "$at(180,3537,3561)"} true; + $t39 := 5; + assume $IsValid'u64'($t39); + + // $t40 := error::invalid_argument($t39) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:51+49 + call $t40 := $1_error_invalid_argument($t39); + if ($abort_flag) { + assume {:print "$at(180,3513,3562)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + assume {:print "$at(180,3471,3563)"} true; + assume {:print "$track_abort(80,9):", $t40} $t40 == $t40; + + // $t26 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + $t26 := $t40; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + goto L70; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:25+43 + assume {:print "$at(180,3590,3633)"} true; +L8: + + // $t16 := simple_map::create() on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:25+43 + assume {:print "$at(180,3590,3633)"} true; + call $t16 := $1_simple_map_create'$1_string_String_$1_object_property_map_PropertyValue'(); + if ($abort_flag) { + assume {:print "$at(180,3590,3633)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:13+9 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // label L67 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$at(180,3668,3673)"} true; +L67: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$at(180,3668,3673)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'vec'u8'''($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''($t16); + + // $t41 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t41; + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t41); + + // $t42 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t42; + + // assume WellFormed($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t42); + + // $t43 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t43; + + // assume WellFormed($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t43); + + // $t44 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t44; + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t44); + + // $t45 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t45; + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t45); + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t46; + + // assume WellFormed($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t46); + + // $t47 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t47; + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t47); + + // $t48 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t48; + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t48); + + // $t49 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t49; + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t49); + + // $t50 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t50; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t50); + + // $t51 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t51; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t51); + + // $t52 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t52; + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t52); + + // $t53 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t53; + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t53); + + // $t54 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t54; + + // assume WellFormed($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t54); + + // $t55 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t55; + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t55); + + // $t56 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t56; + + // assume WellFormed($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t56); + + // $t57 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t57; + + // assume WellFormed($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t57); + + // $t58 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t58; + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t58); + + // $t59 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t59; + + // assume WellFormed($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t59); + + // $t60 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t60; + + // assume WellFormed($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t60); + + // $t61 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t61; + + // assume WellFormed($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t61); + + // $t62 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t62; + + // assume WellFormed($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t62); + + // $t63 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t63; + + // assume WellFormed($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t63); + + // $t64 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t64; + + // assume WellFormed($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t64); + + // $t65 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t65; + + // assume WellFormed($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t65); + + // $t66 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t66; + + // assume WellFormed($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t66); + + // $t67 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t67; + + // assume WellFormed($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t67); + + // $t68 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t68; + + // assume WellFormed($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t68); + + // $t69 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t69; + + // assume WellFormed($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t69); + + // $t70 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t70; + + // assume WellFormed($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t70); + + // $t71 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t71; + + // assume WellFormed($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t71); + + // $t72 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t72; + + // assume WellFormed($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t72); + + // $t73 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t73; + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t73); + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t74; + + // assume WellFormed($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t74); + + // $t75 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t75; + + // assume WellFormed($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t75); + + // $t76 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t76; + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t76); + + // $t77 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t77; + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t77); + + // $t78 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t78; + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t78); + + // $t79 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t79; + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t79); + + // $t80 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t80; + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t80); + + // $t81 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t81; + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t81); + + // $t82 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t82; + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t82); + + // $t83 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t83; + + // assume WellFormed($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t83); + + // $t84 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t84; + + // assume WellFormed($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t84); + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t85; + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t85); + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t86; + + // assume WellFormed($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t86); + + // $t87 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t87; + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t87); + + // $t88 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t88; + + // assume WellFormed($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t88); + + // $t89 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t89; + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t89); + + // $t90 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t90; + + // assume WellFormed($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t90); + + // $t91 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t91; + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t91); + + // $t92 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t92; + + // assume WellFormed($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t92); + + // $t93 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t93; + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t93); + + // $t94 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t94; + + // assume WellFormed($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t94); + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t95; + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t95); + + // $t96 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t96; + + // assume WellFormed($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t96); + + // $t97 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t97; + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t97); + + // $t98 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t98; + + // assume WellFormed($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u16'($t98); + + // $t99 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t99; + + // assume WellFormed($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t99); + + // $t100 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t100; + + // assume WellFormed($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t100); + + // $t101 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t101; + + // assume WellFormed($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u32'($t101); + + // $t102 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t102; + + // assume WellFormed($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t102); + + // $t103 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t103; + + // assume WellFormed($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t103); + + // $t104 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t104; + + // assume WellFormed($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t104); + + // $t105 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t105; + + // assume WellFormed($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t105); + + // $t106 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t106; + + // assume WellFormed($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t106); + + // $t107 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t107; + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u128'($t107); + + // $t108 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t108; + + // assume WellFormed($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t108); + + // $t109 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t109; + + // assume WellFormed($t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t109); + + // $t110 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t110; + + // assume WellFormed($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u256'($t110); + + // $t111 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t111; + + // assume WellFormed($t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t111); + + // $t112 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t112; + + // assume WellFormed($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t112); + + // $t113 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t113; + + // assume WellFormed($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'address'($t113); + + // $t114 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t114; + + // assume WellFormed($t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t114); + + // $t115 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t115; + + // assume WellFormed($t115) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t115); + + // $t116 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t116; + + // assume WellFormed($t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t116); + + // $t117 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t117; + + // assume WellFormed($t117) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t117); + + // $t118 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t118; + + // assume WellFormed($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t118); + + // $t119 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t119; + + // assume WellFormed($t119) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_object_property_map_PropertyValue'($t119); + + // $t120 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t120; + + // assume WellFormed($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($Dereference($t120)); + + // $t121 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t121; + + // assume WellFormed($t121) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'vec'u8'''($Dereference($t121)); + + // $t122 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t122; + + // assume WellFormed($t122) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($Dereference($t122)); + + // $t123 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t123; + + // assume WellFormed($t123) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''($Dereference($t123)); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$info(): enter loop, variable(s) keys, types, values, container havocked and reassigned"} true; + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume !$abort_flag; + + // $t41 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + $t41 := $t0; + + // $t42 := vector::is_empty($t41) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:17+23 + call $t42 := $1_vector_is_empty'$1_string_String'($t41); + if ($abort_flag) { + assume {:print "$at(180,3651,3674)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t43 := !($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:16+1 + call $t43 := $Not($t42); + + // if ($t43) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:9+563 + if ($t43) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:9+563 +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:40+9 + assume {:print "$at(180,3717,3726)"} true; +L11: + + // $t120 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:40+9 + assume {:print "$at(180,3717,3726)"} true; + $t120 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t44 := vector::pop_back($t120) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + call $t44,$t120 := $1_vector_pop_back'$1_string_String'($t120); + if ($abort_flag) { + assume {:print "$at(180,3700,3727)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t0)@]($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + $t0 := $Dereference($t120); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[key]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:17+3 + assume {:print "$track_local(80,9,17):", $t44} $t44 == $t44; + + // $t45 := string::length($t44) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:17+20 + assume {:print "$at(180,3766,3786)"} true; + call $t45 := $1_string_length($t44); + if ($abort_flag) { + assume {:print "$at(180,3766,3786)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t46 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:41+24 + $t46 := 128; + assume $IsValid'u64'($t46); + + // $t47 := <=($t45, $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:38+2 + call $t47 := $Le($t45, $t46); + + // if ($t47) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + if ($t47) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:41+26 + assume {:print "$at(180,3856,3882)"} true; +L12: + + // $t124 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:41+26 + assume {:print "$at(180,3856,3882)"} true; + $t124 := 8; + assume $IsValid'u64'($t124); + + // $t125 := error::invalid_argument($t124) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:17+51 + call $t125 := $1_error_invalid_argument($t124); + if ($abort_flag) { + assume {:print "$at(180,3832,3883)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t125) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + assume {:print "$track_abort(80,9):", $t125} $t125 == $t125; + + // $t26 := move($t125) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + $t26 := $t125; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + goto L70; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:42+11 + assume {:print "$at(180,3942,3953)"} true; +L14: + + // $t121 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:42+11 + assume {:print "$at(180,3942,3953)"} true; + $t121 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t48 := vector::pop_back>($t121) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + call $t48,$t121 := $1_vector_pop_back'vec'u8''($t121); + if ($abort_flag) { + assume {:print "$at(180,3925,3954)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t2)@]($t121) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + $t2 := $Dereference($t121); + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // trace_local[value]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:17+5 + assume {:print "$track_local(80,9,22):", $t48} $t48 == $t48; + + // $t122 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:41+10 + assume {:print "$at(180,3996,4006)"} true; + $t122 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t49 := vector::pop_back($t122) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + call $t49,$t122 := $1_vector_pop_back'$1_string_String'($t122); + if ($abort_flag) { + assume {:print "$at(180,3979,4007)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t1)@]($t122) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + $t1 := $Dereference($t122); + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[type#251]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,9,20):", $t49} $t49 == $t49; + + // $t50 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t50 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t52 := ==($t49, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t52 := $IsEqual'$1_string_String'($t49, $t51); + + // if ($t52) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t52) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L16: + + // $t53 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t53 := 0; + assume $IsValid'u8'($t53); + + // $t3 := $t53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t53; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L15: + + // $t54 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t54 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t54); + + // $t55 := string::utf8($t54) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t55 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t56 := ==($t49, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t56 := $IsEqual'$1_string_String'($t49, $t55); + + // if ($t56) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t56) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L19: + + // $t57 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t57 := 1; + assume $IsValid'u8'($t57); + + // $t15 := $t57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t15 := $t57; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L18: + + // $t58 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t58 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t58); + + // $t59 := string::utf8($t58) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t59 := $1_string_utf8($t58); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t60 := ==($t49, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t60 := $IsEqual'$1_string_String'($t49, $t59); + + // if ($t60) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t60) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L22: + + // $t61 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t61 := 2; + assume $IsValid'u8'($t61); + + // $t14 := $t61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t14 := $t61; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L21: + + // $t62 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t62 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t62); + + // $t63 := string::utf8($t62) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t63 := $1_string_utf8($t62); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t64 := ==($t49, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t64 := $IsEqual'$1_string_String'($t49, $t63); + + // if ($t64) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t64) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L25: + + // $t65 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t65 := 3; + assume $IsValid'u8'($t65); + + // $t13 := $t65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t13 := $t65; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L24: + + // $t66 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t66 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t66); + + // $t67 := string::utf8($t66) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t67 := $1_string_utf8($t66); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t68 := ==($t49, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t68 := $IsEqual'$1_string_String'($t49, $t67); + + // if ($t68) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t68) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L28: + + // $t69 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t69 := 4; + assume $IsValid'u8'($t69); + + // $t12 := $t69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t12 := $t69; + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L27: + + // $t70 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t70 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t70); + + // $t71 := string::utf8($t70) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t71 := $1_string_utf8($t70); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t72 := ==($t49, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t72 := $IsEqual'$1_string_String'($t49, $t71); + + // if ($t72) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t72) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L31: + + // $t73 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t73 := 5; + assume $IsValid'u8'($t73); + + // $t11 := $t73 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t11 := $t73; + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L30: + + // $t74 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t74 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t74); + + // $t75 := string::utf8($t74) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t75 := $1_string_utf8($t74); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t76 := ==($t49, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t76 := $IsEqual'$1_string_String'($t49, $t75); + + // if ($t76) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t76) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L34: + + // $t77 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t77 := 6; + assume $IsValid'u8'($t77); + + // $t10 := $t77 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t10 := $t77; + + // goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L35; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L33: + + // $t78 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t78 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t78); + + // $t79 := string::utf8($t78) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t79 := $1_string_utf8($t78); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t80 := ==($t49, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t80 := $IsEqual'$1_string_String'($t49, $t79); + + // if ($t80) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t80) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L37: + + // $t81 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t81 := 7; + assume $IsValid'u8'($t81); + + // $t9 := $t81 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t9 := $t81; + + // goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L38; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L36: + + // $t82 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t82 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t82); + + // $t83 := string::utf8($t82) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t83 := $1_string_utf8($t82); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t84 := ==($t49, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t84 := $IsEqual'$1_string_String'($t49, $t83); + + // if ($t84) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t84) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L40: + + // $t85 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t85 := 8; + assume $IsValid'u8'($t85); + + // $t8 := $t85 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t8 := $t85; + + // goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L41; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L39: + + // $t86 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t86 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t86); + + // $t87 := string::utf8($t86) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t87 := $1_string_utf8($t86); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t88 := ==($t49, $t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t88 := $IsEqual'$1_string_String'($t49, $t87); + + // if ($t88) goto L43 else goto L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t88) { goto L43; } else { goto L42; } + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L43: + + // goto L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L44; + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; +L42: + + // $t126 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t126 := 7; + assume $IsValid'u64'($t126); + + // $t127 := error::invalid_argument($t126) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t127 := $1_error_invalid_argument($t126); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t127) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,9):", $t127} $t127 == $t127; + + // $t26 := move($t127) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t26 := $t127; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L70; + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L44: + + // $t89 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t89 := 9; + assume $IsValid'u8'($t89); + + // $t8 := $t89 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t8 := $t89; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L41: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t9 := $t8; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L38: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t10 := $t9; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L35: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t11 := $t10; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L32: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t12 := $t11; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L29: + + // $t13 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t13 := $t12; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L26: + + // $t14 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t14 := $t13; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L23: + + // $t15 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t15 := $t14; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L20: + + // $t3 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t15; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L17: + + // trace_local[new_type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:107:17+8 + assume {:print "$at(180,4026,4034)"} true; + assume {:print "$track_local(80,9,19):", $t3} $t3 == $t3; + + // trace_local[value#253]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,9,23):", $t48} $t48 == $t48; + + // trace_local[type#252]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,9,21):", $t3} $t3 == $t3; + + // $t90 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t90 := 0; + assume $IsValid'u8'($t90); + + // $t91 := ==($t3, $t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t91 := $IsEqual'u8'($t3, $t90); + + // if ($t91) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t91) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L46: + + // $t92 := from_bcs::to_bool($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t92 := $1_from_bcs_to_bool($t48); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L47; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L45: + + // $t93 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t93 := 1; + assume $IsValid'u8'($t93); + + // $t94 := ==($t3, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t94 := $IsEqual'u8'($t3, $t93); + + // if ($t94) goto L49 else goto L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t94) { goto L49; } else { goto L48; } + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L49: + + // $t95 := from_bcs::to_u8($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t95 := $1_from_bcs_to_u8($t48); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L47; + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L48: + + // $t96 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t96 := 2; + assume $IsValid'u8'($t96); + + // $t97 := ==($t3, $t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t97 := $IsEqual'u8'($t3, $t96); + + // if ($t97) goto L51 else goto L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t97) { goto L51; } else { goto L50; } + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L51: + + // $t98 := from_bcs::to_u16($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t98 := $1_from_bcs_to_u16($t48); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L47; + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L50: + + // $t99 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t99 := 3; + assume $IsValid'u8'($t99); + + // $t100 := ==($t3, $t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t100 := $IsEqual'u8'($t3, $t99); + + // if ($t100) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t100) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L53: + + // $t101 := from_bcs::to_u32($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t101 := $1_from_bcs_to_u32($t48); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L47; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L52: + + // $t102 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t102 := 4; + assume $IsValid'u8'($t102); + + // $t103 := ==($t3, $t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t103 := $IsEqual'u8'($t3, $t102); + + // if ($t103) goto L55 else goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t103) { goto L55; } else { goto L54; } + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L55: + + // $t104 := from_bcs::to_u64($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t104 := $1_from_bcs_to_u64($t48); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L47; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L54: + + // $t105 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t105 := 5; + assume $IsValid'u8'($t105); + + // $t106 := ==($t3, $t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t106 := $IsEqual'u8'($t3, $t105); + + // if ($t106) goto L57 else goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t106) { goto L57; } else { goto L56; } + + // label L57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L57: + + // $t107 := from_bcs::to_u128($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t107 := $1_from_bcs_to_u128($t48); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L47; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L56: + + // $t108 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t108 := 6; + assume $IsValid'u8'($t108); + + // $t109 := ==($t3, $t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t109 := $IsEqual'u8'($t3, $t108); + + // if ($t109) goto L59 else goto L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t109) { goto L59; } else { goto L58; } + + // label L59 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L59: + + // $t110 := from_bcs::to_u256($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t110 := $1_from_bcs_to_u256($t48); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L47; + + // label L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L58: + + // $t111 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t111 := 7; + assume $IsValid'u8'($t111); + + // $t112 := ==($t3, $t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t112 := $IsEqual'u8'($t3, $t111); + + // if ($t112) goto L61 else goto L60 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t112) { goto L61; } else { goto L60; } + + // label L61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L61: + + // $t113 := from_bcs::to_address($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t113 := $1_from_bcs_to_address($t48); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L47; + + // label L60 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L60: + + // $t114 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t114 := 8; + assume $IsValid'u8'($t114); + + // $t115 := ==($t3, $t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t115 := $IsEqual'u8'($t3, $t114); + + // if ($t115) goto L63 else goto L62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t115) { goto L63; } else { goto L62; } + + // label L63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L63: + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L47; + + // label L62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L62: + + // $t116 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t116 := 9; + assume $IsValid'u8'($t116); + + // $t117 := ==($t3, $t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t117 := $IsEqual'u8'($t3, $t116); + + // if ($t117) goto L65 else goto L64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t117) { goto L65; } else { goto L64; } + + // label L65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L65: + + // goto L66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L66; + + // label L64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; +L64: + + // $t128 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t128 := 6; + assume $IsValid'u64'($t128); + + // $t129 := error::invalid_argument($t128) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t129 := $1_error_invalid_argument($t128); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t129) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,9):", $t129} $t129 == $t129; + + // $t26 := move($t129) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t26 := $t129; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L70; + + // label L66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L66: + + // $t118 := from_bcs::to_string($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t118 := $1_from_bcs_to_string($t48); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:29+14 + assume {:print "$at(180,4134,4148)"} true; +L47: + + // $t123 := borrow_local($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:29+14 + assume {:print "$at(180,4134,4148)"} true; + $t123 := $Mutation($Local(16), EmptyVec(), $t16); + + // $t119 := pack object_property_map::PropertyValue($t3, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:50+39 + $t119 := $1_object_property_map_PropertyValue($t3, $t48); + + // simple_map::add($t123, $t44, $t119) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + call $t123 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t123, $t44, $t119); + if ($abort_flag) { + assume {:print "$at(180,4118,4195)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t16)@]($t123) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + $t16 := $Dereference($t123); + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // goto L68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:90+1 + goto L68; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; +L9: + + // $t130 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; + $t130 := $t16; + + // $t131 := pack object_property_map::PropertyMap($t130) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + $t131 := $1_object_property_map_PropertyMap($t130); + + // trace_return[0]($t131) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + assume {:print "$track_return(80,9,0):", $t131} $t131 == $t131; + + // goto L69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + goto L69; + + // label L68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + // Loop invariant checking block for the loop started with header: L67 +L68: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; + assume false; + return; + + // label L69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; +L69: + + // return $t131 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; + $ret0 := $t131; + return; + + // label L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 +L70: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + +} + +// fun object_property_map::prepare_input [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1181 +procedure {:timeLimit 80} $1_object_property_map_prepare_input$verify(_$t0: Vec ($1_string_String), _$t1: Vec ($1_string_String), _$t2: Vec (Vec (int))) returns ($ret0: $1_object_property_map_PropertyMap) +{ + // declare local variables + var $t3: int; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: $Mutation (Table int ($1_object_property_map_PropertyValue)); + 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: Table int ($1_object_property_map_PropertyValue); + var $t17: $1_string_String; + var $t18: int; + var $t19: int; + var $t20: $1_string_String; + var $t21: int; + var $t22: Vec (int); + var $t23: Vec (int); + var $t24: Vec ($1_string_String); + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: Vec (Vec (int)); + var $t32: int; + var $t33: bool; + var $t34: int; + var $t35: int; + var $t36: Vec ($1_string_String); + var $t37: int; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: Vec ($1_string_String); + var $t42: bool; + var $t43: bool; + var $t44: $1_string_String; + var $t45: int; + var $t46: int; + var $t47: bool; + var $t48: Vec (int); + var $t49: $1_string_String; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: bool; + var $t53: int; + var $t54: Vec (int); + var $t55: $1_string_String; + var $t56: bool; + var $t57: int; + var $t58: Vec (int); + var $t59: $1_string_String; + var $t60: bool; + var $t61: int; + var $t62: Vec (int); + var $t63: $1_string_String; + var $t64: bool; + var $t65: int; + var $t66: Vec (int); + var $t67: $1_string_String; + var $t68: bool; + var $t69: int; + var $t70: Vec (int); + var $t71: $1_string_String; + var $t72: bool; + var $t73: int; + var $t74: Vec (int); + var $t75: $1_string_String; + var $t76: bool; + var $t77: int; + var $t78: Vec (int); + var $t79: $1_string_String; + var $t80: bool; + var $t81: int; + var $t82: Vec (int); + var $t83: $1_string_String; + var $t84: bool; + var $t85: int; + var $t86: Vec (int); + var $t87: $1_string_String; + var $t88: bool; + var $t89: int; + var $t90: int; + var $t91: bool; + var $t92: bool; + var $t93: int; + var $t94: bool; + var $t95: int; + var $t96: int; + var $t97: bool; + var $t98: int; + var $t99: int; + var $t100: bool; + var $t101: int; + var $t102: int; + var $t103: bool; + var $t104: int; + var $t105: int; + var $t106: bool; + var $t107: int; + var $t108: int; + var $t109: bool; + var $t110: int; + var $t111: int; + var $t112: bool; + var $t113: int; + var $t114: int; + var $t115: bool; + var $t116: int; + var $t117: bool; + var $t118: $1_string_String; + var $t119: $1_object_property_map_PropertyValue; + var $t120: $Mutation (Vec ($1_string_String)); + var $t121: $Mutation (Vec (Vec (int))); + var $t122: $Mutation (Vec ($1_string_String)); + var $t123: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t124: int; + var $t125: int; + var $t126: int; + var $t127: int; + var $t128: int; + var $t129: int; + var $t130: Table int ($1_object_property_map_PropertyValue); + var $t131: $1_object_property_map_PropertyMap; + var $t0: Vec ($1_string_String); + var $t1: Vec ($1_string_String); + var $t2: Vec (Vec (int)); + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue'': Table int ($1_object_property_map_PropertyValue); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'u8'': Vec (int); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$at(180,3074,3075)"} true; + assume $IsValid'vec'$1_string_String''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume $IsValid'vec'$1_string_String''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume $IsValid'vec'vec'u8'''($t2); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:86:5+1 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // $t24 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:37+5 + assume {:print "$at(180,3254,3259)"} true; + $t24 := $t0; + + // $t25 := vector::length($t24) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:22+21 + call $t25 := $1_vector_length'$1_string_String'($t24); + if ($abort_flag) { + assume {:print "$at(180,3239,3260)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_local[length]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:91:13+6 + assume {:print "$track_local(80,9,18):", $t25} $t25 == $t25; + + // $t27 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:27+21 + assume {:print "$at(180,3288,3309)"} true; + $t27 := 1000; + assume $IsValid'u64'($t27); + + // $t28 := <=($t25, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:24+2 + call $t28 := $Le($t25, $t27); + + // if ($t28) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + if ($t28) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + assume {:print "$at(180,3270,3357)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:74+20 +L0: + + // $t29 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:74+20 + assume {:print "$at(180,3335,3355)"} true; + $t29 := 3; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_argument($t29) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:50+45 + call $t30 := $1_error_invalid_argument($t29); + if ($abort_flag) { + assume {:print "$at(180,3311,3356)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + assume {:print "$at(180,3270,3357)"} true; + assume {:print "$track_abort(80,9):", $t30} $t30 == $t30; + + // $t26 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + $t26 := $t30; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:92:9+87 + goto L70; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:17+6 + assume {:print "$at(180,3375,3381)"} true; +L2: + + // $t31 := copy($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:42+7 + assume {:print "$at(180,3400,3407)"} true; + $t31 := $t2; + + // $t32 := vector::length>($t31) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:27+23 + call $t32 := $1_vector_length'vec'u8''($t31); + if ($abort_flag) { + assume {:print "$at(180,3385,3408)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t33 := ==($t25, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:24+2 + $t33 := $IsEqual'u64'($t25, $t32); + + // if ($t33) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + if ($t33) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + assume {:print "$at(180,3367,3461)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:76+25 +L3: + + // $t34 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:76+25 + assume {:print "$at(180,3434,3459)"} true; + $t34 := 4; + assume $IsValid'u64'($t34); + + // $t35 := error::invalid_argument($t34) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:52+50 + call $t35 := $1_error_invalid_argument($t34); + if ($abort_flag) { + assume {:print "$at(180,3410,3460)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + assume {:print "$at(180,3367,3461)"} true; + assume {:print "$track_abort(80,9):", $t35} $t35 == $t35; + + // $t26 := move($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + $t26 := $t35; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:93:9+94 + goto L70; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:17+6 + assume {:print "$at(180,3479,3485)"} true; +L5: + + // $t36 := copy($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:42+6 + assume {:print "$at(180,3504,3510)"} true; + $t36 := $t1; + + // $t37 := vector::length($t36) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:27+22 + call $t37 := $1_vector_length'$1_string_String'($t36); + if ($abort_flag) { + assume {:print "$at(180,3489,3511)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t38 := ==($t25, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:24+2 + $t38 := $IsEqual'u64'($t25, $t37); + + // if ($t38) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + if ($t38) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + assume {:print "$at(180,3471,3563)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:75+24 +L6: + + // $t39 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:75+24 + assume {:print "$at(180,3537,3561)"} true; + $t39 := 5; + assume $IsValid'u64'($t39); + + // $t40 := error::invalid_argument($t39) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:51+49 + call $t40 := $1_error_invalid_argument($t39); + if ($abort_flag) { + assume {:print "$at(180,3513,3562)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + assume {:print "$at(180,3471,3563)"} true; + assume {:print "$track_abort(80,9):", $t40} $t40 == $t40; + + // $t26 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + $t26 := $t40; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:94:9+92 + goto L70; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:25+43 + assume {:print "$at(180,3590,3633)"} true; +L8: + + // $t16 := simple_map::create() on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:25+43 + assume {:print "$at(180,3590,3633)"} true; + call $t16 := $1_simple_map_create'$1_string_String_$1_object_property_map_PropertyValue'(); + if ($abort_flag) { + assume {:print "$at(180,3590,3633)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:96:13+9 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // label L67 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$at(180,3668,3673)"} true; +L67: + + // $t0 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$at(180,3668,3673)"} true; + havoc $t0; + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t0); + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t1); + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'vec'u8'''($t2); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t3); + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t8; + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t8); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''($t16); + + // $t41 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t41; + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($t41); + + // $t42 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t42; + + // assume WellFormed($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t42); + + // $t43 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t43; + + // assume WellFormed($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t43); + + // $t44 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t44; + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t44); + + // $t45 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t45; + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t45); + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t46; + + // assume WellFormed($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t46); + + // $t47 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t47; + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t47); + + // $t48 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t48; + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t48); + + // $t49 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t49; + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t49); + + // $t50 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t50; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t50); + + // $t51 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t51; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t51); + + // $t52 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t52; + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t52); + + // $t53 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t53; + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t53); + + // $t54 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t54; + + // assume WellFormed($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t54); + + // $t55 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t55; + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t55); + + // $t56 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t56; + + // assume WellFormed($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t56); + + // $t57 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t57; + + // assume WellFormed($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t57); + + // $t58 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t58; + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t58); + + // $t59 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t59; + + // assume WellFormed($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t59); + + // $t60 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t60; + + // assume WellFormed($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t60); + + // $t61 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t61; + + // assume WellFormed($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t61); + + // $t62 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t62; + + // assume WellFormed($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t62); + + // $t63 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t63; + + // assume WellFormed($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t63); + + // $t64 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t64; + + // assume WellFormed($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t64); + + // $t65 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t65; + + // assume WellFormed($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t65); + + // $t66 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t66; + + // assume WellFormed($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t66); + + // $t67 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t67; + + // assume WellFormed($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t67); + + // $t68 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t68; + + // assume WellFormed($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t68); + + // $t69 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t69; + + // assume WellFormed($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t69); + + // $t70 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t70; + + // assume WellFormed($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t70); + + // $t71 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t71; + + // assume WellFormed($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t71); + + // $t72 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t72; + + // assume WellFormed($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t72); + + // $t73 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t73; + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t73); + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t74; + + // assume WellFormed($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t74); + + // $t75 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t75; + + // assume WellFormed($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t75); + + // $t76 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t76; + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t76); + + // $t77 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t77; + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t77); + + // $t78 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t78; + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t78); + + // $t79 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t79; + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t79); + + // $t80 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t80; + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t80); + + // $t81 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t81; + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t81); + + // $t82 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t82; + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t82); + + // $t83 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t83; + + // assume WellFormed($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t83); + + // $t84 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t84; + + // assume WellFormed($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t84); + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t85; + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t85); + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t86; + + // assume WellFormed($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'u8''($t86); + + // $t87 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t87; + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t87); + + // $t88 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t88; + + // assume WellFormed($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t88); + + // $t89 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t89; + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t89); + + // $t90 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t90; + + // assume WellFormed($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t90); + + // $t91 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t91; + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t91); + + // $t92 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t92; + + // assume WellFormed($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t92); + + // $t93 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t93; + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t93); + + // $t94 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t94; + + // assume WellFormed($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t94); + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t95; + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t95); + + // $t96 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t96; + + // assume WellFormed($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t96); + + // $t97 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t97; + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t97); + + // $t98 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t98; + + // assume WellFormed($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u16'($t98); + + // $t99 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t99; + + // assume WellFormed($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t99); + + // $t100 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t100; + + // assume WellFormed($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t100); + + // $t101 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t101; + + // assume WellFormed($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u32'($t101); + + // $t102 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t102; + + // assume WellFormed($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t102); + + // $t103 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t103; + + // assume WellFormed($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t103); + + // $t104 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t104; + + // assume WellFormed($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u64'($t104); + + // $t105 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t105; + + // assume WellFormed($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t105); + + // $t106 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t106; + + // assume WellFormed($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t106); + + // $t107 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t107; + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u128'($t107); + + // $t108 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t108; + + // assume WellFormed($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t108); + + // $t109 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t109; + + // assume WellFormed($t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t109); + + // $t110 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t110; + + // assume WellFormed($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u256'($t110); + + // $t111 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t111; + + // assume WellFormed($t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t111); + + // $t112 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t112; + + // assume WellFormed($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t112); + + // $t113 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t113; + + // assume WellFormed($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'address'($t113); + + // $t114 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t114; + + // assume WellFormed($t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t114); + + // $t115 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t115; + + // assume WellFormed($t115) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t115); + + // $t116 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t116; + + // assume WellFormed($t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'u8'($t116); + + // $t117 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t117; + + // assume WellFormed($t117) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'bool'($t117); + + // $t118 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t118; + + // assume WellFormed($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_string_String'($t118); + + // $t119 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t119; + + // assume WellFormed($t119) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_object_property_map_PropertyValue'($t119); + + // $t120 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t120; + + // assume WellFormed($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($Dereference($t120)); + + // $t121 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t121; + + // assume WellFormed($t121) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'vec'u8'''($Dereference($t121)); + + // $t122 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t122; + + // assume WellFormed($t122) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'vec'$1_string_String''($Dereference($t122)); + + // $t123 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + havoc $t123; + + // assume WellFormed($t123) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_object_property_map_PropertyValue''($Dereference($t123)); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$info(): enter loop, variable(s) keys, types, values, container havocked and reassigned"} true; + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + assume !$abort_flag; + + // $t41 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:34+5 + $t41 := $t0; + + // $t42 := vector::is_empty($t41) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:17+23 + call $t42 := $1_vector_is_empty'$1_string_String'($t41); + if ($abort_flag) { + assume {:print "$at(180,3651,3674)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t43 := !($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:16+1 + call $t43 := $Not($t42); + + // if ($t43) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:9+563 + if ($t43) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:97:9+563 +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:40+9 + assume {:print "$at(180,3717,3726)"} true; +L11: + + // $t120 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:40+9 + assume {:print "$at(180,3717,3726)"} true; + $t120 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t44 := vector::pop_back($t120) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + call $t44,$t120 := $1_vector_pop_back'$1_string_String'($t120); + if ($abort_flag) { + assume {:print "$at(180,3700,3727)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t0)@]($t120) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + $t0 := $Dereference($t120); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:23+27 + assume {:print "$track_local(80,9,0):", $t0} $t0 == $t0; + + // trace_local[key]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:98:17+3 + assume {:print "$track_local(80,9,17):", $t44} $t44 == $t44; + + // $t45 := string::length($t44) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:17+20 + assume {:print "$at(180,3766,3786)"} true; + call $t45 := $1_string_length($t44); + if ($abort_flag) { + assume {:print "$at(180,3766,3786)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t46 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:41+24 + $t46 := 128; + assume $IsValid'u64'($t46); + + // $t47 := <=($t45, $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:100:38+2 + call $t47 := $Le($t45, $t46); + + // if ($t47) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + if ($t47) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:41+26 + assume {:print "$at(180,3856,3882)"} true; +L12: + + // $t124 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:41+26 + assume {:print "$at(180,3856,3882)"} true; + $t124 := 8; + assume $IsValid'u64'($t124); + + // $t125 := error::invalid_argument($t124) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:101:17+51 + call $t125 := $1_error_invalid_argument($t124); + if ($abort_flag) { + assume {:print "$at(180,3832,3883)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t125) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + assume {:print "$at(180,3741,3898)"} true; + assume {:print "$track_abort(80,9):", $t125} $t125 == $t125; + + // $t26 := move($t125) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + $t26 := $t125; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:99:13+157 + goto L70; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:42+11 + assume {:print "$at(180,3942,3953)"} true; +L14: + + // $t121 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:42+11 + assume {:print "$at(180,3942,3953)"} true; + $t121 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t48 := vector::pop_back>($t121) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + call $t48,$t121 := $1_vector_pop_back'vec'u8''($t121); + if ($abort_flag) { + assume {:print "$at(180,3925,3954)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t2)@]($t121) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + $t2 := $Dereference($t121); + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:25+29 + assume {:print "$track_local(80,9,2):", $t2} $t2 == $t2; + + // trace_local[value]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:104:17+5 + assume {:print "$track_local(80,9,22):", $t48} $t48 == $t48; + + // $t122 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:41+10 + assume {:print "$at(180,3996,4006)"} true; + $t122 := $Mutation($Local(1), EmptyVec(), $t1); + + // $t49 := vector::pop_back($t122) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + call $t49,$t122 := $1_vector_pop_back'$1_string_String'($t122); + if ($abort_flag) { + assume {:print "$at(180,3979,4007)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t1)@]($t122) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + $t1 := $Dereference($t122); + + // trace_local[types]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:105:24+28 + assume {:print "$track_local(80,9,1):", $t1} $t1 == $t1; + + // trace_local[type#251]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,9,20):", $t49} $t49 == $t49; + + // $t50 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t50 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t52 := ==($t49, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t52 := $IsEqual'$1_string_String'($t49, $t51); + + // if ($t52) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t52) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L16: + + // $t53 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t53 := 0; + assume $IsValid'u8'($t53); + + // $t3 := $t53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t53; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L15: + + // $t54 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t54 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t54); + + // $t55 := string::utf8($t54) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t55 := $1_string_utf8($t54); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t56 := ==($t49, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t56 := $IsEqual'$1_string_String'($t49, $t55); + + // if ($t56) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t56) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L19: + + // $t57 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t57 := 1; + assume $IsValid'u8'($t57); + + // $t15 := $t57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t15 := $t57; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L18: + + // $t58 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t58 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t58); + + // $t59 := string::utf8($t58) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t59 := $1_string_utf8($t58); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t60 := ==($t49, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t60 := $IsEqual'$1_string_String'($t49, $t59); + + // if ($t60) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t60) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L22: + + // $t61 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t61 := 2; + assume $IsValid'u8'($t61); + + // $t14 := $t61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t14 := $t61; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L21: + + // $t62 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t62 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t62); + + // $t63 := string::utf8($t62) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t63 := $1_string_utf8($t62); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t64 := ==($t49, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t64 := $IsEqual'$1_string_String'($t49, $t63); + + // if ($t64) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t64) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L25: + + // $t65 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t65 := 3; + assume $IsValid'u8'($t65); + + // $t13 := $t65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t13 := $t65; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L24: + + // $t66 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t66 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t66); + + // $t67 := string::utf8($t66) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t67 := $1_string_utf8($t66); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t68 := ==($t49, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t68 := $IsEqual'$1_string_String'($t49, $t67); + + // if ($t68) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t68) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L28: + + // $t69 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t69 := 4; + assume $IsValid'u8'($t69); + + // $t12 := $t69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t12 := $t69; + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L27: + + // $t70 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t70 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t70); + + // $t71 := string::utf8($t70) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t71 := $1_string_utf8($t70); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t72 := ==($t49, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t72 := $IsEqual'$1_string_String'($t49, $t71); + + // if ($t72) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t72) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L31: + + // $t73 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t73 := 5; + assume $IsValid'u8'($t73); + + // $t11 := $t73 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t11 := $t73; + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L30: + + // $t74 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t74 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t74); + + // $t75 := string::utf8($t74) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t75 := $1_string_utf8($t74); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t76 := ==($t49, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t76 := $IsEqual'$1_string_String'($t49, $t75); + + // if ($t76) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t76) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L34: + + // $t77 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t77 := 6; + assume $IsValid'u8'($t77); + + // $t10 := $t77 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t10 := $t77; + + // goto L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L35; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L33: + + // $t78 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t78 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t78); + + // $t79 := string::utf8($t78) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t79 := $1_string_utf8($t78); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t80 := ==($t49, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t80 := $IsEqual'$1_string_String'($t49, $t79); + + // if ($t80) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t80) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L37: + + // $t81 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t81 := 7; + assume $IsValid'u8'($t81); + + // $t9 := $t81 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t9 := $t81; + + // goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L38; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L36: + + // $t82 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t82 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t82); + + // $t83 := string::utf8($t82) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t83 := $1_string_utf8($t82); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t84 := ==($t49, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t84 := $IsEqual'$1_string_String'($t49, $t83); + + // if ($t84) goto L40 else goto L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t84) { goto L40; } else { goto L39; } + + // label L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L40: + + // $t85 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t85 := 8; + assume $IsValid'u8'($t85); + + // $t8 := $t85 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t8 := $t85; + + // goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L41; + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L39: + + // $t86 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t86 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t86); + + // $t87 := string::utf8($t86) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t87 := $1_string_utf8($t86); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // $t88 := ==($t49, $t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t88 := $IsEqual'$1_string_String'($t49, $t87); + + // if ($t88) goto L43 else goto L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t88) { goto L43; } else { goto L42; } + + // label L43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L43: + + // goto L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L44; + + // label L42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; +L42: + + // $t126 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t126 := 7; + assume $IsValid'u64'($t126); + + // $t127 := error::invalid_argument($t126) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t127 := $1_error_invalid_argument($t126); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t127) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,9):", $t127} $t127 == $t127; + + // $t26 := move($t127) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t26 := $t127; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L70; + + // label L44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L44: + + // $t89 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t89 := 9; + assume $IsValid'u8'($t89); + + // $t8 := $t89 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t8 := $t89; + + // label L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L41: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t9 := $t8; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L38: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t10 := $t9; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L35: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t11 := $t10; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L32: + + // $t12 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t12 := $t11; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L29: + + // $t13 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t13 := $t12; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L26: + + // $t14 := $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t14 := $t13; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L23: + + // $t15 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t15 := $t14; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L20: + + // $t3 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t15; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L17: + + // trace_local[new_type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:107:17+8 + assume {:print "$at(180,4026,4034)"} true; + assume {:print "$track_local(80,9,19):", $t3} $t3 == $t3; + + // trace_local[value#253]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:40+5 + assume {:print "$at(180,6448,6453)"} true; + assume {:print "$track_local(80,9,23):", $t48} $t48 == $t48; + + // trace_local[type#252]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:177:30+4 + assume {:print "$track_local(80,9,21):", $t3} $t3 == $t3; + + // $t90 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:21+4 + assume {:print "$at(180,6489,6493)"} true; + $t90 := 0; + assume $IsValid'u8'($t90); + + // $t91 := ==($t3, $t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:18+2 + $t91 := $IsEqual'u8'($t3, $t90); + + // if ($t91) goto L46 else goto L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:178:9+808 + if ($t91) { goto L46; } else { goto L45; } + + // label L46 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:31+5 + assume {:print "$at(180,6527,6532)"} true; +L46: + + // $t92 := from_bcs::to_bool($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + assume {:print "$at(180,6509,6533)"} true; + call $t92 := $1_from_bcs_to_bool($t48); + if ($abort_flag) { + assume {:print "$at(180,6509,6533)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:179:37+1 + goto L47; + + // label L45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:20+4 + assume {:print "$at(180,6554,6558)"} true; +L45: + + // $t93 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:28+2 + assume {:print "$at(180,6562,6564)"} true; + $t93 := 1; + assume $IsValid'u8'($t93); + + // $t94 := ==($t3, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:25+2 + $t94 := $IsEqual'u8'($t3, $t93); + + // if ($t94) goto L49 else goto L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + if ($t94) { goto L49; } else { goto L48; } + + // label L49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:29+5 + assume {:print "$at(180,6596,6601)"} true; +L49: + + // $t95 := from_bcs::to_u8($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + assume {:print "$at(180,6580,6602)"} true; + call $t95 := $1_from_bcs_to_u8($t48); + if ($abort_flag) { + assume {:print "$at(180,6580,6602)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:181:13+22 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:180:16+735 + assume {:print "$at(180,6550,7285)"} true; + goto L47; + + // label L48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:20+4 + assume {:print "$at(180,6623,6627)"} true; +L48: + + // $t96 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:28+3 + assume {:print "$at(180,6631,6634)"} true; + $t96 := 2; + assume $IsValid'u8'($t96); + + // $t97 := ==($t3, $t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:25+2 + $t97 := $IsEqual'u8'($t3, $t96); + + // if ($t97) goto L51 else goto L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + if ($t97) { goto L51; } else { goto L50; } + + // label L51 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:30+5 + assume {:print "$at(180,6667,6672)"} true; +L51: + + // $t98 := from_bcs::to_u16($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + assume {:print "$at(180,6650,6673)"} true; + call $t98 := $1_from_bcs_to_u16($t48); + if ($abort_flag) { + assume {:print "$at(180,6650,6673)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:183:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:182:16+666 + assume {:print "$at(180,6619,7285)"} true; + goto L47; + + // label L50 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:20+4 + assume {:print "$at(180,6694,6698)"} true; +L50: + + // $t99 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:28+3 + assume {:print "$at(180,6702,6705)"} true; + $t99 := 3; + assume $IsValid'u8'($t99); + + // $t100 := ==($t3, $t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:25+2 + $t100 := $IsEqual'u8'($t3, $t99); + + // if ($t100) goto L53 else goto L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + if ($t100) { goto L53; } else { goto L52; } + + // label L53 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:30+5 + assume {:print "$at(180,6738,6743)"} true; +L53: + + // $t101 := from_bcs::to_u32($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + assume {:print "$at(180,6721,6744)"} true; + call $t101 := $1_from_bcs_to_u32($t48); + if ($abort_flag) { + assume {:print "$at(180,6721,6744)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:185:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:184:16+595 + assume {:print "$at(180,6690,7285)"} true; + goto L47; + + // label L52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:20+4 + assume {:print "$at(180,6765,6769)"} true; +L52: + + // $t102 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:28+3 + assume {:print "$at(180,6773,6776)"} true; + $t102 := 4; + assume $IsValid'u8'($t102); + + // $t103 := ==($t3, $t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:25+2 + $t103 := $IsEqual'u8'($t3, $t102); + + // if ($t103) goto L55 else goto L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + if ($t103) { goto L55; } else { goto L54; } + + // label L55 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:30+5 + assume {:print "$at(180,6809,6814)"} true; +L55: + + // $t104 := from_bcs::to_u64($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + assume {:print "$at(180,6792,6815)"} true; + call $t104 := $1_from_bcs_to_u64($t48); + if ($abort_flag) { + assume {:print "$at(180,6792,6815)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:187:13+23 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:186:16+524 + assume {:print "$at(180,6761,7285)"} true; + goto L47; + + // label L54 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:20+4 + assume {:print "$at(180,6836,6840)"} true; +L54: + + // $t105 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:28+4 + assume {:print "$at(180,6844,6848)"} true; + $t105 := 5; + assume $IsValid'u8'($t105); + + // $t106 := ==($t3, $t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:25+2 + $t106 := $IsEqual'u8'($t3, $t105); + + // if ($t106) goto L57 else goto L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + if ($t106) { goto L57; } else { goto L56; } + + // label L57 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:31+5 + assume {:print "$at(180,6882,6887)"} true; +L57: + + // $t107 := from_bcs::to_u128($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + assume {:print "$at(180,6864,6888)"} true; + call $t107 := $1_from_bcs_to_u128($t48); + if ($abort_flag) { + assume {:print "$at(180,6864,6888)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:189:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:188:16+453 + assume {:print "$at(180,6832,7285)"} true; + goto L47; + + // label L56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:20+4 + assume {:print "$at(180,6909,6913)"} true; +L56: + + // $t108 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:28+4 + assume {:print "$at(180,6917,6921)"} true; + $t108 := 6; + assume $IsValid'u8'($t108); + + // $t109 := ==($t3, $t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:25+2 + $t109 := $IsEqual'u8'($t3, $t108); + + // if ($t109) goto L59 else goto L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + if ($t109) { goto L59; } else { goto L58; } + + // label L59 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:31+5 + assume {:print "$at(180,6955,6960)"} true; +L59: + + // $t110 := from_bcs::to_u256($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + assume {:print "$at(180,6937,6961)"} true; + call $t110 := $1_from_bcs_to_u256($t48); + if ($abort_flag) { + assume {:print "$at(180,6937,6961)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:191:13+24 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:190:16+380 + assume {:print "$at(180,6905,7285)"} true; + goto L47; + + // label L58 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:20+4 + assume {:print "$at(180,6982,6986)"} true; +L58: + + // $t111 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:28+7 + assume {:print "$at(180,6990,6997)"} true; + $t111 := 7; + assume $IsValid'u8'($t111); + + // $t112 := ==($t3, $t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:25+2 + $t112 := $IsEqual'u8'($t3, $t111); + + // if ($t112) goto L61 else goto L60 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + if ($t112) { goto L61; } else { goto L60; } + + // label L61 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:34+5 + assume {:print "$at(180,7034,7039)"} true; +L61: + + // $t113 := from_bcs::to_address($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + assume {:print "$at(180,7013,7040)"} true; + call $t113 := $1_from_bcs_to_address($t48); + if ($abort_flag) { + assume {:print "$at(180,7013,7040)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:193:13+27 + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:192:16+307 + assume {:print "$at(180,6978,7285)"} true; + goto L47; + + // label L60 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:20+4 + assume {:print "$at(180,7061,7065)"} true; +L60: + + // $t114 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:28+11 + assume {:print "$at(180,7069,7080)"} true; + $t114 := 8; + assume $IsValid'u8'($t114); + + // $t115 := ==($t3, $t114) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:25+2 + $t115 := $IsEqual'u8'($t3, $t114); + + // if ($t115) goto L63 else goto L62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + if ($t115) { goto L63; } else { goto L62; } + + // label L63 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 +L63: + + // goto L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:194:16+228 + assume {:print "$at(180,7057,7285)"} true; + goto L47; + + // label L62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:20+4 + assume {:print "$at(180,7141,7145)"} true; +L62: + + // $t116 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:28+6 + assume {:print "$at(180,7149,7155)"} true; + $t116 := 9; + assume $IsValid'u8'($t116); + + // $t117 := ==($t3, $t116) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:25+2 + $t117 := $IsEqual'u8'($t3, $t116); + + // if ($t117) goto L65 else goto L64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + if ($t117) { goto L65; } else { goto L64; } + + // label L65 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 +L65: + + // goto L66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:196:16+148 + assume {:print "$at(180,7137,7285)"} true; + goto L66; + + // label L64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; +L64: + + // $t128 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:44+14 + assume {:print "$at(180,7259,7273)"} true; + $t128 := 6; + assume $IsValid'u64'($t128); + + // $t129 := error::invalid_argument($t128) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:19+41 + call $t129 := $1_error_invalid_argument($t128); + if ($abort_flag) { + assume {:print "$at(180,7234,7275)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // trace_abort($t129) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + assume {:print "$at(180,7228,7275)"} true; + assume {:print "$track_abort(80,9):", $t129} $t129 == $t129; + + // $t26 := move($t129) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + $t26 := $t129; + + // goto L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:199:13+47 + goto L70; + + // label L66 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:33+5 + assume {:print "$at(180,7191,7196)"} true; +L66: + + // $t118 := from_bcs::to_string($t48) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + assume {:print "$at(180,7171,7197)"} true; + call $t118 := $1_from_bcs_to_string($t48); + if ($abort_flag) { + assume {:print "$at(180,7171,7197)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // drop($t118) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:197:13+26 + + // label L47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:29+14 + assume {:print "$at(180,4134,4148)"} true; +L47: + + // $t123 := borrow_local($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:29+14 + assume {:print "$at(180,4134,4148)"} true; + $t123 := $Mutation($Local(16), EmptyVec(), $t16); + + // $t119 := pack object_property_map::PropertyValue($t3, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:50+39 + $t119 := $1_object_property_map_PropertyValue($t3, $t48); + + // simple_map::add($t123, $t44, $t119) on_abort goto L70 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + call $t123 := $1_simple_map_add'$1_string_String_$1_object_property_map_PropertyValue'($t123, $t44, $t119); + if ($abort_flag) { + assume {:print "$at(180,4118,4195)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(80,9):", $t26} $t26 == $t26; + goto L70; + } + + // write_back[LocalRoot($t16)@]($t123) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + $t16 := $Dereference($t123); + + // trace_local[container]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:13+77 + assume {:print "$track_local(80,9,16):", $t16} $t16 == $t16; + + // goto L68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:110:90+1 + goto L68; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; +L9: + + // $t130 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; + $t130 := $t16; + + // $t131 := pack object_property_map::PropertyMap($t130) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + $t131 := $1_object_property_map_PropertyMap($t130); + + // trace_return[0]($t131) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + assume {:print "$track_return(80,9,0):", $t131} $t131 == $t131; + + // goto L69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:9+32 + goto L69; + + // label L68 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + // Loop invariant checking block for the loop started with header: L67 +L68: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:113:30+9 + assume {:print "$at(180,4238,4247)"} true; + assume false; + return; + + // label L69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; +L69: + + // return $t131 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; + $ret0 := $t131; + return; + + // label L70 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 +L70: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:114:5+1 + assume {:print "$at(180,4254,4255)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+196 +procedure {:timeLimit 80} $1_object_property_map_read_address$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+1 + assume {:print "$at(180,10508,10509)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+1 + assume {:print "$track_local(80,11,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:284:5+1 + assume {:print "$track_local(80,11,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,11):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#259]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,11,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name
() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'address'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,11):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,11):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,11):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_address($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:286:9+27 + assume {:print "$at(180,10671,10698)"} true; + call $t10 := $1_from_bcs_to_address($t4); + if ($abort_flag) { + assume {:print "$at(180,10671,10698)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,11):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:286:9+27 + assume {:print "$track_return(80,11,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:287:5+1 + assume {:print "$at(180,10703,10704)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:287:5+1 + assume {:print "$at(180,10703,10704)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:287:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:287:5+1 + assume {:print "$at(180,10703,10704)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_bool [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+184 +procedure {:inline 1} $1_object_property_map_read_bool'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume {:print "$at(180,9198,9199)"} true; + assume {:print "$track_local(80,12,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume {:print "$track_local(80,12,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#263]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,12,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'bool'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,12):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_bool($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:251:9+24 + assume {:print "$at(180,9352,9376)"} true; + call $t10 := $1_from_bcs_to_bool($t4); + if ($abort_flag) { + assume {:print "$at(180,9352,9376)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:251:9+24 + assume {:print "$track_return(80,12,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_bool [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+184 +procedure {:timeLimit 80} $1_object_property_map_read_bool$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume {:print "$at(180,9198,9199)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume {:print "$track_local(80,12,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:249:5+1 + assume {:print "$track_local(80,12,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#263]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,12,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'bool'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,12):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_bool($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:251:9+24 + assume {:print "$at(180,9352,9376)"} true; + call $t10 := $1_from_bcs_to_bool($t4); + if ($abort_flag) { + assume {:print "$at(180,9352,9376)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,12):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:251:9+24 + assume {:print "$track_return(80,12,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:252:5+1 + assume {:print "$at(180,9381,9382)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+198 +procedure {:inline 1} $1_object_property_map_read_bytes'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: Vec (int); + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume {:print "$at(180,10710,10711)"} true; + assume {:print "$track_local(80,13,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume {:print "$track_local(80,13,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#267]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,13,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name>() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'vec'u8''(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,13):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_bytes($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:291:9+25 + assume {:print "$at(180,10877,10902)"} true; + call $t10 := $1_from_bcs_to_bytes($t4); + if ($abort_flag) { + assume {:print "$at(180,10877,10902)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:291:9+25 + assume {:print "$track_return(80,13,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+198 +procedure {:timeLimit 80} $1_object_property_map_read_bytes$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: Vec (int); + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume {:print "$at(180,10710,10711)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume {:print "$track_local(80,13,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:289:5+1 + assume {:print "$track_local(80,13,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#267]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,13,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name>() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'vec'u8''(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,13):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_bytes($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:291:9+25 + assume {:print "$at(180,10877,10902)"} true; + call $t10 := $1_from_bcs_to_bytes($t4); + if ($abort_flag) { + assume {:print "$at(180,10877,10902)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,13):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:291:9+25 + assume {:print "$track_return(80,13,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:292:5+1 + assume {:print "$at(180,10907,10908)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_string [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+192 +procedure {:inline 1} $1_object_property_map_read_string'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_string_String; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume {:print "$at(180,10914,10915)"} true; + assume {:print "$track_local(80,14,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume {:print "$track_local(80,14,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#271]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,14,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'$1_string_String'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,14):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_string($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:296:9+26 + assume {:print "$at(180,11074,11100)"} true; + call $t10 := $1_from_bcs_to_string($t4); + if ($abort_flag) { + assume {:print "$at(180,11074,11100)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:296:9+26 + assume {:print "$track_return(80,14,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+192 +procedure {:timeLimit 80} $1_object_property_map_read_string$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_string_String; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume {:print "$at(180,10914,10915)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume {:print "$track_local(80,14,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:294:5+1 + assume {:print "$track_local(80,14,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#271]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,14,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'$1_string_String'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,14):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_string($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:296:9+26 + assume {:print "$at(180,11074,11100)"} true; + call $t10 := $1_from_bcs_to_string($t4); + if ($abort_flag) { + assume {:print "$at(180,11074,11100)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:296:9+26 + assume {:print "$track_return(80,14,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:297:5+1 + assume {:print "$at(180,11105,11106)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u128 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+184 +procedure {:inline 1} $1_object_property_map_read_u128'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u128': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume {:print "$at(180,10128,10129)"} true; + assume {:print "$track_local(80,15,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume {:print "$track_local(80,15,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#275]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,15,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u128'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,15):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u128($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:276:9+24 + assume {:print "$at(180,10282,10306)"} true; + call $t10 := $1_from_bcs_to_u128($t4); + if ($abort_flag) { + assume {:print "$at(180,10282,10306)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:276:9+24 + assume {:print "$track_return(80,15,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+184 +procedure {:timeLimit 80} $1_object_property_map_read_u128$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u128': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume {:print "$at(180,10128,10129)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume {:print "$track_local(80,15,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:274:5+1 + assume {:print "$track_local(80,15,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#275]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,15,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u128'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,15):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u128($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:276:9+24 + assume {:print "$at(180,10282,10306)"} true; + call $t10 := $1_from_bcs_to_u128($t4); + if ($abort_flag) { + assume {:print "$at(180,10282,10306)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,15):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:276:9+24 + assume {:print "$track_return(80,15,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:277:5+1 + assume {:print "$at(180,10311,10312)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u16 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+180 +procedure {:inline 1} $1_object_property_map_read_u16'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u16': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume {:print "$at(180,9570,9571)"} true; + assume {:print "$track_local(80,16,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume {:print "$track_local(80,16,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#279]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,16,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u16'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,16):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u16($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:261:9+23 + assume {:print "$at(180,9721,9744)"} true; + call $t10 := $1_from_bcs_to_u16($t4); + if ($abort_flag) { + assume {:print "$at(180,9721,9744)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:261:9+23 + assume {:print "$track_return(80,16,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u16 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+180 +procedure {:timeLimit 80} $1_object_property_map_read_u16$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u16': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume {:print "$at(180,9570,9571)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume {:print "$track_local(80,16,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:259:5+1 + assume {:print "$track_local(80,16,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#279]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,16,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u16'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,16):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u16($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:261:9+23 + assume {:print "$at(180,9721,9744)"} true; + call $t10 := $1_from_bcs_to_u16($t4); + if ($abort_flag) { + assume {:print "$at(180,9721,9744)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,16):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:261:9+23 + assume {:print "$track_return(80,16,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:262:5+1 + assume {:print "$at(180,9749,9750)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u256 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+184 +procedure {:inline 1} $1_object_property_map_read_u256'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u256': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume {:print "$at(180,10318,10319)"} true; + assume {:print "$track_local(80,17,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume {:print "$track_local(80,17,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#283]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,17,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u256'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,17):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u256($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:281:9+24 + assume {:print "$at(180,10472,10496)"} true; + call $t10 := $1_from_bcs_to_u256($t4); + if ($abort_flag) { + assume {:print "$at(180,10472,10496)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:281:9+24 + assume {:print "$track_return(80,17,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u256 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+184 +procedure {:timeLimit 80} $1_object_property_map_read_u256$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u256': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume {:print "$at(180,10318,10319)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume {:print "$track_local(80,17,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:279:5+1 + assume {:print "$track_local(80,17,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#283]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,17,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u256'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,17):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u256($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:281:9+24 + assume {:print "$at(180,10472,10496)"} true; + call $t10 := $1_from_bcs_to_u256($t4); + if ($abort_flag) { + assume {:print "$at(180,10472,10496)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,17):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:281:9+24 + assume {:print "$track_return(80,17,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:282:5+1 + assume {:print "$at(180,10501,10502)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u32 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+180 +procedure {:inline 1} $1_object_property_map_read_u32'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u32': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume {:print "$at(180,9756,9757)"} true; + assume {:print "$track_local(80,18,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume {:print "$track_local(80,18,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#287]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,18,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u32'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,18):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u32($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:266:9+23 + assume {:print "$at(180,9907,9930)"} true; + call $t10 := $1_from_bcs_to_u32($t4); + if ($abort_flag) { + assume {:print "$at(180,9907,9930)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:266:9+23 + assume {:print "$track_return(80,18,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u32 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+180 +procedure {:timeLimit 80} $1_object_property_map_read_u32$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u32': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume {:print "$at(180,9756,9757)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume {:print "$track_local(80,18,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:264:5+1 + assume {:print "$track_local(80,18,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#287]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,18,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u32'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,18):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u32($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:266:9+23 + assume {:print "$at(180,9907,9930)"} true; + call $t10 := $1_from_bcs_to_u32($t4); + if ($abort_flag) { + assume {:print "$at(180,9907,9930)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:266:9+23 + assume {:print "$track_return(80,18,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:267:5+1 + assume {:print "$at(180,9935,9936)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u64 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+180 +procedure {:inline 1} $1_object_property_map_read_u64'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume {:print "$at(180,9942,9943)"} true; + assume {:print "$track_local(80,19,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume {:print "$track_local(80,19,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#291]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,19,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u64'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,19):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u64($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:271:9+23 + assume {:print "$at(180,10093,10116)"} true; + call $t10 := $1_from_bcs_to_u64($t4); + if ($abort_flag) { + assume {:print "$at(180,10093,10116)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:271:9+23 + assume {:print "$track_return(80,19,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+180 +procedure {:timeLimit 80} $1_object_property_map_read_u64$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume {:print "$at(180,9942,9943)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume {:print "$track_local(80,19,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:269:5+1 + assume {:print "$track_local(80,19,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#291]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,19,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u64'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,19):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u64($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:271:9+23 + assume {:print "$at(180,10093,10116)"} true; + call $t10 := $1_from_bcs_to_u64($t4); + if ($abort_flag) { + assume {:print "$at(180,10093,10116)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,19):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:271:9+23 + assume {:print "$track_return(80,19,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:272:5+1 + assume {:print "$at(180,10121,10122)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u8 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+176 +procedure {:inline 1} $1_object_property_map_read_u8'$1_object_ObjectCore'(_$t0: $1_object_Object'$1_object_ObjectCore', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'$1_object_ObjectCore'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'$1_object_ObjectCore'': $1_object_Object'$1_object_ObjectCore'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume {:print "$at(180,9388,9389)"} true; + assume {:print "$track_local(80,20,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume {:print "$track_local(80,20,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'$1_object_ObjectCore'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#295]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,20,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u8'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,20):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u8($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:256:9+22 + assume {:print "$at(180,9536,9558)"} true; + call $t10 := $1_from_bcs_to_u8($t4); + if ($abort_flag) { + assume {:print "$at(180,9536,9558)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:256:9+22 + assume {:print "$track_return(80,20,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::read_u8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+176 +procedure {:timeLimit 80} $1_object_property_map_read_u8$verify(_$t0: $1_object_Object'#0', _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Vec (int); + var $t3: $1_string_String; + var $t4: Vec (int); + var $t5: int; + var $t6: $1_string_String; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t0: $1_object_Object'#0'; + var $t1: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume {:print "$at(180,9388,9389)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[object]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume {:print "$track_local(80,20,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:254:5+1 + assume {:print "$track_local(80,20,1):", $t1} $t1 == $t1; + + // ($t3, $t4) := object_property_map::read<#0>($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:29+17 + assume {:print "$at(180,9026,9043)"} true; + call $t3,$t4 := $1_object_property_map_read'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(180,9026,9043)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[value#295]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:241:20+5 + assume {:print "$track_local(80,20,2):", $t4} $t4 == $t4; + + // $t6 := type_info::type_name() on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:21+25 + assume {:print "$at(180,9082,9107)"} true; + call $t6 := $1_type_info_type_name'u8'(); + if ($abort_flag) { + assume {:print "$at(180,9082,9107)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := ==($t3, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:243:18+2 + $t7 := $IsEqual'$1_string_String'($t3, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:37+14 + assume {:print "$at(180,9145,9159)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:244:13+39 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(180,9121,9160)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + assume {:print "$at(180,9053,9171)"} true; + assume {:print "$track_abort(80,20):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:242:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:246:9+5 + assume {:print "$at(180,9181,9186)"} true; +L2: + + // $t10 := from_bcs::to_u8($t4) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:256:9+22 + assume {:print "$at(180,9536,9558)"} true; + call $t10 := $1_from_bcs_to_u8($t4); + if ($abort_flag) { + assume {:print "$at(180,9536,9558)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(80,20):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:256:9+22 + assume {:print "$track_return(80,20,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:257:5+1 + assume {:print "$at(180,9563,9564)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_property_map::update_typed<#1> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+219 +procedure {:inline 1} $1_object_property_map_update_typed'#1'(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: #1) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: $Mutation ($1_object_property_map_PropertyValue); + var $t14: $1_object_property_map_MutatorRef; + var $t15: int; + var $t16: $1_string_String; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: int; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: bool; + var $t24: int; + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: bool; + var $t28: int; + var $t29: Vec (int); + var $t30: $1_string_String; + var $t31: bool; + var $t32: int; + var $t33: Vec (int); + var $t34: $1_string_String; + var $t35: bool; + var $t36: int; + var $t37: Vec (int); + var $t38: $1_string_String; + var $t39: bool; + var $t40: int; + var $t41: Vec (int); + var $t42: $1_string_String; + var $t43: bool; + var $t44: int; + var $t45: Vec (int); + var $t46: $1_string_String; + var $t47: bool; + var $t48: int; + var $t49: Vec (int); + var $t50: $1_string_String; + var $t51: bool; + var $t52: int; + var $t53: Vec (int); + var $t54: $1_string_String; + var $t55: bool; + var $t56: int; + var $t57: Vec (int); + var $t58: $1_string_String; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: Vec (int); + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: $Mutation ($1_object_property_map_PropertyMap); + var $t70: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t71: $Mutation ($1_object_property_map_PropertyValue); + var $t72: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: #1; + var $temp_0'#1': #1; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$at(180,12411,12412)"} true; + assume {:print "$track_local(80,23,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$track_local(80,23,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$track_local(80,23,2):", $t2} $t2 == $t2; + + // $t19 := type_info::type_name<#0>() on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:172:20+25 + assume {:print "$at(180,6280,6305)"} true; + call $t19 := $1_type_info_type_name'#1'(); + if ($abort_flag) { + assume {:print "$at(180,6280,6305)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[type#308]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,23,16):", $t19} $t19 == $t19; + + // $t21 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t21 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t23 := ==($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t23 := $IsEqual'$1_string_String'($t19, $t22); + + // if ($t23) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t24 := 0; + assume $IsValid'u8'($t24); + + // $t3 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t24; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t25 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t25 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t27 := ==($t19, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t27 := $IsEqual'$1_string_String'($t19, $t26); + + // if ($t27) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t27) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t28 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t28 := 1; + assume $IsValid'u8'($t28); + + // $t11 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t28; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t29 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t29 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t29); + + // $t30 := string::utf8($t29) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t30 := $1_string_utf8($t29); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t31 := ==($t19, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t31 := $IsEqual'$1_string_String'($t19, $t30); + + // if ($t31) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t31) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t32 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t32 := 2; + assume $IsValid'u8'($t32); + + // $t10 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t32; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t33 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t33 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t33); + + // $t34 := string::utf8($t33) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t34 := $1_string_utf8($t33); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t35 := ==($t19, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t35 := $IsEqual'$1_string_String'($t19, $t34); + + // if ($t35) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t35) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t36 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t36 := 3; + assume $IsValid'u8'($t36); + + // $t9 := $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t36; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t37 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t37 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t37); + + // $t38 := string::utf8($t37) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t38 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t39 := ==($t19, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t39 := $IsEqual'$1_string_String'($t19, $t38); + + // if ($t39) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t39) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t40 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t40 := 4; + assume $IsValid'u8'($t40); + + // $t8 := $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t40; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t41 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t41 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t41); + + // $t42 := string::utf8($t41) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t42 := $1_string_utf8($t41); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t43 := ==($t19, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t43 := $IsEqual'$1_string_String'($t19, $t42); + + // if ($t43) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t43) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t44 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t44 := 5; + assume $IsValid'u8'($t44); + + // $t7 := $t44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t44; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t45 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t45 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t45); + + // $t46 := string::utf8($t45) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t46 := $1_string_utf8($t45); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t47 := ==($t19, $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t47 := $IsEqual'$1_string_String'($t19, $t46); + + // if ($t47) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t47) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t48 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t48 := 6; + assume $IsValid'u8'($t48); + + // $t6 := $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t48; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t49 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t49 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t49); + + // $t50 := string::utf8($t49) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t50 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t51 := ==($t19, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t51 := $IsEqual'$1_string_String'($t19, $t50); + + // if ($t51) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t51) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t52 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t52 := 7; + assume $IsValid'u8'($t52); + + // $t5 := $t52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t52; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t53 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t53 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t53); + + // $t54 := string::utf8($t53) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t54 := $1_string_utf8($t53); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t55 := ==($t19, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t55 := $IsEqual'$1_string_String'($t19, $t54); + + // if ($t55) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t55) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t56 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t56 := 8; + assume $IsValid'u8'($t56); + + // $t4 := $t56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t56; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t57 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t57 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t57); + + // $t58 := string::utf8($t57) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t58 := $1_string_utf8($t57); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t59 := ==($t19, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t59 := $IsEqual'$1_string_String'($t19, $t58); + + // if ($t59) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t59) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t60 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t60 := 7; + assume $IsValid'u64'($t60); + + // $t61 := error::invalid_argument($t60) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t61 := $1_error_invalid_argument($t60); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_abort($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,23):", $t61} $t61 == $t61; + + // $t20 := move($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t20 := $t61; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L34; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t62 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t62 := 9; + assume $IsValid'u8'($t62); + + // $t4 := $t62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t62; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t3 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:328:13+4 + assume {:print "$at(180,12521,12525)"} true; + assume {:print "$track_local(80,23,15):", $t3} $t3 == $t3; + + // $t63 := bcs::to_bytes<#0>($t2) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:329:41+21 + assume {:print "$at(180,12601,12622)"} true; + call $t63 := $1_bcs_to_bytes'#1'($t2); + if ($abort_flag) { + assume {:print "$at(180,12601,12622)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[value#312]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:74+5 + assume {:print "$at(180,12705,12710)"} true; + assume {:print "$track_local(80,23,18):", $t63} $t63 == $t63; + + // trace_local[type#311]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:64+4 + assume {:print "$track_local(80,23,17):", $t3} $t3 == $t3; + + // trace_local[key#310]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:50+3 + assume {:print "$track_local(80,23,12):", $t1} $t1 == $t1; + + // trace_local[ref#309]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:32+3 + assume {:print "$track_local(80,23,14):", $t0} $t0 == $t0; + + // $t64 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:333:23+8 + assume {:print "$at(180,12769,12777)"} true; + $t64 := $t0->$self; + + // $t65 := exists($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t65 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t64); + + // if ($t65) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t65) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L30: + + // $t66 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t66 := 1; + assume $IsValid'u64'($t66); + + // $t67 := error::not_found($t66) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t67 := $1_error_not_found($t66); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,23):", $t67} $t67 == $t67; + + // $t20 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t20 := $t67; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+3 + assume {:print "$at(180,12838,12841)"} true; +L32: + + // $t68 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+8 + assume {:print "$at(180,12838,12846)"} true; + $t68 := $t0->$self; + + // $t69 := borrow_global($t68) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t68)) { + call $ExecFailureAbort(); + } else { + $t69 := $Mutation($Global($t68), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t68)); + } + if ($abort_flag) { + assume {:print "$at(180,12807,12824)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t70 := borrow_field.inner($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:48+23 + assume {:print "$at(180,12896,12919)"} true; + $t70 := $ChildMutation($t69, 0, $Dereference($t69)->$inner); + + // $t71 := simple_map::borrow_mut($t70, $t1) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:25+52 + call $t71,$t70 := $1_simple_map_borrow_mut'$1_string_String_$1_object_property_map_PropertyValue'($t70, $t1); + if ($abort_flag) { + assume {:print "$at(180,12873,12925)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[old_value#314]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:13+9 + $temp_0'$1_object_property_map_PropertyValue' := $Dereference($t71); + assume {:print "$track_local(80,23,13):", $temp_0'$1_object_property_map_PropertyValue'} $temp_0'$1_object_property_map_PropertyValue' == $temp_0'$1_object_property_map_PropertyValue'; + + // $t72 := pack object_property_map::PropertyValue($t3, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:22+29 + assume {:print "$at(180,12948,12977)"} true; + $t72 := $1_object_property_map_PropertyValue($t3, $t63); + + // write_ref($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t71 := $UpdateMutation($t71, $t72); + + // write_back[Reference($t70)[]]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t70 := $UpdateMutation($t70, UpdateTable($Dereference($t70), ReadVec($t71->p, LenVec($t70->p)), $Dereference($t71))); + + // write_back[Reference($t69).inner (simple_map::SimpleMap)]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t69 := $UpdateMutation($t69, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t69), $Dereference($t70))); + + // write_back[object_property_map::PropertyMap@]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t69), + $Dereference($t69)); + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; +L33: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 +L34: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// fun object_property_map::update_typed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+219 +procedure {:timeLimit 80} $1_object_property_map_update_typed$verify(_$t0: $1_object_property_map_MutatorRef, _$t1: $1_string_String, _$t2: #0) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: $Mutation ($1_object_property_map_PropertyValue); + var $t14: $1_object_property_map_MutatorRef; + var $t15: int; + var $t16: $1_string_String; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: int; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: bool; + var $t24: int; + var $t25: Vec (int); + var $t26: $1_string_String; + var $t27: bool; + var $t28: int; + var $t29: Vec (int); + var $t30: $1_string_String; + var $t31: bool; + var $t32: int; + var $t33: Vec (int); + var $t34: $1_string_String; + var $t35: bool; + var $t36: int; + var $t37: Vec (int); + var $t38: $1_string_String; + var $t39: bool; + var $t40: int; + var $t41: Vec (int); + var $t42: $1_string_String; + var $t43: bool; + var $t44: int; + var $t45: Vec (int); + var $t46: $1_string_String; + var $t47: bool; + var $t48: int; + var $t49: Vec (int); + var $t50: $1_string_String; + var $t51: bool; + var $t52: int; + var $t53: Vec (int); + var $t54: $1_string_String; + var $t55: bool; + var $t56: int; + var $t57: Vec (int); + var $t58: $1_string_String; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: Vec (int); + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: $Mutation ($1_object_property_map_PropertyMap); + var $t70: $Mutation (Table int ($1_object_property_map_PropertyValue)); + var $t71: $Mutation ($1_object_property_map_PropertyValue); + var $t72: $1_object_property_map_PropertyValue; + var $t0: $1_object_property_map_MutatorRef; + var $t1: $1_string_String; + var $t2: #0; + var $temp_0'#0': #0; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_object_property_map_PropertyValue': $1_object_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$at(180,12411,12412)"} true; + assume $IsValid'$1_object_property_map_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume $IsValid'#0'($t2); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$track_local(80,23,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$track_local(80,23,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:327:5+1 + assume {:print "$track_local(80,23,2):", $t2} $t2 == $t2; + + // $t19 := type_info::type_name<#0>() on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:172:20+25 + assume {:print "$at(180,6280,6305)"} true; + call $t19 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(180,6280,6305)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[type#308]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:144:33+4 + assume {:print "$at(180,5309,5313)"} true; + assume {:print "$track_local(80,23,16):", $t19} $t19 == $t19; + + // $t21 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:34+7 + assume {:print "$at(180,5362,5369)"} true; + $t21 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:21+21 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(180,5349,5370)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t23 := ==($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:18+2 + $t23 := $IsEqual'$1_string_String'($t19, $t22); + + // if ($t23) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; +L1: + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:146:13+4 + assume {:print "$at(180,5386,5390)"} true; + $t24 := 0; + assume $IsValid'u8'($t24); + + // $t3 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t24; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:20+4 + assume {:print "$at(180,5410,5414)"} true; +L0: + + // $t25 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:41+5 + assume {:print "$at(180,5431,5436)"} true; + $t25 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t25); + + // $t26 := string::utf8($t25) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:28+19 + call $t26 := $1_string_utf8($t25); + if ($abort_flag) { + assume {:print "$at(180,5418,5437)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t27 := ==($t19, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:25+2 + $t27 := $IsEqual'$1_string_String'($t19, $t26); + + // if ($t27) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + if ($t27) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; +L4: + + // $t28 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:148:13+2 + assume {:print "$at(180,5453,5455)"} true; + $t28 := 1; + assume $IsValid'u8'($t28); + + // $t11 := $t28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t28; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:20+4 + assume {:print "$at(180,5475,5479)"} true; +L3: + + // $t29 := [117, 49, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:41+6 + assume {:print "$at(180,5496,5502)"} true; + $t29 := MakeVec3(117, 49, 54); + assume $IsValid'vec'u8''($t29); + + // $t30 := string::utf8($t29) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:28+20 + call $t30 := $1_string_utf8($t29); + if ($abort_flag) { + assume {:print "$at(180,5483,5503)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t31 := ==($t19, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:25+2 + $t31 := $IsEqual'$1_string_String'($t19, $t30); + + // if ($t31) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + if ($t31) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; +L7: + + // $t32 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:150:13+3 + assume {:print "$at(180,5519,5522)"} true; + $t32 := 2; + assume $IsValid'u8'($t32); + + // $t10 := $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t32; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:20+4 + assume {:print "$at(180,5542,5546)"} true; +L6: + + // $t33 := [117, 51, 50] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:41+6 + assume {:print "$at(180,5563,5569)"} true; + $t33 := MakeVec3(117, 51, 50); + assume $IsValid'vec'u8''($t33); + + // $t34 := string::utf8($t33) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:28+20 + call $t34 := $1_string_utf8($t33); + if ($abort_flag) { + assume {:print "$at(180,5550,5570)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t35 := ==($t19, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:25+2 + $t35 := $IsEqual'$1_string_String'($t19, $t34); + + // if ($t35) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + if ($t35) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; +L10: + + // $t36 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:152:13+3 + assume {:print "$at(180,5586,5589)"} true; + $t36 := 3; + assume $IsValid'u8'($t36); + + // $t9 := $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t36; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:20+4 + assume {:print "$at(180,5609,5613)"} true; +L9: + + // $t37 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:41+6 + assume {:print "$at(180,5630,5636)"} true; + $t37 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t37); + + // $t38 := string::utf8($t37) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:28+20 + call $t38 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(180,5617,5637)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t39 := ==($t19, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:25+2 + $t39 := $IsEqual'$1_string_String'($t19, $t38); + + // if ($t39) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + if ($t39) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; +L13: + + // $t40 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:154:13+3 + assume {:print "$at(180,5653,5656)"} true; + $t40 := 4; + assume $IsValid'u8'($t40); + + // $t8 := $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t40; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:20+4 + assume {:print "$at(180,5676,5680)"} true; +L12: + + // $t41 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:41+7 + assume {:print "$at(180,5697,5704)"} true; + $t41 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t41); + + // $t42 := string::utf8($t41) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:28+21 + call $t42 := $1_string_utf8($t41); + if ($abort_flag) { + assume {:print "$at(180,5684,5705)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t43 := ==($t19, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:25+2 + $t43 := $IsEqual'$1_string_String'($t19, $t42); + + // if ($t43) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + if ($t43) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; +L16: + + // $t44 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:156:13+4 + assume {:print "$at(180,5721,5725)"} true; + $t44 := 5; + assume $IsValid'u8'($t44); + + // $t7 := $t44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t44; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:20+4 + assume {:print "$at(180,5745,5749)"} true; +L15: + + // $t45 := [117, 50, 53, 54] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:41+7 + assume {:print "$at(180,5766,5773)"} true; + $t45 := MakeVec4(117, 50, 53, 54); + assume $IsValid'vec'u8''($t45); + + // $t46 := string::utf8($t45) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:28+21 + call $t46 := $1_string_utf8($t45); + if ($abort_flag) { + assume {:print "$at(180,5753,5774)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t47 := ==($t19, $t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:25+2 + $t47 := $IsEqual'$1_string_String'($t19, $t46); + + // if ($t47) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + if ($t47) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; +L19: + + // $t48 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:158:13+4 + assume {:print "$at(180,5790,5794)"} true; + $t48 := 6; + assume $IsValid'u8'($t48); + + // $t6 := $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t48; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:20+4 + assume {:print "$at(180,5814,5818)"} true; +L18: + + // $t49 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:41+10 + assume {:print "$at(180,5835,5845)"} true; + $t49 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t49); + + // $t50 := string::utf8($t49) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:28+24 + call $t50 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(180,5822,5846)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t51 := ==($t19, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:25+2 + $t51 := $IsEqual'$1_string_String'($t19, $t50); + + // if ($t51) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + if ($t51) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; +L22: + + // $t52 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:160:13+7 + assume {:print "$at(180,5862,5869)"} true; + $t52 := 7; + assume $IsValid'u8'($t52); + + // $t5 := $t52 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t52; + + // goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + goto L23; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:20+4 + assume {:print "$at(180,5889,5893)"} true; +L21: + + // $t53 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:41+13 + assume {:print "$at(180,5910,5923)"} true; + $t53 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t53); + + // $t54 := string::utf8($t53) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:28+27 + call $t54 := $1_string_utf8($t53); + if ($abort_flag) { + assume {:print "$at(180,5897,5924)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t55 := ==($t19, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:25+2 + $t55 := $IsEqual'$1_string_String'($t19, $t54); + + // if ($t55) goto L25 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + if ($t55) { goto L25; } else { goto L24; } + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; +L25: + + // $t56 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:162:13+11 + assume {:print "$at(180,5940,5951)"} true; + $t56 := 8; + assume $IsValid'u8'($t56); + + // $t4 := $t56 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t56; + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + goto L26; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:20+4 + assume {:print "$at(180,5971,5975)"} true; +L24: + + // $t57 := [48, 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:41+53 + assume {:print "$at(180,5992,6045)"} true; + $t57 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 48, 48), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 48, 48, 48)), MakeVec4(48, 49, 58, 58)), MakeVec4(115, 116, 114, 105)), MakeVec4(110, 103, 58, 58)), MakeVec4(83, 116, 114, 105)), MakeVec2(110, 103)); + assume $IsValid'vec'u8''($t57); + + // $t58 := string::utf8($t57) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:28+67 + call $t58 := $1_string_utf8($t57); + if ($abort_flag) { + assume {:print "$at(180,5979,6046)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t59 := ==($t19, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:25+2 + $t59 := $IsEqual'$1_string_String'($t19, $t58); + + // if ($t59) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + if ($t59) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 +L28: + + // goto L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:163:16+187 + assume {:print "$at(180,5967,6154)"} true; + goto L29; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; +L27: + + // $t60 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:44+13 + assume {:print "$at(180,6129,6142)"} true; + $t60 := 7; + assume $IsValid'u64'($t60); + + // $t61 := error::invalid_argument($t60) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:19+40 + call $t61 := $1_error_invalid_argument($t60); + if ($abort_flag) { + assume {:print "$at(180,6104,6144)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_abort($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + assume {:print "$at(180,6098,6144)"} true; + assume {:print "$track_abort(80,23):", $t61} $t61 == $t61; + + // $t20 := move($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + $t20 := $t61; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:166:13+46 + goto L34; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; +L29: + + // $t62 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:164:13+6 + assume {:print "$at(180,6062,6068)"} true; + $t62 := 9; + assume $IsValid'u8'($t62); + + // $t4 := $t62 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 + assume {:print "$at(180,5885,6154)"} true; + $t4 := $t62; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:161:16+269 +L26: + + // $t5 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 + assume {:print "$at(180,5810,6154)"} true; + $t5 := $t4; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:159:16+344 +L23: + + // $t6 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 + assume {:print "$at(180,5741,6154)"} true; + $t6 := $t5; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:157:16+413 +L20: + + // $t7 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 + assume {:print "$at(180,5672,6154)"} true; + $t7 := $t6; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:155:16+482 +L17: + + // $t8 := $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 + assume {:print "$at(180,5605,6154)"} true; + $t8 := $t7; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:153:16+549 +L14: + + // $t9 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 + assume {:print "$at(180,5538,6154)"} true; + $t9 := $t8; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:151:16+616 +L11: + + // $t10 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 + assume {:print "$at(180,5471,6154)"} true; + $t10 := $t9; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:149:16+683 +L8: + + // $t11 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 + assume {:print "$at(180,5406,6154)"} true; + $t11 := $t10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:147:16+748 +L5: + + // $t3 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 + assume {:print "$at(180,5337,6154)"} true; + $t3 := $t11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:145:9+817 +L2: + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:328:13+4 + assume {:print "$at(180,12521,12525)"} true; + assume {:print "$track_local(80,23,15):", $t3} $t3 == $t3; + + // $t63 := bcs::to_bytes<#0>($t2) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:329:41+21 + assume {:print "$at(180,12601,12622)"} true; + call $t63 := $1_bcs_to_bytes'#0'($t2); + if ($abort_flag) { + assume {:print "$at(180,12601,12622)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[value#312]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:74+5 + assume {:print "$at(180,12705,12710)"} true; + assume {:print "$track_local(80,23,18):", $t63} $t63 == $t63; + + // trace_local[type#311]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:64+4 + assume {:print "$track_local(80,23,17):", $t3} $t3 == $t3; + + // trace_local[key#310]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:50+3 + assume {:print "$track_local(80,23,12):", $t1} $t1 == $t1; + + // trace_local[ref#309]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:332:32+3 + assume {:print "$track_local(80,23,14):", $t0} $t0 == $t0; + + // $t64 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:333:23+8 + assume {:print "$at(180,12769,12777)"} true; + $t64 := $t0->$self; + + // $t65 := exists($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:234:13+6 + assume {:print "$at(180,8729,8735)"} true; + $t65 := $ResourceExists($1_object_property_map_PropertyMap_$memory, $t64); + + // if ($t65) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + if ($t65) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L31: + + // goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + goto L32; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 +L30: + + // $t66 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:30+28 + assume {:print "$at(180,8787,8815)"} true; + $t66 := 1; + assume $IsValid'u64'($t66); + + // $t67 := error::not_found($t66) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:235:13+46 + call $t67 := $1_error_not_found($t66); + if ($abort_flag) { + assume {:print "$at(180,8770,8816)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + assume {:print "$at(180,8708,8827)"} true; + assume {:print "$track_abort(80,23):", $t67} $t67 == $t67; + + // $t20 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + $t20 := $t67; + + // goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:233:9+119 + goto L34; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+3 + assume {:print "$at(180,12838,12841)"} true; +L32: + + // $t68 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:59+8 + assume {:print "$at(180,12838,12846)"} true; + $t68 := $t0->$self; + + // $t69 := borrow_global($t68) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:334:28+17 + if (!$ResourceExists($1_object_property_map_PropertyMap_$memory, $t68)) { + call $ExecFailureAbort(); + } else { + $t69 := $Mutation($Global($t68), EmptyVec(), $ResourceValue($1_object_property_map_PropertyMap_$memory, $t68)); + } + if ($abort_flag) { + assume {:print "$at(180,12807,12824)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // $t70 := borrow_field.inner($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:48+23 + assume {:print "$at(180,12896,12919)"} true; + $t70 := $ChildMutation($t69, 0, $Dereference($t69)->$inner); + + // $t71 := simple_map::borrow_mut($t70, $t1) on_abort goto L34 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:25+52 + call $t71,$t70 := $1_simple_map_borrow_mut'$1_string_String_$1_object_property_map_PropertyValue'($t70, $t1); + if ($abort_flag) { + assume {:print "$at(180,12873,12925)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(80,23):", $t20} $t20 == $t20; + goto L34; + } + + // trace_local[old_value#314]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:335:13+9 + $temp_0'$1_object_property_map_PropertyValue' := $Dereference($t71); + assume {:print "$track_local(80,23,13):", $temp_0'$1_object_property_map_PropertyValue'} $temp_0'$1_object_property_map_PropertyValue' == $temp_0'$1_object_property_map_PropertyValue'; + + // $t72 := pack object_property_map::PropertyValue($t3, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:22+29 + assume {:print "$at(180,12948,12977)"} true; + $t72 := $1_object_property_map_PropertyValue($t3, $t63); + + // write_ref($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t71 := $UpdateMutation($t71, $t72); + + // write_back[Reference($t70)[]]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t70 := $UpdateMutation($t70, UpdateTable($Dereference($t70), ReadVec($t71->p, LenVec($t70->p)), $Dereference($t71))); + + // write_back[Reference($t69).inner (simple_map::SimpleMap)]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $t69 := $UpdateMutation($t69, $Update'$1_object_property_map_PropertyMap'_inner($Dereference($t69), $Dereference($t70))); + + // write_back[object_property_map::PropertyMap@]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:336:9+42 + $1_object_property_map_PropertyMap_$memory := $ResourceUpdate($1_object_property_map_PropertyMap_$memory, $GlobalLocationAddress($t69), + $Dereference($t69)); + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; +L33: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; + return; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 +L34: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_property_map.move:330:5+1 + assume {:print "$at(180,12629,12630)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// struct object_token::BurnRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:98:5+111 +datatype $1_object_token_BurnRef { + $1_object_token_BurnRef($inner: $1_option_Option'$1_object_DeleteRef', $self: $1_option_Option'address') +} +function {:inline} $Update'$1_object_token_BurnRef'_inner(s: $1_object_token_BurnRef, x: $1_option_Option'$1_object_DeleteRef'): $1_object_token_BurnRef { + $1_object_token_BurnRef(x, s->$self) +} +function {:inline} $Update'$1_object_token_BurnRef'_self(s: $1_object_token_BurnRef, x: $1_option_Option'address'): $1_object_token_BurnRef { + $1_object_token_BurnRef(s->$inner, x) +} +function $IsValid'$1_object_token_BurnRef'(s: $1_object_token_BurnRef): bool { + $IsValid'$1_option_Option'$1_object_DeleteRef''(s->$inner) + && $IsValid'$1_option_Option'address''(s->$self) +} +function {:inline} $IsEqual'$1_object_token_BurnRef'(s1: $1_object_token_BurnRef, s2: $1_object_token_BurnRef): bool { + $IsEqual'$1_option_Option'$1_object_DeleteRef''(s1->$inner, s2->$inner) + && $IsEqual'$1_option_Option'address''(s1->$self, s2->$self)} + +// struct object_token::Token at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:51:5+1189 +datatype $1_object_token_Token { + $1_object_token_Token($collection: $1_object_Object'$1_collection_Collection', $index: int, $description: $1_string_String, $name: $1_string_String, $uri: $1_string_String, $mutation_events: $1_event_EventHandle'$1_object_token_MutationEvent') +} +function {:inline} $Update'$1_object_token_Token'_collection(s: $1_object_token_Token, x: $1_object_Object'$1_collection_Collection'): $1_object_token_Token { + $1_object_token_Token(x, s->$index, s->$description, s->$name, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_object_token_Token'_index(s: $1_object_token_Token, x: int): $1_object_token_Token { + $1_object_token_Token(s->$collection, x, s->$description, s->$name, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_object_token_Token'_description(s: $1_object_token_Token, x: $1_string_String): $1_object_token_Token { + $1_object_token_Token(s->$collection, s->$index, x, s->$name, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_object_token_Token'_name(s: $1_object_token_Token, x: $1_string_String): $1_object_token_Token { + $1_object_token_Token(s->$collection, s->$index, s->$description, x, s->$uri, s->$mutation_events) +} +function {:inline} $Update'$1_object_token_Token'_uri(s: $1_object_token_Token, x: $1_string_String): $1_object_token_Token { + $1_object_token_Token(s->$collection, s->$index, s->$description, s->$name, x, s->$mutation_events) +} +function {:inline} $Update'$1_object_token_Token'_mutation_events(s: $1_object_token_Token, x: $1_event_EventHandle'$1_object_token_MutationEvent'): $1_object_token_Token { + $1_object_token_Token(s->$collection, s->$index, s->$description, s->$name, s->$uri, x) +} +function $IsValid'$1_object_token_Token'(s: $1_object_token_Token): bool { + $IsValid'$1_object_Object'$1_collection_Collection''(s->$collection) + && $IsValid'u64'(s->$index) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'$1_event_EventHandle'$1_object_token_MutationEvent''(s->$mutation_events) +} +function {:inline} $IsEqual'$1_object_token_Token'(s1: $1_object_token_Token, s2: $1_object_token_Token): bool { + $IsEqual'$1_object_Object'$1_collection_Collection''(s1->$collection, s2->$collection) + && $IsEqual'u64'(s1->$index, s2->$index) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'$1_event_EventHandle'$1_object_token_MutationEvent''(s1->$mutation_events, s2->$mutation_events)} +var $1_object_token_Token_$memory: $Memory $1_object_token_Token; + +// struct object_token::MutatorRef at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:104:5+64 +datatype $1_object_token_MutatorRef { + $1_object_token_MutatorRef($self: int) +} +function {:inline} $Update'$1_object_token_MutatorRef'_self(s: $1_object_token_MutatorRef, x: int): $1_object_token_MutatorRef { + $1_object_token_MutatorRef(x) +} +function $IsValid'$1_object_token_MutatorRef'(s: $1_object_token_MutatorRef): bool { + $IsValid'address'(s->$self) +} +function {:inline} $IsEqual'$1_object_token_MutatorRef'(s1: $1_object_token_MutatorRef, s2: $1_object_token_MutatorRef): bool { + s1 == s2 +} + +// struct object_token::Mutation at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:117:5+160 +datatype $1_object_token_Mutation { + $1_object_token_Mutation($token_address: int, $mutated_field_name: $1_string_String, $old_value: $1_string_String, $new_value: $1_string_String) +} +function {:inline} $Update'$1_object_token_Mutation'_token_address(s: $1_object_token_Mutation, x: int): $1_object_token_Mutation { + $1_object_token_Mutation(x, s->$mutated_field_name, s->$old_value, s->$new_value) +} +function {:inline} $Update'$1_object_token_Mutation'_mutated_field_name(s: $1_object_token_Mutation, x: $1_string_String): $1_object_token_Mutation { + $1_object_token_Mutation(s->$token_address, x, s->$old_value, s->$new_value) +} +function {:inline} $Update'$1_object_token_Mutation'_old_value(s: $1_object_token_Mutation, x: $1_string_String): $1_object_token_Mutation { + $1_object_token_Mutation(s->$token_address, s->$mutated_field_name, x, s->$new_value) +} +function {:inline} $Update'$1_object_token_Mutation'_new_value(s: $1_object_token_Mutation, x: $1_string_String): $1_object_token_Mutation { + $1_object_token_Mutation(s->$token_address, s->$mutated_field_name, s->$old_value, x) +} +function $IsValid'$1_object_token_Mutation'(s: $1_object_token_Mutation): bool { + $IsValid'address'(s->$token_address) + && $IsValid'$1_string_String'(s->$mutated_field_name) + && $IsValid'$1_string_String'(s->$old_value) + && $IsValid'$1_string_String'(s->$new_value) +} +function {:inline} $IsEqual'$1_object_token_Mutation'(s1: $1_object_token_Mutation, s2: $1_object_token_Mutation): bool { + $IsEqual'address'(s1->$token_address, s2->$token_address) + && $IsEqual'$1_string_String'(s1->$mutated_field_name, s2->$mutated_field_name) + && $IsEqual'$1_string_String'(s1->$old_value, s2->$old_value) + && $IsEqual'$1_string_String'(s1->$new_value, s2->$new_value)} + +// struct object_token::MutationEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:110:5+133 +datatype $1_object_token_MutationEvent { + $1_object_token_MutationEvent($mutated_field_name: $1_string_String, $old_value: $1_string_String, $new_value: $1_string_String) +} +function {:inline} $Update'$1_object_token_MutationEvent'_mutated_field_name(s: $1_object_token_MutationEvent, x: $1_string_String): $1_object_token_MutationEvent { + $1_object_token_MutationEvent(x, s->$old_value, s->$new_value) +} +function {:inline} $Update'$1_object_token_MutationEvent'_old_value(s: $1_object_token_MutationEvent, x: $1_string_String): $1_object_token_MutationEvent { + $1_object_token_MutationEvent(s->$mutated_field_name, x, s->$new_value) +} +function {:inline} $Update'$1_object_token_MutationEvent'_new_value(s: $1_object_token_MutationEvent, x: $1_string_String): $1_object_token_MutationEvent { + $1_object_token_MutationEvent(s->$mutated_field_name, s->$old_value, x) +} +function $IsValid'$1_object_token_MutationEvent'(s: $1_object_token_MutationEvent): bool { + $IsValid'$1_string_String'(s->$mutated_field_name) + && $IsValid'$1_string_String'(s->$old_value) + && $IsValid'$1_string_String'(s->$new_value) +} +function {:inline} $IsEqual'$1_object_token_MutationEvent'(s1: $1_object_token_MutationEvent, s2: $1_object_token_MutationEvent): bool { + $IsEqual'$1_string_String'(s1->$mutated_field_name, s2->$mutated_field_name) + && $IsEqual'$1_string_String'(s1->$old_value, s2->$old_value) + && $IsEqual'$1_string_String'(s1->$new_value, s2->$new_value)} + +// struct object_token::TokenIdentifiers at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:79:5+378 +datatype $1_object_token_TokenIdentifiers { + $1_object_token_TokenIdentifiers($index: $1_aggregator_v2_AggregatorSnapshot'u64', $name: $1_aggregator_v2_DerivedStringSnapshot) +} +function {:inline} $Update'$1_object_token_TokenIdentifiers'_index(s: $1_object_token_TokenIdentifiers, x: $1_aggregator_v2_AggregatorSnapshot'u64'): $1_object_token_TokenIdentifiers { + $1_object_token_TokenIdentifiers(x, s->$name) +} +function {:inline} $Update'$1_object_token_TokenIdentifiers'_name(s: $1_object_token_TokenIdentifiers, x: $1_aggregator_v2_DerivedStringSnapshot): $1_object_token_TokenIdentifiers { + $1_object_token_TokenIdentifiers(s->$index, x) +} +function $IsValid'$1_object_token_TokenIdentifiers'(s: $1_object_token_TokenIdentifiers): bool { + $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''(s->$index) + && $IsValid'$1_aggregator_v2_DerivedStringSnapshot'(s->$name) +} +function {:inline} $IsEqual'$1_object_token_TokenIdentifiers'(s1: $1_object_token_TokenIdentifiers, s2: $1_object_token_TokenIdentifiers): bool { + $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''(s1->$index, s2->$index) + && $IsEqual'$1_aggregator_v2_DerivedStringSnapshot'(s1->$name, s2->$name)} +var $1_object_token_TokenIdentifiers_$memory: $Memory $1_object_token_TokenIdentifiers; + +// fun object_token::index [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:721:5+359 +procedure {:timeLimit 80} $1_object_token_index$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_object_token_TokenIdentifiers; + var $t8: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_object_token_Token; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:721:5+1 + assume {:print "$at(181,27121,27122)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:721:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:721:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:721:5+1 + assume {:print "$track_local(81,24,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:722:29+30 + assume {:print "$at(181,27232,27262)"} true; + call $t4 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,27232,27262)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[token_address]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:722:13+13 + assume {:print "$track_local(81,24,2):", $t4} $t4 == $t4; + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:723:13+6 + assume {:print "$at(181,27276,27282)"} true; + $t6 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:723:9+202 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:75+13 + assume {:print "$at(181,27393,27406)"} true; +L1: + + // $t7 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:43+13 + assume {:print "$at(181,27361,27374)"} true; + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(181,27361,27374)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + goto L7; + } + + // $t8 := get_field.index($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:42+53 + $t8 := $t7->$index; + + // $t1 := opaque begin: aggregator_v2::read_snapshot($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + havoc $t9; + + // if ($t9) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + if ($t9) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 +L9: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + assume {:print "$at(181,27331,27414)"} true; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 +L8: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + assume {:print "$at(181,27331,27414)"} true; + assume $IsValid'u64'($t1); + + // $t1 := opaque end: aggregator_v2::read_snapshot($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:724:13+83 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:723:9+202 + assume {:print "$at(181,27272,27474)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:726:20+6 + assume {:print "$at(181,27451,27457)"} true; +L0: + + // $t10 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t10 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[token_address#633]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,24,3):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,24):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t5 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L5: + + // $t14 := get_global($t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_object_token_Token_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,24):", $t5} $t5 == $t5; + goto L7; + } + + // $t1 := get_field.index($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:726:13+20 + assume {:print "$at(181,27444,27464)"} true; + $t1 := $t14->$index; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:723:9+202 + assume {:print "$at(181,27272,27474)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:723:9+202 + assume {:print "$at(181,27272,27474)"} true; + assume {:print "$track_return(81,24,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:728:5+1 + assume {:print "$at(181,27479,27480)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:728:5+1 + assume {:print "$at(181,27479,27480)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:728:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:728:5+1 + assume {:print "$at(181,27479,27480)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::create [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+588 +procedure {:inline 1} $1_object_token_create(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_string_String; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_object_ConstructorRef; + var $t15: $signer; + var $t16: $signer; + var $t17: int; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: $1_aggregator_v2_DerivedStringSnapshot; + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_string_String; + var $t27: $1_option_Option'$1_string_String'; + var $t28: $1_option_Option'$1_string_String'; + var $t29: $1_option_Option'$1_string_String'; + var $t30: $signer; + var $t31: $1_option_Option'$1_royalty_Royalty'; + var $t32: $1_option_Option'$1_royalty_Royalty'; + var $t33: $1_option_Option'$1_royalty_Royalty'; + var $t34: $1_object_token_Token; + var $t35: $1_object_token_TokenIdentifiers; + var $t36: $1_string_String; + var $t37: $1_string_String; + var $t38: $1_string_String; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: $1_object_ConstructorRef; + var $t43: $1_option_Option'$1_string_String'; + var $t44: int; + var $t45: int; + var $t46: $1_object_Object'$1_collection_Collection'; + var $t47: int; + var $t48: int; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: $1_option_Option'$1_string_String'; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: $1_option_Option'$1_string_String'; + var $t58: $1_string_String; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: bool; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: bool; + var $t74: int; + var $t75: int; + var $t76: int; + var $t77: int; + var $t78: bool; + var $t79: int; + var $t80: int; + var $t81: $signer; + var $t82: int; + var $t83: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t84: int; + var $t85: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t86: bool; + var $t87: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t88: $1_option_Option'$1_string_String'; + var $t89: bool; + var $t90: $Mutation ($1_option_Option'$1_string_String'); + var $t91: $1_string_String; + var $t92: $1_option_Option'$1_string_String'; + var $t93: bool; + var $t94: bool; + var $t95: bool; + var $t96: Vec (int); + var $t97: $1_string_String; + var $t98: $1_object_token_TokenIdentifiers; + var $t99: int; + var $t100: $1_object_ObjectCore; + var $t101: $1_guid_GUID; + var $t102: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t103: $1_object_token_Token; + var $t104: $1_option_Option'$1_royalty_Royalty'; + var $t105: bool; + var $t106: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t107: $1_royalty_Royalty; + var $t108: $1_option_Option'$1_royalty_Royalty'; + var $t109: bool; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$at(181,11411,11412)"} true; + assume {:print "$track_local(81,4,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,5):", $t5} $t5 == $t5; + + // $t39 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:303:31+27 + assume {:print "$at(181,11649,11676)"} true; + call $t39 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,11649,11676)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // assume Identical($t41, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t41 == $1_transaction_context_spec_generate_unique_address()); + + // $t42 := object::create_object($t39) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:304:31+38 + assume {:print "$at(181,11708,11746)"} true; + call $t42 := $1_object_create_object($t39); + if ($abort_flag) { + assume {:print "$at(181,11708,11746)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[constructor_ref]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:304:13+15 + assume {:print "$track_local(81,4,11):", $t42} $t42 == $t42; + + // $t43 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume {:print "$at(181,11906,11920)"} true; + + // assume And(WellFormed($t43), Le(Len(select option::Option.vec($t43)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t43) && (LenVec($t43->$vec) <= 1)); + + // assume Eq>($t43, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t43, $1_option_spec_none'$1_string_String'()); + + // $t43 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + + // trace_local[uri#327]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:134:9+3 + assume {:print "$at(181,5499,5502)"} true; + assume {:print "$track_local(81,4,36):", $t5} $t5 == $t5; + + // trace_local[royalty#326]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:133:9+7 + assume {:print "$at(181,5465,5472)"} true; + assume {:print "$track_local(81,4,31):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#325]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:132:9+22 + assume {:print "$at(181,5417,5439)"} true; + assume {:print "$track_local(81,4,27):", $t43} $t43 == $t43; + + // trace_local[name_prefix#324]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:129:9+11 + assume {:print "$at(181,5225,5236)"} true; + assume {:print "$track_local(81,4,24):", $t3} $t3 == $t3; + + // trace_local[description#323]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:128:9+11 + assume {:print "$at(181,5196,5207)"} true; + assume {:print "$track_local(81,4,19):", $t2} $t2 == $t2; + + // trace_local[collection_name#322]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:127:9+15 + assume {:print "$at(181,5163,5178)"} true; + assume {:print "$track_local(81,4,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#321]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:126:9+15 + assume {:print "$at(181,5121,5136)"} true; + assume {:print "$track_local(81,4,12):", $t42} $t42 == $t42; + + // trace_local[creator#320]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:125:9+7 + assume {:print "$at(181,5095,5102)"} true; + assume {:print "$track_local(81,4,15):", $t0} $t0 == $t0; + + // $t44 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:31+27 + assume {:print "$at(181,5550,5577)"} true; + call $t44 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,5550,5577)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[creator_address#328]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:13+15 + assume {:print "$track_local(81,4,17):", $t44} $t44 == $t44; + + // $t45 := collection::create_collection_address($t44, $t1) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:137:31+73 + assume {:print "$at(181,5609,5682)"} true; + call $t45 := $1_collection_create_collection_address($t44, $t1); + if ($abort_flag) { + assume {:print "$at(181,5609,5682)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t46 := object::address_to_object($t45) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:26+54 + assume {:print "$at(181,5709,5763)"} true; + call $t46 := $1_object_address_to_object'$1_collection_Collection'($t45); + if ($abort_flag) { + assume {:print "$at(181,5709,5763)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[collection#330]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:13+10 + assume {:print "$track_local(81,4,7):", $t46} $t46 == $t46; + + // trace_local[uri#338]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,4,37):", $t5} $t5 == $t5; + + // trace_local[royalty#337]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,4,32):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#336]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,4,28):", $t43} $t43 == $t43; + + // trace_local[name_prefix#335]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,4,25):", $t3} $t3 == $t3; + + // trace_local[description#334]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,4,20):", $t2} $t2 == $t2; + + // trace_local[collection#333]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,4,8):", $t46} $t46 == $t46; + + // trace_local[constructor_ref#332]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,4,13):", $t42} $t42 == $t42; + + // trace_local[creator#331]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,4,16):", $t0} $t0 == $t0; + + // $t47 := collection::creator($t46) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t47 := $1_collection_creator'$1_collection_Collection'($t46); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t48 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t48 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t49 := ==($t47, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t49 := $IsEqual'address'($t47, $t48); + + // if ($t49) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t49) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t50 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t50 := 2; + assume $IsValid'u64'($t50); + + // $t51 := error::unauthenticated($t50) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t51 := $1_error_unauthenticated($t50); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,4):", $t51} $t51 == $t51; + + // $t40 := move($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t40 := $t51; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#345]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,4,38):", $t5} $t5 == $t5; + + // $t33 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t33 := $t4; + + // trace_local[royalty#344]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,4,33):", $t33} $t33 == $t33; + + // $t29 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t29 := $t43; + + // trace_local[name_with_index_suffix#343]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,4,29):", $t29} $t29 == $t29; + + // trace_local[name_prefix#342]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,4,26):", $t3} $t3 == $t3; + + // trace_local[description#341]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,4,21):", $t2} $t2 == $t2; + + // trace_local[collection#340]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,4,9):", $t46} $t46 == $t46; + + // trace_local[constructor_ref#339]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,4,14):", $t42} $t42 == $t42; + + // $t52 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t52 := $t29; + + // $t53 := opaque begin: option::is_some($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t53); + + // assume Eq($t53, option::spec_is_some($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t53, $1_option_spec_is_some'$1_string_String'($t52)); + + // $t53 := opaque end: option::is_some($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t53) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t53) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t54 := string::length($t3) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t54 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t55 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t55 := 20; + assume $IsValid'u64'($t55); + + // $t56 := +($t54, $t55) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t56 := $AddU64($t54, $t55); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t57 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t57 := $t29; + + // $t58 := opaque begin: option::borrow($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t59, option::spec_is_none($t57)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t59 == $1_option_spec_is_none'$1_string_String'($t57)); + + // if ($t59) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t59) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t57), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t57) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t58); + + // assume Eq($t58, option::spec_borrow($t57)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t58, $1_option_spec_borrow'$1_string_String'($t57)); + + // $t58 := opaque end: option::borrow($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t60 := string::length($t58) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t60 := $1_string_length($t58); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t61 := +($t56, $t60) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t61 := $AddU64($t56, $t60); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t62 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t62 := 128; + assume $IsValid'u64'($t62); + + // $t63 := <=($t61, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t63 := $Le($t61, $t62); + + // if ($t63) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t63) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t64 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t64 := 4; + assume $IsValid'u64'($t64); + + // $t65 := error::out_of_range($t64) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t65 := $1_error_out_of_range($t64); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,4):", $t65} $t65 == $t65; + + // $t40 := move($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t40 := $t65; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t66 := string::length($t3) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t66 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t67 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t67 := 128; + assume $IsValid'u64'($t67); + + // $t68 := <=($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t68 := $Le($t66, $t67); + + // if ($t68) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t68) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t69 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t69 := 4; + assume $IsValid'u64'($t69); + + // $t70 := error::out_of_range($t69) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t70 := $1_error_out_of_range($t69); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,4):", $t70} $t70 == $t70; + + // $t40 := move($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t40 := $t70; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t71 := string::length($t2) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t71 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t72 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t72 := 2048; + assume $IsValid'u64'($t72); + + // $t73 := <=($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t73 := $Le($t71, $t72); + + // if ($t73) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t73) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t74 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t74 := 6; + assume $IsValid'u64'($t74); + + // $t75 := error::out_of_range($t74) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t75 := $1_error_out_of_range($t74); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,4):", $t75} $t75 == $t75; + + // $t40 := move($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t40 := $t75; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t76 := string::length($t5) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t76 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t77 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t77 := 512; + assume $IsValid'u64'($t77); + + // $t78 := <=($t76, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t78 := $Le($t76, $t77); + + // if ($t78) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t78) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t79 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t79 := 5; + assume $IsValid'u64'($t79); + + // $t80 := error::out_of_range($t79) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t80 := $1_error_out_of_range($t79); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,4):", $t80} $t80 == $t80; + + // $t40 := move($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t40 := $t80; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t81 := object::generate_signer($t42) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t81 := $1_object_generate_signer($t42); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[object_signer#346]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,4,30):", $t81} $t81 == $t81; + + // $t82 := signer::address_of($t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t82 := $1_signer_address_of($t81); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t83 := collection::increment_supply($t46, $t82) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t83 := $1_collection_increment_supply($t46, $t82); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t84 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t84 := 0; + assume $IsValid'u64'($t84); + + // $t85 := opaque begin: aggregator_v2::create_snapshot($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t86; + + // if ($t86) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t86) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t85); + + // $t85 := opaque end: aggregator_v2::create_snapshot($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t87 := opaque begin: option::destroy_with_default>($t83, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t87); + + // assume Eq>($t87, if option::spec_is_some>($t83) { + // option::spec_borrow>($t83) + // } else { + // $t85 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t87, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t83)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t83)) else ($t85))); + + // $t87 := opaque end: option::destroy_with_default>($t83, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#347]($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,4,22):", $t87} $t87 == $t87; + + // $t88 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t88 := $t29; + + // $t89 := opaque begin: option::is_some($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t89); + + // assume Eq($t89, option::spec_is_some($t88)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t89, $1_option_spec_is_some'$1_string_String'($t88)); + + // $t89 := opaque end: option::is_some($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t89) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t89) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t90 := borrow_local($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t90 := $Mutation($Local(29), EmptyVec(), $t29); + + // $t91 := opaque begin: option::extract($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t92 := read_ref($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t92 := $Dereference($t90); + + // assume Identical($t93, option::spec_is_none($t90)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t93 == $1_option_spec_is_none'$1_string_String'($Dereference($t90))); + + // if ($t93) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t93) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t90), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t90)) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t90 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t90 := $UpdateMutation($t90, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t90), Le(Len(select option::Option.vec($t90)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t90)) && (LenVec($Dereference($t90)->$vec) <= 1)); + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t91); + + // assume Eq($t91, option::spec_borrow($t92)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t91, $1_option_spec_borrow'$1_string_String'($t92)); + + // assume option::spec_is_none($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t90)); + + // $t91 := opaque end: option::extract($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // pack_ref_deep($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // write_back[LocalRoot($t29)@]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t29 := $Dereference($t90); + + // trace_local[name_with_index_suffix#343]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,4,29):", $t29} $t29 == $t29; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t87, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t94 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t94; + + // if ($t94) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t94) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t87, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t95; + + // if ($t95) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t95) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#348]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,4,23):", $t6} $t6 == $t6; + + // $t96 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t96 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t96); + + // $t97 := string::utf8($t96) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t97 := $1_string_utf8($t96); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[deprecated_name#350]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,4,18):", $t97} $t97 == $t97; + + // $t98 := pack object_token::TokenIdentifiers($t87, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t98 := $1_object_token_TokenIdentifiers($t87, $t6); + + // trace_local[token_concurrent#351]($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,4,35):", $t98} $t98 == $t98; + + // move_to($t98, $t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t81->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t81->$addr, $t98); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t99 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t99 := 0; + assume $IsValid'u64'($t99); + + // assume Identical($t100, global(signer::$address_of($t81))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t100 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t81))); + + // assume Identical($t101, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t100), signer::$address_of($t81)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t101 == $1_guid_GUID($1_guid_ID($t100->$guid_creation_num, $1_signer_$address_of($t81)))); + + // $t102 := object::new_event_handle($t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t102 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t81); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t103 := pack object_token::Token($t46, $t99, $t2, $t97, $t5, $t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t103 := $1_object_token_Token($t46, $t99, $t2, $t97, $t5, $t102); + + // trace_local[token#352]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,4,34):", $t103} $t103 == $t103; + + // move_to($t103, $t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t81->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t81->$addr, $t103); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t104 := copy($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t104 := $t33; + + // $t105 := opaque begin: option::is_some($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t105); + + // assume Eq($t105, option::spec_is_some($t104)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t105, $1_option_spec_is_some'$1_royalty_Royalty'($t104)); + + // $t105 := opaque end: option::is_some($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t105) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t105) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t106 := borrow_local($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t106 := $Mutation($Local(33), EmptyVec(), $t33); + + // $t107 := opaque begin: option::extract($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t108 := read_ref($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t108 := $Dereference($t106); + + // assume Identical($t109, option::spec_is_none($t106)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t109 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106))); + + // if ($t109) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t109) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t106), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106)) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t106 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t106 := $UpdateMutation($t106, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t106), Le(Len(select option::Option.vec($t106)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t106)) && (LenVec($Dereference($t106)->$vec) <= 1)); + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t107); + + // assume Eq($t107, option::spec_borrow($t108)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t107, $1_option_spec_borrow'$1_royalty_Royalty'($t108)); + + // assume option::spec_is_none($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106)); + + // $t107 := opaque end: option::extract($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // pack_ref_deep($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // write_back[LocalRoot($t33)@]($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t33 := $Dereference($t106); + + // trace_local[royalty#344]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,4,33):", $t33} $t33 == $t33; + + // royalty::init($t42, $t107) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t42, $t107); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:315:9+15 + assume {:print "$at(181,11978,11993)"} true; +L22: + + // trace_return[0]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:315:9+15 + assume {:print "$at(181,11978,11993)"} true; + assume {:print "$track_return(81,4,0):", $t42} $t42 == $t42; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; +L23: + + // return $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; + $ret0 := $t42; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 +L24: + + // abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; + $abort_code := $t40; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t90) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t106) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+588 +procedure {:timeLimit 80} $1_object_token_create$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_string_String; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_object_ConstructorRef; + var $t15: $signer; + var $t16: $signer; + var $t17: int; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: $1_aggregator_v2_DerivedStringSnapshot; + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_string_String; + var $t27: $1_option_Option'$1_string_String'; + var $t28: $1_option_Option'$1_string_String'; + var $t29: $1_option_Option'$1_string_String'; + var $t30: $signer; + var $t31: $1_option_Option'$1_royalty_Royalty'; + var $t32: $1_option_Option'$1_royalty_Royalty'; + var $t33: $1_option_Option'$1_royalty_Royalty'; + var $t34: $1_object_token_Token; + var $t35: $1_object_token_TokenIdentifiers; + var $t36: $1_string_String; + var $t37: $1_string_String; + var $t38: $1_string_String; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: $1_object_ConstructorRef; + var $t43: $1_option_Option'$1_string_String'; + var $t44: int; + var $t45: int; + var $t46: $1_object_Object'$1_collection_Collection'; + var $t47: int; + var $t48: int; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: $1_option_Option'$1_string_String'; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: $1_option_Option'$1_string_String'; + var $t58: $1_string_String; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: bool; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: bool; + var $t74: int; + var $t75: int; + var $t76: int; + var $t77: int; + var $t78: bool; + var $t79: int; + var $t80: int; + var $t81: $signer; + var $t82: int; + var $t83: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t84: int; + var $t85: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t86: bool; + var $t87: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t88: $1_option_Option'$1_string_String'; + var $t89: bool; + var $t90: $Mutation ($1_option_Option'$1_string_String'); + var $t91: $1_string_String; + var $t92: $1_option_Option'$1_string_String'; + var $t93: bool; + var $t94: bool; + var $t95: bool; + var $t96: Vec (int); + var $t97: $1_string_String; + var $t98: $1_object_token_TokenIdentifiers; + var $t99: int; + var $t100: $1_object_ObjectCore; + var $t101: $1_guid_GUID; + var $t102: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t103: $1_object_token_Token; + var $t104: $1_option_Option'$1_royalty_Royalty'; + var $t105: bool; + var $t106: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t107: $1_royalty_Royalty; + var $t108: $1_option_Option'$1_royalty_Royalty'; + var $t109: bool; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$at(181,11411,11412)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:295:5+1 + assume {:print "$track_local(81,4,5):", $t5} $t5 == $t5; + + // $t39 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:303:31+27 + assume {:print "$at(181,11649,11676)"} true; + call $t39 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,11649,11676)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // assume Identical($t41, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t41 == $1_transaction_context_spec_generate_unique_address()); + + // $t42 := object::create_object($t39) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:304:31+38 + assume {:print "$at(181,11708,11746)"} true; + call $t42 := $1_object_create_object($t39); + if ($abort_flag) { + assume {:print "$at(181,11708,11746)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[constructor_ref]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:304:13+15 + assume {:print "$track_local(81,4,11):", $t42} $t42 == $t42; + + // $t43 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume {:print "$at(181,11906,11920)"} true; + + // assume And(WellFormed($t43), Le(Len(select option::Option.vec($t43)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t43) && (LenVec($t43->$vec) <= 1)); + + // assume Eq>($t43, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t43, $1_option_spec_none'$1_string_String'()); + + // $t43 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:311:13+14 + + // trace_local[uri#327]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:134:9+3 + assume {:print "$at(181,5499,5502)"} true; + assume {:print "$track_local(81,4,36):", $t5} $t5 == $t5; + + // trace_local[royalty#326]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:133:9+7 + assume {:print "$at(181,5465,5472)"} true; + assume {:print "$track_local(81,4,31):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#325]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:132:9+22 + assume {:print "$at(181,5417,5439)"} true; + assume {:print "$track_local(81,4,27):", $t43} $t43 == $t43; + + // trace_local[name_prefix#324]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:129:9+11 + assume {:print "$at(181,5225,5236)"} true; + assume {:print "$track_local(81,4,24):", $t3} $t3 == $t3; + + // trace_local[description#323]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:128:9+11 + assume {:print "$at(181,5196,5207)"} true; + assume {:print "$track_local(81,4,19):", $t2} $t2 == $t2; + + // trace_local[collection_name#322]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:127:9+15 + assume {:print "$at(181,5163,5178)"} true; + assume {:print "$track_local(81,4,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#321]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:126:9+15 + assume {:print "$at(181,5121,5136)"} true; + assume {:print "$track_local(81,4,12):", $t42} $t42 == $t42; + + // trace_local[creator#320]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:125:9+7 + assume {:print "$at(181,5095,5102)"} true; + assume {:print "$track_local(81,4,15):", $t0} $t0 == $t0; + + // $t44 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:31+27 + assume {:print "$at(181,5550,5577)"} true; + call $t44 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,5550,5577)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[creator_address#328]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:13+15 + assume {:print "$track_local(81,4,17):", $t44} $t44 == $t44; + + // $t45 := collection::create_collection_address($t44, $t1) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:137:31+73 + assume {:print "$at(181,5609,5682)"} true; + call $t45 := $1_collection_create_collection_address($t44, $t1); + if ($abort_flag) { + assume {:print "$at(181,5609,5682)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t46 := object::address_to_object($t45) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:26+54 + assume {:print "$at(181,5709,5763)"} true; + call $t46 := $1_object_address_to_object'$1_collection_Collection'($t45); + if ($abort_flag) { + assume {:print "$at(181,5709,5763)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[collection#330]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:13+10 + assume {:print "$track_local(81,4,7):", $t46} $t46 == $t46; + + // trace_local[uri#338]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,4,37):", $t5} $t5 == $t5; + + // trace_local[royalty#337]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,4,32):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#336]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,4,28):", $t43} $t43 == $t43; + + // trace_local[name_prefix#335]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,4,25):", $t3} $t3 == $t3; + + // trace_local[description#334]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,4,20):", $t2} $t2 == $t2; + + // trace_local[collection#333]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,4,8):", $t46} $t46 == $t46; + + // trace_local[constructor_ref#332]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,4,13):", $t42} $t42 == $t42; + + // trace_local[creator#331]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,4,16):", $t0} $t0 == $t0; + + // $t47 := collection::creator($t46) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t47 := $1_collection_creator'$1_collection_Collection'($t46); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t48 := signer::address_of($t0) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t48 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t49 := ==($t47, $t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t49 := $IsEqual'address'($t47, $t48); + + // if ($t49) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t49) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t50 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t50 := 2; + assume $IsValid'u64'($t50); + + // $t51 := error::unauthenticated($t50) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t51 := $1_error_unauthenticated($t50); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,4):", $t51} $t51 == $t51; + + // $t40 := move($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t40 := $t51; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#345]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,4,38):", $t5} $t5 == $t5; + + // $t33 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t33 := $t4; + + // trace_local[royalty#344]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,4,33):", $t33} $t33 == $t33; + + // $t29 := $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t29 := $t43; + + // trace_local[name_with_index_suffix#343]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,4,29):", $t29} $t29 == $t29; + + // trace_local[name_prefix#342]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,4,26):", $t3} $t3 == $t3; + + // trace_local[description#341]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,4,21):", $t2} $t2 == $t2; + + // trace_local[collection#340]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,4,9):", $t46} $t46 == $t46; + + // trace_local[constructor_ref#339]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,4,14):", $t42} $t42 == $t42; + + // $t52 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t52 := $t29; + + // $t53 := opaque begin: option::is_some($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t53); + + // assume Eq($t53, option::spec_is_some($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t53, $1_option_spec_is_some'$1_string_String'($t52)); + + // $t53 := opaque end: option::is_some($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t53) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t53) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t54 := string::length($t3) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t54 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t55 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t55 := 20; + assume $IsValid'u64'($t55); + + // $t56 := +($t54, $t55) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t56 := $AddU64($t54, $t55); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t57 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t57 := $t29; + + // $t58 := opaque begin: option::borrow($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t59, option::spec_is_none($t57)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t59 == $1_option_spec_is_none'$1_string_String'($t57)); + + // if ($t59) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t59) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t57), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t57) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t58); + + // assume Eq($t58, option::spec_borrow($t57)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t58, $1_option_spec_borrow'$1_string_String'($t57)); + + // $t58 := opaque end: option::borrow($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t60 := string::length($t58) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t60 := $1_string_length($t58); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t61 := +($t56, $t60) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t61 := $AddU64($t56, $t60); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t62 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t62 := 128; + assume $IsValid'u64'($t62); + + // $t63 := <=($t61, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t63 := $Le($t61, $t62); + + // if ($t63) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t63) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t64 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t64 := 4; + assume $IsValid'u64'($t64); + + // $t65 := error::out_of_range($t64) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t65 := $1_error_out_of_range($t64); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,4):", $t65} $t65 == $t65; + + // $t40 := move($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t40 := $t65; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t66 := string::length($t3) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t66 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t67 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t67 := 128; + assume $IsValid'u64'($t67); + + // $t68 := <=($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t68 := $Le($t66, $t67); + + // if ($t68) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t68) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t69 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t69 := 4; + assume $IsValid'u64'($t69); + + // $t70 := error::out_of_range($t69) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t70 := $1_error_out_of_range($t69); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,4):", $t70} $t70 == $t70; + + // $t40 := move($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t40 := $t70; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t71 := string::length($t2) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t71 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t72 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t72 := 2048; + assume $IsValid'u64'($t72); + + // $t73 := <=($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t73 := $Le($t71, $t72); + + // if ($t73) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t73) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t74 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t74 := 6; + assume $IsValid'u64'($t74); + + // $t75 := error::out_of_range($t74) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t75 := $1_error_out_of_range($t74); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,4):", $t75} $t75 == $t75; + + // $t40 := move($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t40 := $t75; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t76 := string::length($t5) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t76 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t77 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t77 := 512; + assume $IsValid'u64'($t77); + + // $t78 := <=($t76, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t78 := $Le($t76, $t77); + + // if ($t78) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t78) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t79 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t79 := 5; + assume $IsValid'u64'($t79); + + // $t80 := error::out_of_range($t79) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t80 := $1_error_out_of_range($t79); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_abort($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,4):", $t80} $t80 == $t80; + + // $t40 := move($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t40 := $t80; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t81 := object::generate_signer($t42) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t81 := $1_object_generate_signer($t42); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[object_signer#346]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,4,30):", $t81} $t81 == $t81; + + // $t82 := signer::address_of($t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t82 := $1_signer_address_of($t81); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t83 := collection::increment_supply($t46, $t82) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t83 := $1_collection_increment_supply($t46, $t82); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t84 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t84 := 0; + assume $IsValid'u64'($t84); + + // $t85 := opaque begin: aggregator_v2::create_snapshot($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t86; + + // if ($t86) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t86) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t85); + + // $t85 := opaque end: aggregator_v2::create_snapshot($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t87 := opaque begin: option::destroy_with_default>($t83, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t87); + + // assume Eq>($t87, if option::spec_is_some>($t83) { + // option::spec_borrow>($t83) + // } else { + // $t85 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t87, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t83)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t83)) else ($t85))); + + // $t87 := opaque end: option::destroy_with_default>($t83, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#347]($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,4,22):", $t87} $t87 == $t87; + + // $t88 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t88 := $t29; + + // $t89 := opaque begin: option::is_some($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t89); + + // assume Eq($t89, option::spec_is_some($t88)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t89, $1_option_spec_is_some'$1_string_String'($t88)); + + // $t89 := opaque end: option::is_some($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t89) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t89) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t90 := borrow_local($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t90 := $Mutation($Local(29), EmptyVec(), $t29); + + // $t91 := opaque begin: option::extract($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t92 := read_ref($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t92 := $Dereference($t90); + + // assume Identical($t93, option::spec_is_none($t90)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t93 == $1_option_spec_is_none'$1_string_String'($Dereference($t90))); + + // if ($t93) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t93) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t90), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t90)) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t90 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t90 := $UpdateMutation($t90, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t90), Le(Len(select option::Option.vec($t90)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t90)) && (LenVec($Dereference($t90)->$vec) <= 1)); + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t91); + + // assume Eq($t91, option::spec_borrow($t92)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t91, $1_option_spec_borrow'$1_string_String'($t92)); + + // assume option::spec_is_none($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t90)); + + // $t91 := opaque end: option::extract($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t90)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t90)->$vec) <= 1); + + // write_back[LocalRoot($t29)@]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t29 := $Dereference($t90); + + // trace_local[name_with_index_suffix#343]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,4,29):", $t29} $t29 == $t29; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t87, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t94 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t94; + + // if ($t94) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t94) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t87, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t95; + + // if ($t95) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t95) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#348]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,4,23):", $t6} $t6 == $t6; + + // $t96 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t96 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t96); + + // $t97 := string::utf8($t96) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t97 := $1_string_utf8($t96); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // trace_local[deprecated_name#350]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,4,18):", $t97} $t97 == $t97; + + // $t98 := pack object_token::TokenIdentifiers($t87, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t98 := $1_object_token_TokenIdentifiers($t87, $t6); + + // trace_local[token_concurrent#351]($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,4,35):", $t98} $t98 == $t98; + + // move_to($t98, $t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t81->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t81->$addr, $t98); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t99 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t99 := 0; + assume $IsValid'u64'($t99); + + // assume Identical($t100, global(signer::$address_of($t81))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t100 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t81))); + + // assume Identical($t101, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t100), signer::$address_of($t81)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t101 == $1_guid_GUID($1_guid_ID($t100->$guid_creation_num, $1_signer_$address_of($t81)))); + + // $t102 := object::new_event_handle($t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t102 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t81); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t103 := pack object_token::Token($t46, $t99, $t2, $t97, $t5, $t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t103 := $1_object_token_Token($t46, $t99, $t2, $t97, $t5, $t102); + + // trace_local[token#352]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,4,34):", $t103} $t103 == $t103; + + // move_to($t103, $t81) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t81->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t81->$addr, $t103); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // $t104 := copy($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t104 := $t33; + + // $t105 := opaque begin: option::is_some($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t105); + + // assume Eq($t105, option::spec_is_some($t104)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t105, $1_option_spec_is_some'$1_royalty_Royalty'($t104)); + + // $t105 := opaque end: option::is_some($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t105) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t105) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t106 := borrow_local($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t106 := $Mutation($Local(33), EmptyVec(), $t33); + + // $t107 := opaque begin: option::extract($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t108 := read_ref($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t108 := $Dereference($t106); + + // assume Identical($t109, option::spec_is_none($t106)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t109 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106))); + + // if ($t109) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t109) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t106), Eq(262145, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106)) && $IsEqual'num'(262145, $t40)); + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t106 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t106 := $UpdateMutation($t106, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t106), Le(Len(select option::Option.vec($t106)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t106)) && (LenVec($Dereference($t106)->$vec) <= 1)); + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t107); + + // assume Eq($t107, option::spec_borrow($t108)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t107, $1_option_spec_borrow'$1_royalty_Royalty'($t108)); + + // assume option::spec_is_none($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t106)); + + // $t107 := opaque end: option::extract($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t106)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t106)->$vec) <= 1); + + // write_back[LocalRoot($t33)@]($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t33 := $Dereference($t106); + + // trace_local[royalty#344]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,4,33):", $t33} $t33 == $t33; + + // royalty::init($t42, $t107) on_abort goto L24 with $t40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t42, $t107); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t40 := $abort_code; + assume {:print "$track_abort(81,4):", $t40} $t40 == $t40; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:315:9+15 + assume {:print "$at(181,11978,11993)"} true; +L22: + + // trace_return[0]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:315:9+15 + assume {:print "$at(181,11978,11993)"} true; + assume {:print "$track_return(81,4,0):", $t42} $t42 == $t42; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; +L23: + + // return $t42 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; + $ret0 := $t42; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 +L24: + + // abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:316:5+1 + assume {:print "$at(181,11998,11999)"} true; + $abort_code := $t40; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t90) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t106) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::burn [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1406 +procedure {:inline 1} $1_object_token_burn(_$t0: $1_object_token_BurnRef) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_DeleteRef; + var $t9: int; + var $t10: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t11: int; + var $t12: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $1_object_token_BurnRef; + var $t17: $1_option_Option'$1_object_DeleteRef'; + var $t18: bool; + var $t19: $Mutation ($1_object_token_BurnRef); + var $t20: $Mutation ($1_option_Option'$1_object_DeleteRef'); + var $t21: $1_object_DeleteRef; + var $t22: $1_option_Option'$1_object_DeleteRef'; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: $1_object_Object'$1_object_token_Token'; + var $t27: int; + var $t28: $Mutation ($1_object_token_BurnRef); + var $t29: $Mutation ($1_option_Option'address'); + var $t30: int; + var $t31: $1_option_Option'address'; + var $t32: bool; + var $t33: $1_object_Object'$1_object_token_Token'; + var $t34: int; + var $t35: bool; + var $t36: $1_object_token_Token; + var $t37: $1_object_Object'$1_collection_Collection'; + var $t38: int; + var $t39: $1_string_String; + var $t40: $1_string_String; + var $t41: $1_string_String; + var $t42: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t43: bool; + var $t44: $1_object_token_TokenIdentifiers; + var $t45: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t46: $1_aggregator_v2_DerivedStringSnapshot; + var $t47: bool; + var $t48: $1_option_Option'u64'; + var $t0: $1_object_token_BurnRef; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_event_EventHandle'$1_object_token_MutationEvent'': $1_event_EventHandle'$1_object_token_MutationEvent'; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_BurnRef': $1_object_token_BurnRef; + var $temp_0'$1_option_Option'$1_object_DeleteRef'': $1_option_Option'$1_object_DeleteRef'; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume {:print "$at(181,27768,27769)"} true; + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // $t16 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:59+8 + assume {:print "$at(181,27896,27904)"} true; + $t16 := $t0; + + // $t17 := get_field.inner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:58+15 + $t17 := $t16->$inner; + + // $t18 := opaque begin: option::is_some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + assume $IsValid'bool'($t18); + + // assume Eq($t18, option::spec_is_some($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + assume $IsEqual'bool'($t18, $1_option_spec_is_some'$1_object_DeleteRef'($t17)); + + // $t18 := opaque end: option::is_some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:51+8 + assume {:print "$at(181,27965,27973)"} true; +L1: + + // $t19 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:51+8 + assume {:print "$at(181,27965,27973)"} true; + $t19 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t20 := borrow_field.inner($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:46+19 + $t20 := $ChildMutation($t19, 0, $Dereference($t19)->$inner); + + // $t21 := opaque begin: option::extract($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + + // $t22 := read_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + $t22 := $Dereference($t20); + + // assume Identical($t23, option::spec_is_none($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume ($t23 == $1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20))); + + // if ($t23) goto L16 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + if ($t23) { goto L16; } else { goto L17; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 +L11: + + // assume And(option::spec_is_none($t20), Eq(262145, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + assume ($1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20)) && $IsEqual'num'(262145, $t24)); + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + goto L9; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 +L10: + + // $t20 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + havoc $temp_0'$1_option_Option'$1_object_DeleteRef''; + $t20 := $UpdateMutation($t20, $temp_0'$1_option_Option'$1_object_DeleteRef''); + + // assume And(WellFormed($t20), Le(Len(select option::Option.vec($t20)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($Dereference($t20)) && (LenVec($Dereference($t20)->$vec) <= 1)); + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $IsValid'$1_object_DeleteRef'($t21); + + // assume Eq($t21, option::spec_borrow($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $IsEqual'$1_object_DeleteRef'($t21, $1_option_spec_borrow'$1_object_DeleteRef'($t22)); + + // assume option::spec_is_none($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20)); + + // $t21 := opaque end: option::extract($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + + // write_back[Reference($t19).inner (option::Option)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + $t19 := $UpdateMutation($t19, $Update'$1_object_token_BurnRef'_inner($Dereference($t19), $Dereference($t20))); + + // pack_ref_deep($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + + // write_back[LocalRoot($t0)@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + $t0 := $Dereference($t19); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // trace_local[delete_ref]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:17+10 + assume {:print "$track_local(81,1,8):", $t21} $t21 == $t21; + + // $t25 := object::address_from_delete_ref($t21) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:743:24+44 + assume {:print "$at(181,28005,28049)"} true; + call $t25 := $1_object_address_from_delete_ref($t21); + if ($abort_flag) { + assume {:print "$at(181,28005,28049)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[addr]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:743:17+4 + assume {:print "$track_local(81,1,4):", $t25} $t25 == $t25; + + // $t26 := object::address_to_object($t25) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:48+38 + assume {:print "$at(181,28098,28136)"} true; + call $t26 := $1_object_address_to_object'$1_object_token_Token'($t25); + if ($abort_flag) { + assume {:print "$at(181,28098,28136)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t27 := object::owner($t26) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:34+53 + call $t27 := $1_object_owner'$1_object_token_Token'($t26); + if ($abort_flag) { + assume {:print "$at(181,28084,28137)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[previous_owner]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:17+14 + assume {:print "$track_local(81,1,13):", $t27} $t27 == $t27; + + // object::delete($t21) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:745:13+26 + assume {:print "$at(181,28151,28177)"} true; + call $1_object_delete($t21); + if ($abort_flag) { + assume {:print "$at(181,28151,28177)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t2 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + assume {:print "$at(181,27875,28423)"} true; + $t2 := $t27; + + // $t1 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + $t1 := $t25; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:45+8 + assume {:print "$at(181,28275,28283)"} true; +L0: + + // $t28 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:45+8 + assume {:print "$at(181,28275,28283)"} true; + $t28 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t29 := borrow_field.self($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:40+18 + $t29 := $ChildMutation($t28, 1, $Dereference($t28)->$self); + + // $t30 := opaque begin: option::extract
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + + // $t31 := read_ref($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + $t31 := $Dereference($t29); + + // assume Identical($t32, option::spec_is_none
($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume ($t32 == $1_option_spec_is_none'address'($Dereference($t29))); + + // if ($t32) goto L18 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + if ($t32) { goto L18; } else { goto L19; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 +L13: + + // assume And(option::spec_is_none
($t29), Eq(262145, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t29)) && $IsEqual'num'(262145, $t24)); + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + goto L9; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 +L12: + + // $t29 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + havoc $temp_0'$1_option_Option'address''; + $t29 := $UpdateMutation($t29, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t29), Le(Len
(select option::Option.vec($t29)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume ($IsValid'$1_option_Option'address''($Dereference($t29)) && (LenVec($Dereference($t29)->$vec) <= 1)); + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $IsValid'address'($t30); + + // assume Eq
($t30, option::spec_borrow
($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $IsEqual'address'($t30, $1_option_spec_borrow'address'($t31)); + + // assume option::spec_is_none
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $1_option_spec_is_none'address'($Dereference($t29)); + + // $t30 := opaque end: option::extract
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + + // write_back[Reference($t28).self (option::Option
)]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + $t28 := $UpdateMutation($t28, $Update'$1_object_token_BurnRef'_self($Dereference($t28), $Dereference($t29))); + + // pack_ref_deep($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + + // write_back[LocalRoot($t0)@]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + $t0 := $Dereference($t28); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // trace_local[addr#1]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:17+4 + assume {:print "$track_local(81,1,5):", $t30} $t30 == $t30; + + // $t33 := object::address_to_object($t30) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:48+38 + assume {:print "$at(181,28338,28376)"} true; + call $t33 := $1_object_address_to_object'$1_object_token_Token'($t30); + if ($abort_flag) { + assume {:print "$at(181,28338,28376)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t34 := object::owner($t33) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:34+53 + call $t34 := $1_object_owner'$1_object_token_Token'($t33); + if ($abort_flag) { + assume {:print "$at(181,28324,28377)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[previous_owner#2]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:17+14 + assume {:print "$track_local(81,1,14):", $t34} $t34 == $t34; + + // $t2 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + assume {:print "$at(181,27875,28423)"} true; + $t2 := $t34; + + // $t1 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + $t1 := $t30; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 +L2: + + // trace_local[previous_owner#6]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:20+14 + assume {:print "$at(181,27857,27871)"} true; + assume {:print "$track_local(81,1,15):", $t2} $t2 == $t2; + + // trace_local[addr#5]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:14+4 + assume {:print "$track_local(81,1,6):", $t1} $t1 == $t1; + + // $t35 := royalty::exists_at($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:753:13+24 + assume {:print "$at(181,28438,28462)"} true; + call $t35 := $1_royalty_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(181,28438,28462)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // if ($t35) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:753:9+75 + if ($t35) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:754:29+4 + assume {:print "$at(181,28494,28498)"} true; +L4: + + // royalty::delete($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:754:13+21 + assume {:print "$at(181,28478,28499)"} true; + call $1_royalty_delete($t1); + if ($abort_flag) { + assume {:print "$at(181,28478,28499)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:764:30+4 + assume {:print "$at(181,28720,28724)"} true; +L3: + + // $t36 := move_from($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:764:13+9 + assume {:print "$at(181,28703,28712)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t36 := $ResourceValue($1_object_token_Token_$memory, $t1); + $1_object_token_Token_$memory := $ResourceRemove($1_object_token_Token_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(181,28703,28712)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // ($t37, $t38, $t39, $t40, $t41, $t42) := unpack object_token::Token($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:757:13+176 + assume {:print "$at(181,28524,28700)"} true; + $t37 := $t36->$collection; + $t38 := $t36->$index; + $t39 := $t36->$description; + $t40 := $t36->$name; + $t41 := $t36->$uri; + $t42 := $t36->$mutation_events; + + // trace_local[mutation_events]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:763:13+15 + assume {:print "$at(181,28674,28689)"} true; + assume {:print "$track_local(81,1,12):", $t42} $t42 == $t42; + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:762:18+1 + assume {:print "$at(181,28659,28660)"} true; + + // drop($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:761:19+1 + assume {:print "$at(181,28639,28640)"} true; + + // drop($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:760:26+1 + assume {:print "$at(181,28618,28619)"} true; + + // trace_local[deprecated_index]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:759:20+16 + assume {:print "$at(181,28575,28591)"} true; + assume {:print "$track_local(81,1,9):", $t38} $t38 == $t38; + + // trace_local[collection]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:758:13+10 + assume {:print "$at(181,28544,28554)"} true; + assume {:print "$track_local(81,1,7):", $t37} $t37 == $t37; + + // $t43 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:25+6 + assume {:print "$at(181,28752,28758)"} true; + $t43 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t1); + + // if ($t43) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + if ($t43) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:770:45+4 + assume {:print "$at(181,28913,28917)"} true; +L6: + + // $t44 := move_from($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:770:17+9 + assume {:print "$at(181,28885,28894)"} true; + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t44 := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t1); + $1_object_token_TokenIdentifiers_$memory := $ResourceRemove($1_object_token_TokenIdentifiers_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(181,28885,28894)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // ($t45, $t46) := unpack object_token::TokenIdentifiers($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:767:17+80 + assume {:print "$at(181,28802,28882)"} true; + $t45 := $t44->$index; + $t46 := $t44->$name; + + // drop($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:769:23+1 + assume {:print "$at(181,28866,28867)"} true; + + // trace_local[index]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:768:17+5 + assume {:print "$at(181,28837,28842)"} true; + assume {:print "$track_local(81,1,10):", $t45} $t45 == $t45; + + // $t3 := opaque begin: aggregator_v2::read_snapshot($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + + // $t47 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + havoc $t47; + + // if ($t47) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + if ($t47) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 +L15: + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + goto L9; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 +L14: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: aggregator_v2::read_snapshot($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + assume {:print "$at(181,28748,29024)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:773:13+16 + assume {:print "$at(181,28998,29014)"} true; +L5: + + // $t3 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + assume {:print "$at(181,28748,29024)"} true; + $t3 := $t38; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 +L7: + + // trace_local[index#8]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:13+5 + assume {:print "$at(181,28740,28745)"} true; + assume {:print "$track_local(81,1,11):", $t3} $t3 == $t3; + + // event::destroy_handle($t42) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:776:9+38 + assume {:print "$at(181,29035,29073)"} true; + call $1_event_destroy_handle'$1_object_token_MutationEvent'($t42); + if ($abort_flag) { + assume {:print "$at(181,29035,29073)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t48 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume {:print "$at(181,29131,29150)"} true; + + // assume And(WellFormed($t48), Le(Len(select option::Option.vec($t48)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume ($IsValid'$1_option_Option'u64''($t48) && (LenVec($t48->$vec) <= 1)); + + // assume Eq>($t48, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume $IsEqual'$1_option_Option'u64''($t48, $1_option_spec_some'u64'($t3)); + + // $t48 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + + // collection::decrement_supply($t37, $t1, $t48, $t2) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:9+84 + call $1_collection_decrement_supply($t37, $t1, $t48, $t2); + if ($abort_flag) { + assume {:print "$at(181,29083,29167)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 +L9: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t19) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + + // label L17 at :1:1+10 +L17: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + + // label L18 at :1:1+10 +L18: + + // drop($t28) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + + // label L19 at :1:1+10 +L19: + + // drop($t29) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + +} + +// fun object_token::burn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1406 +procedure {:timeLimit 80} $1_object_token_burn$verify(_$t0: $1_object_token_BurnRef) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_DeleteRef; + var $t9: int; + var $t10: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t11: int; + var $t12: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: $1_object_token_BurnRef; + var $t17: $1_option_Option'$1_object_DeleteRef'; + var $t18: bool; + var $t19: $Mutation ($1_object_token_BurnRef); + var $t20: $Mutation ($1_option_Option'$1_object_DeleteRef'); + var $t21: $1_object_DeleteRef; + var $t22: $1_option_Option'$1_object_DeleteRef'; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: $1_object_Object'$1_object_token_Token'; + var $t27: int; + var $t28: $Mutation ($1_object_token_BurnRef); + var $t29: $Mutation ($1_option_Option'address'); + var $t30: int; + var $t31: $1_option_Option'address'; + var $t32: bool; + var $t33: $1_object_Object'$1_object_token_Token'; + var $t34: int; + var $t35: bool; + var $t36: $1_object_token_Token; + var $t37: $1_object_Object'$1_collection_Collection'; + var $t38: int; + var $t39: $1_string_String; + var $t40: $1_string_String; + var $t41: $1_string_String; + var $t42: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t43: bool; + var $t44: $1_object_token_TokenIdentifiers; + var $t45: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t46: $1_aggregator_v2_DerivedStringSnapshot; + var $t47: bool; + var $t48: $1_option_Option'u64'; + var $t0: $1_object_token_BurnRef; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_event_EventHandle'$1_object_token_MutationEvent'': $1_event_EventHandle'$1_object_token_MutationEvent'; + var $temp_0'$1_object_DeleteRef': $1_object_DeleteRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_BurnRef': $1_object_token_BurnRef; + var $temp_0'$1_option_Option'$1_object_DeleteRef'': $1_option_Option'$1_object_DeleteRef'; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($t0))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume {:print "$at(181,27768,27769)"} true; + assume ($IsValid'$1_object_token_BurnRef'($t0) && ((LenVec($t0->$inner->$vec) <= 1) && (LenVec($t0->$self->$vec) <= 1))); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:740:5+1 + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // $t16 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:59+8 + assume {:print "$at(181,27896,27904)"} true; + $t16 := $t0; + + // $t17 := get_field.inner($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:58+15 + $t17 := $t16->$inner; + + // $t18 := opaque begin: option::is_some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + assume $IsValid'bool'($t18); + + // assume Eq($t18, option::spec_is_some($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + assume $IsEqual'bool'($t18, $1_option_spec_is_some'$1_object_DeleteRef'($t17)); + + // $t18 := opaque end: option::is_some($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:42+32 + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:51+8 + assume {:print "$at(181,27965,27973)"} true; +L1: + + // $t19 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:51+8 + assume {:print "$at(181,27965,27973)"} true; + $t19 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t20 := borrow_field.inner($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:46+19 + $t20 := $ChildMutation($t19, 0, $Dereference($t19)->$inner); + + // $t21 := opaque begin: option::extract($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + + // $t22 := read_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + $t22 := $Dereference($t20); + + // assume Identical($t23, option::spec_is_none($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume ($t23 == $1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20))); + + // if ($t23) goto L16 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + if ($t23) { goto L16; } else { goto L17; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 +L11: + + // assume And(option::spec_is_none($t20), Eq(262145, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + assume ($1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20)) && $IsEqual'num'(262145, $t24)); + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + goto L9; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 +L10: + + // $t20 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + havoc $temp_0'$1_option_Option'$1_object_DeleteRef''; + $t20 := $UpdateMutation($t20, $temp_0'$1_option_Option'$1_object_DeleteRef''); + + // assume And(WellFormed($t20), Le(Len(select option::Option.vec($t20)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($Dereference($t20)) && (LenVec($Dereference($t20)->$vec) <= 1)); + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $IsValid'$1_object_DeleteRef'($t21); + + // assume Eq($t21, option::spec_borrow($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $IsEqual'$1_object_DeleteRef'($t21, $1_option_spec_borrow'$1_object_DeleteRef'($t22)); + + // assume option::spec_is_none($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume $1_option_spec_is_none'$1_object_DeleteRef'($Dereference($t20)); + + // $t21 := opaque end: option::extract($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + + // write_back[Reference($t19).inner (option::Option)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + $t19 := $UpdateMutation($t19, $Update'$1_object_token_BurnRef'_inner($Dereference($t19), $Dereference($t20))); + + // assert Le(Len(select option::Option.vec(select object_token::BurnRef.inner($t19))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t19)->$inner->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select object_token::BurnRef.self($t19))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t19)->$self->$vec) <= 1); + + // write_back[LocalRoot($t0)@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$at(181,27944,27980)"} true; + $t0 := $Dereference($t19); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:30+36 + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // trace_local[delete_ref]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:742:17+10 + assume {:print "$track_local(81,1,8):", $t21} $t21 == $t21; + + // $t25 := object::address_from_delete_ref($t21) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:743:24+44 + assume {:print "$at(181,28005,28049)"} true; + call $t25 := $1_object_address_from_delete_ref($t21); + if ($abort_flag) { + assume {:print "$at(181,28005,28049)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[addr]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:743:17+4 + assume {:print "$track_local(81,1,4):", $t25} $t25 == $t25; + + // $t26 := object::address_to_object($t25) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:48+38 + assume {:print "$at(181,28098,28136)"} true; + call $t26 := $1_object_address_to_object'$1_object_token_Token'($t25); + if ($abort_flag) { + assume {:print "$at(181,28098,28136)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t27 := object::owner($t26) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:34+53 + call $t27 := $1_object_owner'$1_object_token_Token'($t26); + if ($abort_flag) { + assume {:print "$at(181,28084,28137)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[previous_owner]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:744:17+14 + assume {:print "$track_local(81,1,13):", $t27} $t27 == $t27; + + // object::delete($t21) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:745:13+26 + assume {:print "$at(181,28151,28177)"} true; + call $1_object_delete($t21); + if ($abort_flag) { + assume {:print "$at(181,28151,28177)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t2 := $t27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + assume {:print "$at(181,27875,28423)"} true; + $t2 := $t27; + + // $t1 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + $t1 := $t25; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:45+8 + assume {:print "$at(181,28275,28283)"} true; +L0: + + // $t28 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:45+8 + assume {:print "$at(181,28275,28283)"} true; + $t28 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t29 := borrow_field.self($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:40+18 + $t29 := $ChildMutation($t28, 1, $Dereference($t28)->$self); + + // $t30 := opaque begin: option::extract
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + + // $t31 := read_ref($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + $t31 := $Dereference($t29); + + // assume Identical($t32, option::spec_is_none
($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume ($t32 == $1_option_spec_is_none'address'($Dereference($t29))); + + // if ($t32) goto L18 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + if ($t32) { goto L18; } else { goto L19; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 +L13: + + // assume And(option::spec_is_none
($t29), Eq(262145, $t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + assume ($1_option_spec_is_none'address'($Dereference($t29)) && $IsEqual'num'(262145, $t24)); + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + goto L9; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 +L12: + + // $t29 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + havoc $temp_0'$1_option_Option'address''; + $t29 := $UpdateMutation($t29, $temp_0'$1_option_Option'address''); + + // assume And(WellFormed($t29), Le(Len
(select option::Option.vec($t29)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume ($IsValid'$1_option_Option'address''($Dereference($t29)) && (LenVec($Dereference($t29)->$vec) <= 1)); + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $IsValid'address'($t30); + + // assume Eq
($t30, option::spec_borrow
($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $IsEqual'address'($t30, $1_option_spec_borrow'address'($t31)); + + // assume option::spec_is_none
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume $1_option_spec_is_none'address'($Dereference($t29)); + + // $t30 := opaque end: option::extract
($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + + // write_back[Reference($t28).self (option::Option
)]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + $t28 := $UpdateMutation($t28, $Update'$1_object_token_BurnRef'_self($Dereference($t28), $Dereference($t29))); + + // assert Le(Len(select option::Option.vec(select object_token::BurnRef.inner($t28))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t28)->$inner->$vec) <= 1); + + // assert Le(Len
(select option::Option.vec(select object_token::BurnRef.self($t28))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t28)->$self->$vec) <= 1); + + // write_back[LocalRoot($t0)@]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$at(181,28254,28289)"} true; + $t0 := $Dereference($t28); + + // trace_local[burn_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:24+35 + assume {:print "$track_local(81,1,0):", $t0} $t0 == $t0; + + // trace_local[addr#1]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:748:17+4 + assume {:print "$track_local(81,1,5):", $t30} $t30 == $t30; + + // $t33 := object::address_to_object($t30) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:48+38 + assume {:print "$at(181,28338,28376)"} true; + call $t33 := $1_object_address_to_object'$1_object_token_Token'($t30); + if ($abort_flag) { + assume {:print "$at(181,28338,28376)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t34 := object::owner($t33) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:34+53 + call $t34 := $1_object_owner'$1_object_token_Token'($t33); + if ($abort_flag) { + assume {:print "$at(181,28324,28377)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // trace_local[previous_owner#2]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:749:17+14 + assume {:print "$track_local(81,1,14):", $t34} $t34 == $t34; + + // $t2 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + assume {:print "$at(181,27875,28423)"} true; + $t2 := $t34; + + // $t1 := $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 + $t1 := $t30; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:38+548 +L2: + + // trace_local[previous_owner#6]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:20+14 + assume {:print "$at(181,27857,27871)"} true; + assume {:print "$track_local(81,1,15):", $t2} $t2 == $t2; + + // trace_local[addr#5]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:741:14+4 + assume {:print "$track_local(81,1,6):", $t1} $t1 == $t1; + + // $t35 := royalty::exists_at($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:753:13+24 + assume {:print "$at(181,28438,28462)"} true; + call $t35 := $1_royalty_exists_at($t1); + if ($abort_flag) { + assume {:print "$at(181,28438,28462)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // if ($t35) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:753:9+75 + if ($t35) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:754:29+4 + assume {:print "$at(181,28494,28498)"} true; +L4: + + // royalty::delete($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:754:13+21 + assume {:print "$at(181,28478,28499)"} true; + call $1_royalty_delete($t1); + if ($abort_flag) { + assume {:print "$at(181,28478,28499)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:764:30+4 + assume {:print "$at(181,28720,28724)"} true; +L3: + + // $t36 := move_from($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:764:13+9 + assume {:print "$at(181,28703,28712)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t36 := $ResourceValue($1_object_token_Token_$memory, $t1); + $1_object_token_Token_$memory := $ResourceRemove($1_object_token_Token_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(181,28703,28712)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // ($t37, $t38, $t39, $t40, $t41, $t42) := unpack object_token::Token($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:757:13+176 + assume {:print "$at(181,28524,28700)"} true; + $t37 := $t36->$collection; + $t38 := $t36->$index; + $t39 := $t36->$description; + $t40 := $t36->$name; + $t41 := $t36->$uri; + $t42 := $t36->$mutation_events; + + // trace_local[mutation_events]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:763:13+15 + assume {:print "$at(181,28674,28689)"} true; + assume {:print "$track_local(81,1,12):", $t42} $t42 == $t42; + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:762:18+1 + assume {:print "$at(181,28659,28660)"} true; + + // drop($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:761:19+1 + assume {:print "$at(181,28639,28640)"} true; + + // drop($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:760:26+1 + assume {:print "$at(181,28618,28619)"} true; + + // trace_local[deprecated_index]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:759:20+16 + assume {:print "$at(181,28575,28591)"} true; + assume {:print "$track_local(81,1,9):", $t38} $t38 == $t38; + + // trace_local[collection]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:758:13+10 + assume {:print "$at(181,28544,28554)"} true; + assume {:print "$track_local(81,1,7):", $t37} $t37 == $t37; + + // $t43 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:25+6 + assume {:print "$at(181,28752,28758)"} true; + $t43 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t1); + + // if ($t43) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + if ($t43) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:770:45+4 + assume {:print "$at(181,28913,28917)"} true; +L6: + + // $t44 := move_from($t1) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:770:17+9 + assume {:print "$at(181,28885,28894)"} true; + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t44 := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t1); + $1_object_token_TokenIdentifiers_$memory := $ResourceRemove($1_object_token_TokenIdentifiers_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(181,28885,28894)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // ($t45, $t46) := unpack object_token::TokenIdentifiers($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:767:17+80 + assume {:print "$at(181,28802,28882)"} true; + $t45 := $t44->$index; + $t46 := $t44->$name; + + // drop($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:769:23+1 + assume {:print "$at(181,28866,28867)"} true; + + // trace_local[index]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:768:17+5 + assume {:print "$at(181,28837,28842)"} true; + assume {:print "$track_local(81,1,10):", $t45} $t45 == $t45; + + // $t3 := opaque begin: aggregator_v2::read_snapshot($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + + // $t47 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + havoc $t47; + + // if ($t47) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + if ($t47) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 +L15: + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + goto L9; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 +L14: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + assume {:print "$at(181,28932,28968)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: aggregator_v2::read_snapshot($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:771:13+36 + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + assume {:print "$at(181,28748,29024)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:773:13+16 + assume {:print "$at(181,28998,29014)"} true; +L5: + + // $t3 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 + assume {:print "$at(181,28748,29024)"} true; + $t3 := $t38; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:21+276 +L7: + + // trace_local[index#8]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:766:13+5 + assume {:print "$at(181,28740,28745)"} true; + assume {:print "$track_local(81,1,11):", $t3} $t3 == $t3; + + // event::destroy_handle($t42) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:776:9+38 + assume {:print "$at(181,29035,29073)"} true; + call $1_event_destroy_handle'$1_object_token_MutationEvent'($t42); + if ($abort_flag) { + assume {:print "$at(181,29035,29073)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // $t48 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume {:print "$at(181,29131,29150)"} true; + + // assume And(WellFormed($t48), Le(Len(select option::Option.vec($t48)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume ($IsValid'$1_option_Option'u64''($t48) && (LenVec($t48->$vec) <= 1)); + + // assume Eq>($t48, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + assume $IsEqual'$1_option_Option'u64''($t48, $1_option_spec_some'u64'($t3)); + + // $t48 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:57+19 + + // collection::decrement_supply($t37, $t1, $t48, $t2) on_abort goto L9 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:777:9+84 + call $1_collection_decrement_supply($t37, $t1, $t48, $t2); + if ($abort_flag) { + assume {:print "$at(181,29083,29167)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(81,1):", $t24} $t24 == $t24; + goto L9; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 +L9: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:778:5+1 + assume {:print "$at(181,29173,29174)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t19) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + + // label L17 at :1:1+10 +L17: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + + // label L18 at :1:1+10 +L18: + + // drop($t28) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + + // label L19 at :1:1+10 +L19: + + // drop($t29) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + +} + +// fun object_token::creator<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+131 +procedure {:inline 1} $1_object_token_creator'#0'(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+1 + assume {:print "$at(181,23715,23716)"} true; + assume {:print "$track_local(81,20,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#629]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,20,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,20):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:29+25 + assume {:print "$at(181,23814,23839)"} true; + $t8 := $t7->$collection; + + // $t9 := collection::creator($t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:9+46 + call $t9 := $1_collection_creator'$1_collection_Collection'($t8); + if ($abort_flag) { + assume {:print "$at(181,23794,23840)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:9+46 + assume {:print "$track_return(81,20,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::creator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+131 +procedure {:timeLimit 80} $1_object_token_creator$verify(_$t0: $1_object_Object'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: int; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+1 + assume {:print "$at(181,23715,23716)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:641:5+1 + assume {:print "$track_local(81,20,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#629]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,20,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,20):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:29+25 + assume {:print "$at(181,23814,23839)"} true; + $t8 := $t7->$collection; + + // $t9 := collection::creator($t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:9+46 + call $t9 := $1_collection_creator'$1_collection_Collection'($t8); + if ($abort_flag) { + assume {:print "$at(181,23794,23840)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,20):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:642:9+46 + assume {:print "$track_return(81,20,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:643:5+1 + assume {:print "$at(181,23845,23846)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:676:5+365 +procedure {:timeLimit 80} $1_object_token_name$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: $1_object_token_TokenIdentifiers; + var $t8: $1_aggregator_v2_DerivedStringSnapshot; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_object_token_Token; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:676:5+1 + assume {:print "$at(181,25165,25166)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:676:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:676:5+1 + assume {:print "$track_local(81,25,0):", $t0} $t0 == $t0; + + // $t4 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:677:29+30 + assume {:print "$at(181,25278,25308)"} true; + call $t4 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,25278,25308)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[token_address]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:677:13+13 + assume {:print "$track_local(81,25,2):", $t4} $t4 == $t4; + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:678:13+6 + assume {:print "$at(181,25322,25328)"} true; + $t6 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:678:9+206 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:81+13 + assume {:print "$at(181,25445,25458)"} true; +L1: + + // $t7 := get_global($t4) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:49+13 + assume {:print "$at(181,25413,25426)"} true; + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t4)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t4); + } + if ($abort_flag) { + assume {:print "$at(181,25413,25426)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + goto L7; + } + + // $t8 := get_field.name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:48+52 + $t8 := $t7->$name; + + // $t1 := opaque begin: aggregator_v2::read_derived_string($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + havoc $t9; + + // if ($t9) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + if ($t9) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 +L9: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + assume {:print "$at(181,25377,25465)"} true; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 +L8: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + assume {:print "$at(181,25377,25465)"} true; + assume $IsValid'$1_string_String'($t1); + + // $t1 := opaque end: aggregator_v2::read_derived_string($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:679:13+88 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:678:9+206 + assume {:print "$at(181,25318,25524)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:681:20+6 + assume {:print "$at(181,25502,25508)"} true; +L0: + + // $t10 := object::object_address<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t10 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[token_address#635]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,25,3):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,25):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t5 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L5: + + // $t14 := get_global($t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t14 := $ResourceValue($1_object_token_Token_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,25):", $t5} $t5 == $t5; + goto L7; + } + + // $t1 := get_field.name($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:681:13+19 + assume {:print "$at(181,25495,25514)"} true; + $t1 := $t14->$name; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:678:9+206 + assume {:print "$at(181,25318,25524)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:678:9+206 + assume {:print "$at(181,25318,25524)"} true; + assume {:print "$track_return(81,25,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:683:5+1 + assume {:print "$at(181,25529,25530)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:683:5+1 + assume {:print "$at(181,25529,25530)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:683:5+1 +L7: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:683:5+1 + assume {:print "$at(181,25529,25530)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::generate_burn_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:609:5+432 +procedure {:inline 1} $1_object_token_generate_burn_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_token_BurnRef) +{ + // declare local variables + var $t1: $1_option_Option'$1_object_DeleteRef'; + var $t2: $1_option_Option'address'; + var $t3: $1_option_Option'address'; + var $t4: int; + var $t5: $1_option_Option'$1_object_DeleteRef'; + var $t6: $1_option_Option'address'; + var $t7: bool; + var $t8: int; + var $t9: $1_object_DeleteRef; + var $t10: $1_option_Option'$1_object_DeleteRef'; + var $t11: int; + var $t12: $1_option_Option'$1_object_DeleteRef'; + var $t13: $1_object_token_BurnRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_token_BurnRef': $1_object_token_BurnRef; + var $temp_0'$1_option_Option'$1_object_DeleteRef'': $1_option_Option'$1_object_DeleteRef'; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:609:5+1 + assume {:print "$at(181,22637,22638)"} true; + assume {:print "$track_local(81,22,0):", $t0} $t0 == $t0; + + // $t7 := object::can_generate_delete_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:33+36 + assume {:print "$at(181,22731,22767)"} true; + call $t7 := $1_object_can_generate_delete_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22731,22767)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:611:58+3 + assume {:print "$at(181,22828,22831)"} true; +L1: + + // $t9 := object::generate_delete_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:611:30+32 + assume {:print "$at(181,22800,22832)"} true; + call $t9 := $1_object_generate_delete_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22800,22832)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // $t10 := opaque begin: option::some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume {:print "$at(181,22847,22871)"} true; + + // assume And(WellFormed($t10), Le(Len(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>($t10, option::spec_some($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume $IsEqual'$1_option_Option'$1_object_DeleteRef''($t10, $1_option_spec_some'$1_object_DeleteRef'($t9)); + + // $t10 := opaque end: option::some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + + // $t2 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + + // assume And(WellFormed($t2), Le(Len
(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + assume ($IsValid'$1_option_Option'address''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + assume $IsEqual'$1_option_Option'address''($t2, $1_option_spec_none'address'()); + + // $t2 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + + // $t1 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + assume {:print "$at(181,22727,23030)"} true; + $t1 := $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:61+3 + assume {:print "$at(181,22966,22969)"} true; +L0: + + // $t11 := object::address_from_constructor_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:24+41 + assume {:print "$at(181,22929,22970)"} true; + call $t11 := $1_object_address_from_constructor_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22929,22970)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:17+4 + assume {:print "$track_local(81,22,4):", $t11} $t11 == $t11; + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume {:print "$at(181,22985,22999)"} true; + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($t12) && (LenVec($t12->$vec) <= 1)); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume $IsEqual'$1_option_Option'$1_object_DeleteRef''($t12, $1_option_spec_none'$1_object_DeleteRef'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + + // $t2 := opaque begin: option::some
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + + // assume And(WellFormed($t2), Le(Len
(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + assume ($IsValid'$1_option_Option'address''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + assume $IsEqual'$1_option_Option'address''($t2, $1_option_spec_some'address'($t11)); + + // $t2 := opaque end: option::some
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + + // $t1 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + assume {:print "$at(181,22727,23030)"} true; + $t1 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 +L2: + + // trace_local[self]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:21+4 + assume {:print "$at(181,22719,22723)"} true; + assume {:print "$track_local(81,22,6):", $t2} $t2 == $t2; + + // trace_local[inner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:14+5 + assume {:print "$track_local(81,22,5):", $t1} $t1 == $t1; + + // $t13 := pack object_token::BurnRef($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:617:9+23 + assume {:print "$at(181,23040,23063)"} true; + $t13 := $1_object_token_BurnRef($t1, $t2); + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:617:9+23 + assume {:print "$track_return(81,22,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object_token::generate_burn_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:609:5+432 +procedure {:timeLimit 80} $1_object_token_generate_burn_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_token_BurnRef) +{ + // declare local variables + var $t1: $1_option_Option'$1_object_DeleteRef'; + var $t2: $1_option_Option'address'; + var $t3: $1_option_Option'address'; + var $t4: int; + var $t5: $1_option_Option'$1_object_DeleteRef'; + var $t6: $1_option_Option'address'; + var $t7: bool; + var $t8: int; + var $t9: $1_object_DeleteRef; + var $t10: $1_option_Option'$1_object_DeleteRef'; + var $t11: int; + var $t12: $1_option_Option'$1_object_DeleteRef'; + var $t13: $1_object_token_BurnRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_token_BurnRef': $1_object_token_BurnRef; + var $temp_0'$1_option_Option'$1_object_DeleteRef'': $1_option_Option'$1_object_DeleteRef'; + var $temp_0'$1_option_Option'address'': $1_option_Option'address'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:609:5+1 + assume {:print "$at(181,22637,22638)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:609:5+1 + assume {:print "$track_local(81,22,0):", $t0} $t0 == $t0; + + // $t7 := object::can_generate_delete_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:33+36 + assume {:print "$at(181,22731,22767)"} true; + call $t7 := $1_object_can_generate_delete_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22731,22767)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:611:58+3 + assume {:print "$at(181,22828,22831)"} true; +L1: + + // $t9 := object::generate_delete_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:611:30+32 + assume {:print "$at(181,22800,22832)"} true; + call $t9 := $1_object_generate_delete_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22800,22832)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // $t10 := opaque begin: option::some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume {:print "$at(181,22847,22871)"} true; + + // assume And(WellFormed($t10), Le(Len(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>($t10, option::spec_some($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + assume $IsEqual'$1_option_Option'$1_object_DeleteRef''($t10, $1_option_spec_some'$1_object_DeleteRef'($t9)); + + // $t10 := opaque end: option::some($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:14+24 + + // $t2 := opaque begin: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + + // assume And(WellFormed($t2), Le(Len
(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + assume ($IsValid'$1_option_Option'address''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none
()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + assume $IsEqual'$1_option_Option'address''($t2, $1_option_spec_none'address'()); + + // $t2 := opaque end: option::none
() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:612:40+14 + + // $t1 := $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + assume {:print "$at(181,22727,23030)"} true; + $t1 := $t10; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:61+3 + assume {:print "$at(181,22966,22969)"} true; +L0: + + // $t11 := object::address_from_constructor_ref($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:24+41 + assume {:print "$at(181,22929,22970)"} true; + call $t11 := $1_object_address_from_constructor_ref($t0); + if ($abort_flag) { + assume {:print "$at(181,22929,22970)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(81,22):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:614:17+4 + assume {:print "$track_local(81,22,4):", $t11} $t11 == $t11; + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume {:print "$at(181,22985,22999)"} true; + + // assume And(WellFormed($t12), Le(Len(select option::Option.vec($t12)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume ($IsValid'$1_option_Option'$1_object_DeleteRef''($t12) && (LenVec($t12->$vec) <= 1)); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + assume $IsEqual'$1_option_Option'$1_object_DeleteRef''($t12, $1_option_spec_none'$1_object_DeleteRef'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:14+14 + + // $t2 := opaque begin: option::some
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + + // assume And(WellFormed($t2), Le(Len
(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + assume ($IsValid'$1_option_Option'address''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some
($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + assume $IsEqual'$1_option_Option'address''($t2, $1_option_spec_some'address'($t11)); + + // $t2 := opaque end: option::some
($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:615:30+18 + + // $t1 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 + assume {:print "$at(181,22727,23030)"} true; + $t1 := $t12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:29+303 +L2: + + // trace_local[self]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:21+4 + assume {:print "$at(181,22719,22723)"} true; + assume {:print "$track_local(81,22,6):", $t2} $t2 == $t2; + + // trace_local[inner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:610:14+5 + assume {:print "$track_local(81,22,5):", $t1} $t1 == $t1; + + // $t13 := pack object_token::BurnRef($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:617:9+23 + assume {:print "$at(181,23040,23063)"} true; + $t13 := $1_object_token_BurnRef($t1, $t2); + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:617:9+23 + assume {:print "$track_return(81,22,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:618:5+1 + assume {:print "$at(181,23068,23069)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun object_token::royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+580 +procedure {:timeLimit 80} $1_object_token_royalty$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_option_Option'$1_royalty_Royalty') +{ + // declare local variables + var $t1: $1_option_Option'$1_royalty_Royalty'; + var $t2: $1_string_String; + var $t3: int; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $1_object_token_Token; + var $t12: $1_option_Option'$1_royalty_Royalty'; + var $t13: bool; + var $t14: int; + var $t15: $1_string_String; + var $t16: int; + var $t17: $1_object_Object'$1_collection_Collection'; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume {:print "$at(181,25664,25665)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:691:5+1 + assume {:print "$track_local(81,26,0):", $t0} $t0 == $t0; + + // $t6 := object::object_address<#0>($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t6 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[token_address#637]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,26,5):", $t6} $t6 == $t6; + + // $t8 := exists($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t8 := $ResourceExists($1_object_token_Token_$memory, $t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t9 := 1; + assume $IsValid'u64'($t9); + + // $t10 := error::not_found($t9) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t10 := $1_error_not_found($t9); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,26):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t7 := $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t11 := get_global($t6) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t11 := $ResourceValue($1_object_token_Token_$memory, $t6); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // $t12 := royalty::get<#0>($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:693:23+19 + assume {:print "$at(181,25789,25808)"} true; + call $t12 := $1_royalty_get'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,25789,25808)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[royalty]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:693:13+7 + assume {:print "$track_local(81,26,4):", $t12} $t12 == $t12; + + // $t13 := opaque begin: option::is_some($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:13+25 + assume {:print "$at(181,25822,25847)"} true; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:13+25 + assume $IsValid'bool'($t13); + + // assume Eq($t13, option::spec_is_some($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:13+25 + assume $IsEqual'bool'($t13, $1_option_spec_is_some'$1_royalty_Royalty'($t12)); + + // $t13 := opaque end: option::is_some($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:13+25 + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:9+420 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:695:13+7 + assume {:print "$at(181,25863,25870)"} true; +L4: + + // $t1 := $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:9+420 + assume {:print "$at(181,25818,26238)"} true; + $t1 := $t12; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:9+420 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:697:35+5 + assume {:print "$at(181,25922,25927)"} true; +L3: + + // $t14 := object_token::creator<#0>($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:697:27+14 + assume {:print "$at(181,25914,25928)"} true; + call $t14 := $1_object_token_creator'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,25914,25928)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[creator]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:697:17+7 + assume {:print "$track_local(81,26,3):", $t14} $t14 == $t14; + + // $t15 := object_token::collection_name<#0>($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:698:35+22 + assume {:print "$at(181,25964,25986)"} true; + call $t15 := $1_object_token_collection_name'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,25964,25986)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // trace_local[collection_name]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:698:17+15 + assume {:print "$track_local(81,26,2):", $t15} $t15 == $t15; + + // $t16 := collection::create_collection_address($t14, $t15) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:699:38+65 + assume {:print "$at(181,26025,26090)"} true; + call $t16 := $1_collection_create_collection_address($t14, $t15); + if ($abort_flag) { + assume {:print "$at(181,26025,26090)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // $t17 := object::address_to_object($t16) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:700:30+69 + assume {:print "$at(181,26121,26190)"} true; + call $t17 := $1_object_address_to_object'$1_collection_Collection'($t16); + if ($abort_flag) { + assume {:print "$at(181,26121,26190)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // $t1 := royalty::get($t17) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:701:13+24 + assume {:print "$at(181,26204,26228)"} true; + call $t1 := $1_royalty_get'$1_collection_Collection'($t17); + if ($abort_flag) { + assume {:print "$at(181,26204,26228)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,26):", $t7} $t7 == $t7; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:9+420 + assume {:print "$at(181,25818,26238)"} true; +L5: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:694:9+420 + assume {:print "$at(181,25818,26238)"} true; + assume {:print "$track_return(81,26,0):", $t1} $t1 == $t1; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:703:5+1 + assume {:print "$at(181,26243,26244)"} true; +L6: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:703:5+1 + assume {:print "$at(181,26243,26244)"} true; + $ret0 := $t1; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:703:5+1 +L7: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:703:5+1 + assume {:print "$at(181,26243,26244)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object_token::generate_mutator_ref [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+204 +procedure {:inline 1} $1_object_token_generate_mutator_ref(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_token_MutatorRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_object_token_Token'; + var $t2: $1_object_Object'$1_object_token_Token'; + var $t3: int; + var $t4: int; + var $t5: $1_object_token_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+1 + assume {:print "$at(181,22351,22352)"} true; + assume {:print "$track_local(81,23,0):", $t0} $t0 == $t0; + + // $t2 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:604:22+47 + assume {:print "$at(181,22440,22487)"} true; + call $t2 := $1_object_object_from_constructor_ref'$1_object_token_Token'($t0); + if ($abort_flag) { + assume {:print "$at(181,22440,22487)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,23):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[object]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:604:13+6 + assume {:print "$track_local(81,23,1):", $t2} $t2 == $t2; + + // $t4 := object::object_address($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:28+31 + assume {:print "$at(181,22516,22547)"} true; + call $t4 := $1_object_object_address'$1_object_token_Token'($t2); + if ($abort_flag) { + assume {:print "$at(181,22516,22547)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,23):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := pack object_token::MutatorRef($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:9+52 + $t5 := $1_object_token_MutatorRef($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:9+52 + assume {:print "$track_return(81,23,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::generate_mutator_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+204 +procedure {:timeLimit 80} $1_object_token_generate_mutator_ref$verify(_$t0: $1_object_ConstructorRef) returns ($ret0: $1_object_token_MutatorRef) +{ + // declare local variables + var $t1: $1_object_Object'$1_object_token_Token'; + var $t2: $1_object_Object'$1_object_token_Token'; + var $t3: int; + var $t4: int; + var $t5: $1_object_token_MutatorRef; + var $t0: $1_object_ConstructorRef; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_object_token_Token'': $1_object_Object'$1_object_token_Token'; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+1 + assume {:print "$at(181,22351,22352)"} true; + assume $IsValid'$1_object_ConstructorRef'($t0); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:603:5+1 + assume {:print "$track_local(81,23,0):", $t0} $t0 == $t0; + + // $t2 := object::object_from_constructor_ref($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:604:22+47 + assume {:print "$at(181,22440,22487)"} true; + call $t2 := $1_object_object_from_constructor_ref'$1_object_token_Token'($t0); + if ($abort_flag) { + assume {:print "$at(181,22440,22487)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,23):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[object]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:604:13+6 + assume {:print "$track_local(81,23,1):", $t2} $t2 == $t2; + + // $t4 := object::object_address($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:28+31 + assume {:print "$at(181,22516,22547)"} true; + call $t4 := $1_object_object_address'$1_object_token_Token'($t2); + if ($abort_flag) { + assume {:print "$at(181,22516,22547)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,23):", $t3} $t3 == $t3; + goto L2; + } + + // $t5 := pack object_token::MutatorRef($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:9+52 + $t5 := $1_object_token_MutatorRef($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:605:9+52 + assume {:print "$track_return(81,23,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:606:5+1 + assume {:print "$at(181,22554,22555)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:656:5+114 +procedure {:timeLimit 80} $1_object_token_description$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:656:5+1 + assume {:print "$at(181,24166,24167)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:656:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:656:5+1 + assume {:print "$track_local(81,21,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,21):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#631]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,21,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,21):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,21):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,21):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:657:9+26 + assume {:print "$at(181,24248,24274)"} true; + $t8 := $t7->$description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:657:9+26 + assume {:print "$track_return(81,21,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:658:5+1 + assume {:print "$at(181,24279,24280)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:658:5+1 + assume {:print "$at(181,24279,24280)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:658:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:658:5+1 + assume {:print "$at(181,24279,24280)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:686:5+98 +procedure {:timeLimit 80} $1_object_token_uri$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:686:5+1 + assume {:print "$at(181,25548,25549)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:686:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:686:5+1 + assume {:print "$track_local(81,30,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,30):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#642]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,30,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,30):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,30):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,30):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:687:9+18 + assume {:print "$at(181,25622,25640)"} true; + $t8 := $t7->$uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:687:9+18 + assume {:print "$track_return(81,30,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:688:5+1 + assume {:print "$at(181,25645,25646)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:688:5+1 + assume {:print "$at(181,25645,25646)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:688:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:688:5+1 + assume {:print "$at(181,25645,25646)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::set_description [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+895 +procedure {:inline 1} $1_object_token_set_description(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_object_token_MutatorRef; + var $t3: $Mutation ($1_object_token_Token); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_object_token_Token); + var $t16: bool; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_object_token_Mutation; + var $t22: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t23: Vec (int); + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_object_token_MutationEvent; + var $t27: $Mutation ($1_string_String); + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume {:print "$at(181,29180,29181)"} true; + assume {:print "$track_local(81,27,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume {:print "$track_local(81,27,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:17+28 + assume {:print "$at(181,29287,29315)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,29287,29315)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:49+22 + $t6 := 2048; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:46+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + assume {:print "$at(181,29279,29386)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:93+21 + assume {:print "$at(181,29363,29384)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:73+42 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,29343,29385)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + assume {:print "$at(181,29279,29386)"} true; + assume {:print "$track_abort(81,27):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:782:32+11 + assume {:print "$at(181,29419,29430)"} true; +L2: + + // trace_local[mutator_ref#638]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,27,2):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,27):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:782:13+5 + assume {:print "$at(181,29400,29405)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t15); + assume {:print "$track_local(81,27,3):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:13+47 + assume {:print "$at(181,29445,29492)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,29445,29492)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:9+314 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:785:32+11 + assume {:print "$at(181,29562,29573)"} true; +L7: + + // $t17 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:785:32+16 + assume {:print "$at(181,29562,29578)"} true; + $t17 := $t0->$self; + + // $t18 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:786:50+14 + assume {:print "$at(181,29629,29643)"} true; + $t18 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:786:37+28 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(181,29616,29644)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t20 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:787:28+17 + assume {:print "$at(181,29673,29690)"} true; + $t20 := $Dereference($t15)->$description; + + // $t21 := pack object_token::Mutation($t17, $t19, $t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:25+224 + assume {:print "$at(181,29520,29744)"} true; + $t21 := $1_object_token_Mutation($t17, $t19, $t20, $t1); + + // opaque begin: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + + // opaque end: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:9+314 + assume {:print "$at(181,29441,29755)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:792:18+5 + assume {:print "$at(181,29801,29806)"} true; +L8: + + // $t22 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:792:13+26 + assume {:print "$at(181,29796,29822)"} true; + $t22 := $ChildMutation($t15, 5, $Dereference($t15)->$mutation_events); + + // $t23 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:794:50+14 + assume {:print "$at(181,29901,29915)"} true; + $t23 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:794:37+28 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(181,29888,29916)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t25 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:795:28+17 + assume {:print "$at(181,29945,29962)"} true; + $t25 := $Dereference($t15)->$description; + + // $t26 := pack object_token::MutationEvent($t24, $t25, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:793:13+180 + assume {:print "$at(181,29836,30016)"} true; + $t26 := $1_object_token_MutationEvent($t24, $t25, $t1); + + // opaque begin: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + assume {:print "$at(181,29765,30027)"} true; + + // opaque end: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_mutation_events($Dereference($t15), $Dereference($t22))); + + // $t27 := borrow_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+17 + assume {:print "$at(181,30037,30054)"} true; + $t27 := $ChildMutation($t15, 2, $Dereference($t15)->$description); + + // write_ref($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $t27 := $UpdateMutation($t27, $t1); + + // write_back[Reference($t15).description (string::String)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_description($Dereference($t15), $Dereference($t27))); + + // write_back[object_token::Token@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::set_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+895 +procedure {:timeLimit 80} $1_object_token_set_description$verify(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_object_token_MutatorRef; + var $t3: $Mutation ($1_object_token_Token); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_object_token_Token); + var $t16: bool; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_object_token_Mutation; + var $t22: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t23: Vec (int); + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_object_token_MutationEvent; + var $t27: $Mutation ($1_string_String); + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume {:print "$at(181,29180,29181)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume {:print "$track_local(81,27,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:780:5+1 + assume {:print "$track_local(81,27,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:17+28 + assume {:print "$at(181,29287,29315)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,29287,29315)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:49+22 + $t6 := 2048; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:46+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + assume {:print "$at(181,29279,29386)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 +L0: + + // $t8 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:93+21 + assume {:print "$at(181,29363,29384)"} true; + $t8 := 6; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:73+42 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,29343,29385)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + assume {:print "$at(181,29279,29386)"} true; + assume {:print "$track_abort(81,27):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:781:9+107 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:782:32+11 + assume {:print "$at(181,29419,29430)"} true; +L2: + + // trace_local[mutator_ref#638]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,27,2):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,27):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:782:13+5 + assume {:print "$at(181,29400,29405)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t15); + assume {:print "$track_local(81,27,3):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:13+47 + assume {:print "$at(181,29445,29492)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,29445,29492)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:9+314 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:785:32+11 + assume {:print "$at(181,29562,29573)"} true; +L7: + + // $t17 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:785:32+16 + assume {:print "$at(181,29562,29578)"} true; + $t17 := $t0->$self; + + // $t18 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:786:50+14 + assume {:print "$at(181,29629,29643)"} true; + $t18 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:786:37+28 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(181,29616,29644)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t20 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:787:28+17 + assume {:print "$at(181,29673,29690)"} true; + $t20 := $Dereference($t15)->$description; + + // $t21 := pack object_token::Mutation($t17, $t19, $t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:25+224 + assume {:print "$at(181,29520,29744)"} true; + $t21 := $1_object_token_Mutation($t17, $t19, $t20, $t1); + + // opaque begin: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + + // opaque end: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:784:13+237 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:783:9+314 + assume {:print "$at(181,29441,29755)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:792:18+5 + assume {:print "$at(181,29801,29806)"} true; +L8: + + // $t22 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:792:13+26 + assume {:print "$at(181,29796,29822)"} true; + $t22 := $ChildMutation($t15, 5, $Dereference($t15)->$mutation_events); + + // $t23 := [100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:794:50+14 + assume {:print "$at(181,29901,29915)"} true; + $t23 := ConcatVec(ConcatVec(MakeVec4(100, 101, 115, 99), MakeVec4(114, 105, 112, 116)), MakeVec3(105, 111, 110)); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:794:37+28 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(181,29888,29916)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,27):", $t5} $t5 == $t5; + goto L10; + } + + // $t25 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:795:28+17 + assume {:print "$at(181,29945,29962)"} true; + $t25 := $Dereference($t15)->$description; + + // $t26 := pack object_token::MutationEvent($t24, $t25, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:793:13+180 + assume {:print "$at(181,29836,30016)"} true; + $t26 := $1_object_token_MutationEvent($t24, $t25, $t1); + + // opaque begin: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + assume {:print "$at(181,29765,30027)"} true; + + // opaque end: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:791:9+262 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_mutation_events($Dereference($t15), $Dereference($t22))); + + // $t27 := borrow_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+17 + assume {:print "$at(181,30037,30054)"} true; + $t27 := $ChildMutation($t15, 2, $Dereference($t15)->$description); + + // write_ref($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $t27 := $UpdateMutation($t27, $t1); + + // write_back[Reference($t15).description (string::String)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_description($Dereference($t15), $Dereference($t27))); + + // write_back[object_token::Token@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:799:9+31 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:800:5+1 + assume {:print "$at(181,30074,30075)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::set_name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1276 +procedure {:inline 1} $1_object_token_set_name(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_object_token_MutatorRef; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $Mutation ($1_object_token_Token); + var $t8: $Mutation ($1_object_token_TokenIdentifiers); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $Mutation ($1_object_token_Token); + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: $Mutation ($1_object_token_TokenIdentifiers); + var $t25: $1_aggregator_v2_DerivedStringSnapshot; + var $t26: $1_string_String; + var $t27: bool; + var $t28: $1_aggregator_v2_DerivedStringSnapshot; + var $t29: bool; + var $t30: $Mutation ($1_aggregator_v2_DerivedStringSnapshot); + var $t31: $1_string_String; + var $t32: $Mutation ($1_string_String); + var $t33: bool; + var $t34: int; + var $t35: Vec (int); + var $t36: $1_string_String; + var $t37: $1_object_token_Mutation; + var $t38: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t39: Vec (int); + var $t40: $1_string_String; + var $t41: $1_object_token_MutationEvent; + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume {:print "$at(181,30081,30082)"} true; + assume {:print "$track_local(81,28,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume {:print "$track_local(81,28,1):", $t1} $t1 == $t1; + + // $t9 := string::length($t1) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:17+21 + assume {:print "$at(181,30192,30213)"} true; + call $t9 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,30192,30213)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t11 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:42+21 + $t11 := 128; + assume $IsValid'u64'($t11); + + // $t12 := <=($t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:39+2 + call $t12 := $Le($t9, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + assume {:print "$at(181,30184,30282)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 +L0: + + // $t13 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:85+20 + assume {:print "$at(181,30260,30280)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::out_of_range($t13) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:65+41 + call $t14 := $1_error_out_of_range($t13); + if ($abort_flag) { + assume {:print "$at(181,30240,30281)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + assume {:print "$at(181,30184,30282)"} true; + assume {:print "$track_abort(81,28):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + $t10 := $t14; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:805:32+11 + assume {:print "$at(181,30316,30327)"} true; +L2: + + // trace_local[mutator_ref#639]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,28,3):", $t0} $t0 == $t0; + + // $t15 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t15 := $t0->$self; + + // $t16 := exists($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t16 := $ResourceExists($1_object_token_Token_$memory, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t17 := 1; + assume $IsValid'u64'($t17); + + // $t18 := error::not_found($t17) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t18 := $1_error_not_found($t17); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,28):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t10 := $t18; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t19 := $t0->$self; + + // $t20 := borrow_global($t19) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t19)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[token]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:805:13+5 + assume {:print "$at(181,30297,30302)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t20); + assume {:print "$track_local(81,28,7):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t21 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:53+16 + assume {:print "$at(181,30383,30399)"} true; + $t21 := $t0->$self; + + // $t22 := exists($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:28+6 + $t22 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t21); + + // if ($t22) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + if ($t22) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:72+11 + assume {:print "$at(181,30475,30486)"} true; +L7: + + // $t23 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:72+16 + assume {:print "$at(181,30475,30491)"} true; + $t23 := $t0->$self; + + // $t24 := borrow_global($t23) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:36+17 + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t23)) { + call $ExecFailureAbort(); + } else { + $t24 := $Mutation($Global($t23), EmptyVec(), $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t23)); + } + if ($abort_flag) { + assume {:print "$at(181,30439,30456)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[token_concurrent]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:17+16 + $temp_0'$1_object_token_TokenIdentifiers' := $Dereference($t24); + assume {:print "$track_local(81,28,8):", $temp_0'$1_object_token_TokenIdentifiers'} $temp_0'$1_object_token_TokenIdentifiers' == $temp_0'$1_object_token_TokenIdentifiers'; + + // $t25 := get_field.name($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:63+22 + assume {:print "$at(181,30556,30578)"} true; + $t25 := $Dereference($t24)->$name; + + // $t26 := opaque begin: aggregator_v2::read_derived_string($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + havoc $t27; + + // if ($t27) goto L18 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + if ($t27) { goto L18; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 +L15: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + assume {:print "$at(181,30521,30579)"} true; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 +L14: + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + assume {:print "$at(181,30521,30579)"} true; + assume $IsValid'$1_string_String'($t26); + + // $t26 := opaque end: aggregator_v2::read_derived_string($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + + // trace_local[old_name]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:17+8 + assume {:print "$track_local(81,28,4):", $t26} $t26 == $t26; + + // $t28 := opaque begin: aggregator_v2::create_derived_string($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + havoc $t29; + + // if ($t29) goto L19 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + if ($t29) { goto L19; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 +L17: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + goto L13; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 +L16: + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t28); + + // $t28 := opaque end: aggregator_v2::create_derived_string($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + + // $t30 := borrow_field.name($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+21 + $t30 := $ChildMutation($t24, 1, $Dereference($t24)->$name); + + // write_ref($t30, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $t30 := $UpdateMutation($t30, $t28); + + // write_back[Reference($t24).name (aggregator_v2::DerivedStringSnapshot)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $t24 := $UpdateMutation($t24, $Update'$1_object_token_TokenIdentifiers'_name($Dereference($t24), $Dereference($t30))); + + // write_back[object_token::TokenIdentifiers@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $GlobalLocationAddress($t24), + $Dereference($t24)); + + // $t2 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + assume {:print "$at(181,30354,30799)"} true; + $t2 := $t26; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:28+5 + assume {:print "$at(181,30726,30731)"} true; +L6: + + // $t31 := get_field.name($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:28+10 + assume {:print "$at(181,30726,30736)"} true; + $t31 := $Dereference($t20)->$name; + + // trace_local[old_name#1]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:17+8 + assume {:print "$track_local(81,28,5):", $t31} $t31 == $t31; + + // $t32 := borrow_field.name($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+10 + assume {:print "$at(181,30750,30760)"} true; + $t32 := $ChildMutation($t20, 3, $Dereference($t20)->$name); + + // write_ref($t32, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+17 + $t32 := $UpdateMutation($t32, $t1); + + // write_back[Reference($t20).name (string::String)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+17 + $t20 := $UpdateMutation($t20, $Update'$1_object_token_Token'_name($Dereference($t20), $Dereference($t32))); + + // $t2 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + assume {:print "$at(181,30354,30799)"} true; + $t2 := $t31; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 +L8: + + // trace_local[old_name#3]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:13+8 + assume {:print "$at(181,30343,30351)"} true; + assume {:print "$track_local(81,28,6):", $t2} $t2 == $t2; + + // $t33 := features::module_event_migration_enabled() on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:13+47 + assume {:print "$at(181,30814,30861)"} true; + call $t33 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,30814,30861)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // if ($t33) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:9+291 + if ($t33) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:820:32+11 + assume {:print "$at(181,30931,30942)"} true; +L10: + + // $t34 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:820:32+16 + assume {:print "$at(181,30931,30947)"} true; + $t34 := $t0->$self; + + // $t35 := [110, 97, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:821:50+7 + assume {:print "$at(181,30998,31005)"} true; + $t35 := MakeVec4(110, 97, 109, 101); + assume $IsValid'vec'u8''($t35); + + // $t36 := string::utf8($t35) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:821:37+21 + call $t36 := $1_string_utf8($t35); + if ($abort_flag) { + assume {:print "$at(181,30985,31006)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t37 := pack object_token::Mutation($t34, $t36, $t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:25+201 + assume {:print "$at(181,30889,31090)"} true; + $t37 := $1_object_token_Mutation($t34, $t36, $t2, $t1); + + // opaque begin: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + + // opaque end: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:9+291 + assume {:print "$at(181,30810,31101)"} true; +L9: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:827:18+5 + assume {:print "$at(181,31147,31152)"} true; +L11: + + // $t38 := borrow_field.mutation_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:827:13+26 + assume {:print "$at(181,31142,31168)"} true; + $t38 := $ChildMutation($t20, 5, $Dereference($t20)->$mutation_events); + + // $t39 := [110, 97, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:829:50+7 + assume {:print "$at(181,31247,31254)"} true; + $t39 := MakeVec4(110, 97, 109, 101); + assume $IsValid'vec'u8''($t39); + + // $t40 := string::utf8($t39) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:829:37+21 + call $t40 := $1_string_utf8($t39); + if ($abort_flag) { + assume {:print "$at(181,31234,31255)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t41 := pack object_token::MutationEvent($t40, $t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:828:13+157 + assume {:print "$at(181,31182,31339)"} true; + $t41 := $1_object_token_MutationEvent($t40, $t2, $t1); + + // opaque begin: event::emit_event($t38, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + assume {:print "$at(181,31111,31350)"} true; + + // opaque end: event::emit_event($t38, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + + // write_back[Reference($t20).mutation_events (event::EventHandle)]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + $t20 := $UpdateMutation($t20, $Update'$1_object_token_Token'_mutation_events($Dereference($t20), $Dereference($t38))); + + // write_back[object_token::Token@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; +L12: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 +L13: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L18 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L18: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t24) at :1:1+10 + + // goto L15 at :1:1+10 + goto L15; + + // label L19 at :1:1+10 +L19: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t24) at :1:1+10 + + // goto L17 at :1:1+10 + goto L17; + +} + +// fun object_token::set_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1276 +procedure {:timeLimit 80} $1_object_token_set_name$verify(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_object_token_MutatorRef; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $1_string_String; + var $t7: $Mutation ($1_object_token_Token); + var $t8: $Mutation ($1_object_token_TokenIdentifiers); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $Mutation ($1_object_token_Token); + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: $Mutation ($1_object_token_TokenIdentifiers); + var $t25: $1_aggregator_v2_DerivedStringSnapshot; + var $t26: $1_string_String; + var $t27: bool; + var $t28: $1_aggregator_v2_DerivedStringSnapshot; + var $t29: bool; + var $t30: $Mutation ($1_aggregator_v2_DerivedStringSnapshot); + var $t31: $1_string_String; + var $t32: $Mutation ($1_string_String); + var $t33: bool; + var $t34: int; + var $t35: Vec (int); + var $t36: $1_string_String; + var $t37: $1_object_token_Mutation; + var $t38: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t39: Vec (int); + var $t40: $1_string_String; + var $t41: $1_object_token_MutationEvent; + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume {:print "$at(181,30081,30082)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume {:print "$track_local(81,28,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:802:5+1 + assume {:print "$track_local(81,28,1):", $t1} $t1 == $t1; + + // $t9 := string::length($t1) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:17+21 + assume {:print "$at(181,30192,30213)"} true; + call $t9 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,30192,30213)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t11 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:42+21 + $t11 := 128; + assume $IsValid'u64'($t11); + + // $t12 := <=($t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:39+2 + call $t12 := $Le($t9, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + assume {:print "$at(181,30184,30282)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 +L0: + + // $t13 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:85+20 + assume {:print "$at(181,30260,30280)"} true; + $t13 := 4; + assume $IsValid'u64'($t13); + + // $t14 := error::out_of_range($t13) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:65+41 + call $t14 := $1_error_out_of_range($t13); + if ($abort_flag) { + assume {:print "$at(181,30240,30281)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + assume {:print "$at(181,30184,30282)"} true; + assume {:print "$track_abort(81,28):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + $t10 := $t14; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:803:9+98 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:805:32+11 + assume {:print "$at(181,30316,30327)"} true; +L2: + + // trace_local[mutator_ref#639]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,28,3):", $t0} $t0 == $t0; + + // $t15 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t15 := $t0->$self; + + // $t16 := exists($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t16 := $ResourceExists($1_object_token_Token_$memory, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t17 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t17 := 1; + assume $IsValid'u64'($t17); + + // $t18 := error::not_found($t17) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t18 := $1_error_not_found($t17); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,28):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t10 := $t18; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t19 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t19 := $t0->$self; + + // $t20 := borrow_global($t19) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t19)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[token]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:805:13+5 + assume {:print "$at(181,30297,30302)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t20); + assume {:print "$track_local(81,28,7):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t21 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:53+16 + assume {:print "$at(181,30383,30399)"} true; + $t21 := $t0->$self; + + // $t22 := exists($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:28+6 + $t22 := $ResourceExists($1_object_token_TokenIdentifiers_$memory, $t21); + + // if ($t22) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + if ($t22) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:72+11 + assume {:print "$at(181,30475,30486)"} true; +L7: + + // $t23 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:72+16 + assume {:print "$at(181,30475,30491)"} true; + $t23 := $t0->$self; + + // $t24 := borrow_global($t23) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:36+17 + if (!$ResourceExists($1_object_token_TokenIdentifiers_$memory, $t23)) { + call $ExecFailureAbort(); + } else { + $t24 := $Mutation($Global($t23), EmptyVec(), $ResourceValue($1_object_token_TokenIdentifiers_$memory, $t23)); + } + if ($abort_flag) { + assume {:print "$at(181,30439,30456)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // trace_local[token_concurrent]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:808:17+16 + $temp_0'$1_object_token_TokenIdentifiers' := $Dereference($t24); + assume {:print "$track_local(81,28,8):", $temp_0'$1_object_token_TokenIdentifiers'} $temp_0'$1_object_token_TokenIdentifiers' == $temp_0'$1_object_token_TokenIdentifiers'; + + // $t25 := get_field.name($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:63+22 + assume {:print "$at(181,30556,30578)"} true; + $t25 := $Dereference($t24)->$name; + + // $t26 := opaque begin: aggregator_v2::read_derived_string($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + havoc $t27; + + // if ($t27) goto L18 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + if ($t27) { goto L18; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 +L15: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + assume {:print "$at(181,30521,30579)"} true; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 +L14: + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + assume {:print "$at(181,30521,30579)"} true; + assume $IsValid'$1_string_String'($t26); + + // $t26 := opaque end: aggregator_v2::read_derived_string($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:28+58 + + // trace_local[old_name]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:809:17+8 + assume {:print "$track_local(81,28,4):", $t26} $t26 == $t26; + + // $t28 := opaque begin: aggregator_v2::create_derived_string($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + havoc $t29; + + // if ($t29) goto L19 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + if ($t29) { goto L19; } else { goto L16; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 +L17: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + goto L13; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 +L16: + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + assume {:print "$at(181,30617,30659)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t28); + + // $t28 := opaque end: aggregator_v2::create_derived_string($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:37+42 + + // $t30 := borrow_field.name($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+21 + $t30 := $ChildMutation($t24, 1, $Dereference($t24)->$name); + + // write_ref($t30, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $t30 := $UpdateMutation($t30, $t28); + + // write_back[Reference($t24).name (aggregator_v2::DerivedStringSnapshot)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $t24 := $UpdateMutation($t24, $Update'$1_object_token_TokenIdentifiers'_name($Dereference($t24), $Dereference($t30))); + + // write_back[object_token::TokenIdentifiers@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:810:13+66 + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $GlobalLocationAddress($t24), + $Dereference($t24)); + + // $t2 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + assume {:print "$at(181,30354,30799)"} true; + $t2 := $t26; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:28+5 + assume {:print "$at(181,30726,30731)"} true; +L6: + + // $t31 := get_field.name($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:28+10 + assume {:print "$at(181,30726,30736)"} true; + $t31 := $Dereference($t20)->$name; + + // trace_local[old_name#1]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:813:17+8 + assume {:print "$track_local(81,28,5):", $t31} $t31 == $t31; + + // $t32 := borrow_field.name($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+10 + assume {:print "$at(181,30750,30760)"} true; + $t32 := $ChildMutation($t20, 3, $Dereference($t20)->$name); + + // write_ref($t32, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+17 + $t32 := $UpdateMutation($t32, $t1); + + // write_back[Reference($t20).name (string::String)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:814:13+17 + $t20 := $UpdateMutation($t20, $Update'$1_object_token_Token'_name($Dereference($t20), $Dereference($t32))); + + // $t2 := $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 + assume {:print "$at(181,30354,30799)"} true; + $t2 := $t31; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:24+445 +L8: + + // trace_local[old_name#3]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:807:13+8 + assume {:print "$at(181,30343,30351)"} true; + assume {:print "$track_local(81,28,6):", $t2} $t2 == $t2; + + // $t33 := features::module_event_migration_enabled() on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:13+47 + assume {:print "$at(181,30814,30861)"} true; + call $t33 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,30814,30861)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // if ($t33) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:9+291 + if ($t33) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:820:32+11 + assume {:print "$at(181,30931,30942)"} true; +L10: + + // $t34 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:820:32+16 + assume {:print "$at(181,30931,30947)"} true; + $t34 := $t0->$self; + + // $t35 := [110, 97, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:821:50+7 + assume {:print "$at(181,30998,31005)"} true; + $t35 := MakeVec4(110, 97, 109, 101); + assume $IsValid'vec'u8''($t35); + + // $t36 := string::utf8($t35) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:821:37+21 + call $t36 := $1_string_utf8($t35); + if ($abort_flag) { + assume {:print "$at(181,30985,31006)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t37 := pack object_token::Mutation($t34, $t36, $t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:25+201 + assume {:print "$at(181,30889,31090)"} true; + $t37 := $1_object_token_Mutation($t34, $t36, $t2, $t1); + + // opaque begin: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + + // opaque end: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:819:13+214 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:818:9+291 + assume {:print "$at(181,30810,31101)"} true; +L9: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:827:18+5 + assume {:print "$at(181,31147,31152)"} true; +L11: + + // $t38 := borrow_field.mutation_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:827:13+26 + assume {:print "$at(181,31142,31168)"} true; + $t38 := $ChildMutation($t20, 5, $Dereference($t20)->$mutation_events); + + // $t39 := [110, 97, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:829:50+7 + assume {:print "$at(181,31247,31254)"} true; + $t39 := MakeVec4(110, 97, 109, 101); + assume $IsValid'vec'u8''($t39); + + // $t40 := string::utf8($t39) on_abort goto L13 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:829:37+21 + call $t40 := $1_string_utf8($t39); + if ($abort_flag) { + assume {:print "$at(181,31234,31255)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(81,28):", $t10} $t10 == $t10; + goto L13; + } + + // $t41 := pack object_token::MutationEvent($t40, $t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:828:13+157 + assume {:print "$at(181,31182,31339)"} true; + $t41 := $1_object_token_MutationEvent($t40, $t2, $t1); + + // opaque begin: event::emit_event($t38, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + assume {:print "$at(181,31111,31350)"} true; + + // opaque end: event::emit_event($t38, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + + // write_back[Reference($t20).mutation_events (event::EventHandle)]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + $t20 := $UpdateMutation($t20, $Update'$1_object_token_Token'_mutation_events($Dereference($t20), $Dereference($t38))); + + // write_back[object_token::Token@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:826:9+239 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; +L12: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 +L13: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:834:5+1 + assume {:print "$at(181,31356,31357)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L18 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L18: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t24) at :1:1+10 + + // goto L15 at :1:1+10 + goto L15; + + // label L19 at :1:1+10 +L19: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t24) at :1:1+10 + + // goto L17 at :1:1+10 + goto L17; + +} + +// fun object_token::set_uri [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+793 +procedure {:inline 1} $1_object_token_set_uri(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_object_token_MutatorRef; + var $t3: $Mutation ($1_object_token_Token); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_object_token_Token); + var $t16: bool; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_object_token_Mutation; + var $t22: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t23: Vec (int); + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_object_token_MutationEvent; + var $t27: $Mutation ($1_string_String); + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume {:print "$at(181,31363,31364)"} true; + assume {:print "$track_local(81,29,0):", $t0} $t0 == $t0; + + // trace_local[uri]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume {:print "$track_local(81,29,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:17+20 + assume {:print "$at(181,31454,31474)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,31454,31474)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:41+14 + $t6 := 512; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + assume {:print "$at(181,31446,31529)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 +L0: + + // $t8 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:77+13 + assume {:print "$at(181,31514,31527)"} true; + $t8 := 5; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:57+34 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,31494,31528)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + assume {:print "$at(181,31446,31529)"} true; + assume {:print "$track_abort(81,29):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:838:32+11 + assume {:print "$at(181,31562,31573)"} true; +L2: + + // trace_local[mutator_ref#640]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,29,2):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,29):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:838:13+5 + assume {:print "$at(181,31543,31548)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t15); + assume {:print "$track_local(81,29,3):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:13+47 + assume {:print "$at(181,31588,31635)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,31588,31635)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:9+291 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:841:32+11 + assume {:print "$at(181,31705,31716)"} true; +L7: + + // $t17 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:841:32+16 + assume {:print "$at(181,31705,31721)"} true; + $t17 := $t0->$self; + + // $t18 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:842:50+6 + assume {:print "$at(181,31772,31778)"} true; + $t18 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:842:37+20 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(181,31759,31779)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t20 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:843:28+9 + assume {:print "$at(181,31808,31817)"} true; + $t20 := $Dereference($t15)->$uri; + + // $t21 := pack object_token::Mutation($t17, $t19, $t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:25+201 + assume {:print "$at(181,31663,31864)"} true; + $t21 := $1_object_token_Mutation($t17, $t19, $t20, $t1); + + // opaque begin: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + + // opaque end: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:9+291 + assume {:print "$at(181,31584,31875)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:848:18+5 + assume {:print "$at(181,31921,31926)"} true; +L8: + + // $t22 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:848:13+26 + assume {:print "$at(181,31916,31942)"} true; + $t22 := $ChildMutation($t15, 5, $Dereference($t15)->$mutation_events); + + // $t23 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:850:50+6 + assume {:print "$at(181,32021,32027)"} true; + $t23 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:850:37+20 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(181,32008,32028)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t25 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:851:28+9 + assume {:print "$at(181,32057,32066)"} true; + $t25 := $Dereference($t15)->$uri; + + // $t26 := pack object_token::MutationEvent($t24, $t25, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:849:13+157 + assume {:print "$at(181,31956,32113)"} true; + $t26 := $1_object_token_MutationEvent($t24, $t25, $t1); + + // opaque begin: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + assume {:print "$at(181,31885,32124)"} true; + + // opaque end: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_mutation_events($Dereference($t15), $Dereference($t22))); + + // $t27 := borrow_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+9 + assume {:print "$at(181,32134,32143)"} true; + $t27 := $ChildMutation($t15, 4, $Dereference($t15)->$uri); + + // write_ref($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $t27 := $UpdateMutation($t27, $t1); + + // write_back[Reference($t15).uri (string::String)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_uri($Dereference($t15), $Dereference($t27))); + + // write_back[object_token::Token@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::set_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+793 +procedure {:timeLimit 80} $1_object_token_set_uri$verify(_$t0: $1_object_token_MutatorRef, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: $1_object_token_MutatorRef; + var $t3: $Mutation ($1_object_token_Token); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_object_token_Token); + var $t16: bool; + var $t17: int; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_object_token_Mutation; + var $t22: $Mutation ($1_event_EventHandle'$1_object_token_MutationEvent'); + var $t23: Vec (int); + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_object_token_MutationEvent; + var $t27: $Mutation ($1_string_String); + var $t0: $1_object_token_MutatorRef; + var $t1: $1_string_String; + var $temp_0'$1_object_token_MutatorRef': $1_object_token_MutatorRef; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume {:print "$at(181,31363,31364)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[mutator_ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume {:print "$track_local(81,29,0):", $t0} $t0 == $t0; + + // trace_local[uri]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:836:5+1 + assume {:print "$track_local(81,29,1):", $t1} $t1 == $t1; + + // $t4 := string::length($t1) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:17+20 + assume {:print "$at(181,31454,31474)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,31454,31474)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t6 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:41+14 + $t6 := 512; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + assume {:print "$at(181,31446,31529)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 +L0: + + // $t8 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:77+13 + assume {:print "$at(181,31514,31527)"} true; + $t8 := 5; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:57+34 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,31494,31528)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + assume {:print "$at(181,31446,31529)"} true; + assume {:print "$track_abort(81,29):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + $t5 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:837:9+83 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:838:32+11 + assume {:print "$at(181,31562,31573)"} true; +L2: + + // trace_local[mutator_ref#640]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:732:27+11 + assume {:print "$at(181,27525,27536)"} true; + assume {:print "$track_local(81,29,2):", $t0} $t0 == $t0; + + // $t10 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:27+16 + assume {:print "$at(181,27623,27639)"} true; + $t10 := $t0->$self; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:734:13+6 + $t11 := $ResourceExists($1_object_token_Token_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 +L3: + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:30+21 + assume {:print "$at(181,27671,27692)"} true; + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:735:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(181,27654,27693)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + assume {:print "$at(181,27588,27704)"} true; + assume {:print "$track_abort(81,29):", $t13} $t13 == $t13; + + // $t5 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + $t5 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:733:9+116 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+11 + assume {:print "$at(181,27739,27750)"} true; +L5: + + // $t14 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:34+16 + assume {:print "$at(181,27739,27755)"} true; + $t14 := $t0->$self; + + // $t15 := borrow_global($t14) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:737:9+17 + if (!$ResourceExists($1_object_token_Token_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_object_token_Token_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(181,27714,27731)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:838:13+5 + assume {:print "$at(181,31543,31548)"} true; + $temp_0'$1_object_token_Token' := $Dereference($t15); + assume {:print "$track_local(81,29,3):", $temp_0'$1_object_token_Token'} $temp_0'$1_object_token_Token' == $temp_0'$1_object_token_Token'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:13+47 + assume {:print "$at(181,31588,31635)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(181,31588,31635)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:9+291 + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:841:32+11 + assume {:print "$at(181,31705,31716)"} true; +L7: + + // $t17 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:841:32+16 + assume {:print "$at(181,31705,31721)"} true; + $t17 := $t0->$self; + + // $t18 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:842:50+6 + assume {:print "$at(181,31772,31778)"} true; + $t18 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:842:37+20 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(181,31759,31779)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t20 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:843:28+9 + assume {:print "$at(181,31808,31817)"} true; + $t20 := $Dereference($t15)->$uri; + + // $t21 := pack object_token::Mutation($t17, $t19, $t20, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:25+201 + assume {:print "$at(181,31663,31864)"} true; + $t21 := $1_object_token_Mutation($t17, $t19, $t20, $t1); + + // opaque begin: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + + // opaque end: event::emit($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:840:13+214 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:839:9+291 + assume {:print "$at(181,31584,31875)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:848:18+5 + assume {:print "$at(181,31921,31926)"} true; +L8: + + // $t22 := borrow_field.mutation_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:848:13+26 + assume {:print "$at(181,31916,31942)"} true; + $t22 := $ChildMutation($t15, 5, $Dereference($t15)->$mutation_events); + + // $t23 := [117, 114, 105] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:850:50+6 + assume {:print "$at(181,32021,32027)"} true; + $t23 := MakeVec3(117, 114, 105); + assume $IsValid'vec'u8''($t23); + + // $t24 := string::utf8($t23) on_abort goto L10 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:850:37+20 + call $t24 := $1_string_utf8($t23); + if ($abort_flag) { + assume {:print "$at(181,32008,32028)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,29):", $t5} $t5 == $t5; + goto L10; + } + + // $t25 := get_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:851:28+9 + assume {:print "$at(181,32057,32066)"} true; + $t25 := $Dereference($t15)->$uri; + + // $t26 := pack object_token::MutationEvent($t24, $t25, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:849:13+157 + assume {:print "$at(181,31956,32113)"} true; + $t26 := $1_object_token_MutationEvent($t24, $t25, $t1); + + // opaque begin: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + assume {:print "$at(181,31885,32124)"} true; + + // opaque end: event::emit_event($t22, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + + // write_back[Reference($t15).mutation_events (event::EventHandle)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:847:9+239 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_mutation_events($Dereference($t15), $Dereference($t22))); + + // $t27 := borrow_field.uri($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+9 + assume {:print "$at(181,32134,32143)"} true; + $t27 := $ChildMutation($t15, 4, $Dereference($t15)->$uri); + + // write_ref($t27, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $t27 := $UpdateMutation($t27, $t1); + + // write_back[Reference($t15).uri (string::String)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $t15 := $UpdateMutation($t15, $Update'$1_object_token_Token'_uri($Dereference($t15), $Dereference($t27))); + + // write_back[object_token::Token@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:855:9+15 + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 +L10: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:856:5+1 + assume {:print "$at(181,32155,32156)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::address_from_burn_ref [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:621:5+245 +procedure {:timeLimit 80} $1_object_token_address_from_burn_ref$verify(_$t0: $1_object_token_BurnRef) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_object_DeleteRef'; + var $t3: bool; + var $t4: $1_option_Option'$1_object_DeleteRef'; + var $t5: $1_object_DeleteRef; + var $t6: bool; + var $t7: int; + var $t8: $1_option_Option'address'; + var $t9: int; + var $t10: bool; + var $t0: $1_object_token_BurnRef; + var $temp_0'$1_object_token_BurnRef': $1_object_token_BurnRef; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($t0))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:621:5+1 + assume {:print "$at(181,23127,23128)"} true; + assume ($IsValid'$1_object_token_BurnRef'($t0) && ((LenVec($t0->$inner->$vec) <= 1) && (LenVec($t0->$self->$vec) <= 1))); + + // trace_local[ref]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:621:5+1 + assume {:print "$track_local(81,0,0):", $t0} $t0 == $t0; + + // $t2 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:29+10 + assume {:print "$at(181,23214,23224)"} true; + $t2 := $t0->$inner; + + // $t3 := opaque begin: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:13+27 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:13+27 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_some($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:13+27 + assume $IsEqual'bool'($t3, $1_option_spec_is_some'$1_object_DeleteRef'($t2)); + + // $t3 := opaque end: option::is_some($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:13+27 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:9+172 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:61+3 + assume {:print "$at(181,23289,23292)"} true; +L1: + + // $t4 := get_field.inner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:60+10 + assume {:print "$at(181,23288,23298)"} true; + $t4 := $t0->$inner; + + // $t5 := opaque begin: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + + // assume Identical($t6, option::spec_is_none($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + assume ($t6 == $1_option_spec_is_none'$1_object_DeleteRef'($t4)); + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 +L6: + + // assume And(option::spec_is_none($t4), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + assume {:print "$at(181,23273,23299)"} true; + assume ($1_option_spec_is_none'$1_object_DeleteRef'($t4) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + assume {:print "$at(181,23273,23299)"} true; + assume {:print "$track_abort(81,0):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + assume {:print "$at(181,23273,23299)"} true; + assume $IsValid'$1_object_DeleteRef'($t5); + + // assume Eq($t5, option::spec_borrow($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + assume $IsEqual'$1_object_DeleteRef'($t5, $1_option_spec_borrow'$1_object_DeleteRef'($t4)); + + // $t5 := opaque end: option::borrow($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:45+26 + + // $t1 := object::address_from_delete_ref($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:623:13+59 + call $t1 := $1_object_address_from_delete_ref($t5); + if ($abort_flag) { + assume {:print "$at(181,23241,23300)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(81,0):", $t7} $t7 == $t7; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:9+172 + assume {:print "$at(181,23194,23366)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:30+3 + assume {:print "$at(181,23347,23350)"} true; +L0: + + // $t8 := get_field.self($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:29+9 + assume {:print "$at(181,23346,23355)"} true; + $t8 := $t0->$self; + + // $t9 := opaque begin: option::borrow
($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + + // assume Identical($t10, option::spec_is_none
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + assume ($t10 == $1_option_spec_is_none'address'($t8)); + + // if ($t10) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + if ($t10) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 +L8: + + // assume And(option::spec_is_none
($t8), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + assume {:print "$at(181,23331,23356)"} true; + assume ($1_option_spec_is_none'address'($t8) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + assume {:print "$at(181,23331,23356)"} true; + assume {:print "$track_abort(81,0):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + goto L4; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 +L7: + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + assume {:print "$at(181,23331,23356)"} true; + assume $IsValid'address'($t9); + + // assume Eq
($t9, option::spec_borrow
($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + assume $IsEqual'address'($t9, $1_option_spec_borrow'address'($t8)); + + // $t9 := opaque end: option::borrow
($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:625:14+25 + + // $t1 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:9+172 + assume {:print "$at(181,23194,23366)"} true; + $t1 := $t9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:9+172 +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:622:9+172 + assume {:print "$at(181,23194,23366)"} true; + assume {:print "$track_return(81,0,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:627:5+1 + assume {:print "$at(181,23371,23372)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:627:5+1 + assume {:print "$at(181,23371,23372)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:627:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:627:5+1 + assume {:print "$at(181,23371,23372)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun object_token::collection_name<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+135 +procedure {:inline 1} $1_object_token_collection_name'#0'(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+1 + assume {:print "$at(181,23864,23865)"} true; + assume {:print "$track_local(81,2,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#317]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,2,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,2):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:26+25 + assume {:print "$at(181,23967,23992)"} true; + $t8 := $t7->$collection; + + // $t9 := collection::name($t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:9+43 + call $t9 := $1_collection_name'$1_collection_Collection'($t8); + if ($abort_flag) { + assume {:print "$at(181,23950,23993)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:9+43 + assume {:print "$track_return(81,2,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::collection_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+135 +procedure {:timeLimit 80} $1_object_token_collection_name$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_string_String; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+1 + assume {:print "$at(181,23864,23865)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:646:5+1 + assume {:print "$track_local(81,2,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#317]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,2,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,2):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:26+25 + assume {:print "$at(181,23967,23992)"} true; + $t8 := $t7->$collection; + + // $t9 := collection::name($t8) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:9+43 + call $t9 := $1_collection_name'$1_collection_Collection'($t8); + if ($abort_flag) { + assume {:print "$at(181,23950,23993)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:647:9+43 + assume {:print "$track_return(81,2,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:648:5+1 + assume {:print "$at(181,23998,23999)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::collection_object<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+131 +procedure {:inline 1} $1_object_token_collection_object'#0'(_$t0: $1_object_Object'#0') returns ($ret0: $1_object_Object'$1_collection_Collection') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+1 + assume {:print "$at(181,24017,24018)"} true; + assume {:print "$track_local(81,3,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#319]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,3,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,3):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:652:9+25 + assume {:print "$at(181,24117,24142)"} true; + $t8 := $t7->$collection; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:652:9+25 + assume {:print "$track_return(81,3,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::collection_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+131 +procedure {:timeLimit 80} $1_object_token_collection_object$verify(_$t0: $1_object_Object'#0') returns ($ret0: $1_object_Object'$1_collection_Collection') +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_object_token_Token; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+1 + assume {:print "$at(181,24017,24018)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:651:5+1 + assume {:print "$track_local(81,3,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:29+29 + assume {:print "$at(181,23494,23523)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(181,23494,23523)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#319]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:632:13+13 + assume {:print "$track_local(81,3,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:634:13+6 + assume {:print "$at(181,23554,23560)"} true; + $t4 := $ResourceExists($1_object_token_Token_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:30+21 + assume {:print "$at(181,23613,23634)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:635:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(181,23596,23635)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + assume {:print "$at(181,23533,23646)"} true; + assume {:print "$track_abort(81,3):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:633:9+113 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:30+13 + assume {:print "$at(181,23677,23690)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:637:9+13 + assume {:print "$at(181,23656,23669)"} true; + if (!$ResourceExists($1_object_token_Token_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_object_token_Token_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(181,23656,23669)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(81,3):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.collection($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:652:9+25 + assume {:print "$at(181,24117,24142)"} true; + $t8 := $t7->$collection; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:652:9+25 + assume {:print "$track_return(81,3,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:653:5+1 + assume {:print "$at(181,24147,24148)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun object_token::create_from_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+547 +procedure {:timeLimit 80} $1_object_token_create_from_account$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_string_String; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_object_ConstructorRef; + var $t15: $signer; + var $t16: $signer; + var $t17: int; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: $1_aggregator_v2_DerivedStringSnapshot; + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_string_String; + var $t27: $1_option_Option'$1_string_String'; + var $t28: $1_option_Option'$1_string_String'; + var $t29: $1_option_Option'$1_string_String'; + var $t30: $signer; + var $t31: $1_option_Option'$1_royalty_Royalty'; + var $t32: $1_option_Option'$1_royalty_Royalty'; + var $t33: $1_option_Option'$1_royalty_Royalty'; + var $t34: $1_object_token_Token; + var $t35: $1_object_token_TokenIdentifiers; + var $t36: $1_string_String; + var $t37: $1_string_String; + var $t38: $1_string_String; + var $t39: $1_account_Account; + var $t40: int; + var $t41: int; + var $t42: $1_guid_GUID; + var $t43: Vec (int); + var $t44: Vec (int); + var $t45: Vec (int); + var $t46: int; + var $t47: $1_object_ConstructorRef; + var $t48: int; + var $t49: $1_option_Option'$1_string_String'; + var $t50: int; + var $t51: int; + var $t52: $1_object_Object'$1_collection_Collection'; + var $t53: int; + var $t54: int; + var $t55: bool; + var $t56: int; + var $t57: int; + var $t58: $1_option_Option'$1_string_String'; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: $1_option_Option'$1_string_String'; + var $t64: $1_string_String; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: int; + var $t74: bool; + var $t75: int; + var $t76: int; + var $t77: int; + var $t78: int; + var $t79: bool; + var $t80: int; + var $t81: int; + var $t82: int; + var $t83: int; + var $t84: bool; + var $t85: int; + var $t86: int; + var $t87: $signer; + var $t88: int; + var $t89: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t90: int; + var $t91: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t92: bool; + var $t93: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t94: $1_option_Option'$1_string_String'; + var $t95: bool; + var $t96: $Mutation ($1_option_Option'$1_string_String'); + var $t97: $1_string_String; + var $t98: $1_option_Option'$1_string_String'; + var $t99: bool; + var $t100: bool; + var $t101: bool; + var $t102: Vec (int); + var $t103: $1_string_String; + var $t104: $1_object_token_TokenIdentifiers; + var $t105: int; + var $t106: $1_object_ObjectCore; + var $t107: $1_guid_GUID; + var $t108: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t109: $1_object_token_Token; + var $t110: $1_option_Option'$1_royalty_Royalty'; + var $t111: bool; + var $t112: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t113: $1_royalty_Royalty; + var $t114: $1_option_Option'$1_royalty_Royalty'; + var $t115: bool; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$at(181,20183,20184)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:552:5+1 + assume {:print "$track_local(81,5,5):", $t5} $t5 == $t5; + + // assume Identical($t39, global(signer::$address_of($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:201:9+72 + assume {:print "$at(50,8477,8549)"} true; + assume ($t39 == $ResourceValue($1_account_Account_$memory, $1_signer_$address_of($t0))); + + // assume Identical($t40, select account::Account.guid_creation_num($t39)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:204:9+49 + assume {:print "$at(50,8708,8757)"} true; + assume ($t40 == $t39->$guid_creation_num); + + // assume Identical($t41, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:205:9+39 + assume {:print "$at(50,8766,8805)"} true; + assume ($t41 == $1_signer_$address_of($t0)); + + // assume Identical($t42, pack guid::GUID(pack guid::ID($t40, $t41))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:207:9+127 + assume {:print "$at(50,8815,8942)"} true; + assume ($t42 == $1_guid_GUID($1_guid_ID($t40, $t41))); + + // assume Identical($t43, bcs::$to_bytes($t42)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:214:9+37 + assume {:print "$at(50,8952,8989)"} true; + assume ($t43 == $1_bcs_$to_bytes'$1_guid_GUID'($t42)); + + // assume Identical($t44, ConcatVec($t43, SingleVec(253))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:215:9+73 + assume {:print "$at(50,8998,9071)"} true; + assume ($t44 == ConcatVec($t43, MakeVec1(253))); + + // assume Identical($t45, hash::$sha3_256($t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:216:9+39 + assume {:print "$at(50,9080,9119)"} true; + assume ($t45 == $1_hash_$sha3_256($t44)); + + // assume Identical($t46, from_bcs::deserialize
($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:217:9+58 + assume {:print "$at(50,9128,9186)"} true; + assume ($t46 == $1_from_bcs_deserialize'address'($t45)); + + // $t47 := object::create_object_from_account($t0) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:560:31+43 + assume {:print "$at(181,20434,20477)"} true; + call $t47 := $1_object_create_object_from_account($t0); + if ($abort_flag) { + assume {:print "$at(181,20434,20477)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_local[constructor_ref]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:560:13+15 + assume {:print "$track_local(81,5,11):", $t47} $t47 == $t47; + + // $t49 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:567:13+14 + assume {:print "$at(181,20637,20651)"} true; + + // assume And(WellFormed($t49), Le(Len(select option::Option.vec($t49)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:567:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t49) && (LenVec($t49->$vec) <= 1)); + + // assume Eq>($t49, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:567:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t49, $1_option_spec_none'$1_string_String'()); + + // $t49 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:567:13+14 + + // trace_local[uri#360]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:134:9+3 + assume {:print "$at(181,5499,5502)"} true; + assume {:print "$track_local(81,5,36):", $t5} $t5 == $t5; + + // trace_local[royalty#359]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:133:9+7 + assume {:print "$at(181,5465,5472)"} true; + assume {:print "$track_local(81,5,31):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#358]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:132:9+22 + assume {:print "$at(181,5417,5439)"} true; + assume {:print "$track_local(81,5,27):", $t49} $t49 == $t49; + + // trace_local[name_prefix#357]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:129:9+11 + assume {:print "$at(181,5225,5236)"} true; + assume {:print "$track_local(81,5,24):", $t3} $t3 == $t3; + + // trace_local[description#356]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:128:9+11 + assume {:print "$at(181,5196,5207)"} true; + assume {:print "$track_local(81,5,19):", $t2} $t2 == $t2; + + // trace_local[collection_name#355]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:127:9+15 + assume {:print "$at(181,5163,5178)"} true; + assume {:print "$track_local(81,5,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#354]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:126:9+15 + assume {:print "$at(181,5121,5136)"} true; + assume {:print "$track_local(81,5,12):", $t47} $t47 == $t47; + + // trace_local[creator#353]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:125:9+7 + assume {:print "$at(181,5095,5102)"} true; + assume {:print "$track_local(81,5,15):", $t0} $t0 == $t0; + + // $t50 := signer::address_of($t0) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:31+27 + assume {:print "$at(181,5550,5577)"} true; + call $t50 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,5550,5577)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_local[creator_address#361]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:13+15 + assume {:print "$track_local(81,5,17):", $t50} $t50 == $t50; + + // $t51 := collection::create_collection_address($t50, $t1) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:137:31+73 + assume {:print "$at(181,5609,5682)"} true; + call $t51 := $1_collection_create_collection_address($t50, $t1); + if ($abort_flag) { + assume {:print "$at(181,5609,5682)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t52 := object::address_to_object($t51) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:26+54 + assume {:print "$at(181,5709,5763)"} true; + call $t52 := $1_object_address_to_object'$1_collection_Collection'($t51); + if ($abort_flag) { + assume {:print "$at(181,5709,5763)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_local[collection#363]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:13+10 + assume {:print "$track_local(81,5,7):", $t52} $t52 == $t52; + + // trace_local[uri#371]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,5,37):", $t5} $t5 == $t5; + + // trace_local[royalty#370]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,5,32):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#369]($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,5,28):", $t49} $t49 == $t49; + + // trace_local[name_prefix#368]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,5,25):", $t3} $t3 == $t3; + + // trace_local[description#367]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,5,20):", $t2} $t2 == $t2; + + // trace_local[collection#366]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,5,8):", $t52} $t52 == $t52; + + // trace_local[constructor_ref#365]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,5,13):", $t47} $t47 == $t47; + + // trace_local[creator#364]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,5,16):", $t0} $t0 == $t0; + + // $t53 := collection::creator($t52) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t53 := $1_collection_creator'$1_collection_Collection'($t52); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t54 := signer::address_of($t0) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t54 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t55 := ==($t53, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t55 := $IsEqual'address'($t53, $t54); + + // if ($t55) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t55) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t56 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t56 := 2; + assume $IsValid'u64'($t56); + + // $t57 := error::unauthenticated($t56) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t57 := $1_error_unauthenticated($t56); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_abort($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,5):", $t57} $t57 == $t57; + + // $t48 := move($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t48 := $t57; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#378]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,5,38):", $t5} $t5 == $t5; + + // $t33 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t33 := $t4; + + // trace_local[royalty#377]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,5,33):", $t33} $t33 == $t33; + + // $t29 := $t49 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t29 := $t49; + + // trace_local[name_with_index_suffix#376]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,5,29):", $t29} $t29 == $t29; + + // trace_local[name_prefix#375]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,5,26):", $t3} $t3 == $t3; + + // trace_local[description#374]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,5,21):", $t2} $t2 == $t2; + + // trace_local[collection#373]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,5,9):", $t52} $t52 == $t52; + + // trace_local[constructor_ref#372]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,5,14):", $t47} $t47 == $t47; + + // $t58 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t58 := $t29; + + // $t59 := opaque begin: option::is_some($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t59); + + // assume Eq($t59, option::spec_is_some($t58)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t59, $1_option_spec_is_some'$1_string_String'($t58)); + + // $t59 := opaque end: option::is_some($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t59) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t59) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t60 := string::length($t3) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t60 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t61 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t61 := 20; + assume $IsValid'u64'($t61); + + // $t62 := +($t60, $t61) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t62 := $AddU64($t60, $t61); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t63 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t63 := $t29; + + // $t64 := opaque begin: option::borrow($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t65, option::spec_is_none($t63)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t65 == $1_option_spec_is_none'$1_string_String'($t63)); + + // if ($t65) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t65) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t63), Eq(262145, $t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t63) && $IsEqual'num'(262145, $t48)); + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t64); + + // assume Eq($t64, option::spec_borrow($t63)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t64, $1_option_spec_borrow'$1_string_String'($t63)); + + // $t64 := opaque end: option::borrow($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t66 := string::length($t64) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t66 := $1_string_length($t64); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t67 := +($t62, $t66) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t67 := $AddU64($t62, $t66); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t68 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t68 := 128; + assume $IsValid'u64'($t68); + + // $t69 := <=($t67, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t69 := $Le($t67, $t68); + + // if ($t69) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t69) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t70 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t70 := 4; + assume $IsValid'u64'($t70); + + // $t71 := error::out_of_range($t70) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t71 := $1_error_out_of_range($t70); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_abort($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,5):", $t71} $t71 == $t71; + + // $t48 := move($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t48 := $t71; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t72 := string::length($t3) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t72 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t73 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t73 := 128; + assume $IsValid'u64'($t73); + + // $t74 := <=($t72, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t74 := $Le($t72, $t73); + + // if ($t74) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t74) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t75 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t75 := 4; + assume $IsValid'u64'($t75); + + // $t76 := error::out_of_range($t75) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t76 := $1_error_out_of_range($t75); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_abort($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,5):", $t76} $t76 == $t76; + + // $t48 := move($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t48 := $t76; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t77 := string::length($t2) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t77 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t78 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t78 := 2048; + assume $IsValid'u64'($t78); + + // $t79 := <=($t77, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t79 := $Le($t77, $t78); + + // if ($t79) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t79) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t80 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t80 := 6; + assume $IsValid'u64'($t80); + + // $t81 := error::out_of_range($t80) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t81 := $1_error_out_of_range($t80); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_abort($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,5):", $t81} $t81 == $t81; + + // $t48 := move($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t48 := $t81; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t82 := string::length($t5) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t82 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t83 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t83 := 512; + assume $IsValid'u64'($t83); + + // $t84 := <=($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t84 := $Le($t82, $t83); + + // if ($t84) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t84) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t85 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t85 := 5; + assume $IsValid'u64'($t85); + + // $t86 := error::out_of_range($t85) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t86 := $1_error_out_of_range($t85); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_abort($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,5):", $t86} $t86 == $t86; + + // $t48 := move($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t48 := $t86; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t87 := object::generate_signer($t47) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t87 := $1_object_generate_signer($t47); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_local[object_signer#379]($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,5,30):", $t87} $t87 == $t87; + + // $t88 := signer::address_of($t87) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t88 := $1_signer_address_of($t87); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t89 := collection::increment_supply($t52, $t88) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t89 := $1_collection_increment_supply($t52, $t88); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t90 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t90 := 0; + assume $IsValid'u64'($t90); + + // $t91 := opaque begin: aggregator_v2::create_snapshot($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t92 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t92; + + // if ($t92) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t92) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t91); + + // $t91 := opaque end: aggregator_v2::create_snapshot($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t93 := opaque begin: option::destroy_with_default>($t89, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t93); + + // assume Eq>($t93, if option::spec_is_some>($t89) { + // option::spec_borrow>($t89) + // } else { + // $t91 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t93, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t89)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t89)) else ($t91))); + + // $t93 := opaque end: option::destroy_with_default>($t89, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#380]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,5,22):", $t93} $t93 == $t93; + + // $t94 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t94 := $t29; + + // $t95 := opaque begin: option::is_some($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t95); + + // assume Eq($t95, option::spec_is_some($t94)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t95, $1_option_spec_is_some'$1_string_String'($t94)); + + // $t95 := opaque end: option::is_some($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t95) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t95) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t96 := borrow_local($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t96 := $Mutation($Local(29), EmptyVec(), $t29); + + // $t97 := opaque begin: option::extract($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t98 := read_ref($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t98 := $Dereference($t96); + + // assume Identical($t99, option::spec_is_none($t96)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t99 == $1_option_spec_is_none'$1_string_String'($Dereference($t96))); + + // if ($t99) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t99) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t96), Eq(262145, $t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t96)) && $IsEqual'num'(262145, $t48)); + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t96 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t96 := $UpdateMutation($t96, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t96), Le(Len(select option::Option.vec($t96)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t96)) && (LenVec($Dereference($t96)->$vec) <= 1)); + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t97); + + // assume Eq($t97, option::spec_borrow($t98)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t97, $1_option_spec_borrow'$1_string_String'($t98)); + + // assume option::spec_is_none($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t96)); + + // $t97 := opaque end: option::extract($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t96)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t96)->$vec) <= 1); + + // write_back[LocalRoot($t29)@]($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t29 := $Dereference($t96); + + // trace_local[name_with_index_suffix#376]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,5,29):", $t29} $t29 == $t29; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t93, $t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t100 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t100; + + // if ($t100) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t100) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t93, $t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t101 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t101; + + // if ($t101) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t101) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#381]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,5,23):", $t6} $t6 == $t6; + + // $t102 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t102 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t102); + + // $t103 := string::utf8($t102) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t103 := $1_string_utf8($t102); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // trace_local[deprecated_name#383]($t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,5,18):", $t103} $t103 == $t103; + + // $t104 := pack object_token::TokenIdentifiers($t93, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t104 := $1_object_token_TokenIdentifiers($t93, $t6); + + // trace_local[token_concurrent#384]($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,5,35):", $t104} $t104 == $t104; + + // move_to($t104, $t87) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t87->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t87->$addr, $t104); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t105 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t105 := 0; + assume $IsValid'u64'($t105); + + // assume Identical($t106, global(signer::$address_of($t87))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t106 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t87))); + + // assume Identical($t107, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t106), signer::$address_of($t87)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t107 == $1_guid_GUID($1_guid_ID($t106->$guid_creation_num, $1_signer_$address_of($t87)))); + + // $t108 := object::new_event_handle($t87) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t108 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t87); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t109 := pack object_token::Token($t52, $t105, $t2, $t103, $t5, $t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t109 := $1_object_token_Token($t52, $t105, $t2, $t103, $t5, $t108); + + // trace_local[token#385]($t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,5,34):", $t109} $t109 == $t109; + + // move_to($t109, $t87) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t87->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t87->$addr, $t109); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // $t110 := copy($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t110 := $t33; + + // $t111 := opaque begin: option::is_some($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t111) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t111); + + // assume Eq($t111, option::spec_is_some($t110)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t111, $1_option_spec_is_some'$1_royalty_Royalty'($t110)); + + // $t111 := opaque end: option::is_some($t110) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t111) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t111) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t112 := borrow_local($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t112 := $Mutation($Local(33), EmptyVec(), $t33); + + // $t113 := opaque begin: option::extract($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t114 := read_ref($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t114 := $Dereference($t112); + + // assume Identical($t115, option::spec_is_none($t112)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t115 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t112))); + + // if ($t115) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t115) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t112), Eq(262145, $t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t112)) && $IsEqual'num'(262145, $t48)); + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t112 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t112 := $UpdateMutation($t112, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t112), Le(Len(select option::Option.vec($t112)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t112)) && (LenVec($Dereference($t112)->$vec) <= 1)); + + // assume WellFormed($t113) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t113); + + // assume Eq($t113, option::spec_borrow($t114)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t113, $1_option_spec_borrow'$1_royalty_Royalty'($t114)); + + // assume option::spec_is_none($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t112)); + + // $t113 := opaque end: option::extract($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t112)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t112)->$vec) <= 1); + + // write_back[LocalRoot($t33)@]($t112) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t33 := $Dereference($t112); + + // trace_local[royalty#377]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,5,33):", $t33} $t33 == $t33; + + // royalty::init($t47, $t113) on_abort goto L24 with $t48 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t47, $t113); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t48 := $abort_code; + assume {:print "$track_abort(81,5):", $t48} $t48 == $t48; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:571:9+15 + assume {:print "$at(181,20709,20724)"} true; +L22: + + // trace_return[0]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:571:9+15 + assume {:print "$at(181,20709,20724)"} true; + assume {:print "$track_return(81,5,0):", $t47} $t47 == $t47; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:572:5+1 + assume {:print "$at(181,20729,20730)"} true; +L23: + + // return $t47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:572:5+1 + assume {:print "$at(181,20729,20730)"} true; + $ret0 := $t47; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:572:5+1 +L24: + + // abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:572:5+1 + assume {:print "$at(181,20729,20730)"} true; + $abort_code := $t48; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t96) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t112) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_named_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+609 +procedure {:timeLimit 80} $1_object_token_create_named_token$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_string_String; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_object_ConstructorRef; + var $t15: $signer; + var $t16: $signer; + var $t17: int; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t23: $1_aggregator_v2_DerivedStringSnapshot; + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: $1_string_String; + var $t27: $1_option_Option'$1_string_String'; + var $t28: $1_option_Option'$1_string_String'; + var $t29: $1_option_Option'$1_string_String'; + var $t30: $signer; + var $t31: $1_option_Option'$1_royalty_Royalty'; + var $t32: $1_option_Option'$1_royalty_Royalty'; + var $t33: $1_option_Option'$1_royalty_Royalty'; + var $t34: Vec (int); + var $t35: $1_object_token_Token; + var $t36: $1_object_token_TokenIdentifiers; + var $t37: $1_string_String; + var $t38: $1_string_String; + var $t39: $1_string_String; + var $t40: Vec (int); + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $1_object_ConstructorRef; + var $t45: $1_option_Option'$1_string_String'; + var $t46: int; + var $t47: int; + var $t48: $1_object_Object'$1_collection_Collection'; + var $t49: int; + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: $1_option_Option'$1_string_String'; + var $t55: bool; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: $1_option_Option'$1_string_String'; + var $t60: $1_string_String; + var $t61: bool; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: int; + var $t70: bool; + var $t71: int; + var $t72: int; + var $t73: int; + var $t74: int; + var $t75: bool; + var $t76: int; + var $t77: int; + var $t78: int; + var $t79: int; + var $t80: bool; + var $t81: int; + var $t82: int; + var $t83: $signer; + var $t84: int; + var $t85: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t86: int; + var $t87: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t88: bool; + var $t89: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t90: $1_option_Option'$1_string_String'; + var $t91: bool; + var $t92: $Mutation ($1_option_Option'$1_string_String'); + var $t93: $1_string_String; + var $t94: $1_option_Option'$1_string_String'; + var $t95: bool; + var $t96: bool; + var $t97: bool; + var $t98: Vec (int); + var $t99: $1_string_String; + var $t100: $1_object_token_TokenIdentifiers; + var $t101: int; + var $t102: $1_object_ObjectCore; + var $t103: $1_guid_GUID; + var $t104: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t105: $1_object_token_Token; + var $t106: $1_option_Option'$1_royalty_Royalty'; + var $t107: bool; + var $t108: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t109: $1_royalty_Royalty; + var $t110: $1_option_Option'$1_royalty_Royalty'; + var $t111: bool; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$at(181,16909,16910)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:456:5+1 + assume {:print "$track_local(81,6,5):", $t5} $t5 == $t5; + + // $t40 := object_token::create_token_seed($t1, $t3) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:464:20+42 + assume {:print "$at(181,17148,17190)"} true; + call $t40 := $1_object_token_create_token_seed($t1, $t3); + if ($abort_flag) { + assume {:print "$at(181,17148,17190)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[seed]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:464:13+4 + assume {:print "$track_local(81,6,34):", $t40} $t40 == $t40; + + // assume Identical($t42, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t42 == $1_signer_$address_of($t0)); + + // assume Identical($t43, object::spec_create_object_address($t42, $t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t43 == $1_object_spec_create_object_address($t42, $t40)); + + // $t44 := object::create_named_object($t0, $t40) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:466:31+42 + assume {:print "$at(181,17223,17265)"} true; + call $t44 := $1_object_create_named_object($t0, $t40); + if ($abort_flag) { + assume {:print "$at(181,17223,17265)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[constructor_ref]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:466:13+15 + assume {:print "$track_local(81,6,11):", $t44} $t44 == $t44; + + // $t45 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:473:13+14 + assume {:print "$at(181,17425,17439)"} true; + + // assume And(WellFormed($t45), Le(Len(select option::Option.vec($t45)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:473:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t45) && (LenVec($t45->$vec) <= 1)); + + // assume Eq>($t45, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:473:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t45, $1_option_spec_none'$1_string_String'()); + + // $t45 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:473:13+14 + + // trace_local[uri#393]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:134:9+3 + assume {:print "$at(181,5499,5502)"} true; + assume {:print "$track_local(81,6,37):", $t5} $t5 == $t5; + + // trace_local[royalty#392]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:133:9+7 + assume {:print "$at(181,5465,5472)"} true; + assume {:print "$track_local(81,6,31):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#391]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:132:9+22 + assume {:print "$at(181,5417,5439)"} true; + assume {:print "$track_local(81,6,27):", $t45} $t45 == $t45; + + // trace_local[name_prefix#390]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:129:9+11 + assume {:print "$at(181,5225,5236)"} true; + assume {:print "$track_local(81,6,24):", $t3} $t3 == $t3; + + // trace_local[description#389]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:128:9+11 + assume {:print "$at(181,5196,5207)"} true; + assume {:print "$track_local(81,6,19):", $t2} $t2 == $t2; + + // trace_local[collection_name#388]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:127:9+15 + assume {:print "$at(181,5163,5178)"} true; + assume {:print "$track_local(81,6,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#387]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:126:9+15 + assume {:print "$at(181,5121,5136)"} true; + assume {:print "$track_local(81,6,12):", $t44} $t44 == $t44; + + // trace_local[creator#386]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:125:9+7 + assume {:print "$at(181,5095,5102)"} true; + assume {:print "$track_local(81,6,15):", $t0} $t0 == $t0; + + // $t46 := signer::address_of($t0) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:31+27 + assume {:print "$at(181,5550,5577)"} true; + call $t46 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,5550,5577)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[creator_address#394]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:13+15 + assume {:print "$track_local(81,6,17):", $t46} $t46 == $t46; + + // $t47 := collection::create_collection_address($t46, $t1) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:137:31+73 + assume {:print "$at(181,5609,5682)"} true; + call $t47 := $1_collection_create_collection_address($t46, $t1); + if ($abort_flag) { + assume {:print "$at(181,5609,5682)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t48 := object::address_to_object($t47) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:26+54 + assume {:print "$at(181,5709,5763)"} true; + call $t48 := $1_object_address_to_object'$1_collection_Collection'($t47); + if ($abort_flag) { + assume {:print "$at(181,5709,5763)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[collection#396]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:13+10 + assume {:print "$track_local(81,6,7):", $t48} $t48 == $t48; + + // trace_local[uri#404]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,6,38):", $t5} $t5 == $t5; + + // trace_local[royalty#403]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,6,32):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#402]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,6,28):", $t45} $t45 == $t45; + + // trace_local[name_prefix#401]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,6,25):", $t3} $t3 == $t3; + + // trace_local[description#400]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,6,20):", $t2} $t2 == $t2; + + // trace_local[collection#399]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,6,8):", $t48} $t48 == $t48; + + // trace_local[constructor_ref#398]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,6,13):", $t44} $t44 == $t44; + + // trace_local[creator#397]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,6,16):", $t0} $t0 == $t0; + + // $t49 := collection::creator($t48) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t49 := $1_collection_creator'$1_collection_Collection'($t48); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t50 := signer::address_of($t0) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t50 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t51 := ==($t49, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t51 := $IsEqual'address'($t49, $t50); + + // if ($t51) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t51) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t52 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t52 := 2; + assume $IsValid'u64'($t52); + + // $t53 := error::unauthenticated($t52) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t53 := $1_error_unauthenticated($t52); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,6):", $t53} $t53 == $t53; + + // $t41 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t41 := $t53; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#411]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,6,39):", $t5} $t5 == $t5; + + // $t33 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t33 := $t4; + + // trace_local[royalty#410]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,6,33):", $t33} $t33 == $t33; + + // $t29 := $t45 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t29 := $t45; + + // trace_local[name_with_index_suffix#409]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,6,29):", $t29} $t29 == $t29; + + // trace_local[name_prefix#408]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,6,26):", $t3} $t3 == $t3; + + // trace_local[description#407]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,6,21):", $t2} $t2 == $t2; + + // trace_local[collection#406]($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,6,9):", $t48} $t48 == $t48; + + // trace_local[constructor_ref#405]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,6,14):", $t44} $t44 == $t44; + + // $t54 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t54 := $t29; + + // $t55 := opaque begin: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t55); + + // assume Eq($t55, option::spec_is_some($t54)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t55, $1_option_spec_is_some'$1_string_String'($t54)); + + // $t55 := opaque end: option::is_some($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t55) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t55) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t56 := string::length($t3) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t56 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t57 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t57 := 20; + assume $IsValid'u64'($t57); + + // $t58 := +($t56, $t57) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t58 := $AddU64($t56, $t57); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t59 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t59 := $t29; + + // $t60 := opaque begin: option::borrow($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t61, option::spec_is_none($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t61 == $1_option_spec_is_none'$1_string_String'($t59)); + + // if ($t61) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t61) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t59), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t59) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t60); + + // assume Eq($t60, option::spec_borrow($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t60, $1_option_spec_borrow'$1_string_String'($t59)); + + // $t60 := opaque end: option::borrow($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t62 := string::length($t60) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t62 := $1_string_length($t60); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t63 := +($t58, $t62) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t63 := $AddU64($t58, $t62); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t64 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t64 := 128; + assume $IsValid'u64'($t64); + + // $t65 := <=($t63, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t65 := $Le($t63, $t64); + + // if ($t65) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t65) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t66 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t66 := 4; + assume $IsValid'u64'($t66); + + // $t67 := error::out_of_range($t66) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t67 := $1_error_out_of_range($t66); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,6):", $t67} $t67 == $t67; + + // $t41 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t41 := $t67; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t68 := string::length($t3) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t68 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t69 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t69 := 128; + assume $IsValid'u64'($t69); + + // $t70 := <=($t68, $t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t70 := $Le($t68, $t69); + + // if ($t70) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t70) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t71 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t71 := 4; + assume $IsValid'u64'($t71); + + // $t72 := error::out_of_range($t71) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t72 := $1_error_out_of_range($t71); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,6):", $t72} $t72 == $t72; + + // $t41 := move($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t41 := $t72; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t73 := string::length($t2) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t73 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t74 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t74 := 2048; + assume $IsValid'u64'($t74); + + // $t75 := <=($t73, $t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t75 := $Le($t73, $t74); + + // if ($t75) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t75) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t76 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t76 := 6; + assume $IsValid'u64'($t76); + + // $t77 := error::out_of_range($t76) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t77 := $1_error_out_of_range($t76); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,6):", $t77} $t77 == $t77; + + // $t41 := move($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t41 := $t77; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t78 := string::length($t5) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t78 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t79 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t79 := 512; + assume $IsValid'u64'($t79); + + // $t80 := <=($t78, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t80 := $Le($t78, $t79); + + // if ($t80) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t80) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t81 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t81 := 5; + assume $IsValid'u64'($t81); + + // $t82 := error::out_of_range($t81) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t82 := $1_error_out_of_range($t81); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,6):", $t82} $t82 == $t82; + + // $t41 := move($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t41 := $t82; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t83 := object::generate_signer($t44) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t83 := $1_object_generate_signer($t44); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[object_signer#412]($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,6,30):", $t83} $t83 == $t83; + + // $t84 := signer::address_of($t83) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t84 := $1_signer_address_of($t83); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t85 := collection::increment_supply($t48, $t84) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t85 := $1_collection_increment_supply($t48, $t84); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t86 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t86 := 0; + assume $IsValid'u64'($t86); + + // $t87 := opaque begin: aggregator_v2::create_snapshot($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t88 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t88; + + // if ($t88) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t88) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t87); + + // $t87 := opaque end: aggregator_v2::create_snapshot($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t89 := opaque begin: option::destroy_with_default>($t85, $t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t89); + + // assume Eq>($t89, if option::spec_is_some>($t85) { + // option::spec_borrow>($t85) + // } else { + // $t87 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t89, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t85)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t85)) else ($t87))); + + // $t89 := opaque end: option::destroy_with_default>($t85, $t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#413]($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,6,22):", $t89} $t89 == $t89; + + // $t90 := copy($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t90 := $t29; + + // $t91 := opaque begin: option::is_some($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t91); + + // assume Eq($t91, option::spec_is_some($t90)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t91, $1_option_spec_is_some'$1_string_String'($t90)); + + // $t91 := opaque end: option::is_some($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t91) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t91) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t92 := borrow_local($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t92 := $Mutation($Local(29), EmptyVec(), $t29); + + // $t93 := opaque begin: option::extract($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t94 := read_ref($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t94 := $Dereference($t92); + + // assume Identical($t95, option::spec_is_none($t92)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t95 == $1_option_spec_is_none'$1_string_String'($Dereference($t92))); + + // if ($t95) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t95) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t92), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t92)) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t92 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t92 := $UpdateMutation($t92, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t92), Le(Len(select option::Option.vec($t92)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t92)) && (LenVec($Dereference($t92)->$vec) <= 1)); + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t93); + + // assume Eq($t93, option::spec_borrow($t94)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t93, $1_option_spec_borrow'$1_string_String'($t94)); + + // assume option::spec_is_none($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t92)); + + // $t93 := opaque end: option::extract($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t92)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t92)->$vec) <= 1); + + // write_back[LocalRoot($t29)@]($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t29 := $Dereference($t92); + + // trace_local[name_with_index_suffix#409]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,6,29):", $t29} $t29 == $t29; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t89, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t96 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t96; + + // if ($t96) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t96) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t89, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t97 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t97; + + // if ($t97) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t97) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#414]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,6,23):", $t6} $t6 == $t6; + + // $t98 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t98 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t98); + + // $t99 := string::utf8($t98) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t99 := $1_string_utf8($t98); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[deprecated_name#416]($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,6,18):", $t99} $t99 == $t99; + + // $t100 := pack object_token::TokenIdentifiers($t89, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t100 := $1_object_token_TokenIdentifiers($t89, $t6); + + // trace_local[token_concurrent#417]($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,6,36):", $t100} $t100 == $t100; + + // move_to($t100, $t83) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t83->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t83->$addr, $t100); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t101 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t101 := 0; + assume $IsValid'u64'($t101); + + // assume Identical($t102, global(signer::$address_of($t83))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t102 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t83))); + + // assume Identical($t103, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t102), signer::$address_of($t83)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t103 == $1_guid_GUID($1_guid_ID($t102->$guid_creation_num, $1_signer_$address_of($t83)))); + + // $t104 := object::new_event_handle($t83) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t104 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t83); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t105 := pack object_token::Token($t48, $t101, $t2, $t99, $t5, $t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t105 := $1_object_token_Token($t48, $t101, $t2, $t99, $t5, $t104); + + // trace_local[token#418]($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,6,35):", $t105} $t105 == $t105; + + // move_to($t105, $t83) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t83->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t83->$addr, $t105); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // $t106 := copy($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t106 := $t33; + + // $t107 := opaque begin: option::is_some($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t107); + + // assume Eq($t107, option::spec_is_some($t106)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t107, $1_option_spec_is_some'$1_royalty_Royalty'($t106)); + + // $t107 := opaque end: option::is_some($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t107) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t107) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t108 := borrow_local($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t108 := $Mutation($Local(33), EmptyVec(), $t33); + + // $t109 := opaque begin: option::extract($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t110 := read_ref($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t110 := $Dereference($t108); + + // assume Identical($t111, option::spec_is_none($t108)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t111 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t108))); + + // if ($t111) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t111) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t108), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t108)) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t108 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t108 := $UpdateMutation($t108, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t108), Le(Len(select option::Option.vec($t108)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t108)) && (LenVec($Dereference($t108)->$vec) <= 1)); + + // assume WellFormed($t109) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t109); + + // assume Eq($t109, option::spec_borrow($t110)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t109, $1_option_spec_borrow'$1_royalty_Royalty'($t110)); + + // assume option::spec_is_none($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t108)); + + // $t109 := opaque end: option::extract($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t108)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t108)->$vec) <= 1); + + // write_back[LocalRoot($t33)@]($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t33 := $Dereference($t108); + + // trace_local[royalty#410]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,6,33):", $t33} $t33 == $t33; + + // royalty::init($t44, $t109) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t44, $t109); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,6):", $t41} $t41 == $t41; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:477:9+15 + assume {:print "$at(181,17497,17512)"} true; +L22: + + // trace_return[0]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:477:9+15 + assume {:print "$at(181,17497,17512)"} true; + assume {:print "$track_return(81,6,0):", $t44} $t44 == $t44; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:478:5+1 + assume {:print "$at(181,17517,17518)"} true; +L23: + + // return $t44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:478:5+1 + assume {:print "$at(181,17517,17518)"} true; + $ret0 := $t44; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:478:5+1 +L24: + + // abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:478:5+1 + assume {:print "$at(181,17517,17518)"} true; + $abort_code := $t41; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t92) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t108) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_named_token_as_collection_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+668 +procedure {:timeLimit 80} $1_object_token_create_named_token_as_collection_owner$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_string_String; + var $t7: $1_aggregator_v2_DerivedStringSnapshot; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t17: $1_aggregator_v2_DerivedStringSnapshot; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_option_Option'$1_string_String'; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $signer; + var $t23: $signer; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: Vec (int); + var $t27: $1_object_token_Token; + var $t28: $1_object_token_TokenIdentifiers; + var $t29: $1_string_String; + var $t30: $1_string_String; + var $t31: $1_string_String; + var $t32: int; + var $t33: Vec (int); + var $t34: int; + var $t35: int; + var $t36: $1_object_ConstructorRef; + var $t37: $1_option_Option'$1_string_String'; + var $t38: bool; + var $t39: int; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: bool; + var $t44: int; + var $t45: int; + var $t46: $1_option_Option'$1_string_String'; + var $t47: bool; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: $1_option_Option'$1_string_String'; + var $t52: $1_string_String; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: bool; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: bool; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: bool; + var $t68: int; + var $t69: int; + var $t70: int; + var $t71: int; + var $t72: bool; + var $t73: int; + var $t74: int; + var $t75: $signer; + var $t76: int; + var $t77: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t78: int; + var $t79: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t80: bool; + var $t81: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t82: $1_option_Option'$1_string_String'; + var $t83: bool; + var $t84: $Mutation ($1_option_Option'$1_string_String'); + var $t85: $1_string_String; + var $t86: $1_option_Option'$1_string_String'; + var $t87: bool; + var $t88: bool; + var $t89: bool; + var $t90: Vec (int); + var $t91: $1_string_String; + var $t92: $1_object_token_TokenIdentifiers; + var $t93: int; + var $t94: $1_object_ObjectCore; + var $t95: $1_guid_GUID; + var $t96: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t97: $1_object_token_Token; + var $t98: $1_option_Option'$1_royalty_Royalty'; + var $t99: bool; + var $t100: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t101: $1_royalty_Royalty; + var $t102: $1_option_Option'$1_royalty_Royalty'; + var $t103: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$at(181,17642,17643)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:481:5+1 + assume {:print "$track_local(81,7,5):", $t5} $t5 == $t5; + + // $t31 := collection::name($t1) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:489:39+28 + assume {:print "$at(181,17927,17955)"} true; + call $t31 := $1_collection_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,17927,17955)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t33 := object_token::create_token_seed($t31, $t3) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:489:20+55 + call $t33 := $1_object_token_create_token_seed($t31, $t3); + if ($abort_flag) { + assume {:print "$at(181,17908,17963)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_local[seed]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:489:13+4 + assume {:print "$track_local(81,7,26):", $t33} $t33 == $t33; + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, object::spec_create_object_address($t34, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t35 == $1_object_spec_create_object_address($t34, $t33)); + + // $t36 := object::create_named_object($t0, $t33) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:490:31+42 + assume {:print "$at(181,17995,18037)"} true; + call $t36 := $1_object_create_named_object($t0, $t33); + if ($abort_flag) { + assume {:print "$at(181,17995,18037)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_local[constructor_ref]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:490:13+15 + assume {:print "$track_local(81,7,10):", $t36} $t36 == $t36; + + // $t37 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:497:13+14 + assume {:print "$at(181,18217,18231)"} true; + + // assume And(WellFormed($t37), Le(Len(select option::Option.vec($t37)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:497:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t37) && (LenVec($t37->$vec) <= 1)); + + // assume Eq>($t37, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:497:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t37, $1_option_spec_none'$1_string_String'()); + + // $t37 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:497:13+14 + + // trace_local[uri#426]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:187:9+3 + assume {:print "$at(181,7339,7342)"} true; + assume {:print "$track_local(81,7,29):", $t5} $t5 == $t5; + + // trace_local[royalty#425]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:186:9+7 + assume {:print "$at(181,7305,7312)"} true; + assume {:print "$track_local(81,7,24):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#424]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:185:9+22 + assume {:print "$at(181,7257,7279)"} true; + assume {:print "$track_local(81,7,20):", $t37} $t37 == $t37; + + // trace_local[name_prefix#423]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:182:9+11 + assume {:print "$at(181,7065,7076)"} true; + assume {:print "$track_local(81,7,18):", $t3} $t3 == $t3; + + // trace_local[description#422]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:181:9+11 + assume {:print "$at(181,7036,7047)"} true; + assume {:print "$track_local(81,7,14):", $t2} $t2 == $t2; + + // trace_local[collection#421]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:180:9+10 + assume {:print "$at(181,6996,7006)"} true; + assume {:print "$track_local(81,7,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#420]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:179:9+15 + assume {:print "$at(181,6954,6969)"} true; + assume {:print "$track_local(81,7,11):", $t36} $t36 == $t36; + + // trace_local[owner#419]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:178:9+5 + assume {:print "$at(181,6930,6935)"} true; + assume {:print "$track_local(81,7,23):", $t0} $t0 == $t0; + + // $t38 := features::is_collection_owner_enabled() on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:17+39 + assume {:print "$at(181,7376,7415)"} true; + call $t38 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(181,7376,7415)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // if ($t38) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + if ($t38) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L0: + + // $t39 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:77+31 + assume {:print "$at(181,7436,7467)"} true; + $t39 := 9; + assume $IsValid'u64'($t39); + + // $t40 := error::unavailable($t39) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:58+51 + call $t40 := $1_error_unavailable($t39); + if ($abort_flag) { + assume {:print "$at(181,7417,7468)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + assume {:print "$track_abort(81,7):", $t40} $t40 == $t40; + + // $t32 := move($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + $t32 := $t40; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + goto L27; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:31+10 + assume {:print "$at(181,7501,7511)"} true; +L2: + + // $t41 := object::owner($t1) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:17+25 + assume {:print "$at(181,7487,7512)"} true; + call $t41 := $1_object_owner'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,7487,7512)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t42 := signer::address_of($t0) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:46+25 + call $t42 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,7516,7541)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t43 := ==($t41, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:43+2 + $t43 := $IsEqual'address'($t41, $t42); + + // if ($t43) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + if ($t43) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L3: + + // $t44 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:96+10 + assume {:print "$at(181,7566,7576)"} true; + $t44 := 8; + assume $IsValid'u64'($t44); + + // $t45 := error::unauthenticated($t44) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:73+34 + call $t45 := $1_error_unauthenticated($t44); + if ($abort_flag) { + assume {:print "$at(181,7543,7577)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + assume {:print "$track_abort(81,7):", $t45} $t45 == $t45; + + // $t32 := move($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + $t32 := $t45; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + goto L27; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:193:13+15 + assume {:print "$at(181,7641,7656)"} true; +L5: + + // trace_local[uri#433]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,7,30):", $t5} $t5 == $t5; + + // $t25 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t25 := $t4; + + // trace_local[royalty#432]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,7,25):", $t25} $t25 == $t25; + + // $t21 := $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t21 := $t37; + + // trace_local[name_with_index_suffix#431]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,7,21):", $t21} $t21 == $t21; + + // trace_local[name_prefix#430]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,7,19):", $t3} $t3 == $t3; + + // trace_local[description#429]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,7,15):", $t2} $t2 == $t2; + + // trace_local[collection#428]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,7,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#427]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,7,12):", $t36} $t36 == $t36; + + // $t46 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t46 := $t21; + + // $t47 := opaque begin: option::is_some($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t47); + + // assume Eq($t47, option::spec_is_some($t46)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t47, $1_option_spec_is_some'$1_string_String'($t46)); + + // $t47 := opaque end: option::is_some($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t47) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t47) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L7: + + // $t48 := string::length($t3) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t48 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t49 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t49 := 20; + assume $IsValid'u64'($t49); + + // $t50 := +($t48, $t49) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t50 := $AddU64($t48, $t49); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t51 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t51 := $t21; + + // $t52 := opaque begin: option::borrow($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t53, option::spec_is_none($t51)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t53 == $1_option_spec_is_none'$1_string_String'($t51)); + + // if ($t53) goto L29 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t53) { goto L29; } else { goto L28; } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L29: + + // assume And(option::spec_is_none($t51), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t51) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L27; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L28: + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t52); + + // assume Eq($t52, option::spec_borrow($t51)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t52, $1_option_spec_borrow'$1_string_String'($t51)); + + // $t52 := opaque end: option::borrow($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t54 := string::length($t52) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t54 := $1_string_length($t52); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t55 := +($t50, $t54) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t55 := $AddU64($t50, $t54); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t56 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t56 := 128; + assume $IsValid'u64'($t56); + + // $t57 := <=($t55, $t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t57 := $Le($t55, $t56); + + // if ($t57) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t57) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L8: + + // $t58 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t58 := 4; + assume $IsValid'u64'($t58); + + // $t59 := error::out_of_range($t58) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t59 := $1_error_out_of_range($t58); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,7):", $t59} $t59 == $t59; + + // $t32 := move($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t32 := $t59; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L27; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L6: + + // $t60 := string::length($t3) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t60 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t61 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t61 := 128; + assume $IsValid'u64'($t61); + + // $t62 := <=($t60, $t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t62 := $Le($t60, $t61); + + // if ($t62) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t62) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L13: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L12: + + // $t63 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t63 := 4; + assume $IsValid'u64'($t63); + + // $t64 := error::out_of_range($t63) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t64 := $1_error_out_of_range($t63); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,7):", $t64} $t64 == $t64; + + // $t32 := move($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t32 := $t64; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L27; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L11: + + // $t65 := string::length($t2) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t65 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t66 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t66 := 2048; + assume $IsValid'u64'($t66); + + // $t67 := <=($t65, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t67 := $Le($t65, $t66); + + // if ($t67) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t67) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L14: + + // $t68 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t68 := 6; + assume $IsValid'u64'($t68); + + // $t69 := error::out_of_range($t68) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t69 := $1_error_out_of_range($t68); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,7):", $t69} $t69 == $t69; + + // $t32 := move($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t32 := $t69; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L27; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L16: + + // $t70 := string::length($t5) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t70 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t71 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t71 := 512; + assume $IsValid'u64'($t71); + + // $t72 := <=($t70, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t72 := $Le($t70, $t71); + + // if ($t72) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t72) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L17: + + // $t73 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t73 := 5; + assume $IsValid'u64'($t73); + + // $t74 := error::out_of_range($t73) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t74 := $1_error_out_of_range($t73); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_abort($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,7):", $t74} $t74 == $t74; + + // $t32 := move($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t32 := $t74; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L19: + + // $t75 := object::generate_signer($t36) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t75 := $1_object_generate_signer($t36); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_local[object_signer#434]($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,7,22):", $t75} $t75 == $t75; + + // $t76 := signer::address_of($t75) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t76 := $1_signer_address_of($t75); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t77 := collection::increment_supply($t1, $t76) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t77 := $1_collection_increment_supply($t1, $t76); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t78 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t78 := 0; + assume $IsValid'u64'($t78); + + // $t79 := opaque begin: aggregator_v2::create_snapshot($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t80 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t80; + + // if ($t80) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t80) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L31: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L27; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L30: + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t79); + + // $t79 := opaque end: aggregator_v2::create_snapshot($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t81 := opaque begin: option::destroy_with_default>($t77, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t81); + + // assume Eq>($t81, if option::spec_is_some>($t77) { + // option::spec_borrow>($t77) + // } else { + // $t79 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t81, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t77)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t77)) else ($t79))); + + // $t81 := opaque end: option::destroy_with_default>($t77, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#435]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,7,16):", $t81} $t81 == $t81; + + // $t82 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t82 := $t21; + + // $t83 := opaque begin: option::is_some($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t83); + + // assume Eq($t83, option::spec_is_some($t82)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t83, $1_option_spec_is_some'$1_string_String'($t82)); + + // $t83 := opaque end: option::is_some($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t83) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t83) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L21: + + // $t84 := borrow_local($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t84 := $Mutation($Local(21), EmptyVec(), $t21); + + // $t85 := opaque begin: option::extract($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t86 := read_ref($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t86 := $Dereference($t84); + + // assume Identical($t87, option::spec_is_none($t84)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t87 == $1_option_spec_is_none'$1_string_String'($Dereference($t84))); + + // if ($t87) goto L33 else goto L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t87) { goto L33; } else { goto L40; } + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L33: + + // assume And(option::spec_is_none($t84), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t84)) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L27; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L32: + + // $t84 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t84 := $UpdateMutation($t84, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t84), Le(Len(select option::Option.vec($t84)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t84)) && (LenVec($Dereference($t84)->$vec) <= 1)); + + // assume WellFormed($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t85); + + // assume Eq($t85, option::spec_borrow($t86)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t85, $1_option_spec_borrow'$1_string_String'($t86)); + + // assume option::spec_is_none($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t84)); + + // $t85 := opaque end: option::extract($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t84)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t84)->$vec) <= 1); + + // write_back[LocalRoot($t21)@]($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t21 := $Dereference($t84); + + // trace_local[name_with_index_suffix#431]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,7,21):", $t21} $t21 == $t21; + + // $t7 := opaque begin: aggregator_v2::derive_string_concat($t3, $t81, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t88 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t88; + + // if ($t88) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t88) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L35: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L27; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L34: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::derive_string_concat($t3, $t81, $t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L20: + + // $t7 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t89 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t89; + + // if ($t89) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t89) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L37: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L27; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L36: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L22: + + // trace_local[name#436]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,7,17):", $t7} $t7 == $t7; + + // $t90 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t90 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t90); + + // $t91 := string::utf8($t90) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t91 := $1_string_utf8($t90); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // trace_local[deprecated_name#438]($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,7,13):", $t91} $t91 == $t91; + + // $t92 := pack object_token::TokenIdentifiers($t81, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t92 := $1_object_token_TokenIdentifiers($t81, $t7); + + // trace_local[token_concurrent#439]($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,7,28):", $t92} $t92 == $t92; + + // move_to($t92, $t75) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t75->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t75->$addr, $t92); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t93 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t93 := 0; + assume $IsValid'u64'($t93); + + // assume Identical($t94, global(signer::$address_of($t75))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t94 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t75))); + + // assume Identical($t95, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t94), signer::$address_of($t75)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t95 == $1_guid_GUID($1_guid_ID($t94->$guid_creation_num, $1_signer_$address_of($t75)))); + + // $t96 := object::new_event_handle($t75) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t96 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t75); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t97 := pack object_token::Token($t1, $t93, $t2, $t91, $t5, $t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t97 := $1_object_token_Token($t1, $t93, $t2, $t91, $t5, $t96); + + // trace_local[token#440]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,7,27):", $t97} $t97 == $t97; + + // move_to($t97, $t75) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t75->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t75->$addr, $t97); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // $t98 := copy($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t98 := $t25; + + // $t99 := opaque begin: option::is_some($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t99); + + // assume Eq($t99, option::spec_is_some($t98)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t99, $1_option_spec_is_some'$1_royalty_Royalty'($t98)); + + // $t99 := opaque end: option::is_some($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t99) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t99) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L24: + + // $t100 := borrow_local($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t100 := $Mutation($Local(25), EmptyVec(), $t25); + + // $t101 := opaque begin: option::extract($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t102 := read_ref($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t102 := $Dereference($t100); + + // assume Identical($t103, option::spec_is_none($t100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t103 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t100))); + + // if ($t103) goto L39 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t103) { goto L39; } else { goto L41; } + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L39: + + // assume And(option::spec_is_none($t100), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t100)) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L27; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L38: + + // $t100 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t100 := $UpdateMutation($t100, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t100), Le(Len(select option::Option.vec($t100)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t100)) && (LenVec($Dereference($t100)->$vec) <= 1)); + + // assume WellFormed($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t101); + + // assume Eq($t101, option::spec_borrow($t102)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t101, $1_option_spec_borrow'$1_royalty_Royalty'($t102)); + + // assume option::spec_is_none($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t100)); + + // $t101 := opaque end: option::extract($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t100)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t100)->$vec) <= 1); + + // write_back[LocalRoot($t25)@]($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t25 := $Dereference($t100); + + // trace_local[royalty#432]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,7,25):", $t25} $t25 == $t25; + + // royalty::init($t36, $t101) on_abort goto L27 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t36, $t101); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,7):", $t32} $t32 == $t32; + goto L27; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L23: + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:501:9+15 + assume {:print "$at(181,18289,18304)"} true; +L25: + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:501:9+15 + assume {:print "$at(181,18289,18304)"} true; + assume {:print "$track_return(81,7,0):", $t36} $t36 == $t36; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:502:5+1 + assume {:print "$at(181,18309,18310)"} true; +L26: + + // return $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:502:5+1 + assume {:print "$at(181,18309,18310)"} true; + $ret0 := $t36; + return; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:502:5+1 +L27: + + // abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:502:5+1 + assume {:print "$at(181,18309,18310)"} true; + $abort_code := $t32; + $abort_flag := true; + return; + + // label L40 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L40: + + // drop($t84) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + + // label L41 at :1:1+10 +L41: + + // drop($t100) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L38 at :1:1+10 + goto L38; + +} + +// fun object_token::create_named_token_from_seed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+582 +procedure {:timeLimit 80} $1_object_token_create_named_token_from_seed$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: $1_option_Option'$1_royalty_Royalty', _$t6: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $1_aggregator_v2_DerivedStringSnapshot; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_Object'$1_collection_Collection'; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $signer; + var $t15: $1_string_String; + var $t16: $1_string_String; + var $t17: $1_string_String; + var $t18: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t19: $1_aggregator_v2_DerivedStringSnapshot; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_option_Option'$1_string_String'; + var $t23: $1_option_Option'$1_string_String'; + var $t24: $signer; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: $1_option_Option'$1_royalty_Royalty'; + var $t27: Vec (int); + var $t28: $1_object_token_Token; + var $t29: $1_object_token_TokenIdentifiers; + var $t30: $1_string_String; + var $t31: $1_string_String; + var $t32: $1_string_String; + var $t33: int; + var $t34: Vec (int); + var $t35: int; + var $t36: int; + var $t37: $1_object_ConstructorRef; + var $t38: $1_option_Option'$1_string_String'; + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: $1_option_Option'$1_string_String'; + var $t45: bool; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: $1_option_Option'$1_string_String'; + var $t50: $1_string_String; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: bool; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: bool; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: int; + var $t70: bool; + var $t71: int; + var $t72: int; + var $t73: $signer; + var $t74: int; + var $t75: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t76: int; + var $t77: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t78: bool; + var $t79: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t80: $1_option_Option'$1_string_String'; + var $t81: bool; + var $t82: $Mutation ($1_option_Option'$1_string_String'); + var $t83: $1_string_String; + var $t84: $1_option_Option'$1_string_String'; + var $t85: bool; + var $t86: bool; + var $t87: bool; + var $t88: Vec (int); + var $t89: $1_string_String; + var $t90: $1_object_token_TokenIdentifiers; + var $t91: int; + var $t92: $1_object_ObjectCore; + var $t93: $1_guid_GUID; + var $t94: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t95: $1_object_token_Token; + var $t96: $1_option_Option'$1_royalty_Royalty'; + var $t97: bool; + var $t98: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t99: $1_royalty_Royalty; + var $t100: $1_option_Option'$1_royalty_Royalty'; + var $t101: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_option_Option'$1_royalty_Royalty'; + var $t6: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$at(181,18534,18535)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,3):", $t3} $t3 == $t3; + + // trace_local[seed]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,4):", $t4} $t4 == $t4; + + // trace_local[royalty]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:507:5+1 + assume {:print "$track_local(81,8,6):", $t6} $t6 == $t6; + + // $t32 := collection::name($t1) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:516:49+28 + assume {:print "$at(181,18841,18869)"} true; + call $t32 := $1_collection_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,18841,18869)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t34 := object_token::create_token_name_with_seed($t32, $t3, $t4) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:516:20+72 + call $t34 := $1_object_token_create_token_name_with_seed($t32, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(181,18812,18884)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_local[seed#2]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:516:13+4 + assume {:print "$track_local(81,8,27):", $t34} $t34 == $t34; + + // assume Identical($t35, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t35 == $1_signer_$address_of($t0)); + + // assume Identical($t36, object::spec_create_object_address($t35, $t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t36 == $1_object_spec_create_object_address($t35, $t34)); + + // $t37 := object::create_named_object($t0, $t34) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:517:31+42 + assume {:print "$at(181,18916,18958)"} true; + call $t37 := $1_object_create_named_object($t0, $t34); + if ($abort_flag) { + assume {:print "$at(181,18916,18958)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_local[constructor_ref]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:517:13+15 + assume {:print "$track_local(81,8,11):", $t37} $t37 == $t37; + + // $t38 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:518:97+14 + assume {:print "$at(181,19056,19070)"} true; + + // assume And(WellFormed($t38), Le(Len(select option::Option.vec($t38)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:518:97+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t38) && (LenVec($t38->$vec) <= 1)); + + // assume Eq>($t38, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:518:97+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t38, $1_option_spec_none'$1_string_String'()); + + // $t38 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:518:97+14 + + // trace_local[uri#448]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,8,30):", $t6} $t6 == $t6; + + // trace_local[royalty#447]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,8,25):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#446]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,8,22):", $t38} $t38 == $t38; + + // trace_local[name_prefix#445]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,8,20):", $t3} $t3 == $t3; + + // trace_local[description#444]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,8,16):", $t2} $t2 == $t2; + + // trace_local[collection#443]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,8,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#442]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,8,12):", $t37} $t37 == $t37; + + // trace_local[creator#441]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,8,14):", $t0} $t0 == $t0; + + // $t39 := collection::creator($t1) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t39 := $1_collection_creator'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t40 := signer::address_of($t0) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t40 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t41 := ==($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t41 := $IsEqual'address'($t39, $t40); + + // if ($t41) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t41) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t42 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t42 := 2; + assume $IsValid'u64'($t42); + + // $t43 := error::unauthenticated($t42) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t43 := $1_error_unauthenticated($t42); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_abort($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,8):", $t43} $t43 == $t43; + + // $t33 := move($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t33 := $t43; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#455]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,8,31):", $t6} $t6 == $t6; + + // $t26 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t26 := $t5; + + // trace_local[royalty#454]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,8,26):", $t26} $t26 == $t26; + + // $t23 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t23 := $t38; + + // trace_local[name_with_index_suffix#453]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,8,23):", $t23} $t23 == $t23; + + // trace_local[name_prefix#452]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,8,21):", $t3} $t3 == $t3; + + // trace_local[description#451]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,8,17):", $t2} $t2 == $t2; + + // trace_local[collection#450]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,8,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#449]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,8,13):", $t37} $t37 == $t37; + + // $t44 := copy($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t44 := $t23; + + // $t45 := opaque begin: option::is_some($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t45); + + // assume Eq($t45, option::spec_is_some($t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t45, $1_option_spec_is_some'$1_string_String'($t44)); + + // $t45 := opaque end: option::is_some($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t45) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t45) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t46 := string::length($t3) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t46 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t47 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t47 := 20; + assume $IsValid'u64'($t47); + + // $t48 := +($t46, $t47) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t48 := $AddU64($t46, $t47); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t49 := copy($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t49 := $t23; + + // $t50 := opaque begin: option::borrow($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t51, option::spec_is_none($t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t51 == $1_option_spec_is_none'$1_string_String'($t49)); + + // if ($t51) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t51) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t49), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t49) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t50); + + // assume Eq($t50, option::spec_borrow($t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t50, $1_option_spec_borrow'$1_string_String'($t49)); + + // $t50 := opaque end: option::borrow($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t52 := string::length($t50) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t52 := $1_string_length($t50); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t53 := +($t48, $t52) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t53 := $AddU64($t48, $t52); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t54 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t54 := 128; + assume $IsValid'u64'($t54); + + // $t55 := <=($t53, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t55 := $Le($t53, $t54); + + // if ($t55) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t55) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t56 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t56 := 4; + assume $IsValid'u64'($t56); + + // $t57 := error::out_of_range($t56) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t57 := $1_error_out_of_range($t56); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_abort($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,8):", $t57} $t57 == $t57; + + // $t33 := move($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t33 := $t57; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t58 := string::length($t3) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t58 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t59 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t59 := 128; + assume $IsValid'u64'($t59); + + // $t60 := <=($t58, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t60 := $Le($t58, $t59); + + // if ($t60) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t60) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t61 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t61 := 4; + assume $IsValid'u64'($t61); + + // $t62 := error::out_of_range($t61) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t62 := $1_error_out_of_range($t61); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_abort($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,8):", $t62} $t62 == $t62; + + // $t33 := move($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t33 := $t62; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t63 := string::length($t2) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t63 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t64 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t64 := 2048; + assume $IsValid'u64'($t64); + + // $t65 := <=($t63, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t65 := $Le($t63, $t64); + + // if ($t65) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t65) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t66 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t66 := 6; + assume $IsValid'u64'($t66); + + // $t67 := error::out_of_range($t66) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t67 := $1_error_out_of_range($t66); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,8):", $t67} $t67 == $t67; + + // $t33 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t33 := $t67; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t68 := string::length($t6) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t68 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t69 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t69 := 512; + assume $IsValid'u64'($t69); + + // $t70 := <=($t68, $t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t70 := $Le($t68, $t69); + + // if ($t70) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t70) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t71 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t71 := 5; + assume $IsValid'u64'($t71); + + // $t72 := error::out_of_range($t71) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t72 := $1_error_out_of_range($t71); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_abort($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,8):", $t72} $t72 == $t72; + + // $t33 := move($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t33 := $t72; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t73 := object::generate_signer($t37) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t73 := $1_object_generate_signer($t37); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_local[object_signer#456]($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,8,24):", $t73} $t73 == $t73; + + // $t74 := signer::address_of($t73) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t74 := $1_signer_address_of($t73); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t75 := collection::increment_supply($t1, $t74) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t75 := $1_collection_increment_supply($t1, $t74); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t76 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t76 := 0; + assume $IsValid'u64'($t76); + + // $t77 := opaque begin: aggregator_v2::create_snapshot($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t78 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t78; + + // if ($t78) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t78) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t77); + + // $t77 := opaque end: aggregator_v2::create_snapshot($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t79 := opaque begin: option::destroy_with_default>($t75, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t79); + + // assume Eq>($t79, if option::spec_is_some>($t75) { + // option::spec_borrow>($t75) + // } else { + // $t77 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t79, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t75)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t75)) else ($t77))); + + // $t79 := opaque end: option::destroy_with_default>($t75, $t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#457]($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,8,18):", $t79} $t79 == $t79; + + // $t80 := copy($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t80 := $t23; + + // $t81 := opaque begin: option::is_some($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t81); + + // assume Eq($t81, option::spec_is_some($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t81, $1_option_spec_is_some'$1_string_String'($t80)); + + // $t81 := opaque end: option::is_some($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t81) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t81) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t82 := borrow_local($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t82 := $Mutation($Local(23), EmptyVec(), $t23); + + // $t83 := opaque begin: option::extract($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t84 := read_ref($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t84 := $Dereference($t82); + + // assume Identical($t85, option::spec_is_none($t82)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t85 == $1_option_spec_is_none'$1_string_String'($Dereference($t82))); + + // if ($t85) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t85) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t82), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t82)) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t82 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t82 := $UpdateMutation($t82, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t82), Le(Len(select option::Option.vec($t82)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t82)) && (LenVec($Dereference($t82)->$vec) <= 1)); + + // assume WellFormed($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t83); + + // assume Eq($t83, option::spec_borrow($t84)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t83, $1_option_spec_borrow'$1_string_String'($t84)); + + // assume option::spec_is_none($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t82)); + + // $t83 := opaque end: option::extract($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t82)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t82)->$vec) <= 1); + + // write_back[LocalRoot($t23)@]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t23 := $Dereference($t82); + + // trace_local[name_with_index_suffix#453]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,8,23):", $t23} $t23 == $t23; + + // $t8 := opaque begin: aggregator_v2::derive_string_concat($t3, $t79, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t86; + + // if ($t86) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t86) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t8); + + // $t8 := opaque end: aggregator_v2::derive_string_concat($t3, $t79, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t8 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t87 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t87; + + // if ($t87) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t87) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t8); + + // $t8 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#458]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,8,19):", $t8} $t8 == $t8; + + // $t88 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t88 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t88); + + // $t89 := string::utf8($t88) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t89 := $1_string_utf8($t88); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // trace_local[deprecated_name#460]($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,8,15):", $t89} $t89 == $t89; + + // $t90 := pack object_token::TokenIdentifiers($t79, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t90 := $1_object_token_TokenIdentifiers($t79, $t8); + + // trace_local[token_concurrent#461]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,8,29):", $t90} $t90 == $t90; + + // move_to($t90, $t73) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t73->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t73->$addr, $t90); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t91 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t91 := 0; + assume $IsValid'u64'($t91); + + // assume Identical($t92, global(signer::$address_of($t73))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t92 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t73))); + + // assume Identical($t93, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t92), signer::$address_of($t73)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t93 == $1_guid_GUID($1_guid_ID($t92->$guid_creation_num, $1_signer_$address_of($t73)))); + + // $t94 := object::new_event_handle($t73) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t94 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t73); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t95 := pack object_token::Token($t1, $t91, $t2, $t89, $t6, $t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t95 := $1_object_token_Token($t1, $t91, $t2, $t89, $t6, $t94); + + // trace_local[token#462]($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,8,28):", $t95} $t95 == $t95; + + // move_to($t95, $t73) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t73->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t73->$addr, $t95); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // $t96 := copy($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t96 := $t26; + + // $t97 := opaque begin: option::is_some($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t97); + + // assume Eq($t97, option::spec_is_some($t96)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t97, $1_option_spec_is_some'$1_royalty_Royalty'($t96)); + + // $t97 := opaque end: option::is_some($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t97) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t97) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t98 := borrow_local($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t98 := $Mutation($Local(26), EmptyVec(), $t26); + + // $t99 := opaque begin: option::extract($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t100 := read_ref($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t100 := $Dereference($t98); + + // assume Identical($t101, option::spec_is_none($t98)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t101 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t98))); + + // if ($t101) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t101) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t98), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t98)) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t98 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t98 := $UpdateMutation($t98, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t98), Le(Len(select option::Option.vec($t98)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t98)) && (LenVec($Dereference($t98)->$vec) <= 1)); + + // assume WellFormed($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t99); + + // assume Eq($t99, option::spec_borrow($t100)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t99, $1_option_spec_borrow'$1_royalty_Royalty'($t100)); + + // assume option::spec_is_none($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t98)); + + // $t99 := opaque end: option::extract($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t98)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t98)->$vec) <= 1); + + // write_back[LocalRoot($t26)@]($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t26 := $Dereference($t98); + + // trace_local[royalty#454]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,8,26):", $t26} $t26 == $t26; + + // royalty::init($t37, $t99) on_abort goto L24 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t37, $t99); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,8):", $t33} $t33 == $t33; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:519:9+15 + assume {:print "$at(181,19095,19110)"} true; +L22: + + // trace_return[0]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:519:9+15 + assume {:print "$at(181,19095,19110)"} true; + assume {:print "$track_return(81,8,0):", $t37} $t37 == $t37; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:520:5+1 + assume {:print "$at(181,19115,19116)"} true; +L23: + + // return $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:520:5+1 + assume {:print "$at(181,19115,19116)"} true; + $ret0 := $t37; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:520:5+1 +L24: + + // abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:520:5+1 + assume {:print "$at(181,19115,19116)"} true; + $abort_code := $t33; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t82) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t98) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_named_token_from_seed_as_collection_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+717 +procedure {:timeLimit 80} $1_object_token_create_named_token_from_seed_as_collection_owner$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: $1_option_Option'$1_royalty_Royalty', _$t6: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $1_aggregator_v2_DerivedStringSnapshot; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_Object'$1_collection_Collection'; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_string_String; + var $t17: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t18: $1_aggregator_v2_DerivedStringSnapshot; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $1_option_Option'$1_string_String'; + var $t23: $signer; + var $t24: $signer; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: $1_option_Option'$1_royalty_Royalty'; + var $t27: Vec (int); + var $t28: $1_object_token_Token; + var $t29: $1_object_token_TokenIdentifiers; + var $t30: $1_string_String; + var $t31: $1_string_String; + var $t32: $1_string_String; + var $t33: int; + var $t34: Vec (int); + var $t35: int; + var $t36: int; + var $t37: $1_object_ConstructorRef; + var $t38: $1_option_Option'$1_string_String'; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: bool; + var $t45: int; + var $t46: int; + var $t47: $1_option_Option'$1_string_String'; + var $t48: bool; + var $t49: int; + var $t50: int; + var $t51: int; + var $t52: $1_option_Option'$1_string_String'; + var $t53: $1_string_String; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: bool; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: bool; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: bool; + var $t74: int; + var $t75: int; + var $t76: $signer; + var $t77: int; + var $t78: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t79: int; + var $t80: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t81: bool; + var $t82: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t83: $1_option_Option'$1_string_String'; + var $t84: bool; + var $t85: $Mutation ($1_option_Option'$1_string_String'); + var $t86: $1_string_String; + var $t87: $1_option_Option'$1_string_String'; + var $t88: bool; + var $t89: bool; + var $t90: bool; + var $t91: Vec (int); + var $t92: $1_string_String; + var $t93: $1_object_token_TokenIdentifiers; + var $t94: int; + var $t95: $1_object_ObjectCore; + var $t96: $1_guid_GUID; + var $t97: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t98: $1_object_token_Token; + var $t99: $1_option_Option'$1_royalty_Royalty'; + var $t100: bool; + var $t101: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t102: $1_royalty_Royalty; + var $t103: $1_option_Option'$1_royalty_Royalty'; + var $t104: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_option_Option'$1_royalty_Royalty'; + var $t6: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$at(181,19243,19244)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,3):", $t3} $t3 == $t3; + + // trace_local[seed]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,4):", $t4} $t4 == $t4; + + // trace_local[royalty]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:523:5+1 + assume {:print "$track_local(81,9,6):", $t6} $t6 == $t6; + + // $t32 := collection::name($t1) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:532:49+28 + assume {:print "$at(181,19570,19598)"} true; + call $t32 := $1_collection_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,19570,19598)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t34 := object_token::create_token_name_with_seed($t32, $t3, $t4) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:532:20+72 + call $t34 := $1_object_token_create_token_name_with_seed($t32, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(181,19541,19613)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_local[seed#2]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:532:13+4 + assume {:print "$track_local(81,9,27):", $t34} $t34 == $t34; + + // assume Identical($t35, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t35 == $1_signer_$address_of($t0)); + + // assume Identical($t36, object::spec_create_object_address($t35, $t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t36 == $1_object_spec_create_object_address($t35, $t34)); + + // $t37 := object::create_named_object($t0, $t34) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:533:31+42 + assume {:print "$at(181,19645,19687)"} true; + call $t37 := $1_object_create_named_object($t0, $t34); + if ($abort_flag) { + assume {:print "$at(181,19645,19687)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_local[constructor_ref]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:533:13+15 + assume {:print "$track_local(81,9,11):", $t37} $t37 == $t37; + + // $t38 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:540:13+14 + assume {:print "$at(181,19867,19881)"} true; + + // assume And(WellFormed($t38), Le(Len(select option::Option.vec($t38)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:540:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t38) && (LenVec($t38->$vec) <= 1)); + + // assume Eq>($t38, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:540:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t38, $1_option_spec_none'$1_string_String'()); + + // $t38 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:540:13+14 + + // trace_local[uri#470]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:187:9+3 + assume {:print "$at(181,7339,7342)"} true; + assume {:print "$track_local(81,9,30):", $t6} $t6 == $t6; + + // trace_local[royalty#469]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:186:9+7 + assume {:print "$at(181,7305,7312)"} true; + assume {:print "$track_local(81,9,25):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#468]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:185:9+22 + assume {:print "$at(181,7257,7279)"} true; + assume {:print "$track_local(81,9,21):", $t38} $t38 == $t38; + + // trace_local[name_prefix#467]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:182:9+11 + assume {:print "$at(181,7065,7076)"} true; + assume {:print "$track_local(81,9,19):", $t3} $t3 == $t3; + + // trace_local[description#466]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:181:9+11 + assume {:print "$at(181,7036,7047)"} true; + assume {:print "$track_local(81,9,15):", $t2} $t2 == $t2; + + // trace_local[collection#465]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:180:9+10 + assume {:print "$at(181,6996,7006)"} true; + assume {:print "$track_local(81,9,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#464]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:179:9+15 + assume {:print "$at(181,6954,6969)"} true; + assume {:print "$track_local(81,9,12):", $t37} $t37 == $t37; + + // trace_local[owner#463]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:178:9+5 + assume {:print "$at(181,6930,6935)"} true; + assume {:print "$track_local(81,9,24):", $t0} $t0 == $t0; + + // $t39 := features::is_collection_owner_enabled() on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:17+39 + assume {:print "$at(181,7376,7415)"} true; + call $t39 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(181,7376,7415)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // if ($t39) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + if ($t39) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L0: + + // $t40 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:77+31 + assume {:print "$at(181,7436,7467)"} true; + $t40 := 9; + assume $IsValid'u64'($t40); + + // $t41 := error::unavailable($t40) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:58+51 + call $t41 := $1_error_unavailable($t40); + if ($abort_flag) { + assume {:print "$at(181,7417,7468)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + assume {:print "$track_abort(81,9):", $t41} $t41 == $t41; + + // $t33 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + $t33 := $t41; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + goto L27; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:31+10 + assume {:print "$at(181,7501,7511)"} true; +L2: + + // $t42 := object::owner($t1) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:17+25 + assume {:print "$at(181,7487,7512)"} true; + call $t42 := $1_object_owner'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,7487,7512)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t43 := signer::address_of($t0) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:46+25 + call $t43 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,7516,7541)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t44 := ==($t42, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:43+2 + $t44 := $IsEqual'address'($t42, $t43); + + // if ($t44) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + if ($t44) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L3: + + // $t45 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:96+10 + assume {:print "$at(181,7566,7576)"} true; + $t45 := 8; + assume $IsValid'u64'($t45); + + // $t46 := error::unauthenticated($t45) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:73+34 + call $t46 := $1_error_unauthenticated($t45); + if ($abort_flag) { + assume {:print "$at(181,7543,7577)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + assume {:print "$track_abort(81,9):", $t46} $t46 == $t46; + + // $t33 := move($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + $t33 := $t46; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + goto L27; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:193:13+15 + assume {:print "$at(181,7641,7656)"} true; +L5: + + // trace_local[uri#477]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,9,31):", $t6} $t6 == $t6; + + // $t26 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t26 := $t5; + + // trace_local[royalty#476]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,9,26):", $t26} $t26 == $t26; + + // $t22 := $t38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t22 := $t38; + + // trace_local[name_with_index_suffix#475]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,9,22):", $t22} $t22 == $t22; + + // trace_local[name_prefix#474]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,9,20):", $t3} $t3 == $t3; + + // trace_local[description#473]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,9,16):", $t2} $t2 == $t2; + + // trace_local[collection#472]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,9,10):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#471]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,9,13):", $t37} $t37 == $t37; + + // $t47 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t47 := $t22; + + // $t48 := opaque begin: option::is_some($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t48); + + // assume Eq($t48, option::spec_is_some($t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t48, $1_option_spec_is_some'$1_string_String'($t47)); + + // $t48 := opaque end: option::is_some($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t48) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t48) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L7: + + // $t49 := string::length($t3) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t49 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t50 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t50 := 20; + assume $IsValid'u64'($t50); + + // $t51 := +($t49, $t50) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t51 := $AddU64($t49, $t50); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t52 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t52 := $t22; + + // $t53 := opaque begin: option::borrow($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t54, option::spec_is_none($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t54 == $1_option_spec_is_none'$1_string_String'($t52)); + + // if ($t54) goto L29 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t54) { goto L29; } else { goto L28; } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L29: + + // assume And(option::spec_is_none($t52), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t52) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L27; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L28: + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t53); + + // assume Eq($t53, option::spec_borrow($t52)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t53, $1_option_spec_borrow'$1_string_String'($t52)); + + // $t53 := opaque end: option::borrow($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t55 := string::length($t53) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t55 := $1_string_length($t53); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t56 := +($t51, $t55) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t56 := $AddU64($t51, $t55); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t57 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t57 := 128; + assume $IsValid'u64'($t57); + + // $t58 := <=($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t58 := $Le($t56, $t57); + + // if ($t58) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t58) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L8: + + // $t59 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t59 := 4; + assume $IsValid'u64'($t59); + + // $t60 := error::out_of_range($t59) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t60 := $1_error_out_of_range($t59); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,9):", $t60} $t60 == $t60; + + // $t33 := move($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t33 := $t60; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L27; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L6: + + // $t61 := string::length($t3) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t61 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t62 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t62 := 128; + assume $IsValid'u64'($t62); + + // $t63 := <=($t61, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t63 := $Le($t61, $t62); + + // if ($t63) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t63) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L13: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L12: + + // $t64 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t64 := 4; + assume $IsValid'u64'($t64); + + // $t65 := error::out_of_range($t64) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t65 := $1_error_out_of_range($t64); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,9):", $t65} $t65 == $t65; + + // $t33 := move($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t33 := $t65; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L27; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L11: + + // $t66 := string::length($t2) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t66 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t67 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t67 := 2048; + assume $IsValid'u64'($t67); + + // $t68 := <=($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t68 := $Le($t66, $t67); + + // if ($t68) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t68) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L14: + + // $t69 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t69 := 6; + assume $IsValid'u64'($t69); + + // $t70 := error::out_of_range($t69) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t70 := $1_error_out_of_range($t69); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,9):", $t70} $t70 == $t70; + + // $t33 := move($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t33 := $t70; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L27; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L16: + + // $t71 := string::length($t6) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t71 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t72 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t72 := 512; + assume $IsValid'u64'($t72); + + // $t73 := <=($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t73 := $Le($t71, $t72); + + // if ($t73) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t73) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L17: + + // $t74 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t74 := 5; + assume $IsValid'u64'($t74); + + // $t75 := error::out_of_range($t74) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t75 := $1_error_out_of_range($t74); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_abort($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,9):", $t75} $t75 == $t75; + + // $t33 := move($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t33 := $t75; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L19: + + // $t76 := object::generate_signer($t37) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t76 := $1_object_generate_signer($t37); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_local[object_signer#478]($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,9,23):", $t76} $t76 == $t76; + + // $t77 := signer::address_of($t76) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t77 := $1_signer_address_of($t76); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t78 := collection::increment_supply($t1, $t77) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t78 := $1_collection_increment_supply($t1, $t77); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t79 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t79 := 0; + assume $IsValid'u64'($t79); + + // $t80 := opaque begin: aggregator_v2::create_snapshot($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t81 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t81; + + // if ($t81) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t81) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L31: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L27; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L30: + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t80); + + // $t80 := opaque end: aggregator_v2::create_snapshot($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t82 := opaque begin: option::destroy_with_default>($t78, $t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t82); + + // assume Eq>($t82, if option::spec_is_some>($t78) { + // option::spec_borrow>($t78) + // } else { + // $t80 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t82, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t78)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t78)) else ($t80))); + + // $t82 := opaque end: option::destroy_with_default>($t78, $t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#479]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,9,17):", $t82} $t82 == $t82; + + // $t83 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t83 := $t22; + + // $t84 := opaque begin: option::is_some($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t84); + + // assume Eq($t84, option::spec_is_some($t83)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t84, $1_option_spec_is_some'$1_string_String'($t83)); + + // $t84 := opaque end: option::is_some($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t84) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t84) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L21: + + // $t85 := borrow_local($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t85 := $Mutation($Local(22), EmptyVec(), $t22); + + // $t86 := opaque begin: option::extract($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t87 := read_ref($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t87 := $Dereference($t85); + + // assume Identical($t88, option::spec_is_none($t85)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t88 == $1_option_spec_is_none'$1_string_String'($Dereference($t85))); + + // if ($t88) goto L33 else goto L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t88) { goto L33; } else { goto L40; } + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L33: + + // assume And(option::spec_is_none($t85), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t85)) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L27; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L32: + + // $t85 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t85 := $UpdateMutation($t85, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t85), Le(Len(select option::Option.vec($t85)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t85)) && (LenVec($Dereference($t85)->$vec) <= 1)); + + // assume WellFormed($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t86); + + // assume Eq($t86, option::spec_borrow($t87)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t86, $1_option_spec_borrow'$1_string_String'($t87)); + + // assume option::spec_is_none($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t85)); + + // $t86 := opaque end: option::extract($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t85)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t85)->$vec) <= 1); + + // write_back[LocalRoot($t22)@]($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t22 := $Dereference($t85); + + // trace_local[name_with_index_suffix#475]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,9,22):", $t22} $t22 == $t22; + + // $t8 := opaque begin: aggregator_v2::derive_string_concat($t3, $t82, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t89 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t89; + + // if ($t89) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t89) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L35: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L27; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L34: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t8); + + // $t8 := opaque end: aggregator_v2::derive_string_concat($t3, $t82, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L20: + + // $t8 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t90 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t90; + + // if ($t90) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t90) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L37: + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L27; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L36: + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t8); + + // $t8 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L22: + + // trace_local[name#480]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,9,18):", $t8} $t8 == $t8; + + // $t91 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t91 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t91); + + // $t92 := string::utf8($t91) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t92 := $1_string_utf8($t91); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // trace_local[deprecated_name#482]($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,9,14):", $t92} $t92 == $t92; + + // $t93 := pack object_token::TokenIdentifiers($t82, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t93 := $1_object_token_TokenIdentifiers($t82, $t8); + + // trace_local[token_concurrent#483]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,9,29):", $t93} $t93 == $t93; + + // move_to($t93, $t76) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t76->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t76->$addr, $t93); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t94 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t94 := 0; + assume $IsValid'u64'($t94); + + // assume Identical($t95, global(signer::$address_of($t76))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t95 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t76))); + + // assume Identical($t96, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t95), signer::$address_of($t76)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t96 == $1_guid_GUID($1_guid_ID($t95->$guid_creation_num, $1_signer_$address_of($t76)))); + + // $t97 := object::new_event_handle($t76) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t97 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t76); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t98 := pack object_token::Token($t1, $t94, $t2, $t92, $t6, $t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t98 := $1_object_token_Token($t1, $t94, $t2, $t92, $t6, $t97); + + // trace_local[token#484]($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,9,28):", $t98} $t98 == $t98; + + // move_to($t98, $t76) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t76->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t76->$addr, $t98); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // $t99 := copy($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t99 := $t26; + + // $t100 := opaque begin: option::is_some($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t100) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t100); + + // assume Eq($t100, option::spec_is_some($t99)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t100, $1_option_spec_is_some'$1_royalty_Royalty'($t99)); + + // $t100 := opaque end: option::is_some($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t100) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t100) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L24: + + // $t101 := borrow_local($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t101 := $Mutation($Local(26), EmptyVec(), $t26); + + // $t102 := opaque begin: option::extract($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t103 := read_ref($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t103 := $Dereference($t101); + + // assume Identical($t104, option::spec_is_none($t101)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t104 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t101))); + + // if ($t104) goto L39 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t104) { goto L39; } else { goto L41; } + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L39: + + // assume And(option::spec_is_none($t101), Eq(262145, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t101)) && $IsEqual'num'(262145, $t33)); + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L27; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L38: + + // $t101 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t101 := $UpdateMutation($t101, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t101), Le(Len(select option::Option.vec($t101)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t101)) && (LenVec($Dereference($t101)->$vec) <= 1)); + + // assume WellFormed($t102) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t102); + + // assume Eq($t102, option::spec_borrow($t103)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t102, $1_option_spec_borrow'$1_royalty_Royalty'($t103)); + + // assume option::spec_is_none($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t101)); + + // $t102 := opaque end: option::extract($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t101)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t101)->$vec) <= 1); + + // write_back[LocalRoot($t26)@]($t101) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t26 := $Dereference($t101); + + // trace_local[royalty#476]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,9,26):", $t26} $t26 == $t26; + + // royalty::init($t37, $t102) on_abort goto L27 with $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t37, $t102); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t33 := $abort_code; + assume {:print "$track_abort(81,9):", $t33} $t33 == $t33; + goto L27; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L23: + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:544:9+15 + assume {:print "$at(181,19939,19954)"} true; +L25: + + // trace_return[0]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:544:9+15 + assume {:print "$at(181,19939,19954)"} true; + assume {:print "$track_return(81,9,0):", $t37} $t37 == $t37; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:545:5+1 + assume {:print "$at(181,19959,19960)"} true; +L26: + + // return $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:545:5+1 + assume {:print "$at(181,19959,19960)"} true; + $ret0 := $t37; + return; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:545:5+1 +L27: + + // abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:545:5+1 + assume {:print "$at(181,19959,19960)"} true; + $abort_code := $t33; + $abort_flag := true; + return; + + // label L40 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L40: + + // drop($t85) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + + // label L41 at :1:1+10 +L41: + + // drop($t101) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L38 at :1:1+10 + goto L38; + +} + +// fun object_token::create_named_token_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+646 +procedure {:timeLimit 80} $1_object_token_create_named_token_object$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_string_String; + var $t7: $1_aggregator_v2_DerivedStringSnapshot; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $signer; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_string_String; + var $t17: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t18: $1_aggregator_v2_DerivedStringSnapshot; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $1_option_Option'$1_string_String'; + var $t23: $signer; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: Vec (int); + var $t27: $1_object_token_Token; + var $t28: $1_object_token_TokenIdentifiers; + var $t29: $1_string_String; + var $t30: $1_string_String; + var $t31: $1_string_String; + var $t32: int; + var $t33: Vec (int); + var $t34: int; + var $t35: int; + var $t36: $1_object_ConstructorRef; + var $t37: $1_option_Option'$1_string_String'; + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: $1_option_Option'$1_string_String'; + var $t44: bool; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: $1_option_Option'$1_string_String'; + var $t49: $1_string_String; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: $signer; + var $t73: int; + var $t74: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t75: int; + var $t76: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t77: bool; + var $t78: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t79: $1_option_Option'$1_string_String'; + var $t80: bool; + var $t81: $Mutation ($1_option_Option'$1_string_String'); + var $t82: $1_string_String; + var $t83: $1_option_Option'$1_string_String'; + var $t84: bool; + var $t85: bool; + var $t86: bool; + var $t87: Vec (int); + var $t88: $1_string_String; + var $t89: $1_object_token_TokenIdentifiers; + var $t90: int; + var $t91: $1_object_ObjectCore; + var $t92: $1_guid_GUID; + var $t93: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t94: $1_object_token_Token; + var $t95: $1_option_Option'$1_royalty_Royalty'; + var $t96: bool; + var $t97: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t98: $1_royalty_Royalty; + var $t99: $1_option_Option'$1_royalty_Royalty'; + var $t100: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$at(181,16134,16135)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:431:5+1 + assume {:print "$track_local(81,10,5):", $t5} $t5 == $t5; + + // $t31 := collection::name($t1) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:439:39+28 + assume {:print "$at(181,16406,16434)"} true; + call $t31 := $1_collection_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,16406,16434)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t33 := object_token::create_token_seed($t31, $t3) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:439:20+55 + call $t33 := $1_object_token_create_token_seed($t31, $t3); + if ($abort_flag) { + assume {:print "$at(181,16387,16442)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_local[seed]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:439:13+4 + assume {:print "$track_local(81,10,26):", $t33} $t33 == $t33; + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:154:9+50 + assume {:print "$at(50,6580,6630)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, object::spec_create_object_address($t34, $t33)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:155:9+65 + assume {:print "$at(50,6639,6704)"} true; + assume ($t35 == $1_object_spec_create_object_address($t34, $t33)); + + // $t36 := object::create_named_object($t0, $t33) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:440:31+42 + assume {:print "$at(181,16474,16516)"} true; + call $t36 := $1_object_create_named_object($t0, $t33); + if ($abort_flag) { + assume {:print "$at(181,16474,16516)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_local[constructor_ref]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:440:13+15 + assume {:print "$track_local(81,10,10):", $t36} $t36 == $t36; + + // $t37 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:447:13+14 + assume {:print "$at(181,16687,16701)"} true; + + // assume And(WellFormed($t37), Le(Len(select option::Option.vec($t37)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:447:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t37) && (LenVec($t37->$vec) <= 1)); + + // assume Eq>($t37, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:447:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t37, $1_option_spec_none'$1_string_String'()); + + // $t37 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:447:13+14 + + // trace_local[uri#492]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,10,29):", $t5} $t5 == $t5; + + // trace_local[royalty#491]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,10,24):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#490]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,10,21):", $t37} $t37 == $t37; + + // trace_local[name_prefix#489]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,10,19):", $t3} $t3 == $t3; + + // trace_local[description#488]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,10,15):", $t2} $t2 == $t2; + + // trace_local[collection#487]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,10,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#486]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,10,11):", $t36} $t36 == $t36; + + // trace_local[creator#485]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,10,13):", $t0} $t0 == $t0; + + // $t38 := collection::creator($t1) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t38 := $1_collection_creator'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t39 := signer::address_of($t0) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t39 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t40 := ==($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t40 := $IsEqual'address'($t38, $t39); + + // if ($t40) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t40) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t41 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t41 := 2; + assume $IsValid'u64'($t41); + + // $t42 := error::unauthenticated($t41) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t42 := $1_error_unauthenticated($t41); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,10):", $t42} $t42 == $t42; + + // $t32 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t32 := $t42; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#499]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,10,30):", $t5} $t5 == $t5; + + // $t25 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t25 := $t4; + + // trace_local[royalty#498]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,10,25):", $t25} $t25 == $t25; + + // $t22 := $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t22 := $t37; + + // trace_local[name_with_index_suffix#497]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,10,22):", $t22} $t22 == $t22; + + // trace_local[name_prefix#496]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,10,20):", $t3} $t3 == $t3; + + // trace_local[description#495]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,10,16):", $t2} $t2 == $t2; + + // trace_local[collection#494]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,10,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#493]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,10,12):", $t36} $t36 == $t36; + + // $t43 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t43 := $t22; + + // $t44 := opaque begin: option::is_some($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t44); + + // assume Eq($t44, option::spec_is_some($t43)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t44, $1_option_spec_is_some'$1_string_String'($t43)); + + // $t44 := opaque end: option::is_some($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t44) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t44) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t45 := string::length($t3) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t45 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t46 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t46 := 20; + assume $IsValid'u64'($t46); + + // $t47 := +($t45, $t46) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t47 := $AddU64($t45, $t46); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t48 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t48 := $t22; + + // $t49 := opaque begin: option::borrow($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t50, option::spec_is_none($t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t50 == $1_option_spec_is_none'$1_string_String'($t48)); + + // if ($t50) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t50) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t48), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t48) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t49); + + // assume Eq($t49, option::spec_borrow($t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t49, $1_option_spec_borrow'$1_string_String'($t48)); + + // $t49 := opaque end: option::borrow($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t51 := string::length($t49) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t51 := $1_string_length($t49); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t52 := +($t47, $t51) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t52 := $AddU64($t47, $t51); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t53 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t53 := 128; + assume $IsValid'u64'($t53); + + // $t54 := <=($t52, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t54 := $Le($t52, $t53); + + // if ($t54) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t54) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t55 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t55 := 4; + assume $IsValid'u64'($t55); + + // $t56 := error::out_of_range($t55) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t56 := $1_error_out_of_range($t55); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_abort($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,10):", $t56} $t56 == $t56; + + // $t32 := move($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t32 := $t56; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t57 := string::length($t3) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t57 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t58 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t58 := 128; + assume $IsValid'u64'($t58); + + // $t59 := <=($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t59 := $Le($t57, $t58); + + // if ($t59) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t59) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t60 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t60 := 4; + assume $IsValid'u64'($t60); + + // $t61 := error::out_of_range($t60) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t61 := $1_error_out_of_range($t60); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_abort($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,10):", $t61} $t61 == $t61; + + // $t32 := move($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t32 := $t61; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t62 := string::length($t2) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t62 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t63 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t63 := 2048; + assume $IsValid'u64'($t63); + + // $t64 := <=($t62, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t64 := $Le($t62, $t63); + + // if ($t64) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t64) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t65 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t65 := 6; + assume $IsValid'u64'($t65); + + // $t66 := error::out_of_range($t65) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t66 := $1_error_out_of_range($t65); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_abort($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,10):", $t66} $t66 == $t66; + + // $t32 := move($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t32 := $t66; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t67 := string::length($t5) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t67 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t68 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t68 := 512; + assume $IsValid'u64'($t68); + + // $t69 := <=($t67, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t69 := $Le($t67, $t68); + + // if ($t69) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t69) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t70 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t70 := 5; + assume $IsValid'u64'($t70); + + // $t71 := error::out_of_range($t70) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t71 := $1_error_out_of_range($t70); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_abort($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,10):", $t71} $t71 == $t71; + + // $t32 := move($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t32 := $t71; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t72 := object::generate_signer($t36) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t72 := $1_object_generate_signer($t36); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_local[object_signer#500]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,10,23):", $t72} $t72 == $t72; + + // $t73 := signer::address_of($t72) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t73 := $1_signer_address_of($t72); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t74 := collection::increment_supply($t1, $t73) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t74 := $1_collection_increment_supply($t1, $t73); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t75 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t75 := 0; + assume $IsValid'u64'($t75); + + // $t76 := opaque begin: aggregator_v2::create_snapshot($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t77 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t77; + + // if ($t77) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t77) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t76); + + // $t76 := opaque end: aggregator_v2::create_snapshot($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t78 := opaque begin: option::destroy_with_default>($t74, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t78); + + // assume Eq>($t78, if option::spec_is_some>($t74) { + // option::spec_borrow>($t74) + // } else { + // $t76 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t78, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t74)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t74)) else ($t76))); + + // $t78 := opaque end: option::destroy_with_default>($t74, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#501]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,10,17):", $t78} $t78 == $t78; + + // $t79 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t79 := $t22; + + // $t80 := opaque begin: option::is_some($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t80); + + // assume Eq($t80, option::spec_is_some($t79)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t80, $1_option_spec_is_some'$1_string_String'($t79)); + + // $t80 := opaque end: option::is_some($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t80) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t80) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t81 := borrow_local($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t81 := $Mutation($Local(22), EmptyVec(), $t22); + + // $t82 := opaque begin: option::extract($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t83 := read_ref($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t83 := $Dereference($t81); + + // assume Identical($t84, option::spec_is_none($t81)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t84 == $1_option_spec_is_none'$1_string_String'($Dereference($t81))); + + // if ($t84) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t84) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t81), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t81)) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t81 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t81 := $UpdateMutation($t81, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t81), Le(Len(select option::Option.vec($t81)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t81)) && (LenVec($Dereference($t81)->$vec) <= 1)); + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t82); + + // assume Eq($t82, option::spec_borrow($t83)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t82, $1_option_spec_borrow'$1_string_String'($t83)); + + // assume option::spec_is_none($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t81)); + + // $t82 := opaque end: option::extract($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t81)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t81)->$vec) <= 1); + + // write_back[LocalRoot($t22)@]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t22 := $Dereference($t81); + + // trace_local[name_with_index_suffix#497]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,10,22):", $t22} $t22 == $t22; + + // $t7 := opaque begin: aggregator_v2::derive_string_concat($t3, $t78, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t85; + + // if ($t85) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t85) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::derive_string_concat($t3, $t78, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t7 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t86; + + // if ($t86) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t86) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#502]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,10,18):", $t7} $t7 == $t7; + + // $t87 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t87 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t87); + + // $t88 := string::utf8($t87) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t88 := $1_string_utf8($t87); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // trace_local[deprecated_name#504]($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,10,14):", $t88} $t88 == $t88; + + // $t89 := pack object_token::TokenIdentifiers($t78, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t89 := $1_object_token_TokenIdentifiers($t78, $t7); + + // trace_local[token_concurrent#505]($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,10,28):", $t89} $t89 == $t89; + + // move_to($t89, $t72) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t72->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t72->$addr, $t89); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t90 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t90 := 0; + assume $IsValid'u64'($t90); + + // assume Identical($t91, global(signer::$address_of($t72))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t91 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t72))); + + // assume Identical($t92, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t91), signer::$address_of($t72)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t92 == $1_guid_GUID($1_guid_ID($t91->$guid_creation_num, $1_signer_$address_of($t72)))); + + // $t93 := object::new_event_handle($t72) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t93 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t72); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t94 := pack object_token::Token($t1, $t90, $t2, $t88, $t5, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t94 := $1_object_token_Token($t1, $t90, $t2, $t88, $t5, $t93); + + // trace_local[token#506]($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,10,27):", $t94} $t94 == $t94; + + // move_to($t94, $t72) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t72->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t72->$addr, $t94); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // $t95 := copy($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t95 := $t25; + + // $t96 := opaque begin: option::is_some($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t96); + + // assume Eq($t96, option::spec_is_some($t95)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t96, $1_option_spec_is_some'$1_royalty_Royalty'($t95)); + + // $t96 := opaque end: option::is_some($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t96) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t96) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t97 := borrow_local($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t97 := $Mutation($Local(25), EmptyVec(), $t25); + + // $t98 := opaque begin: option::extract($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t99 := read_ref($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t99 := $Dereference($t97); + + // assume Identical($t100, option::spec_is_none($t97)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t100 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97))); + + // if ($t100) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t100) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t97), Eq(262145, $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97)) && $IsEqual'num'(262145, $t32)); + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t97 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t97 := $UpdateMutation($t97, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t97), Le(Len(select option::Option.vec($t97)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t97)) && (LenVec($Dereference($t97)->$vec) <= 1)); + + // assume WellFormed($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t98); + + // assume Eq($t98, option::spec_borrow($t99)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t98, $1_option_spec_borrow'$1_royalty_Royalty'($t99)); + + // assume option::spec_is_none($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97)); + + // $t98 := opaque end: option::extract($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t97)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t97)->$vec) <= 1); + + // write_back[LocalRoot($t25)@]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t25 := $Dereference($t97); + + // trace_local[royalty#498]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,10,25):", $t25} $t25 == $t25; + + // royalty::init($t36, $t98) on_abort goto L24 with $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t36, $t98); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t32 := $abort_code; + assume {:print "$track_abort(81,10):", $t32} $t32 == $t32; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:451:9+15 + assume {:print "$at(181,16759,16774)"} true; +L22: + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:451:9+15 + assume {:print "$at(181,16759,16774)"} true; + assume {:print "$track_return(81,10,0):", $t36} $t36 == $t36; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:452:5+1 + assume {:print "$at(181,16779,16780)"} true; +L23: + + // return $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:452:5+1 + assume {:print "$at(181,16779,16780)"} true; + $ret0 := $t36; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:452:5+1 +L24: + + // abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:452:5+1 + assume {:print "$at(181,16779,16780)"} true; + $abort_code := $t32; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t81) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t97) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_numbered_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+701 +procedure {:timeLimit 80} $1_object_token_create_numbered_token$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: $1_option_Option'$1_royalty_Royalty', _$t6: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t7: $1_aggregator_v2_DerivedStringSnapshot; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_Object'$1_collection_Collection'; + var $t11: $1_string_String; + var $t12: $1_object_ConstructorRef; + var $t13: $1_object_ConstructorRef; + var $t14: $1_object_ConstructorRef; + var $t15: $1_object_ConstructorRef; + var $t16: $signer; + var $t17: $signer; + var $t18: int; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_string_String; + var $t22: $1_string_String; + var $t23: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t24: $1_aggregator_v2_DerivedStringSnapshot; + var $t25: $1_string_String; + var $t26: $1_string_String; + var $t27: $1_string_String; + var $t28: $1_option_Option'$1_string_String'; + var $t29: $1_option_Option'$1_string_String'; + var $t30: $1_option_Option'$1_string_String'; + var $t31: $signer; + var $t32: $1_option_Option'$1_royalty_Royalty'; + var $t33: $1_option_Option'$1_royalty_Royalty'; + var $t34: $1_option_Option'$1_royalty_Royalty'; + var $t35: $1_object_token_Token; + var $t36: $1_object_token_TokenIdentifiers; + var $t37: $1_string_String; + var $t38: $1_string_String; + var $t39: $1_string_String; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: $1_object_ConstructorRef; + var $t44: $1_option_Option'$1_string_String'; + var $t45: int; + var $t46: int; + var $t47: $1_object_Object'$1_collection_Collection'; + var $t48: int; + var $t49: int; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: $1_option_Option'$1_string_String'; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: $1_option_Option'$1_string_String'; + var $t59: $1_string_String; + var $t60: bool; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: int; + var $t73: int; + var $t74: bool; + var $t75: int; + var $t76: int; + var $t77: int; + var $t78: int; + var $t79: bool; + var $t80: int; + var $t81: int; + var $t82: $signer; + var $t83: int; + var $t84: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t85: int; + var $t86: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t87: bool; + var $t88: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t89: $1_option_Option'$1_string_String'; + var $t90: bool; + var $t91: $Mutation ($1_option_Option'$1_string_String'); + var $t92: $1_string_String; + var $t93: $1_option_Option'$1_string_String'; + var $t94: bool; + var $t95: bool; + var $t96: bool; + var $t97: Vec (int); + var $t98: $1_string_String; + var $t99: $1_object_token_TokenIdentifiers; + var $t100: int; + var $t101: $1_object_ObjectCore; + var $t102: $1_guid_GUID; + var $t103: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t104: $1_object_token_Token; + var $t105: $1_option_Option'$1_royalty_Royalty'; + var $t106: bool; + var $t107: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t108: $1_royalty_Royalty; + var $t109: $1_option_Option'$1_royalty_Royalty'; + var $t110: bool; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_option_Option'$1_royalty_Royalty'; + var $t6: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$at(181,14340,14341)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,2):", $t2} $t2 == $t2; + + // trace_local[name_with_index_prefix]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,3):", $t3} $t3 == $t3; + + // trace_local[name_with_index_suffix]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,4):", $t4} $t4 == $t4; + + // trace_local[royalty]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:379:5+1 + assume {:print "$track_local(81,11,6):", $t6} $t6 == $t6; + + // $t40 := signer::address_of($t0) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:388:31+27 + assume {:print "$at(181,14651,14678)"} true; + call $t40 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,14651,14678)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // assume Identical($t42, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t42 == $1_transaction_context_spec_generate_unique_address()); + + // $t43 := object::create_object($t40) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:389:31+38 + assume {:print "$at(181,14710,14748)"} true; + call $t43 := $1_object_create_object($t40); + if ($abort_flag) { + assume {:print "$at(181,14710,14748)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[constructor_ref]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:389:13+15 + assume {:print "$track_local(81,11,12):", $t43} $t43 == $t43; + + // $t44 := opaque begin: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:396:13+36 + assume {:print "$at(181,14926,14962)"} true; + + // assume And(WellFormed($t44), Le(Len(select option::Option.vec($t44)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:396:13+36 + assume ($IsValid'$1_option_Option'$1_string_String''($t44) && (LenVec($t44->$vec) <= 1)); + + // assume Eq>($t44, option::spec_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:396:13+36 + assume $IsEqual'$1_option_Option'$1_string_String''($t44, $1_option_spec_some'$1_string_String'($t4)); + + // $t44 := opaque end: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:396:13+36 + + // trace_local[uri#514]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:134:9+3 + assume {:print "$at(181,5499,5502)"} true; + assume {:print "$track_local(81,11,37):", $t6} $t6 == $t6; + + // trace_local[royalty#513]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:133:9+7 + assume {:print "$at(181,5465,5472)"} true; + assume {:print "$track_local(81,11,32):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#512]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:132:9+22 + assume {:print "$at(181,5417,5439)"} true; + assume {:print "$track_local(81,11,28):", $t44} $t44 == $t44; + + // trace_local[name_prefix#511]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:129:9+11 + assume {:print "$at(181,5225,5236)"} true; + assume {:print "$track_local(81,11,25):", $t3} $t3 == $t3; + + // trace_local[description#510]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:128:9+11 + assume {:print "$at(181,5196,5207)"} true; + assume {:print "$track_local(81,11,20):", $t2} $t2 == $t2; + + // trace_local[collection_name#509]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:127:9+15 + assume {:print "$at(181,5163,5178)"} true; + assume {:print "$track_local(81,11,11):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#508]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:126:9+15 + assume {:print "$at(181,5121,5136)"} true; + assume {:print "$track_local(81,11,13):", $t43} $t43 == $t43; + + // trace_local[creator#507]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:125:9+7 + assume {:print "$at(181,5095,5102)"} true; + assume {:print "$track_local(81,11,16):", $t0} $t0 == $t0; + + // $t45 := signer::address_of($t0) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:31+27 + assume {:print "$at(181,5550,5577)"} true; + call $t45 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,5550,5577)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[creator_address#515]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:136:13+15 + assume {:print "$track_local(81,11,18):", $t45} $t45 == $t45; + + // $t46 := collection::create_collection_address($t45, $t1) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:137:31+73 + assume {:print "$at(181,5609,5682)"} true; + call $t46 := $1_collection_create_collection_address($t45, $t1); + if ($abort_flag) { + assume {:print "$at(181,5609,5682)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t47 := object::address_to_object($t46) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:26+54 + assume {:print "$at(181,5709,5763)"} true; + call $t47 := $1_object_address_to_object'$1_collection_Collection'($t46); + if ($abort_flag) { + assume {:print "$at(181,5709,5763)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[collection#517]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:138:13+10 + assume {:print "$track_local(81,11,8):", $t47} $t47 == $t47; + + // trace_local[uri#525]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,11,38):", $t6} $t6 == $t6; + + // trace_local[royalty#524]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,11,33):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#523]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,11,29):", $t44} $t44 == $t44; + + // trace_local[name_prefix#522]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,11,26):", $t3} $t3 == $t3; + + // trace_local[description#521]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,11,21):", $t2} $t2 == $t2; + + // trace_local[collection#520]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,11,9):", $t47} $t47 == $t47; + + // trace_local[constructor_ref#519]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,11,14):", $t43} $t43 == $t43; + + // trace_local[creator#518]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,11,17):", $t0} $t0 == $t0; + + // $t48 := collection::creator($t47) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t48 := $1_collection_creator'$1_collection_Collection'($t47); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t49 := signer::address_of($t0) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t49 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t50 := ==($t48, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t50 := $IsEqual'address'($t48, $t49); + + // if ($t50) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t50) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t51 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t51 := 2; + assume $IsValid'u64'($t51); + + // $t52 := error::unauthenticated($t51) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t52 := $1_error_unauthenticated($t51); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,11):", $t52} $t52 == $t52; + + // $t41 := move($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t41 := $t52; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#532]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,11,39):", $t6} $t6 == $t6; + + // $t34 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t34 := $t5; + + // trace_local[royalty#531]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,11,34):", $t34} $t34 == $t34; + + // $t30 := $t44 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t30 := $t44; + + // trace_local[name_with_index_suffix#530]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,11,30):", $t30} $t30 == $t30; + + // trace_local[name_prefix#529]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,11,27):", $t3} $t3 == $t3; + + // trace_local[description#528]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,11,22):", $t2} $t2 == $t2; + + // trace_local[collection#527]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,11,10):", $t47} $t47 == $t47; + + // trace_local[constructor_ref#526]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,11,15):", $t43} $t43 == $t43; + + // $t53 := copy($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t53 := $t30; + + // $t54 := opaque begin: option::is_some($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t54); + + // assume Eq($t54, option::spec_is_some($t53)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t54, $1_option_spec_is_some'$1_string_String'($t53)); + + // $t54 := opaque end: option::is_some($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t54) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t54) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t55 := string::length($t3) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t55 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t56 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t56 := 20; + assume $IsValid'u64'($t56); + + // $t57 := +($t55, $t56) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t57 := $AddU64($t55, $t56); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t58 := copy($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t58 := $t30; + + // $t59 := opaque begin: option::borrow($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t60, option::spec_is_none($t58)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t60 == $1_option_spec_is_none'$1_string_String'($t58)); + + // if ($t60) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t60) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t58), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t58) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t59); + + // assume Eq($t59, option::spec_borrow($t58)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t59, $1_option_spec_borrow'$1_string_String'($t58)); + + // $t59 := opaque end: option::borrow($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t61 := string::length($t59) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t61 := $1_string_length($t59); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t62 := +($t57, $t61) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t62 := $AddU64($t57, $t61); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t63 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t63 := 128; + assume $IsValid'u64'($t63); + + // $t64 := <=($t62, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t64 := $Le($t62, $t63); + + // if ($t64) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t64) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t65 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t65 := 4; + assume $IsValid'u64'($t65); + + // $t66 := error::out_of_range($t65) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t66 := $1_error_out_of_range($t65); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,11):", $t66} $t66 == $t66; + + // $t41 := move($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t41 := $t66; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t67 := string::length($t3) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t67 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t68 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t68 := 128; + assume $IsValid'u64'($t68); + + // $t69 := <=($t67, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t69 := $Le($t67, $t68); + + // if ($t69) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t69) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t70 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t70 := 4; + assume $IsValid'u64'($t70); + + // $t71 := error::out_of_range($t70) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t71 := $1_error_out_of_range($t70); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,11):", $t71} $t71 == $t71; + + // $t41 := move($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t41 := $t71; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t72 := string::length($t2) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t72 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t73 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t73 := 2048; + assume $IsValid'u64'($t73); + + // $t74 := <=($t72, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t74 := $Le($t72, $t73); + + // if ($t74) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t74) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t75 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t75 := 6; + assume $IsValid'u64'($t75); + + // $t76 := error::out_of_range($t75) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t76 := $1_error_out_of_range($t75); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,11):", $t76} $t76 == $t76; + + // $t41 := move($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t41 := $t76; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t77 := string::length($t6) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t77 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t78 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t78 := 512; + assume $IsValid'u64'($t78); + + // $t79 := <=($t77, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t79 := $Le($t77, $t78); + + // if ($t79) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t79) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t80 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t80 := 5; + assume $IsValid'u64'($t80); + + // $t81 := error::out_of_range($t80) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t81 := $1_error_out_of_range($t80); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_abort($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,11):", $t81} $t81 == $t81; + + // $t41 := move($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t41 := $t81; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t82 := object::generate_signer($t43) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t82 := $1_object_generate_signer($t43); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[object_signer#533]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,11,31):", $t82} $t82 == $t82; + + // $t83 := signer::address_of($t82) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t83 := $1_signer_address_of($t82); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t84 := collection::increment_supply($t47, $t83) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t84 := $1_collection_increment_supply($t47, $t83); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t85 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t85 := 0; + assume $IsValid'u64'($t85); + + // $t86 := opaque begin: aggregator_v2::create_snapshot($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t87 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t87; + + // if ($t87) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t87) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t86); + + // $t86 := opaque end: aggregator_v2::create_snapshot($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t88 := opaque begin: option::destroy_with_default>($t84, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t88); + + // assume Eq>($t88, if option::spec_is_some>($t84) { + // option::spec_borrow>($t84) + // } else { + // $t86 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t88, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t84)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t84)) else ($t86))); + + // $t88 := opaque end: option::destroy_with_default>($t84, $t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#534]($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,11,23):", $t88} $t88 == $t88; + + // $t89 := copy($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t89 := $t30; + + // $t90 := opaque begin: option::is_some($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t90); + + // assume Eq($t90, option::spec_is_some($t89)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t90, $1_option_spec_is_some'$1_string_String'($t89)); + + // $t90 := opaque end: option::is_some($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t90) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t90) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t91 := borrow_local($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t91 := $Mutation($Local(30), EmptyVec(), $t30); + + // $t92 := opaque begin: option::extract($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t93 := read_ref($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t93 := $Dereference($t91); + + // assume Identical($t94, option::spec_is_none($t91)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t94 == $1_option_spec_is_none'$1_string_String'($Dereference($t91))); + + // if ($t94) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t94) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t91), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t91)) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t91 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t91 := $UpdateMutation($t91, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t91), Le(Len(select option::Option.vec($t91)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t91)) && (LenVec($Dereference($t91)->$vec) <= 1)); + + // assume WellFormed($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t92); + + // assume Eq($t92, option::spec_borrow($t93)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t92, $1_option_spec_borrow'$1_string_String'($t93)); + + // assume option::spec_is_none($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t91)); + + // $t92 := opaque end: option::extract($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t91)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t91)->$vec) <= 1); + + // write_back[LocalRoot($t30)@]($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t30 := $Dereference($t91); + + // trace_local[name_with_index_suffix#530]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,11,30):", $t30} $t30 == $t30; + + // $t7 := opaque begin: aggregator_v2::derive_string_concat($t3, $t88, $t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t95 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t95; + + // if ($t95) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t95) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::derive_string_concat($t3, $t88, $t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t7 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t96 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t96; + + // if ($t96) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t96) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#535]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,11,24):", $t7} $t7 == $t7; + + // $t97 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t97 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t97); + + // $t98 := string::utf8($t97) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t98 := $1_string_utf8($t97); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // trace_local[deprecated_name#537]($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,11,19):", $t98} $t98 == $t98; + + // $t99 := pack object_token::TokenIdentifiers($t88, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t99 := $1_object_token_TokenIdentifiers($t88, $t7); + + // trace_local[token_concurrent#538]($t99) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,11,36):", $t99} $t99 == $t99; + + // move_to($t99, $t82) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t82->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t82->$addr, $t99); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t100 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t100 := 0; + assume $IsValid'u64'($t100); + + // assume Identical($t101, global(signer::$address_of($t82))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t101 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t82))); + + // assume Identical($t102, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t101), signer::$address_of($t82)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t102 == $1_guid_GUID($1_guid_ID($t101->$guid_creation_num, $1_signer_$address_of($t82)))); + + // $t103 := object::new_event_handle($t82) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t103 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t82); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t104 := pack object_token::Token($t47, $t100, $t2, $t98, $t6, $t103) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t104 := $1_object_token_Token($t47, $t100, $t2, $t98, $t6, $t103); + + // trace_local[token#539]($t104) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,11,35):", $t104} $t104 == $t104; + + // move_to($t104, $t82) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t82->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t82->$addr, $t104); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // $t105 := copy($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t105 := $t34; + + // $t106 := opaque begin: option::is_some($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t106) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t106); + + // assume Eq($t106, option::spec_is_some($t105)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t106, $1_option_spec_is_some'$1_royalty_Royalty'($t105)); + + // $t106 := opaque end: option::is_some($t105) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t106) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t106) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t107 := borrow_local($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t107 := $Mutation($Local(34), EmptyVec(), $t34); + + // $t108 := opaque begin: option::extract($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t109 := read_ref($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t109 := $Dereference($t107); + + // assume Identical($t110, option::spec_is_none($t107)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t110 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t107))); + + // if ($t110) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t110) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t107), Eq(262145, $t41)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t107)) && $IsEqual'num'(262145, $t41)); + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t107 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t107 := $UpdateMutation($t107, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t107), Le(Len(select option::Option.vec($t107)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t107)) && (LenVec($Dereference($t107)->$vec) <= 1)); + + // assume WellFormed($t108) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t108); + + // assume Eq($t108, option::spec_borrow($t109)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t108, $1_option_spec_borrow'$1_royalty_Royalty'($t109)); + + // assume option::spec_is_none($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t107)); + + // $t108 := opaque end: option::extract($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t107)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t107)->$vec) <= 1); + + // write_back[LocalRoot($t34)@]($t107) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t34 := $Dereference($t107); + + // trace_local[royalty#531]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,11,34):", $t34} $t34 == $t34; + + // royalty::init($t43, $t108) on_abort goto L24 with $t41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t43, $t108); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t41 := $abort_code; + assume {:print "$track_abort(81,11):", $t41} $t41 == $t41; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:400:9+15 + assume {:print "$at(181,15020,15035)"} true; +L22: + + // trace_return[0]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:400:9+15 + assume {:print "$at(181,15020,15035)"} true; + assume {:print "$track_return(81,11,0):", $t43} $t43 == $t43; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:401:5+1 + assume {:print "$at(181,15040,15041)"} true; +L23: + + // return $t43 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:401:5+1 + assume {:print "$at(181,15040,15041)"} true; + $ret0 := $t43; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:401:5+1 +L24: + + // abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:401:5+1 + assume {:print "$at(181,15040,15041)"} true; + $abort_code := $t41; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t91) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t107) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_numbered_token_as_collection_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+748 +procedure {:timeLimit 80} $1_object_token_create_numbered_token_as_collection_owner$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: $1_option_Option'$1_royalty_Royalty', _$t6: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t7: $1_aggregator_v2_DerivedStringSnapshot; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t17: $1_aggregator_v2_DerivedStringSnapshot; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_option_Option'$1_string_String'; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $signer; + var $t23: $signer; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: $1_object_token_Token; + var $t27: $1_object_token_TokenIdentifiers; + var $t28: $1_string_String; + var $t29: $1_string_String; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_object_ConstructorRef; + var $t34: $1_option_Option'$1_string_String'; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: int; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: $1_option_Option'$1_string_String'; + var $t44: bool; + var $t45: int; + var $t46: int; + var $t47: int; + var $t48: $1_option_Option'$1_string_String'; + var $t49: $1_string_String; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: bool; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: bool; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: $signer; + var $t73: int; + var $t74: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t75: int; + var $t76: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t77: bool; + var $t78: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t79: $1_option_Option'$1_string_String'; + var $t80: bool; + var $t81: $Mutation ($1_option_Option'$1_string_String'); + var $t82: $1_string_String; + var $t83: $1_option_Option'$1_string_String'; + var $t84: bool; + var $t85: bool; + var $t86: bool; + var $t87: Vec (int); + var $t88: $1_string_String; + var $t89: $1_object_token_TokenIdentifiers; + var $t90: int; + var $t91: $1_object_ObjectCore; + var $t92: $1_guid_GUID; + var $t93: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t94: $1_object_token_Token; + var $t95: $1_option_Option'$1_royalty_Royalty'; + var $t96: bool; + var $t97: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t98: $1_royalty_Royalty; + var $t99: $1_option_Option'$1_royalty_Royalty'; + var $t100: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_option_Option'$1_royalty_Royalty'; + var $t6: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$at(181,15168,15169)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,2):", $t2} $t2 == $t2; + + // trace_local[name_with_index_prefix]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,3):", $t3} $t3 == $t3; + + // trace_local[name_with_index_suffix]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,4):", $t4} $t4 == $t4; + + // trace_local[royalty]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:404:5+1 + assume {:print "$track_local(81,12,6):", $t6} $t6 == $t6; + + // $t30 := signer::address_of($t0) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:413:31+27 + assume {:print "$at(181,15506,15533)"} true; + call $t30 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,15506,15533)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // assume Identical($t32, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t32 == $1_transaction_context_spec_generate_unique_address()); + + // $t33 := object::create_object($t30) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:414:31+38 + assume {:print "$at(181,15565,15603)"} true; + call $t33 := $1_object_create_object($t30); + if ($abort_flag) { + assume {:print "$at(181,15565,15603)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_local[constructor_ref]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:414:13+15 + assume {:print "$track_local(81,12,10):", $t33} $t33 == $t33; + + // $t34 := opaque begin: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:421:13+36 + assume {:print "$at(181,15801,15837)"} true; + + // assume And(WellFormed($t34), Le(Len(select option::Option.vec($t34)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:421:13+36 + assume ($IsValid'$1_option_Option'$1_string_String''($t34) && (LenVec($t34->$vec) <= 1)); + + // assume Eq>($t34, option::spec_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:421:13+36 + assume $IsEqual'$1_option_Option'$1_string_String''($t34, $1_option_spec_some'$1_string_String'($t4)); + + // $t34 := opaque end: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:421:13+36 + + // trace_local[uri#547]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:187:9+3 + assume {:print "$at(181,7339,7342)"} true; + assume {:print "$track_local(81,12,28):", $t6} $t6 == $t6; + + // trace_local[royalty#546]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:186:9+7 + assume {:print "$at(181,7305,7312)"} true; + assume {:print "$track_local(81,12,24):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#545]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:185:9+22 + assume {:print "$at(181,7257,7279)"} true; + assume {:print "$track_local(81,12,20):", $t34} $t34 == $t34; + + // trace_local[name_prefix#544]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:182:9+11 + assume {:print "$at(181,7065,7076)"} true; + assume {:print "$track_local(81,12,18):", $t3} $t3 == $t3; + + // trace_local[description#543]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:181:9+11 + assume {:print "$at(181,7036,7047)"} true; + assume {:print "$track_local(81,12,14):", $t2} $t2 == $t2; + + // trace_local[collection#542]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:180:9+10 + assume {:print "$at(181,6996,7006)"} true; + assume {:print "$track_local(81,12,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#541]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:179:9+15 + assume {:print "$at(181,6954,6969)"} true; + assume {:print "$track_local(81,12,11):", $t33} $t33 == $t33; + + // trace_local[owner#540]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:178:9+5 + assume {:print "$at(181,6930,6935)"} true; + assume {:print "$track_local(81,12,23):", $t0} $t0 == $t0; + + // $t35 := features::is_collection_owner_enabled() on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:17+39 + assume {:print "$at(181,7376,7415)"} true; + call $t35 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(181,7376,7415)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // if ($t35) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + if ($t35) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L0: + + // $t36 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:77+31 + assume {:print "$at(181,7436,7467)"} true; + $t36 := 9; + assume $IsValid'u64'($t36); + + // $t37 := error::unavailable($t36) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:58+51 + call $t37 := $1_error_unavailable($t36); + if ($abort_flag) { + assume {:print "$at(181,7417,7468)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + assume {:print "$track_abort(81,12):", $t37} $t37 == $t37; + + // $t31 := move($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + $t31 := $t37; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + goto L27; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:31+10 + assume {:print "$at(181,7501,7511)"} true; +L2: + + // $t38 := object::owner($t1) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:17+25 + assume {:print "$at(181,7487,7512)"} true; + call $t38 := $1_object_owner'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,7487,7512)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t39 := signer::address_of($t0) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:46+25 + call $t39 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,7516,7541)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t40 := ==($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:43+2 + $t40 := $IsEqual'address'($t38, $t39); + + // if ($t40) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + if ($t40) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L3: + + // $t41 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:96+10 + assume {:print "$at(181,7566,7576)"} true; + $t41 := 8; + assume $IsValid'u64'($t41); + + // $t42 := error::unauthenticated($t41) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:73+34 + call $t42 := $1_error_unauthenticated($t41); + if ($abort_flag) { + assume {:print "$at(181,7543,7577)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + assume {:print "$track_abort(81,12):", $t42} $t42 == $t42; + + // $t31 := move($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + $t31 := $t42; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + goto L27; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:193:13+15 + assume {:print "$at(181,7641,7656)"} true; +L5: + + // trace_local[uri#554]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,12,29):", $t6} $t6 == $t6; + + // $t25 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t25 := $t5; + + // trace_local[royalty#553]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,12,25):", $t25} $t25 == $t25; + + // $t21 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t21 := $t34; + + // trace_local[name_with_index_suffix#552]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,12,21):", $t21} $t21 == $t21; + + // trace_local[name_prefix#551]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,12,19):", $t3} $t3 == $t3; + + // trace_local[description#550]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,12,15):", $t2} $t2 == $t2; + + // trace_local[collection#549]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,12,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#548]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,12,12):", $t33} $t33 == $t33; + + // $t43 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t43 := $t21; + + // $t44 := opaque begin: option::is_some($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t44); + + // assume Eq($t44, option::spec_is_some($t43)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t44, $1_option_spec_is_some'$1_string_String'($t43)); + + // $t44 := opaque end: option::is_some($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t44) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t44) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L7: + + // $t45 := string::length($t3) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t45 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t46 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t46 := 20; + assume $IsValid'u64'($t46); + + // $t47 := +($t45, $t46) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t47 := $AddU64($t45, $t46); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t48 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t48 := $t21; + + // $t49 := opaque begin: option::borrow($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t50, option::spec_is_none($t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t50 == $1_option_spec_is_none'$1_string_String'($t48)); + + // if ($t50) goto L29 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t50) { goto L29; } else { goto L28; } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L29: + + // assume And(option::spec_is_none($t48), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t48) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L27; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L28: + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t49); + + // assume Eq($t49, option::spec_borrow($t48)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t49, $1_option_spec_borrow'$1_string_String'($t48)); + + // $t49 := opaque end: option::borrow($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t51 := string::length($t49) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t51 := $1_string_length($t49); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t52 := +($t47, $t51) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t52 := $AddU64($t47, $t51); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t53 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t53 := 128; + assume $IsValid'u64'($t53); + + // $t54 := <=($t52, $t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t54 := $Le($t52, $t53); + + // if ($t54) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t54) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L8: + + // $t55 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t55 := 4; + assume $IsValid'u64'($t55); + + // $t56 := error::out_of_range($t55) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t56 := $1_error_out_of_range($t55); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,12):", $t56} $t56 == $t56; + + // $t31 := move($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t31 := $t56; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L27; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L6: + + // $t57 := string::length($t3) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t57 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t58 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t58 := 128; + assume $IsValid'u64'($t58); + + // $t59 := <=($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t59 := $Le($t57, $t58); + + // if ($t59) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t59) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L13: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L12: + + // $t60 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t60 := 4; + assume $IsValid'u64'($t60); + + // $t61 := error::out_of_range($t60) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t61 := $1_error_out_of_range($t60); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,12):", $t61} $t61 == $t61; + + // $t31 := move($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t31 := $t61; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L27; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L11: + + // $t62 := string::length($t2) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t62 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t63 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t63 := 2048; + assume $IsValid'u64'($t63); + + // $t64 := <=($t62, $t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t64 := $Le($t62, $t63); + + // if ($t64) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t64) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L14: + + // $t65 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t65 := 6; + assume $IsValid'u64'($t65); + + // $t66 := error::out_of_range($t65) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t66 := $1_error_out_of_range($t65); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,12):", $t66} $t66 == $t66; + + // $t31 := move($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t31 := $t66; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L27; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L16: + + // $t67 := string::length($t6) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t67 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t68 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t68 := 512; + assume $IsValid'u64'($t68); + + // $t69 := <=($t67, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t69 := $Le($t67, $t68); + + // if ($t69) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t69) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L17: + + // $t70 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t70 := 5; + assume $IsValid'u64'($t70); + + // $t71 := error::out_of_range($t70) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t71 := $1_error_out_of_range($t70); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_abort($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,12):", $t71} $t71 == $t71; + + // $t31 := move($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t31 := $t71; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L19: + + // $t72 := object::generate_signer($t33) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t72 := $1_object_generate_signer($t33); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_local[object_signer#555]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,12,22):", $t72} $t72 == $t72; + + // $t73 := signer::address_of($t72) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t73 := $1_signer_address_of($t72); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t74 := collection::increment_supply($t1, $t73) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t74 := $1_collection_increment_supply($t1, $t73); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t75 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t75 := 0; + assume $IsValid'u64'($t75); + + // $t76 := opaque begin: aggregator_v2::create_snapshot($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t77 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t77; + + // if ($t77) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t77) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L31: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L27; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L30: + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t76); + + // $t76 := opaque end: aggregator_v2::create_snapshot($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t78 := opaque begin: option::destroy_with_default>($t74, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t78); + + // assume Eq>($t78, if option::spec_is_some>($t74) { + // option::spec_borrow>($t74) + // } else { + // $t76 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t78, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t74)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t74)) else ($t76))); + + // $t78 := opaque end: option::destroy_with_default>($t74, $t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#556]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,12,16):", $t78} $t78 == $t78; + + // $t79 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t79 := $t21; + + // $t80 := opaque begin: option::is_some($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t80); + + // assume Eq($t80, option::spec_is_some($t79)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t80, $1_option_spec_is_some'$1_string_String'($t79)); + + // $t80 := opaque end: option::is_some($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t80) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t80) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L21: + + // $t81 := borrow_local($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t81 := $Mutation($Local(21), EmptyVec(), $t21); + + // $t82 := opaque begin: option::extract($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t83 := read_ref($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t83 := $Dereference($t81); + + // assume Identical($t84, option::spec_is_none($t81)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t84 == $1_option_spec_is_none'$1_string_String'($Dereference($t81))); + + // if ($t84) goto L33 else goto L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t84) { goto L33; } else { goto L40; } + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L33: + + // assume And(option::spec_is_none($t81), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t81)) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L27; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L32: + + // $t81 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t81 := $UpdateMutation($t81, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t81), Le(Len(select option::Option.vec($t81)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t81)) && (LenVec($Dereference($t81)->$vec) <= 1)); + + // assume WellFormed($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t82); + + // assume Eq($t82, option::spec_borrow($t83)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t82, $1_option_spec_borrow'$1_string_String'($t83)); + + // assume option::spec_is_none($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t81)); + + // $t82 := opaque end: option::extract($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t81)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t81)->$vec) <= 1); + + // write_back[LocalRoot($t21)@]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t21 := $Dereference($t81); + + // trace_local[name_with_index_suffix#552]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,12,21):", $t21} $t21 == $t21; + + // $t7 := opaque begin: aggregator_v2::derive_string_concat($t3, $t78, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t85; + + // if ($t85) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t85) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L35: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L27; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L34: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::derive_string_concat($t3, $t78, $t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L20: + + // $t7 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t86 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t86; + + // if ($t86) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t86) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L37: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L27; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L36: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L22: + + // trace_local[name#557]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,12,17):", $t7} $t7 == $t7; + + // $t87 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t87 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t87); + + // $t88 := string::utf8($t87) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t88 := $1_string_utf8($t87); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // trace_local[deprecated_name#559]($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,12,13):", $t88} $t88 == $t88; + + // $t89 := pack object_token::TokenIdentifiers($t78, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t89 := $1_object_token_TokenIdentifiers($t78, $t7); + + // trace_local[token_concurrent#560]($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,12,27):", $t89} $t89 == $t89; + + // move_to($t89, $t72) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t72->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t72->$addr, $t89); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t90 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t90 := 0; + assume $IsValid'u64'($t90); + + // assume Identical($t91, global(signer::$address_of($t72))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t91 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t72))); + + // assume Identical($t92, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t91), signer::$address_of($t72)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t92 == $1_guid_GUID($1_guid_ID($t91->$guid_creation_num, $1_signer_$address_of($t72)))); + + // $t93 := object::new_event_handle($t72) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t93 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t72); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t94 := pack object_token::Token($t1, $t90, $t2, $t88, $t6, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t94 := $1_object_token_Token($t1, $t90, $t2, $t88, $t6, $t93); + + // trace_local[token#561]($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,12,26):", $t94} $t94 == $t94; + + // move_to($t94, $t72) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t72->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t72->$addr, $t94); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // $t95 := copy($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t95 := $t25; + + // $t96 := opaque begin: option::is_some($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t96); + + // assume Eq($t96, option::spec_is_some($t95)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t96, $1_option_spec_is_some'$1_royalty_Royalty'($t95)); + + // $t96 := opaque end: option::is_some($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t96) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t96) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L24: + + // $t97 := borrow_local($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t97 := $Mutation($Local(25), EmptyVec(), $t25); + + // $t98 := opaque begin: option::extract($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t99 := read_ref($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t99 := $Dereference($t97); + + // assume Identical($t100, option::spec_is_none($t97)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t100 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97))); + + // if ($t100) goto L39 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t100) { goto L39; } else { goto L41; } + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L39: + + // assume And(option::spec_is_none($t97), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97)) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L27; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L38: + + // $t97 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t97 := $UpdateMutation($t97, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t97), Le(Len(select option::Option.vec($t97)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t97)) && (LenVec($Dereference($t97)->$vec) <= 1)); + + // assume WellFormed($t98) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t98); + + // assume Eq($t98, option::spec_borrow($t99)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t98, $1_option_spec_borrow'$1_royalty_Royalty'($t99)); + + // assume option::spec_is_none($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t97)); + + // $t98 := opaque end: option::extract($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t97)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t97)->$vec) <= 1); + + // write_back[LocalRoot($t25)@]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t25 := $Dereference($t97); + + // trace_local[royalty#553]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,12,25):", $t25} $t25 == $t25; + + // royalty::init($t33, $t98) on_abort goto L27 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t33, $t98); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,12):", $t31} $t31 == $t31; + goto L27; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L23: + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:425:9+15 + assume {:print "$at(181,15895,15910)"} true; +L25: + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:425:9+15 + assume {:print "$at(181,15895,15910)"} true; + assume {:print "$track_return(81,12,0):", $t33} $t33 == $t33; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:426:5+1 + assume {:print "$at(181,15915,15916)"} true; +L26: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:426:5+1 + assume {:print "$at(181,15915,15916)"} true; + $ret0 := $t33; + return; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:426:5+1 +L27: + + // abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:426:5+1 + assume {:print "$at(181,15915,15916)"} true; + $abort_code := $t31; + $abort_flag := true; + return; + + // label L40 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L40: + + // drop($t81) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + + // label L41 at :1:1+10 +L41: + + // drop($t97) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L38 at :1:1+10 + goto L38; + +} + +// fun object_token::create_numbered_token_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+726 +procedure {:timeLimit 80} $1_object_token_create_numbered_token_object$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: $1_option_Option'$1_royalty_Royalty', _$t6: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t7: $1_aggregator_v2_DerivedStringSnapshot; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_Object'$1_collection_Collection'; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $1_object_ConstructorRef; + var $t13: $signer; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_string_String; + var $t17: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t18: $1_aggregator_v2_DerivedStringSnapshot; + var $t19: $1_string_String; + var $t20: $1_string_String; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $1_option_Option'$1_string_String'; + var $t23: $signer; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_option_Option'$1_royalty_Royalty'; + var $t26: $1_object_token_Token; + var $t27: $1_object_token_TokenIdentifiers; + var $t28: $1_string_String; + var $t29: $1_string_String; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_object_ConstructorRef; + var $t34: $1_option_Option'$1_string_String'; + var $t35: int; + var $t36: int; + var $t37: bool; + var $t38: int; + var $t39: int; + var $t40: $1_option_Option'$1_string_String'; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: $1_option_Option'$1_string_String'; + var $t46: $1_string_String; + var $t47: bool; + var $t48: int; + var $t49: int; + var $t50: int; + var $t51: bool; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: int; + var $t56: bool; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: bool; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: int; + var $t66: bool; + var $t67: int; + var $t68: int; + var $t69: $signer; + var $t70: int; + var $t71: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t72: int; + var $t73: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t74: bool; + var $t75: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t76: $1_option_Option'$1_string_String'; + var $t77: bool; + var $t78: $Mutation ($1_option_Option'$1_string_String'); + var $t79: $1_string_String; + var $t80: $1_option_Option'$1_string_String'; + var $t81: bool; + var $t82: bool; + var $t83: bool; + var $t84: Vec (int); + var $t85: $1_string_String; + var $t86: $1_object_token_TokenIdentifiers; + var $t87: int; + var $t88: $1_object_ObjectCore; + var $t89: $1_guid_GUID; + var $t90: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t91: $1_object_token_Token; + var $t92: $1_option_Option'$1_royalty_Royalty'; + var $t93: bool; + var $t94: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t95: $1_royalty_Royalty; + var $t96: $1_option_Option'$1_royalty_Royalty'; + var $t97: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_option_Option'$1_royalty_Royalty'; + var $t6: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$at(181,13267,13268)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,2):", $t2} $t2 == $t2; + + // trace_local[name_with_index_prefix]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,3):", $t3} $t3 == $t3; + + // trace_local[name_with_index_suffix]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,4):", $t4} $t4 == $t4; + + // trace_local[royalty]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:350:5+1 + assume {:print "$track_local(81,13,6):", $t6} $t6 == $t6; + + // $t30 := signer::address_of($t0) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:359:31+27 + assume {:print "$at(181,13592,13619)"} true; + call $t30 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,13592,13619)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // assume Identical($t32, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t32 == $1_transaction_context_spec_generate_unique_address()); + + // $t33 := object::create_object($t30) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:360:31+38 + assume {:print "$at(181,13651,13689)"} true; + call $t33 := $1_object_create_object($t30); + if ($abort_flag) { + assume {:print "$at(181,13651,13689)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_local[constructor_ref]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:360:13+15 + assume {:print "$track_local(81,13,10):", $t33} $t33 == $t33; + + // $t34 := opaque begin: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:367:13+36 + assume {:print "$at(181,13878,13914)"} true; + + // assume And(WellFormed($t34), Le(Len(select option::Option.vec($t34)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:367:13+36 + assume ($IsValid'$1_option_Option'$1_string_String''($t34) && (LenVec($t34->$vec) <= 1)); + + // assume Eq>($t34, option::spec_some($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:367:13+36 + assume $IsEqual'$1_option_Option'$1_string_String''($t34, $1_option_spec_some'$1_string_String'($t4)); + + // $t34 := opaque end: option::some($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:367:13+36 + + // trace_local[uri#569]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,13,28):", $t6} $t6 == $t6; + + // trace_local[royalty#568]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,13,24):", $t5} $t5 == $t5; + + // trace_local[name_with_index_suffix#567]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,13,21):", $t34} $t34 == $t34; + + // trace_local[name_prefix#566]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,13,19):", $t3} $t3 == $t3; + + // trace_local[description#565]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,13,15):", $t2} $t2 == $t2; + + // trace_local[collection#564]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,13,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#563]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,13,11):", $t33} $t33 == $t33; + + // trace_local[creator#562]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,13,13):", $t0} $t0 == $t0; + + // $t35 := collection::creator($t1) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t35 := $1_collection_creator'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t36 := signer::address_of($t0) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t36 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t37 := ==($t35, $t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t37 := $IsEqual'address'($t35, $t36); + + // if ($t37) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t37) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t38 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t38 := 2; + assume $IsValid'u64'($t38); + + // $t39 := error::unauthenticated($t38) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t39 := $1_error_unauthenticated($t38); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_abort($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,13):", $t39} $t39 == $t39; + + // $t31 := move($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t31 := $t39; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#576]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,13,29):", $t6} $t6 == $t6; + + // $t25 := $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t25 := $t5; + + // trace_local[royalty#575]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,13,25):", $t25} $t25 == $t25; + + // $t22 := $t34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t22 := $t34; + + // trace_local[name_with_index_suffix#574]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,13,22):", $t22} $t22 == $t22; + + // trace_local[name_prefix#573]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,13,20):", $t3} $t3 == $t3; + + // trace_local[description#572]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,13,16):", $t2} $t2 == $t2; + + // trace_local[collection#571]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,13,9):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#570]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,13,12):", $t33} $t33 == $t33; + + // $t40 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t40 := $t22; + + // $t41 := opaque begin: option::is_some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t41); + + // assume Eq($t41, option::spec_is_some($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t41, $1_option_spec_is_some'$1_string_String'($t40)); + + // $t41 := opaque end: option::is_some($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t41) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t41) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t42 := string::length($t3) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t42 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t43 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t43 := 20; + assume $IsValid'u64'($t43); + + // $t44 := +($t42, $t43) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t44 := $AddU64($t42, $t43); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t45 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t45 := $t22; + + // $t46 := opaque begin: option::borrow($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t47, option::spec_is_none($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t47 == $1_option_spec_is_none'$1_string_String'($t45)); + + // if ($t47) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t47) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t45), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t45) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t46); + + // assume Eq($t46, option::spec_borrow($t45)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t46, $1_option_spec_borrow'$1_string_String'($t45)); + + // $t46 := opaque end: option::borrow($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t48 := string::length($t46) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t48 := $1_string_length($t46); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t49 := +($t44, $t48) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t49 := $AddU64($t44, $t48); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t50 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t50 := 128; + assume $IsValid'u64'($t50); + + // $t51 := <=($t49, $t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t51 := $Le($t49, $t50); + + // if ($t51) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t51) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t52 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t52 := 4; + assume $IsValid'u64'($t52); + + // $t53 := error::out_of_range($t52) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t53 := $1_error_out_of_range($t52); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_abort($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,13):", $t53} $t53 == $t53; + + // $t31 := move($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t31 := $t53; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t54 := string::length($t3) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t54 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t55 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t55 := 128; + assume $IsValid'u64'($t55); + + // $t56 := <=($t54, $t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t56 := $Le($t54, $t55); + + // if ($t56) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t56) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t57 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t57 := 4; + assume $IsValid'u64'($t57); + + // $t58 := error::out_of_range($t57) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t58 := $1_error_out_of_range($t57); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_abort($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,13):", $t58} $t58 == $t58; + + // $t31 := move($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t31 := $t58; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t59 := string::length($t2) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t59 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t60 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t60 := 2048; + assume $IsValid'u64'($t60); + + // $t61 := <=($t59, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t61 := $Le($t59, $t60); + + // if ($t61) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t61) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t62 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t62 := 6; + assume $IsValid'u64'($t62); + + // $t63 := error::out_of_range($t62) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t63 := $1_error_out_of_range($t62); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_abort($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,13):", $t63} $t63 == $t63; + + // $t31 := move($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t31 := $t63; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t64 := string::length($t6) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t64 := $1_string_length($t6); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t65 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t65 := 512; + assume $IsValid'u64'($t65); + + // $t66 := <=($t64, $t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t66 := $Le($t64, $t65); + + // if ($t66) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t66) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t67 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t67 := 5; + assume $IsValid'u64'($t67); + + // $t68 := error::out_of_range($t67) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t68 := $1_error_out_of_range($t67); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_abort($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,13):", $t68} $t68 == $t68; + + // $t31 := move($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t31 := $t68; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t69 := object::generate_signer($t33) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t69 := $1_object_generate_signer($t33); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_local[object_signer#577]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,13,23):", $t69} $t69 == $t69; + + // $t70 := signer::address_of($t69) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t70 := $1_signer_address_of($t69); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t71 := collection::increment_supply($t1, $t70) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t71 := $1_collection_increment_supply($t1, $t70); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t72 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t72 := 0; + assume $IsValid'u64'($t72); + + // $t73 := opaque begin: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t74 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t74; + + // if ($t74) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t74) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t73); + + // $t73 := opaque end: aggregator_v2::create_snapshot($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t75 := opaque begin: option::destroy_with_default>($t71, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t75); + + // assume Eq>($t75, if option::spec_is_some>($t71) { + // option::spec_borrow>($t71) + // } else { + // $t73 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t75, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t71)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t71)) else ($t73))); + + // $t75 := opaque end: option::destroy_with_default>($t71, $t73) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#578]($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,13,17):", $t75} $t75 == $t75; + + // $t76 := copy($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t76 := $t22; + + // $t77 := opaque begin: option::is_some($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t77); + + // assume Eq($t77, option::spec_is_some($t76)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t77, $1_option_spec_is_some'$1_string_String'($t76)); + + // $t77 := opaque end: option::is_some($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t77) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t77) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t78 := borrow_local($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t78 := $Mutation($Local(22), EmptyVec(), $t22); + + // $t79 := opaque begin: option::extract($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t80 := read_ref($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t80 := $Dereference($t78); + + // assume Identical($t81, option::spec_is_none($t78)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t81 == $1_option_spec_is_none'$1_string_String'($Dereference($t78))); + + // if ($t81) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t81) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t78), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t78)) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t78 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t78 := $UpdateMutation($t78, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t78), Le(Len(select option::Option.vec($t78)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t78)) && (LenVec($Dereference($t78)->$vec) <= 1)); + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t79); + + // assume Eq($t79, option::spec_borrow($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t79, $1_option_spec_borrow'$1_string_String'($t80)); + + // assume option::spec_is_none($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t78)); + + // $t79 := opaque end: option::extract($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t78)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t78)->$vec) <= 1); + + // write_back[LocalRoot($t22)@]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t22 := $Dereference($t78); + + // trace_local[name_with_index_suffix#574]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,13,22):", $t22} $t22 == $t22; + + // $t7 := opaque begin: aggregator_v2::derive_string_concat($t3, $t75, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t82 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t82; + + // if ($t82) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t82) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::derive_string_concat($t3, $t75, $t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t7 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t83 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t83; + + // if ($t83) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t83) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t7); + + // $t7 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#579]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,13,18):", $t7} $t7 == $t7; + + // $t84 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t84 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t84); + + // $t85 := string::utf8($t84) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t85 := $1_string_utf8($t84); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // trace_local[deprecated_name#581]($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,13,14):", $t85} $t85 == $t85; + + // $t86 := pack object_token::TokenIdentifiers($t75, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t86 := $1_object_token_TokenIdentifiers($t75, $t7); + + // trace_local[token_concurrent#582]($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,13,27):", $t86} $t86 == $t86; + + // move_to($t86, $t69) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t69->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t69->$addr, $t86); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t87 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t87 := 0; + assume $IsValid'u64'($t87); + + // assume Identical($t88, global(signer::$address_of($t69))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t88 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t69))); + + // assume Identical($t89, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t88), signer::$address_of($t69)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t89 == $1_guid_GUID($1_guid_ID($t88->$guid_creation_num, $1_signer_$address_of($t69)))); + + // $t90 := object::new_event_handle($t69) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t90 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t69); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t91 := pack object_token::Token($t1, $t87, $t2, $t85, $t6, $t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t91 := $1_object_token_Token($t1, $t87, $t2, $t85, $t6, $t90); + + // trace_local[token#583]($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,13,26):", $t91} $t91 == $t91; + + // move_to($t91, $t69) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t69->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t69->$addr, $t91); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // $t92 := copy($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t92 := $t25; + + // $t93 := opaque begin: option::is_some($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t93); + + // assume Eq($t93, option::spec_is_some($t92)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t93, $1_option_spec_is_some'$1_royalty_Royalty'($t92)); + + // $t93 := opaque end: option::is_some($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t93) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t93) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t94 := borrow_local($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t94 := $Mutation($Local(25), EmptyVec(), $t25); + + // $t95 := opaque begin: option::extract($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t96 := read_ref($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t96 := $Dereference($t94); + + // assume Identical($t97, option::spec_is_none($t94)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t97 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t94))); + + // if ($t97) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t97) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t94), Eq(262145, $t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t94)) && $IsEqual'num'(262145, $t31)); + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t94 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t94 := $UpdateMutation($t94, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t94), Le(Len(select option::Option.vec($t94)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t94)) && (LenVec($Dereference($t94)->$vec) <= 1)); + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t95); + + // assume Eq($t95, option::spec_borrow($t96)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t95, $1_option_spec_borrow'$1_royalty_Royalty'($t96)); + + // assume option::spec_is_none($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t94)); + + // $t95 := opaque end: option::extract($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t94)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t94)->$vec) <= 1); + + // write_back[LocalRoot($t25)@]($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t25 := $Dereference($t94); + + // trace_local[royalty#575]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,13,25):", $t25} $t25 == $t25; + + // royalty::init($t33, $t95) on_abort goto L24 with $t31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t33, $t95); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t31 := $abort_code; + assume {:print "$track_abort(81,13):", $t31} $t31 == $t31; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:371:9+15 + assume {:print "$at(181,13972,13987)"} true; +L22: + + // trace_return[0]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:371:9+15 + assume {:print "$at(181,13972,13987)"} true; + assume {:print "$track_return(81,13,0):", $t33} $t33 == $t33; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:372:5+1 + assume {:print "$at(181,13992,13993)"} true; +L23: + + // return $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:372:5+1 + assume {:print "$at(181,13992,13993)"} true; + $ret0 := $t33; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:372:5+1 +L24: + + // abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:372:5+1 + assume {:print "$at(181,13992,13993)"} true; + $abort_code := $t31; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t78) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t94) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+612 +procedure {:timeLimit 80} $1_object_token_create_token$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_ConstructorRef; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $signer; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: $1_string_String; + var $t16: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t17: $1_aggregator_v2_DerivedStringSnapshot; + var $t18: $1_string_String; + var $t19: $1_string_String; + var $t20: $1_option_Option'$1_string_String'; + var $t21: $1_option_Option'$1_string_String'; + var $t22: $signer; + var $t23: $1_option_Option'$1_royalty_Royalty'; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_object_token_Token; + var $t26: $1_object_token_TokenIdentifiers; + var $t27: $1_string_String; + var $t28: $1_string_String; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: $1_object_ConstructorRef; + var $t33: $1_option_Option'$1_string_String'; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: $1_option_Option'$1_string_String'; + var $t40: bool; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: $1_option_Option'$1_string_String'; + var $t45: $1_string_String; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: int; + var $t54: int; + var $t55: bool; + var $t56: int; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: bool; + var $t61: int; + var $t62: int; + var $t63: int; + var $t64: int; + var $t65: bool; + var $t66: int; + var $t67: int; + var $t68: $signer; + var $t69: int; + var $t70: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t71: int; + var $t72: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t73: bool; + var $t74: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t75: $1_option_Option'$1_string_String'; + var $t76: bool; + var $t77: $Mutation ($1_option_Option'$1_string_String'); + var $t78: $1_string_String; + var $t79: $1_option_Option'$1_string_String'; + var $t80: bool; + var $t81: bool; + var $t82: bool; + var $t83: Vec (int); + var $t84: $1_string_String; + var $t85: $1_object_token_TokenIdentifiers; + var $t86: int; + var $t87: $1_object_ObjectCore; + var $t88: $1_guid_GUID; + var $t89: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t90: $1_object_token_Token; + var $t91: $1_option_Option'$1_royalty_Royalty'; + var $t92: bool; + var $t93: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t94: $1_royalty_Royalty; + var $t95: $1_option_Option'$1_royalty_Royalty'; + var $t96: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$at(181,10666,10667)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:270:5+1 + assume {:print "$track_local(81,14,5):", $t5} $t5 == $t5; + + // $t29 := signer::address_of($t0) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:278:31+27 + assume {:print "$at(181,10917,10944)"} true; + call $t29 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,10917,10944)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // assume Identical($t31, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t31 == $1_transaction_context_spec_generate_unique_address()); + + // $t32 := object::create_object($t29) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:279:31+38 + assume {:print "$at(181,10976,11014)"} true; + call $t32 := $1_object_create_object($t29); + if ($abort_flag) { + assume {:print "$at(181,10976,11014)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_local[constructor_ref]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:279:13+15 + assume {:print "$track_local(81,14,9):", $t32} $t32 == $t32; + + // $t33 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:286:13+14 + assume {:print "$at(181,11185,11199)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:286:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:286:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t33, $1_option_spec_none'$1_string_String'()); + + // $t33 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:286:13+14 + + // trace_local[uri#591]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:162:9+3 + assume {:print "$at(181,6484,6487)"} true; + assume {:print "$track_local(81,14,27):", $t5} $t5 == $t5; + + // trace_local[royalty#590]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:161:9+7 + assume {:print "$at(181,6450,6457)"} true; + assume {:print "$track_local(81,14,23):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#589]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:160:9+22 + assume {:print "$at(181,6402,6424)"} true; + assume {:print "$track_local(81,14,20):", $t33} $t33 == $t33; + + // trace_local[name_prefix#588]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:157:9+11 + assume {:print "$at(181,6210,6221)"} true; + assume {:print "$track_local(81,14,18):", $t3} $t3 == $t3; + + // trace_local[description#587]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:156:9+11 + assume {:print "$at(181,6181,6192)"} true; + assume {:print "$track_local(81,14,14):", $t2} $t2 == $t2; + + // trace_local[collection#586]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:155:9+10 + assume {:print "$at(181,6141,6151)"} true; + assume {:print "$track_local(81,14,7):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#585]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:154:9+15 + assume {:print "$at(181,6099,6114)"} true; + assume {:print "$track_local(81,14,10):", $t32} $t32 == $t32; + + // trace_local[creator#584]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:153:9+7 + assume {:print "$at(181,6073,6080)"} true; + assume {:print "$track_local(81,14,12):", $t0} $t0 == $t0; + + // $t34 := collection::creator($t1) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:17+31 + assume {:print "$at(181,6521,6552)"} true; + call $t34 := $1_collection_creator'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,6521,6552)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t35 := signer::address_of($t0) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:52+27 + call $t35 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,6556,6583)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t36 := ==($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:49+2 + $t36 := $IsEqual'address'($t34, $t35); + + // if ($t36) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + if ($t36) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 +L0: + + // $t37 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:104+12 + assume {:print "$at(181,6608,6620)"} true; + $t37 := 2; + assume $IsValid'u64'($t37); + + // $t38 := error::unauthenticated($t37) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:81+36 + call $t38 := $1_error_unauthenticated($t37); + if ($abort_flag) { + assume {:print "$at(181,6585,6621)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + assume {:print "$at(181,6513,6622)"} true; + assume {:print "$track_abort(81,14):", $t38} $t38 == $t38; + + // $t30 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + $t30 := $t38; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:164:9+109 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:167:13+15 + assume {:print "$at(181,6685,6700)"} true; +L2: + + // trace_local[uri#598]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,14,28):", $t5} $t5 == $t5; + + // $t24 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t24 := $t4; + + // trace_local[royalty#597]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,14,24):", $t24} $t24 == $t24; + + // $t21 := $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t21 := $t33; + + // trace_local[name_with_index_suffix#596]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,14,21):", $t21} $t21 == $t21; + + // trace_local[name_prefix#595]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,14,19):", $t3} $t3 == $t3; + + // trace_local[description#594]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,14,15):", $t2} $t2 == $t2; + + // trace_local[collection#593]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,14,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#592]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,14,11):", $t32} $t32 == $t32; + + // $t39 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t39 := $t21; + + // $t40 := opaque begin: option::is_some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t40); + + // assume Eq($t40, option::spec_is_some($t39)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t40, $1_option_spec_is_some'$1_string_String'($t39)); + + // $t40 := opaque end: option::is_some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t40) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t40) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L4: + + // $t41 := string::length($t3) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t41 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t42 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t42 := 20; + assume $IsValid'u64'($t42); + + // $t43 := +($t41, $t42) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t43 := $AddU64($t41, $t42); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t44 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t44 := $t21; + + // $t45 := opaque begin: option::borrow($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t46, option::spec_is_none($t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t46 == $1_option_spec_is_none'$1_string_String'($t44)); + + // if ($t46) goto L26 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t46) { goto L26; } else { goto L25; } + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L26: + + // assume And(option::spec_is_none($t44), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t44) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L24; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L25: + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t45); + + // assume Eq($t45, option::spec_borrow($t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t45, $1_option_spec_borrow'$1_string_String'($t44)); + + // $t45 := opaque end: option::borrow($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t47 := string::length($t45) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t47 := $1_string_length($t45); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t48 := +($t43, $t47) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t48 := $AddU64($t43, $t47); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t49 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t49 := 128; + assume $IsValid'u64'($t49); + + // $t50 := <=($t48, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t50 := $Le($t48, $t49); + + // if ($t50) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t50) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L5: + + // $t51 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t51 := 4; + assume $IsValid'u64'($t51); + + // $t52 := error::out_of_range($t51) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t52 := $1_error_out_of_range($t51); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_abort($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,14):", $t52} $t52 == $t52; + + // $t30 := move($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t30 := $t52; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L24; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L3: + + // $t53 := string::length($t3) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t53 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t54 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t54 := 128; + assume $IsValid'u64'($t54); + + // $t55 := <=($t53, $t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t55 := $Le($t53, $t54); + + // if ($t55) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t55) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L10: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L8; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L9: + + // $t56 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t56 := 4; + assume $IsValid'u64'($t56); + + // $t57 := error::out_of_range($t56) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t57 := $1_error_out_of_range($t56); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_abort($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,14):", $t57} $t57 == $t57; + + // $t30 := move($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t30 := $t57; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L8: + + // $t58 := string::length($t2) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t58 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t59 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t59 := 2048; + assume $IsValid'u64'($t59); + + // $t60 := <=($t58, $t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t60 := $Le($t58, $t59); + + // if ($t60) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t60) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L11: + + // $t61 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t61 := 6; + assume $IsValid'u64'($t61); + + // $t62 := error::out_of_range($t61) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t62 := $1_error_out_of_range($t61); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_abort($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,14):", $t62} $t62 == $t62; + + // $t30 := move($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t30 := $t62; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L13: + + // $t63 := string::length($t5) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t63 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t64 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t64 := 512; + assume $IsValid'u64'($t64); + + // $t65 := <=($t63, $t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t65 := $Le($t63, $t64); + + // if ($t65) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t65) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L14: + + // $t66 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t66 := 5; + assume $IsValid'u64'($t66); + + // $t67 := error::out_of_range($t66) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t67 := $1_error_out_of_range($t66); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_abort($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,14):", $t67} $t67 == $t67; + + // $t30 := move($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t30 := $t67; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L24; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L16: + + // $t68 := object::generate_signer($t32) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t68 := $1_object_generate_signer($t32); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_local[object_signer#599]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,14,22):", $t68} $t68 == $t68; + + // $t69 := signer::address_of($t68) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t69 := $1_signer_address_of($t68); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t70 := collection::increment_supply($t1, $t69) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t70 := $1_collection_increment_supply($t1, $t69); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t71 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t71 := 0; + assume $IsValid'u64'($t71); + + // $t72 := opaque begin: aggregator_v2::create_snapshot($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t73 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t73; + + // if ($t73) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t73) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L28: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L24; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L27: + + // assume WellFormed($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t72); + + // $t72 := opaque end: aggregator_v2::create_snapshot($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t74 := opaque begin: option::destroy_with_default>($t70, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t74); + + // assume Eq>($t74, if option::spec_is_some>($t70) { + // option::spec_borrow>($t70) + // } else { + // $t72 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t74, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t70)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t70)) else ($t72))); + + // $t74 := opaque end: option::destroy_with_default>($t70, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#600]($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,14,16):", $t74} $t74 == $t74; + + // $t75 := copy($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t75 := $t21; + + // $t76 := opaque begin: option::is_some($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t76); + + // assume Eq($t76, option::spec_is_some($t75)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t76, $1_option_spec_is_some'$1_string_String'($t75)); + + // $t76 := opaque end: option::is_some($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t76) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t76) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L18: + + // $t77 := borrow_local($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t77 := $Mutation($Local(21), EmptyVec(), $t21); + + // $t78 := opaque begin: option::extract($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t79 := read_ref($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t79 := $Dereference($t77); + + // assume Identical($t80, option::spec_is_none($t77)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t80 == $1_option_spec_is_none'$1_string_String'($Dereference($t77))); + + // if ($t80) goto L30 else goto L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t80) { goto L30; } else { goto L37; } + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L30: + + // assume And(option::spec_is_none($t77), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t77)) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L24; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L29: + + // $t77 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t77 := $UpdateMutation($t77, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t77), Le(Len(select option::Option.vec($t77)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t77)) && (LenVec($Dereference($t77)->$vec) <= 1)); + + // assume WellFormed($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t78); + + // assume Eq($t78, option::spec_borrow($t79)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t78, $1_option_spec_borrow'$1_string_String'($t79)); + + // assume option::spec_is_none($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t77)); + + // $t78 := opaque end: option::extract($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t77)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t77)->$vec) <= 1); + + // write_back[LocalRoot($t21)@]($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t21 := $Dereference($t77); + + // trace_local[name_with_index_suffix#596]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,14,21):", $t21} $t21 == $t21; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t74, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t81 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t81; + + // if ($t81) goto L32 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t81) { goto L32; } else { goto L31; } + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L32: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L24; + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L31: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t74, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L17: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t82 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t82; + + // if ($t82) goto L34 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t82) { goto L34; } else { goto L33; } + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L34: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L24; + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L33: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L19: + + // trace_local[name#601]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,14,17):", $t6} $t6 == $t6; + + // $t83 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t83 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t83); + + // $t84 := string::utf8($t83) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t84 := $1_string_utf8($t83); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // trace_local[deprecated_name#603]($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,14,13):", $t84} $t84 == $t84; + + // $t85 := pack object_token::TokenIdentifiers($t74, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t85 := $1_object_token_TokenIdentifiers($t74, $t6); + + // trace_local[token_concurrent#604]($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,14,26):", $t85} $t85 == $t85; + + // move_to($t85, $t68) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t68->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t68->$addr, $t85); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t86 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t86 := 0; + assume $IsValid'u64'($t86); + + // assume Identical($t87, global(signer::$address_of($t68))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t87 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t68))); + + // assume Identical($t88, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t87), signer::$address_of($t68)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t88 == $1_guid_GUID($1_guid_ID($t87->$guid_creation_num, $1_signer_$address_of($t68)))); + + // $t89 := object::new_event_handle($t68) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t89 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t68); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t90 := pack object_token::Token($t1, $t86, $t2, $t84, $t5, $t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t90 := $1_object_token_Token($t1, $t86, $t2, $t84, $t5, $t89); + + // trace_local[token#605]($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,14,25):", $t90} $t90 == $t90; + + // move_to($t90, $t68) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t68->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t68->$addr, $t90); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // $t91 := copy($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t91 := $t24; + + // $t92 := opaque begin: option::is_some($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t92); + + // assume Eq($t92, option::spec_is_some($t91)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t92, $1_option_spec_is_some'$1_royalty_Royalty'($t91)); + + // $t92 := opaque end: option::is_some($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t92) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t92) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L21: + + // $t93 := borrow_local($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t93 := $Mutation($Local(24), EmptyVec(), $t24); + + // $t94 := opaque begin: option::extract($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t95 := read_ref($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t95 := $Dereference($t93); + + // assume Identical($t96, option::spec_is_none($t93)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t96 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t93))); + + // if ($t96) goto L36 else goto L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t96) { goto L36; } else { goto L38; } + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L36: + + // assume And(option::spec_is_none($t93), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t93)) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L24; + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L35: + + // $t93 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t93 := $UpdateMutation($t93, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t93), Le(Len(select option::Option.vec($t93)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t93)) && (LenVec($Dereference($t93)->$vec) <= 1)); + + // assume WellFormed($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t94); + + // assume Eq($t94, option::spec_borrow($t95)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t94, $1_option_spec_borrow'$1_royalty_Royalty'($t95)); + + // assume option::spec_is_none($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t93)); + + // $t94 := opaque end: option::extract($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t93)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t93)->$vec) <= 1); + + // write_back[LocalRoot($t24)@]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t24 := $Dereference($t93); + + // trace_local[royalty#597]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,14,24):", $t24} $t24 == $t24; + + // royalty::init($t32, $t94) on_abort goto L24 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t32, $t94); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,14):", $t30} $t30 == $t30; + goto L24; + } + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L20: + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:290:9+15 + assume {:print "$at(181,11257,11272)"} true; +L22: + + // trace_return[0]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:290:9+15 + assume {:print "$at(181,11257,11272)"} true; + assume {:print "$track_return(81,14,0):", $t32} $t32 == $t32; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:291:5+1 + assume {:print "$at(181,11277,11278)"} true; +L23: + + // return $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:291:5+1 + assume {:print "$at(181,11277,11278)"} true; + $ret0 := $t32; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:291:5+1 +L24: + + // abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:291:5+1 + assume {:print "$at(181,11277,11278)"} true; + $abort_code := $t30; + $abort_flag := true; + return; + + // label L37 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L37: + + // drop($t77) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L29 at :1:1+10 + goto L29; + + // label L38 at :1:1+10 +L38: + + // drop($t93) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L35 at :1:1+10 + goto L35; + +} + +// fun object_token::create_token_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+187 +procedure {:timeLimit 80} $1_object_token_create_token_address$verify(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume {:print "$at(181,20852,20853)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume $IsValid'$1_string_String'($t2); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume {:print "$track_local(81,15,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume {:print "$track_local(81,15,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:575:5+1 + assume {:print "$track_local(81,15,2):", $t2} $t2 == $t2; + + // $t3 := object_token::create_token_seed($t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:48+35 + assume {:print "$at(181,20997,21032)"} true; + call $t3 := $1_object_token_create_token_seed($t1, $t2); + if ($abort_flag) { + assume {:print "$at(181,20997,21032)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,15):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := opaque begin: object::create_object_address($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:9+75 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:9+75 + assume $IsValid'address'($t5); + + // assume Eq
($t5, object::spec_create_object_address($t0, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:9+75 + assume $IsEqual'address'($t5, $1_object_spec_create_object_address($t0, $t3)); + + // $t5 := opaque end: object::create_object_address($t0, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:9+75 + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:576:9+75 + assume {:print "$track_return(81,15,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:577:5+1 + assume {:print "$at(181,21038,21039)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:577:5+1 + assume {:print "$at(181,21038,21039)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:577:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:577:5+1 + assume {:print "$at(181,21038,21039)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object_token::create_token_address_with_seed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+253 +procedure {:timeLimit 80} $1_object_token_create_token_address_with_seed$verify(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: int; + var $t7: int; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume {:print "$at(181,21182,21183)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume $IsValid'$1_string_String'($t3); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume {:print "$track_local(81,16,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume {:print "$track_local(81,16,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume {:print "$track_local(81,16,2):", $t2} $t2 == $t2; + + // trace_local[seed]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:581:5+1 + assume {:print "$track_local(81,16,3):", $t3} $t3 == $t3; + + // $t5 := object_token::create_token_name_with_seed($t1, $t2, $t3) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:582:20+54 + assume {:print "$at(181,21320,21374)"} true; + call $t5 := $1_object_token_create_token_name_with_seed($t1, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(181,21320,21374)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(81,16):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[seed#1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:582:13+4 + assume {:print "$track_local(81,16,4):", $t5} $t5 == $t5; + + // $t7 := opaque begin: object::create_object_address($t0, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:583:9+45 + assume {:print "$at(181,21384,21429)"} true; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:583:9+45 + assume $IsValid'address'($t7); + + // assume Eq
($t7, object::spec_create_object_address($t0, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:583:9+45 + assume $IsEqual'address'($t7, $1_object_spec_create_object_address($t0, $t5)); + + // $t7 := opaque end: object::create_object_address($t0, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:583:9+45 + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:583:9+45 + assume {:print "$track_return(81,16,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:584:5+1 + assume {:print "$at(181,21434,21435)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:584:5+1 + assume {:print "$at(181,21434,21435)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:584:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:584:5+1 + assume {:print "$at(181,21434,21435)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun object_token::create_token_as_collection_owner [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+641 +procedure {:timeLimit 80} $1_object_token_create_token_as_collection_owner$verify(_$t0: $signer, _$t1: $1_object_Object'$1_collection_Collection', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_option_Option'$1_royalty_Royalty', _$t5: $1_string_String) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t6: $1_aggregator_v2_DerivedStringSnapshot; + var $t7: $1_object_Object'$1_collection_Collection'; + var $t8: $1_object_Object'$1_collection_Collection'; + var $t9: $1_object_ConstructorRef; + var $t10: $1_object_ConstructorRef; + var $t11: $1_object_ConstructorRef; + var $t12: $1_string_String; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t16: $1_aggregator_v2_DerivedStringSnapshot; + var $t17: $1_string_String; + var $t18: $1_string_String; + var $t19: $1_option_Option'$1_string_String'; + var $t20: $1_option_Option'$1_string_String'; + var $t21: $signer; + var $t22: $signer; + var $t23: $1_option_Option'$1_royalty_Royalty'; + var $t24: $1_option_Option'$1_royalty_Royalty'; + var $t25: $1_object_token_Token; + var $t26: $1_object_token_TokenIdentifiers; + var $t27: $1_string_String; + var $t28: $1_string_String; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: $1_object_ConstructorRef; + var $t33: $1_option_Option'$1_string_String'; + var $t34: bool; + var $t35: int; + var $t36: int; + var $t37: int; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: $1_option_Option'$1_string_String'; + var $t43: bool; + var $t44: int; + var $t45: int; + var $t46: int; + var $t47: $1_option_Option'$1_string_String'; + var $t48: $1_string_String; + var $t49: bool; + var $t50: int; + var $t51: int; + var $t52: int; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: int; + var $t58: bool; + var $t59: int; + var $t60: int; + var $t61: int; + var $t62: int; + var $t63: bool; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: bool; + var $t69: int; + var $t70: int; + var $t71: $signer; + var $t72: int; + var $t73: $1_option_Option'$1_aggregator_v2_AggregatorSnapshot'u64''; + var $t74: int; + var $t75: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t76: bool; + var $t77: $1_aggregator_v2_AggregatorSnapshot'u64'; + var $t78: $1_option_Option'$1_string_String'; + var $t79: bool; + var $t80: $Mutation ($1_option_Option'$1_string_String'); + var $t81: $1_string_String; + var $t82: $1_option_Option'$1_string_String'; + var $t83: bool; + var $t84: bool; + var $t85: bool; + var $t86: Vec (int); + var $t87: $1_string_String; + var $t88: $1_object_token_TokenIdentifiers; + var $t89: int; + var $t90: $1_object_ObjectCore; + var $t91: $1_guid_GUID; + var $t92: $1_event_EventHandle'$1_object_token_MutationEvent'; + var $t93: $1_object_token_Token; + var $t94: $1_option_Option'$1_royalty_Royalty'; + var $t95: bool; + var $t96: $Mutation ($1_option_Option'$1_royalty_Royalty'); + var $t97: $1_royalty_Royalty; + var $t98: $1_option_Option'$1_royalty_Royalty'; + var $t99: bool; + var $t0: $signer; + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_option_Option'$1_royalty_Royalty'; + var $t5: $1_string_String; + var $temp_0'$1_aggregator_v2_AggregatorSnapshot'u64'': $1_aggregator_v2_AggregatorSnapshot'u64'; + var $temp_0'$1_aggregator_v2_DerivedStringSnapshot': $1_aggregator_v2_DerivedStringSnapshot; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_token_Token': $1_object_token_Token; + var $temp_0'$1_object_token_TokenIdentifiers': $1_object_token_TokenIdentifiers; + var $temp_0'$1_option_Option'$1_royalty_Royalty'': $1_option_Option'$1_royalty_Royalty'; + var $temp_0'$1_option_Option'$1_string_String'': $1_option_Option'$1_string_String'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$at(181,12110,12111)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume $IsValid'$1_object_Object'$1_collection_Collection''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume $IsValid'$1_string_String'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,3):", $t3} $t3 == $t3; + + // trace_local[royalty]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:319:5+1 + assume {:print "$track_local(81,17,5):", $t5} $t5 == $t5; + + // $t29 := signer::address_of($t0) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:327:31+27 + assume {:print "$at(181,12381,12408)"} true; + call $t29 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,12381,12408)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // assume Identical($t31, transaction_context::spec_generate_unique_address()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:69:9+73 + assume {:print "$at(50,3209,3282)"} true; + assume ($t31 == $1_transaction_context_spec_generate_unique_address()); + + // $t32 := object::create_object($t29) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:328:31+38 + assume {:print "$at(181,12440,12478)"} true; + call $t32 := $1_object_create_object($t29); + if ($abort_flag) { + assume {:print "$at(181,12440,12478)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_local[constructor_ref]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:328:13+15 + assume {:print "$track_local(81,17,9):", $t32} $t32 == $t32; + + // $t33 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:335:13+14 + assume {:print "$at(181,12658,12672)"} true; + + // assume And(WellFormed($t33), Le(Len(select option::Option.vec($t33)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:335:13+14 + assume ($IsValid'$1_option_Option'$1_string_String''($t33) && (LenVec($t33->$vec) <= 1)); + + // assume Eq>($t33, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:335:13+14 + assume $IsEqual'$1_option_Option'$1_string_String''($t33, $1_option_spec_none'$1_string_String'()); + + // $t33 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:335:13+14 + + // trace_local[uri#613]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:187:9+3 + assume {:print "$at(181,7339,7342)"} true; + assume {:print "$track_local(81,17,27):", $t5} $t5 == $t5; + + // trace_local[royalty#612]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:186:9+7 + assume {:print "$at(181,7305,7312)"} true; + assume {:print "$track_local(81,17,23):", $t4} $t4 == $t4; + + // trace_local[name_with_index_suffix#611]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:185:9+22 + assume {:print "$at(181,7257,7279)"} true; + assume {:print "$track_local(81,17,19):", $t33} $t33 == $t33; + + // trace_local[name_prefix#610]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:182:9+11 + assume {:print "$at(181,7065,7076)"} true; + assume {:print "$track_local(81,17,17):", $t3} $t3 == $t3; + + // trace_local[description#609]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:181:9+11 + assume {:print "$at(181,7036,7047)"} true; + assume {:print "$track_local(81,17,13):", $t2} $t2 == $t2; + + // trace_local[collection#608]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:180:9+10 + assume {:print "$at(181,6996,7006)"} true; + assume {:print "$track_local(81,17,7):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#607]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:179:9+15 + assume {:print "$at(181,6954,6969)"} true; + assume {:print "$track_local(81,17,10):", $t32} $t32 == $t32; + + // trace_local[owner#606]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:178:9+5 + assume {:print "$at(181,6930,6935)"} true; + assume {:print "$track_local(81,17,22):", $t0} $t0 == $t0; + + // $t34 := features::is_collection_owner_enabled() on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:17+39 + assume {:print "$at(181,7376,7415)"} true; + call $t34 := $1_features_is_collection_owner_enabled(); + if ($abort_flag) { + assume {:print "$at(181,7376,7415)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // if ($t34) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + if ($t34) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 +L0: + + // $t35 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:77+31 + assume {:print "$at(181,7436,7467)"} true; + $t35 := 9; + assume $IsValid'u64'($t35); + + // $t36 := error::unavailable($t35) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:58+51 + call $t36 := $1_error_unavailable($t35); + if ($abort_flag) { + assume {:print "$at(181,7417,7468)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + assume {:print "$at(181,7368,7469)"} true; + assume {:print "$track_abort(81,17):", $t36} $t36 == $t36; + + // $t30 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + $t30 := $t36; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:189:9+101 + goto L27; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:31+10 + assume {:print "$at(181,7501,7511)"} true; +L2: + + // $t37 := object::owner($t1) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:17+25 + assume {:print "$at(181,7487,7512)"} true; + call $t37 := $1_object_owner'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(181,7487,7512)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t38 := signer::address_of($t0) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:46+25 + call $t38 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(181,7516,7541)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t39 := ==($t37, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:43+2 + $t39 := $IsEqual'address'($t37, $t38); + + // if ($t39) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + if ($t39) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 +L3: + + // $t40 := 8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:96+10 + assume {:print "$at(181,7566,7576)"} true; + $t40 := 8; + assume $IsValid'u64'($t40); + + // $t41 := error::unauthenticated($t40) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:73+34 + call $t41 := $1_error_unauthenticated($t40); + if ($abort_flag) { + assume {:print "$at(181,7543,7577)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + assume {:print "$at(181,7479,7578)"} true; + assume {:print "$track_abort(81,17):", $t41} $t41 == $t41; + + // $t30 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + $t30 := $t41; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:190:9+99 + goto L27; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:193:13+15 + assume {:print "$at(181,7641,7656)"} true; +L5: + + // trace_local[uri#620]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:212:9+3 + assume {:print "$at(181,8271,8274)"} true; + assume {:print "$track_local(81,17,28):", $t5} $t5 == $t5; + + // $t24 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$at(181,8237,8244)"} true; + $t24 := $t4; + + // trace_local[royalty#619]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:211:9+7 + assume {:print "$track_local(81,17,24):", $t24} $t24 == $t24; + + // $t20 := $t33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$at(181,8189,8211)"} true; + $t20 := $t33; + + // trace_local[name_with_index_suffix#618]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:210:9+22 + assume {:print "$track_local(81,17,20):", $t20} $t20 == $t20; + + // trace_local[name_prefix#617]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:207:9+11 + assume {:print "$at(181,7997,8008)"} true; + assume {:print "$track_local(81,17,18):", $t3} $t3 == $t3; + + // trace_local[description#616]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:206:9+11 + assume {:print "$at(181,7968,7979)"} true; + assume {:print "$track_local(81,17,14):", $t2} $t2 == $t2; + + // trace_local[collection#615]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:205:9+10 + assume {:print "$at(181,7928,7938)"} true; + assume {:print "$track_local(81,17,8):", $t1} $t1 == $t1; + + // trace_local[constructor_ref#614]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:204:9+15 + assume {:print "$at(181,7886,7901)"} true; + assume {:print "$track_local(81,17,11):", $t32} $t32 == $t32; + + // $t42 := copy($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:29+23 + assume {:print "$at(181,8320,8343)"} true; + $t42 := $t20; + + // $t43 := opaque begin: option::is_some($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // assume WellFormed($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsValid'bool'($t43); + + // assume Eq($t43, option::spec_is_some($t42)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + assume $IsEqual'bool'($t43, $1_option_spec_is_some'$1_string_String'($t42)); + + // $t43 := opaque end: option::is_some($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:13+40 + + // if ($t43) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:214:9+583 + if ($t43) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:32+12 + assume {:print "$at(181,8524,8536)"} true; +L7: + + // $t44 := string::length($t3) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:17+28 + assume {:print "$at(181,8509,8537)"} true; + call $t44 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8509,8537)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t45 := 20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:48+2 + $t45 := 20; + assume $IsValid'u64'($t45); + + // $t46 := +($t44, $t45) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:46+1 + call $t46 := $AddU64($t44, $t45); + if ($abort_flag) { + assume {:print "$at(181,8538,8539)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t47 := copy($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:36+23 + assume {:print "$at(181,8596,8619)"} true; + $t47 := $t20; + + // $t48 := opaque begin: option::borrow($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // assume Identical($t49, option::spec_is_none($t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume ($t49 == $1_option_spec_is_none'$1_string_String'($t47)); + + // if ($t49) goto L29 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + if ($t49) { goto L29; } else { goto L28; } + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L29: + + // assume And(option::spec_is_none($t47), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume ($1_option_spec_is_none'$1_string_String'($t47) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + goto L27; + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 +L28: + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume {:print "$at(181,8581,8620)"} true; + assume $IsValid'$1_string_String'($t48); + + // assume Eq($t48, option::spec_borrow($t47)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + assume $IsEqual'$1_string_String'($t48, $1_option_spec_borrow'$1_string_String'($t47)); + + // $t48 := opaque end: option::borrow($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:218:21+39 + + // $t50 := string::length($t48) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:53+93 + assume {:print "$at(181,8545,8638)"} true; + call $t50 := $1_string_length($t48); + if ($abort_flag) { + assume {:print "$at(181,8545,8638)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t51 := +($t46, $t50) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:217:51+1 + call $t51 := $AddU64($t46, $t50); + if ($abort_flag) { + assume {:print "$at(181,8543,8544)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t52 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:22+21 + assume {:print "$at(181,8642,8663)"} true; + $t52 := 128; + assume $IsValid'u64'($t52); + + // $t53 := <=($t51, $t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:219:19+2 + call $t53 := $Le($t51, $t52); + + // if ($t53) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + if ($t53) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 +L8: + + // $t54 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:37+20 + assume {:print "$at(181,8701,8721)"} true; + $t54 := 4; + assume $IsValid'u64'($t54); + + // $t55 := error::out_of_range($t54) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:220:17+41 + call $t55 := $1_error_out_of_range($t54); + if ($abort_flag) { + assume {:print "$at(181,8681,8722)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + assume {:print "$at(181,8484,8736)"} true; + assume {:print "$track_abort(81,17):", $t55} $t55 == $t55; + + // $t30 := move($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + $t30 := $t55; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:216:13+252 + goto L27; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:221:14+1 + assume {:print "$at(181,8736,8737)"} true; + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:36+12 + assume {:print "$at(181,8790,8802)"} true; +L6: + + // $t56 := string::length($t3) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:21+28 + assume {:print "$at(181,8775,8803)"} true; + call $t56 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(181,8775,8803)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t57 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:53+21 + $t57 := 128; + assume $IsValid'u64'($t57); + + // $t58 := <=($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:50+2 + call $t58 := $Le($t56, $t57); + + // if ($t58) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + if ($t58) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L13: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + goto L11; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 +L12: + + // $t59 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:96+20 + assume {:print "$at(181,8850,8870)"} true; + $t59 := 4; + assume $IsValid'u64'($t59); + + // $t60 := error::out_of_range($t59) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:76+41 + call $t60 := $1_error_out_of_range($t59); + if ($abort_flag) { + assume {:print "$at(181,8830,8871)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + assume {:print "$at(181,8767,8872)"} true; + assume {:print "$track_abort(81,17):", $t60} $t60 == $t60; + + // $t30 := move($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + $t30 := $t60; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:223:13+105 + goto L27; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:32+12 + assume {:print "$at(181,8916,8928)"} true; +L11: + + // $t61 := string::length($t2) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:17+28 + assume {:print "$at(181,8901,8929)"} true; + call $t61 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,8901,8929)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t62 := 2048 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:49+22 + $t62 := 2048; + assume $IsValid'u64'($t62); + + // $t63 := <=($t61, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:46+2 + call $t63 := $Le($t61, $t62); + + // if ($t63) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + if ($t63) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 +L14: + + // $t64 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:93+21 + assume {:print "$at(181,8977,8998)"} true; + $t64 := 6; + assume $IsValid'u64'($t64); + + // $t65 := error::out_of_range($t64) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:73+42 + call $t65 := $1_error_out_of_range($t64); + if ($abort_flag) { + assume {:print "$at(181,8957,8999)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + assume {:print "$at(181,8893,9000)"} true; + assume {:print "$track_abort(81,17):", $t65} $t65 == $t65; + + // $t30 := move($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + $t30 := $t65; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:225:9+107 + goto L27; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:32+4 + assume {:print "$at(181,9033,9037)"} true; +L16: + + // $t66 := string::length($t5) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:17+20 + assume {:print "$at(181,9018,9038)"} true; + call $t66 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(181,9018,9038)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t67 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:41+14 + $t67 := 512; + assume $IsValid'u64'($t67); + + // $t68 := <=($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:38+2 + call $t68 := $Le($t66, $t67); + + // if ($t68) goto L18 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + if ($t68) { goto L18; } else { goto L17; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L18: + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + goto L19; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 +L17: + + // $t69 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:77+13 + assume {:print "$at(181,9078,9091)"} true; + $t69 := 5; + assume $IsValid'u64'($t69); + + // $t70 := error::out_of_range($t69) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:57+34 + call $t70 := $1_error_out_of_range($t69); + if ($abort_flag) { + assume {:print "$at(181,9058,9092)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_abort($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + assume {:print "$at(181,9010,9093)"} true; + assume {:print "$track_abort(81,17):", $t70} $t70 == $t70; + + // $t30 := move($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + $t30 := $t70; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:226:9+83 + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:53+15 + assume {:print "$at(181,9148,9163)"} true; +L19: + + // $t71 := object::generate_signer($t32) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:29+40 + assume {:print "$at(181,9124,9164)"} true; + call $t71 := $1_object_generate_signer($t32); + if ($abort_flag) { + assume {:print "$at(181,9124,9164)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_local[object_signer#621]($t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:228:13+13 + assume {:print "$track_local(81,17,21):", $t71} $t71 == $t71; + + // $t72 := signer::address_of($t71) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:55+34 + assume {:print "$at(181,9271,9305)"} true; + call $t72 := $1_signer_address_of($t71); + if ($abort_flag) { + assume {:print "$at(181,9271,9305)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t73 := collection::increment_supply($t1, $t72) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:231:13+77 + call $t73 := $1_collection_increment_supply($t1, $t72); + if ($abort_flag) { + assume {:print "$at(181,9229,9306)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t74 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:49+1 + assume {:print "$at(181,9356,9357)"} true; + $t74 := 0; + assume $IsValid'u64'($t74); + + // $t75 := opaque begin: aggregator_v2::create_snapshot($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t76 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + havoc $t76; + + // if ($t76) goto L31 else goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + if ($t76) { goto L31; } else { goto L30; } + + // label L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L31: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + goto L27; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 +L30: + + // assume WellFormed($t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + assume {:print "$at(181,9320,9358)"} true; + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t75); + + // $t75 := opaque end: aggregator_v2::create_snapshot($t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:232:13+38 + + // $t77 := opaque begin: option::destroy_with_default>($t73, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume {:print "$at(181,9187,9368)"} true; + + // assume WellFormed($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsValid'$1_aggregator_v2_AggregatorSnapshot'u64''($t77); + + // assume Eq>($t77, if option::spec_is_some>($t73) { + // option::spec_borrow>($t73) + // } else { + // $t75 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + assume $IsEqual'$1_aggregator_v2_AggregatorSnapshot'u64''($t77, (if ($1_option_spec_is_some'$1_aggregator_v2_AggregatorSnapshot'u64''($t73)) then ($1_option_spec_borrow'$1_aggregator_v2_AggregatorSnapshot'u64''($t73)) else ($t75))); + + // $t77 := opaque end: option::destroy_with_default>($t73, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:21+181 + + // trace_local[index#622]($t77) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:230:13+5 + assume {:print "$track_local(81,17,15):", $t77} $t77 == $t77; + + // $t78 := copy($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:40+23 + assume {:print "$at(181,9480,9503)"} true; + $t78 := $t20; + + // $t79 := opaque begin: option::is_some($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // assume WellFormed($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsValid'bool'($t79); + + // assume Eq($t79, option::spec_is_some($t78)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + assume $IsEqual'bool'($t79, $1_option_spec_is_some'$1_string_String'($t78)); + + // $t79 := opaque end: option::is_some($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:24+40 + + // if ($t79) goto L21 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + if ($t79) { goto L21; } else { goto L20; } + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:49+11 + assume {:print "$at(181,9556,9567)"} true; +L21: + + // $t80 := borrow_local($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:86+27 + assume {:print "$at(181,9593,9620)"} true; + $t80 := $Mutation($Local(20), EmptyVec(), $t20); + + // $t81 := opaque begin: option::extract($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // $t82 := read_ref($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + $t82 := $Dereference($t80); + + // assume Identical($t83, option::spec_is_none($t80)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($t83 == $1_option_spec_is_none'$1_string_String'($Dereference($t80))); + + // if ($t83) goto L33 else goto L40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + if ($t83) { goto L33; } else { goto L40; } + + // label L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L33: + + // assume And(option::spec_is_none($t80), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume ($1_option_spec_is_none'$1_string_String'($Dereference($t80)) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + goto L27; + + // label L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 +L32: + + // $t80 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + havoc $temp_0'$1_option_Option'$1_string_String''; + $t80 := $UpdateMutation($t80, $temp_0'$1_option_Option'$1_string_String''); + + // assume And(WellFormed($t80), Le(Len(select option::Option.vec($t80)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume ($IsValid'$1_option_Option'$1_string_String''($Dereference($t80)) && (LenVec($Dereference($t80)->$vec) <= 1)); + + // assume WellFormed($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsValid'$1_string_String'($t81); + + // assume Eq($t81, option::spec_borrow($t82)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $IsEqual'$1_string_String'($t81, $1_option_spec_borrow'$1_string_String'($t82)); + + // assume option::spec_is_none($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume $1_option_spec_is_none'$1_string_String'($Dereference($t80)); + + // $t81 := opaque end: option::extract($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + + // assert Le(Len(select option::Option.vec($t80)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t80)->$vec) <= 1); + + // write_back[LocalRoot($t20)@]($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$at(181,9577,9621)"} true; + $t20 := $Dereference($t80); + + // trace_local[name_with_index_suffix#618]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:70+44 + assume {:print "$track_local(81,17,20):", $t20} $t20 == $t20; + + // $t6 := opaque begin: aggregator_v2::derive_string_concat($t3, $t77, $t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // $t84 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + havoc $t84; + + // if ($t84) goto L35 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + if ($t84) { goto L35; } else { goto L34; } + + // label L35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L35: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + goto L27; + + // label L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 +L34: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + assume {:print "$at(181,9520,9622)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::derive_string_concat($t3, $t77, $t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:237:13+102 + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; + goto L22; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:50+11 + assume {:print "$at(181,9689,9700)"} true; +L20: + + // $t6 := opaque begin: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + + // $t85 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + havoc $t85; + + // if ($t85) goto L37 else goto L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + if ($t85) { goto L37; } else { goto L36; } + + // label L37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L37: + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + goto L27; + + // label L36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 +L36: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + assume {:print "$at(181,9652,9701)"} true; + assume $IsValid'$1_aggregator_v2_DerivedStringSnapshot'($t6); + + // $t6 := opaque end: aggregator_v2::create_derived_string($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:239:13+49 + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:20+251 + assume {:print "$at(181,9460,9711)"} true; +L22: + + // trace_local[name#623]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:236:13+4 + assume {:print "$at(181,9453,9457)"} true; + assume {:print "$track_local(81,17,16):", $t6} $t6 == $t6; + + // $t86 := [] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:44+3 + assume {:print "$at(181,9791,9794)"} true; + $t86 := $EmptyVec'u8'(); + assume $IsValid'vec'u8''($t86); + + // $t87 := string::utf8($t86) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:31+17 + call $t87 := $1_string_utf8($t86); + if ($abort_flag) { + assume {:print "$at(181,9778,9795)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // trace_local[deprecated_name#625]($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:243:13+15 + assume {:print "$track_local(81,17,12):", $t87} $t87 == $t87; + + // $t88 := pack object_token::TokenIdentifiers($t77, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:32+65 + assume {:print "$at(181,9829,9894)"} true; + $t88 := $1_object_token_TokenIdentifiers($t77, $t6); + + // trace_local[token_concurrent#626]($t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:245:13+16 + assume {:print "$track_local(81,17,26):", $t88} $t88 == $t88; + + // move_to($t88, $t71) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:249:9+7 + assume {:print "$at(181,9904,9911)"} true; + if ($ResourceExists($1_object_token_TokenIdentifiers_$memory, $t71->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_TokenIdentifiers_$memory := $ResourceUpdate($1_object_token_TokenIdentifiers_$memory, $t71->$addr, $t88); + } + if ($abort_flag) { + assume {:print "$at(181,9904,9911)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t89 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:242:32+1 + assume {:print "$at(181,9745,9746)"} true; + $t89 := 0; + assume $IsValid'u64'($t89); + + // assume Identical($t90, global(signer::$address_of($t71))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:363:9+65 + assume {:print "$at(50,14900,14965)"} true; + assume ($t90 == $ResourceValue($1_object_ObjectCore_$memory, $1_signer_$address_of($t71))); + + // assume Identical($t91, pack guid::GUID(pack guid::ID(select object::ObjectCore.guid_creation_num($t90), signer::$address_of($t71)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:366:9+185 + assume {:print "$at(50,15038,15223)"} true; + assume ($t91 == $1_guid_GUID($1_guid_ID($t90->$guid_creation_num, $1_signer_$address_of($t71)))); + + // $t92 := object::new_event_handle($t71) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:257:30+40 + assume {:print "$at(181,10143,10183)"} true; + call $t92 := $1_object_new_event_handle'$1_object_token_MutationEvent'($t71); + if ($abort_flag) { + assume {:print "$at(181,10143,10183)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t93 := pack object_token::Token($t1, $t89, $t2, $t87, $t5, $t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:21+226 + assume {:print "$at(181,9968,10194)"} true; + $t93 := $1_object_token_Token($t1, $t89, $t2, $t87, $t5, $t92); + + // trace_local[token#627]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:251:13+5 + assume {:print "$track_local(81,17,25):", $t93} $t93 == $t93; + + // move_to($t93, $t71) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:259:9+7 + assume {:print "$at(181,10204,10211)"} true; + if ($ResourceExists($1_object_token_Token_$memory, $t71->$addr)) { + call $ExecFailureAbort(); + } else { + $1_object_token_Token_$memory := $ResourceUpdate($1_object_token_Token_$memory, $t71->$addr, $t93); + } + if ($abort_flag) { + assume {:print "$at(181,10204,10211)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // $t94 := copy($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:29+8 + assume {:print "$at(181,10265,10273)"} true; + $t94 := $t24; + + // $t95 := opaque begin: option::is_some($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // assume WellFormed($t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsValid'bool'($t95); + + // assume Eq($t95, option::spec_is_some($t94)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + assume $IsEqual'bool'($t95, $1_option_spec_is_some'$1_royalty_Royalty'($t94)); + + // $t95 := opaque end: option::is_some($t94) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:13+25 + + // if ($t95) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + if ($t95) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:27+15 + assume {:print "$at(181,10304,10319)"} true; +L24: + + // $t96 := borrow_local($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:60+12 + assume {:print "$at(181,10337,10349)"} true; + $t96 := $Mutation($Local(24), EmptyVec(), $t24); + + // $t97 := opaque begin: option::extract($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // $t98 := read_ref($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + $t98 := $Dereference($t96); + + // assume Identical($t99, option::spec_is_none($t96)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($t99 == $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t96))); + + // if ($t99) goto L39 else goto L41 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + if ($t99) { goto L39; } else { goto L41; } + + // label L39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L39: + + // assume And(option::spec_is_none($t96), Eq(262145, $t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume ($1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t96)) && $IsEqual'num'(262145, $t30)); + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + goto L27; + + // label L38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 +L38: + + // $t96 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + havoc $temp_0'$1_option_Option'$1_royalty_Royalty''; + $t96 := $UpdateMutation($t96, $temp_0'$1_option_Option'$1_royalty_Royalty''); + + // assume And(WellFormed($t96), Le(Len(select option::Option.vec($t96)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($Dereference($t96)) && (LenVec($Dereference($t96)->$vec) <= 1)); + + // assume WellFormed($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsValid'$1_royalty_Royalty'($t97); + + // assume Eq($t97, option::spec_borrow($t98)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $IsEqual'$1_royalty_Royalty'($t97, $1_option_spec_borrow'$1_royalty_Royalty'($t98)); + + // assume option::spec_is_none($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume $1_option_spec_is_none'$1_royalty_Royalty'($Dereference($t96)); + + // $t97 := opaque end: option::extract($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + + // assert Le(Len(select option::Option.vec($t96)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t96)->$vec) <= 1); + + // write_back[LocalRoot($t24)@]($t96) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$at(181,10321,10350)"} true; + $t24 := $Dereference($t96); + + // trace_local[royalty#619]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:44+29 + assume {:print "$track_local(81,17,24):", $t24} $t24 == $t24; + + // royalty::init($t32, $t97) on_abort goto L27 with $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + call $1_royalty_init($t32, $t97); + if ($abort_flag) { + assume {:print "$at(181,10290,10351)"} true; + $t30 := $abort_code; + assume {:print "$track_abort(81,17):", $t30} $t30 == $t30; + goto L27; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:262:13+61 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:261:9+116 + assume {:print "$at(181,10245,10361)"} true; +L23: + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:339:9+15 + assume {:print "$at(181,12730,12745)"} true; +L25: + + // trace_return[0]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:339:9+15 + assume {:print "$at(181,12730,12745)"} true; + assume {:print "$track_return(81,17,0):", $t32} $t32 == $t32; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:340:5+1 + assume {:print "$at(181,12750,12751)"} true; +L26: + + // return $t32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:340:5+1 + assume {:print "$at(181,12750,12751)"} true; + $ret0 := $t32; + return; + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:340:5+1 +L27: + + // abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:340:5+1 + assume {:print "$at(181,12750,12751)"} true; + $abort_code := $t30; + $abort_flag := true; + return; + + // label L40 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L40: + + // drop($t80) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L32 at :1:1+10 + goto L32; + + // label L41 at :1:1+10 +L41: + + // drop($t96) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L38 at :1:1+10 + goto L38; + +} + +// fun object_token::create_token_name_with_seed [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+339 +procedure {:inline 1} $1_object_token_create_token_name_with_seed(_$t0: $1_string_String, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $Mutation (Vec (int)); + var $t11: Vec (int); + var $t12: Vec (int); + var $t0: $1_string_String; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$at(181,21908,21909)"} true; + assume {:print "$track_local(81,18,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$track_local(81,18,1):", $t1} $t1 == $t1; + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$track_local(81,18,2):", $t2} $t2 == $t2; + + // $t4 := string::length($t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:17+20 + assume {:print "$at(181,22028,22048)"} true; + call $t4 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,22028,22048)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:41+21 + $t6 := 128; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + assume {:print "$at(181,22020,22111)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 +L0: + + // $t8 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:84+14 + assume {:print "$at(181,22095,22109)"} true; + $t8 := 7; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:64+35 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,22075,22110)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + assume {:print "$at(181,22020,22111)"} true; + assume {:print "$track_abort(81,18):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:39+10 + assume {:print "$at(181,22151,22161)"} true; +L2: + + // $t3 := object_token::create_token_seed($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:21+35 + assume {:print "$at(181,22133,22168)"} true; + call $t3 := $1_object_token_create_token_seed($t0, $t1); + if ($abort_flag) { + assume {:print "$at(181,22133,22168)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[seeds]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:13+5 + assume {:print "$track_local(81,18,3):", $t3} $t3 == $t3; + + // $t10 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:24+10 + assume {:print "$at(181,22193,22203)"} true; + $t10 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t11 := string::bytes($t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:37+19 + call $t11 := $1_string_bytes($t2); + if ($abort_flag) { + assume {:print "$at(181,22206,22225)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // vector::append($t10, $t11) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + call $t10 := $1_vector_append'u8'($t10, $t11); + if ($abort_flag) { + assume {:print "$at(181,22178,22226)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + $t3 := $Dereference($t10); + + // trace_local[seeds]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + assume {:print "$track_local(81,18,3):", $t3} $t3 == $t3; + + // $t12 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:599:9+5 + assume {:print "$at(181,22236,22241)"} true; + $t12 := $t3; + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:599:9+5 + assume {:print "$track_return(81,18,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; +L3: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::create_token_name_with_seed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+339 +procedure {:timeLimit 80} $1_object_token_create_token_name_with_seed$verify(_$t0: $1_string_String, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t3: Vec (int); + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $Mutation (Vec (int)); + var $t11: Vec (int); + var $t12: Vec (int); + var $t0: $1_string_String; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$at(181,21908,21909)"} true; + assume $IsValid'$1_string_String'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume $IsValid'$1_string_String'($t2); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$track_local(81,18,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$track_local(81,18,1):", $t1} $t1 == $t1; + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:595:5+1 + assume {:print "$track_local(81,18,2):", $t2} $t2 == $t2; + + // $t4 := string::length($t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:17+20 + assume {:print "$at(181,22028,22048)"} true; + call $t4 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(181,22028,22048)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:41+21 + $t6 := 128; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + assume {:print "$at(181,22020,22111)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 +L0: + + // $t8 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:84+14 + assume {:print "$at(181,22095,22109)"} true; + $t8 := 7; + assume $IsValid'u64'($t8); + + // $t9 := error::out_of_range($t8) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:64+35 + call $t9 := $1_error_out_of_range($t8); + if ($abort_flag) { + assume {:print "$at(181,22075,22110)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + assume {:print "$at(181,22020,22111)"} true; + assume {:print "$track_abort(81,18):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + $t5 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:596:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:39+10 + assume {:print "$at(181,22151,22161)"} true; +L2: + + // $t3 := object_token::create_token_seed($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:21+35 + assume {:print "$at(181,22133,22168)"} true; + call $t3 := $1_object_token_create_token_seed($t0, $t1); + if ($abort_flag) { + assume {:print "$at(181,22133,22168)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[seeds]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:597:13+5 + assume {:print "$track_local(81,18,3):", $t3} $t3 == $t3; + + // $t10 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:24+10 + assume {:print "$at(181,22193,22203)"} true; + $t10 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t11 := string::bytes($t2) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:37+19 + call $t11 := $1_string_bytes($t2); + if ($abort_flag) { + assume {:print "$at(181,22206,22225)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // vector::append($t10, $t11) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + call $t10 := $1_vector_append'u8'($t10, $t11); + if ($abort_flag) { + assume {:print "$at(181,22178,22226)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(81,18):", $t5} $t5 == $t5; + goto L4; + } + + // write_back[LocalRoot($t3)@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + $t3 := $Dereference($t10); + + // trace_local[seeds]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:598:9+48 + assume {:print "$track_local(81,18,3):", $t3} $t3 == $t3; + + // $t12 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:599:9+5 + assume {:print "$at(181,22236,22241)"} true; + $t12 := $t3; + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:599:9+5 + assume {:print "$track_return(81,18,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; +L3: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:600:5+1 + assume {:print "$at(181,22246,22247)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun object_token::create_token_seed [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+350 +procedure {:inline 1} $1_object_token_create_token_seed(_$t0: $1_string_String, _$t1: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $Mutation (Vec (int)); + var $t10: Vec (int); + var $t11: $Mutation (Vec (int)); + var $t12: Vec (int); + var $t13: Vec (int); + var $t0: $1_string_String; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume {:print "$at(181,21552,21553)"} true; + assume {:print "$track_local(81,19,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume {:print "$track_local(81,19,1):", $t1} $t1 == $t1; + + // $t3 := string::length($t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:17+20 + assume {:print "$at(181,21647,21667)"} true; + call $t3 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,21647,21667)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:41+21 + $t5 := 128; + assume $IsValid'u64'($t5); + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:38+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + assume {:print "$at(181,21639,21736)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 +L0: + + // $t7 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:84+20 + assume {:print "$at(181,21714,21734)"} true; + $t7 := 4; + assume $IsValid'u64'($t7); + + // $t8 := error::out_of_range($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:64+41 + call $t8 := $1_error_out_of_range($t7); + if ($abort_flag) { + assume {:print "$at(181,21694,21735)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + assume {:print "$at(181,21639,21736)"} true; + assume {:print "$track_abort(81,19):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:35+10 + assume {:print "$at(181,21772,21782)"} true; +L2: + + // $t2 := string::bytes($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:21+25 + assume {:print "$at(181,21758,21783)"} true; + call $t2 := $1_string_bytes($t0); + if ($abort_flag) { + assume {:print "$at(181,21758,21783)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:13+4 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t9 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:24+9 + assume {:print "$at(181,21808,21817)"} true; + $t9 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t10 := [58, 58] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:35+5 + $t10 := MakeVec2(58, 58); + assume $IsValid'vec'u8''($t10); + + // vector::append($t9, $t10) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + call $t9 := $1_vector_append'u8'($t9, $t10); + if ($abort_flag) { + assume {:print "$at(181,21793,21825)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + $t2 := $Dereference($t9); + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t11 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:24+9 + assume {:print "$at(181,21850,21859)"} true; + $t11 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t12 := string::bytes($t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:36+19 + call $t12 := $1_string_bytes($t1); + if ($abort_flag) { + assume {:print "$at(181,21862,21881)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // vector::append($t11, $t12) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + call $t11 := $1_vector_append'u8'($t11, $t12); + if ($abort_flag) { + assume {:print "$at(181,21835,21882)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + $t2 := $Dereference($t11); + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t13 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:592:9+4 + assume {:print "$at(181,21892,21896)"} true; + $t13 := $t2; + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:592:9+4 + assume {:print "$track_return(81,19,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun object_token::create_token_seed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+350 +procedure {:timeLimit 80} $1_object_token_create_token_seed$verify(_$t0: $1_string_String, _$t1: $1_string_String) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $Mutation (Vec (int)); + var $t10: Vec (int); + var $t11: $Mutation (Vec (int)); + var $t12: Vec (int); + var $t13: Vec (int); + var $t0: $1_string_String; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume {:print "$at(181,21552,21553)"} true; + assume $IsValid'$1_string_String'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume {:print "$track_local(81,19,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:587:5+1 + assume {:print "$track_local(81,19,1):", $t1} $t1 == $t1; + + // $t3 := string::length($t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:17+20 + assume {:print "$at(181,21647,21667)"} true; + call $t3 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(181,21647,21667)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:41+21 + $t5 := 128; + assume $IsValid'u64'($t5); + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:38+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + assume {:print "$at(181,21639,21736)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 +L0: + + // $t7 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:84+20 + assume {:print "$at(181,21714,21734)"} true; + $t7 := 4; + assume $IsValid'u64'($t7); + + // $t8 := error::out_of_range($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:64+41 + call $t8 := $1_error_out_of_range($t7); + if ($abort_flag) { + assume {:print "$at(181,21694,21735)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + assume {:print "$at(181,21639,21736)"} true; + assume {:print "$track_abort(81,19):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:588:9+97 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:35+10 + assume {:print "$at(181,21772,21782)"} true; +L2: + + // $t2 := string::bytes($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:21+25 + assume {:print "$at(181,21758,21783)"} true; + call $t2 := $1_string_bytes($t0); + if ($abort_flag) { + assume {:print "$at(181,21758,21783)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:589:13+4 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t9 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:24+9 + assume {:print "$at(181,21808,21817)"} true; + $t9 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t10 := [58, 58] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:35+5 + $t10 := MakeVec2(58, 58); + assume $IsValid'vec'u8''($t10); + + // vector::append($t9, $t10) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + call $t9 := $1_vector_append'u8'($t9, $t10); + if ($abort_flag) { + assume {:print "$at(181,21793,21825)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + $t2 := $Dereference($t9); + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:590:9+32 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t11 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:24+9 + assume {:print "$at(181,21850,21859)"} true; + $t11 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t12 := string::bytes($t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:36+19 + call $t12 := $1_string_bytes($t1); + if ($abort_flag) { + assume {:print "$at(181,21862,21881)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // vector::append($t11, $t12) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + call $t11 := $1_vector_append'u8'($t11, $t12); + if ($abort_flag) { + assume {:print "$at(181,21835,21882)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(81,19):", $t4} $t4 == $t4; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + $t2 := $Dereference($t11); + + // trace_local[seed]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:591:9+47 + assume {:print "$track_local(81,19,2):", $t2} $t2 == $t2; + + // $t13 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:592:9+4 + assume {:print "$at(181,21892,21896)"} true; + $t13 := $t2; + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:592:9+4 + assume {:print "$track_return(81,19,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; +L3: + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/object_token.move:593:5+1 + assume {:print "$at(181,21901,21902)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.spec.move:16:10+45 +function $1_util_spec_from_bytes'address'(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_util_spec_from_bytes'address'(bytes); +$IsValid'address'($$res))); + +// fun util::address_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:11:5+91 +procedure {:timeLimit 80} $1_util_address_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: Vec (int); + var $temp_0'address': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:11:5+1 + assume {:print "$at(114,418,419)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:11:5+1 + assume {:print "$track_local(83,0,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: util::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:12:9+17 + assume {:print "$at(114,486,503)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:12:9+17 + assume $IsValid'address'($t1); + + // assume Eq
($t1, util::spec_from_bytes
($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:12:9+17 + assume $IsEqual'address'($t1, $1_util_spec_from_bytes'address'($t0)); + + // $t1 := opaque end: util::from_bytes
($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:12:9+17 + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:12:9+17 + assume {:print "$track_return(83,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:13:5+1 + assume {:print "$at(114,508,509)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/util.move:13:5+1 + assume {:print "$at(114,508,509)"} true; + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:62:5+129 +function {:inline} $1_stc_transaction_timeout_config_$duration_seconds($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory: $Memory $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'): int { + (var config := $1_stc_transaction_timeout_config_$get_transaction_timeout_config($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory); config->$duration_seconds) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:49:5+187 +function {:inline} $1_stc_transaction_timeout_config_$get_transaction_timeout_config($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory: $Memory $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'): $1_stc_transaction_timeout_config_TransactionTimeoutConfig { + $1_on_chain_config_$get_by_address'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $1_system_addresses_$get_starcoin_framework()) +} + +// struct stc_transaction_timeout_config::TransactionTimeoutConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:13:5+123 +datatype $1_stc_transaction_timeout_config_TransactionTimeoutConfig { + $1_stc_transaction_timeout_config_TransactionTimeoutConfig($duration_seconds: int) +} +function {:inline} $Update'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_duration_seconds(s: $1_stc_transaction_timeout_config_TransactionTimeoutConfig, x: int): $1_stc_transaction_timeout_config_TransactionTimeoutConfig { + $1_stc_transaction_timeout_config_TransactionTimeoutConfig(x) +} +function $IsValid'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(s: $1_stc_transaction_timeout_config_TransactionTimeoutConfig): bool { + $IsValid'u64'(s->$duration_seconds) +} +function {:inline} $IsEqual'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'(s1: $1_stc_transaction_timeout_config_TransactionTimeoutConfig, s2: $1_stc_transaction_timeout_config_TransactionTimeoutConfig): bool { + s1 == s2 +} + +// fun stc_transaction_timeout_config::duration_seconds [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:62:5+129 +procedure {:inline 1} $1_stc_transaction_timeout_config_duration_seconds() returns ($ret0: int) +{ + // declare local variables + var $t0: $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $t1: $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $t2: int; + var $t3: int; + var $temp_0'$1_stc_transaction_timeout_config_TransactionTimeoutConfig': $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $temp_0'u64': int; + + // bytecode translation starts here + // $t1 := stc_transaction_timeout_config::get_transaction_timeout_config() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:63:22+32 + assume {:print "$at(98,2206,2238)"} true; + call $t1 := $1_stc_transaction_timeout_config_get_transaction_timeout_config(); + if ($abort_flag) { + assume {:print "$at(98,2206,2238)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(86,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[config]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:63:13+6 + assume {:print "$track_local(86,0,0):", $t1} $t1 == $t1; + + // $t3 := get_field.duration_seconds($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:64:9+23 + assume {:print "$at(98,2248,2271)"} true; + $t3 := $t1->$duration_seconds; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:64:9+23 + assume {:print "$track_return(86,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:65:5+1 + assume {:print "$at(98,2276,2277)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:65:5+1 + assume {:print "$at(98,2276,2277)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:65:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:65:5+1 + assume {:print "$at(98,2276,2277)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_transaction_timeout_config::get_transaction_timeout_config [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:49:5+187 +procedure {:inline 1} $1_stc_transaction_timeout_config_get_transaction_timeout_config() returns ($ret0: $1_stc_transaction_timeout_config_TransactionTimeoutConfig) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + var $temp_0'$1_stc_transaction_timeout_config_TransactionTimeoutConfig': $1_stc_transaction_timeout_config_TransactionTimeoutConfig; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:50:67+42 + assume {:print "$at(98,1793,1835)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(98,1793,1835)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(86,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := on_chain_config::get_by_address($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:50:9+101 + call $t2 := $1_on_chain_config_get_by_address'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'($t0); + if ($abort_flag) { + assume {:print "$at(98,1735,1836)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(86,1):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:50:9+101 + assume {:print "$track_return(86,1,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:51:5+1 + assume {:print "$at(98,1841,1842)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:51:5+1 + assume {:print "$at(98,1841,1842)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:51:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout_config.move:51:5+1 + assume {:print "$at(98,1841,1842)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun oracle_aggregator::latest_price_average_aggregator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+916 +procedure {:timeLimit 80} $1_oracle_aggregator_latest_price_average_aggregator$verify(_$t0: Vec (int), _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Vec ($1_oracle_DataRecord'u128'); + var $t7: Vec (int); + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: $1_oracle_DataRecord'u128'; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $Mutation (Vec ($1_oracle_DataRecord'u128')); + var $t23: $Mutation (Vec (int)); + var $t24: Vec (int); + var $t25: bool; + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: Vec (int); + var $t30: int; + var $t0: Vec (int); + var $t1: int; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+1 + assume {:print "$at(82,510,511)"} true; + assume $IsValid'vec'address''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16: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: oracle::OracleFeed<#0, u128>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'#0_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'#0_u128''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+916 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+1 + assume {:print "$track_local(89,0,0):", $t0} $t0 == $t0; + + // trace_local[updated_in]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:16:5+1 + assume {:print "$track_local(89,0,1):", $t1} $t1 == $t1; + + // $t9 := vector::length
($t0) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:20:19+21 + assume {:print "$at(82,669,690)"} true; + call $t9 := $1_vector_length'address'($t0); + if ($abort_flag) { + assume {:print "$at(82,669,690)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[len]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:20:13+3 + assume {:print "$track_local(89,0,4):", $t9} $t9 == $t9; + + // $t6 := oracle_price::read_records<#0>($t0) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:21:29+42 + assume {:print "$at(82,720,762)"} true; + call $t6 := $1_oracle_price_read_records'#0'($t0); + if ($abort_flag) { + assume {:print "$at(82,720,762)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[price_records]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:21:13+13 + assume {:print "$track_local(89,0,6):", $t6} $t6 == $t6; + + // $t7 := vector::empty() on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:22:22+15 + assume {:print "$at(82,785,800)"} true; + call $t7 := $1_vector_empty'u128'(); + if ($abort_flag) { + assume {:print "$at(82,785,800)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[prices]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:22:13+6 + assume {:print "$track_local(89,0,7):", $t7} $t7 == $t7; + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:23:17+1 + assume {:print "$at(82,818,819)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // trace_local[i]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:23:13+1 + assume {:print "$track_local(89,0,3):", $t11} $t11 == $t11; + + // $t12 := timestamp::now_milliseconds() on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:24:36+29 + assume {:print "$at(82,856,885)"} true; + call $t12 := $1_timestamp_now_milliseconds(); + if ($abort_flag) { + assume {:print "$at(82,856,885)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // $t13 := -($t12, $t1) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:24:66+1 + call $t13 := $Sub($t12, $t1); + if ($abort_flag) { + assume {:print "$at(82,886,887)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[expect_updated_after]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:24:13+20 + assume {:print "$track_local(89,0,2):", $t13} $t13 == $t13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume {:print "$at(82,915,916)"} true; +L5: + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume {:print "$at(82,915,916)"} true; + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u64'($t3); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($t6); + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t7; + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'vec'u128''($t7); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'bool'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'$1_oracle_DataRecord'u128''($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u64'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u128'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u64'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'u64'($t21); + + // $t22 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'vec'$1_oracle_DataRecord'u128'''($Dereference($t22)); + + // $t23 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume $IsValid'vec'u128''($Dereference($t23)); + + // trace_local[i]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume {:print "$info(): enter loop, variable(s) i, price_records, prices havocked and reassigned"} true; + assume {:print "$track_local(89,0,3):", $t3} $t3 == $t3; + + // trace_local[price_records]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume {:print "$track_local(89,0,6):", $t6} $t6 == $t6; + + // trace_local[prices]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume {:print "$track_local(89,0,7):", $t7} $t7 == $t7; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:16+1 + assume !$abort_flag; + + // $t14 := <($t3, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:18+1 + call $t14 := $Lt($t3, $t9); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:9+316 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:25:9+316 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:26:43+18 + assume {:print "$at(82,968,986)"} true; +L2: + + // $t22 := borrow_local($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:26:43+18 + assume {:print "$at(82,968,986)"} true; + $t22 := $Mutation($Local(6), EmptyVec(), $t6); + + // $t15 := vector::pop_back>($t22) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:26:26+36 + call $t15,$t22 := $1_vector_pop_back'$1_oracle_DataRecord'u128''($t22); + if ($abort_flag) { + assume {:print "$at(82,951,987)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // write_back[LocalRoot($t6)@]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:26:26+36 + $t6 := $Dereference($t22); + + // trace_local[price_records]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:26:26+36 + assume {:print "$track_local(89,0,6):", $t6} $t6 == $t6; + + // ($t16, $t17, $t18) := oracle::unpack_record($t15) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:27:49+29 + assume {:print "$at(82,1037,1066)"} true; + call $t16,$t17,$t18 := $1_oracle_unpack_record'u128'($t15); + if ($abort_flag) { + assume {:print "$at(82,1037,1066)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[updated_at]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:27:35+10 + assume {:print "$track_local(89,0,8):", $t18} $t18 == $t18; + + // trace_local[price]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:27:28+5 + assume {:print "$track_local(89,0,5):", $t17} $t17 == $t17; + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:27:18+8 + + // $t19 := >=($t18, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:28:28+2 + assume {:print "$at(82,1095,1097)"} true; + call $t19 := $Ge($t18, $t13); + + // if ($t19) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:28:13+110 + if ($t19) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:29:35+11 + assume {:print "$at(82,1156,1167)"} true; +L4: + + // $t23 := borrow_local($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:29:35+11 + assume {:print "$at(82,1156,1167)"} true; + $t23 := $Mutation($Local(7), EmptyVec(), $t7); + + // vector::push_back($t23, $t17) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:29:17+37 + call $t23 := $1_vector_push_back'u128'($t23, $t17); + if ($abort_flag) { + assume {:print "$at(82,1138,1175)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // write_back[LocalRoot($t7)@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:29:17+37 + $t7 := $Dereference($t23); + + // trace_local[prices]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:29:17+37 + assume {:print "$track_local(89,0,7):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:31:17+1 + assume {:print "$at(82,1208,1209)"} true; +L3: + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:31:21+1 + assume {:print "$at(82,1212,1213)"} true; + $t20 := 1; + assume $IsValid'u64'($t20); + + // $t21 := +($t3, $t20) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:31:19+1 + call $t21 := $AddU64($t3, $t20); + if ($abort_flag) { + assume {:print "$at(82,1210,1211)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_local[i]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:31:13+1 + assume {:print "$track_local(89,0,3):", $t21} $t21 == $t21; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:31:22+1 + goto L9; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:35+7 + assume {:print "$at(82,1328,1335)"} true; +L0: + + // $t24 := copy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:35+7 + assume {:print "$at(82,1328,1335)"} true; + $t24 := $t7; + + // $t25 := vector::is_empty($t24) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:18+25 + call $t25 := $1_vector_is_empty'u128'($t24); + if ($abort_flag) { + assume {:print "$at(82,1311,1336)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // $t26 := !($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:17+1 + call $t26 := $Not($t25); + + // if ($t26) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 + assume {:print "$at(82,1302,1386)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:66+25 +L6: + + // $t27 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:66+25 + assume {:print "$at(82,1359,1384)"} true; + $t27 := 101; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_state($t27) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:45+47 + call $t28 := $1_error_invalid_state($t27); + if ($abort_flag) { + assume {:print "$at(82,1338,1385)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 + assume {:print "$at(82,1302,1386)"} true; + assume {:print "$track_abort(89,0):", $t28} $t28 == $t28; + + // $t10 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 + $t10 := $t28; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:34:9+84 + goto L11; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:25+7 + assume {:print "$at(82,1412,1419)"} true; +L8: + + // $t29 := copy($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:25+7 + assume {:print "$at(82,1412,1419)"} true; + $t29 := $t7; + + // $t30 := math_fixed::avg($t29) on_abort goto L11 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:9+24 + call $t30 := $1_math_fixed_avg($t29); + if ($abort_flag) { + assume {:print "$at(82,1396,1420)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(89,0):", $t10} $t10 == $t10; + goto L11; + } + + // trace_return[0]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:9+24 + assume {:print "$track_return(89,0,0):", $t30} $t30 == $t30; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:9+24 + goto L10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:25+7 + // Loop invariant checking block for the loop started with header: L5 +L9: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:35:25+7 + assume {:print "$at(82,1412,1419)"} true; + assume false; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:36:5+1 + assume {:print "$at(82,1425,1426)"} true; +L10: + + // return $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:36:5+1 + assume {:print "$at(82,1425,1426)"} true; + $ret0 := $t30; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:36:5+1 +L11: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_aggregator.move:36:5+1 + assume {:print "$at(82,1425,1426)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// struct oracle_stc_usd::STCUSD at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:6:5+38 +datatype $1_oracle_stc_usd_STCUSD { + $1_oracle_stc_usd_STCUSD($dummy_field: bool) +} +function {:inline} $Update'$1_oracle_stc_usd_STCUSD'_dummy_field(s: $1_oracle_stc_usd_STCUSD, x: bool): $1_oracle_stc_usd_STCUSD { + $1_oracle_stc_usd_STCUSD(x) +} +function $IsValid'$1_oracle_stc_usd_STCUSD'(s: $1_oracle_stc_usd_STCUSD): bool { + $IsValid'bool'(s->$dummy_field) +} +function {:inline} $IsEqual'$1_oracle_stc_usd_STCUSD'(s1: $1_oracle_stc_usd_STCUSD, s2: $1_oracle_stc_usd_STCUSD): bool { + s1 == s2 +} + +// fun oracle_stc_usd::read [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:12:5+91 +procedure {:timeLimit 80} $1_oracle_stc_usd_read$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:12:5+1 + assume {:print "$at(84,337,338)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:12:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:12:5+1 + assume {:print "$track_local(90,0,0):", $t0} $t0 == $t0; + + // $t1 := oracle_price::read($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:13:9+35 + assume {:print "$at(84,387,422)"} true; + call $t1 := $1_oracle_price_read'$1_oracle_stc_usd_STCUSD'($t0); + if ($abort_flag) { + assume {:print "$at(84,387,422)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(90,0):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:13:9+35 + assume {:print "$track_return(90,0,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:14:5+1 + assume {:print "$at(84,427,428)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:14:5+1 + assume {:print "$at(84,427,428)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:14:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:14:5+1 + assume {:print "$at(84,427,428)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_stc_usd::register [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:8:5+102 +procedure {:timeLimit 80} $1_oracle_stc_usd_register$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:8:5+1 + assume {:print "$at(84,229,230)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: oracle::OracleInfo: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:8:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo'_$memory, $a_0); + ($IsValid'$1_oracle_OracleInfo'$1_oracle_stc_usd_STCUSD_$1_oracle_price_PriceOracleInfo''($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:8:5+1 + assume {:print "$track_local(90,3,0):", $t0} $t0 == $t0; + + // $t1 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:9:55+1 + assume {:print "$at(84,322,323)"} true; + $t1 := 6; + assume $IsValid'u8'($t1); + + // oracle_price::register_oracle($t0, $t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:9:9+48 + call $1_oracle_price_register_oracle'$1_oracle_stc_usd_STCUSD'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(84,276,324)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(90,3):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:10:5+1 + assume {:print "$at(84,330,331)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:10:5+1 + assume {:print "$at(84,330,331)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:10:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:10:5+1 + assume {:print "$at(84,330,331)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_stc_usd::read_record [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:16:5+117 +procedure {:timeLimit 80} $1_oracle_stc_usd_read_record$verify(_$t0: int) returns ($ret0: $1_oracle_DataRecord'u128') +{ + // declare local variables + var $t1: $1_oracle_DataRecord'u128'; + var $t2: int; + var $t0: int; + var $temp_0'$1_oracle_DataRecord'u128'': $1_oracle_DataRecord'u128'; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:16:5+1 + assume {:print "$at(84,434,435)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: oracle::OracleFeed: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:16:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''($rsc)))); + + // trace_local[ds_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:16:5+1 + assume {:print "$track_local(90,1,0):", $t0} $t0 == $t0; + + // $t1 := oracle_price::read_record($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:17:9+42 + assume {:print "$at(84,503,545)"} true; + call $t1 := $1_oracle_price_read_record'$1_oracle_stc_usd_STCUSD'($t0); + if ($abort_flag) { + assume {:print "$at(84,503,545)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(90,1):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:17:9+42 + assume {:print "$track_return(90,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:18:5+1 + assume {:print "$at(84,550,551)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:18:5+1 + assume {:print "$at(84,550,551)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:18:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:18:5+1 + assume {:print "$at(84,550,551)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun oracle_stc_usd::read_records [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:20:5+138 +procedure {:timeLimit 80} $1_oracle_stc_usd_read_records$verify(_$t0: Vec (int)) returns ($ret0: Vec ($1_oracle_DataRecord'u128')) +{ + // declare local variables + var $t1: Vec ($1_oracle_DataRecord'u128'); + var $t2: int; + var $t0: Vec (int); + var $temp_0'vec'$1_oracle_DataRecord'u128''': Vec ($1_oracle_DataRecord'u128'); + var $temp_0'vec'address'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:20:5+1 + assume {:print "$at(84,557,558)"} true; + assume $IsValid'vec'address''($t0); + + // assume forall $rsc: oracle::OracleFeed: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:20:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0)}(var $rsc := $ResourceValue($1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128'_$memory, $a_0); + ($IsValid'$1_oracle_OracleFeed'$1_oracle_stc_usd_STCUSD_u128''($rsc)))); + + // trace_local[ds_addrs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:20:5+1 + assume {:print "$track_local(90,2,0):", $t0} $t0 == $t0; + + // $t1 := oracle_price::read_records($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:21:9+44 + assume {:print "$at(84,645,689)"} true; + call $t1 := $1_oracle_price_read_records'$1_oracle_stc_usd_STCUSD'($t0); + if ($abort_flag) { + assume {:print "$at(84,645,689)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(90,2):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:21:9+44 + assume {:print "$track_return(90,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:22:5+1 + assume {:print "$at(84,694,695)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:22:5+1 + assume {:print "$at(84,694,695)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:22:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/oracle_stc_usd.move:22:5+1 + assume {:print "$at(84,694,695)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:14:10+120 +function {:inline} $1_pool_u64_unbound_spec_contains(pool: $1_pool_u64_unbound_Pool, shareholder: int): bool { + $1_table_with_length_spec_contains'address_u128'(pool->$shares, shareholder) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:23:10+213 +function {:inline} $1_pool_u64_unbound_spec_shares(pool: $1_pool_u64_unbound_Pool, shareholder: int): int { + (if ($1_pool_u64_unbound_spec_contains(pool, shareholder)) then ($1_table_with_length_spec_get'address_u128'(pool->$shares, shareholder)) else (0)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:87:10+311 +function {:inline} $1_pool_u64_unbound_spec_amount_to_shares_with_total_coins(pool: $1_pool_u64_unbound_Pool, coins_amount: int, total_coins: int): int { + (if (($IsEqual'u64'(pool->$total_coins, 0) || $IsEqual'u128'(pool->$total_shares, 0))) then ((coins_amount * pool->$scaling_factor)) else (((coins_amount * pool->$total_shares) div total_coins))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:111:10+266 +function {:inline} $1_pool_u64_unbound_spec_shares_to_amount_with_total_coins(pool: $1_pool_u64_unbound_Pool, shares: int, total_coins: int): int { + (if (($IsEqual'u64'(pool->$total_coins, 0) || $IsEqual'u128'(pool->$total_shares, 0))) then (0) else (((shares * total_coins) div pool->$total_shares))) +} + +// struct pool_u64_unbound::Pool at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:39:5+375 +datatype $1_pool_u64_unbound_Pool { + $1_pool_u64_unbound_Pool($total_coins: int, $total_shares: int, $shares: Table int (int), $scaling_factor: int) +} +function {:inline} $Update'$1_pool_u64_unbound_Pool'_total_coins(s: $1_pool_u64_unbound_Pool, x: int): $1_pool_u64_unbound_Pool { + $1_pool_u64_unbound_Pool(x, s->$total_shares, s->$shares, s->$scaling_factor) +} +function {:inline} $Update'$1_pool_u64_unbound_Pool'_total_shares(s: $1_pool_u64_unbound_Pool, x: int): $1_pool_u64_unbound_Pool { + $1_pool_u64_unbound_Pool(s->$total_coins, x, s->$shares, s->$scaling_factor) +} +function {:inline} $Update'$1_pool_u64_unbound_Pool'_shares(s: $1_pool_u64_unbound_Pool, x: Table int (int)): $1_pool_u64_unbound_Pool { + $1_pool_u64_unbound_Pool(s->$total_coins, s->$total_shares, x, s->$scaling_factor) +} +function {:inline} $Update'$1_pool_u64_unbound_Pool'_scaling_factor(s: $1_pool_u64_unbound_Pool, x: int): $1_pool_u64_unbound_Pool { + $1_pool_u64_unbound_Pool(s->$total_coins, s->$total_shares, s->$shares, x) +} +function $IsValid'$1_pool_u64_unbound_Pool'(s: $1_pool_u64_unbound_Pool): bool { + $IsValid'u64'(s->$total_coins) + && $IsValid'u128'(s->$total_shares) + && $IsValid'$1_table_with_length_TableWithLength'address_u128''(s->$shares) + && $IsValid'u64'(s->$scaling_factor) +} +function {:inline} $IsEqual'$1_pool_u64_unbound_Pool'(s1: $1_pool_u64_unbound_Pool, s2: $1_pool_u64_unbound_Pool): bool { + s1 == s2 +} + +// fun pool_u64_unbound::contains [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+119 +procedure {:inline 1} $1_pool_u64_unbound_contains(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume {:print "$at(167,3621,3622)"} true; + assume {:print "$track_local(92,5,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume {:print "$track_local(92,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:25+12 + assume {:print "$at(167,3708,3720)"} true; + $t2 := $t0->$shares; + + // $t3 := table_with_length::contains($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:9+42 + call $t3 := $1_table_with_length_contains'address_u128'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(167,3692,3734)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:9+42 + assume {:print "$track_return(92,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 + assume {:print "$at(167,3739,3740)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 + assume {:print "$at(167,3739,3740)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 + assume {:print "$at(167,3739,3740)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+119 +procedure {:timeLimit 80} $1_pool_u64_unbound_contains$verify(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume {:print "$at(167,3621,3622)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume $IsValid'address'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume {:print "$track_local(92,5,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:94:5+1 + assume {:print "$track_local(92,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:25+12 + assume {:print "$at(167,3708,3720)"} true; + $t2 := $t0->$shares; + + // $t3 := table_with_length::contains($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:9+42 + call $t3 := $1_table_with_length_contains'address_u128'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(167,3692,3734)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,5):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:95:9+42 + assume {:print "$track_return(92,5,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 + assume {:print "$at(167,3739,3740)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:19:9+16 + assume {:print "$at(168,596,612)"} true; + assert {:msg "assert_failed(168,596,612): function does not abort under this condition"} + !false; + + // assert Eq($t3, pool_u64_unbound::spec_contains($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:20:9+51 + assume {:print "$at(168,621,672)"} true; + assert {:msg "assert_failed(168,621,672): post-condition does not hold"} + $IsEqual'bool'($t3, $1_pool_u64_unbound_spec_contains($t0, $t1)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:20:9+51 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:96:5+1 + assume {:print "$at(167,3739,3740)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:18:5+147 + assume {:print "$at(168,531,678)"} true; + assert {:msg "assert_failed(168,531,678): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:18:5+147 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::destroy_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:72:5+324 +procedure {:timeLimit 80} $1_pool_u64_unbound_destroy_empty$verify(_$t0: $1_pool_u64_unbound_Pool) returns () +{ + // declare local variables + var $t1: Table int (int); + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: Table int (int); + var $t11: int; + var $t0: $1_pool_u64_unbound_Pool; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'$1_table_with_length_TableWithLength'address_u128'': Table int (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:72:5+1 + assume {:print "$at(167,2954,2955)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:72:5+1 + assume {:print "$track_local(92,9,0):", $t0} $t0 == $t0; + + // $t2 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:17+16 + assume {:print "$at(167,3009,3025)"} true; + $t2 := $t0->$total_coins; + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:37+1 + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:34+2 + $t4 := $IsEqual'u64'($t2, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 + assume {:print "$at(167,3001,3073)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:61+18 +L0: + + // $t5 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:61+18 + assume {:print "$at(167,3053,3071)"} true; + $t5 := 3; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_state($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:40+40 + call $t6 := $1_error_invalid_state($t5); + if ($abort_flag) { + assume {:print "$at(167,3032,3072)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(92,9):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 + assume {:print "$at(167,3001,3073)"} true; + assume {:print "$track_abort(92,9):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 + $t7 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:73:9+72 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:79:13+4 + assume {:print "$at(167,3214,3218)"} true; +L2: + + // ($t8, $t9, $t10, $t11) := unpack pool_u64_unbound::Pool($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:74:13+124 + assume {:print "$at(167,3087,3211)"} true; + $t8 := $t0->$total_coins; + $t9 := $t0->$total_shares; + $t10 := $t0->$shares; + $t11 := $t0->$scaling_factor; + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:78:29+1 + assume {:print "$at(167,3199,3200)"} true; + + // trace_local[shares]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:77:13+6 + assume {:print "$at(167,3163,3169)"} true; + assume {:print "$track_local(92,9,1):", $t10} $t10 == $t10; + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:76:27+1 + assume {:print "$at(167,3148,3149)"} true; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:75:26+1 + assume {:print "$at(167,3119,3120)"} true; + + // table_with_length::destroy_empty($t10) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:80:9+43 + assume {:print "$at(167,3228,3271)"} true; + call $1_table_with_length_destroy_empty'address_u128'($t10); + if ($abort_flag) { + assume {:print "$at(167,3228,3271)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(92,9):", $t7} $t7 == $t7; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:81:5+1 + assume {:print "$at(167,3277,3278)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:81:5+1 + assume {:print "$at(167,3277,3278)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:81:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:81:5+1 + assume {:print "$at(167,3277,3278)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::new [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:49:5+138 +procedure {:inline 1} $1_pool_u64_unbound_new() returns ($ret0: $1_pool_u64_unbound_Pool) +{ + // declare local variables + var $t0: int; + var $t1: $1_pool_u64_unbound_Pool; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + + // bytecode translation starts here + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:36+1 + assume {:print "$at(167,2426,2427)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := pool_u64_unbound::create_with_scaling_factor($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:9+29 + call $t1 := $1_pool_u64_unbound_create_with_scaling_factor($t0); + if ($abort_flag) { + assume {:print "$at(167,2399,2428)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,11):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:9+29 + assume {:print "$track_return(92,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::new [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:49:5+138 +procedure {:timeLimit 80} $1_pool_u64_unbound_new$verify() returns ($ret0: $1_pool_u64_unbound_Pool) +{ + // declare local variables + var $t0: int; + var $t1: $1_pool_u64_unbound_Pool; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:36+1 + assume {:print "$at(167,2426,2427)"} true; + $t0 := 1; + assume $IsValid'u64'($t0); + + // $t1 := pool_u64_unbound::create_with_scaling_factor($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:9+29 + call $t1 := $1_pool_u64_unbound_create_with_scaling_factor($t0); + if ($abort_flag) { + assume {:print "$at(167,2399,2428)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,11):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:51:9+29 + assume {:print "$track_return(92,11,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:52:5+1 + assume {:print "$at(167,2433,2434)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:57:5+47 +procedure {:timeLimit 80} $1_pool_u64_unbound_create$verify() returns ($ret0: $1_pool_u64_unbound_Pool) +{ + // declare local variables + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := pool_u64_unbound::new() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:58:9+5 + assume {:print "$at(167,2560,2565)"} true; + call $t0 := $1_pool_u64_unbound_new(); + if ($abort_flag) { + assume {:print "$at(167,2560,2565)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(92,6):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:58:9+5 + assume {:print "$track_return(92,6,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:59:5+1 + assume {:print "$at(167,2570,2571)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:59:5+1 + assume {:print "$at(167,2570,2571)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:59:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:59:5+1 + assume {:print "$at(167,2570,2571)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::to_u128 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:263:5+57 +procedure {:inline 1} $1_pool_u64_unbound_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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:263:5+1 + assume {:print "$at(167,11364,11365)"} true; + assume {:print "$track_local(92,18,0):", $t0} $t0 == $t0; + + // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:264:9+13 + assume {:print "$at(167,11402,11415)"} true; + call $t1 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(167,11402,11415)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,18):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:264:9+13 + assume {:print "$track_return(92,18,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 + assume {:print "$at(167,11420,11421)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 + assume {:print "$at(167,11420,11421)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 + assume {:print "$at(167,11420,11421)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::to_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:263:5+57 +procedure {:timeLimit 80} $1_pool_u64_unbound_to_u128$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:263:5+1 + assume {:print "$at(167,11364,11365)"} true; + assume $IsValid'u64'($t0); + + // trace_local[num]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:263:5+1 + assume {:print "$track_local(92,18,0):", $t0} $t0 == $t0; + + // $t1 := (u128)($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:264:9+13 + assume {:print "$at(167,11402,11415)"} true; + call $t1 := $CastU128($t0); + if ($abort_flag) { + assume {:print "$at(167,11402,11415)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,18):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:264:9+13 + assume {:print "$track_return(92,18,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 + assume {:print "$at(167,11420,11421)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:183:9+16 + assume {:print "$at(168,8366,8382)"} true; + assert {:msg "assert_failed(168,8366,8382): function does not abort under this condition"} + !false; + + // assert Eq($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:184:9+22 + assume {:print "$at(168,8391,8413)"} true; + assert {:msg "assert_failed(168,8391,8413): post-condition does not hold"} + $IsEqual'u128'($t1, $t0); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:184:9+22 + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:265:5+1 + assume {:print "$at(167,11420,11421)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:182:5+92 + assume {:print "$at(168,8327,8419)"} true; + assert {:msg "assert_failed(168,8327,8419): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:182:5+92 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::to_u256 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:267:5+58 +procedure {:inline 1} $1_pool_u64_unbound_to_u256(_$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'u256': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[num]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:267:5+1 + assume {:print "$at(167,11427,11428)"} true; + assume {:print "$track_local(92,19,0):", $t0} $t0 == $t0; + + // $t1 := (u256)($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:268:9+13 + assume {:print "$at(167,11466,11479)"} true; + call $t1 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(167,11466,11479)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,19):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:268:9+13 + assume {:print "$track_return(92,19,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 + assume {:print "$at(167,11484,11485)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 + assume {:print "$at(167,11484,11485)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 + assume {:print "$at(167,11484,11485)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::to_u256 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:267:5+58 +procedure {:timeLimit 80} $1_pool_u64_unbound_to_u256$verify(_$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'u256': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:267:5+1 + assume {:print "$at(167,11427,11428)"} true; + assume $IsValid'u128'($t0); + + // trace_local[num]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:267:5+1 + assume {:print "$track_local(92,19,0):", $t0} $t0 == $t0; + + // $t1 := (u256)($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:268:9+13 + assume {:print "$at(167,11466,11479)"} true; + call $t1 := $CastU256($t0); + if ($abort_flag) { + assume {:print "$at(167,11466,11479)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(92,19):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:268:9+13 + assume {:print "$track_return(92,19,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 + assume {:print "$at(167,11484,11485)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:188:9+16 + assume {:print "$at(168,8465,8481)"} true; + assert {:msg "assert_failed(168,8465,8481): function does not abort under this condition"} + !false; + + // assert Eq($t1, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:189:9+22 + assume {:print "$at(168,8490,8512)"} true; + assert {:msg "assert_failed(168,8490,8512): post-condition does not hold"} + $IsEqual'u256'($t1, $t0); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:189:9+22 + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:269:5+1 + assume {:print "$at(167,11484,11485)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:187:5+93 + assume {:print "$at(168,8425,8518)"} true; + assert {:msg "assert_failed(168,8425,8518): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:187:5+93 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::balance [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:108:5+161 +procedure {:timeLimit 80} $1_pool_u64_unbound_balance$verify(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:108:5+1 + assume {:print "$at(167,4084,4085)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:108:5+1 + assume $IsValid'address'($t1); + + // assume Identical($t3, pool_u64_unbound::spec_shares($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:38:9+44 + assume {:print "$at(168,1120,1164)"} true; + assume ($t3 == $1_pool_u64_unbound_spec_shares($t0, $t1)); + + // assume Identical($t4, select pool_u64_unbound::Pool.total_coins($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:39:9+35 + assume {:print "$at(168,1173,1208)"} true; + assume ($t4 == $t0->$total_coins); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:108:5+1 + assume {:print "$at(167,4084,4085)"} true; + assume {:print "$track_local(92,3,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:108:5+1 + assume {:print "$track_local(92,3,1):", $t1} $t1 == $t1; + + // $t5 := pool_u64_unbound::shares($t0, $t1) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:109:26+25 + assume {:print "$at(167,4170,4195)"} true; + call $t5 := $1_pool_u64_unbound_shares($t0, $t1); + if ($abort_flag) { + assume {:print "$at(167,4170,4195)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(92,3):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[num_shares]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:109:13+10 + assume {:print "$track_local(92,3,2):", $t5} $t5 == $t5; + + // $t7 := pool_u64_unbound::shares_to_amount($t0, $t5) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:110:9+34 + assume {:print "$at(167,4205,4239)"} true; + call $t7 := $1_pool_u64_unbound_shares_to_amount($t0, $t5); + if ($abort_flag) { + assume {:print "$at(167,4205,4239)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(92,3):", $t6} $t6 == $t6; + goto L2; + } + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:110:9+34 + assume {:print "$track_return(92,3,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:111:5+1 + assume {:print "$at(167,4244,4245)"} true; +L1: + + // assert Not(And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t3, $t4), select pool_u64_unbound::Pool.total_shares($t0)), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:40:9+112 + assume {:print "$at(168,1217,1329)"} true; + assert {:msg "assert_failed(168,1217,1329): function does not abort under this condition"} + !((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t3 * $t4) div $t0->$total_shares) > 18446744073709551615)); + + // assert Eq($t7, pool_u64_unbound::spec_shares_to_amount_with_total_coins($t0, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:41:9+84 + assume {:print "$at(168,1338,1422)"} true; + assert {:msg "assert_failed(168,1338,1422): post-condition does not hold"} + $IsEqual'u64'($t7, $1_pool_u64_unbound_spec_shares_to_amount_with_total_coins($t0, $t3, $t4)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:41:9+84 + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:111:5+1 + assume {:print "$at(167,4244,4245)"} true; +L2: + + // assert And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t3, $t4), select pool_u64_unbound::Pool.total_shares($t0)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:37:5+371 + assume {:print "$at(168,1057,1428)"} true; + assert {:msg "assert_failed(168,1057,1428): abort not covered by any of the `aborts_if` clauses"} + ((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t3 * $t4) div $t0->$total_shares) > 18446744073709551615)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:37:5+371 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::add_shares [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+647 +procedure {:inline 1} $1_pool_u64_unbound_add_shares(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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_unbound_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: $Mutation (Table int (int)); + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t8, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:59:9+64 + assume {:print "$at(168,2258,2322)"} true; + assume ($t8 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t9, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:68:9+64 + assume {:print "$at(168,2566,2630)"} true; + assume ($t9 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t10, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:69:9+63 + assume {:print "$at(168,2639,2702)"} true; + assume ($t10 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t11, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:78:9+64 + assume {:print "$at(168,2901,2965)"} true; + assume ($t11 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t12, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:79:9+63 + assume {:print "$at(168,2974,3037)"} true; + assume ($t12 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$at(167,5461,5462)"} true; + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$track_local(92,0,1):", $t1} $t1 == $t1; + + // trace_local[new_shares]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$track_local(92,0,2):", $t2} $t2 == $t2; + + // $t13 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:21+19 + assume {:print "$at(167,5561,5580)"} true; + $t13 := $Dereference($t0); + + // $t14 := pool_u64_unbound::contains($t13, $t1) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:13+27 + call $t14 := $1_pool_u64_unbound_contains($t13, $t1); + if ($abort_flag) { + assume {:print "$at(167,5553,5580)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:58+4 + assume {:print "$at(167,5641,5645)"} true; +L1: + + // $t16 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:53+16 + assume {:print "$at(167,5636,5652)"} true; + $t16 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t17 := table_with_length::borrow_mut($t16, $t1) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:35+48 + call $t17,$t16 := $1_table_with_length_borrow_mut'address_u128'($t16, $t1); + if ($abort_flag) { + assume {:print "$at(167,5618,5666)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // trace_local[existing_shares]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:17+15 + $temp_0'u128' := $Dereference($t17); + assume {:print "$track_local(92,0,7):", $temp_0'u128'} $temp_0'u128' == $temp_0'u128'; + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:142:34+16 + assume {:print "$at(167,5701,5717)"} true; + $t18 := $Dereference($t17); + + // trace_local[current_shares]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:142:17+14 + assume {:print "$track_local(92,0,6):", $t18} $t18 == $t18; + + // $t19 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:21+8 + assume {:print "$at(167,5739,5747)"} true; + $t19 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t19); + + // $t20 := -($t19, $t18) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:30+1 + call $t20 := $Sub($t19, $t18); + if ($abort_flag) { + assume {:print "$at(167,5748,5749)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // $t21 := >=($t20, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:47+2 + call $t21 := $Ge($t20, $t2); + + // if ($t21) goto L3 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + if ($t21) { goto L3; } else { goto L12; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 +L2: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // drop($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + + // $t22 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:86+28 + $t22 := 5; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:62+53 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(167,5780,5833)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + assume {:print "$track_abort(92,0):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + $t15 := $t23; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + goto L11; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:32+14 + assume {:print "$at(167,5868,5882)"} true; +L4: + + // $t24 := +($t18, $t2) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:47+1 + assume {:print "$at(167,5883,5884)"} true; + call $t24 := $AddU128($t18, $t2); + if ($abort_flag) { + assume {:print "$at(167,5883,5884)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // write_ref($t17, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:13+46 + $t17 := $UpdateMutation($t17, $t24); + + // $t5 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + assume {:print "$at(167,5909,5925)"} true; + $t5 := $Dereference($t17); + + // write_back[Reference($t16)[]]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec($t17->p, LenVec($t16->p)), $Dereference($t17))); + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t16))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:20+10 + assume {:print "$at(167,5945,5955)"} true; +L0: + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:33+1 + assume {:print "$at(167,5958,5959)"} true; + $t25 := 0; + assume $IsValid'u128'($t25); + + // $t26 := >($t2, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:31+1 + call $t26 := $Gt($t2, $t25); + + // if ($t26) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:29+4 + assume {:print "$at(167,5991,5995)"} true; +L7: + + // $t27 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:24+16 + assume {:print "$at(167,5986,6002)"} true; + $t27 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // table_with_length::add($t27, $t1, $t2) on_abort goto L11 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + call $t27 := $1_table_with_length_add'address_u128'($t27, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,5975,6028)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(92,0):", $t15} $t15 == $t15; + goto L11; + } + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t27))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + assume {:print "$at(167,5941,6102)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + assume {:print "$at(167,5941,6102)"} true; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 +L8: + + // $t5 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + $t5 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 +L5: + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + assume {:print "$track_return(92,0,0):", $t5} $t5 == $t5; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + goto L10; + + // label L9 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L2 at :1:1+10 + goto L2; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 + assume {:print "$at(167,6107,6108)"} true; +L10: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 + assume {:print "$at(167,6107,6108)"} true; + $ret0 := $t5; + $ret1 := $t0; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 +L11: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 + assume {:print "$at(167,6107,6108)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun pool_u64_unbound::add_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+647 +procedure {:timeLimit 80} $1_pool_u64_unbound_add_shares$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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_unbound_Pool; + var $t14: $1_pool_u64_unbound_Pool; + var $t15: bool; + var $t16: int; + var $t17: $Mutation (Table int (int)); + var $t18: $Mutation (int); + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: $Mutation (Table int (int)); + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$at(167,5461,5462)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume $IsValid'u128'($t2); + + // assume Identical($t8, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:59:9+64 + assume {:print "$at(168,2258,2322)"} true; + assume ($t8 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t9, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:68:9+64 + assume {:print "$at(168,2566,2630)"} true; + assume ($t9 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t10, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:69:9+63 + assume {:print "$at(168,2639,2702)"} true; + assume ($t10 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t11, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:78:9+64 + assume {:print "$at(168,2901,2965)"} true; + assume ($t11 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t12, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:79:9+63 + assume {:print "$at(168,2974,3037)"} true; + assume ($t12 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // $t13 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$at(167,5461,5462)"} true; + $t13 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$track_local(92,0,1):", $t1} $t1 == $t1; + + // trace_local[new_shares]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:139:5+1 + assume {:print "$track_local(92,0,2):", $t2} $t2 == $t2; + + // $t14 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:21+19 + assume {:print "$at(167,5561,5580)"} true; + $t14 := $Dereference($t0); + + // $t15 := pool_u64_unbound::contains($t14, $t1) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:13+27 + call $t15 := $1_pool_u64_unbound_contains($t14, $t1); + if ($abort_flag) { + assume {:print "$at(167,5553,5580)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:58+4 + assume {:print "$at(167,5641,5645)"} true; +L1: + + // $t17 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:53+16 + assume {:print "$at(167,5636,5652)"} true; + $t17 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t18 := table_with_length::borrow_mut($t17, $t1) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:35+48 + call $t18,$t17 := $1_table_with_length_borrow_mut'address_u128'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(167,5618,5666)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // trace_local[existing_shares]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:141:17+15 + $temp_0'u128' := $Dereference($t18); + assume {:print "$track_local(92,0,7):", $temp_0'u128'} $temp_0'u128' == $temp_0'u128'; + + // $t19 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:142:34+16 + assume {:print "$at(167,5701,5717)"} true; + $t19 := $Dereference($t18); + + // trace_local[current_shares]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:142:17+14 + assume {:print "$track_local(92,0,6):", $t19} $t19 == $t19; + + // $t20 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:21+8 + assume {:print "$at(167,5739,5747)"} true; + $t20 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t20); + + // $t21 := -($t20, $t19) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:30+1 + call $t21 := $Sub($t20, $t19); + if ($abort_flag) { + assume {:print "$at(167,5748,5749)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // $t22 := >=($t21, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:47+2 + call $t22 := $Ge($t21, $t2); + + // if ($t22) goto L3 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + if ($t22) { goto L3; } else { goto L12; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 +L2: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // drop($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + + // $t23 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:86+28 + $t23 := 5; + assume $IsValid'u64'($t23); + + // $t24 := error::invalid_argument($t23) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:62+53 + call $t24 := $1_error_invalid_argument($t23); + if ($abort_flag) { + assume {:print "$at(167,5780,5833)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + assume {:print "$at(167,5731,5834)"} true; + assume {:print "$track_abort(92,0):", $t24} $t24 == $t24; + + // $t16 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + $t16 := $t24; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:143:13+103 + goto L11; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:32+14 + assume {:print "$at(167,5868,5882)"} true; +L4: + + // $t25 := +($t19, $t2) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:47+1 + assume {:print "$at(167,5883,5884)"} true; + call $t25 := $AddU128($t19, $t2); + if ($abort_flag) { + assume {:print "$at(167,5883,5884)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // write_ref($t18, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:145:13+46 + $t18 := $UpdateMutation($t18, $t25); + + // $t5 := read_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + assume {:print "$at(167,5909,5925)"} true; + $t5 := $Dereference($t18); + + // write_back[Reference($t17)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $t17 := $UpdateMutation($t17, UpdateTable($Dereference($t17), ReadVec($t18->p, LenVec($t17->p)), $Dereference($t18))); + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t17))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:146:13+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:20+10 + assume {:print "$at(167,5945,5955)"} true; +L0: + + // $t26 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:33+1 + assume {:print "$at(167,5958,5959)"} true; + $t26 := 0; + assume $IsValid'u128'($t26); + + // $t27 := >($t2, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:31+1 + call $t27 := $Gt($t2, $t26); + + // if ($t27) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + if ($t27) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:29+4 + assume {:print "$at(167,5991,5995)"} true; +L7: + + // $t28 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:24+16 + assume {:print "$at(167,5986,6002)"} true; + $t28 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // table_with_length::add($t28, $t1, $t2) on_abort goto L11 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + call $t28 := $1_table_with_length_add'address_u128'($t28, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,5975,6028)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(92,0):", $t16} $t16 == $t16; + goto L11; + } + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t28))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:148:13+53 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + assume {:print "$at(167,5941,6102)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 + assume {:print "$at(167,5941,6102)"} true; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:147:16+161 +L8: + + // $t5 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + $t5 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 +L5: + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + assume {:print "$track_return(92,0,0):", $t5} $t5 == $t5; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,0,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:140:9+553 + assume {:print "$at(167,5549,6102)"} true; + goto L10; + + // label L9 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L9: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L2 at :1:1+10 + goto L2; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 + assume {:print "$at(167,6107,6108)"} true; +L10: + + // assert Not(And($t9, Gt(Add($t10, $t2), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:71:9+63 + assume {:print "$at(168,2712,2775)"} true; + assert {:msg "assert_failed(168,2712,2775): function does not abort under this condition"} + !($t9 && (($t10 + $t2) > 340282366920938463463374607431768211455)); + + // assert Implies($t11, Eq>(select pool_u64_unbound::Pool.shares($t0), table_with_length::spec_set(select pool_u64_unbound::Pool.shares($t13), $t1, Add($t12, $t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:81:9+126 + assume {:print "$at(168,3047,3173)"} true; + assert {:msg "assert_failed(168,3047,3173): post-condition does not hold"} + ($t11 ==> $IsEqual'$1_table_with_length_TableWithLength'address_u128''($Dereference($t0)->$shares, $1_table_with_length_spec_set'address_u128'($t13->$shares, $t1, ($t12 + $t2)))); + + // assert Implies(And(Not($t11), Gt($t2, 0)), Eq>(select pool_u64_unbound::Pool.shares($t0), table_with_length::spec_set(select pool_u64_unbound::Pool.shares($t13), $t1, $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:83:9+130 + assume {:print "$at(168,3182,3312)"} true; + assert {:msg "assert_failed(168,3182,3312): post-condition does not hold"} + ((!$t11 && ($t2 > 0)) ==> $IsEqual'$1_table_with_length_TableWithLength'address_u128''($Dereference($t0)->$shares, $1_table_with_length_spec_set'address_u128'($t13->$shares, $t1, $t2))); + + // assert Eq($t5, if $t8 { + // table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1) + // } else { + // $t2 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:60:9+108 + assume {:print "$at(168,2331,2439)"} true; + assert {:msg "assert_failed(168,2331,2439): post-condition does not hold"} + $IsEqual'u128'($t5, (if ($t8) then ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)) else ($t2))); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:60:9+108 + $ret0 := $t5; + $ret1 := $t0; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:153:5+1 + assume {:print "$at(167,6107,6108)"} true; +L11: + + // assert And($t9, Gt(Add($t10, $t2), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:55:5+346 + assume {:print "$at(168,2099,2445)"} true; + assert {:msg "assert_failed(168,2099,2445): abort not covered by any of the `aborts_if` clauses"} + ($t9 && (($t10 + $t2) > 340282366920938463463374607431768211455)); + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:55:5+346 + $abort_code := $t16; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun pool_u64_unbound::amount_to_shares [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+153 +procedure {:inline 1} $1_pool_u64_unbound_amount_to_shares(_$t0: $1_pool_u64_unbound_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume {:print "$at(167,8382,8383)"} true; + assume {:print "$track_local(92,1,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume {:print "$track_local(92,1,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:63+16 + assume {:print "$at(167,8512,8528)"} true; + $t2 := $t0->$total_coins; + + // $t3 := pool_u64_unbound::amount_to_shares_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:9+71 + call $t3 := $1_pool_u64_unbound_amount_to_shares_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,8458,8529)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,1):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:9+71 + assume {:print "$track_return(92,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::amount_to_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+153 +procedure {:timeLimit 80} $1_pool_u64_unbound_amount_to_shares$verify(_$t0: $1_pool_u64_unbound_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume {:print "$at(167,8382,8383)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume {:print "$track_local(92,1,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:204:5+1 + assume {:print "$track_local(92,1,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:63+16 + assume {:print "$at(167,8512,8528)"} true; + $t2 := $t0->$total_coins; + + // $t3 := pool_u64_unbound::amount_to_shares_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:9+71 + call $t3 := $1_pool_u64_unbound_amount_to_shares_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,8458,8529)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,1):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:205:9+71 + assume {:print "$track_return(92,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:206:5+1 + assume {:print "$at(167,8534,8535)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::amount_to_shares_with_total_coins [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+941 +procedure {:inline 1} $1_pool_u64_unbound_amount_to_shares_with_total_coins(_$t0: $1_pool_u64_unbound_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 $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$at(167,8711,8712)"} true; + assume {:print "$track_local(92,2,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$track_local(92,2,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$track_local(92,2,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+16 + assume {:print "$at(167,8897,8913)"} true; + $t5 := $t0->$total_coins; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 +L1: + + // $t8 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + assume {:print "$at(167,8897,8944)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + $t3 := $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:38+17 + assume {:print "$at(167,8922,8939)"} true; + $t9 := $t0->$total_shares; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:59+1 + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t3 := ==($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:56+2 + $t3 := $IsEqual'u128'($t9, $t10); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:21+12 + assume {:print "$at(167,9203,9215)"} true; +L4: + + // $t11 := pool_u64_unbound::to_u128($t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:13+21 + assume {:print "$at(167,9195,9216)"} true; + call $t11 := $1_pool_u64_unbound_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(167,9195,9216)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t13 := get_field.scaling_factor($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:45+19 + $t13 := $t0->$scaling_factor; + + // $t14 := pool_u64_unbound::to_u128($t13) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:37+28 + call $t14 := $1_pool_u64_unbound_to_u128($t13); + if ($abort_flag) { + assume {:print "$at(167,9219,9247)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t4 := *($t11, $t14) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:35+1 + call $t4 := $MulU128($t11, $t14); + if ($abort_flag) { + assume {:print "$at(167,9217,9218)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:34+4 + assume {:print "$at(167,9567,9571)"} true; +L3: + + // $t15 := pool_u64_unbound::to_u128($t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:40+21 + assume {:print "$at(167,9573,9594)"} true; + call $t15 := $1_pool_u64_unbound_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(167,9573,9594)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t16 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:63+17 + $t16 := $t0->$total_shares; + + // $t17 := pool_u64_unbound::to_u128($t2) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:82+20 + call $t17 := $1_pool_u64_unbound_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(167,9615,9635)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t4 := pool_u64_unbound::multiply_then_divide($t0, $t15, $t16, $t17) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:13+90 + call $t4 := $1_pool_u64_unbound_multiply_then_divide($t0, $t15, $t16, $t17); + if ($abort_flag) { + assume {:print "$at(167,9546,9636)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + assume {:print "$track_return(92,2,0):", $t4} $t4 == $t4; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 + assume {:print "$at(167,9651,9652)"} true; +L6: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 + assume {:print "$at(167,9651,9652)"} true; + $ret0 := $t4; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 +L7: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 + assume {:print "$at(167,9651,9652)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::amount_to_shares_with_total_coins [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+941 +procedure {:timeLimit 80} $1_pool_u64_unbound_amount_to_shares_with_total_coins$verify(_$t0: $1_pool_u64_unbound_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 $t14: int; + var $t15: int; + var $t16: int; + var $t17: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$at(167,8711,8712)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume $IsValid'u64'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$track_local(92,2,0):", $t0} $t0 == $t0; + + // trace_local[coins_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$track_local(92,2,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:210:5+1 + assume {:print "$track_local(92,2,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+16 + assume {:print "$at(167,8897,8913)"} true; + $t5 := $t0->$total_coins; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 +L1: + + // $t8 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + assume {:print "$at(167,8897,8944)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + $t3 := $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:38+17 + assume {:print "$at(167,8922,8939)"} true; + $t9 := $t0->$total_shares; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:59+1 + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t3 := ==($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:56+2 + $t3 := $IsEqual'u128'($t9, $t10); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:21+12 + assume {:print "$at(167,9203,9215)"} true; +L4: + + // $t11 := pool_u64_unbound::to_u128($t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:13+21 + assume {:print "$at(167,9195,9216)"} true; + call $t11 := $1_pool_u64_unbound_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(167,9195,9216)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t13 := get_field.scaling_factor($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:45+19 + $t13 := $t0->$scaling_factor; + + // $t14 := pool_u64_unbound::to_u128($t13) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:37+28 + call $t14 := $1_pool_u64_unbound_to_u128($t13); + if ($abort_flag) { + assume {:print "$at(167,9219,9247)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t4 := *($t11, $t14) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:215:35+1 + call $t4 := $MulU128($t11, $t14); + if ($abort_flag) { + assume {:print "$at(167,9217,9218)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:34+4 + assume {:print "$at(167,9567,9571)"} true; +L3: + + // $t15 := pool_u64_unbound::to_u128($t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:40+21 + assume {:print "$at(167,9573,9594)"} true; + call $t15 := $1_pool_u64_unbound_to_u128($t1); + if ($abort_flag) { + assume {:print "$at(167,9573,9594)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t16 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:63+17 + $t16 := $t0->$total_shares; + + // $t17 := pool_u64_unbound::to_u128($t2) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:82+20 + call $t17 := $1_pool_u64_unbound_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(167,9615,9635)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // $t4 := pool_u64_unbound::multiply_then_divide($t0, $t15, $t16, $t17) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:220:13+90 + call $t4 := $1_pool_u64_unbound_multiply_then_divide($t0, $t15, $t16, $t17); + if ($abort_flag) { + assume {:print "$at(167,9546,9636)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,2):", $t12} $t12 == $t12; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:212:9+753 + assume {:print "$at(167,8893,9646)"} true; + assume {:print "$track_return(92,2,0):", $t4} $t4 == $t4; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 + assume {:print "$at(167,9651,9652)"} true; +L6: + + // assert Not(And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t1, select pool_u64_unbound::Pool.total_shares($t0)), $t2), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:97:9+131 + assume {:print "$at(168,3751,3882)"} true; + assert {:msg "assert_failed(168,3751,3882): function does not abort under this condition"} + !((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t1 * $t0->$total_shares) div $t2) > 340282366920938463463374607431768211455)); + + // assert Not(And(Or(Eq(select pool_u64_unbound::Pool.total_coins($t0), 0), Eq(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Mul($t1, select pool_u64_unbound::Pool.scaling_factor($t0)), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:99:9+121 + assume {:print "$at(168,3891,4012)"} true; + assert {:msg "assert_failed(168,3891,4012): function does not abort under this condition"} + !(($IsEqual'u64'($t0->$total_coins, 0) || $IsEqual'u128'($t0->$total_shares, 0)) && (($t1 * $t0->$scaling_factor) > 340282366920938463463374607431768211455)); + + // assert Not(And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Eq($t2, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:101:9+76 + assume {:print "$at(168,4021,4097)"} true; + assert {:msg "assert_failed(168,4021,4097): function does not abort under this condition"} + !((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && $IsEqual'u64'($t2, 0)); + + // assert Eq($t4, pool_u64_unbound::spec_amount_to_shares_with_total_coins($t0, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:102:9+90 + assume {:print "$at(168,4106,4196)"} true; + assert {:msg "assert_failed(168,4106,4196): post-condition does not hold"} + $IsEqual'u128'($t4, $1_pool_u64_unbound_spec_amount_to_shares_with_total_coins($t0, $t1, $t2)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:102:9+90 + $ret0 := $t4; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:222:5+1 + assume {:print "$at(167,9651,9652)"} true; +L7: + + // assert Or(Or(And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t1, select pool_u64_unbound::Pool.total_shares($t0)), $t2), 340282366920938463463374607431768211455)), And(Or(Eq(select pool_u64_unbound::Pool.total_coins($t0), 0), Eq(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Mul($t1, select pool_u64_unbound::Pool.scaling_factor($t0)), 340282366920938463463374607431768211455))), And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Eq($t2, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:96:5+556 + assume {:print "$at(168,3646,4202)"} true; + assert {:msg "assert_failed(168,3646,4202): abort not covered by any of the `aborts_if` clauses"} + ((((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t1 * $t0->$total_shares) div $t2) > 340282366920938463463374607431768211455)) || (($IsEqual'u64'($t0->$total_coins, 0) || $IsEqual'u128'($t0->$total_shares, 0)) && (($t1 * $t0->$scaling_factor) > 340282366920938463463374607431768211455))) || ((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && $IsEqual'u64'($t2, 0))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:96:5+556 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::total_coins [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:84:5+73 +procedure {:timeLimit 80} $1_pool_u64_unbound_total_coins$verify(_$t0: $1_pool_u64_unbound_Pool) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_pool_u64_unbound_Pool; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:84:5+1 + assume {:print "$at(167,3332,3333)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:84:5+1 + assume {:print "$track_local(92,20,0):", $t0} $t0 == $t0; + + // $t1 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:85:9+16 + assume {:print "$at(167,3383,3399)"} true; + $t1 := $t0->$total_coins; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:85:9+16 + assume {:print "$track_return(92,20,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:86:5+1 + assume {:print "$at(167,3404,3405)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:86:5+1 + assume {:print "$at(167,3404,3405)"} true; + $ret0 := $t1; + return; + +} + +// fun pool_u64_unbound::buy_in [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+614 +procedure {:timeLimit 80} $1_pool_u64_unbound_buy_in$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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: $1_pool_u64_unbound_Pool; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_pool_u64_unbound_Pool; + var $t16: int; + var $t17: 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: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: $Mutation (int); + var $t33: int; + var $t34: int; + var $t35: $Mutation (int); + var $t36: bool; + var $t37: bool; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume {:print "$at(167,4679,4680)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume $IsValid'u64'($t2); + + // assume Identical($t5, pool_u64_unbound::spec_amount_to_shares_with_total_coins($t0, $t2, select pool_u64_unbound::Pool.total_coins($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:45:9+94 + assume {:print "$at(168,1520,1614)"} true; + assume ($t5 == $1_pool_u64_unbound_spec_amount_to_shares_with_total_coins($Dereference($t0), $t2, $Dereference($t0)->$total_coins)); + + // assume Identical($t6, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:68:9+64 + assume {:print "$at(168,2566,2630)"} true; + assume ($t6 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t7, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:69:9+63 + assume {:print "$at(168,2639,2702)"} true; + assume ($t7 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t8, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:78:9+64 + assume {:print "$at(168,2901,2965)"} true; + assume ($t8 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t9, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:79:9+63 + assume {:print "$at(168,2974,3037)"} true; + assume ($t9 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // $t10 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume {:print "$at(167,4679,4680)"} true; + $t10 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,4,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume {:print "$track_local(92,4,1):", $t1} $t1 == $t1; + + // trace_local[coins_amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:124:5+1 + assume {:print "$track_local(92,4,2):", $t2} $t2 == $t2; + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:29+1 + assume {:print "$at(167,4791,4792)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := ==($t2, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:26+2 + $t12 := $IsEqual'u64'($t2, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:9+31 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 +L1: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 + assume {:print "$at(167,4794,4802)"} true; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:39+1 + $t13 := 0; + assume $IsValid'u128'($t13); + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 + assume {:print "$track_return(92,4,0):", $t13} $t13 == $t13; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,4,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // $t14 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 + assume {:print "$at(167,4794,4802)"} true; + $t14 := $t13; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:125:32+8 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:127:43+4 + assume {:print "$at(167,4847,4851)"} true; +L0: + + // $t15 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:127:42+20 + assume {:print "$at(167,4846,4866)"} true; + $t15 := $Dereference($t0); + + // $t16 := pool_u64_unbound::amount_to_shares($t15, $t2) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:127:26+36 + call $t16 := $1_pool_u64_unbound_amount_to_shares($t15, $t2); + if ($abort_flag) { + assume {:print "$at(167,4830,4866)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // trace_local[new_shares]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:127:13+10 + assume {:print "$track_local(92,4,4):", $t16} $t16 == $t16; + + // $t18 := 18446744073709551615 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:17+7 + assume {:print "$at(167,4884,4891)"} true; + $t18 := 18446744073709551615; + assume $IsValid'u64'($t18); + + // $t19 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:27+16 + $t19 := $Dereference($t0)->$total_coins; + + // $t20 := -($t18, $t19) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:25+1 + call $t20 := $Sub($t18, $t19); + if ($abort_flag) { + assume {:print "$at(167,4892,4893)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // $t21 := >=($t20, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:44+2 + call $t21 := $Ge($t20, $t2); + + // if ($t21) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + if ($t21) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 +L3: + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + assume {:print "$at(167,4876,4980)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 +L2: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + assume {:print "$at(167,4876,4980)"} true; + + // $t22 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:85+26 + $t22 := 6; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:61+51 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(167,4928,4979)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + assume {:print "$at(167,4876,4980)"} true; + assume {:print "$track_abort(92,4):", $t23} $t23 == $t23; + + // $t17 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + $t17 := $t23; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:128:9+104 + goto L9; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:17+8 + assume {:print "$at(167,4998,5006)"} true; +L4: + + // $t24 := 340282366920938463463374607431768211455 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:17+8 + assume {:print "$at(167,4998,5006)"} true; + $t24 := 340282366920938463463374607431768211455; + assume $IsValid'u128'($t24); + + // $t25 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:28+17 + $t25 := $Dereference($t0)->$total_shares; + + // $t26 := -($t24, $t25) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:26+1 + call $t26 := $Sub($t24, $t25); + if ($abort_flag) { + assume {:print "$at(167,5007,5008)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // $t27 := >=($t26, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:46+2 + call $t27 := $Ge($t26, $t16); + + // if ($t27) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + if ($t27) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + assume {:print "$at(167,4990,5095)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 +L5: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + assume {:print "$at(167,4990,5095)"} true; + + // $t28 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:85+27 + $t28 := 7; + assume $IsValid'u64'($t28); + + // $t29 := error::invalid_argument($t28) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:61+52 + call $t29 := $1_error_invalid_argument($t28); + if ($abort_flag) { + assume {:print "$at(167,5042,5094)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + assume {:print "$at(167,4990,5095)"} true; + assume {:print "$track_abort(92,4):", $t29} $t29 == $t29; + + // $t17 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + $t17 := $t29; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:129:9+105 + goto L9; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:28+4 + assume {:print "$at(167,5125,5129)"} true; +L7: + + // $t30 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:28+16 + assume {:print "$at(167,5125,5141)"} true; + $t30 := $Dereference($t0)->$total_coins; + + // $t31 := +($t30, $t2) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:45+1 + call $t31 := $AddU64($t30, $t2); + if ($abort_flag) { + assume {:print "$at(167,5142,5143)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // $t32 := borrow_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:9+16 + $t32 := $ChildMutation($t0, 0, $Dereference($t0)->$total_coins); + + // write_ref($t32, $t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:9+50 + $t32 := $UpdateMutation($t32, $t31); + + // write_back[Reference($t0).total_coins (u64)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:9+50 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_total_coins($Dereference($t0), $Dereference($t32))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:131:9+50 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,4,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // $t33 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:29+17 + assume {:print "$at(167,5186,5203)"} true; + $t33 := $Dereference($t0)->$total_shares; + + // $t34 := +($t33, $t16) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:47+1 + call $t34 := $AddU128($t33, $t16); + if ($abort_flag) { + assume {:print "$at(167,5204,5205)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // $t35 := borrow_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:9+17 + $t35 := $ChildMutation($t0, 1, $Dereference($t0)->$total_shares); + + // write_ref($t35, $t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:9+50 + $t35 := $UpdateMutation($t35, $t34); + + // write_back[Reference($t0).total_shares (u128)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:9+50 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_total_shares($Dereference($t0), $Dereference($t35))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:132:9+50 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,4,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assume Identical($t36, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:59:9+64 + assume {:print "$at(168,2258,2322)"} true; + assume ($t36 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t37, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:68:9+64 + assume {:print "$at(168,2566,2630)"} true; + assume ($t37 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t38, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:69:9+63 + assume {:print "$at(168,2639,2702)"} true; + assume ($t38 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t39, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:78:9+64 + assume {:print "$at(168,2901,2965)"} true; + assume ($t39 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assume Identical($t40, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:79:9+63 + assume {:print "$at(168,2974,3037)"} true; + assume ($t40 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1)); + + // $t41 := pool_u64_unbound::add_shares($t0, $t1, $t16) on_abort goto L9 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:133:9+41 + assume {:print "$at(167,5226,5267)"} true; + call $t41,$t0 := $1_pool_u64_unbound_add_shares($t0, $t1, $t16); + if ($abort_flag) { + assume {:print "$at(167,5226,5267)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(92,4):", $t17} $t17 == $t17; + goto L9; + } + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:133:9+41 + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:134:9+10 + assume {:print "$at(167,5277,5287)"} true; + assume {:print "$track_return(92,4,0):", $t16} $t16 == $t16; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:134:9+10 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,4,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // $t14 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:134:9+10 + assume {:print "$at(167,5277,5287)"} true; + $t14 := $t16; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:135:5+1 + assume {:print "$at(167,5292,5293)"} true; +L8: + + // assert Not(Gt(Add(select pool_u64_unbound::Pool.total_coins($t10), $t2), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:46:9+52 + assume {:print "$at(168,1623,1675)"} true; + assert {:msg "assert_failed(168,1623,1675): function does not abort under this condition"} + !(($t10->$total_coins + $t2) > 18446744073709551615); + + // assert Not(Gt(Add(select pool_u64_unbound::Pool.total_shares($t10), $t5), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:47:9+52 + assume {:print "$at(168,1684,1736)"} true; + assert {:msg "assert_failed(168,1684,1736): function does not abort under this condition"} + !(($t10->$total_shares + $t5) > 340282366920938463463374607431768211455); + + // assert Not(And(Gt($t2, 0), And($t6, Gt(Add($t7, $t5), 340282366920938463463374607431768211455)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:71:9+63 + assume {:print "$at(168,2712,2775)"} true; + assert {:msg "assert_failed(168,2712,2775): function does not abort under this condition"} + !(($t2 > 0) && ($t6 && (($t7 + $t5) > 340282366920938463463374607431768211455))); + + // assert Implies(Gt($t2, 0), Implies($t8, Eq>(select pool_u64_unbound::Pool.shares($t0), table_with_length::spec_set(select pool_u64_unbound::Pool.shares($t10), $t1, Add($t9, $t5))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:81:9+126 + assume {:print "$at(168,3047,3173)"} true; + assert {:msg "assert_failed(168,3047,3173): post-condition does not hold"} + (($t2 > 0) ==> ($t8 ==> $IsEqual'$1_table_with_length_TableWithLength'address_u128''($Dereference($t0)->$shares, $1_table_with_length_spec_set'address_u128'($t10->$shares, $t1, ($t9 + $t5))))); + + // assert Implies(Gt($t2, 0), Implies(And(Not($t8), Gt($t5, 0)), Eq>(select pool_u64_unbound::Pool.shares($t0), table_with_length::spec_set(select pool_u64_unbound::Pool.shares($t10), $t1, $t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:83:9+130 + assume {:print "$at(168,3182,3312)"} true; + assert {:msg "assert_failed(168,3182,3312): post-condition does not hold"} + (($t2 > 0) ==> ((!$t8 && ($t5 > 0)) ==> $IsEqual'$1_table_with_length_TableWithLength'address_u128''($Dereference($t0)->$shares, $1_table_with_length_spec_set'address_u128'($t10->$shares, $t1, $t5)))); + + // assert Eq(select pool_u64_unbound::Pool.total_coins($t0), Add(select pool_u64_unbound::Pool.total_coins($t10), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:50:9+65 + assume {:print "$at(168,1910,1975)"} true; + assert {:msg "assert_failed(168,1910,1975): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$total_coins, ($t10->$total_coins + $t2)); + + // assert Eq(select pool_u64_unbound::Pool.total_shares($t0), Add(select pool_u64_unbound::Pool.total_shares($t10), $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:51:9+65 + assume {:print "$at(168,1984,2049)"} true; + assert {:msg "assert_failed(168,1984,2049): post-condition does not hold"} + $IsEqual'u128'($Dereference($t0)->$total_shares, ($t10->$total_shares + $t5)); + + // assert Eq($t14, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:52:9+29 + assume {:print "$at(168,2058,2087)"} true; + assert {:msg "assert_failed(168,2058,2087): post-condition does not hold"} + $IsEqual'u128'($t14, $t5); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:52:9+29 + $ret0 := $t14; + $ret1 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:135:5+1 + assume {:print "$at(167,5292,5293)"} true; +L9: + + // assert Or(Or(Gt(Add(select pool_u64_unbound::Pool.total_coins($t10), $t2), 18446744073709551615), Gt(Add(select pool_u64_unbound::Pool.total_shares($t10), $t5), 340282366920938463463374607431768211455)), And(Gt($t2, 0), And($t6, Gt(Add($t7, $t5), 340282366920938463463374607431768211455)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:44:5+659 + assume {:print "$at(168,1434,2093)"} true; + assert {:msg "assert_failed(168,1434,2093): abort not covered by any of the `aborts_if` clauses"} + (((($t10->$total_coins + $t2) > 18446744073709551615) || (($t10->$total_shares + $t5) > 340282366920938463463374607431768211455)) || (($t2 > 0) && ($t6 && (($t7 + $t5) > 340282366920938463463374607431768211455)))); + + // abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:44:5+659 + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::create_with_scaling_factor [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:62:5+231 +procedure {:inline 1} $1_pool_u64_unbound_create_with_scaling_factor(_$t0: int) returns ($ret0: $1_pool_u64_unbound_Pool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Table int (int); + var $t4: int; + var $t5: $1_pool_u64_unbound_Pool; + var $t0: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[scaling_factor]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:62:5+1 + assume {:print "$at(167,2633,2634)"} true; + assume {:print "$track_local(92,7,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:64:26+1 + assume {:print "$at(167,2740,2741)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:65:27+1 + assume {:print "$at(167,2769,2770)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := table_with_length::new() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:66:21+27 + assume {:print "$at(167,2792,2819)"} true; + call $t3 := $1_table_with_length_new'address_u128'(); + if ($abort_flag) { + assume {:print "$at(167,2792,2819)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,7):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := pack pool_u64_unbound::Pool($t1, $t2, $t3, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:63:9+150 + assume {:print "$at(167,2708,2858)"} true; + $t5 := $1_pool_u64_unbound_Pool($t1, $t2, $t3, $t0); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:63:9+150 + assume {:print "$track_return(92,7,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::create_with_scaling_factor [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:62:5+231 +procedure {:timeLimit 80} $1_pool_u64_unbound_create_with_scaling_factor$verify(_$t0: int) returns ($ret0: $1_pool_u64_unbound_Pool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Table int (int); + var $t4: int; + var $t5: $1_pool_u64_unbound_Pool; + var $t0: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:62:5+1 + assume {:print "$at(167,2633,2634)"} true; + assume $IsValid'u64'($t0); + + // trace_local[scaling_factor]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:62:5+1 + assume {:print "$track_local(92,7,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:64:26+1 + assume {:print "$at(167,2740,2741)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:65:27+1 + assume {:print "$at(167,2769,2770)"} true; + $t2 := 0; + assume $IsValid'u128'($t2); + + // $t3 := table_with_length::new() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:66:21+27 + assume {:print "$at(167,2792,2819)"} true; + call $t3 := $1_table_with_length_new'address_u128'(); + if ($abort_flag) { + assume {:print "$at(167,2792,2819)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,7):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := pack pool_u64_unbound::Pool($t1, $t2, $t3, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:63:9+150 + assume {:print "$at(167,2708,2858)"} true; + $t5 := $1_pool_u64_unbound_Pool($t1, $t2, $t3, $t0); + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t5), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t5), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t5->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t5->$shares, addr) > 0)))); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:63:9+150 + assume {:print "$at(167,2708,2858)"} true; + assume {:print "$track_return(92,7,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:69:5+1 + assume {:print "$at(167,2863,2864)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::deduct_shares [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+683 +procedure {:inline 1} $1_pool_u64_unbound_deduct_shares(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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: $1_pool_u64_unbound_Pool; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_pool_u64_unbound_Pool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $Mutation (Table int (int)); + var $t20: $Mutation (int); + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: $Mutation (Table int (int)); + var $t27: int; + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t7, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:169:9+78 + assume {:print "$at(168,7687,7765)"} true; + assume ($t7 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // assume Identical($t8, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:177:9+78 + assume {:print "$at(168,8042,8120)"} true; + assume ($t8 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$at(167,7556,7557)"} true; + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$track_local(92,8,1):", $t1} $t1 == $t1; + + // trace_local[num_shares]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$track_local(92,8,2):", $t2} $t2 == $t2; + + // $t9 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:25+19 + assume {:print "$at(167,7663,7682)"} true; + $t9 := $Dereference($t0); + + // $t10 := pool_u64_unbound::contains($t9, $t1) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:17+27 + call $t10 := $1_pool_u64_unbound_contains($t9, $t1); + if ($abort_flag) { + assume {:print "$at(167,7655,7682)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + + // $t12 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:70+22 + $t12 := 1; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:46+47 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(167,7684,7731)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + assume {:print "$track_abort(92,8):", $t13} $t13 == $t13; + + // $t11 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + $t11 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:24+4 + assume {:print "$at(167,7757,7761)"} true; +L2: + + // $t14 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:23+19 + assume {:print "$at(167,7756,7775)"} true; + $t14 := $Dereference($t0); + + // $t15 := pool_u64_unbound::shares($t14, $t1) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:17+25 + call $t15 := $1_pool_u64_unbound_shares($t14, $t1); + if ($abort_flag) { + assume {:print "$at(167,7750,7775)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // $t16 := >=($t15, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:43+2 + call $t16 := $Ge($t15, $t2); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 +L3: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + + // $t17 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:82+20 + $t17 := 4; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:58+45 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(167,7791,7836)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + assume {:print "$track_abort(92,8):", $t18} $t18 == $t18; + + // $t11 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + $t11 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:54+4 + assume {:print "$at(167,7893,7897)"} true; +L5: + + // $t19 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:49+16 + assume {:print "$at(167,7888,7904)"} true; + $t19 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t20 := table_with_length::borrow_mut($t19, $t1) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:31+48 + call $t20,$t19 := $1_table_with_length_borrow_mut'address_u128'($t19, $t1); + if ($abort_flag) { + assume {:print "$at(167,7870,7918)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // trace_local[existing_shares]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:13+15 + $temp_0'u128' := $Dereference($t20); + assume {:print "$track_local(92,8,5):", $temp_0'u128'} $temp_0'u128' == $temp_0'u128'; + + // $t21 := read_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:28+16 + assume {:print "$at(167,7947,7963)"} true; + $t21 := $Dereference($t20); + + // $t22 := -($t21, $t2) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:45+1 + call $t22 := $Sub($t21, $t2); + if ($abort_flag) { + assume {:print "$at(167,7964,7965)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // write_ref($t20, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:9+48 + $t20 := $UpdateMutation($t20, $t22); + + // $t23 := read_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + assume {:print "$at(167,8084,8100)"} true; + $t23 := $Dereference($t20); + + // write_back[Reference($t19)[]]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $t19 := $UpdateMutation($t19, UpdateTable($Dereference($t19), ReadVec($t20->p, LenVec($t19->p)), $Dereference($t20))); + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t19))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[remaining_shares]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:13+16 + assume {:print "$track_local(92,8,6):", $t23} $t23 == $t23; + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:33+1 + assume {:print "$at(167,8134,8135)"} true; + $t24 := 0; + assume $IsValid'u128'($t24); + + // $t25 := ==($t23, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:30+2 + $t25 := $IsEqual'u128'($t23, $t24); + + // if ($t25) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + if ($t25) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:32+4 + assume {:print "$at(167,8170,8174)"} true; +L7: + + // $t26 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:27+16 + assume {:print "$at(167,8165,8181)"} true; + $t26 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t27 := table_with_length::remove($t26, $t1) on_abort goto L10 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + call $t27,$t26 := $1_table_with_length_remove'address_u128'($t26, $t1); + if ($abort_flag) { + assume {:print "$at(167,8151,8195)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(92,8):", $t11} $t11 == $t11; + goto L10; + } + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t26))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:57+1 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + assume {:print "$at(167,8110,8206)"} true; +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + assume {:print "$at(167,8110,8206)"} true; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + assume {:print "$at(167,8217,8233)"} true; +L8: + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + assume {:print "$at(167,8217,8233)"} true; + assume {:print "$track_return(92,8,0):", $t23} $t23 == $t23; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 + assume {:print "$at(167,8238,8239)"} true; +L9: + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 + assume {:print "$at(167,8238,8239)"} true; + $ret0 := $t23; + $ret1 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 +L10: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 + assume {:print "$at(167,8238,8239)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::deduct_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+683 +procedure {:timeLimit 80} $1_pool_u64_unbound_deduct_shares$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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: $1_pool_u64_unbound_Pool; + var $t10: $1_pool_u64_unbound_Pool; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_pool_u64_unbound_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: $Mutation (Table int (int)); + var $t28: int; + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$at(167,7556,7557)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume $IsValid'u128'($t2); + + // assume Identical($t7, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:169:9+78 + assume {:print "$at(168,7687,7765)"} true; + assume ($t7 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // assume Identical($t8, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:177:9+78 + assume {:print "$at(168,8042,8120)"} true; + assume ($t8 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // $t9 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$at(167,7556,7557)"} true; + $t9 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$track_local(92,8,1):", $t1} $t1 == $t1; + + // trace_local[num_shares]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:186:5+1 + assume {:print "$track_local(92,8,2):", $t2} $t2 == $t2; + + // $t10 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:25+19 + assume {:print "$at(167,7663,7682)"} true; + $t10 := $Dereference($t0); + + // $t11 := pool_u64_unbound::contains($t10, $t1) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:17+27 + call $t11 := $1_pool_u64_unbound_contains($t10, $t1); + if ($abort_flag) { + assume {:print "$at(167,7655,7682)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 +L0: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:70+22 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:46+47 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(167,7684,7731)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + assume {:print "$at(167,7647,7732)"} true; + assume {:print "$track_abort(92,8):", $t14} $t14 == $t14; + + // $t12 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + $t12 := $t14; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:187:9+85 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:24+4 + assume {:print "$at(167,7757,7761)"} true; +L2: + + // $t15 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:23+19 + assume {:print "$at(167,7756,7775)"} true; + $t15 := $Dereference($t0); + + // $t16 := pool_u64_unbound::shares($t15, $t1) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:17+25 + call $t16 := $1_pool_u64_unbound_shares($t15, $t1); + if ($abort_flag) { + assume {:print "$at(167,7750,7775)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // $t17 := >=($t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:43+2 + call $t17 := $Ge($t16, $t2); + + // if ($t17) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + if ($t17) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 +L3: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + + // $t18 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:82+20 + $t18 := 4; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:58+45 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(167,7791,7836)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + assume {:print "$at(167,7742,7837)"} true; + assume {:print "$track_abort(92,8):", $t19} $t19 == $t19; + + // $t12 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + $t12 := $t19; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:188:9+95 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:54+4 + assume {:print "$at(167,7893,7897)"} true; +L5: + + // $t20 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:49+16 + assume {:print "$at(167,7888,7904)"} true; + $t20 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t21 := table_with_length::borrow_mut($t20, $t1) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:31+48 + call $t21,$t20 := $1_table_with_length_borrow_mut'address_u128'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(167,7870,7918)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // trace_local[existing_shares]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:190:13+15 + $temp_0'u128' := $Dereference($t21); + assume {:print "$track_local(92,8,5):", $temp_0'u128'} $temp_0'u128' == $temp_0'u128'; + + // $t22 := read_ref($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:28+16 + assume {:print "$at(167,7947,7963)"} true; + $t22 := $Dereference($t21); + + // $t23 := -($t22, $t2) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:45+1 + call $t23 := $Sub($t22, $t2); + if ($abort_flag) { + assume {:print "$at(167,7964,7965)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // write_ref($t21, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:191:9+48 + $t21 := $UpdateMutation($t21, $t23); + + // $t24 := read_ref($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + assume {:print "$at(167,8084,8100)"} true; + $t24 := $Dereference($t21); + + // write_back[Reference($t20)[]]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $t20 := $UpdateMutation($t20, UpdateTable($Dereference($t20), ReadVec($t21->p, LenVec($t20->p)), $Dereference($t21))); + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t20))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:32+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[remaining_shares]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:194:13+16 + assume {:print "$track_local(92,8,6):", $t24} $t24 == $t24; + + // $t25 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:33+1 + assume {:print "$at(167,8134,8135)"} true; + $t25 := 0; + assume $IsValid'u128'($t25); + + // $t26 := ==($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:30+2 + $t26 := $IsEqual'u128'($t24, $t25); + + // if ($t26) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + if ($t26) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:32+4 + assume {:print "$at(167,8170,8174)"} true; +L7: + + // $t27 := borrow_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:27+16 + assume {:print "$at(167,8165,8181)"} true; + $t27 := $ChildMutation($t0, 2, $Dereference($t0)->$shares); + + // $t28 := table_with_length::remove($t27, $t1) on_abort goto L10 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + call $t28,$t27 := $1_table_with_length_remove'address_u128'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(167,8151,8195)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,8):", $t12} $t12 == $t12; + goto L10; + } + + // write_back[Reference($t0).shares (table_with_length::TableWithLength)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_shares($Dereference($t0), $Dereference($t27))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // drop($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:13+44 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:196:57+1 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + assume {:print "$at(167,8110,8206)"} true; +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:195:9+96 + assume {:print "$at(167,8110,8206)"} true; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + assume {:print "$at(167,8217,8233)"} true; +L8: + + // trace_return[0]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + assume {:print "$at(167,8217,8233)"} true; + assume {:print "$track_return(92,8,0):", $t24} $t24 == $t24; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:199:9+16 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,8,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 + assume {:print "$at(167,8238,8239)"} true; +L9: + + // assert Not(Not(pool_u64_unbound::spec_contains[]($t9, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:165:9+44 + assume {:print "$at(168,7533,7577)"} true; + assert {:msg "assert_failed(168,7533,7577): function does not abort under this condition"} + !!$1_pool_u64_unbound_spec_contains($t9, $t1); + + // assert Not(Lt(pool_u64_unbound::spec_shares[]($t9, $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:166:9+54 + assume {:print "$at(168,7586,7640)"} true; + assert {:msg "assert_failed(168,7586,7640): function does not abort under this condition"} + !($1_pool_u64_unbound_spec_shares($t9, $t1) < $t2); + + // assert Implies(Gt($t8, 0), Eq(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:178:9+95 + assume {:print "$at(168,8129,8224)"} true; + assert {:msg "assert_failed(168,8129,8224): post-condition does not hold"} + (($t8 > 0) ==> $IsEqual'u128'($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1), $t8)); + + // assert Implies(Eq($t8, 0), Not(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:179:9+82 + assume {:print "$at(168,8233,8315)"} true; + assert {:msg "assert_failed(168,8233,8315): post-condition does not hold"} + ($IsEqual'num'($t8, 0) ==> !$1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1)); + + // assert Implies(Gt($t7, 0), Eq($t24, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:170:9+85 + assume {:print "$at(168,7774,7859)"} true; + assert {:msg "assert_failed(168,7774,7859): post-condition does not hold"} + (($t7 > 0) ==> $IsEqual'u128'($t24, $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1))); + + // assert Implies(Eq($t7, 0), Eq($t24, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:171:9+46 + assume {:print "$at(168,7868,7914)"} true; + assert {:msg "assert_failed(168,7868,7914): post-condition does not hold"} + ($IsEqual'num'($t7, 0) ==> $IsEqual'u128'($t24, 0)); + + // return $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:171:9+46 + $ret0 := $t24; + $ret1 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:200:5+1 + assume {:print "$at(167,8238,8239)"} true; +L10: + + // assert Or(Not(pool_u64_unbound::spec_contains[]($t9, $t1)), Lt(pool_u64_unbound::spec_shares[]($t9, $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:164:5+479 + assume {:print "$at(168,7441,7920)"} true; + assert {:msg "assert_failed(168,7441,7920): abort not covered by any of the `aborts_if` clauses"} + (!$1_pool_u64_unbound_spec_contains($t9, $t1) || ($1_pool_u64_unbound_spec_shares($t9, $t1) < $t2)); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:164:5+479 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::multiply_then_divide [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+172 +procedure {:inline 1} $1_pool_u64_unbound_multiply_then_divide(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[_self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$at(167,11186,11187)"} true; + assume {:print "$track_local(92,10,0):", $t0} $t0 == $t0; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,1):", $t1} $t1 == $t1; + + // trace_local[y]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,2):", $t2} $t2 == $t2; + + // trace_local[z]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,3):", $t3} $t3 == $t3; + + // $t4 := pool_u64_unbound::to_u256($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:23+10 + assume {:print "$at(167,11289,11299)"} true; + call $t4 := $1_pool_u64_unbound_to_u256($t1); + if ($abort_flag) { + assume {:print "$at(167,11289,11299)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pool_u64_unbound::to_u256($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:36+10 + call $t6 := $1_pool_u64_unbound_to_u256($t2); + if ($abort_flag) { + assume {:print "$at(167,11302,11312)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:34+1 + call $t7 := $MulU256($t4, $t6); + if ($abort_flag) { + assume {:print "$at(167,11300,11301)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t8 := pool_u64_unbound::to_u256($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:50+10 + call $t8 := $1_pool_u64_unbound_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(167,11316,11326)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:48+1 + call $t9 := $Div($t7, $t8); + if ($abort_flag) { + assume {:print "$at(167,11314,11315)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := (u128)($t9) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:260:9+16 + assume {:print "$at(167,11336,11352)"} true; + call $t10 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(167,11336,11352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:260:9+16 + assume {:print "$track_return(92,10,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 + assume {:print "$at(167,11357,11358)"} true; +L1: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 + assume {:print "$at(167,11357,11358)"} true; + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 + assume {:print "$at(167,11357,11358)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::multiply_then_divide [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+172 +procedure {:timeLimit 80} $1_pool_u64_unbound_multiply_then_divide$verify(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$at(167,11186,11187)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume $IsValid'u128'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume $IsValid'u128'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume $IsValid'u128'($t3); + + // trace_local[_self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,0):", $t0} $t0 == $t0; + + // trace_local[x]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,1):", $t1} $t1 == $t1; + + // trace_local[y]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,2):", $t2} $t2 == $t2; + + // trace_local[z]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:258:5+1 + assume {:print "$track_local(92,10,3):", $t3} $t3 == $t3; + + // $t4 := pool_u64_unbound::to_u256($t1) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:23+10 + assume {:print "$at(167,11289,11299)"} true; + call $t4 := $1_pool_u64_unbound_to_u256($t1); + if ($abort_flag) { + assume {:print "$at(167,11289,11299)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pool_u64_unbound::to_u256($t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:36+10 + call $t6 := $1_pool_u64_unbound_to_u256($t2); + if ($abort_flag) { + assume {:print "$at(167,11302,11312)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t7 := *($t4, $t6) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:34+1 + call $t7 := $MulU256($t4, $t6); + if ($abort_flag) { + assume {:print "$at(167,11300,11301)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t8 := pool_u64_unbound::to_u256($t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:50+10 + call $t8 := $1_pool_u64_unbound_to_u256($t3); + if ($abort_flag) { + assume {:print "$at(167,11316,11326)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := /($t7, $t8) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:259:48+1 + call $t9 := $Div($t7, $t8); + if ($abort_flag) { + assume {:print "$at(167,11314,11315)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t10 := (u128)($t9) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:260:9+16 + assume {:print "$at(167,11336,11352)"} true; + call $t10 := $CastU128($t9); + if ($abort_flag) { + assume {:print "$at(167,11336,11352)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(92,10):", $t5} $t5 == $t5; + goto L2; + } + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:260:9+16 + assume {:print "$track_return(92,10,0):", $t10} $t10 == $t10; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 + assume {:print "$at(167,11357,11358)"} true; +L1: + + // assert Not(Eq($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:121:9+17 + assume {:print "$at(168,4896,4913)"} true; + assert {:msg "assert_failed(168,4896,4913): function does not abort under this condition"} + !$IsEqual'u128'($t3, 0); + + // assert Not(Gt(Div(Mul($t1, $t2), $t3), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:122:9+33 + assume {:print "$at(168,4922,4955)"} true; + assert {:msg "assert_failed(168,4922,4955): function does not abort under this condition"} + !((($t1 * $t2) div $t3) > 340282366920938463463374607431768211455); + + // assert Eq($t10, Div(Mul($t1, $t2), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:123:9+30 + assume {:print "$at(168,4964,4994)"} true; + assert {:msg "assert_failed(168,4964,4994): post-condition does not hold"} + $IsEqual'u128'($t10, (($t1 * $t2) div $t3)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:123:9+30 + $ret0 := $t10; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:261:5+1 + assume {:print "$at(167,11357,11358)"} true; +L2: + + // assert Or(Eq($t3, 0), Gt(Div(Mul($t1, $t2), $t3), 340282366920938463463374607431768211455)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:120:5+187 + assume {:print "$at(168,4813,5000)"} true; + assert {:msg "assert_failed(168,4813,5000): abort not covered by any of the `aborts_if` clauses"} + ($IsEqual'u128'($t3, 0) || ((($t1 * $t2) div $t3) > 340282366920938463463374607431768211455)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:120:5+187 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::redeem_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+636 +procedure {:timeLimit 80} $1_pool_u64_unbound_redeem_shares$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int) returns ($ret0: int, $ret1: $Mutation ($1_pool_u64_unbound_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_unbound_Pool; + var $t10: $1_pool_u64_unbound_Pool; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $1_pool_u64_unbound_Pool; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_pool_u64_unbound_Pool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: $Mutation (int); + var $t29: int; + var $t30: int; + var $t31: $Mutation (int); + var $t32: int; + var $t33: int; + var $t34: int; + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume {:print "$at(167,6186,6187)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume $IsValid'u128'($t2); + + // assume Identical($t7, pool_u64_unbound::spec_shares_to_amount_with_total_coins($t0, $t2, select pool_u64_unbound::Pool.total_coins($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:127:9+102 + assume {:print "$at(168,5103,5205)"} true; + assume ($t7 == $1_pool_u64_unbound_spec_shares_to_amount_with_total_coins($Dereference($t0), $t2, $Dereference($t0)->$total_coins)); + + // assume Identical($t8, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:177:9+78 + assume {:print "$at(168,8042,8120)"} true; + assume ($t8 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // $t9 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume {:print "$at(167,6186,6187)"} true; + $t9 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,12,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume {:print "$track_local(92,12,1):", $t1} $t1 == $t1; + + // trace_local[shares_to_redeem]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:156:5+1 + assume {:print "$track_local(92,12,2):", $t2} $t2 == $t2; + + // $t10 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:25+19 + assume {:print "$at(167,6305,6324)"} true; + $t10 := $Dereference($t0); + + // $t11 := pool_u64_unbound::contains($t10, $t1) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:17+27 + call $t11 := $1_pool_u64_unbound_contains($t10, $t1); + if ($abort_flag) { + assume {:print "$at(167,6297,6324)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + assume {:print "$at(167,6289,6374)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 +L0: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + assume {:print "$at(167,6289,6374)"} true; + + // $t13 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:70+22 + $t13 := 1; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:46+47 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(167,6326,6373)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + assume {:print "$at(167,6289,6374)"} true; + assume {:print "$track_abort(92,12):", $t14} $t14 == $t14; + + // $t12 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + $t12 := $t14; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:157:9+85 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:24+4 + assume {:print "$at(167,6399,6403)"} true; +L2: + + // $t15 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:23+19 + assume {:print "$at(167,6398,6417)"} true; + $t15 := $Dereference($t0); + + // $t16 := pool_u64_unbound::shares($t15, $t1) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:17+25 + call $t16 := $1_pool_u64_unbound_shares($t15, $t1); + if ($abort_flag) { + assume {:print "$at(167,6392,6417)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // $t17 := >=($t16, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:43+2 + call $t17 := $Ge($t16, $t2); + + // if ($t17) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + if ($t17) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + assume {:print "$at(167,6384,6485)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 +L3: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + assume {:print "$at(167,6384,6485)"} true; + + // $t18 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:88+20 + $t18 := 4; + assume $IsValid'u64'($t18); + + // $t19 := error::invalid_argument($t18) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:64+45 + call $t19 := $1_error_invalid_argument($t18); + if ($abort_flag) { + assume {:print "$at(167,6439,6484)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + assume {:print "$at(167,6384,6485)"} true; + assume {:print "$track_abort(92,12):", $t19} $t19 == $t19; + + // $t12 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + $t12 := $t19; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:158:9+101 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:13+16 + assume {:print "$at(167,6500,6516)"} true; +L5: + + // $t20 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:33+1 + assume {:print "$at(167,6520,6521)"} true; + $t20 := 0; + assume $IsValid'u128'($t20); + + // $t21 := ==($t2, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:30+2 + $t21 := $IsEqual'u128'($t2, $t20); + + // if ($t21) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:9+35 + if ($t21) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 +L7: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 + assume {:print "$at(167,6523,6531)"} true; + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:43+1 + $t22 := 0; + assume $IsValid'u64'($t22); + + // trace_return[0]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 + assume {:print "$track_return(92,12,0):", $t22} $t22 == $t22; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,12,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // $t23 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 + assume {:print "$at(167,6523,6531)"} true; + $t23 := $t22; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:160:36+8 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:162:47+4 + assume {:print "$at(167,6580,6584)"} true; +L6: + + // $t24 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:162:46+24 + assume {:print "$at(167,6579,6603)"} true; + $t24 := $Dereference($t0); + + // $t25 := pool_u64_unbound::shares_to_amount($t24, $t2) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:162:30+40 + call $t25 := $1_pool_u64_unbound_shares_to_amount($t24, $t2); + if ($abort_flag) { + assume {:print "$at(167,6563,6603)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // trace_local[redeemed_coins]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:162:13+14 + assume {:print "$track_local(92,12,6):", $t25} $t25 == $t25; + + // $t26 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:28+16 + assume {:print "$at(167,6632,6648)"} true; + $t26 := $Dereference($t0)->$total_coins; + + // $t27 := -($t26, $t25) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:45+1 + call $t27 := $Sub($t26, $t25); + if ($abort_flag) { + assume {:print "$at(167,6649,6650)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // $t28 := borrow_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:9+16 + $t28 := $ChildMutation($t0, 0, $Dereference($t0)->$total_coins); + + // write_ref($t28, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:9+52 + $t28 := $UpdateMutation($t28, $t27); + + // write_back[Reference($t0).total_coins (u64)]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:9+52 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_total_coins($Dereference($t0), $Dereference($t28))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:163:9+52 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,12,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // $t29 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:29+17 + assume {:print "$at(167,6695,6712)"} true; + $t29 := $Dereference($t0)->$total_shares; + + // $t30 := -($t29, $t2) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:47+1 + call $t30 := $Sub($t29, $t2); + if ($abort_flag) { + assume {:print "$at(167,6713,6714)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // $t31 := borrow_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:9+17 + $t31 := $ChildMutation($t0, 1, $Dereference($t0)->$total_shares); + + // write_ref($t31, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:9+56 + $t31 := $UpdateMutation($t31, $t30); + + // write_back[Reference($t0).total_shares (u128)]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:9+56 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_total_shares($Dereference($t0), $Dereference($t31))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:164:9+56 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,12,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assume Identical($t32, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:169:9+78 + assume {:print "$at(168,7687,7765)"} true; + assume ($t32 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // assume Identical($t33, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:177:9+78 + assume {:print "$at(168,8042,8120)"} true; + assume ($t33 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t2)); + + // $t34 := pool_u64_unbound::deduct_shares($t0, $t1, $t2) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:165:9+50 + assume {:print "$at(167,6741,6791)"} true; + call $t34,$t0 := $1_pool_u64_unbound_deduct_shares($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,6741,6791)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(92,12):", $t12} $t12 == $t12; + goto L9; + } + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:165:9+50 + + // trace_return[0]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:167:9+14 + assume {:print "$at(167,6802,6816)"} true; + assume {:print "$track_return(92,12,0):", $t25} $t25 == $t25; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:167:9+14 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,12,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // $t23 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:167:9+14 + assume {:print "$at(167,6802,6816)"} true; + $t23 := $t25; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:168:5+1 + assume {:print "$at(167,6821,6822)"} true; +L8: + + // assert Not(Not(pool_u64_unbound::spec_contains[]($t9, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:128:9+44 + assume {:print "$at(168,5214,5258)"} true; + assert {:msg "assert_failed(168,5214,5258): function does not abort under this condition"} + !!$1_pool_u64_unbound_spec_contains($t9, $t1); + + // assert Not(Lt(pool_u64_unbound::spec_shares[]($t9, $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:129:9+60 + assume {:print "$at(168,5267,5327)"} true; + assert {:msg "assert_failed(168,5267,5327): function does not abort under this condition"} + !($1_pool_u64_unbound_spec_shares($t9, $t1) < $t2); + + // assert Not(Lt(select pool_u64_unbound::Pool.total_coins($t9), $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:130:9+44 + assume {:print "$at(168,5336,5380)"} true; + assert {:msg "assert_failed(168,5336,5380): function does not abort under this condition"} + !($t9->$total_coins < $t7); + + // assert Not(Lt(select pool_u64_unbound::Pool.total_shares($t9), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:131:9+47 + assume {:print "$at(168,5389,5436)"} true; + assert {:msg "assert_failed(168,5389,5436): function does not abort under this condition"} + !($t9->$total_shares < $t2); + + // assert Eq(select pool_u64_unbound::Pool.total_coins($t0), Sub(select pool_u64_unbound::Pool.total_coins($t9), $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:132:9+67 + assume {:print "$at(168,5445,5512)"} true; + assert {:msg "assert_failed(168,5445,5512): post-condition does not hold"} + $IsEqual'u64'($Dereference($t0)->$total_coins, ($t9->$total_coins - $t7)); + + // assert Eq(select pool_u64_unbound::Pool.total_shares($t0), Sub(select pool_u64_unbound::Pool.total_shares($t9), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:133:9+71 + assume {:print "$at(168,5521,5592)"} true; + assert {:msg "assert_failed(168,5521,5592): post-condition does not hold"} + $IsEqual'u128'($Dereference($t0)->$total_shares, ($t9->$total_shares - $t2)); + + // assert Implies(Gt($t2, 0), Implies(Gt($t8, 0), Eq(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:178:9+95 + assume {:print "$at(168,8129,8224)"} true; + assert {:msg "assert_failed(168,8129,8224): post-condition does not hold"} + (($t2 > 0) ==> (($t8 > 0) ==> $IsEqual'u128'($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1), $t8))); + + // assert Implies(Gt($t2, 0), Implies(Eq($t8, 0), Not(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:179:9+82 + assume {:print "$at(168,8233,8315)"} true; + assert {:msg "assert_failed(168,8233,8315): post-condition does not hold"} + (($t2 > 0) ==> ($IsEqual'num'($t8, 0) ==> !$1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t1))); + + // assert Eq($t23, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:137:9+33 + assume {:print "$at(168,5716,5749)"} true; + assert {:msg "assert_failed(168,5716,5749): post-condition does not hold"} + $IsEqual'u64'($t23, $t7); + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:137:9+33 + $ret0 := $t23; + $ret1 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:168:5+1 + assume {:print "$at(167,6821,6822)"} true; +L9: + + // assert Or(Or(Or(Not(pool_u64_unbound::spec_contains[]($t9, $t1)), Lt(pool_u64_unbound::spec_shares[]($t9, $t1), $t2)), Lt(select pool_u64_unbound::Pool.total_coins($t9), $t7)), Lt(select pool_u64_unbound::Pool.total_shares($t9), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:126:5+749 + assume {:print "$at(168,5006,5755)"} true; + assert {:msg "assert_failed(168,5006,5755): abort not covered by any of the `aborts_if` clauses"} + (((!$1_pool_u64_unbound_spec_contains($t9, $t1) || ($1_pool_u64_unbound_spec_shares($t9, $t1) < $t2)) || ($t9->$total_coins < $t7)) || ($t9->$total_shares < $t2)); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:126:5+749 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shareholders_count [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:114:5+91 +procedure {:timeLimit 80} $1_pool_u64_unbound_shareholders_count$verify(_$t0: $1_pool_u64_unbound_Pool) returns ($ret0: int) +{ + // declare local variables + var $t1: Table int (int); + var $t2: int; + var $t3: int; + var $t0: $1_pool_u64_unbound_Pool; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:114:5+1 + assume {:print "$at(167,4304,4305)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:114:5+1 + assume {:print "$track_local(92,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:115:23+12 + assume {:print "$at(167,4376,4388)"} true; + $t1 := $t0->$shares; + + // $t2 := table_with_length::length($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:115:9+27 + call $t2 := $1_table_with_length_length'address_u128'($t1); + if ($abort_flag) { + assume {:print "$at(167,4362,4389)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(92,13):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:115:9+27 + assume {:print "$track_return(92,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:116:5+1 + assume {:print "$at(167,4394,4395)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:116:5+1 + assume {:print "$at(167,4394,4395)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:116:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:116:5+1 + assume {:print "$at(167,4394,4395)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+204 +procedure {:inline 1} $1_pool_u64_unbound_shares(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume {:print "$at(167,3810,3811)"} true; + assume {:print "$track_local(92,14,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume {:print "$track_local(92,14,1):", $t1} $t1 == $t1; + + // $t3 := pool_u64_unbound::contains($t0, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:13+27 + assume {:print "$at(167,3883,3910)"} true; + call $t3 := $1_pool_u64_unbound_contains($t0, $t1); + if ($abort_flag) { + assume {:print "$at(167,3883,3910)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,14):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:29+4 + assume {:print "$at(167,3942,3946)"} true; +L1: + + // $t5 := get_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:28+12 + assume {:print "$at(167,3941,3953)"} true; + $t5 := $t0->$shares; + + // $t2 := table_with_length::borrow($t5, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:14+40 + call $t2 := $1_table_with_length_borrow'address_u128'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(167,3927,3967)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,14):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 +L0: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:103:13+1 + assume {:print "$at(167,3997,3998)"} true; + $t6 := 0; + assume $IsValid'u128'($t6); + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + $t2 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + assume {:print "$track_return(92,14,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 + assume {:print "$at(167,4013,4014)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 + assume {:print "$at(167,4013,4014)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 + assume {:print "$at(167,4013,4014)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+204 +procedure {:timeLimit 80} $1_pool_u64_unbound_shares$verify(_$t0: $1_pool_u64_unbound_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_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume {:print "$at(167,3810,3811)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume $IsValid'address'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume {:print "$track_local(92,14,0):", $t0} $t0 == $t0; + + // trace_local[shareholder]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:99:5+1 + assume {:print "$track_local(92,14,1):", $t1} $t1 == $t1; + + // $t3 := pool_u64_unbound::contains($t0, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:13+27 + assume {:print "$at(167,3883,3910)"} true; + call $t3 := $1_pool_u64_unbound_contains($t0, $t1); + if ($abort_flag) { + assume {:print "$at(167,3883,3910)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,14):", $t4} $t4 == $t4; + goto L4; + } + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:29+4 + assume {:print "$at(167,3942,3946)"} true; +L1: + + // $t5 := get_field.shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:28+12 + assume {:print "$at(167,3941,3953)"} true; + $t5 := $t0->$shares; + + // $t2 := table_with_length::borrow($t5, $t1) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:101:14+40 + call $t2 := $1_table_with_length_borrow'address_u128'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(167,3927,3967)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,14):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 +L0: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:103:13+1 + assume {:print "$at(167,3997,3998)"} true; + $t6 := 0; + assume $IsValid'u128'($t6); + + // $t2 := $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + $t2 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:100:9+129 + assume {:print "$at(167,3879,4008)"} true; + assume {:print "$track_return(92,14,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 + assume {:print "$at(167,4013,4014)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:33:9+16 + assume {:print "$at(168,971,987)"} true; + assert {:msg "assert_failed(168,971,987): function does not abort under this condition"} + !false; + + // assert Eq($t2, pool_u64_unbound::spec_shares($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:34:9+49 + assume {:print "$at(168,996,1045)"} true; + assert {:msg "assert_failed(168,996,1045): post-condition does not hold"} + $IsEqual'u128'($t2, $1_pool_u64_unbound_spec_shares($t0, $t1)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:34:9+49 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:105:5+1 + assume {:print "$at(167,4013,4014)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:32:5+143 + assume {:print "$at(168,908,1051)"} true; + assert {:msg "assert_failed(168,908,1051): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:32:5+143 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares_to_amount [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+141 +procedure {:inline 1} $1_pool_u64_unbound_shares_to_amount(_$t0: $1_pool_u64_unbound_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume {:print "$at(167,9786,9787)"} true; + assume {:print "$track_local(92,15,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume {:print "$track_local(92,15,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:57+16 + assume {:print "$at(167,9904,9920)"} true; + $t2 := $t0->$total_coins; + + // $t3 := pool_u64_unbound::shares_to_amount_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:9+65 + call $t3 := $1_pool_u64_unbound_shares_to_amount_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,9856,9921)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,15):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:9+65 + assume {:print "$track_return(92,15,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares_to_amount [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+141 +procedure {:timeLimit 80} $1_pool_u64_unbound_shares_to_amount$verify(_$t0: $1_pool_u64_unbound_Pool, _$t1: int) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume {:print "$at(167,9786,9787)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume $IsValid'u128'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume {:print "$track_local(92,15,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:226:5+1 + assume {:print "$track_local(92,15,1):", $t1} $t1 == $t1; + + // $t2 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:57+16 + assume {:print "$at(167,9904,9920)"} true; + $t2 := $t0->$total_coins; + + // $t3 := pool_u64_unbound::shares_to_amount_with_total_coins($t0, $t1, $t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:9+65 + call $t3 := $1_pool_u64_unbound_shares_to_amount_with_total_coins($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(167,9856,9921)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(92,15):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:227:9+65 + assume {:print "$track_return(92,15,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:228:5+1 + assume {:print "$at(167,9926,9927)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares_to_amount_with_total_coins [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+620 +procedure {:inline 1} $1_pool_u64_unbound_shares_to_amount_with_total_coins(_$t0: $1_pool_u64_unbound_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 $t14: int; + var $t15: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$at(167,10094,10095)"} true; + assume {:print "$track_local(92,16,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$track_local(92,16,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$track_local(92,16,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+16 + assume {:print "$at(167,10262,10278)"} true; + $t5 := $t0->$total_coins; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 +L1: + + // $t8 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + assume {:print "$at(167,10262,10309)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + $t3 := $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:38+17 + assume {:print "$at(167,10287,10304)"} true; + $t9 := $t0->$total_shares; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:59+1 + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t3 := ==($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:56+2 + $t3 := $IsEqual'u128'($t9, $t10); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 +L4: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:235:13+1 + assume {:print "$at(167,10325,10326)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t4 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + $t4 := $t11; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:35+4 + assume {:print "$at(167,10636,10640)"} true; +L3: + + // $t12 := pool_u64_unbound::to_u128($t2) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:49+20 + assume {:print "$at(167,10650,10670)"} true; + call $t12 := $1_pool_u64_unbound_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(167,10650,10670)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // $t14 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:71+17 + $t14 := $t0->$total_shares; + + // $t15 := pool_u64_unbound::multiply_then_divide($t0, $t1, $t12, $t14) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:14+75 + call $t15 := $1_pool_u64_unbound_multiply_then_divide($t0, $t1, $t12, $t14); + if ($abort_flag) { + assume {:print "$at(167,10615,10690)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // $t4 := (u64)($t15) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:13+84 + call $t4 := $CastU64($t15); + if ($abort_flag) { + assume {:print "$at(167,10614,10698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + assume {:print "$track_return(92,16,0):", $t4} $t4 == $t4; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 + assume {:print "$at(167,10713,10714)"} true; +L6: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 + assume {:print "$at(167,10713,10714)"} true; + $ret0 := $t4; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 +L7: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 + assume {:print "$at(167,10713,10714)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::shares_to_amount_with_total_coins [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+620 +procedure {:timeLimit 80} $1_pool_u64_unbound_shares_to_amount_with_total_coins$verify(_$t0: $1_pool_u64_unbound_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 $t14: int; + var $t15: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $t2: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$at(167,10094,10095)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume $IsValid'u128'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume $IsValid'u64'($t2); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$track_local(92,16,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$track_local(92,16,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:232:5+1 + assume {:print "$track_local(92,16,2):", $t2} $t2 == $t2; + + // $t5 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+16 + assume {:print "$at(167,10262,10278)"} true; + $t5 := $t0->$total_coins; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:33+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := ==($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:30+2 + $t7 := $IsEqual'u64'($t5, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 +L1: + + // $t8 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + assume {:print "$at(167,10262,10309)"} true; + $t8 := true; + assume $IsValid'bool'($t8); + + // $t3 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + $t3 := $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:38+4 +L0: + + // $t9 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:38+17 + assume {:print "$at(167,10287,10304)"} true; + $t9 := $t0->$total_shares; + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:59+1 + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t3 := ==($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:56+2 + $t3 := $IsEqual'u128'($t9, $t10); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:13+47 +L2: + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 +L4: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:235:13+1 + assume {:print "$at(167,10325,10326)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t4 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + $t4 := $t11; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:35+4 + assume {:print "$at(167,10636,10640)"} true; +L3: + + // $t12 := pool_u64_unbound::to_u128($t2) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:49+20 + assume {:print "$at(167,10650,10670)"} true; + call $t12 := $1_pool_u64_unbound_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(167,10650,10670)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // $t14 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:71+17 + $t14 := $t0->$total_shares; + + // $t15 := pool_u64_unbound::multiply_then_divide($t0, $t1, $t12, $t14) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:14+75 + call $t15 := $1_pool_u64_unbound_multiply_then_divide($t0, $t1, $t12, $t14); + if ($abort_flag) { + assume {:print "$at(167,10615,10690)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // $t4 := (u64)($t15) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:240:13+84 + call $t4 := $CastU64($t15); + if ($abort_flag) { + assume {:print "$at(167,10614,10698)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,16):", $t13} $t13 == $t13; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; +L5: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:234:9+450 + assume {:print "$at(167,10258,10708)"} true; + assume {:print "$track_return(92,16,0):", $t4} $t4 == $t4; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 + assume {:print "$at(167,10713,10714)"} true; +L6: + + // assert Not(And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t1, $t2), select pool_u64_unbound::Pool.total_shares($t0)), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:106:9+124 + assume {:print "$at(168,4307,4431)"} true; + assert {:msg "assert_failed(168,4307,4431): function does not abort under this condition"} + !((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t1 * $t2) div $t0->$total_shares) > 18446744073709551615)); + + // assert Eq($t4, pool_u64_unbound::spec_shares_to_amount_with_total_coins($t0, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:108:9+84 + assume {:print "$at(168,4440,4524)"} true; + assert {:msg "assert_failed(168,4440,4524): post-condition does not hold"} + $IsEqual'u64'($t4, $1_pool_u64_unbound_spec_shares_to_amount_with_total_coins($t0, $t1, $t2)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:108:9+84 + $ret0 := $t4; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:242:5+1 + assume {:print "$at(167,10713,10714)"} true; +L7: + + // assert And(And(Gt(select pool_u64_unbound::Pool.total_coins($t0), 0), Gt(select pool_u64_unbound::Pool.total_shares($t0), 0)), Gt(Div(Mul($t1, $t2), select pool_u64_unbound::Pool.total_shares($t0)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:105:5+322 + assume {:print "$at(168,4208,4530)"} true; + assert {:msg "assert_failed(168,4208,4530): abort not covered by any of the `aborts_if` clauses"} + ((($t0->$total_coins > 0) && ($t0->$total_shares > 0)) && ((($t1 * $t2) div $t0->$total_shares) > 18446744073709551615)); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:105:5+322 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::total_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:89:5+76 +procedure {:timeLimit 80} $1_pool_u64_unbound_total_shares$verify(_$t0: $1_pool_u64_unbound_Pool) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_pool_u64_unbound_Pool; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:89:5+1 + assume {:print "$at(167,3488,3489)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:89:5+1 + assume {:print "$track_local(92,21,0):", $t0} $t0 == $t0; + + // $t1 := get_field.total_shares($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:90:9+17 + assume {:print "$at(167,3541,3558)"} true; + $t1 := $t0->$total_shares; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:90:9+17 + assume {:print "$track_return(92,21,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:91:5+1 + assume {:print "$at(167,3563,3564)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:91:5+1 + assume {:print "$at(167,3563,3564)"} true; + $ret0 := $t1; + return; + +} + +// fun pool_u64_unbound::transfer_shares [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+547 +procedure {:timeLimit 80} $1_pool_u64_unbound_transfer_shares$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int, _$t2: int, _$t3: int) returns ($ret0: $Mutation ($1_pool_u64_unbound_Pool)) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: $1_pool_u64_unbound_Pool; + var $t7: $1_pool_u64_unbound_Pool; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $1_pool_u64_unbound_Pool; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: bool; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'address': int; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume {:print "$at(167,6893,6894)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume $IsValid'u128'($t3); + + // $t6 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + $t6 := $Dereference($t0); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,22,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[shareholder_1]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume {:print "$track_local(92,22,1):", $t1} $t1 == $t1; + + // trace_local[shareholder_2]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume {:print "$track_local(92,22,2):", $t2} $t2 == $t2; + + // trace_local[shares_to_transfer]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:171:5+1 + assume {:print "$track_local(92,22,3):", $t3} $t3 == $t3; + + // $t7 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:25+21 + assume {:print "$at(167,7076,7097)"} true; + $t7 := $Dereference($t0); + + // $t8 := pool_u64_unbound::contains($t7, $t1) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:17+29 + call $t8 := $1_pool_u64_unbound_contains($t7, $t1); + if ($abort_flag) { + assume {:print "$at(167,7068,7097)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + assume {:print "$at(167,7060,7147)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 +L0: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + assume {:print "$at(167,7060,7147)"} true; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:72+22 + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:48+47 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(167,7099,7146)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + assume {:print "$at(167,7060,7147)"} true; + assume {:print "$track_abort(92,22):", $t11} $t11 == $t11; + + // $t9 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + $t9 := $t11; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:177:9+87 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:24+4 + assume {:print "$at(167,7172,7176)"} true; +L2: + + // $t12 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:23+21 + assume {:print "$at(167,7171,7192)"} true; + $t12 := $Dereference($t0); + + // $t13 := pool_u64_unbound::shares($t12, $t1) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:17+27 + call $t13 := $1_pool_u64_unbound_shares($t12, $t1); + if ($abort_flag) { + assume {:print "$at(167,7165,7192)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // $t14 := >=($t13, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:45+2 + call $t14 := $Ge($t13, $t3); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + assume {:print "$at(167,7157,7262)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 +L3: + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + assume {:print "$at(167,7157,7262)"} true; + + // $t15 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:92+20 + $t15 := 4; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:68+45 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(167,7216,7261)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + assume {:print "$at(167,7157,7262)"} true; + assume {:print "$track_abort(92,22):", $t16} $t16 == $t16; + + // $t9 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + $t9 := $t16; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:178:9+105 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:13+18 + assume {:print "$at(167,7276,7294)"} true; +L5: + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:35+1 + assume {:print "$at(167,7298,7299)"} true; + $t17 := 0; + assume $IsValid'u128'($t17); + + // $t18 := ==($t3, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:32+2 + $t18 := $IsEqual'u128'($t3, $t17); + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:9+35 + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:38+6 +L7: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:38+6 + assume {:print "$at(167,7301,7307)"} true; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:38+6 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,22,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:179:38+6 + assume {:print "$at(167,7301,7307)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:181:23+4 + assume {:print "$at(167,7332,7336)"} true; +L6: + + // assume Identical($t19, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:169:9+78 + assume {:print "$at(168,7687,7765)"} true; + assume ($t19 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t3)); + + // assume Identical($t20, Sub(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t1), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:177:9+78 + assume {:print "$at(168,8042,8120)"} true; + assume ($t20 == ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t1) - $t3)); + + // $t21 := pool_u64_unbound::deduct_shares($t0, $t1, $t3) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:181:9+54 + assume {:print "$at(167,7318,7372)"} true; + call $t21,$t0 := $1_pool_u64_unbound_deduct_shares($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(167,7318,7372)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // drop($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:181:9+54 + + // assume Identical($t22, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:59:9+64 + assume {:print "$at(168,2258,2322)"} true; + assume ($t22 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t2)); + + // assume Identical($t23, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:68:9+64 + assume {:print "$at(168,2566,2630)"} true; + assume ($t23 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t2)); + + // assume Identical($t24, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:69:9+63 + assume {:print "$at(168,2639,2702)"} true; + assume ($t24 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t2)); + + // assume Identical($t25, table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:78:9+64 + assume {:print "$at(168,2901,2965)"} true; + assume ($t25 == $1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, $t2)); + + // assume Identical($t26, table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:79:9+63 + assume {:print "$at(168,2974,3037)"} true; + assume ($t26 == $1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, $t2)); + + // $t27 := pool_u64_unbound::add_shares($t0, $t2, $t3) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:182:9+51 + assume {:print "$at(167,7382,7433)"} true; + call $t27,$t0 := $1_pool_u64_unbound_add_shares($t0, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(167,7382,7433)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(92,22):", $t9} $t9 == $t9; + goto L9; + } + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:182:9+51 + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:182:60+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,22,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:183:5+1 + assume {:print "$at(167,7439,7440)"} true; +L8: + + // assert Not(And(And(And(Neq
($t1, $t2), Gt($t3, 0)), pool_u64_unbound::spec_contains[]($t6, $t2)), Gt(Add(pool_u64_unbound::spec_shares[]($t6, $t2), $t3), 340282366920938463463374607431768211455))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:146:9+189 + assume {:print "$at(168,5905,6094)"} true; + assert {:msg "assert_failed(168,5905,6094): function does not abort under this condition"} + !(((!$IsEqual'address'($t1, $t2) && ($t3 > 0)) && $1_pool_u64_unbound_spec_contains($t6, $t2)) && (($1_pool_u64_unbound_spec_shares($t6, $t2) + $t3) > 340282366920938463463374607431768211455)); + + // assert Not(Not(pool_u64_unbound::spec_contains[]($t6, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:148:9+46 + assume {:print "$at(168,6103,6149)"} true; + assert {:msg "assert_failed(168,6103,6149): function does not abort under this condition"} + !!$1_pool_u64_unbound_spec_contains($t6, $t1); + + // assert Not(Lt(pool_u64_unbound::spec_shares[]($t6, $t1), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:149:9+64 + assume {:print "$at(168,6158,6222)"} true; + assert {:msg "assert_failed(168,6158,6222): function does not abort under this condition"} + !($1_pool_u64_unbound_spec_shares($t6, $t1) < $t3); + + // assert Implies(Eq
($t1, $t2), Eq(pool_u64_unbound::spec_shares($t6, $t1), pool_u64_unbound::spec_shares($t0, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:150:9+130 + assume {:print "$at(168,6231,6361)"} true; + assert {:msg "assert_failed(168,6231,6361): post-condition does not hold"} + ($IsEqual'address'($t1, $t2) ==> $IsEqual'u64'($1_pool_u64_unbound_spec_shares($t6, $t1), $1_pool_u64_unbound_spec_shares($Dereference($t0), $t1))); + + // assert Implies(And(Neq
($t1, $t2), Eq(pool_u64_unbound::spec_shares($t6, $t1), $t3)), Not(pool_u64_unbound::spec_contains($t0, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:152:9+160 + assume {:print "$at(168,6370,6530)"} true; + assert {:msg "assert_failed(168,6370,6530): post-condition does not hold"} + ((!$IsEqual'address'($t1, $t2) && $IsEqual'u64'($1_pool_u64_unbound_spec_shares($t6, $t1), $t3)) ==> !$1_pool_u64_unbound_spec_contains($Dereference($t0), $t1)); + + // assert Implies(And(Neq
($t1, $t2), Gt($t3, 0)), pool_u64_unbound::spec_contains($t0, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:154:9+120 + assume {:print "$at(168,6539,6659)"} true; + assert {:msg "assert_failed(168,6539,6659): post-condition does not hold"} + ((!$IsEqual'address'($t1, $t2) && ($t3 > 0)) ==> $1_pool_u64_unbound_spec_contains($Dereference($t0), $t2)); + + // assert Implies(And(And(Neq
($t1, $t2), Gt($t3, 0)), Not(pool_u64_unbound::spec_contains($t6, $t2))), And(pool_u64_unbound::spec_contains($t0, $t2), Eq(pool_u64_unbound::spec_shares($t0, $t2), $t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:156:9+222 + assume {:print "$at(168,6668,6890)"} true; + assert {:msg "assert_failed(168,6668,6890): post-condition does not hold"} + (((!$IsEqual'address'($t1, $t2) && ($t3 > 0)) && !$1_pool_u64_unbound_spec_contains($t6, $t2)) ==> ($1_pool_u64_unbound_spec_contains($Dereference($t0), $t2) && $IsEqual'u64'($1_pool_u64_unbound_spec_shares($Dereference($t0), $t2), $t3))); + + // assert Implies(And(And(Neq
($t1, $t2), Gt($t3, 0)), pool_u64_unbound::spec_contains($t6, $t2)), And(pool_u64_unbound::spec_contains($t0, $t2), Eq(pool_u64_unbound::spec_shares($t0, $t2), Add(pool_u64_unbound::spec_shares($t6, $t2), $t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:158:9+261 + assume {:print "$at(168,6899,7160)"} true; + assert {:msg "assert_failed(168,6899,7160): post-condition does not hold"} + (((!$IsEqual'address'($t1, $t2) && ($t3 > 0)) && $1_pool_u64_unbound_spec_contains($t6, $t2)) ==> ($1_pool_u64_unbound_spec_contains($Dereference($t0), $t2) && $IsEqual'u64'($1_pool_u64_unbound_spec_shares($Dereference($t0), $t2), ($1_pool_u64_unbound_spec_shares($t6, $t2) + $t3)))); + + // assert Implies(And(Neq
($t1, $t2), Gt(pool_u64_unbound::spec_shares($t6, $t1), $t3)), And(pool_u64_unbound::spec_contains($t0, $t1), Eq(pool_u64_unbound::spec_shares($t0, $t1), Sub(pool_u64_unbound::spec_shares($t6, $t1), $t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:160:9+260 + assume {:print "$at(168,7169,7429)"} true; + assert {:msg "assert_failed(168,7169,7429): post-condition does not hold"} + ((!$IsEqual'address'($t1, $t2) && ($1_pool_u64_unbound_spec_shares($t6, $t1) > $t3)) ==> ($1_pool_u64_unbound_spec_contains($Dereference($t0), $t1) && $IsEqual'u64'($1_pool_u64_unbound_spec_shares($Dereference($t0), $t1), ($1_pool_u64_unbound_spec_shares($t6, $t1) - $t3)))); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:160:9+260 + $ret0 := $t0; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:183:5+1 + assume {:print "$at(167,7439,7440)"} true; +L9: + + // assert Or(Or(And(And(And(Neq
($t1, $t2), Gt($t3, 0)), pool_u64_unbound::spec_contains[]($t6, $t2)), Gt(Add(pool_u64_unbound::spec_shares[]($t6, $t2), $t3), 340282366920938463463374607431768211455)), Not(pool_u64_unbound::spec_contains[]($t6, $t1))), Lt(pool_u64_unbound::spec_shares[]($t6, $t1), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:140:5+1674 + assume {:print "$at(168,5761,7435)"} true; + assert {:msg "assert_failed(168,5761,7435): abort not covered by any of the `aborts_if` clauses"} + (((((!$IsEqual'address'($t1, $t2) && ($t3 > 0)) && $1_pool_u64_unbound_spec_contains($t6, $t2)) && (($1_pool_u64_unbound_spec_shares($t6, $t2) + $t3) > 340282366920938463463374607431768211455)) || !$1_pool_u64_unbound_spec_contains($t6, $t1)) || ($1_pool_u64_unbound_spec_shares($t6, $t1) < $t3)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:140:5+1674 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun pool_u64_unbound::update_total_coins [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:119:5+120 +procedure {:timeLimit 80} $1_pool_u64_unbound_update_total_coins$verify(_$t0: $Mutation ($1_pool_u64_unbound_Pool), _$t1: int) returns ($ret0: $Mutation ($1_pool_u64_unbound_Pool)) +{ + // declare local variables + var $t2: $Mutation (int); + var $t0: $Mutation ($1_pool_u64_unbound_Pool); + var $t1: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:119:5+1 + assume {:print "$at(167,4449,4450)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($Dereference($t0)) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:119:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:119:5+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,23,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[new_total_coins]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:119:5+1 + assume {:print "$track_local(92,23,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:120:9+16 + assume {:print "$at(167,4528,4544)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$total_coins); + + // write_ref($t2, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:120:9+34 + $t2 := $UpdateMutation($t2, $t1); + + // write_back[Reference($t0).total_coins (u64)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:120:9+34 + $t0 := $UpdateMutation($t0, $Update'$1_pool_u64_unbound_Pool'_total_coins($Dereference($t0), $Dereference($t2))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:120:9+34 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,23,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:120:43+1 + $temp_0'$1_pool_u64_unbound_Pool' := $Dereference($t0); + assume {:print "$track_local(92,23,0):", $temp_0'$1_pool_u64_unbound_Pool'} $temp_0'$1_pool_u64_unbound_Pool' == $temp_0'$1_pool_u64_unbound_Pool'; + + // assert forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.spec.move:10:9+119 + assume {:print "$at(168,269,388)"} true; + assert {:msg "assert_failed(168,269,388): data invariant does not hold"} + (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($Dereference($t0)->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($Dereference($t0)->$shares, addr) > 0)))); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:121:5+1 + assume {:print "$at(167,4568,4569)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:121:5+1 + assume {:print "$at(167,4568,4569)"} true; + $ret0 := $t0; + return; + +} + +// fun pool_u64_unbound::shares_to_amount_with_total_stats [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+352 +procedure {:timeLimit 80} $1_pool_u64_unbound_shares_to_amount_with_total_stats$verify(_$t0: $1_pool_u64_unbound_Pool, _$t1: int, _$t2: int, _$t3: int) returns ($ret0: int) +{ + // declare local variables + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t0: $1_pool_u64_unbound_Pool; + var $t1: int; + var $t2: int; + var $t3: int; + var $temp_0'$1_pool_u64_unbound_Pool': $1_pool_u64_unbound_Pool; + var $temp_0'u128': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall addr: address: TypeDomain
(): Implies(table_with_length::spec_contains(select pool_u64_unbound::Pool.shares($t0), addr), Gt(table_with_length::spec_get(select pool_u64_unbound::Pool.shares($t0), addr), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume {:print "$at(167,10828,10829)"} true; + assume ($IsValid'$1_pool_u64_unbound_Pool'($t0) && (forall addr: int :: $IsValid'address'(addr) ==> (($1_table_with_length_spec_contains'address_u128'($t0->$shares, addr) ==> ($1_table_with_length_spec_get'address_u128'($t0->$shares, addr) > 0))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume $IsValid'u128'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume $IsValid'u128'($t3); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume {:print "$track_local(92,17,0):", $t0} $t0 == $t0; + + // trace_local[shares]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume {:print "$track_local(92,17,1):", $t1} $t1 == $t1; + + // trace_local[total_coins]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume {:print "$track_local(92,17,2):", $t2} $t2 == $t2; + + // trace_local[total_shares]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:245:5+1 + assume {:print "$track_local(92,17,3):", $t3} $t3 == $t3; + + // $t6 := get_field.total_coins($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+16 + assume {:print "$at(167,10996,11012)"} true; + $t6 := $t0->$total_coins; + + // $t7 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:33+1 + $t7 := 0; + assume $IsValid'u64'($t7); + + // $t8 := ==($t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:30+2 + $t8 := $IsEqual'u64'($t6, $t7); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 +L1: + + // $t9 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 + assume {:print "$at(167,10996,11038)"} true; + $t9 := true; + assume $IsValid'bool'($t9); + + // $t4 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 + $t4 := $t9; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:38+12 +L0: + + // $t10 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:54+1 + assume {:print "$at(167,11037,11038)"} true; + $t10 := 0; + assume $IsValid'u128'($t10); + + // $t4 := ==($t3, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:51+2 + $t4 := $IsEqual'u128'($t3, $t10); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:13+42 +L2: + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 + assume {:print "$at(167,10992,11174)"} true; + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 +L4: + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:252:13+1 + assume {:print "$at(167,11054,11055)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t5 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 + assume {:print "$at(167,10992,11174)"} true; + $t5 := $t11; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:254:35+4 + assume {:print "$at(167,11107,11111)"} true; +L3: + + // $t12 := pool_u64_unbound::to_u128($t2) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:254:49+20 + assume {:print "$at(167,11121,11141)"} true; + call $t12 := $1_pool_u64_unbound_to_u128($t2); + if ($abort_flag) { + assume {:print "$at(167,11121,11141)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,17):", $t13} $t13 == $t13; + goto L7; + } + + // $t14 := pool_u64_unbound::multiply_then_divide($t0, $t1, $t12, $t3) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:254:14+70 + call $t14 := $1_pool_u64_unbound_multiply_then_divide($t0, $t1, $t12, $t3); + if ($abort_flag) { + assume {:print "$at(167,11086,11156)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,17):", $t13} $t13 == $t13; + goto L7; + } + + // $t5 := (u64)($t14) on_abort goto L7 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:254:13+79 + call $t5 := $CastU64($t14); + if ($abort_flag) { + assume {:print "$at(167,11085,11164)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(92,17):", $t13} $t13 == $t13; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 + assume {:print "$at(167,10992,11174)"} true; +L5: + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:251:9+182 + assume {:print "$at(167,10992,11174)"} true; + assume {:print "$track_return(92,17,0):", $t5} $t5 == $t5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:256:5+1 + assume {:print "$at(167,11179,11180)"} true; +L6: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:256:5+1 + assume {:print "$at(167,11179,11180)"} true; + $ret0 := $t5; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:256:5+1 +L7: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/pool_u64_unbound.move:256:5+1 + assume {:print "$at(167,11179,11180)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:87:10+70 +function {:inline} $1_property_map_spec_utf8(bytes: Vec (int)): $1_string_String { + $1_string_String(bytes) +} + +// struct property_map::PropertyMap at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:51:5+95 +datatype $1_property_map_PropertyMap { + $1_property_map_PropertyMap($map: Table int ($1_property_map_PropertyValue)) +} +function {:inline} $Update'$1_property_map_PropertyMap'_map(s: $1_property_map_PropertyMap, x: Table int ($1_property_map_PropertyValue)): $1_property_map_PropertyMap { + $1_property_map_PropertyMap(x) +} +function $IsValid'$1_property_map_PropertyMap'(s: $1_property_map_PropertyMap): bool { + $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(s->$map) +} +function {:inline} $IsEqual'$1_property_map_PropertyMap'(s1: $1_property_map_PropertyMap, s2: $1_property_map_PropertyMap): bool { + $IsEqual'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''(s1->$map, s2->$map)} + +// struct property_map::PropertyValue at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:55:5+99 +datatype $1_property_map_PropertyValue { + $1_property_map_PropertyValue($value: Vec (int), $type: $1_string_String) +} +function {:inline} $Update'$1_property_map_PropertyValue'_value(s: $1_property_map_PropertyValue, x: Vec (int)): $1_property_map_PropertyValue { + $1_property_map_PropertyValue(x, s->$type) +} +function {:inline} $Update'$1_property_map_PropertyValue'_type(s: $1_property_map_PropertyValue, x: $1_string_String): $1_property_map_PropertyValue { + $1_property_map_PropertyValue(s->$value, x) +} +function $IsValid'$1_property_map_PropertyValue'(s: $1_property_map_PropertyValue): bool { + $IsValid'vec'u8''(s->$value) + && $IsValid'$1_string_String'(s->$type) +} +function {:inline} $IsEqual'$1_property_map_PropertyValue'(s1: $1_property_map_PropertyValue, s2: $1_property_map_PropertyValue): bool { + $IsEqual'vec'u8''(s1->$value, s2->$value) + && $IsEqual'$1_string_String'(s1->$type, s2->$type)} + +// fun property_map::borrow [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+205 +procedure {:inline 1} $1_property_map_borrow(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: $1_property_map_PropertyValue) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: Table int ($1_property_map_PropertyValue); + var $t6: $1_property_map_PropertyValue; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume {:print "$at(184,4363,4364)"} true; + assume {:print "$track_local(93,1,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume {:print "$track_local(93,1,1):", $t1} $t1 == $t1; + + // $t2 := property_map::contains_key($t0, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:129:21+22 + assume {:print "$at(184,4452,4474)"} true; + call $t2 := $1_property_map_contains_key($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,4452,4474)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(93,1):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 +L0: + + // $t4 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:24+19 + assume {:print "$at(184,4499,4518)"} true; + $t4 := 3; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + assume {:print "$track_abort(93,1):", $t4} $t4 == $t4; + + // $t3 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + $t3 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:29+3 + assume {:print "$at(184,4549,4552)"} true; +L2: + + // $t5 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:28+8 + assume {:print "$at(184,4548,4556)"} true; + $t5 := $t0->$map; + + // $t6 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:9+33 + call $t6 := $1_simple_map_borrow'$1_string_String_$1_property_map_PropertyValue'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(184,4529,4562)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(93,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:9+33 + assume {:print "$track_return(93,1,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 + assume {:print "$at(184,4567,4568)"} true; +L3: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 + assume {:print "$at(184,4567,4568)"} true; + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 + assume {:print "$at(184,4567,4568)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun property_map::borrow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+205 +procedure {:timeLimit 80} $1_property_map_borrow$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: $1_property_map_PropertyValue) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: Table int ($1_property_map_PropertyValue); + var $t6: $1_property_map_PropertyValue; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume {:print "$at(184,4363,4364)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume {:print "$track_local(93,1,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:128:5+1 + assume {:print "$track_local(93,1,1):", $t1} $t1 == $t1; + + // $t2 := property_map::contains_key($t0, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:129:21+22 + assume {:print "$at(184,4452,4474)"} true; + call $t2 := $1_property_map_contains_key($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,4452,4474)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(93,1):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 +L0: + + // $t4 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:24+19 + assume {:print "$at(184,4499,4518)"} true; + $t4 := 3; + assume $IsValid'u64'($t4); + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + assume {:print "$at(184,4484,4519)"} true; + assume {:print "$track_abort(93,1):", $t4} $t4 == $t4; + + // $t3 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + $t3 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:130:9+35 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:29+3 + assume {:print "$at(184,4549,4552)"} true; +L2: + + // $t5 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:28+8 + assume {:print "$at(184,4548,4556)"} true; + $t5 := $t0->$map; + + // $t6 := simple_map::borrow($t5, $t1) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:9+33 + call $t6 := $1_simple_map_borrow'$1_string_String_$1_property_map_PropertyValue'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(184,4529,4562)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(93,1):", $t3} $t3 == $t3; + goto L4; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:131:9+33 + assume {:print "$track_return(93,1,0):", $t6} $t6 == $t6; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 + assume {:print "$at(184,4567,4568)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:69:9+55 + assume {:print "$at(185,1958,2013)"} true; + assert {:msg "assert_failed(185,1958,2013): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:69:9+55 + $ret0 := $t6; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:132:5+1 + assume {:print "$at(184,4567,4568)"} true; +L4: + + // assert Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:67:5+176 + assume {:print "$at(185,1843,2019)"} true; + assert {:msg "assert_failed(185,1843,2019): abort not covered by any of the `aborts_if` clauses"} + !$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:67:5+176 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun property_map::empty [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:108:5+133 +procedure {:inline 1} $1_property_map_empty() returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t0: Table int ($1_property_map_PropertyValue); + var $t1: int; + var $t2: $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + + // bytecode translation starts here + // $t0 := simple_map::create() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:110:18+43 + assume {:print "$at(184,3699,3742)"} true; + call $t0 := $1_simple_map_create'$1_string_String_$1_property_map_PropertyValue'(); + if ($abort_flag) { + assume {:print "$at(184,3699,3742)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(93,7):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := pack property_map::PropertyMap($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:109:9+85 + assume {:print "$at(184,3668,3753)"} true; + $t2 := $1_property_map_PropertyMap($t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:109:9+85 + assume {:print "$track_return(93,7,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 + assume {:print "$at(184,3758,3759)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 + assume {:print "$at(184,3758,3759)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 + assume {:print "$at(184,3758,3759)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun property_map::empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:108:5+133 +procedure {:timeLimit 80} $1_property_map_empty$verify() returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t0: Table int ($1_property_map_PropertyValue); + var $t1: int; + var $t2: $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := simple_map::create() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:110:18+43 + assume {:print "$at(184,3699,3742)"} true; + call $t0 := $1_simple_map_create'$1_string_String_$1_property_map_PropertyValue'(); + if ($abort_flag) { + assume {:print "$at(184,3699,3742)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(93,7):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := pack property_map::PropertyMap($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:109:9+85 + assume {:print "$at(184,3668,3753)"} true; + $t2 := $1_property_map_PropertyMap($t0); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:109:9+85 + assume {:print "$track_return(93,7,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 + assume {:print "$at(184,3758,3759)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:36:9+16 + assume {:print "$at(185,1034,1050)"} true; + assert {:msg "assert_failed(185,1034,1050): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:36:9+16 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:112:5+1 + assume {:print "$at(184,3758,3759)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:35:5+58 + assume {:print "$at(185,998,1056)"} true; + assert {:msg "assert_failed(185,998,1056): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:35:5+58 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun property_map::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:124:5+86 +procedure {:timeLimit 80} $1_property_map_length$verify(_$t0: $1_property_map_PropertyMap) returns ($ret0: int) +{ + // declare local variables + var $t1: Table int ($1_property_map_PropertyValue); + var $t2: int; + var $t3: int; + var $t0: $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:124:5+1 + assume {:print "$at(184,4271,4272)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:124:5+1 + assume {:print "$track_local(93,9,0):", $t0} $t0 == $t0; + + // $t1 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:125:28+8 + assume {:print "$at(184,4342,4350)"} true; + $t1 := $t0->$map; + + // $t2 := simple_map::length($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:125:9+28 + call $t2 := $1_simple_map_length'$1_string_String_$1_property_map_PropertyValue'($t1); + if ($abort_flag) { + assume {:print "$at(184,4323,4351)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(93,9):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:125:9+28 + assume {:print "$track_return(93,9,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:126:5+1 + assume {:print "$at(184,4356,4357)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:52:9+16 + assume {:print "$at(185,1541,1557)"} true; + assert {:msg "assert_failed(185,1541,1557): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:52:9+16 + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:126:5+1 + assume {:print "$at(184,4356,4357)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:51:5+68 + assume {:print "$at(185,1495,1563)"} true; + assert {:msg "assert_failed(185,1495,1563): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:51:5+68 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun property_map::remove [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+262 +procedure {:timeLimit 80} $1_property_map_remove$verify(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: $1_string_String) returns ($ret0: $1_string_String, $ret1: $1_property_map_PropertyValue, $ret2: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_property_map_PropertyMap; + var $t4: $1_property_map_PropertyMap; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t10: $1_string_String; + var $t11: $1_property_map_PropertyValue; + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+1 + assume {:print "$at(184,6982,6983)"} true; + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+1 + assume $IsValid'$1_string_String'($t1); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+1 + $t3 := $Dereference($t0); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,18,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:199:5+1 + assume {:print "$track_local(93,18,1):", $t1} $t1 == $t1; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:203:33+10 + assume {:print "$at(184,7118,7128)"} true; + $t4 := $Dereference($t0); + + // $t5 := property_map::contains_key($t4, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:203:21+22 + call $t5 := $1_property_map_contains_key($t4, $t1); + if ($abort_flag) { + assume {:print "$at(184,7106,7128)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,18):", $t6} $t6 == $t6; + goto L4; + } + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + assume {:print "$at(184,7138,7191)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + assume {:print "$at(184,7138,7191)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + assume {:print "$at(184,7138,7191)"} true; + + // $t7 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:41+19 + $t7 := 3; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:24+37 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(184,7153,7190)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,18):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + assume {:print "$at(184,7138,7191)"} true; + assume {:print "$track_abort(93,18):", $t8} $t8 == $t8; + + // $t6 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + $t6 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:204:9+53 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:33+3 + assume {:print "$at(184,7225,7228)"} true; +L2: + + // $t9 := borrow_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:28+12 + assume {:print "$at(184,7220,7232)"} true; + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$map); + + // ($t10, $t11) := simple_map::remove($t9, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + call $t10,$t11,$t9 := $1_simple_map_remove'$1_string_String_$1_property_map_PropertyValue'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(184,7201,7238)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,18):", $t6} $t6 == $t6; + goto L4; + } + + // write_back[Reference($t0).map (simple_map::SimpleMap)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + $t0 := $UpdateMutation($t0, $Update'$1_property_map_PropertyMap'_map($Dereference($t0), $Dereference($t9))); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,18,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + assume {:print "$track_return(93,18,0):", $t10} $t10 == $t10; + + // trace_return[1]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + assume {:print "$track_return(93,18,1):", $t11} $t11 == $t11; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:205:9+37 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,18,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:206:5+1 + assume {:print "$at(184,7243,7244)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t3), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:163:9+55 + assume {:print "$at(185,5427,5482)"} true; + assert {:msg "assert_failed(185,5427,5482): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t3->$map, $t1); + + // return ($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:163:9+55 + $ret0 := $t10; + $ret1 := $t11; + $ret2 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:206:5+1 + assume {:print "$at(184,7243,7244)"} true; +L4: + + // assert Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t3), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:159:5+168 + assume {:print "$at(185,5320,5488)"} true; + assert {:msg "assert_failed(185,5320,5488): abort not covered by any of the `aborts_if` clauses"} + !$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t3->$map, $t1); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:159:5+168 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+376 +procedure {:inline 1} $1_property_map_add(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: $1_string_String, _$t2: $1_property_map_PropertyValue) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: Table int ($1_property_map_PropertyValue); + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: $1_string_String; + var $t2: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$at(184,3889,3890)"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$track_local(93,0,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$track_local(93,0,2):", $t2} $t2 == $t2; + + // $t3 := string::length($t1) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:17+20 + assume {:print "$at(184,3980,4000)"} true; + call $t3 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(184,3980,4000)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,0):", $t4} $t4 == $t4; + goto L7; + } + + // $t5 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:41+24 + $t5 := 128; + assume $IsValid'u64'($t5); + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:38+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + + // $t7 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:91+27 + $t7 := 7; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:67+52 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(184,4030,4082)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,0):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + assume {:print "$track_abort(93,0):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + $t4 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:37+3 + assume {:print "$at(184,4121,4124)"} true; +L2: + + // $t9 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:36+8 + assume {:print "$at(184,4120,4128)"} true; + $t9 := $Dereference($t0)->$map; + + // $t10 := simple_map::length($t9) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:17+28 + call $t10 := $1_simple_map_length'$1_string_String_$1_property_map_PropertyValue'($t9); + if ($abort_flag) { + assume {:print "$at(184,4101,4129)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,0):", $t4} $t4 == $t4; + goto L7; + } + + // $t11 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:48+21 + $t11 := 1000; + assume $IsValid'u64'($t11); + + // $t12 := <($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:46+1 + call $t12 := $Lt($t10, $t11); + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + + // $t13 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:92+29 + $t13 := 2; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_state($t13) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:71+51 + call $t14 := $1_error_invalid_state($t13); + if ($abort_flag) { + assume {:print "$at(184,4155,4206)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,0):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + assume {:print "$track_abort(93,0):", $t14} $t14 == $t14; + + // $t4 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + $t4 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:30+3 + assume {:print "$at(184,4238,4241)"} true; +L5: + + // $t15 := borrow_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:25+12 + assume {:print "$at(184,4233,4245)"} true; + $t15 := $ChildMutation($t0, 0, $Dereference($t0)->$map); + + // simple_map::add($t15, $t1, $t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + call $t15 := $1_simple_map_add'$1_string_String_$1_property_map_PropertyValue'($t15, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(184,4217,4258)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,0):", $t4} $t4 == $t4; + goto L7; + } + + // write_back[Reference($t0).map (simple_map::SimpleMap)]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + $t0 := $UpdateMutation($t0, $Update'$1_property_map_PropertyMap'_map($Dereference($t0), $Dereference($t15))); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:50+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 + assume {:print "$at(184,4264,4265)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 + assume {:print "$at(184,4264,4265)"} true; + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 + assume {:print "$at(184,4264,4265)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun property_map::add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+376 +procedure {:timeLimit 80} $1_property_map_add$verify(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: $1_string_String, _$t2: $1_property_map_PropertyValue) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t3: $1_property_map_PropertyMap; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: Table int ($1_property_map_PropertyValue); + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: $1_string_String; + var $t2: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$at(184,3889,3890)"} true; + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume $IsValid'$1_property_map_PropertyValue'($t2); + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + $t3 := $Dereference($t0); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$track_local(93,0,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:118:5+1 + assume {:print "$track_local(93,0,2):", $t2} $t2 == $t2; + + // $t4 := string::length($t1) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:17+20 + assume {:print "$at(184,3980,4000)"} true; + call $t4 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(184,3980,4000)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,0):", $t5} $t5 == $t5; + goto L7; + } + + // $t6 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:41+24 + $t6 := 128; + assume $IsValid'u64'($t6); + + // $t7 := <=($t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:38+2 + call $t7 := $Le($t4, $t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + + // $t8 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:91+27 + $t8 := 7; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:67+52 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(184,4030,4082)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,0):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + assume {:print "$at(184,3972,4083)"} true; + assume {:print "$track_abort(93,0):", $t9} $t9 == $t9; + + // $t5 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + $t5 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:119:9+111 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:37+3 + assume {:print "$at(184,4121,4124)"} true; +L2: + + // $t10 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:36+8 + assume {:print "$at(184,4120,4128)"} true; + $t10 := $Dereference($t0)->$map; + + // $t11 := simple_map::length($t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:17+28 + call $t11 := $1_simple_map_length'$1_string_String_$1_property_map_PropertyValue'($t10); + if ($abort_flag) { + assume {:print "$at(184,4101,4129)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,0):", $t5} $t5 == $t5; + goto L7; + } + + // $t12 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:48+21 + $t12 := 1000; + assume $IsValid'u64'($t12); + + // $t13 := <($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:46+1 + call $t13 := $Lt($t11, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + + // $t14 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:92+29 + $t14 := 2; + assume $IsValid'u64'($t14); + + // $t15 := error::invalid_state($t14) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:71+51 + call $t15 := $1_error_invalid_state($t14); + if ($abort_flag) { + assume {:print "$at(184,4155,4206)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,0):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + assume {:print "$at(184,4093,4207)"} true; + assume {:print "$track_abort(93,0):", $t15} $t15 == $t15; + + // $t5 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + $t5 := $t15; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:120:9+114 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:30+3 + assume {:print "$at(184,4238,4241)"} true; +L5: + + // $t16 := borrow_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:25+12 + assume {:print "$at(184,4233,4245)"} true; + $t16 := $ChildMutation($t0, 0, $Dereference($t0)->$map); + + // simple_map::add($t16, $t1, $t2) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + call $t16 := $1_simple_map_add'$1_string_String_$1_property_map_PropertyValue'($t16, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(184,4217,4258)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,0):", $t5} $t5 == $t5; + goto L7; + } + + // write_back[Reference($t0).map (simple_map::SimpleMap)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + $t0 := $UpdateMutation($t0, $Update'$1_property_map_PropertyMap'_map($Dereference($t0), $Dereference($t16))); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:9+41 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:121:50+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,0,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 + assume {:print "$at(184,4264,4265)"} true; +L6: + + // assert Not(Not(Le(string::$length[]($t1), 128))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:46:9+61 + assume {:print "$at(185,1279,1340)"} true; + assert {:msg "assert_failed(185,1279,1340): function does not abort under this condition"} + !!($1_string_$length($t1) <= 128); + + // assert Not(Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t3), $t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:47:9+58 + assume {:print "$at(185,1349,1407)"} true; + assert {:msg "assert_failed(185,1349,1407): function does not abort under this condition"} + !!!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t3->$map, $t1); + + // assert Not(Not(Lt(simple_map::spec_len[](select property_map::PropertyMap.map($t3)), 1000))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:48:9+67 + assume {:print "$at(185,1416,1483)"} true; + assert {:msg "assert_failed(185,1416,1483): function does not abort under this condition"} + !!($1_simple_map_spec_len'$1_string_String_$1_property_map_PropertyValue'($t3->$map) < 1000); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:48:9+67 + $ret0 := $t0; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:122:5+1 + assume {:print "$at(184,4264,4265)"} true; +L7: + + // assert Or(Or(Not(Le(string::$length[]($t1), 128)), Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t3), $t1)))), Not(Lt(simple_map::spec_len[](select property_map::PropertyMap.map($t3)), 1000))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:43:5+332 + assume {:print "$at(185,1157,1489)"} true; + assert {:msg "assert_failed(185,1157,1489): abort not covered by any of the `aborts_if` clauses"} + ((!($1_string_$length($t1) <= 128) || !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t3->$map, $t1)) || !($1_simple_map_spec_len'$1_string_String_$1_property_map_PropertyValue'($t3->$map) < 1000)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:43:5+332 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun property_map::new [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1024 +procedure {:inline 1} $1_property_map_new(_$t0: Vec ($1_string_String), _$t1: Vec (Vec (int)), _$t2: Vec ($1_string_String)) returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t3: int; + var $t4: $1_string_String; + var $t5: int; + var $t6: $1_property_map_PropertyMap; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: $1_string_String; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: Vec (int); + var $t29: $1_string_String; + var $t30: $1_property_map_PropertyValue; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_property_map_PropertyMap); + var $t34: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t35: int; + var $t36: int; + var $t37: $1_property_map_PropertyMap; + var $t0: Vec ($1_string_String); + var $t1: Vec (Vec (int)); + var $t2: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t7, Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:17:9+23 + assume {:print "$at(185,437,460)"} true; + assume ($t7 == LenVec($t0)); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$at(184,1720,1721)"} true; + assume {:print "$track_local(93,10,0):", $t0} $t0 == $t0; + + // trace_local[values]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$track_local(93,10,1):", $t1} $t1 == $t1; + + // trace_local[types]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$track_local(93,10,2):", $t2} $t2 == $t2; + + // $t8 := vector::length($t0) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:65:22+21 + assume {:print "$at(184,1874,1895)"} true; + call $t8 := $1_vector_length'$1_string_String'($t0); + if ($abort_flag) { + assume {:print "$at(184,1874,1895)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[length]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:65:13+6 + assume {:print "$track_local(93,10,5):", $t8} $t8 == $t8; + + // $t10 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:27+21 + assume {:print "$at(184,1923,1944)"} true; + $t10 := 1000; + assume $IsValid'u64'($t10); + + // $t11 := <=($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:24+2 + call $t11 := $Le($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + assume {:print "$at(184,1905,2001)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:74+29 +L0: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:74+29 + assume {:print "$at(184,1970,1999)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:50+54 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(184,1946,2000)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + assume {:print "$at(184,1905,2001)"} true; + assume {:print "$track_abort(93,10):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + $t9 := $t13; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:17+6 + assume {:print "$at(184,2019,2025)"} true; +L2: + + // $t14 := vector::length>($t1) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:27+23 + assume {:print "$at(184,2029,2052)"} true; + call $t14 := $1_vector_length'vec'u8''($t1); + if ($abort_flag) { + assume {:print "$at(184,2029,2052)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t15 := ==($t8, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:24+2 + $t15 := $IsEqual'u64'($t8, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + assume {:print "$at(184,2011,2112)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:76+32 +L3: + + // $t16 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:76+32 + assume {:print "$at(184,2078,2110)"} true; + $t16 := 4; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:52+57 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(184,2054,2111)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + assume {:print "$at(184,2011,2112)"} true; + assume {:print "$track_abort(93,10):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + $t9 := $t17; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:17+6 + assume {:print "$at(184,2130,2136)"} true; +L5: + + // $t18 := vector::length($t2) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:27+22 + assume {:print "$at(184,2140,2162)"} true; + call $t18 := $1_vector_length'$1_string_String'($t2); + if ($abort_flag) { + assume {:print "$at(184,2140,2162)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t19 := ==($t8, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:24+2 + $t19 := $IsEqual'u64'($t8, $t18); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + assume {:print "$at(184,2122,2221)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:75+31 +L6: + + // $t20 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:75+31 + assume {:print "$at(184,2188,2219)"} true; + $t20 := 5; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_argument($t20) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:51+56 + call $t21 := $1_error_invalid_argument($t20); + if ($abort_flag) { + assume {:print "$at(184,2164,2220)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + assume {:print "$at(184,2122,2221)"} true; + assume {:print "$track_abort(93,10):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + $t9 := $t21; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:26+7 + assume {:print "$at(184,2249,2256)"} true; +L8: + + // $t6 := property_map::empty() on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:26+7 + assume {:print "$at(184,2249,2256)"} true; + call $t6 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(184,2249,2256)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:13+10 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:72:17+1 + assume {:print "$at(184,2275,2276)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // trace_local[i]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:72:13+1 + assume {:print "$track_local(93,10,3):", $t22} $t22 == $t22; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$at(184,2293,2294)"} true; +L15: + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$at(184,2293,2294)"} true; + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t3); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t6); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_string_String'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'bool'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'vec'u8''($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_string_String'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t33)); + + // $t34 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''($Dereference($t34)); + + // trace_local[i]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$info(): enter loop, variable(s) i, properties havocked and reassigned"} true; + assume {:print "$track_local(93,10,3):", $t3} $t3 == $t3; + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume !$abort_flag; + + // $t23 := <($t3, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:18+1 + call $t23 := $Lt($t3, $t8); + + // if ($t23) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:9+432 + if ($t23) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:9+432 +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:39+5 + assume {:print "$at(184,2345,2350)"} true; +L11: + + // $t24 := vector::borrow($t0, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:24+24 + assume {:print "$at(184,2330,2354)"} true; + call $t24 := $1_vector_borrow'$1_string_String'($t0, $t3); + if ($abort_flag) { + assume {:print "$at(184,2330,2354)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[key]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:17+3 + assume {:print "$track_local(93,10,4):", $t24} $t24 == $t24; + + // $t25 := string::length($t24) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:21+20 + assume {:print "$at(184,2376,2396)"} true; + call $t25 := $1_string_length($t24); + if ($abort_flag) { + assume {:print "$at(184,2376,2396)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t26 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:45+24 + $t26 := 128; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:42+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + if ($t27) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + assume {:print "$at(184,2368,2479)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:95+27 +L12: + + // $t35 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:95+27 + assume {:print "$at(184,2450,2477)"} true; + $t35 := 7; + assume $IsValid'u64'($t35); + + // $t36 := error::invalid_argument($t35) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:71+52 + call $t36 := $1_error_invalid_argument($t35); + if ($abort_flag) { + assume {:print "$at(184,2426,2478)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + assume {:print "$at(184,2368,2479)"} true; + assume {:print "$track_abort(93,10):", $t36} $t36 == $t36; + + // $t9 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + $t9 := $t36; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + goto L18; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:22+10 + assume {:print "$at(184,2531,2541)"} true; +L14: + + // $t33 := borrow_local($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:22+10 + assume {:print "$at(184,2531,2541)"} true; + $t33 := $Mutation($Local(6), EmptyVec(), $t6); + + // $t34 := borrow_field.map($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:17+19 + $t34 := $ChildMutation($t33, 0, $Dereference($t33)->$map); + + // $t28 := vector::borrow>($t1, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:41+26 + assume {:print "$at(184,2608,2634)"} true; + call $t28 := $1_vector_borrow'vec'u8''($t1, $t3); + if ($abort_flag) { + assume {:print "$at(184,2608,2634)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t29 := vector::borrow($t2, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:76+25 + call $t29 := $1_vector_borrow'$1_string_String'($t2, $t3); + if ($abort_flag) { + assume {:print "$at(184,2643,2668)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t30 := pack property_map::PropertyValue($t28, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:17+86 + $t30 := $1_property_map_PropertyValue($t28, $t29); + + // simple_map::add($t34, $t24, $t30) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + assume {:print "$at(184,2493,2684)"} true; + call $t34 := $1_simple_map_add'$1_string_String_$1_property_map_PropertyValue'($t34, $t24, $t30); + if ($abort_flag) { + assume {:print "$at(184,2493,2684)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // write_back[Reference($t33).map (simple_map::SimpleMap)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + $t33 := $UpdateMutation($t33, $Update'$1_property_map_PropertyMap'_map($Dereference($t33), $Dereference($t34))); + + // write_back[LocalRoot($t6)@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + $t6 := $Dereference($t33); + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:21+1 + assume {:print "$at(184,2706,2707)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t3, $t31) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:19+1 + call $t32 := $AddU64($t3, $t31); + if ($abort_flag) { + assume {:print "$at(184,2704,2705)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[i]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:13+1 + assume {:print "$track_local(93,10,3):", $t32} $t32 == $t32; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:22+1 + goto L16; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; +L9: + + // $t37 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; + $t37 := $t6; + + // trace_return[0]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$track_return(93,10,0):", $t37} $t37 == $t37; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + goto L17; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + // Loop invariant checking block for the loop started with header: L15 +L16: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; + assume false; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; +L17: + + // return $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; + $ret0 := $t37; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 +L18: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun property_map::new [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1024 +procedure {:timeLimit 80} $1_property_map_new$verify(_$t0: Vec ($1_string_String), _$t1: Vec (Vec (int)), _$t2: Vec ($1_string_String)) returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t3: int; + var $t4: $1_string_String; + var $t5: int; + var $t6: $1_property_map_PropertyMap; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: bool; + var $t24: $1_string_String; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: Vec (int); + var $t29: $1_string_String; + var $t30: $1_property_map_PropertyValue; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_property_map_PropertyMap); + var $t34: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t35: int; + var $t36: int; + var $t37: $1_property_map_PropertyMap; + var $t0: Vec ($1_string_String); + var $t1: Vec (Vec (int)); + var $t2: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$at(184,1720,1721)"} true; + assume $IsValid'vec'$1_string_String''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume $IsValid'vec'vec'u8'''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume $IsValid'vec'$1_string_String''($t2); + + // assume Identical($t7, Len($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:17:9+23 + assume {:print "$at(185,437,460)"} true; + assume ($t7 == LenVec($t0)); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$at(184,1720,1721)"} true; + assume {:print "$track_local(93,10,0):", $t0} $t0 == $t0; + + // trace_local[values]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$track_local(93,10,1):", $t1} $t1 == $t1; + + // trace_local[types]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:60:5+1 + assume {:print "$track_local(93,10,2):", $t2} $t2 == $t2; + + // $t8 := vector::length($t0) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:65:22+21 + assume {:print "$at(184,1874,1895)"} true; + call $t8 := $1_vector_length'$1_string_String'($t0); + if ($abort_flag) { + assume {:print "$at(184,1874,1895)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[length]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:65:13+6 + assume {:print "$track_local(93,10,5):", $t8} $t8 == $t8; + + // $t10 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:27+21 + assume {:print "$at(184,1923,1944)"} true; + $t10 := 1000; + assume $IsValid'u64'($t10); + + // $t11 := <=($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:24+2 + call $t11 := $Le($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + assume {:print "$at(184,1905,2001)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:74+29 +L0: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:74+29 + assume {:print "$at(184,1970,1999)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:50+54 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(184,1946,2000)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + assume {:print "$at(184,1905,2001)"} true; + assume {:print "$track_abort(93,10):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + $t9 := $t13; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:66:9+96 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:17+6 + assume {:print "$at(184,2019,2025)"} true; +L2: + + // $t14 := vector::length>($t1) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:27+23 + assume {:print "$at(184,2029,2052)"} true; + call $t14 := $1_vector_length'vec'u8''($t1); + if ($abort_flag) { + assume {:print "$at(184,2029,2052)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t15 := ==($t8, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:24+2 + $t15 := $IsEqual'u64'($t8, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + assume {:print "$at(184,2011,2112)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:76+32 +L3: + + // $t16 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:76+32 + assume {:print "$at(184,2078,2110)"} true; + $t16 := 4; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:52+57 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(184,2054,2111)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + assume {:print "$at(184,2011,2112)"} true; + assume {:print "$track_abort(93,10):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + $t9 := $t17; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:67:9+101 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:17+6 + assume {:print "$at(184,2130,2136)"} true; +L5: + + // $t18 := vector::length($t2) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:27+22 + assume {:print "$at(184,2140,2162)"} true; + call $t18 := $1_vector_length'$1_string_String'($t2); + if ($abort_flag) { + assume {:print "$at(184,2140,2162)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t19 := ==($t8, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:24+2 + $t19 := $IsEqual'u64'($t8, $t18); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + assume {:print "$at(184,2122,2221)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:75+31 +L6: + + // $t20 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:75+31 + assume {:print "$at(184,2188,2219)"} true; + $t20 := 5; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_argument($t20) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:51+56 + call $t21 := $1_error_invalid_argument($t20); + if ($abort_flag) { + assume {:print "$at(184,2164,2220)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + assume {:print "$at(184,2122,2221)"} true; + assume {:print "$track_abort(93,10):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + $t9 := $t21; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:68:9+99 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:26+7 + assume {:print "$at(184,2249,2256)"} true; +L8: + + // $t6 := property_map::empty() on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:26+7 + assume {:print "$at(184,2249,2256)"} true; + call $t6 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(184,2249,2256)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:70:13+10 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:72:17+1 + assume {:print "$at(184,2275,2276)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // trace_local[i]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:72:13+1 + assume {:print "$track_local(93,10,3):", $t22} $t22 == $t22; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$at(184,2293,2294)"} true; +L15: + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$at(184,2293,2294)"} true; + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t3); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t6); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'bool'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_string_String'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'bool'($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'vec'u8''($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_string_String'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t33)); + + // $t34 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + havoc $t34; + + // assume WellFormed($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume $IsValid'$1_simple_map_SimpleMap'$1_string_String_$1_property_map_PropertyValue''($Dereference($t34)); + + // trace_local[i]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$info(): enter loop, variable(s) i, properties havocked and reassigned"} true; + assume {:print "$track_local(93,10,3):", $t3} $t3 == $t3; + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:16+1 + assume !$abort_flag; + + // $t23 := <($t3, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:18+1 + call $t23 := $Lt($t3, $t8); + + // if ($t23) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:9+432 + if ($t23) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:73:9+432 +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:39+5 + assume {:print "$at(184,2345,2350)"} true; +L11: + + // $t24 := vector::borrow($t0, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:24+24 + assume {:print "$at(184,2330,2354)"} true; + call $t24 := $1_vector_borrow'$1_string_String'($t0, $t3); + if ($abort_flag) { + assume {:print "$at(184,2330,2354)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[key]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:74:17+3 + assume {:print "$track_local(93,10,4):", $t24} $t24 == $t24; + + // $t25 := string::length($t24) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:21+20 + assume {:print "$at(184,2376,2396)"} true; + call $t25 := $1_string_length($t24); + if ($abort_flag) { + assume {:print "$at(184,2376,2396)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t26 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:45+24 + $t26 := 128; + assume $IsValid'u64'($t26); + + // $t27 := <=($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:42+2 + call $t27 := $Le($t25, $t26); + + // if ($t27) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + if ($t27) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + assume {:print "$at(184,2368,2479)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:95+27 +L12: + + // $t35 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:95+27 + assume {:print "$at(184,2450,2477)"} true; + $t35 := 7; + assume $IsValid'u64'($t35); + + // $t36 := error::invalid_argument($t35) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:71+52 + call $t36 := $1_error_invalid_argument($t35); + if ($abort_flag) { + assume {:print "$at(184,2426,2478)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_abort($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + assume {:print "$at(184,2368,2479)"} true; + assume {:print "$track_abort(93,10):", $t36} $t36 == $t36; + + // $t9 := move($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + $t9 := $t36; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:75:13+111 + goto L18; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:22+10 + assume {:print "$at(184,2531,2541)"} true; +L14: + + // $t33 := borrow_local($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:22+10 + assume {:print "$at(184,2531,2541)"} true; + $t33 := $Mutation($Local(6), EmptyVec(), $t6); + + // $t34 := borrow_field.map($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:77:17+19 + $t34 := $ChildMutation($t33, 0, $Dereference($t33)->$map); + + // $t28 := vector::borrow>($t1, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:41+26 + assume {:print "$at(184,2608,2634)"} true; + call $t28 := $1_vector_borrow'vec'u8''($t1, $t3); + if ($abort_flag) { + assume {:print "$at(184,2608,2634)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t29 := vector::borrow($t2, $t3) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:76+25 + call $t29 := $1_vector_borrow'$1_string_String'($t2, $t3); + if ($abort_flag) { + assume {:print "$at(184,2643,2668)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // $t30 := pack property_map::PropertyValue($t28, $t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:79:17+86 + $t30 := $1_property_map_PropertyValue($t28, $t29); + + // simple_map::add($t34, $t24, $t30) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + assume {:print "$at(184,2493,2684)"} true; + call $t34 := $1_simple_map_add'$1_string_String_$1_property_map_PropertyValue'($t34, $t24, $t30); + if ($abort_flag) { + assume {:print "$at(184,2493,2684)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // write_back[Reference($t33).map (simple_map::SimpleMap)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + $t33 := $UpdateMutation($t33, $Update'$1_property_map_PropertyMap'_map($Dereference($t33), $Dereference($t34))); + + // write_back[LocalRoot($t6)@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + $t6 := $Dereference($t33); + + // trace_local[properties]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:76:13+191 + assume {:print "$track_local(93,10,6):", $t6} $t6 == $t6; + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:21+1 + assume {:print "$at(184,2706,2707)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := +($t3, $t31) on_abort goto L18 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:19+1 + call $t32 := $AddU64($t3, $t31); + if ($abort_flag) { + assume {:print "$at(184,2704,2705)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,10):", $t9} $t9 == $t9; + goto L18; + } + + // trace_local[i]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:13+1 + assume {:print "$track_local(93,10,3):", $t32} $t32 == $t32; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:81:22+1 + goto L16; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; +L9: + + // $t37 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; + $t37 := $t6; + + // trace_return[0]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$track_return(93,10,0):", $t37} $t37 == $t37; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + goto L17; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + // Loop invariant checking block for the loop started with header: L15 +L16: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:83:9+10 + assume {:print "$at(184,2728,2738)"} true; + assume false; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; +L17: + + // assert Not(Not(Le($t7, 1000))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:19:9+45 + assume {:print "$at(185,470,515)"} true; + assert {:msg "assert_failed(185,470,515): function does not abort under this condition"} + !!($t7 <= 1000); + + // assert Not(Not(Eq($t7, vector::$length[]>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:20:9+46 + assume {:print "$at(185,524,570)"} true; + assert {:msg "assert_failed(185,524,570): function does not abort under this condition"} + !!$IsEqual'num'($t7, $1_vector_$length'vec'u8''($t1)); + + // assert Not(Not(Eq($t7, vector::$length[]($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:21:9+45 + assume {:print "$at(185,579,624)"} true; + assert {:msg "assert_failed(185,579,624): function does not abort under this condition"} + !!$IsEqual'num'($t7, $1_vector_$length'$1_string_String'($t2)); + + // return $t37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:21:9+45 + $ret0 := $t37; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; +L18: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:84:5+1 + assume {:print "$at(184,2743,2744)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun property_map::contains_key [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+118 +procedure {:inline 1} $1_property_map_contains_key(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: Table int ($1_property_map_PropertyValue); + var $t3: bool; + var $t4: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume {:print "$at(184,3765,3766)"} true; + assume {:print "$track_local(93,4,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume {:print "$track_local(93,4,1):", $t1} $t1 == $t1; + + // $t2 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:34+8 + assume {:print "$at(184,3863,3871)"} true; + $t2 := $t0->$map; + + // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:9+39 + call $t3 := $1_simple_map_contains_key'$1_string_String_$1_property_map_PropertyValue'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(184,3838,3877)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,4):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:9+39 + assume {:print "$track_return(93,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 + assume {:print "$at(184,3882,3883)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 + assume {:print "$at(184,3882,3883)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 + assume {:print "$at(184,3882,3883)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun property_map::contains_key [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+118 +procedure {:timeLimit 80} $1_property_map_contains_key$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: Table int ($1_property_map_PropertyValue); + var $t3: bool; + var $t4: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume {:print "$at(184,3765,3766)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume {:print "$track_local(93,4,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:114:5+1 + assume {:print "$track_local(93,4,1):", $t1} $t1 == $t1; + + // $t2 := get_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:34+8 + assume {:print "$at(184,3863,3871)"} true; + $t2 := $t0->$map; + + // $t3 := simple_map::contains_key($t2, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:9+39 + call $t3 := $1_simple_map_contains_key'$1_string_String_$1_property_map_PropertyValue'($t2, $t1); + if ($abort_flag) { + assume {:print "$at(184,3838,3877)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(93,4):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:115:9+39 + assume {:print "$track_return(93,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 + assume {:print "$at(184,3882,3883)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:40:9+16 + assume {:print "$at(185,1129,1145)"} true; + assert {:msg "assert_failed(185,1129,1145): function does not abort under this condition"} + !false; + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:40:9+16 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:116:5+1 + assume {:print "$at(184,3882,3883)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:39:5+89 + assume {:print "$at(185,1062,1151)"} true; + assert {:msg "assert_failed(185,1062,1151): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:39:5+89 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun property_map::read_address [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:173:5+246 +procedure {:timeLimit 80} $1_property_map_read_address$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:173:5+1 + assume {:print "$at(184,6060,6061)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:173:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, [97, 100, 100, 114, 101, 115, 115]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:119:9+21 + assume {:print "$at(185,3870,3891)"} true; + assume ($t3 == ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:122:9+46 + assume {:print "$at(185,4022,4068)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:173:5+1 + assume {:print "$at(184,6060,6061)"} true; + assume {:print "$track_local(93,12,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:173:5+1 + assume {:print "$track_local(93,12,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:174:20+16 + assume {:print "$at(184,6147,6163)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,6147,6163)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,12):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:174:13+4 + assume {:print "$track_local(93,12,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:17+9 + assume {:print "$at(184,6181,6190)"} true; + $t7 := $t5->$type; + + // $t8 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:43+10 + $t8 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:30+24 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,6194,6218)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,12):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 + assume {:print "$at(184,6173,6258)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:77+15 + assume {:print "$at(184,6241,6256)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:56+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,6220,6257)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,12):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 + assume {:print "$at(184,6173,6258)"} true; + assume {:print "$track_abort(93,12):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:175:9+85 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:176:30+4 + assume {:print "$at(184,6289,6293)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:176:30+10 + assume {:print "$at(184,6289,6299)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_address($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:176:9+32 + call $t14 := $1_from_bcs_to_address($t13); + if ($abort_flag) { + assume {:print "$at(184,6268,6300)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,12):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:176:9+32 + assume {:print "$track_return(93,12,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:177:5+1 + assume {:print "$at(184,6305,6306)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:120:9+55 + assume {:print "$at(185,3900,3955)"} true; + assert {:msg "assert_failed(185,3900,3955): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:121:9+49 + assume {:print "$at(185,3964,4013)"} true; + assert {:msg "assert_failed(185,3964,4013): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t3); + + // assert Not(Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:123:9+38 + assume {:print "$at(185,4077,4115)"} true; + assert {:msg "assert_failed(185,4077,4115): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3)); + + // assert Not(Not(from_bcs::deserializable[]
(select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:124:9+71 + assume {:print "$at(185,4124,4195)"} true; + assert {:msg "assert_failed(185,4124,4195): function does not abort under this condition"} + !!$1_from_bcs_deserializable'address'($t4->$value); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:124:9+71 + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:177:5+1 + assume {:print "$at(184,6305,6306)"} true; +L4: + + // assert Or(Or(Or(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)), Not(string::spec_internal_check_utf8[]($t3))), Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))), Not(from_bcs::deserializable[]
(select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:115:5+471 + assume {:print "$at(185,3730,4201)"} true; + assert {:msg "assert_failed(185,3730,4201): abort not covered by any of the `aborts_if` clauses"} + (((!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1) || !$1_string_spec_internal_check_utf8($t3)) || !$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3))) || !$1_from_bcs_deserializable'address'($t4->$value)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:115:5+471 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::read_bool [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+234 +procedure {:inline 1} $1_property_map_read_bool(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: bool; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t3 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume {:print "$at(184,6552,6553)"} true; + assume {:print "$track_local(93,13,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume {:print "$track_local(93,13,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:186:20+16 + assume {:print "$at(184,6633,6649)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,6633,6649)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:186:13+4 + assume {:print "$track_local(93,13,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:17+9 + assume {:print "$at(184,6667,6676)"} true; + $t7 := $t5->$type; + + // $t8 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:43+7 + $t8 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:30+21 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,6680,6701)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + assume {:print "$at(184,6659,6741)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:74+15 + assume {:print "$at(184,6724,6739)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:53+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,6703,6740)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + assume {:print "$at(184,6659,6741)"} true; + assume {:print "$track_abort(93,13):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:27+4 + assume {:print "$at(184,6769,6773)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:27+10 + assume {:print "$at(184,6769,6779)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_bool($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:9+29 + call $t14 := $1_from_bcs_to_bool($t13); + if ($abort_flag) { + assume {:print "$at(184,6751,6780)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:9+29 + assume {:print "$track_return(93,13,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 + assume {:print "$at(184,6785,6786)"} true; +L3: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 + assume {:print "$at(184,6785,6786)"} true; + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 +L4: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 + assume {:print "$at(184,6785,6786)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::read_bool [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+234 +procedure {:timeLimit 80} $1_property_map_read_bool$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: bool; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume {:print "$at(184,6552,6553)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t3 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume {:print "$at(184,6552,6553)"} true; + assume {:print "$track_local(93,13,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:185:5+1 + assume {:print "$track_local(93,13,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:186:20+16 + assume {:print "$at(184,6633,6649)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,6633,6649)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:186:13+4 + assume {:print "$track_local(93,13,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:17+9 + assume {:print "$at(184,6667,6676)"} true; + $t7 := $t5->$type; + + // $t8 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:43+7 + $t8 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:30+21 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,6680,6701)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + assume {:print "$at(184,6659,6741)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:74+15 + assume {:print "$at(184,6724,6739)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:53+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,6703,6740)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + assume {:print "$at(184,6659,6741)"} true; + assume {:print "$track_abort(93,13):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:187:9+82 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:27+4 + assume {:print "$at(184,6769,6773)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:27+10 + assume {:print "$at(184,6769,6779)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_bool($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:9+29 + call $t14 := $1_from_bcs_to_bool($t13); + if ($abort_flag) { + assume {:print "$at(184,6751,6780)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,13):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:188:9+29 + assume {:print "$track_return(93,13,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 + assume {:print "$at(184,6785,6786)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:144:9+55 + assume {:print "$at(185,4833,4888)"} true; + assert {:msg "assert_failed(185,4833,4888): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:145:9+49 + assume {:print "$at(185,4897,4946)"} true; + assert {:msg "assert_failed(185,4897,4946): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t3); + + // assert Not(Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:147:9+38 + assume {:print "$at(185,5010,5048)"} true; + assert {:msg "assert_failed(185,5010,5048): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3)); + + // assert Not(Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:148:9+68 + assume {:print "$at(185,5057,5125)"} true; + assert {:msg "assert_failed(185,5057,5125): function does not abort under this condition"} + !!$1_from_bcs_deserializable'bool'($t4->$value); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:148:9+68 + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:189:5+1 + assume {:print "$at(184,6785,6786)"} true; +L4: + + // assert Or(Or(Or(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)), Not(string::spec_internal_check_utf8[]($t3))), Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))), Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:139:5+459 + assume {:print "$at(185,4672,5131)"} true; + assert {:msg "assert_failed(185,4672,5131): abort not covered by any of the `aborts_if` clauses"} + (((!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1) || !$1_string_spec_internal_check_utf8($t3)) || !$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3))) || !$1_from_bcs_deserializable'bool'($t4->$value)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:139:5+459 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::read_string [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:155:5+255 +procedure {:timeLimit 80} $1_property_map_read_string$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: $1_property_map_PropertyValue; + var $t4: $1_property_map_PropertyValue; + var $t5: int; + var $t6: $1_string_String; + var $t7: Vec (int); + var $t8: $1_string_String; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: Vec (int); + var $t13: $1_string_String; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:155:5+1 + assume {:print "$at(184,5331,5332)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:155:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:82:9+46 + assume {:print "$at(185,2528,2574)"} true; + assume ($t3 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:155:5+1 + assume {:print "$at(184,5331,5332)"} true; + assume {:print "$track_local(93,14,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:155:5+1 + assume {:print "$track_local(93,14,1):", $t1} $t1 == $t1; + + // $t4 := property_map::borrow($t0, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:156:20+16 + assume {:print "$at(184,5416,5432)"} true; + call $t4 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,5416,5432)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_local[prop]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:156:13+4 + assume {:print "$track_local(93,14,2):", $t4} $t4 == $t4; + + // $t6 := get_field.type($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:17+9 + assume {:print "$at(184,5450,5459)"} true; + $t6 := $t4->$type; + + // $t7 := [48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:43+22 + $t7 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103)); + assume $IsValid'vec'u8''($t7); + + // $t8 := string::utf8($t7) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:30+36 + call $t8 := $1_string_utf8($t7); + if ($abort_flag) { + assume {:print "$at(184,5463,5499)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,14):", $t5} $t5 == $t5; + goto L4; + } + + // $t9 := ==($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:27+2 + $t9 := $IsEqual'$1_string_String'($t6, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 + assume {:print "$at(184,5442,5539)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 +L0: + + // $t10 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:89+15 + assume {:print "$at(184,5522,5537)"} true; + $t10 := 6; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_state($t10) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:68+37 + call $t11 := $1_error_invalid_state($t10); + if ($abort_flag) { + assume {:print "$at(184,5501,5538)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 + assume {:print "$at(184,5442,5539)"} true; + assume {:print "$track_abort(93,14):", $t11} $t11 == $t11; + + // $t5 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 + $t5 := $t11; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:157:9+97 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:158:29+4 + assume {:print "$at(184,5569,5573)"} true; +L2: + + // $t12 := get_field.value($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:158:29+10 + assume {:print "$at(184,5569,5579)"} true; + $t12 := $t4->$value; + + // $t13 := from_bcs::to_string($t12) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:158:9+31 + call $t13 := $1_from_bcs_to_string($t12); + if ($abort_flag) { + assume {:print "$at(184,5549,5580)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(93,14):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:158:9+31 + assume {:print "$track_return(93,14,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:159:5+1 + assume {:print "$at(184,5585,5586)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:80:9+55 + assume {:print "$at(185,2387,2442)"} true; + assert {:msg "assert_failed(185,2387,2442): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:81:9+68 + assume {:print "$at(185,2451,2519)"} true; + assert {:msg "assert_failed(185,2451,2519): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103))); + + // assert Not(Neq(select property_map::PropertyValue.type($t3), property_map::spec_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:83:9+57 + assume {:print "$at(185,2583,2640)"} true; + assert {:msg "assert_failed(185,2583,2640): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t3->$type, $1_property_map_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103)))); + + // assert Not(Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:84:9+70 + assume {:print "$at(185,2649,2719)"} true; + assert {:msg "assert_failed(185,2649,2719): function does not abort under this condition"} + !!$1_from_bcs_deserializable'$1_string_String'($t3->$value); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:84:9+70 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:159:5+1 + assume {:print "$at(184,5585,5586)"} true; +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:159:5+1 + assume {:print "$at(184,5585,5586)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun property_map::read_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:179:5+234 +procedure {:timeLimit 80} $1_property_map_read_u128$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:179:5+1 + assume {:print "$at(184,6312,6313)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:179:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, [117, 49, 50, 56]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:131:9+18 + assume {:print "$at(185,4341,4359)"} true; + assume ($t3 == MakeVec4(117, 49, 50, 56)); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:134:9+46 + assume {:print "$at(185,4490,4536)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:179:5+1 + assume {:print "$at(184,6312,6313)"} true; + assume {:print "$track_local(93,15,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:179:5+1 + assume {:print "$track_local(93,15,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:180:20+16 + assume {:print "$at(184,6393,6409)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,6393,6409)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,15):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:180:13+4 + assume {:print "$track_local(93,15,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:17+9 + assume {:print "$at(184,6427,6436)"} true; + $t7 := $t5->$type; + + // $t8 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:43+7 + $t8 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:30+21 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,6440,6461)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,15):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 + assume {:print "$at(184,6419,6501)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:74+15 + assume {:print "$at(184,6484,6499)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:53+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,6463,6500)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,15):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 + assume {:print "$at(184,6419,6501)"} true; + assume {:print "$track_abort(93,15):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:181:9+82 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:182:27+4 + assume {:print "$at(184,6529,6533)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:182:27+10 + assume {:print "$at(184,6529,6539)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_u128($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:182:9+29 + call $t14 := $1_from_bcs_to_u128($t13); + if ($abort_flag) { + assume {:print "$at(184,6511,6540)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,15):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:182:9+29 + assume {:print "$track_return(93,15,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:183:5+1 + assume {:print "$at(184,6545,6546)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:132:9+55 + assume {:print "$at(185,4368,4423)"} true; + assert {:msg "assert_failed(185,4368,4423): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:133:9+49 + assume {:print "$at(185,4432,4481)"} true; + assert {:msg "assert_failed(185,4432,4481): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t3); + + // assert Not(Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:135:9+38 + assume {:print "$at(185,4545,4583)"} true; + assert {:msg "assert_failed(185,4545,4583): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3)); + + // assert Not(Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:136:9+68 + assume {:print "$at(185,4592,4660)"} true; + assert {:msg "assert_failed(185,4592,4660): function does not abort under this condition"} + !!$1_from_bcs_deserializable'u128'($t4->$value); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:136:9+68 + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:183:5+1 + assume {:print "$at(184,6545,6546)"} true; +L4: + + // assert Or(Or(Or(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)), Not(string::spec_internal_check_utf8[]($t3))), Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))), Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:127:5+459 + assume {:print "$at(185,4207,4666)"} true; + assert {:msg "assert_failed(185,4207,4666): abort not covered by any of the `aborts_if` clauses"} + (((!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1) || !$1_string_spec_internal_check_utf8($t3)) || !$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3))) || !$1_from_bcs_deserializable'u128'($t4->$value)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:127:5+459 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::read_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:167:5+230 +procedure {:timeLimit 80} $1_property_map_read_u64$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:167:5+1 + assume {:print "$at(184,5824,5825)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:167:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, [117, 54, 52]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:107:9+17 + assume {:print "$at(185,3401,3418)"} true; + assume ($t3 == MakeVec3(117, 54, 52)); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:110:9+46 + assume {:print "$at(185,3549,3595)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:167:5+1 + assume {:print "$at(184,5824,5825)"} true; + assume {:print "$track_local(93,16,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:167:5+1 + assume {:print "$track_local(93,16,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:168:20+16 + assume {:print "$at(184,5903,5919)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,5903,5919)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,16):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:168:13+4 + assume {:print "$track_local(93,16,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:17+9 + assume {:print "$at(184,5937,5946)"} true; + $t7 := $t5->$type; + + // $t8 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:43+6 + $t8 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:30+20 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,5950,5970)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,16):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 + assume {:print "$at(184,5929,6010)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:73+15 + assume {:print "$at(184,5993,6008)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:52+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,5972,6009)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,16):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 + assume {:print "$at(184,5929,6010)"} true; + assume {:print "$track_abort(93,16):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:169:9+81 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:170:26+4 + assume {:print "$at(184,6037,6041)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:170:26+10 + assume {:print "$at(184,6037,6047)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_u64($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:170:9+28 + call $t14 := $1_from_bcs_to_u64($t13); + if ($abort_flag) { + assume {:print "$at(184,6020,6048)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,16):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:170:9+28 + assume {:print "$track_return(93,16,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:171:5+1 + assume {:print "$at(184,6053,6054)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:108:9+55 + assume {:print "$at(185,3427,3482)"} true; + assert {:msg "assert_failed(185,3427,3482): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:109:9+49 + assume {:print "$at(185,3491,3540)"} true; + assert {:msg "assert_failed(185,3491,3540): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t3); + + // assert Not(Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:111:9+38 + assume {:print "$at(185,3604,3642)"} true; + assert {:msg "assert_failed(185,3604,3642): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3)); + + // assert Not(Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:112:9+67 + assume {:print "$at(185,3651,3718)"} true; + assert {:msg "assert_failed(185,3651,3718): function does not abort under this condition"} + !!$1_from_bcs_deserializable'u64'($t4->$value); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:112:9+67 + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:171:5+1 + assume {:print "$at(184,6053,6054)"} true; +L4: + + // assert Or(Or(Or(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)), Not(string::spec_internal_check_utf8[]($t3))), Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))), Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:103:5+455 + assume {:print "$at(185,3269,3724)"} true; + assert {:msg "assert_failed(185,3269,3724): abort not covered by any of the `aborts_if` clauses"} + (((!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1) || !$1_string_spec_internal_check_utf8($t3)) || !$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3))) || !$1_from_bcs_deserializable'u64'($t4->$value)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:103:5+455 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::read_u8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:161:5+226 +procedure {:timeLimit 80} $1_property_map_read_u8$verify(_$t0: $1_property_map_PropertyMap, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t3: Vec (int); + var $t4: $1_property_map_PropertyValue; + var $t5: $1_property_map_PropertyValue; + var $t6: int; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: Vec (int); + var $t14: int; + var $t0: $1_property_map_PropertyMap; + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u8': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:161:5+1 + assume {:print "$at(184,5592,5593)"} true; + assume $IsValid'$1_property_map_PropertyMap'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:161:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume Identical($t3, [117, 56]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:95:9+16 + assume {:print "$at(185,2942,2958)"} true; + assume ($t3 == MakeVec2(117, 56)); + + // assume Identical($t4, simple_map::spec_get(select property_map::PropertyMap.map($t0), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:98:9+46 + assume {:print "$at(185,3089,3135)"} true; + assume ($t4 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:161:5+1 + assume {:print "$at(184,5592,5593)"} true; + assume {:print "$track_local(93,17,0):", $t0} $t0 == $t0; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:161:5+1 + assume {:print "$track_local(93,17,1):", $t1} $t1 == $t1; + + // $t5 := property_map::borrow($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:162:20+16 + assume {:print "$at(184,5669,5685)"} true; + call $t5 := $1_property_map_borrow($t0, $t1); + if ($abort_flag) { + assume {:print "$at(184,5669,5685)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[prop]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:162:13+4 + assume {:print "$track_local(93,17,2):", $t5} $t5 == $t5; + + // $t7 := get_field.type($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:17+9 + assume {:print "$at(184,5703,5712)"} true; + $t7 := $t5->$type; + + // $t8 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:43+5 + $t8 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:30+19 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(184,5716,5735)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,17):", $t6} $t6 == $t6; + goto L4; + } + + // $t10 := ==($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:27+2 + $t10 := $IsEqual'$1_string_String'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 + assume {:print "$at(184,5695,5775)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 +L0: + + // $t11 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:72+15 + assume {:print "$at(184,5758,5773)"} true; + $t11 := 6; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:51+37 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(184,5737,5774)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 + assume {:print "$at(184,5695,5775)"} true; + assume {:print "$track_abort(93,17):", $t12} $t12 == $t12; + + // $t6 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 + $t6 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:163:9+80 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:164:25+4 + assume {:print "$at(184,5801,5805)"} true; +L2: + + // $t13 := get_field.value($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:164:25+10 + assume {:print "$at(184,5801,5811)"} true; + $t13 := $t5->$value; + + // $t14 := from_bcs::to_u8($t13) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:164:9+27 + call $t14 := $1_from_bcs_to_u8($t13); + if ($abort_flag) { + assume {:print "$at(184,5785,5812)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,17):", $t6} $t6 == $t6; + goto L4; + } + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:164:9+27 + assume {:print "$track_return(93,17,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:165:5+1 + assume {:print "$at(184,5817,5818)"} true; +L3: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:96:9+55 + assume {:print "$at(185,2967,3022)"} true; + assert {:msg "assert_failed(185,2967,3022): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1); + + // assert Not(Not(string::spec_internal_check_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:97:9+49 + assume {:print "$at(185,3031,3080)"} true; + assert {:msg "assert_failed(185,3031,3080): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8($t3); + + // assert Not(Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:99:9+38 + assume {:print "$at(185,3144,3182)"} true; + assert {:msg "assert_failed(185,3144,3182): function does not abort under this condition"} + !!$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3)); + + // assert Not(Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:100:9+66 + assume {:print "$at(185,3191,3257)"} true; + assert {:msg "assert_failed(185,3191,3257): function does not abort under this condition"} + !!$1_from_bcs_deserializable'u8'($t4->$value); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:100:9+66 + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:165:5+1 + assume {:print "$at(184,5817,5818)"} true; +L4: + + // assert Or(Or(Or(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t0), $t1)), Not(string::spec_internal_check_utf8[]($t3))), Neq(select property_map::PropertyValue.type($t4), property_map::spec_utf8[]($t3))), Not(from_bcs::deserializable[](select property_map::PropertyValue.value($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:91:5+451 + assume {:print "$at(185,2812,3263)"} true; + assert {:msg "assert_failed(185,2812,3263): abort not covered by any of the `aborts_if` clauses"} + (((!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t0->$map, $t1) || !$1_string_spec_internal_check_utf8($t3)) || !$IsEqual'$1_string_String'($t4->$type, $1_property_map_spec_utf8($t3))) || !$1_from_bcs_deserializable'u8'($t4->$value)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:91:5+451 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::borrow_type [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:195:5+86 +procedure {:timeLimit 80} $1_property_map_borrow_type$verify(_$t0: $1_property_map_PropertyValue) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: $1_string_String; + var $t0: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:195:5+1 + assume {:print "$at(184,6890,6891)"} true; + assume $IsValid'$1_property_map_PropertyValue'($t0); + + // trace_local[property]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:195:5+1 + assume {:print "$track_local(93,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.type($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:196:9+13 + assume {:print "$at(184,6957,6970)"} true; + $t1 := $t0->$type; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:196:9+13 + assume {:print "$track_return(93,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:197:5+1 + assume {:print "$at(184,6975,6976)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:156:9+16 + assume {:print "$at(185,5292,5308)"} true; + assert {:msg "assert_failed(185,5292,5308): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:156:9+16 + $ret0 := $t1; + return; + +} + +// fun property_map::borrow_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:191:5+92 +procedure {:timeLimit 80} $1_property_map_borrow_value$verify(_$t0: $1_property_map_PropertyValue) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:191:5+1 + assume {:print "$at(184,6792,6793)"} true; + assume $IsValid'$1_property_map_PropertyValue'($t0); + + // trace_local[property]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:191:5+1 + assume {:print "$track_local(93,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.value($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:192:9+14 + assume {:print "$at(184,6864,6878)"} true; + $t1 := $t0->$value; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:192:9+14 + assume {:print "$track_return(93,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:193:5+1 + assume {:print "$at(184,6883,6884)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:152:9+16 + assume {:print "$at(185,5203,5219)"} true; + assert {:msg "assert_failed(185,5203,5219): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:152:9+16 + $ret0 := $t1; + return; + +} + +// fun property_map::create_property_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:258:5+622 +procedure {:timeLimit 80} $1_property_map_create_property_value$verify(_$t0: #0) returns ($ret0: $1_property_map_PropertyValue) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: bool; + var $t6: $1_property_map_PropertyValue; + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: int; + var $t11: Vec (int); + var $t12: $1_string_String; + var $t13: bool; + var $t14: bool; + var $t15: Vec (int); + var $t16: $1_string_String; + var $t17: bool; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: bool; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t23: bool; + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: bool; + var $t27: Vec (int); + var $t28: $1_string_String; + var $t29: Vec (int); + var $t30: Vec (int); + var $t31: Vec (int); + var $t32: $1_string_String; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:258:5+1 + assume {:print "$at(184,8833,8834)"} true; + assume $IsValid'#0'($t0); + + // assume Identical($t8, type_info::$type_name<#0>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:200:9+26 + assume {:print "$at(185,6426,6452)"} true; + assume ($t8 == $1_type_info_$type_name'#0'()); + + // trace_local[data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:258:5+1 + assume {:print "$at(184,8833,8834)"} true; + assume {:print "$track_local(93,5,0):", $t0} $t0 == $t0; + + // $t9 := type_info::type_name<#0>() on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:259:20+14 + assume {:print "$at(184,8921,8935)"} true; + call $t9 := $1_type_info_type_name'#0'(); + if ($abort_flag) { + assume {:print "$at(184,8921,8935)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // trace_local[name]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:259:13+4 + assume {:print "$track_local(93,5,7):", $t9} $t9 == $t9; + + // $t11 := [98, 111, 111, 108] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:34+7 + assume {:print "$at(184,8983,8990)"} true; + $t11 := MakeVec4(98, 111, 111, 108); + assume $IsValid'vec'u8''($t11); + + // $t12 := string::utf8($t11) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:21+21 + call $t12 := $1_string_utf8($t11); + if ($abort_flag) { + assume {:print "$at(184,8970,8991)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t13 := ==($t9, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:18+2 + $t13 := $IsEqual'$1_string_String'($t9, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 +L1: + + // $t14 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 + assume {:print "$at(184,8962,9038)"} true; + $t14 := true; + assume $IsValid'bool'($t14); + + // $t1 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 + $t1 := $t14; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:262:17+4 + assume {:print "$at(184,9011,9015)"} true; +L0: + + // $t15 := [117, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:262:38+5 + assume {:print "$at(184,9032,9037)"} true; + $t15 := MakeVec2(117, 56); + assume $IsValid'vec'u8''($t15); + + // $t16 := string::utf8($t15) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:262:25+19 + call $t16 := $1_string_utf8($t15); + if ($abort_flag) { + assume {:print "$at(184,9019,9038)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t1 := ==($t9, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:262:22+2 + $t1 := $IsEqual'$1_string_String'($t9, $t16); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+76 + assume {:print "$at(184,8962,9038)"} true; +L2: + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 + assume {:print "$at(184,8962,9086)"} true; + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 +L4: + + // $t17 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 + assume {:print "$at(184,8962,9086)"} true; + $t17 := true; + assume $IsValid'bool'($t17); + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 + $t2 := $t17; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:263:17+4 + assume {:print "$at(184,9058,9062)"} true; +L3: + + // $t18 := [117, 54, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:263:38+6 + assume {:print "$at(184,9079,9085)"} true; + $t18 := MakeVec3(117, 54, 52); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:263:25+20 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(184,9066,9086)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t2 := ==($t9, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:263:22+2 + $t2 := $IsEqual'$1_string_String'($t9, $t19); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+124 + assume {:print "$at(184,8962,9086)"} true; +L5: + + // if ($t2) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 + assume {:print "$at(184,8962,9135)"} true; + if ($t2) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 +L7: + + // $t20 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 + assume {:print "$at(184,8962,9135)"} true; + $t20 := true; + assume $IsValid'bool'($t20); + + // $t3 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 + $t3 := $t20; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:264:17+4 + assume {:print "$at(184,9106,9110)"} true; +L6: + + // $t21 := [117, 49, 50, 56] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:264:38+7 + assume {:print "$at(184,9127,9134)"} true; + $t21 := MakeVec4(117, 49, 50, 56); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:264:25+21 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(184,9114,9135)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t3 := ==($t9, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:264:22+2 + $t3 := $IsEqual'$1_string_String'($t9, $t22); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+173 + assume {:print "$at(184,8962,9135)"} true; +L8: + + // if ($t3) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 + assume {:print "$at(184,8962,9187)"} true; + if ($t3) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 +L10: + + // $t23 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 + assume {:print "$at(184,8962,9187)"} true; + $t23 := true; + assume $IsValid'bool'($t23); + + // $t4 := $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 + $t4 := $t23; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:265:17+4 + assume {:print "$at(184,9155,9159)"} true; +L9: + + // $t24 := [97, 100, 100, 114, 101, 115, 115] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:265:38+10 + assume {:print "$at(184,9176,9186)"} true; + $t24 := ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:265:25+24 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(184,9163,9187)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t4 := ==($t9, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:265:22+2 + $t4 := $IsEqual'$1_string_String'($t9, $t25); + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+225 + assume {:print "$at(184,8962,9187)"} true; +L11: + + // if ($t4) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 + assume {:print "$at(184,8962,9251)"} true; + if ($t4) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 +L13: + + // $t26 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 + assume {:print "$at(184,8962,9251)"} true; + $t26 := true; + assume $IsValid'bool'($t26); + + // $t5 := $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 + $t5 := $t26; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:266:17+4 + assume {:print "$at(184,9207,9211)"} true; +L12: + + // $t27 := [48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:266:38+22 + assume {:print "$at(184,9228,9250)"} true; + $t27 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103)); + assume $IsValid'vec'u8''($t27); + + // $t28 := string::utf8($t27) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:266:25+36 + call $t28 := $1_string_utf8($t27); + if ($abort_flag) { + assume {:print "$at(184,9215,9251)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t5 := ==($t9, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:266:22+2 + $t5 := $IsEqual'$1_string_String'($t9, $t28); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:261:13+289 + assume {:print "$at(184,8962,9251)"} true; +L14: + + // if ($t5) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:260:9+504 + assume {:print "$at(184,8945,9449)"} true; + if ($t5) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:268:56+4 + assume {:print "$at(184,9319,9323)"} true; +L16: + + // $t29 := bcs::to_bytes<#0>($t0) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:268:39+22 + assume {:print "$at(184,9302,9324)"} true; + call $t29 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(184,9302,9324)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t6 := property_map::create_property_value_raw($t29, $t9) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:268:13+55 + call $t6 := $1_property_map_create_property_value_raw($t29, $t9); + if ($abort_flag) { + assume {:print "$at(184,9276,9331)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:260:9+504 + assume {:print "$at(184,8945,9449)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:270:56+4 + assume {:print "$at(184,9404,9408)"} true; +L15: + + // $t30 := bcs::to_bytes<#0>($t0) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:270:39+22 + assume {:print "$at(184,9387,9409)"} true; + call $t30 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(184,9387,9409)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t31 := [118, 101, 99, 116, 111, 114, 60, 117, 56, 62] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:270:76+13 + $t31 := ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)); + assume $IsValid'vec'u8''($t31); + + // $t32 := string::utf8($t31) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:270:63+27 + call $t32 := $1_string_utf8($t31); + if ($abort_flag) { + assume {:print "$at(184,9411,9438)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // $t6 := property_map::create_property_value_raw($t30, $t32) on_abort goto L19 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:270:13+78 + call $t6 := $1_property_map_create_property_value_raw($t30, $t32); + if ($abort_flag) { + assume {:print "$at(184,9361,9439)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(93,5):", $t10} $t10 == $t10; + goto L19; + } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:260:9+504 + assume {:print "$at(184,8945,9449)"} true; +L17: + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:260:9+504 + assume {:print "$at(184,8945,9449)"} true; + assume {:print "$track_return(93,5,0):", $t6} $t6 == $t6; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:272:5+1 + assume {:print "$at(184,9454,9455)"} true; +L18: + + // assert Not(Not(string::spec_internal_check_utf8[]([98, 111, 111, 108]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:201:9+53 + assume {:print "$at(185,6461,6514)"} true; + assert {:msg "assert_failed(185,6461,6514): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(MakeVec4(98, 111, 111, 108)); + + // assert Not(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Not(string::spec_internal_check_utf8[]([117, 56])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:203:9+93 + assume {:print "$at(185,6524,6617)"} true; + assert {:msg "assert_failed(185,6524,6617): function does not abort under this condition"} + !(!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$1_string_spec_internal_check_utf8(MakeVec2(117, 56))); + + // assert Not(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Not(string::spec_internal_check_utf8[]([117, 54, 52])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:206:9+134 + assume {:print "$at(185,6627,6761)"} true; + assert {:msg "assert_failed(185,6627,6761): function does not abort under this condition"} + !((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$1_string_spec_internal_check_utf8(MakeVec3(117, 54, 52))); + + // assert Not(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Not(string::spec_internal_check_utf8[]([117, 49, 50, 56])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:210:9+176 + assume {:print "$at(185,6771,6947)"} true; + assert {:msg "assert_failed(185,6771,6947): function does not abort under this condition"} + !(((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$1_string_spec_internal_check_utf8(MakeVec4(117, 49, 50, 56))); + + // assert Not(And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Not(string::spec_internal_check_utf8[]([97, 100, 100, 114, 101, 115, 115])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:215:9+221 + assume {:print "$at(185,6957,7178)"} true; + assert {:msg "assert_failed(185,6957,7178): function does not abort under this condition"} + !((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$1_string_spec_internal_check_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115)))); + + // assert Not(And(And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Neq($t8, property_map::spec_utf8[]([97, 100, 100, 114, 101, 115, 115]))), Not(string::spec_internal_check_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:221:9+278 + assume {:print "$at(185,7188,7466)"} true; + assert {:msg "assert_failed(185,7188,7466): function does not abort under this condition"} + !(((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))))) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103)))); + + // assert Not(And(And(And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Neq($t8, property_map::spec_utf8[]([97, 100, 100, 114, 101, 115, 115]))), Neq($t8, property_map::spec_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103]))), Not(string::spec_internal_check_utf8[]([118, 101, 99, 116, 111, 114, 60, 117, 56, 62])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:228:9+326 + assume {:print "$at(185,7476,7802)"} true; + assert {:msg "assert_failed(185,7476,7802): function does not abort under this condition"} + !((((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103))))) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62)))); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:228:9+326 + $ret0 := $t6; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:272:5+1 + assume {:print "$at(184,9454,9455)"} true; +L19: + + // assert Or(Or(Or(Or(Or(Or(Not(string::spec_internal_check_utf8[]([98, 111, 111, 108])), And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Not(string::spec_internal_check_utf8[]([117, 56])))), And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Not(string::spec_internal_check_utf8[]([117, 54, 52])))), And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Not(string::spec_internal_check_utf8[]([117, 49, 50, 56])))), And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Not(string::spec_internal_check_utf8[]([97, 100, 100, 114, 101, 115, 115])))), And(And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Neq($t8, property_map::spec_utf8[]([97, 100, 100, 114, 101, 115, 115]))), Not(string::spec_internal_check_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103])))), And(And(And(And(And(And(Neq($t8, property_map::spec_utf8[]([98, 111, 111, 108])), Neq($t8, property_map::spec_utf8[]([117, 56]))), Neq($t8, property_map::spec_utf8[]([117, 54, 52]))), Neq($t8, property_map::spec_utf8[]([117, 49, 50, 56]))), Neq($t8, property_map::spec_utf8[]([97, 100, 100, 114, 101, 115, 115]))), Neq($t8, property_map::spec_utf8[]([48, 120, 49, 58, 58, 115, 116, 114, 105, 110, 103, 58, 58, 83, 116, 114, 105, 110, 103]))), Not(string::spec_internal_check_utf8[]([118, 101, 99, 116, 111, 114, 60, 117, 56, 62])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:197:5+1504 + assume {:print "$at(185,6304,7808)"} true; + assert {:msg "assert_failed(185,6304,7808): abort not covered by any of the `aborts_if` clauses"} + ((((((!$1_string_spec_internal_check_utf8(MakeVec4(98, 111, 111, 108)) || (!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$1_string_spec_internal_check_utf8(MakeVec2(117, 56)))) || ((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$1_string_spec_internal_check_utf8(MakeVec3(117, 54, 52)))) || (((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$1_string_spec_internal_check_utf8(MakeVec4(117, 49, 50, 56)))) || ((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$1_string_spec_internal_check_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))))) || (((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))))) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103))))) || ((((((!$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(98, 111, 111, 108))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec2(117, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec3(117, 54, 52)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(MakeVec4(117, 49, 50, 56)))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(MakeVec4(97, 100, 100, 114), MakeVec3(101, 115, 115))))) && !$IsEqual'$1_string_String'($t8, $1_property_map_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(48, 120, 49, 58), MakeVec4(58, 115, 116, 114)), MakeVec4(105, 110, 103, 58)), MakeVec4(58, 83, 116, 114)), MakeVec3(105, 110, 103))))) && !$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(MakeVec4(118, 101, 99, 116), MakeVec4(111, 114, 60, 117)), MakeVec2(56, 62))))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:197:5+1504 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun property_map::create_property_value_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+185 +procedure {:inline 1} $1_property_map_create_property_value_raw(_$t0: Vec (int), _$t1: $1_string_String) returns ($ret0: $1_property_map_PropertyValue) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t0: Vec (int); + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume {:print "$at(184,8587,8588)"} true; + assume {:print "$track_local(93,6,0):", $t0} $t0 == $t0; + + // trace_local[type]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume {:print "$track_local(93,6,1):", $t1} $t1 == $t1; + + // $t2 := pack property_map::PropertyValue($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:251:9+62 + assume {:print "$at(184,8704,8766)"} true; + $t2 := $1_property_map_PropertyValue($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:251:9+62 + assume {:print "$track_return(93,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:255:5+1 + assume {:print "$at(184,8771,8772)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:255:5+1 + assume {:print "$at(184,8771,8772)"} true; + $ret0 := $t2; + return; + +} + +// fun property_map::create_property_value_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+185 +procedure {:timeLimit 80} $1_property_map_create_property_value_raw$verify(_$t0: Vec (int), _$t1: $1_string_String) returns ($ret0: $1_property_map_PropertyValue) +{ + // declare local variables + var $t2: $1_property_map_PropertyValue; + var $t0: Vec (int); + var $t1: $1_string_String; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume {:print "$at(184,8587,8588)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume $IsValid'$1_string_String'($t1); + + // trace_local[value]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume {:print "$track_local(93,6,0):", $t0} $t0 == $t0; + + // trace_local[type]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:247:5+1 + assume {:print "$track_local(93,6,1):", $t1} $t1 == $t1; + + // $t2 := pack property_map::PropertyValue($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:251:9+62 + assume {:print "$at(184,8704,8766)"} true; + $t2 := $1_property_map_PropertyValue($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:251:9+62 + assume {:print "$track_return(93,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:255:5+1 + assume {:print "$at(184,8771,8772)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:193:9+16 + assume {:print "$at(185,6240,6256)"} true; + assert {:msg "assert_failed(185,6240,6256): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:193:9+16 + $ret0 := $t2; + return; + +} + +// fun property_map::new_with_key_and_property_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:87:5+805 +procedure {:timeLimit 80} $1_property_map_new_with_key_and_property_value$verify(_$t0: Vec ($1_string_String), _$t1: Vec ($1_property_map_PropertyValue)) returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t2: int; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_property_map_PropertyMap; + var $t6: $1_property_map_PropertyValue; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: $1_string_String; + var $t21: $1_property_map_PropertyValue; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: $Mutation ($1_property_map_PropertyMap); + var $t28: int; + var $t29: int; + var $t30: $1_property_map_PropertyMap; + var $t0: Vec ($1_string_String); + var $t1: Vec ($1_property_map_PropertyValue); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_property_map_PropertyValue'': Vec ($1_property_map_PropertyValue); + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:87:5+1 + assume {:print "$at(184,2815,2816)"} true; + assume $IsValid'vec'$1_string_String''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:87:5+1 + assume $IsValid'vec'$1_property_map_PropertyValue''($t1); + + // assume Identical($t7, vector::$length($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:30:9+34 + assume {:print "$at(185,854,888)"} true; + assume ($t7 == $1_vector_$length'$1_string_String'($t0)); + + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:87:5+1 + assume {:print "$at(184,2815,2816)"} true; + assume {:print "$track_local(93,11,0):", $t0} $t0 == $t0; + + // trace_local[values]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:87:5+1 + assume {:print "$track_local(93,11,1):", $t1} $t1 == $t1; + + // $t8 := vector::length($t0) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:91:22+21 + assume {:print "$at(184,2969,2990)"} true; + call $t8 := $1_vector_length'$1_string_String'($t0); + if ($abort_flag) { + assume {:print "$at(184,2969,2990)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[length]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:91:13+6 + assume {:print "$track_local(93,11,4):", $t8} $t8 == $t8; + + // $t10 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:27+21 + assume {:print "$at(184,3018,3039)"} true; + $t10 := 1000; + assume $IsValid'u64'($t10); + + // $t11 := <=($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:24+2 + call $t11 := $Le($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 + assume {:print "$at(184,3000,3096)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:74+29 +L0: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:74+29 + assume {:print "$at(184,3065,3094)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:50+54 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(184,3041,3095)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 + assume {:print "$at(184,3000,3096)"} true; + assume {:print "$track_abort(93,11):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 + $t9 := $t13; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:92:9+96 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:17+6 + assume {:print "$at(184,3114,3120)"} true; +L2: + + // $t14 := vector::length($t1) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:27+23 + assume {:print "$at(184,3124,3147)"} true; + call $t14 := $1_vector_length'$1_property_map_PropertyValue'($t1); + if ($abort_flag) { + assume {:print "$at(184,3124,3147)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // $t15 := ==($t8, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:24+2 + $t15 := $IsEqual'u64'($t8, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 + assume {:print "$at(184,3106,3207)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:76+32 +L3: + + // $t16 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:76+32 + assume {:print "$at(184,3173,3205)"} true; + $t16 := 4; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:52+57 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(184,3149,3206)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 + assume {:print "$at(184,3106,3207)"} true; + assume {:print "$track_abort(93,11):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 + $t9 := $t17; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:93:9+101 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:95:26+7 + assume {:print "$at(184,3235,3242)"} true; +L5: + + // $t5 := property_map::empty() on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:95:26+7 + assume {:print "$at(184,3235,3242)"} true; + call $t5 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(184,3235,3242)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[properties]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:95:13+10 + assume {:print "$track_local(93,11,5):", $t5} $t5 == $t5; + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:97:17+1 + assume {:print "$at(184,3261,3262)"} true; + $t18 := 0; + assume $IsValid'u64'($t18); + + // trace_local[i]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:97:13+1 + assume {:print "$track_local(93,11,2):", $t18} $t18 == $t18; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume {:print "$at(184,3279,3280)"} true; +L12: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume {:print "$at(184,3279,3280)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'u64'($t2); + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t5); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'$1_string_String'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'u64'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'u64'($t23); + + // $t24 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'bool'($t24); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'u64'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'u64'($t26); + + // $t27 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t27)); + + // trace_local[i]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume {:print "$info(): enter loop, variable(s) i, properties havocked and reassigned"} true; + assume {:print "$track_local(93,11,2):", $t2} $t2 == $t2; + + // trace_local[properties]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume {:print "$track_local(93,11,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:16+1 + assume !$abort_flag; + + // $t19 := <($t2, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:18+1 + call $t19 := $Lt($t2, $t8); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:9+322 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:98:9+322 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:99:39+5 + assume {:print "$at(184,3331,3336)"} true; +L8: + + // $t20 := vector::borrow($t0, $t2) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:99:24+24 + assume {:print "$at(184,3316,3340)"} true; + call $t20 := $1_vector_borrow'$1_string_String'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(184,3316,3340)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[key]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:99:17+3 + assume {:print "$track_local(93,11,3):", $t20} $t20 == $t20; + + // $t21 := vector::borrow($t1, $t2) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:100:24+26 + assume {:print "$at(184,3365,3391)"} true; + call $t21 := $1_vector_borrow'$1_property_map_PropertyValue'($t1, $t2); + if ($abort_flag) { + assume {:print "$at(184,3365,3391)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[val]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:100:17+3 + assume {:print "$track_local(93,11,6):", $t21} $t21 == $t21; + + // $t22 := string::length($t20) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:21+20 + assume {:print "$at(184,3413,3433)"} true; + call $t22 := $1_string_length($t20); + if ($abort_flag) { + assume {:print "$at(184,3413,3433)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // $t23 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:45+24 + $t23 := 128; + assume $IsValid'u64'($t23); + + // $t24 := <=($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:42+2 + call $t24 := $Le($t22, $t23); + + // if ($t24) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 + if ($t24) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 + assume {:print "$at(184,3405,3516)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:95+27 +L9: + + // $t28 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:95+27 + assume {:print "$at(184,3487,3514)"} true; + $t28 := 7; + assume $IsValid'u64'($t28); + + // $t29 := error::invalid_argument($t28) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:71+52 + call $t29 := $1_error_invalid_argument($t28); + if ($abort_flag) { + assume {:print "$at(184,3463,3515)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 + assume {:print "$at(184,3405,3516)"} true; + assume {:print "$track_abort(93,11):", $t29} $t29 == $t29; + + // $t9 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 + $t9 := $t29; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:101:13+111 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:102:17+15 + assume {:print "$at(184,3534,3549)"} true; +L11: + + // $t27 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:102:17+15 + assume {:print "$at(184,3534,3549)"} true; + $t27 := $Mutation($Local(5), EmptyVec(), $t5); + + // property_map::add($t27, $t20, $t21) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:102:13+30 + call $t27 := $1_property_map_add($t27, $t20, $t21); + if ($abort_flag) { + assume {:print "$at(184,3530,3560)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // write_back[LocalRoot($t5)@]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:102:13+30 + $t5 := $Dereference($t27); + + // trace_local[properties]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:102:13+30 + assume {:print "$track_local(93,11,5):", $t5} $t5 == $t5; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:103:21+1 + assume {:print "$at(184,3582,3583)"} true; + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := +($t2, $t25) on_abort goto L15 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:103:19+1 + call $t26 := $AddU64($t2, $t25); + if ($abort_flag) { + assume {:print "$at(184,3580,3581)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(93,11):", $t9} $t9 == $t9; + goto L15; + } + + // trace_local[i]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:103:13+1 + assume {:print "$track_local(93,11,2):", $t26} $t26 == $t26; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:103:22+1 + goto L13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + assume {:print "$at(184,3604,3614)"} true; +L6: + + // $t30 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + assume {:print "$at(184,3604,3614)"} true; + $t30 := $t5; + + // trace_return[0]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + assume {:print "$track_return(93,11,0):", $t30} $t30 == $t30; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + goto L14; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + // Loop invariant checking block for the loop started with header: L12 +L13: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:105:9+10 + assume {:print "$at(184,3604,3614)"} true; + assume false; + return; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:106:5+1 + assume {:print "$at(184,3619,3620)"} true; +L14: + + // assert Not(Not(Le($t7, 1000))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:31:9+45 + assume {:print "$at(185,897,942)"} true; + assert {:msg "assert_failed(185,897,942): function does not abort under this condition"} + !!($t7 <= 1000); + + // assert Not(Not(Eq($t7, Len($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:32:9+35 + assume {:print "$at(185,951,986)"} true; + assert {:msg "assert_failed(185,951,986): function does not abort under this condition"} + !!$IsEqual'u64'($t7, LenVec($t1)); + + // return $t30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:32:9+35 + $ret0 := $t30; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:106:5+1 + assume {:print "$at(184,3619,3620)"} true; +L15: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:106:5+1 + assume {:print "$at(184,3619,3620)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun property_map::update_property_map [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+966 +procedure {:inline 1} $1_property_map_update_property_map(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: Vec ($1_string_String), _$t2: Vec (Vec (int)), _$t3: Vec ($1_string_String)) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t4: $1_string_String; + var $t5: int; + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_property_map_PropertyValue; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: $1_string_String; + var $t27: Vec (int); + var $t28: $1_string_String; + var $t29: $1_property_map_PropertyValue; + var $t30: $1_property_map_PropertyMap; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: Vec ($1_string_String); + var $t2: Vec (Vec (int)); + var $t3: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t11, Len($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:174:9+24 + assume {:print "$at(185,5747,5771)"} true; + assume ($t11 == LenVec($t1)); + + // assume Identical($t12, Len>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:175:9+26 + assume {:print "$at(185,5780,5806)"} true; + assume ($t12 == LenVec($t2)); + + // assume Identical($t13, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:176:9+25 + assume {:print "$at(185,5815,5840)"} true; + assume ($t13 == LenVec($t3)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$at(184,7379,7380)"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[keys]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,2):", $t2} $t2 == $t2; + + // trace_local[types]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,3):", $t3} $t3 == $t3; + + // $t14 := vector::length($t1) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:216:23+21 + assume {:print "$at(184,7569,7590)"} true; + call $t14 := $1_vector_length'$1_string_String'($t1); + if ($abort_flag) { + assume {:print "$at(184,7569,7590)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[key_len]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:216:13+7 + assume {:print "$track_local(93,20,7):", $t14} $t14 == $t14; + + // $t16 := vector::length>($t2) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:217:23+23 + assume {:print "$at(184,7614,7637)"} true; + call $t16 := $1_vector_length'vec'u8''($t2); + if ($abort_flag) { + assume {:print "$at(184,7614,7637)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[val_len]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:217:13+7 + assume {:print "$track_local(93,20,10):", $t16} $t16 == $t16; + + // $t17 := vector::length($t3) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:218:23+22 + assume {:print "$at(184,7661,7683)"} true; + call $t17 := $1_vector_length'$1_string_String'($t3); + if ($abort_flag) { + assume {:print "$at(184,7661,7683)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[typ_len]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:218:13+7 + assume {:print "$track_local(93,20,9):", $t17} $t17 == $t17; + + // $t18 := ==($t14, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:25+2 + assume {:print "$at(184,7709,7711)"} true; + $t18 := $IsEqual'u64'($t14, $t16); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + + // $t19 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:58+32 + $t19 := 4; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_state($t19) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:37+54 + call $t20 := $1_error_invalid_state($t19); + if ($abort_flag) { + assume {:print "$at(184,7721,7775)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + assume {:print "$track_abort(93,20):", $t20} $t20 == $t20; + + // $t15 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + $t15 := $t20; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:17+7 + assume {:print "$at(184,7794,7801)"} true; +L2: + + // $t21 := ==($t14, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:25+2 + assume {:print "$at(184,7802,7804)"} true; + $t21 := $IsEqual'u64'($t14, $t17); + + // if ($t21) goto L16 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + if ($t21) { goto L16; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + + // $t22 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:58+31 + $t22 := 5; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_state($t22) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:37+53 + call $t23 := $1_error_invalid_state($t22); + if ($abort_flag) { + assume {:print "$at(184,7814,7867)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + assume {:print "$track_abort(93,20):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + $t15 := $t23; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:17+1 + assume {:print "$at(184,7887,7888)"} true; +L5: + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:17+1 + assume {:print "$at(184,7887,7888)"} true; + $t24 := 0; + assume $IsValid'u64'($t24); + + // trace_local[i]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:13+1 + assume {:print "$track_local(93,20,5):", $t24} $t24 == $t24; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$at(184,7905,7906)"} true; +L12: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$at(184,7905,7906)"} true; + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t5); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'bool'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_string_String'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'vec'u8''($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_string_String'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'bool'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t33); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $temp_0'$1_property_map_PropertyMap'; + $t0 := $UpdateMutation($t0, $temp_0'$1_property_map_PropertyMap'); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$info(): enter loop, variable(s) map, i havocked and reassigned"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[i]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$track_local(93,20,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume !$abort_flag; + + // $t25 := <($t5, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:18+1 + call $t25 := $Lt($t5, $t14); + + // if ($t25) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + if ($t25) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:38+5 + assume {:print "$at(184,7957,7962)"} true; +L8: + + // $t26 := vector::borrow($t1, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:23+24 + assume {:print "$at(184,7942,7966)"} true; + call $t26 := $1_vector_borrow'$1_string_String'($t1, $t5); + if ($abort_flag) { + assume {:print "$at(184,7942,7966)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[key]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:17+3 + assume {:print "$track_local(93,20,6):", $t26} $t26 == $t26; + + // $t27 := vector::borrow>($t2, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:226:25+26 + assume {:print "$at(184,8035,8061)"} true; + call $t27 := $1_vector_borrow'vec'u8''($t2, $t5); + if ($abort_flag) { + assume {:print "$at(184,8035,8061)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // $t28 := vector::borrow($t3, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:227:24+25 + assume {:print "$at(184,8086,8111)"} true; + call $t28 := $1_vector_borrow'$1_string_String'($t3, $t5); + if ($abort_flag) { + assume {:print "$at(184,8086,8111)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // $t29 := pack property_map::PropertyValue($t27, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:225:28+131 + assume {:print "$at(184,7995,8126)"} true; + $t29 := $1_property_map_PropertyValue($t27, $t28); + + // trace_local[prop_val]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:225:17+8 + assume {:print "$track_local(93,20,8):", $t29} $t29 == $t29; + + // $t30 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:29+10 + assume {:print "$at(184,8156,8166)"} true; + $t30 := $Dereference($t0); + + // $t31 := property_map::contains_key($t30, $t26) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:17+22 + call $t31 := $1_property_map_contains_key($t30, $t26); + if ($abort_flag) { + assume {:print "$at(184,8144,8166)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // if ($t31) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:13+165 + if ($t31) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:39+3 + assume {:print "$at(184,8208,8211)"} true; +L10: + + // property_map::update_property_value($t0, $t26, $t29) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:17+41 + assume {:print "$at(184,8186,8227)"} true; + call $t0 := $1_property_map_update_property_value($t0, $t26, $t29); + if ($abort_flag) { + assume {:print "$at(184,8186,8227)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:58+1 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:232:21+3 + assume {:print "$at(184,8270,8273)"} true; +L9: + + // property_map::add($t0, $t26, $t29) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:232:17+24 + assume {:print "$at(184,8266,8290)"} true; + call $t0 := $1_property_map_add($t0, $t26, $t29); + if ($abort_flag) { + assume {:print "$at(184,8266,8290)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:17+1 + assume {:print "$at(184,8323,8324)"} true; +L11: + + // $t32 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:21+1 + assume {:print "$at(184,8327,8328)"} true; + $t32 := 1; + assume $IsValid'u64'($t32); + + // $t33 := +($t5, $t32) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:19+1 + call $t33 := $AddU64($t5, $t32); + if ($abort_flag) { + assume {:print "$at(184,8325,8326)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[i]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:13+1 + assume {:print "$track_local(93,20,5):", $t33} $t33 == $t33; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:22+1 + goto L13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + goto L14; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + // Loop invariant checking block for the loop started with header: L12 +L13: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; + assume false; + return; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; +L14: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; + $ret0 := $t0; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 +L15: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun property_map::update_property_map [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+966 +procedure {:timeLimit 80} $1_property_map_update_property_map$verify(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: Vec ($1_string_String), _$t2: Vec (Vec (int)), _$t3: Vec ($1_string_String)) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t4: $1_string_String; + var $t5: int; + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_property_map_PropertyValue; + 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: bool; + var $t19: int; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: $1_string_String; + var $t27: Vec (int); + var $t28: $1_string_String; + var $t29: $1_property_map_PropertyValue; + var $t30: $1_property_map_PropertyMap; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: Vec ($1_string_String); + var $t2: Vec (Vec (int)); + var $t3: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$at(184,7379,7380)"} true; + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume $IsValid'vec'$1_string_String''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume $IsValid'vec'vec'u8'''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume $IsValid'vec'$1_string_String''($t3); + + // assume Identical($t11, Len($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:174:9+24 + assume {:print "$at(185,5747,5771)"} true; + assume ($t11 == LenVec($t1)); + + // assume Identical($t12, Len>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:175:9+26 + assume {:print "$at(185,5780,5806)"} true; + assume ($t12 == LenVec($t2)); + + // assume Identical($t13, Len($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:176:9+25 + assume {:print "$at(185,5815,5840)"} true; + assume ($t13 == LenVec($t3)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$at(184,7379,7380)"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[keys]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,1):", $t1} $t1 == $t1; + + // trace_local[values]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,2):", $t2} $t2 == $t2; + + // trace_local[types]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:210:5+1 + assume {:print "$track_local(93,20,3):", $t3} $t3 == $t3; + + // $t14 := vector::length($t1) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:216:23+21 + assume {:print "$at(184,7569,7590)"} true; + call $t14 := $1_vector_length'$1_string_String'($t1); + if ($abort_flag) { + assume {:print "$at(184,7569,7590)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[key_len]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:216:13+7 + assume {:print "$track_local(93,20,7):", $t14} $t14 == $t14; + + // $t16 := vector::length>($t2) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:217:23+23 + assume {:print "$at(184,7614,7637)"} true; + call $t16 := $1_vector_length'vec'u8''($t2); + if ($abort_flag) { + assume {:print "$at(184,7614,7637)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[val_len]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:217:13+7 + assume {:print "$track_local(93,20,10):", $t16} $t16 == $t16; + + // $t17 := vector::length($t3) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:218:23+22 + assume {:print "$at(184,7661,7683)"} true; + call $t17 := $1_vector_length'$1_string_String'($t3); + if ($abort_flag) { + assume {:print "$at(184,7661,7683)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[typ_len]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:218:13+7 + assume {:print "$track_local(93,20,9):", $t17} $t17 == $t17; + + // $t18 := ==($t14, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:25+2 + assume {:print "$at(184,7709,7711)"} true; + $t18 := $IsEqual'u64'($t14, $t16); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + + // $t19 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:58+32 + $t19 := 4; + assume $IsValid'u64'($t19); + + // $t20 := error::invalid_state($t19) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:37+54 + call $t20 := $1_error_invalid_state($t19); + if ($abort_flag) { + assume {:print "$at(184,7721,7775)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + assume {:print "$at(184,7693,7776)"} true; + assume {:print "$track_abort(93,20):", $t20} $t20 == $t20; + + // $t15 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + $t15 := $t20; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:219:9+83 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:17+7 + assume {:print "$at(184,7794,7801)"} true; +L2: + + // $t21 := ==($t14, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:25+2 + assume {:print "$at(184,7802,7804)"} true; + $t21 := $IsEqual'u64'($t14, $t17); + + // if ($t21) goto L16 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + if ($t21) { goto L16; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + + // $t22 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:58+31 + $t22 := 5; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_state($t22) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:37+53 + call $t23 := $1_error_invalid_state($t22); + if ($abort_flag) { + assume {:print "$at(184,7814,7867)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + assume {:print "$at(184,7786,7868)"} true; + assume {:print "$track_abort(93,20):", $t23} $t23 == $t23; + + // $t15 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + $t15 := $t23; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:220:9+82 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:17+1 + assume {:print "$at(184,7887,7888)"} true; +L5: + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:17+1 + assume {:print "$at(184,7887,7888)"} true; + $t24 := 0; + assume $IsValid'u64'($t24); + + // trace_local[i]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:222:13+1 + assume {:print "$track_local(93,20,5):", $t24} $t24 == $t24; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$at(184,7905,7906)"} true; +L12: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$at(184,7905,7906)"} true; + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t5); + + // $t25 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'bool'($t25); + + // $t26 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t26; + + // assume WellFormed($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_string_String'($t26); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'vec'u8''($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_string_String'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t30); + + // $t31 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'bool'($t31); + + // $t32 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t32); + + // $t33 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'u64'($t33); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + havoc $temp_0'$1_property_map_PropertyMap'; + $t0 := $UpdateMutation($t0, $temp_0'$1_property_map_PropertyMap'); + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$info(): enter loop, variable(s) map, i havocked and reassigned"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[i]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume {:print "$track_local(93,20,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:16+1 + assume !$abort_flag; + + // $t25 := <($t5, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:18+1 + call $t25 := $Lt($t5, $t14); + + // if ($t25) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + if ($t25) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:38+5 + assume {:print "$at(184,7957,7962)"} true; +L8: + + // $t26 := vector::borrow($t1, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:23+24 + assume {:print "$at(184,7942,7966)"} true; + call $t26 := $1_vector_borrow'$1_string_String'($t1, $t5); + if ($abort_flag) { + assume {:print "$at(184,7942,7966)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[key]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:224:17+3 + assume {:print "$track_local(93,20,6):", $t26} $t26 == $t26; + + // $t27 := vector::borrow>($t2, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:226:25+26 + assume {:print "$at(184,8035,8061)"} true; + call $t27 := $1_vector_borrow'vec'u8''($t2, $t5); + if ($abort_flag) { + assume {:print "$at(184,8035,8061)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // $t28 := vector::borrow($t3, $t5) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:227:24+25 + assume {:print "$at(184,8086,8111)"} true; + call $t28 := $1_vector_borrow'$1_string_String'($t3, $t5); + if ($abort_flag) { + assume {:print "$at(184,8086,8111)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // $t29 := pack property_map::PropertyValue($t27, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:225:28+131 + assume {:print "$at(184,7995,8126)"} true; + $t29 := $1_property_map_PropertyValue($t27, $t28); + + // trace_local[prop_val]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:225:17+8 + assume {:print "$track_local(93,20,8):", $t29} $t29 == $t29; + + // $t30 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:29+10 + assume {:print "$at(184,8156,8166)"} true; + $t30 := $Dereference($t0); + + // $t31 := property_map::contains_key($t30, $t26) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:17+22 + call $t31 := $1_property_map_contains_key($t30, $t26); + if ($abort_flag) { + assume {:print "$at(184,8144,8166)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // if ($t31) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:229:13+165 + if ($t31) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:39+3 + assume {:print "$at(184,8208,8211)"} true; +L10: + + // property_map::update_property_value($t0, $t26, $t29) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:17+41 + assume {:print "$at(184,8186,8227)"} true; + call $t0 := $1_property_map_update_property_value($t0, $t26, $t29); + if ($abort_flag) { + assume {:print "$at(184,8186,8227)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:230:58+1 + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:232:21+3 + assume {:print "$at(184,8270,8273)"} true; +L9: + + // property_map::add($t0, $t26, $t29) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:232:17+24 + assume {:print "$at(184,8266,8290)"} true; + call $t0 := $1_property_map_add($t0, $t26, $t29); + if ($abort_flag) { + assume {:print "$at(184,8266,8290)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:17+1 + assume {:print "$at(184,8323,8324)"} true; +L11: + + // $t32 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:21+1 + assume {:print "$at(184,8327,8328)"} true; + $t32 := 1; + assume $IsValid'u64'($t32); + + // $t33 := +($t5, $t32) on_abort goto L15 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:19+1 + call $t33 := $AddU64($t5, $t32); + if ($abort_flag) { + assume {:print "$at(184,8325,8326)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(93,20):", $t15} $t15 == $t15; + goto L15; + } + + // trace_local[i]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:13+1 + assume {:print "$track_local(93,20,5):", $t33} $t33 == $t33; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:234:22+1 + goto L13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,20,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + goto L14; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + // Loop invariant checking block for the loop started with header: L12 +L13: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:223:9+441 + assume {:print "$at(184,7898,8339)"} true; + assume false; + return; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; +L14: + + // assert Not(Not(Eq($t11, $t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:177:9+32 + assume {:print "$at(185,5849,5881)"} true; + assert {:msg "assert_failed(185,5849,5881): function does not abort under this condition"} + !!$IsEqual'num'($t11, $t12); + + // assert Not(Not(Eq($t11, $t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:178:9+32 + assume {:print "$at(185,5890,5922)"} true; + assert {:msg "assert_failed(185,5890,5922): function does not abort under this condition"} + !!$IsEqual'num'($t11, $t13); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:178:9+32 + $ret0 := $t0; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; +L15: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:236:5+1 + assume {:print "$at(184,8344,8345)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun property_map::update_property_value [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+230 +procedure {:inline 1} $1_property_map_update_property_value(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: $1_string_String, _$t2: $1_property_map_PropertyValue) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t3: $Mutation ($1_property_map_PropertyValue); + var $t4: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t5: $Mutation ($1_property_map_PropertyValue); + var $t6: int; + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: $1_string_String; + var $t2: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$at(184,8351,8352)"} true; + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$track_local(93,21,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$track_local(93,21,2):", $t2} $t2 == $t2; + + // $t4 := borrow_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:51+12 + assume {:print "$at(184,8525,8537)"} true; + $t4 := $ChildMutation($t0, 0, $Dereference($t0)->$map); + + // $t5 := simple_map::borrow_mut($t4, $t1) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:28+41 + call $t5,$t4 := $1_simple_map_borrow_mut'$1_string_String_$1_property_map_PropertyValue'($t4, $t1); + if ($abort_flag) { + assume {:print "$at(184,8502,8543)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(93,21):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[property_val]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:13+12 + $temp_0'$1_property_map_PropertyValue' := $Dereference($t5); + assume {:print "$track_local(93,21,3):", $temp_0'$1_property_map_PropertyValue'} $temp_0'$1_property_map_PropertyValue' == $temp_0'$1_property_map_PropertyValue'; + + // write_ref($t5, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + assume {:print "$at(184,8553,8574)"} true; + $t5 := $UpdateMutation($t5, $t2); + + // write_back[Reference($t4)[]]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $t4 := $UpdateMutation($t4, UpdateTable($Dereference($t4), ReadVec($t5->p, LenVec($t4->p)), $Dereference($t5))); + + // write_back[Reference($t0).map (simple_map::SimpleMap)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $t0 := $UpdateMutation($t0, $Update'$1_property_map_PropertyMap'_map($Dereference($t0), $Dereference($t4))); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:30+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 + assume {:print "$at(184,8580,8581)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 + assume {:print "$at(184,8580,8581)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 + assume {:print "$at(184,8580,8581)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun property_map::update_property_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+230 +procedure {:timeLimit 80} $1_property_map_update_property_value$verify(_$t0: $Mutation ($1_property_map_PropertyMap), _$t1: $1_string_String, _$t2: $1_property_map_PropertyValue) returns ($ret0: $Mutation ($1_property_map_PropertyMap)) +{ + // declare local variables + var $t3: $Mutation ($1_property_map_PropertyValue); + var $t4: $1_property_map_PropertyMap; + var $t5: $Mutation (Table int ($1_property_map_PropertyValue)); + var $t6: $Mutation ($1_property_map_PropertyValue); + var $t7: int; + var $t0: $Mutation ($1_property_map_PropertyMap); + var $t1: $1_string_String; + var $t2: $1_property_map_PropertyValue; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$at(184,8351,8352)"} true; + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume $IsValid'$1_property_map_PropertyValue'($t2); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + $t4 := $Dereference($t0); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[key]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$track_local(93,21,1):", $t1} $t1 == $t1; + + // trace_local[value]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:238:5+1 + assume {:print "$track_local(93,21,2):", $t2} $t2 == $t2; + + // $t5 := borrow_field.map($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:51+12 + assume {:print "$at(184,8525,8537)"} true; + $t5 := $ChildMutation($t0, 0, $Dereference($t0)->$map); + + // $t6 := simple_map::borrow_mut($t5, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:28+41 + call $t6,$t5 := $1_simple_map_borrow_mut'$1_string_String_$1_property_map_PropertyValue'($t5, $t1); + if ($abort_flag) { + assume {:print "$at(184,8502,8543)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(93,21):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[property_val]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:243:13+12 + $temp_0'$1_property_map_PropertyValue' := $Dereference($t6); + assume {:print "$track_local(93,21,3):", $temp_0'$1_property_map_PropertyValue'} $temp_0'$1_property_map_PropertyValue' == $temp_0'$1_property_map_PropertyValue'; + + // write_ref($t6, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + assume {:print "$at(184,8553,8574)"} true; + $t6 := $UpdateMutation($t6, $t2); + + // write_back[Reference($t5)[]]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $t5 := $UpdateMutation($t5, UpdateTable($Dereference($t5), ReadVec($t6->p, LenVec($t5->p)), $Dereference($t6))); + + // write_back[Reference($t0).map (simple_map::SimpleMap)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $t0 := $UpdateMutation($t0, $Update'$1_property_map_PropertyMap'_map($Dereference($t0), $Dereference($t5))); + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:9+21 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // trace_local[map]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:244:30+1 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t0); + assume {:print "$track_local(93,21,0):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 + assume {:print "$at(184,8580,8581)"} true; +L1: + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t4), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:186:9+55 + assume {:print "$at(185,6061,6116)"} true; + assert {:msg "assert_failed(185,6061,6116): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t4->$map, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:186:9+55 + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.move:245:5+1 + assume {:print "$at(184,8580,8581)"} true; +L2: + + // assert Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map($t4), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:181:5+188 + assume {:print "$at(185,5934,6122)"} true; + assert {:msg "assert_failed(185,5934,6122): abort not covered by any of the `aborts_if` clauses"} + !$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t4->$map, $t1); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:181:5+188 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:81:10+171 +function {:inline} $1_starcoin_account_length_judgment(auth_key: int): bool { + (var authentication_key := $1_bcs_$to_bytes'address'(auth_key); !$IsEqual'num'(LenVec(authentication_key), 32)) +} + +// struct starcoin_account::DirectCoinTransferConfigUpdatedEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:49:5+109 +datatype $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent { + $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent($new_allow_direct_transfers: bool) +} +function {:inline} $Update'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'_new_allow_direct_transfers(s: $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent, x: bool): $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent { + $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent(x) +} +function $IsValid'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'(s: $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent): bool { + $IsValid'bool'(s->$new_allow_direct_transfers) +} +function {:inline} $IsEqual'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'(s1: $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent, s2: $1_starcoin_account_DirectCoinTransferConfigUpdatedEvent): bool { + s1 == s2 +} + +// struct starcoin_account::DirectTransferConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:43:5+177 +datatype $1_starcoin_account_DirectTransferConfig { + $1_starcoin_account_DirectTransferConfig($allow_arbitrary_coin_transfers: bool, $update_coin_transfer_events: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent') +} +function {:inline} $Update'$1_starcoin_account_DirectTransferConfig'_allow_arbitrary_coin_transfers(s: $1_starcoin_account_DirectTransferConfig, x: bool): $1_starcoin_account_DirectTransferConfig { + $1_starcoin_account_DirectTransferConfig(x, s->$update_coin_transfer_events) +} +function {:inline} $Update'$1_starcoin_account_DirectTransferConfig'_update_coin_transfer_events(s: $1_starcoin_account_DirectTransferConfig, x: $1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent'): $1_starcoin_account_DirectTransferConfig { + $1_starcoin_account_DirectTransferConfig(s->$allow_arbitrary_coin_transfers, x) +} +function $IsValid'$1_starcoin_account_DirectTransferConfig'(s: $1_starcoin_account_DirectTransferConfig): bool { + $IsValid'bool'(s->$allow_arbitrary_coin_transfers) + && $IsValid'$1_event_EventHandle'$1_starcoin_account_DirectCoinTransferConfigUpdatedEvent''(s->$update_coin_transfer_events) +} +function {:inline} $IsEqual'$1_starcoin_account_DirectTransferConfig'(s1: $1_starcoin_account_DirectTransferConfig, s2: $1_starcoin_account_DirectTransferConfig): bool { + s1 == s2 +} +var $1_starcoin_account_DirectTransferConfig_$memory: $Memory $1_starcoin_account_DirectTransferConfig; + +// fun starcoin_account::create_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+161 +procedure {:timeLimit 80} $1_starcoin_account_create_account$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: $signer; + var $t2: $signer; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_account_Account_$memory#751: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume {:print "$at(55,2405,2406)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // @751 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + $1_account_Account_$memory#751 := $1_account_Account_$memory; + + // trace_local[auth_key]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:63:5+1 + assume {:print "$track_local(94,6,0):", $t0} $t0 == $t0; + + // $t2 := account::create_account($t0) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:64:30+33 + assume {:print "$at(55,2487,2520)"} true; + call $t2 := $1_account_create_account($t0); + if ($abort_flag) { + assume {:print "$at(55,2487,2520)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(94,6):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[account_signer]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:64:13+14 + assume {:print "$track_local(94,6,1):", $t2} $t2 == $t2; + + // starcoin_account::register_stc($t2) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:65:9+29 + assume {:print "$at(55,2530,2559)"} true; + call $1_starcoin_account_register_stc($t2); + if ($abort_flag) { + assume {:print "$at(55,2530,2559)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(94,6):", $t3} $t3 == $t3; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:66:5+1 + assume {:print "$at(55,2565,2566)"} true; +L1: + + // assert Not(exists[@751]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:76:9+45 + assume {:print "$at(56,4523,4568)"} true; + assert {:msg "assert_failed(56,4523,4568): function does not abort under this condition"} + !$ResourceExists($1_account_Account_$memory#751, $t0); + + // assert Not(starcoin_account::length_judgment[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:77:9+36 + assume {:print "$at(56,4577,4613)"} true; + assert {:msg "assert_failed(56,4577,4613): function does not abort under this condition"} + !$1_starcoin_account_length_judgment($t0); + + // assert Not(Or(Or(Eq
($t0, 0x0), Eq
($t0, 0x1)), Eq
($t0, 0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:78:9+101 + assume {:print "$at(56,4622,4723)"} true; + assert {:msg "assert_failed(56,4622,4723): function does not abort under this condition"} + !(($IsEqual'address'($t0, 0) || $IsEqual'address'($t0, 1)) || $IsEqual'address'($t0, 1)); + + // assert exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:72:9+43 + assume {:print "$at(56,4398,4441)"} true; + assert {:msg "assert_failed(56,4398,4441): post-condition does not hold"} + $ResourceExists($1_account_Account_$memory, $t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:72:9+43 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:66:5+1 + assume {:print "$at(55,2565,2566)"} true; +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:66:5+1 + assume {:print "$at(55,2565,2566)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_account::assert_account_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+136 +procedure {:inline 1} $1_starcoin_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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+1 + assume {:print "$at(55,6041,6042)"} true; + assume {:print "$track_local(94,0,0):", $t0} $t0 == $t0; + + // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:17+24 + assume {:print "$at(55,6107,6131)"} true; + call $t1 := $1_account_exists_at($t0); + if ($abort_flag) { + assume {:print "$at(55,6107,6131)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(94,0):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + assume {:print "$at(55,6099,6170)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:60+18 +L0: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:60+18 + assume {:print "$at(55,6150,6168)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:43+36 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(55,6133,6169)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(94,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + assume {:print "$at(55,6099,6170)"} true; + assume {:print "$track_abort(94,0):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:80+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 + assume {:print "$at(55,6176,6177)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 + assume {:print "$at(55,6176,6177)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 + assume {:print "$at(55,6176,6177)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_account::assert_account_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+136 +procedure {:timeLimit 80} $1_starcoin_account_assert_account_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_account_Account_$memory#752: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+1 + assume {:print "$at(55,6041,6042)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @752 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+1 + $1_account_Account_$memory#752 := $1_account_Account_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:143:5+1 + assume {:print "$track_local(94,0,0):", $t0} $t0 == $t0; + + // $t1 := account::exists_at($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:17+24 + assume {:print "$at(55,6107,6131)"} true; + call $t1 := $1_account_exists_at($t0); + if ($abort_flag) { + assume {:print "$at(55,6107,6131)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(94,0):", $t2} $t2 == $t2; + goto L4; + } + + // if ($t1) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + if ($t1) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + assume {:print "$at(55,6099,6170)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:60+18 +L0: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:60+18 + assume {:print "$at(55,6150,6168)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:43+36 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(55,6133,6169)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(94,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + assume {:print "$at(55,6099,6170)"} true; + assume {:print "$track_abort(94,0):", $t4} $t4 == $t4; + + // $t2 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + $t2 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:9+71 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:144:80+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 + assume {:print "$at(55,6176,6177)"} true; +L3: + + // assert Not(Not(account::$exists_at[@752]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:108:9+36 + assume {:print "$at(56,5687,5723)"} true; + assert {:msg "assert_failed(56,5687,5723): function does not abort under this condition"} + !!$1_account_$exists_at($1_account_Account_$memory#752, $t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:108:9+36 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:145:5+1 + assume {:print "$at(55,6176,6177)"} true; +L4: + + // assert Not(account::$exists_at[@752]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:107:5+94 + assume {:print "$at(56,5635,5729)"} true; + assert {:msg "assert_failed(56,5635,5729): abort not covered by any of the `aborts_if` clauses"} + !$1_account_$exists_at($1_account_Account_$memory#752, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:107:5+94 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_account::assert_account_is_registered_for_stc [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+215 +procedure {:timeLimit 80} $1_starcoin_account_assert_account_is_registered_for_stc$verify(_$t0: int) returns () +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t0: int; + var $temp_0'address': int; + var $1_account_Account_$memory#754: $Memory $1_account_Account; + var $1_fungible_asset_FungibleStore_$memory#755: $Memory $1_fungible_asset_FungibleStore; + var $1_coin_CoinConversionMap_$memory#756: $Memory $1_coin_CoinConversionMap; + var $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory#757: $Memory $1_coin_CoinStore'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume {:print "$at(55,6183,6184)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // @754 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + $1_account_Account_$memory#754 := $1_account_Account_$memory; + + // @755 := save_mem(fungible_asset::FungibleStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + $1_fungible_asset_FungibleStore_$memory#755 := $1_fungible_asset_FungibleStore_$memory; + + // @756 := save_mem(coin::CoinConversionMap) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + $1_coin_CoinConversionMap_$memory#756 := $1_coin_CoinConversionMap_$memory; + + // @757 := save_mem(coin::CoinStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory#757 := $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory; + + // trace_local[addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:147:5+1 + assume {:print "$track_local(94,1,0):", $t0} $t0 == $t0; + + // starcoin_account::assert_account_exists($t0) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:148:9+27 + assume {:print "$at(55,6256,6283)"} true; + call $1_starcoin_account_assert_account_exists($t0); + if ($abort_flag) { + assume {:print "$at(55,6256,6283)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(94,1):", $t1} $t1 == $t1; + goto L4; + } + + // $t2 := coin::is_account_registered($t0) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:17+38 + assume {:print "$at(55,6301,6339)"} true; + call $t2 := $1_coin_is_account_registered'$1_starcoin_coin_STC'($t0); + if ($abort_flag) { + assume {:print "$at(55,6301,6339)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(94,1):", $t1} $t1 == $t1; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 + assume {:print "$at(55,6293,6391)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:74+31 +L0: + + // $t3 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:74+31 + assume {:print "$at(55,6358,6389)"} true; + $t3 := 2; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:57+49 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(55,6341,6390)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(94,1):", $t1} $t1 == $t1; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 + assume {:print "$at(55,6293,6391)"} true; + assume {:print "$track_abort(94,1):", $t4} $t4 == $t4; + + // $t1 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 + $t1 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:9+98 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:149:107+1 +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:150:5+1 + assume {:print "$at(55,6397,6398)"} true; +L3: + + // assert Not(Not(account::$exists_at[@754]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:115:9+36 + assume {:print "$at(56,5938,5974)"} true; + assert {:msg "assert_failed(56,5938,5974): function does not abort under this condition"} + !!$1_account_$exists_at($1_account_Account_$memory#754, $t0); + + // assert Not(Not(coin::spec_is_account_registered[@755, @756, @757]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:116:9+55 + assume {:print "$at(56,5983,6038)"} true; + assert {:msg "assert_failed(56,5983,6038): function does not abort under this condition"} + !!$1_coin_spec_is_account_registered'$1_starcoin_coin_STC'($1_fungible_asset_FungibleStore_$memory#755, $1_coin_CoinConversionMap_$memory#756, $1_coin_CoinStore'$1_starcoin_coin_STC'_$memory#757, $t0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:116:9+55 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:150:5+1 + assume {:print "$at(55,6397,6398)"} true; +L4: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:150:5+1 + assume {:print "$at(55,6397,6398)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun starcoin_account::can_receive_direct_coin_transfers [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:190:5+244 +procedure {:timeLimit 80} $1_starcoin_account_can_receive_direct_coin_transfers$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_starcoin_account_DirectTransferConfig; + var $t6: int; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:190:5+1 + assume {:print "$at(55,8485,8486)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: starcoin_account::DirectTransferConfig: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:190:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_account_DirectTransferConfig_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_account_DirectTransferConfig_$memory, $a_0); + ($IsValid'$1_starcoin_account_DirectTransferConfig'($rsc)))); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:190:5+1 + assume {:print "$track_local(94,5,0):", $t0} $t0 == $t0; + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:10+6 + assume {:print "$at(55,8595,8601)"} true; + $t2 := $ResourceExists($1_starcoin_account_DirectTransferConfig_$memory, $t0); + + // $t3 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+1 + call $t3 := $Not($t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 +L1: + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + assume {:print "$at(55,8594,8723)"} true; + $t4 := true; + assume $IsValid'bool'($t4); + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + $t1 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:192:49+7 + assume {:print "$at(55,8684,8691)"} true; +L0: + + // $t5 := get_global($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:192:13+13 + assume {:print "$at(55,8648,8661)"} true; + if (!$ResourceExists($1_starcoin_account_DirectTransferConfig_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_starcoin_account_DirectTransferConfig_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(55,8648,8661)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,5):", $t6} $t6 == $t6; + goto L4; + } + + // $t1 := get_field.allow_arbitrary_coin_transfers($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:192:13+75 + $t1 := $t5->$allow_arbitrary_coin_transfers; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + assume {:print "$at(55,8594,8723)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:191:9+129 + assume {:print "$at(55,8594,8723)"} true; + assume {:print "$track_return(94,5,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:193:5+1 + assume {:print "$at(55,8728,8729)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:169:9+16 + assume {:print "$at(56,8886,8902)"} true; + assert {:msg "assert_failed(56,8886,8902): function does not abort under this condition"} + !false; + + // assert Eq($t1, Or(Not(exists($t0)), select starcoin_account::DirectTransferConfig.allow_arbitrary_coin_transfers(global($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:171:9+169 + assume {:print "$at(56,8942,9111)"} true; + assert {:msg "assert_failed(56,8942,9111): post-condition does not hold"} + $IsEqual'bool'($t1, (!$ResourceExists($1_starcoin_account_DirectTransferConfig_$memory, $t0) || $ResourceValue($1_starcoin_account_DirectTransferConfig_$memory, $t0)->$allow_arbitrary_coin_transfers)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:171:9+169 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:193:5+1 + assume {:print "$at(55,8728,8729)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:168:5+304 + assume {:print "$at(56,8813,9117)"} true; + assert {:msg "assert_failed(56,8813,9117): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.spec.move:168:5+304 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun starcoin_account::register_stc [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:195:5+298 +procedure {:inline 1} $1_starcoin_account_register_stc(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: $1_object_Object'$1_fungible_asset_Metadata'; + var $t13: $1_object_Object'$1_fungible_asset_FungibleStore'; + var $t0: $signer; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account_signer]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:195:5+1 + assume {:print "$at(55,8735,8736)"} true; + assume {:print "$track_local(94,10,0):", $t0} $t0 == $t0; + + // $t5 := features::new_accounts_default_to_fa_stc_store_enabled() on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:196:13+56 + assume {:print "$at(55,8806,8862)"} true; + call $t5 := $1_features_new_accounts_default_to_fa_stc_store_enabled(); + if ($abort_flag) { + assume {:print "$at(55,8806,8862)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:196:9+225 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:197:69+14 + assume {:print "$at(55,8934,8948)"} true; +L1: + + // $t7 := signer::address_of($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:197:50+34 + assume {:print "$at(55,8915,8949)"} true; + call $t7 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(55,8915,8949)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // trace_local[owner#785]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:244:53+5 + assume {:print "$at(55,11286,11291)"} true; + assume {:print "$track_local(94,10,3):", $t7} $t7 == $t7; + + // $t8 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:255:61+24 + assume {:print "$at(55,11823,11847)"} true; + $t8 := 1; + assume $IsValid'address'($t8); + + // $t9 := opaque begin: object::create_user_derived_object_address($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:255:9+77 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:255:9+77 + assume $IsValid'address'($t9); + + // assume Eq
($t9, object::spec_create_user_derived_object_address($t7, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:255:9+77 + assume $IsEqual'address'($t9, $1_object_spec_create_user_derived_object_address($t7, $t8)); + + // $t9 := opaque end: object::create_user_derived_object_address($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:255:9+77 + + // trace_local[store_addr#786]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:245:13+10 + assume {:print "$at(55,11325,11335)"} true; + assume {:print "$track_local(94,10,4):", $t9} $t9 == $t9; + + // $t10 := fungible_asset::store_exists($t9) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:13+40 + assume {:print "$at(55,11389,11429)"} true; + call $t10 := $1_fungible_asset_store_exists($t9); + if ($abort_flag) { + assume {:print "$at(55,11389,11429)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t10) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:9+249 + if ($t10) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:247:13+10 + assume {:print "$at(55,11445,11455)"} true; +L3: + + // $t2 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:9+249 + assume {:print "$at(55,11385,11634)"} true; + $t2 := $t9; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:9+249 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:249:82+5 + assume {:print "$at(55,11554,11559)"} true; +L2: + + // $t11 := 0x1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:249:125+24 + assume {:print "$at(55,11597,11621)"} true; + $t11 := 1; + assume $IsValid'address'($t11); + + // $t12 := object::address_to_object($t11) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:249:89+61 + call $t12 := $1_object_address_to_object'$1_fungible_asset_Metadata'($t11); + if ($abort_flag) { + assume {:print "$at(55,11561,11622)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t13 := primary_fungible_store::create_primary_store($t7, $t12) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:249:37+114 + call $t13 := $1_primary_fungible_store_create_primary_store'$1_fungible_asset_Metadata'($t7, $t12); + if ($abort_flag) { + assume {:print "$at(55,11509,11623)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // $t2 := object::object_address($t13) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:249:13+139 + call $t2 := $1_object_object_address'$1_fungible_asset_FungibleStore'($t13); + if ($abort_flag) { + assume {:print "$at(55,11485,11624)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:9+249 + assume {:print "$at(55,11385,11634)"} true; +L4: + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:246:9+249 + assume {:print "$at(55,11385,11634)"} true; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:196:9+225 + assume {:print "$at(55,8802,9027)"} true; + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:199:33+14 + assume {:print "$at(55,9001,9015)"} true; +L0: + + // coin::register($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:199:13+35 + assume {:print "$at(55,8981,9016)"} true; + call $1_coin_register'$1_starcoin_coin_STC'($t0); + if ($abort_flag) { + assume {:print "$at(55,8981,9016)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(94,10):", $t6} $t6 == $t6; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:196:9+225 + assume {:print "$at(55,8802,9027)"} true; +L5: + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:201:5+1 + assume {:print "$at(55,9032,9033)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:201:5+1 + assume {:print "$at(55,9032,9033)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:201:5+1 +L7: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/starcoin_account.move:201:5+1 + assume {:print "$at(55,9032,9033)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// struct resource_account::Container at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:79:5+94 +datatype $1_resource_account_Container { + $1_resource_account_Container($store: Table int ($1_account_SignerCapability)) +} +function {:inline} $Update'$1_resource_account_Container'_store(s: $1_resource_account_Container, x: Table int ($1_account_SignerCapability)): $1_resource_account_Container { + $1_resource_account_Container(x) +} +function $IsValid'$1_resource_account_Container'(s: $1_resource_account_Container): bool { + $IsValid'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(s->$store) +} +function {:inline} $IsEqual'$1_resource_account_Container'(s1: $1_resource_account_Container, s2: $1_resource_account_Container): bool { + $IsEqual'$1_simple_map_SimpleMap'address_$1_account_SignerCapability''(s1->$store, s2->$store)} +var $1_resource_account_Container_$memory: $Memory $1_resource_account_Container; + +// fun resource_account::create_resource_account [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+439 +procedure {:timeLimit 80} $1_resource_account_create_resource_account$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $1_account_SignerCapability; + var $t5: int; + var $t6: int; + var $t7: $1_resource_account_Container; + var $t8: bool; + var $t9: $1_account_Account; + var $t10: $1_account_Account; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: $signer; + var $t15: $1_account_SignerCapability; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $1_resource_account_Container; + var $t20: bool; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#765: $Memory $1_account_Account; + var $1_resource_account_Container_$memory#766: $Memory $1_resource_account_Container; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume {:print "$at(53,4055,4056)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume $IsValid'vec'u8''($t2); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: resource_account::Container: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_resource_account_Container_$memory, $a_0)}(var $rsc := $ResourceValue($1_resource_account_Container_$memory, $a_0); + ($IsValid'$1_resource_account_Container'($rsc)))); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:71:9+45 + assume {:print "$at(54,3718,3763)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, account::spec_create_resource_address($t5, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:72:9+77 + assume {:print "$at(54,3772,3849)"} true; + assume ($t6 == $1_account_spec_create_resource_address($t5, $t1)); + + // assume Identical($t7, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:156:9+47 + assume {:print "$at(54,7402,7449)"} true; + assume ($t7 == $ResourceValue($1_resource_account_Container_$memory, $t5)); + + // assume Identical($t8, Eq(Len($t2), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:157:9+38 + assume {:print "$at(54,7458,7496)"} true; + assume ($t8 == $IsEqual'num'(LenVec($t2), 0)); + + // assume Identical($t9, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:158:9+52 + assume {:print "$at(54,7505,7557)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t5)); + + // assume Identical($t10, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t10 == $ResourceValue($1_account_Account_$memory, $t6)); + + // assume Neq
($t5, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:160:9+38 + assume {:print "$at(54,7567,7605)"} true; + assume !$IsEqual'address'($t5, $t6); + + // @765 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:160:9+38 + $1_account_Account_$memory#765 := $1_account_Account_$memory; + + // @766 := save_mem(resource_account::Container) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:160:9+38 + $1_resource_account_Container_$memory#766 := $1_resource_account_Container_$memory; + + // trace_local[origin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume {:print "$at(53,4055,4056)"} true; + assume {:print "$track_local(95,0,0):", $t0} $t0 == $t0; + + // trace_local[seed]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume {:print "$track_local(95,0,1):", $t1} $t1 == $t1; + + // trace_local[optional_auth_key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:86:5+1 + assume {:print "$track_local(95,0,2):", $t2} $t2 == $t2; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:585:9+45 + assume {:print "$at(18,29789,29834)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, account::spec_create_resource_address($t11, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:586:9+68 + assume {:print "$at(18,29843,29911)"} true; + assume ($t12 == $1_account_spec_create_resource_address($t11, $t1)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:662:9+45 + assume {:print "$at(18,32966,33011)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // ($t14, $t15) := account::create_resource_account($t0, $t1) on_abort goto L2 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:91:47+46 + assume {:print "$at(53,4260,4306)"} true; + call $t14,$t15 := $1_account_create_resource_account($t0, $t1); + if ($abort_flag) { + assume {:print "$at(53,4260,4306)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(95,0):", $t16} $t16 == $t16; + goto L2; + } + + // trace_local[resource_signer_cap]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:91:24+19 + assume {:print "$track_local(95,0,4):", $t15} $t15 == $t15; + + // trace_local[resource]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:91:14+8 + assume {:print "$track_local(95,0,3):", $t14} $t14 == $t14; + + // assume Identical($t17, signer::$address_of($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:119:9+49 + assume {:print "$at(54,5763,5812)"} true; + assume ($t17 == $1_signer_$address_of($t14)); + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:135:9+45 + assume {:print "$at(54,6453,6498)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:136:9+47 + assume {:print "$at(54,6507,6554)"} true; + assume ($t19 == $ResourceValue($1_resource_account_Container_$memory, $t18)); + + // assume Identical($t20, Eq(Len($t2), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:137:9+38 + assume {:print "$at(54,6563,6601)"} true; + assume ($t20 == $IsEqual'num'(LenVec($t2), 0)); + + // resource_account::rotate_account_authentication_key_and_store_capability($t0, $t14, $t15, $t2) on_abort goto L2 with $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:92:9+171 + assume {:print "$at(53,4316,4487)"} true; + call $1_resource_account_rotate_account_authentication_key_and_store_capability($t0, $t14, $t15, $t2); + if ($abort_flag) { + assume {:print "$at(53,4316,4487)"} true; + $t16 := $abort_code; + assume {:print "$track_abort(95,0):", $t16} $t16 == $t16; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:98:5+1 + assume {:print "$at(53,4493,4494)"} true; +L1: + + // 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:162:9+35 + assume {:print "$at(54,7615,7650)"} true; + assert {:msg "assert_failed(54,7615,7650): 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(And($t8, Not(exists[@765]($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:168:9+56 + assume {:print "$at(54,7926,7982)"} true; + assert {:msg "assert_failed(54,7926,7982): function does not abort under this condition"} + !($t8 && !$ResourceExists($1_account_Account_$memory#765, $t5)); + + // assert Not(And(exists[@766]($t5), simple_map::spec_contains_key[](select resource_account::Container.store($t7), $t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:169:9+106 + assume {:print "$at(54,7991,8097)"} true; + assert {:msg "assert_failed(54,7991,8097): function does not abort under this condition"} + !($ResourceExists($1_resource_account_Container_$memory#766, $t5) && $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t7->$store, $t6)); + + // assert Not(And($t8, Neq(Len(select account::Account.authentication_key(global[@765]($t5))), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:170:9+85 + assume {:print "$at(54,8106,8191)"} true; + assert {:msg "assert_failed(54,8106,8191): function does not abort under this condition"} + !($t8 && !$IsEqual'num'(LenVec($ResourceValue($1_account_Account_$memory#765, $t5)->$authentication_key), 32)); + + // assert Not(And(Not($t8), Neq(Len($t2), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:170:94+69 + assert {:msg "assert_failed(54,8191,8260): function does not abort under this condition"} + !(!$t8 && !$IsEqual'num'(LenVec($t2), 32)); + + // assert Not(And(account::$exists_at[@765]($t6), Neq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t10)))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:663:9+60 + assume {:print "$at(18,33020,33080)"} true; + assert {:msg "assert_failed(18,33020,33080): function does not abort under this condition"} + !($1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'num'(LenVec($t10->$signer_capability_offer->$for->$vec), 0)); + + // assert Not(And(account::$exists_at[@765]($t6), Neq(select account::Account.sequence_number($t10), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:664:9+39 + assume {:print "$at(18,33089,33128)"} true; + assert {:msg "assert_failed(18,33089,33128): function does not abort under this condition"} + !($1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'u64'($t10->$sequence_number, 0)); + + // assert Not(And(Not(account::$exists_at[@765]($t6)), Neq(Len($t2), 32))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:163:9+40 + assume {:print "$at(18,8955,8995)"} true; + assert {:msg "assert_failed(18,8955,8995): function does not abort under this condition"} + !(!$1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'num'(LenVec($t2), 32)); + + // assert Not(And(Not(account::$exists_at[@765]($t6)), exists[@765]($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:164:9+32 + assume {:print "$at(18,9004,9036)"} true; + assert {:msg "assert_failed(18,9004,9036): function does not abort under this condition"} + !(!$1_account_$exists_at($1_account_Account_$memory#765, $t6) && $ResourceExists($1_account_Account_$memory#765, $t6)); + + // assert simple_map::spec_contains_key(select resource_account::Container.store(global($t5)), $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:174:9+91 + assume {:print "$at(54,8270,8361)"} true; + assert {:msg "assert_failed(54,8270,8361): post-condition does not hold"} + $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($ResourceValue($1_resource_account_Container_$memory, $t5)->$store, $t6); + + // assert exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:175:9+39 + assume {:print "$at(54,8370,8409)"} true; + assert {:msg "assert_failed(54,8370,8409): post-condition does not hold"} + $ResourceExists($1_resource_account_Container_$memory, $t5); + + // assert Implies(Not(account::$exists_at($t6)), Eq(Len($t2), 32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + assume {:print "$at(18,9045,9083)"} true; + assert {:msg "assert_failed(18,9045,9083): post-condition does not hold"} + (!$1_account_$exists_at($1_account_Account_$memory, $t6) ==> $IsEqual'num'(LenVec($t2), 32)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:165:9+38 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:98:5+1 + assume {:print "$at(53,4493,4494)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(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), And($t8, Not(exists[@765]($t5)))), And(exists[@766]($t5), simple_map::spec_contains_key[](select resource_account::Container.store($t7), $t6))), And($t8, Neq(Len(select account::Account.authentication_key(global[@765]($t5))), 32))), And(Not($t8), Neq(Len($t2), 32))), And(account::$exists_at[@765]($t6), Neq(Len
(select option::Option.vec>(select account::CapabilityOffer.for>(select account::Account.signer_capability_offer($t10)))), 0))), And(account::$exists_at[@765]($t6), Neq(select account::Account.sequence_number($t10), 0))), And(Not(account::$exists_at[@765]($t6)), Neq(Len($t2), 32))), And(Not(account::$exists_at[@765]($t6)), exists[@765]($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:66:5+366 + assume {:print "$at(54,3582,3948)"} true; + assert {:msg "assert_failed(54,3582,3948): abort not covered by any of the `aborts_if` clauses"} + ((((((((!$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) || ($t8 && !$ResourceExists($1_account_Account_$memory#765, $t5))) || ($ResourceExists($1_resource_account_Container_$memory#766, $t5) && $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t7->$store, $t6))) || ($t8 && !$IsEqual'num'(LenVec($ResourceValue($1_account_Account_$memory#765, $t5)->$authentication_key), 32))) || (!$t8 && !$IsEqual'num'(LenVec($t2), 32))) || ($1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'num'(LenVec($t10->$signer_capability_offer->$for->$vec), 0))) || ($1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'u64'($t10->$sequence_number, 0))) || (!$1_account_$exists_at($1_account_Account_$memory#765, $t6) && !$IsEqual'num'(LenVec($t2), 32))) || (!$1_account_$exists_at($1_account_Account_$memory#765, $t6) && $ResourceExists($1_account_Account_$memory#765, $t6))); + + // abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:66:5+366 + $abort_code := $t16; + $abort_flag := true; + return; + +} + +// fun resource_account::retrieve_resource_account_cap [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1105 +procedure {:timeLimit 80} $1_resource_account_retrieve_resource_account_cap$verify(_$t0: $signer, _$t1: int) returns ($ret0: $1_account_SignerCapability) +{ + // declare local variables + var $t2: $Mutation ($1_resource_account_Container); + var $t3: bool; + var $t4: int; + var $t5: $1_account_SignerCapability; + var $t6: $1_account_SignerCapability; + var $t7: int; + var $t8: $1_resource_account_Container; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $Mutation ($1_resource_account_Container); + var $t15: Table int ($1_account_SignerCapability); + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $Mutation (Table int ($1_account_SignerCapability)); + var $t20: int; + var $t21: $1_account_SignerCapability; + var $t22: Table int ($1_account_SignerCapability); + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: $1_resource_account_Container; + var $t27: Table int ($1_account_SignerCapability); + var $t28: Vec (int); + var $t29: int; + var $t0: $signer; + var $t1: int; + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'$1_resource_account_Container': $1_resource_account_Container; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_resource_account_Container_$memory#767: $Memory $1_resource_account_Container; + var $1_account_Account_$memory#768: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume {:print "$at(53,7505,7506)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: resource_account::Container: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_resource_account_Container_$memory, $a_0)}(var $rsc := $ResourceValue($1_resource_account_Container_$memory, $a_0); + ($IsValid'$1_resource_account_Container'($rsc)))); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:184:9+49 + assume {:print "$at(54,8640,8689)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:186:9+47 + assume {:print "$at(54,8699,8746)"} true; + assume ($t8 == $ResourceValue($1_resource_account_Container_$memory, $t1)); + + // @768 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume {:print "$at(53,7505,7506)"} true; + $1_account_Account_$memory#768 := $1_account_Account_$memory; + + // @767 := save_mem(resource_account::Container) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + $1_resource_account_Container_$memory#767 := $1_resource_account_Container_$memory; + + // trace_local[resource]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume {:print "$track_local(95,2,0):", $t0} $t0 == $t0; + + // trace_local[source_addr]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:166:5+1 + assume {:print "$track_local(95,2,1):", $t1} $t1 == $t1; + + // $t9 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:17+6 + assume {:print "$at(53,7674,7680)"} true; + $t9 := $ResourceExists($1_resource_account_Container_$memory, $t1); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 + assume {:print "$at(53,7666,7749)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:66+24 + assume {:print "$at(53,7723,7747)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:49+42 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(53,7706,7748)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 + assume {:print "$at(53,7666,7749)"} true; + assume {:print "$track_abort(95,2):", $t11} $t11 == $t11; + + // $t12 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 + $t12 := $t11; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:170:9+83 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:172:48+8 + assume {:print "$at(53,7799,7807)"} true; +L2: + + // $t13 := signer::address_of($t0) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:172:29+28 + assume {:print "$at(53,7780,7808)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(53,7780,7808)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // trace_local[resource_addr]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:172:13+13 + assume {:print "$track_local(95,2,4):", $t13} $t13 == $t13; + + // $t14 := borrow_global($t1) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:174:29+17 + assume {:print "$at(53,7893,7910)"} true; + if (!$ResourceExists($1_resource_account_Container_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_resource_account_Container_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(53,7893,7910)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // trace_local[container]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:174:17+9 + $temp_0'$1_resource_account_Container' := $Dereference($t14); + assume {:print "$track_local(95,2,2):", $temp_0'$1_resource_account_Container'} $temp_0'$1_resource_account_Container' == $temp_0'$1_resource_account_Container'; + + // $t15 := get_field.store($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:176:42+16 + assume {:print "$at(53,7998,8014)"} true; + $t15 := $Dereference($t14)->$store; + + // $t16 := simple_map::contains_key($t15, $t13) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:176:17+58 + call $t16 := $1_simple_map_contains_key'address_$1_account_SignerCapability'($t15, $t13); + if ($abort_flag) { + assume {:print "$at(53,7973,8031)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + assume {:print "$at(53,7948,8111)"} true; + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + assume {:print "$at(53,7948,8111)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 +L3: + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + assume {:print "$at(53,7948,8111)"} true; + + // $t17 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:177:41+23 + assume {:print "$at(53,8073,8096)"} true; + $t17 := 2; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:177:17+48 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(53,8049,8097)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + assume {:print "$at(53,7948,8111)"} true; + assume {:print "$track_abort(95,2):", $t18} $t18 == $t18; + + // $t12 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + $t12 := $t18; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:175:13+163 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:72+9 + assume {:print "$at(53,8184,8193)"} true; +L5: + + // $t19 := borrow_field.store($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:67+20 + assume {:print "$at(53,8179,8199)"} true; + $t19 := $ChildMutation($t14, 0, $Dereference($t14)->$store); + + // ($t20, $t21) := simple_map::remove($t19, $t13) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:48+56 + call $t20,$t21,$t19 := $1_simple_map_remove'address_$1_account_SignerCapability'($t19, $t13); + if ($abort_flag) { + assume {:print "$at(53,8160,8216)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // write_back[Reference($t14).store (simple_map::SimpleMap)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:48+56 + $t14 := $UpdateMutation($t14, $Update'$1_resource_account_Container'_store($Dereference($t14), $Dereference($t19))); + + // trace_local[signer_cap]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:34+10 + assume {:print "$track_local(95,2,6):", $t21} $t21 == $t21; + + // drop($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:179:18+14 + + // $t22 := get_field.store($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:180:45+16 + assume {:print "$at(53,8262,8278)"} true; + $t22 := $Dereference($t14)->$store; + + // write_back[resource_account::Container@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:180:45+16 + $1_resource_account_Container_$memory := $ResourceUpdate($1_resource_account_Container_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // $t23 := simple_map::length($t22) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:180:26+36 + call $t23 := $1_simple_map_length'address_$1_account_SignerCapability'($t22); + if ($abort_flag) { + assume {:print "$at(53,8243,8279)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:180:66+1 + $t24 := 0; + assume $IsValid'u64'($t24); + + // $t25 := ==($t23, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:180:63+2 + $t25 := $IsEqual'u64'($t23, $t24); + + // trace_local[empty_container]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:173:35+15 + assume {:print "$at(53,7844,7859)"} true; + assume {:print "$track_local(95,2,3):", $t25} $t25 == $t25; + + // trace_local[resource_signer_cap]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:173:14+19 + assume {:print "$track_local(95,2,5):", $t21} $t21 == $t21; + + // if ($t25) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:183:9+190 + assume {:print "$at(53,8306,8496)"} true; + if ($t25) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:184:50+11 + assume {:print "$at(53,8378,8389)"} true; +L7: + + // $t26 := move_from($t1) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:184:29+9 + assume {:print "$at(53,8357,8366)"} true; + if (!$ResourceExists($1_resource_account_Container_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t26 := $ResourceValue($1_resource_account_Container_$memory, $t1); + $1_resource_account_Container_$memory := $ResourceRemove($1_resource_account_Container_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(53,8357,8366)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // $t27 := unpack resource_account::Container($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:185:17+19 + assume {:print "$at(53,8408,8427)"} true; + $t27 := $t26->$store; + + // simple_map::destroy_empty($t27) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:186:13+32 + assume {:print "$at(53,8453,8485)"} true; + call $1_simple_map_destroy_empty'address_$1_account_SignerCapability'($t27); + if ($abort_flag) { + assume {:print "$at(53,8453,8485)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:189:53+8 + assume {:print "$at(53,8551,8559)"} true; +L6: + + // $t28 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:189:63+13 + assume {:print "$at(53,8561,8574)"} true; + $t28 := 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''($t28); + + // assume Identical($t29, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t29 == $1_signer_$address_of($t0)); + + // account::rotate_authentication_key_internal($t0, $t28) on_abort goto L9 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:189:9+68 + assume {:print "$at(53,8507,8575)"} true; + call $1_account_rotate_authentication_key_internal($t0, $t28); + if ($abort_flag) { + assume {:print "$at(53,8507,8575)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(95,2):", $t12} $t12 == $t12; + goto L9; + } + + // trace_return[0]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:190:9+19 + assume {:print "$at(53,8585,8604)"} true; + assume {:print "$track_return(95,2,0):", $t21} $t21 == $t21; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:191:5+1 + assume {:print "$at(53,8609,8610)"} true; +L8: + + // assert Not(Not(exists[@767]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:183:9+42 + assume {:print "$at(54,8589,8631)"} true; + assert {:msg "assert_failed(54,8589,8631): function does not abort under this condition"} + !!$ResourceExists($1_resource_account_Container_$memory#767, $t1); + + // assert Not(Not(simple_map::spec_contains_key[](select resource_account::Container.store($t8), $t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:188:9+73 + assume {:print "$at(54,8786,8859)"} true; + assert {:msg "assert_failed(54,8786,8859): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t8->$store, $t7); + + // assert Not(Not(exists[@768]($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:189:9+51 + assume {:print "$at(54,8868,8919)"} true; + assert {:msg "assert_failed(54,8868,8919): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#768, $t7); + + // assert Implies(And(simple_map::spec_contains_key(select resource_account::Container.store(global[@767]($t1)), $t7), Eq(simple_map::spec_len(select resource_account::Container.store(global[@767]($t1))), 1)), Not(exists($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:191:9+216 + assume {:print "$at(54,8959,9175)"} true; + assert {:msg "assert_failed(54,8959,9175): post-condition does not hold"} + (($1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($ResourceValue($1_resource_account_Container_$memory#767, $t1)->$store, $t7) && $IsEqual'num'($1_simple_map_spec_len'address_$1_account_SignerCapability'($ResourceValue($1_resource_account_Container_$memory#767, $t1)->$store), 1)) ==> !$ResourceExists($1_resource_account_Container_$memory, $t1)); + + // assert Implies(exists($t1), Not(simple_map::spec_contains_key(select resource_account::Container.store(global($t1)), $t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:193:9+161 + assume {:print "$at(54,9184,9345)"} true; + assert {:msg "assert_failed(54,9184,9345): post-condition does not hold"} + ($ResourceExists($1_resource_account_Container_$memory, $t1) ==> !$1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($ResourceValue($1_resource_account_Container_$memory, $t1)->$store, $t7)); + + // return $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:193:9+161 + $ret0 := $t21; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:191:5+1 + assume {:print "$at(53,8609,8610)"} true; +L9: + + // assert Or(Or(Not(exists[@767]($t1)), Not(simple_map::spec_contains_key[](select resource_account::Container.store($t8), $t7))), Not(exists[@768]($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:178:5+930 + assume {:print "$at(54,8421,9351)"} true; + assert {:msg "assert_failed(54,8421,9351): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_resource_account_Container_$memory#767, $t1) || !$1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t8->$store, $t7)) || !$ResourceExists($1_account_Account_$memory#768, $t7)); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:178:5+930 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun resource_account::rotate_account_authentication_key_and_store_capability [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+888 +procedure {:inline 1} $1_resource_account_rotate_account_authentication_key_and_store_capability(_$t0: $signer, _$t1: $signer, _$t2: $1_account_SignerCapability, _$t3: Vec (int)) returns () +{ + // declare local variables + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: $Mutation ($1_resource_account_Container); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_resource_account_Container; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: Table int ($1_account_SignerCapability); + var $t18: $1_resource_account_Container; + var $t19: $Mutation ($1_resource_account_Container); + var $t20: int; + var $t21: $Mutation (Table int ($1_account_SignerCapability)); + var $t22: bool; + var $t23: int; + var $t0: $signer; + var $t1: $signer; + var $t2: $1_account_SignerCapability; + var $t3: Vec (int); + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'$1_resource_account_Container': $1_resource_account_Container; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t9, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:119:9+49 + assume {:print "$at(54,5763,5812)"} true; + assume ($t9 == $1_signer_$address_of($t1)); + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:135:9+45 + assume {:print "$at(54,6453,6498)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, global($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:136:9+47 + assume {:print "$at(54,6507,6554)"} true; + assume ($t11 == $ResourceValue($1_resource_account_Container_$memory, $t10)); + + // assume Identical($t12, Eq(Len($t3), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:137:9+38 + assume {:print "$at(54,6563,6601)"} true; + assume ($t12 == $IsEqual'num'(LenVec($t3), 0)); + + // trace_local[origin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$at(53,6386,6387)"} true; + assume {:print "$track_local(95,3,0):", $t0} $t0 == $t0; + + // trace_local[resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,1):", $t1} $t1 == $t1; + + // trace_local[resource_signer_cap]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,2):", $t2} $t2 == $t2; + + // trace_local[optional_auth_key]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,3):", $t3} $t3 == $t3; + + // $t13 := signer::address_of($t0) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:146:27+26 + assume {:print "$at(53,6645,6671)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(53,6645,6671)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[origin_addr]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:146:13+11 + assume {:print "$track_local(95,3,7):", $t13} $t13 == $t13; + + // $t15 := exists($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:14+6 + assume {:print "$at(53,6686,6692)"} true; + $t15 := $ResourceExists($1_resource_account_Container_$memory, $t13); + + // $t16 := !($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:13+1 + call $t16 := $Not($t15); + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:9+119 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:21+6 + assume {:print "$at(53,6740,6746)"} true; +L1: + + // $t17 := simple_map::create() on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:48+20 + assume {:print "$at(53,6767,6787)"} true; + call $t17 := $1_simple_map_create'address_$1_account_SignerCapability'(); + if ($abort_flag) { + assume {:print "$at(53,6767,6787)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // $t18 := pack resource_account::Container($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:29+41 + $t18 := $1_resource_account_Container($t17); + + // move_to($t18, $t0) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:13+7 + if ($ResourceExists($1_resource_account_Container_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_resource_account_Container_$memory := $ResourceUpdate($1_resource_account_Container_$memory, $t0->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(53,6732,6739)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:13+58 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:9+119 + assume {:print "$at(53,6681,6800)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:54+11 + assume {:print "$at(53,6856,6867)"} true; +L2: + + // $t19 := borrow_global($t13) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:25+17 + assume {:print "$at(53,6827,6844)"} true; + if (!$ResourceExists($1_resource_account_Container_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_resource_account_Container_$memory, $t13)); + } + if ($abort_flag) { + assume {:print "$at(53,6827,6844)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[container]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:13+9 + $temp_0'$1_resource_account_Container' := $Dereference($t19); + assume {:print "$track_local(95,3,6):", $temp_0'$1_resource_account_Container'} $temp_0'$1_resource_account_Container' == $temp_0'$1_resource_account_Container'; + + // $t20 := signer::address_of($t1) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:152:29+29 + assume {:print "$at(53,6898,6927)"} true; + call $t20 := $1_signer_address_of($t1); + if ($abort_flag) { + assume {:print "$at(53,6898,6927)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[resource_addr]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:152:13+13 + assume {:print "$track_local(95,3,8):", $t20} $t20 == $t20; + + // $t21 := borrow_field.store($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:25+20 + assume {:print "$at(53,6953,6973)"} true; + $t21 := $ChildMutation($t19, 0, $Dereference($t19)->$store); + + // simple_map::add($t21, $t20, $t2) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + call $t21 := $1_simple_map_add'address_$1_account_SignerCapability'($t21, $t20, $t2); + if ($abort_flag) { + assume {:print "$at(53,6937,7010)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // write_back[Reference($t19).store (simple_map::SimpleMap)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + $t19 := $UpdateMutation($t19, $Update'$1_resource_account_Container'_store($Dereference($t19), $Dereference($t21))); + + // write_back[resource_account::Container@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + $1_resource_account_Container_$memory := $ResourceUpdate($1_resource_account_Container_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t22 := vector::is_empty($t3) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:28+36 + assume {:print "$at(53,7040,7076)"} true; + call $t22 := $1_vector_is_empty'u8'($t3); + if ($abort_flag) { + assume {:print "$at(53,7040,7076)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // if ($t22) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:156:45+11 + assume {:print "$at(53,7124,7135)"} true; +L4: + + // $t4 := account::get_authentication_key($t13) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:156:13+44 + assume {:print "$at(53,7092,7136)"} true; + call $t4 := $1_account_get_authentication_key($t13); + if ($abort_flag) { + assume {:print "$at(53,7092,7136)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + assume {:print "$at(53,7036,7193)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:158:13+17 + assume {:print "$at(53,7166,7183)"} true; +L3: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + assume {:print "$at(53,7036,7193)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 +L5: + + // trace_local[auth_key]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:13+8 + assume {:print "$at(53,7025,7033)"} true; + assume {:print "$track_local(95,3,5):", $t4} $t4 == $t4; + + // assume Identical($t23, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t23 == $1_signer_$address_of($t1)); + + // account::rotate_authentication_key_internal($t1, $t4) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:160:9+64 + assume {:print "$at(53,7203,7267)"} true; + call $1_account_rotate_authentication_key_internal($t1, $t4); + if ($abort_flag) { + assume {:print "$at(53,7203,7267)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 + assume {:print "$at(53,7273,7274)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 + assume {:print "$at(53,7273,7274)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 +L7: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 + assume {:print "$at(53,7273,7274)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun resource_account::rotate_account_authentication_key_and_store_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+888 +procedure {:timeLimit 80} $1_resource_account_rotate_account_authentication_key_and_store_capability$verify(_$t0: $signer, _$t1: $signer, _$t2: $1_account_SignerCapability, _$t3: Vec (int)) returns () +{ + // declare local variables + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: $Mutation ($1_resource_account_Container); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_resource_account_Container; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: Table int ($1_account_SignerCapability); + var $t18: $1_resource_account_Container; + var $t19: $Mutation ($1_resource_account_Container); + var $t20: int; + var $t21: $Mutation (Table int ($1_account_SignerCapability)); + var $t22: bool; + var $t23: int; + var $t0: $signer; + var $t1: $signer; + var $t2: $1_account_SignerCapability; + var $t3: Vec (int); + var $temp_0'$1_account_SignerCapability': $1_account_SignerCapability; + var $temp_0'$1_resource_account_Container': $1_resource_account_Container; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_account_Account_$memory#761: $Memory $1_account_Account; + var $1_resource_account_Container_$memory#762: $Memory $1_resource_account_Container; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$at(53,6386,6387)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume $IsValid'signer'($t1) && $1_signer_is_txn_signer($t1) && $1_signer_is_txn_signer_addr($t1->$addr); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume $IsValid'$1_account_SignerCapability'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume $IsValid'vec'u8''($t3); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: resource_account::Container: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_resource_account_Container_$memory, $a_0)}(var $rsc := $ResourceValue($1_resource_account_Container_$memory, $a_0); + ($IsValid'$1_resource_account_Container'($rsc)))); + + // assume Identical($t9, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:119:9+49 + assume {:print "$at(54,5763,5812)"} true; + assume ($t9 == $1_signer_$address_of($t1)); + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:135:9+45 + assume {:print "$at(54,6453,6498)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, global($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:136:9+47 + assume {:print "$at(54,6507,6554)"} true; + assume ($t11 == $ResourceValue($1_resource_account_Container_$memory, $t10)); + + // assume Identical($t12, Eq(Len($t3), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:137:9+38 + assume {:print "$at(54,6563,6601)"} true; + assume ($t12 == $IsEqual'num'(LenVec($t3), 0)); + + // @761 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$at(53,6386,6387)"} true; + $1_account_Account_$memory#761 := $1_account_Account_$memory; + + // @762 := save_mem(resource_account::Container) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + $1_resource_account_Container_$memory#762 := $1_resource_account_Container_$memory; + + // trace_local[origin]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,0):", $t0} $t0 == $t0; + + // trace_local[resource]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,1):", $t1} $t1 == $t1; + + // trace_local[resource_signer_cap]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,2):", $t2} $t2 == $t2; + + // trace_local[optional_auth_key]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:140:5+1 + assume {:print "$track_local(95,3,3):", $t3} $t3 == $t3; + + // $t13 := signer::address_of($t0) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:146:27+26 + assume {:print "$at(53,6645,6671)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(53,6645,6671)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[origin_addr]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:146:13+11 + assume {:print "$track_local(95,3,7):", $t13} $t13 == $t13; + + // $t15 := exists($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:14+6 + assume {:print "$at(53,6686,6692)"} true; + $t15 := $ResourceExists($1_resource_account_Container_$memory, $t13); + + // $t16 := !($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:13+1 + call $t16 := $Not($t15); + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:9+119 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:21+6 + assume {:print "$at(53,6740,6746)"} true; +L1: + + // $t17 := simple_map::create() on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:48+20 + assume {:print "$at(53,6767,6787)"} true; + call $t17 := $1_simple_map_create'address_$1_account_SignerCapability'(); + if ($abort_flag) { + assume {:print "$at(53,6767,6787)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // $t18 := pack resource_account::Container($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:29+41 + $t18 := $1_resource_account_Container($t17); + + // move_to($t18, $t0) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:13+7 + if ($ResourceExists($1_resource_account_Container_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_resource_account_Container_$memory := $ResourceUpdate($1_resource_account_Container_$memory, $t0->$addr, $t18); + } + if ($abort_flag) { + assume {:print "$at(53,6732,6739)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:148:13+58 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:147:9+119 + assume {:print "$at(53,6681,6800)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:54+11 + assume {:print "$at(53,6856,6867)"} true; +L2: + + // $t19 := borrow_global($t13) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:25+17 + assume {:print "$at(53,6827,6844)"} true; + if (!$ResourceExists($1_resource_account_Container_$memory, $t13)) { + call $ExecFailureAbort(); + } else { + $t19 := $Mutation($Global($t13), EmptyVec(), $ResourceValue($1_resource_account_Container_$memory, $t13)); + } + if ($abort_flag) { + assume {:print "$at(53,6827,6844)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[container]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:151:13+9 + $temp_0'$1_resource_account_Container' := $Dereference($t19); + assume {:print "$track_local(95,3,6):", $temp_0'$1_resource_account_Container'} $temp_0'$1_resource_account_Container' == $temp_0'$1_resource_account_Container'; + + // $t20 := signer::address_of($t1) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:152:29+29 + assume {:print "$at(53,6898,6927)"} true; + call $t20 := $1_signer_address_of($t1); + if ($abort_flag) { + assume {:print "$at(53,6898,6927)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // trace_local[resource_addr]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:152:13+13 + assume {:print "$track_local(95,3,8):", $t20} $t20 == $t20; + + // $t21 := borrow_field.store($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:25+20 + assume {:print "$at(53,6953,6973)"} true; + $t21 := $ChildMutation($t19, 0, $Dereference($t19)->$store); + + // simple_map::add($t21, $t20, $t2) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + call $t21 := $1_simple_map_add'address_$1_account_SignerCapability'($t21, $t20, $t2); + if ($abort_flag) { + assume {:print "$at(53,6937,7010)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // write_back[Reference($t19).store (simple_map::SimpleMap)]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + $t19 := $UpdateMutation($t19, $Update'$1_resource_account_Container'_store($Dereference($t19), $Dereference($t21))); + + // write_back[resource_account::Container@]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:153:9+73 + $1_resource_account_Container_$memory := $ResourceUpdate($1_resource_account_Container_$memory, $GlobalLocationAddress($t19), + $Dereference($t19)); + + // $t22 := vector::is_empty($t3) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:28+36 + assume {:print "$at(53,7040,7076)"} true; + call $t22 := $1_vector_is_empty'u8'($t3); + if ($abort_flag) { + assume {:print "$at(53,7040,7076)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // if ($t22) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + if ($t22) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:156:45+11 + assume {:print "$at(53,7124,7135)"} true; +L4: + + // $t4 := account::get_authentication_key($t13) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:156:13+44 + assume {:print "$at(53,7092,7136)"} true; + call $t4 := $1_account_get_authentication_key($t13); + if ($abort_flag) { + assume {:print "$at(53,7092,7136)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + assume {:print "$at(53,7036,7193)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:158:13+17 + assume {:print "$at(53,7166,7183)"} true; +L3: + + // $t4 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 + assume {:print "$at(53,7036,7193)"} true; + $t4 := $t3; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:24+157 +L5: + + // trace_local[auth_key]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:155:13+8 + assume {:print "$at(53,7025,7033)"} true; + assume {:print "$track_local(95,3,5):", $t4} $t4 == $t4; + + // assume Identical($t23, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:198:9+39 + assume {:print "$at(18,10345,10384)"} true; + assume ($t23 == $1_signer_$address_of($t1)); + + // account::rotate_authentication_key_internal($t1, $t4) on_abort goto L7 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:160:9+64 + assume {:print "$at(53,7203,7267)"} true; + call $1_account_rotate_authentication_key_internal($t1, $t4); + if ($abort_flag) { + assume {:print "$at(53,7203,7267)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(95,3):", $t14} $t14 == $t14; + goto L7; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 + assume {:print "$at(53,7273,7274)"} true; +L6: + + // assert Not(And($t12, Not(exists[@761]($t10)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:139:9+47 + assume {:print "$at(54,6611,6658)"} true; + assert {:msg "assert_failed(54,6611,6658): function does not abort under this condition"} + !($t12 && !$ResourceExists($1_account_Account_$memory#761, $t10)); + + // assert Not(And(exists[@762]($t10), simple_map::spec_contains_key[](select resource_account::Container.store($t11), $t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:141:9+106 + assume {:print "$at(54,6698,6804)"} true; + assert {:msg "assert_failed(54,6698,6804): function does not abort under this condition"} + !($ResourceExists($1_resource_account_Container_$memory#762, $t10) && $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t11->$store, $t9)); + + // assert Not(And($t12, Not(And(exists[@761]($t9), Eq(Len(select account::Account.authentication_key(global[@761]($t10))), 32))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:142:9+135 + assume {:print "$at(54,6813,6948)"} true; + assert {:msg "assert_failed(54,6813,6948): function does not abort under this condition"} + !($t12 && !($ResourceExists($1_account_Account_$memory#761, $t9) && $IsEqual'num'(LenVec($ResourceValue($1_account_Account_$memory#761, $t10)->$authentication_key), 32))); + + // assert Not(And(Not($t12), Not(And(exists[@761]($t9), Eq(Len($t3), 32))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:145:9+84 + assume {:print "$at(54,6957,7041)"} true; + assert {:msg "assert_failed(54,6957,7041): function does not abort under this condition"} + !(!$t12 && !($ResourceExists($1_account_Account_$memory#761, $t9) && $IsEqual'num'(LenVec($t3), 32))); + + // assert simple_map::spec_contains_key(select resource_account::Container.store(global($t10)), $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:147:9+91 + assume {:print "$at(54,7051,7142)"} true; + assert {:msg "assert_failed(54,7051,7142): post-condition does not hold"} + $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($ResourceValue($1_resource_account_Container_$memory, $t10)->$store, $t9); + + // assert exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:148:9+39 + assume {:print "$at(54,7151,7190)"} true; + assert {:msg "assert_failed(54,7151,7190): post-condition does not hold"} + $ResourceExists($1_resource_account_Container_$memory, $t10); + + // assert exists(signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:123:9+54 + assume {:print "$at(54,5957,6011)"} true; + assert {:msg "assert_failed(54,5957,6011): post-condition does not hold"} + $ResourceExists($1_resource_account_Container_$memory, $1_signer_$address_of($t0)); + + // assert Implies(Neq(vector::$length($t3), 0), Eq>(select account::Account.authentication_key(global($t9)), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:125:9+163 + assume {:print "$at(54,6051,6214)"} true; + assert {:msg "assert_failed(54,6051,6214): post-condition does not hold"} + (!$IsEqual'u64'($1_vector_$length'u8'($t3), 0) ==> $IsEqual'vec'u8''($ResourceValue($1_account_Account_$memory, $t9)->$authentication_key, $t3)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:125:9+163 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.move:161:5+1 + assume {:print "$at(53,7273,7274)"} true; +L7: + + // assert Or(Or(Or(And($t12, Not(exists[@761]($t10))), And(exists[@762]($t10), simple_map::spec_contains_key[](select resource_account::Container.store($t11), $t9))), And($t12, Not(And(exists[@761]($t9), Eq(Len(select account::Account.authentication_key(global[@761]($t10))), 32))))), And(Not($t12), Not(And(exists[@761]($t9), Eq(Len($t3), 32))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:113:5+680 + assume {:print "$at(54,5540,6220)"} true; + assert {:msg "assert_failed(54,5540,6220): abort not covered by any of the `aborts_if` clauses"} + (((($t12 && !$ResourceExists($1_account_Account_$memory#761, $t10)) || ($ResourceExists($1_resource_account_Container_$memory#762, $t10) && $1_simple_map_spec_contains_key'address_$1_account_SignerCapability'($t11->$store, $t9))) || ($t12 && !($ResourceExists($1_account_Account_$memory#761, $t9) && $IsEqual'num'(LenVec($ResourceValue($1_account_Account_$memory#761, $t10)->$authentication_key), 32)))) || (!$t12 && !($ResourceExists($1_account_Account_$memory#761, $t9) && $IsEqual'num'(LenVec($t3), 32)))); + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/resource_account.spec.move:113:5+680 + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// struct ring::Ring<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:12:5+143 +datatype $1_ring_Ring'#0' { + $1_ring_Ring'#0'($data: Vec ($1_option_Option'#0'), $insertion_index: int, $external_index: int) +} +function {:inline} $Update'$1_ring_Ring'#0''_data(s: $1_ring_Ring'#0', x: Vec ($1_option_Option'#0')): $1_ring_Ring'#0' { + $1_ring_Ring'#0'(x, s->$insertion_index, s->$external_index) +} +function {:inline} $Update'$1_ring_Ring'#0''_insertion_index(s: $1_ring_Ring'#0', x: int): $1_ring_Ring'#0' { + $1_ring_Ring'#0'(s->$data, x, s->$external_index) +} +function {:inline} $Update'$1_ring_Ring'#0''_external_index(s: $1_ring_Ring'#0', x: int): $1_ring_Ring'#0' { + $1_ring_Ring'#0'(s->$data, s->$insertion_index, x) +} +function $IsValid'$1_ring_Ring'#0''(s: $1_ring_Ring'#0'): bool { + $IsValid'vec'$1_option_Option'#0'''(s->$data) + && $IsValid'u64'(s->$insertion_index) + && $IsValid'u64'(s->$external_index) +} +function {:inline} $IsEqual'$1_ring_Ring'#0''(s1: $1_ring_Ring'#0', s2: $1_ring_Ring'#0'): bool { + $IsEqual'vec'$1_option_Option'#0'''(s1->$data, s2->$data) + && $IsEqual'u64'(s1->$insertion_index, s2->$insertion_index) + && $IsEqual'u64'(s1->$external_index, s2->$external_index)} + +// fun ring::borrow_mut [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:91:5+571 +procedure {:timeLimit 80} $1_ring_borrow_mut$verify(_$t0: $Mutation ($1_ring_Ring'#0'), _$t1: int) returns ($ret0: $Mutation ($1_option_Option'#0'), $ret1: $Mutation ($1_ring_Ring'#0')) +{ + // declare local variables + var $t2: bool; + var $t3: $Mutation ($1_option_Option'#0'); + var $t4: int; + var $t5: $1_ring_Ring'#0'; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $Mutation (Vec ($1_option_Option'#0')); + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $Mutation (Vec ($1_option_Option'#0')); + var $t0: $Mutation ($1_ring_Ring'#0'); + var $t1: int; + var $temp_0'$1_option_Option'#0'': $1_option_Option'#0'; + var $temp_0'$1_ring_Ring'#0'': $1_ring_Ring'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall $elem: option::Option<#0>: select ring::Ring.data($t0): Le(Len<#0>(select option::Option.vec($elem)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:91:5+1 + assume {:print "$at(86,2805,2806)"} true; + assume ($IsValid'$1_ring_Ring'#0''($Dereference($t0)) && (var $range_0 := $Dereference($t0)->$data; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1)))))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:91:5+1 + assume $IsValid'u64'($t1); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:91:5+1 + $temp_0'$1_ring_Ring'#0'' := $Dereference($t0); + assume {:print "$track_local(96,1,0):", $temp_0'$1_ring_Ring'#0''} $temp_0'$1_ring_Ring'#0'' == $temp_0'$1_ring_Ring'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:91:5+1 + assume {:print "$track_local(96,1,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:92:37+1 + assume {:print "$at(86,2935,2936)"} true; + $t5 := $Dereference($t0); + + // $t6 := ring::capacity<#0>($t5) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:92:19+20 + call $t6 := $1_ring_capacity'#0'($t5); + if ($abort_flag) { + assume {:print "$at(86,2917,2937)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // trace_local[len]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:92:13+3 + assume {:print "$track_local(96,1,4):", $t6} $t6 == $t6; + + // $t8 := get_field>.external_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:13+16 + assume {:print "$at(86,2951,2967)"} true; + $t8 := $Dereference($t0)->$external_index; + + // $t9 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:38+1 + $t9 := 1; + assume $IsValid'u64'($t9); + + // $t10 := -($t6, $t9) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:36+1 + call $t10 := $Sub($t6, $t9); + if ($abort_flag) { + assume {:print "$at(86,2974,2975)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // $t11 := >($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:30+1 + call $t11 := $Gt($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+1 + assume {:print "$at(86,3018,3019)"} true; +L1: + + // $t12 := get_field>.external_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:22+16 + assume {:print "$at(86,3023,3039)"} true; + $t12 := $Dereference($t0)->$external_index; + + // $t13 := -($t12, $t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:39+1 + call $t13 := $Sub($t12, $t6); + if ($abort_flag) { + assume {:print "$at(86,3040,3041)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // $t14 := >=($t1, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:19+2 + call $t14 := $Ge($t1, $t13); + + // if ($t14) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 + if ($t14) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:48+1 +L3: + + // $t15 := get_field>.external_index($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:52+16 + assume {:print "$at(86,3053,3069)"} true; + $t15 := $Dereference($t0)->$external_index; + + // $t2 := <($t1, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:50+1 + call $t2 := $Lt($t1, $t15); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 +L2: + + // $t16 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 + assume {:print "$at(86,3018,3069)"} true; + $t16 := false; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 + $t2 := $t16; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:95:17+51 +L4: + + // if ($t2) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + assume {:print "$at(86,2993,3156)"} true; + if ($t2) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + assume {:print "$at(86,2993,3156)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 +L5: + + // assert forall $elem: option::Option<#0>: select ring::Ring.data($t0): Le(Len<#0>(select option::Option.vec($elem)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$data; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1))))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + assume {:print "$at(86,2993,3156)"} true; + + // $t17 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:96:41+30 + assume {:print "$at(86,3111,3141)"} true; + $t17 := 101; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:96:17+55 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(86,3087,3142)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + assume {:print "$at(86,2993,3156)"} true; + assume {:print "$track_abort(96,1):", $t18} $t18 == $t18; + + // $t7 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + $t7 := $t18; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:94:13+163 + goto L17; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:98:37+1 + assume {:print "$at(86,3194,3195)"} true; +L7: + + // $t19 := borrow_field>.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:98:32+11 + assume {:print "$at(86,3189,3200)"} true; + $t19 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // $t20 := %($t1, $t6) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:98:47+1 + call $t20 := $Mod($t1, $t6); + if ($abort_flag) { + assume {:print "$at(86,3204,3205)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // $t3 := vector::borrow_mut>($t19, $t20) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:98:13+40 + call $t3,$t19 := $1_vector_borrow_mut'$1_option_Option'#0''($t19, $t20); + if ($abort_flag) { + assume {:print "$at(86,3170,3210)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + assume {:print "$at(86,2947,3370)"} true; + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:21+1 + assume {:print "$at(86,3247,3248)"} true; +L0: + + // $t21 := <($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:23+1 + assume {:print "$at(86,3249,3250)"} true; + call $t21 := $Lt($t1, $t6); + + // if ($t21) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + if ($t21) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + assume {:print "$at(86,3239,3312)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 +L9: + + // assert forall $elem: option::Option<#0>: select ring::Ring.data($t0): Le(Len<#0>(select option::Option.vec($elem)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$data; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1))))); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + assume {:print "$at(86,3239,3312)"} true; + + // $t22 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:54+30 + $t22 := 101; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:30+55 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(86,3256,3311)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + assume {:print "$at(86,3239,3312)"} true; + assume {:print "$track_abort(96,1):", $t23} $t23 == $t23; + + // $t7 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + $t7 := $t23; + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:100:13+73 + goto L17; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:101:37+1 + assume {:print "$at(86,3350,3351)"} true; +L11: + + // $t24 := borrow_field>.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:101:32+11 + assume {:print "$at(86,3345,3356)"} true; + $t24 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // $t3 := vector::borrow_mut>($t24, $t1) on_abort goto L17 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:101:13+34 + call $t3,$t24 := $1_vector_borrow_mut'$1_option_Option'#0''($t24, $t1); + if ($abort_flag) { + assume {:print "$at(86,3326,3360)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(96,1):", $t7} $t7 == $t7; + goto L17; + } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + assume {:print "$at(86,2947,3370)"} true; +L8: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + assume {:print "$at(86,2947,3370)"} true; + $temp_0'$1_option_Option'#0'' := $Dereference($t3); + assume {:print "$track_return(96,1,0):", $temp_0'$1_option_Option'#0''} $temp_0'$1_option_Option'#0'' == $temp_0'$1_option_Option'#0''; + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + $temp_0'$1_ring_Ring'#0'' := $Dereference($t0); + assume {:print "$track_local(96,1,0):", $temp_0'$1_ring_Ring'#0''} $temp_0'$1_ring_Ring'#0'' == $temp_0'$1_ring_Ring'#0''; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 +L13: + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:93:9+423 + assume {:print "$at(86,2947,3370)"} true; +L15: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:103:5+1 + assume {:print "$at(86,3375,3376)"} true; +L16: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:103:5+1 + assume {:print "$at(86,3375,3376)"} true; + $ret0 := $t3; + $ret1 := $t0; + return; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:103:5+1 +L17: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:103:5+1 + assume {:print "$at(86,3375,3376)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ring::capacity<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:47:5+92 +procedure {:inline 1} $1_ring_capacity'#0'(_$t0: $1_ring_Ring'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: Vec ($1_option_Option'#0'); + var $t2: int; + var $t3: int; + var $t0: $1_ring_Ring'#0'; + var $temp_0'$1_ring_Ring'#0'': $1_ring_Ring'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:47:5+1 + assume {:print "$at(86,1274,1275)"} true; + assume {:print "$track_local(96,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:24+7 + assume {:print "$at(86,1352,1359)"} true; + $t1 := $t0->$data; + + // $t2 := vector::length>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:9+23 + call $t2 := $1_vector_length'$1_option_Option'#0''($t1); + if ($abort_flag) { + assume {:print "$at(86,1337,1360)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(96,2):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:9+23 + assume {:print "$track_return(96,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ring::capacity [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:47:5+92 +procedure {:timeLimit 80} $1_ring_capacity$verify(_$t0: $1_ring_Ring'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: Vec ($1_option_Option'#0'); + var $t2: int; + var $t3: int; + var $t0: $1_ring_Ring'#0'; + var $temp_0'$1_ring_Ring'#0'': $1_ring_Ring'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), forall $elem: option::Option<#0>: select ring::Ring.data($t0): Le(Len<#0>(select option::Option.vec($elem)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:47:5+1 + assume {:print "$at(86,1274,1275)"} true; + assume ($IsValid'$1_ring_Ring'#0''($t0) && (var $range_0 := $t0->$data; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1)))))); + + // trace_local[r]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:47:5+1 + assume {:print "$track_local(96,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field>.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:24+7 + assume {:print "$at(86,1352,1359)"} true; + $t1 := $t0->$data; + + // $t2 := vector::length>($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:9+23 + call $t2 := $1_vector_length'$1_option_Option'#0''($t1); + if ($abort_flag) { + assume {:print "$at(86,1337,1360)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(96,2):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:48:9+23 + assume {:print "$track_return(96,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/ring.move:49:5+1 + assume {:print "$at(86,1365,1366)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:279:10+134 +function {:inline} $1_ristretto255_spec_scalar_is_zero(s: $1_ristretto255_Scalar): bool { + $IsEqual'vec'u8''(s->$data, 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))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:283:10+133 +function {:inline} $1_ristretto255_spec_scalar_is_one(s: $1_ristretto255_Scalar): bool { + $IsEqual'vec'u8''(s->$data, ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(1, 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))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:287:10+62 +function $1_ristretto255_spec_point_is_canonical_internal(bytes: Vec (int)): bool; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_point_is_canonical_internal(bytes); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:291:10+85 +function $1_ristretto255_spec_multi_scalar_mul_internal'$1_ristretto255_RistrettoPoint_$1_ristretto255_Scalar'(points: Vec ($1_ristretto255_RistrettoPoint), scalars: Vec ($1_ristretto255_Scalar)): int; +axiom (forall points: Vec ($1_ristretto255_RistrettoPoint), scalars: Vec ($1_ristretto255_Scalar) :: +(var $$res := $1_ristretto255_spec_multi_scalar_mul_internal'$1_ristretto255_RistrettoPoint_$1_ristretto255_Scalar'(points, scalars); +$IsValid'u64'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:293:10+59 +function $1_ristretto255_spec_scalar_is_canonical_internal(s: Vec (int)): bool; +axiom (forall s: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_is_canonical_internal(s); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:295:10+56 +function $1_ristretto255_spec_scalar_from_u64_internal(num: int): Vec (int); +axiom (forall num: int :: +(var $$res := $1_ristretto255_spec_scalar_from_u64_internal(num); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:297:10+58 +function $1_ristretto255_spec_scalar_from_u128_internal(num: int): Vec (int); +axiom (forall num: int :: +(var $$res := $1_ristretto255_spec_scalar_from_u128_internal(num); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:299:10+78 +function $1_ristretto255_spec_scalar_reduced_from_32_bytes_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_reduced_from_32_bytes_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:301:10+78 +function $1_ristretto255_spec_scalar_uniform_from_64_bytes_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_uniform_from_64_bytes_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:303:10+63 +function $1_ristretto255_spec_scalar_invert_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_invert_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:305:10+77 +function $1_ristretto255_spec_scalar_from_sha512_internal(sha2_512_input: Vec (int)): Vec (int); +axiom (forall sha2_512_input: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_from_sha512_internal(sha2_512_input); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:307:10+83 +function $1_ristretto255_spec_scalar_mul_internal(a_bytes: Vec (int), b_bytes: Vec (int)): Vec (int); +axiom (forall a_bytes: Vec (int), b_bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_mul_internal(a_bytes, b_bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:309:10+83 +function $1_ristretto255_spec_scalar_add_internal(a_bytes: Vec (int), b_bytes: Vec (int)): Vec (int); +axiom (forall a_bytes: Vec (int), b_bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_add_internal(a_bytes, b_bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:311:10+83 +function $1_ristretto255_spec_scalar_sub_internal(a_bytes: Vec (int), b_bytes: Vec (int)): Vec (int); +axiom (forall a_bytes: Vec (int), b_bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_sub_internal(a_bytes, b_bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:313:10+62 +function $1_ristretto255_spec_scalar_neg_internal(a_bytes: Vec (int)): Vec (int); +axiom (forall a_bytes: Vec (int) :: +(var $$res := $1_ristretto255_spec_scalar_neg_internal(a_bytes); +$IsValid'vec'u8''($$res))); + +// struct ristretto255::CompressedRistretto at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:100:5+81 +datatype $1_ristretto255_CompressedRistretto { + $1_ristretto255_CompressedRistretto($data: Vec (int)) +} +function {:inline} $Update'$1_ristretto255_CompressedRistretto'_data(s: $1_ristretto255_CompressedRistretto, x: Vec (int)): $1_ristretto255_CompressedRistretto { + $1_ristretto255_CompressedRistretto(x) +} +function $IsValid'$1_ristretto255_CompressedRistretto'(s: $1_ristretto255_CompressedRistretto): bool { + $IsValid'vec'u8''(s->$data) +} +function {:inline} $IsEqual'$1_ristretto255_CompressedRistretto'(s1: $1_ristretto255_CompressedRistretto, s2: $1_ristretto255_CompressedRistretto): bool { + $IsEqual'vec'u8''(s1->$data, s2->$data)} + +// struct ristretto255::RistrettoPoint at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:108:5+58 +datatype $1_ristretto255_RistrettoPoint { + $1_ristretto255_RistrettoPoint($handle: int) +} +function {:inline} $Update'$1_ristretto255_RistrettoPoint'_handle(s: $1_ristretto255_RistrettoPoint, x: int): $1_ristretto255_RistrettoPoint { + $1_ristretto255_RistrettoPoint(x) +} +function $IsValid'$1_ristretto255_RistrettoPoint'(s: $1_ristretto255_RistrettoPoint): bool { + $IsValid'u64'(s->$handle) +} +function {:inline} $IsEqual'$1_ristretto255_RistrettoPoint'(s1: $1_ristretto255_RistrettoPoint, s2: $1_ristretto255_RistrettoPoint): bool { + s1 == s2 +} + +// struct ristretto255::Scalar at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:93:5+68 +datatype $1_ristretto255_Scalar { + $1_ristretto255_Scalar($data: Vec (int)) +} +function {:inline} $Update'$1_ristretto255_Scalar'_data(s: $1_ristretto255_Scalar, x: Vec (int)): $1_ristretto255_Scalar { + $1_ristretto255_Scalar(x) +} +function $IsValid'$1_ristretto255_Scalar'(s: $1_ristretto255_Scalar): bool { + $IsValid'vec'u8''(s->$data) +} +function {:inline} $IsEqual'$1_ristretto255_Scalar'(s1: $1_ristretto255_Scalar, s2: $1_ristretto255_Scalar): bool { + $IsEqual'vec'u8''(s1->$data, s2->$data)} + +// fun ristretto255::multi_scalar_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:324:5+567 +procedure {:timeLimit 80} $1_ristretto255_multi_scalar_mul$verify(_$t0: Vec ($1_ristretto255_RistrettoPoint), _$t1: Vec ($1_ristretto255_Scalar)) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + 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: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $1_ristretto255_RistrettoPoint; + var $t0: Vec ($1_ristretto255_RistrettoPoint); + var $t1: Vec ($1_ristretto255_Scalar); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'vec'$1_ristretto255_RistrettoPoint'': Vec ($1_ristretto255_RistrettoPoint); + var $temp_0'vec'$1_ristretto255_Scalar'': Vec ($1_ristretto255_Scalar); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:324:5+1 + assume {:print "$at(134,13345,13346)"} true; + assume $IsValid'vec'$1_ristretto255_RistrettoPoint''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:324:5+1 + assume $IsValid'vec'$1_ristretto255_Scalar''($t1); + + // trace_local[points]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:324:5+1 + assume {:print "$track_local(97,10,0):", $t0} $t0 == $t0; + + // trace_local[scalars]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:324:5+1 + assume {:print "$track_local(97,10,1):", $t1} $t1 == $t1; + + // $t2 := vector::is_empty($t0) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:18+29 + assume {:print "$at(134,13467,13496)"} true; + call $t2 := $1_vector_is_empty'$1_ristretto255_RistrettoPoint'($t0); + if ($abort_flag) { + assume {:print "$at(134,13467,13496)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // $t4 := !($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:17+1 + call $t4 := $Not($t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 + assume {:print "$at(134,13458,13542)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:78+13 + assume {:print "$at(134,13527,13540)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:49+43 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(134,13498,13541)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 + assume {:print "$at(134,13458,13542)"} true; + assume {:print "$track_abort(97,10):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 + $t3 := $t6; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:325:9+84 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:40+7 + assume {:print "$at(134,13583,13590)"} true; +L2: + + // $t7 := vector::is_empty($t1) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:18+30 + assume {:print "$at(134,13561,13591)"} true; + call $t7 := $1_vector_is_empty'$1_ristretto255_Scalar'($t1); + if ($abort_flag) { + assume {:print "$at(134,13561,13591)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // $t8 := !($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:17+1 + call $t8 := $Not($t7); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 + assume {:print "$at(134,13552,13638)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 +L3: + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:79+14 + assume {:print "$at(134,13622,13636)"} true; + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_argument($t9) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:50+44 + call $t10 := $1_error_invalid_argument($t9); + if ($abort_flag) { + assume {:print "$at(134,13593,13637)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 + assume {:print "$at(134,13552,13638)"} true; + assume {:print "$track_abort(97,10):", $t10} $t10 == $t10; + + // $t3 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 + $t3 := $t10; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:326:9+86 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:37+6 + assume {:print "$at(134,13676,13682)"} true; +L5: + + // $t11 := vector::length($t0) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:17+27 + assume {:print "$at(134,13656,13683)"} true; + call $t11 := $1_vector_length'$1_ristretto255_RistrettoPoint'($t0); + if ($abort_flag) { + assume {:print "$at(134,13656,13683)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // $t12 := vector::length($t1) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:48+28 + call $t12 := $1_vector_length'$1_ristretto255_Scalar'($t1); + if ($abort_flag) { + assume {:print "$at(134,13687,13715)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // $t13 := ==($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:45+2 + $t13 := $IsEqual'u64'($t11, $t12); + + // if ($t13) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 + if ($t13) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 + assume {:print "$at(134,13648,13782)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 +L6: + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:107+34 + assume {:print "$at(134,13746,13780)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := error::invalid_argument($t14) on_abort goto L10 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:78+64 + call $t15 := $1_error_invalid_argument($t14); + if ($abort_flag) { + assume {:print "$at(134,13717,13781)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,10):", $t3} $t3 == $t3; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 + assume {:print "$at(134,13648,13782)"} true; + assume {:print "$track_abort(97,10):", $t15} $t15 == $t15; + + // $t3 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 + $t3 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:327:9+134 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:330:71+6 + assume {:print "$at(134,13880,13886)"} true; +L8: + + // $t16 := opaque begin: ristretto255::multi_scalar_mul_internal($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:330:21+66 + assume {:print "$at(134,13830,13896)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:330:21+66 + assume $IsValid'u64'($t16); + + // assume Eq($t16, ristretto255::spec_multi_scalar_mul_internal($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:330:21+66 + assume $IsEqual'u64'($t16, $1_ristretto255_spec_multi_scalar_mul_internal'$1_ristretto255_RistrettoPoint_$1_ristretto255_Scalar'($t0, $t1)); + + // $t16 := opaque end: ristretto255::multi_scalar_mul_internal($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:330:21+66 + + // $t17 := pack ristretto255::RistrettoPoint($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:329:9+113 + assume {:print "$at(134,13793,13906)"} true; + $t17 := $1_ristretto255_RistrettoPoint($t16); + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:329:9+113 + assume {:print "$track_return(97,10,0):", $t17} $t17 == $t17; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:332:5+1 + assume {:print "$at(134,13911,13912)"} true; +L9: + + // assert Not(Eq(Len($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:125:9+27 + assume {:print "$at(135,2930,2957)"} true; + assert {:msg "assert_failed(135,2930,2957): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t0), 0); + + // assert Not(Eq(Len($t1), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:126:9+28 + assume {:print "$at(135,2966,2994)"} true; + assert {:msg "assert_failed(135,2966,2994): function does not abort under this condition"} + !$IsEqual'num'(LenVec($t1), 0); + + // assert Not(Neq(Len($t0), Len($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:127:9+38 + assume {:print "$at(135,3003,3041)"} true; + assert {:msg "assert_failed(135,3003,3041): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), LenVec($t1)); + + // assert Eq(select ristretto255::RistrettoPoint.handle($t17), ristretto255::spec_multi_scalar_mul_internal($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:128:9+73 + assume {:print "$at(135,3050,3123)"} true; + assert {:msg "assert_failed(135,3050,3123): post-condition does not hold"} + $IsEqual'u64'($t17->$handle, $1_ristretto255_spec_multi_scalar_mul_internal'$1_ristretto255_RistrettoPoint_$1_ristretto255_Scalar'($t0, $t1)); + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:128:9+73 + $ret0 := $t17; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:332:5+1 + assume {:print "$at(134,13911,13912)"} true; +L10: + + // assert Or(Or(Eq(Len($t0), 0), Eq(Len($t1), 0)), Neq(Len($t0), Len($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:124:5+231 + assume {:print "$at(135,2898,3129)"} true; + assert {:msg "assert_failed(135,2898,3129): abort not covered by any of the `aborts_if` clauses"} + (($IsEqual'num'(LenVec($t0), 0) || $IsEqual'num'(LenVec($t1), 0)) || !$IsEqual'num'(LenVec($t0), LenVec($t1))); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:124:5+231 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::scalar_mul [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+142 +procedure {:inline 1} $1_ristretto255_scalar_mul(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume {:print "$at(134,17993,17994)"} true; + assume {:print "$track_local(97,64,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume {:print "$track_local(97,64,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:39+6 + assume {:print "$at(134,18104,18110)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_mul_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_mul_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_mul_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_mul_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:460:9+72 + assume {:print "$at(134,18057,18129)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:460:9+72 + assume {:print "$track_return(97,64,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:463:5+1 + assume {:print "$at(134,18134,18135)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:463:5+1 + assume {:print "$at(134,18134,18135)"} true; + $ret0 := $t5; + return; + +} + +// fun ristretto255::scalar_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+142 +procedure {:timeLimit 80} $1_ristretto255_scalar_mul$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume {:print "$at(134,17993,17994)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume {:print "$track_local(97,64,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:459:5+1 + assume {:print "$track_local(97,64,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:39+6 + assume {:print "$at(134,18104,18110)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_mul_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_mul_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_mul_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_mul_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:461:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:460:9+72 + assume {:print "$at(134,18057,18129)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:460:9+72 + assume {:print "$track_return(97,64,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:463:5+1 + assume {:print "$at(134,18134,18135)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:258:9+16 + assume {:print "$at(135,6936,6952)"} true; + assert {:msg "assert_failed(135,6936,6952): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t5), ristretto255::spec_scalar_mul_internal(select ristretto255::Scalar.data($t0), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:259:9+64 + assume {:print "$at(135,6961,7025)"} true; + assert {:msg "assert_failed(135,6961,7025): post-condition does not hold"} + $IsEqual'vec'u8''($t5->$data, $1_ristretto255_spec_scalar_mul_internal($t0->$data, $t1->$data)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:259:9+64 + $ret0 := $t5; + return; + +} + +// fun ristretto255::basepoint [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:145:5+166 +procedure {:inline 1} $1_ristretto255_basepoint() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: Vec (int); + var $t1: int; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // bytecode translation starts here + // $t0 := [226, 242, 174, 10, 106, 188, 78, 113, 168, 132, 169, 97, 197, 0, 81, 95, 88, 227, 11, 106, 165, 130, 221, 141, 182, 166, 89, 69, 224, 141, 45, 118] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:53+10 + assume {:print "$at(134,6357,6367)"} true; + $t0 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(226, 242, 174, 10), MakeVec4(106, 188, 78, 113)), MakeVec4(168, 132, 169, 97)), MakeVec4(197, 0, 81, 95)), MakeVec4(88, 227, 11, 106)), MakeVec4(165, 130, 221, 141)), MakeVec4(182, 166, 89, 69)), MakeVec4(224, 141, 45, 118)); + assume $IsValid'vec'u8''($t0); + + // ($t1, $t2) := opaque begin: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume {:print "$at(134,6331,6368)"} true; + assume {:print "$track_abort(97,0):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume {:print "$at(134,6331,6368)"} true; + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume $IsValid'bool'($t2); + + // ($t1, $t2) := opaque end: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:22+1 + + // $t5 := pack ristretto255::RistrettoPoint($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:148:9+45 + assume {:print "$at(134,6379,6424)"} true; + $t5 := $1_ristretto255_RistrettoPoint($t1); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:148:9+45 + assume {:print "$track_return(97,0,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::basepoint [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:145:5+166 +procedure {:timeLimit 80} $1_ristretto255_basepoint$verify() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: Vec (int); + var $t1: int; + var $t2: bool; + var $t3: bool; + var $t4: int; + var $t5: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := [226, 242, 174, 10, 106, 188, 78, 113, 168, 132, 169, 97, 197, 0, 81, 95, 88, 227, 11, 106, 165, 130, 221, 141, 182, 166, 89, 69, 224, 141, 45, 118] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:53+10 + assume {:print "$at(134,6357,6367)"} true; + $t0 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(226, 242, 174, 10), MakeVec4(106, 188, 78, 113)), MakeVec4(168, 132, 169, 97)), MakeVec4(197, 0, 81, 95)), MakeVec4(88, 227, 11, 106)), MakeVec4(165, 130, 221, 141)), MakeVec4(182, 166, 89, 69)), MakeVec4(224, 141, 45, 118)); + assume $IsValid'vec'u8''($t0); + + // ($t1, $t2) := opaque begin: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume {:print "$at(134,6331,6368)"} true; + assume {:print "$track_abort(97,0):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume {:print "$at(134,6331,6368)"} true; + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + assume $IsValid'bool'($t2); + + // ($t1, $t2) := opaque end: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:27+37 + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:146:22+1 + + // $t5 := pack ristretto255::RistrettoPoint($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:148:9+45 + assume {:print "$at(134,6379,6424)"} true; + $t5 := $1_ristretto255_RistrettoPoint($t1); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:148:9+45 + assume {:print "$track_return(97,0,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:151:5+1 + assume {:print "$at(134,6429,6430)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::basepoint_compressed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:131:5+131 +procedure {:timeLimit 80} $1_ristretto255_basepoint_compressed$verify() returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t0: Vec (int); + var $t1: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := [226, 242, 174, 10, 106, 188, 78, 113, 168, 132, 169, 97, 197, 0, 81, 95, 88, 227, 11, 106, 165, 130, 221, 141, 182, 166, 89, 69, 224, 141, 45, 118] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:133:19+10 + assume {:print "$at(134,5830,5840)"} true; + $t0 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(226, 242, 174, 10), MakeVec4(106, 188, 78, 113)), MakeVec4(168, 132, 169, 97)), MakeVec4(197, 0, 81, 95)), MakeVec4(88, 227, 11, 106)), MakeVec4(165, 130, 221, 141)), MakeVec4(182, 166, 89, 69)), MakeVec4(224, 141, 45, 118)); + assume $IsValid'vec'u8''($t0); + + // $t1 := pack ristretto255::CompressedRistretto($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:132:9+60 + assume {:print "$at(134,5790,5850)"} true; + $t1 := $1_ristretto255_CompressedRistretto($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:132:9+60 + assume {:print "$track_return(97,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:135:5+1 + assume {:print "$at(134,5855,5856)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:135:5+1 + assume {:print "$at(134,5855,5856)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::basepoint_double_mul [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+213 +procedure {:inline 1} $1_ristretto255_basepoint_double_mul(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_RistrettoPoint, _$t2: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$at(134,10981,10982)"} true; + assume {:print "$track_local(97,2,0):", $t0} $t0 == $t0; + + // trace_local[a_base]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$track_local(97,2,1):", $t1} $t1 == $t1; + + // trace_local[b]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$track_local(97,2,2):", $t2} $t2 == $t2; + + // $t3 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:51+6 + assume {:print "$at(134,11155,11161)"} true; + $t3 := $t0->$data; + + // $t4 := get_field.data($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:67+6 + $t4 := $t2->$data; + + // $t5 := opaque begin: ristretto255::basepoint_double_mul_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + assume {:print "$at(134,11125,11178)"} true; + assume {:print "$track_abort(97,2):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + assume {:print "$at(134,11125,11178)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::basepoint_double_mul_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + + // $t8 := pack ristretto255::RistrettoPoint($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:263:9+100 + assume {:print "$at(134,11088,11188)"} true; + $t8 := $1_ristretto255_RistrettoPoint($t5); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:263:9+100 + assume {:print "$track_return(97,2,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::basepoint_double_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+213 +procedure {:timeLimit 80} $1_ristretto255_basepoint_double_mul$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_RistrettoPoint, _$t2: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$at(134,10981,10982)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t2); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$track_local(97,2,0):", $t0} $t0 == $t0; + + // trace_local[a_base]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$track_local(97,2,1):", $t1} $t1 == $t1; + + // trace_local[b]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:262:5+1 + assume {:print "$track_local(97,2,2):", $t2} $t2 == $t2; + + // $t3 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:51+6 + assume {:print "$at(134,11155,11161)"} true; + $t3 := $t0->$data; + + // $t4 := get_field.data($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:67+6 + $t4 := $t2->$data; + + // $t5 := opaque begin: ristretto255::basepoint_double_mul_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + havoc $t6; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + assume {:print "$at(134,11125,11178)"} true; + assume {:print "$track_abort(97,2):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + assume {:print "$at(134,11125,11178)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::basepoint_double_mul_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:264:21+53 + + // $t8 := pack ristretto255::RistrettoPoint($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:263:9+100 + assume {:print "$at(134,11088,11188)"} true; + $t8 := $1_ristretto255_RistrettoPoint($t5); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:263:9+100 + assume {:print "$track_return(97,2,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:266:5+1 + assume {:print "$at(134,11193,11194)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::basepoint_mul [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:155:5+146 +procedure {:inline 1} $1_ristretto255_basepoint_mul(_$t0: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:155:5+1 + assume {:print "$at(134,6655,6656)"} true; + assume {:print "$track_local(97,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:44+6 + assume {:print "$at(134,6778,6784)"} true; + $t1 := $t0->$data; + + // $t2 := opaque begin: ristretto255::basepoint_mul_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + assume {:print "$at(134,6755,6785)"} true; + assume {:print "$track_abort(97,4):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + assume {:print "$at(134,6755,6785)"} true; + assume $IsValid'u64'($t2); + + // $t2 := opaque end: ristretto255::basepoint_mul_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + + // $t5 := pack ristretto255::RistrettoPoint($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:156:9+77 + assume {:print "$at(134,6718,6795)"} true; + $t5 := $1_ristretto255_RistrettoPoint($t2); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:156:9+77 + assume {:print "$track_return(97,4,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::basepoint_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:155:5+146 +procedure {:timeLimit 80} $1_ristretto255_basepoint_mul$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:155:5+1 + assume {:print "$at(134,6655,6656)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:155:5+1 + assume {:print "$track_local(97,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:44+6 + assume {:print "$at(134,6778,6784)"} true; + $t1 := $t0->$data; + + // $t2 := opaque begin: ristretto255::basepoint_mul_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + assume {:print "$at(134,6755,6785)"} true; + assume {:print "$track_abort(97,4):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + assume {:print "$at(134,6755,6785)"} true; + assume $IsValid'u64'($t2); + + // $t2 := opaque end: ristretto255::basepoint_mul_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:157:21+30 + + // $t5 := pack ristretto255::RistrettoPoint($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:156:9+77 + assume {:print "$at(134,6718,6795)"} true; + $t5 := $1_ristretto255_RistrettoPoint($t2); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:156:9+77 + assume {:print "$track_return(97,4,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:159:5+1 + assume {:print "$at(134,6800,6801)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::compressed_point_to_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:185:5+103 +procedure {:inline 1} $1_ristretto255_compressed_point_to_bytes(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:185:5+1 + assume {:print "$at(134,7834,7835)"} true; + assume {:print "$track_local(97,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:186:9+10 + assume {:print "$at(134,7921,7931)"} true; + $t1 := $t0->$data; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:186:9+10 + assume {:print "$track_return(97,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:187:5+1 + assume {:print "$at(134,7936,7937)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:187:5+1 + assume {:print "$at(134,7936,7937)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::compressed_point_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:185:5+103 +procedure {:timeLimit 80} $1_ristretto255_compressed_point_to_bytes$verify(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:185:5+1 + assume {:print "$at(134,7834,7835)"} true; + assume $IsValid'$1_ristretto255_CompressedRistretto'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:185:5+1 + assume {:print "$track_local(97,6,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:186:9+10 + assume {:print "$at(134,7921,7931)"} true; + $t1 := $t0->$data; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:186:9+10 + assume {:print "$track_return(97,6,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:187:5+1 + assume {:print "$at(134,7936,7937)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:187:5+1 + assume {:print "$at(134,7936,7937)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::double_scalar_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+411 +procedure {:timeLimit 80} $1_ristretto255_double_scalar_mul$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_RistrettoPoint, _$t2: $1_ristretto255_Scalar, _$t3: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: Vec (int); + var $t12: Vec (int); + var $t13: int; + var $t14: bool; + var $t15: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume {:print "$at(134,12707,12708)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[scalar1]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume {:print "$track_local(97,7,0):", $t0} $t0 == $t0; + + // trace_local[point1]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume {:print "$track_local(97,7,1):", $t1} $t1 == $t1; + + // trace_local[scalar2]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume {:print "$track_local(97,7,2):", $t2} $t2 == $t2; + + // trace_local[point2]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:312:5+1 + assume {:print "$track_local(97,7,3):", $t3} $t3 == $t3; + + // $t4 := features::bulletproofs_enabled() on_abort goto L3 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:313:13+32 + assume {:print "$at(134,12852,12884)"} true; + call $t4 := $1_features_bulletproofs_enabled(); + if ($abort_flag) { + assume {:print "$at(134,12852,12884)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(97,7):", $t5} $t5 == $t5; + goto L3; + } + + // $t6 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:313:12+1 + call $t6 := $Not($t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:313:9+122 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:13+60 + assume {:print "$at(134,12900,12960)"} true; +L1: + + // $t7 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:45+26 + assume {:print "$at(134,12932,12958)"} true; + $t7 := 5; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L3 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:18+55 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(134,12905,12960)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(97,7):", $t5} $t5 == $t5; + goto L3; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:13+60 + assume {:print "$at(134,12900,12960)"} true; + assume {:print "$track_abort(97,7):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:13+60 + $t5 := $t8; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:314:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:48+6 + assume {:print "$at(134,13045,13051)"} true; +L0: + + // $t9 := get_field.handle($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:48+13 + assume {:print "$at(134,13045,13058)"} true; + $t9 := $t1->$handle; + + // $t10 := get_field.handle($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:63+13 + $t10 := $t3->$handle; + + // $t11 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:78+12 + $t11 := $t0->$data; + + // $t12 := get_field.data($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:92+12 + $t12 := $t2->$data; + + // $t13 := opaque begin: ristretto255::double_scalar_mul_internal($t9, $t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + havoc $t14; + + // if ($t14) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + if ($t14) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 +L5: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + assume {:print "$at(134,13018,13102)"} true; + assume {:print "$track_abort(97,7):", $t5} $t5 == $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 +L4: + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + assume {:print "$at(134,13018,13102)"} true; + assume $IsValid'u64'($t13); + + // $t13 := opaque end: ristretto255::double_scalar_mul_internal($t9, $t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:318:21+84 + + // $t15 := pack ristretto255::RistrettoPoint($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:317:9+131 + assume {:print "$at(134,12981,13112)"} true; + $t15 := $1_ristretto255_RistrettoPoint($t13); + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:317:9+131 + assume {:print "$track_return(97,7,0):", $t15} $t15 == $t15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:320:5+1 + assume {:print "$at(134,13117,13118)"} true; +L2: + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:320:5+1 + assume {:print "$at(134,13117,13118)"} true; + $ret0 := $t15; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:320:5+1 +L3: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:320:5+1 + assume {:print "$at(134,13117,13118)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::hash_to_point_base [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:139:5+161 +procedure {:inline 1} $1_ristretto255_hash_to_point_base() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: $1_ristretto255_CompressedRistretto; + var $t1: Vec (int); + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: int; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // bytecode translation starts here + // $t1 := [140, 146, 64, 180, 86, 169, 230, 220, 101, 195, 119, 161, 4, 141, 116, 95, 148, 160, 140, 219, 127, 68, 203, 205, 123, 70, 243, 64, 72, 135, 17, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:52+15 + assume {:print "$at(134,6130,6145)"} true; + $t1 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(140, 146, 64, 180), MakeVec4(86, 169, 230, 220)), MakeVec4(101, 195, 119, 161)), MakeVec4(4, 141, 116, 95)), MakeVec4(148, 160, 140, 219)), MakeVec4(127, 68, 203, 205)), MakeVec4(123, 70, 243, 64)), MakeVec4(72, 135, 17, 52)); + assume $IsValid'vec'u8''($t1); + + // $t2 := pack ristretto255::CompressedRistretto($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:24+45 + $t2 := $1_ristretto255_CompressedRistretto($t1); + + // trace_local[comp_res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:13+8 + assume {:print "$track_local(97,9,0):", $t2} $t2 == $t2; + + // $t3 := ristretto255::point_decompress($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:141:9+27 + assume {:print "$at(134,6157,6184)"} true; + call $t3 := $1_ristretto255_point_decompress($t2); + if ($abort_flag) { + assume {:print "$at(134,6157,6184)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(97,9):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:141:9+27 + assume {:print "$track_return(97,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::hash_to_point_base [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:139:5+161 +procedure {:timeLimit 80} $1_ristretto255_hash_to_point_base$verify() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: $1_ristretto255_CompressedRistretto; + var $t1: Vec (int); + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: int; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t1 := [140, 146, 64, 180, 86, 169, 230, 220, 101, 195, 119, 161, 4, 141, 116, 95, 148, 160, 140, 219, 127, 68, 203, 205, 123, 70, 243, 64, 72, 135, 17, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:52+15 + assume {:print "$at(134,6130,6145)"} true; + $t1 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(140, 146, 64, 180), MakeVec4(86, 169, 230, 220)), MakeVec4(101, 195, 119, 161)), MakeVec4(4, 141, 116, 95)), MakeVec4(148, 160, 140, 219)), MakeVec4(127, 68, 203, 205)), MakeVec4(123, 70, 243, 64)), MakeVec4(72, 135, 17, 52)); + assume $IsValid'vec'u8''($t1); + + // $t2 := pack ristretto255::CompressedRistretto($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:24+45 + $t2 := $1_ristretto255_CompressedRistretto($t1); + + // trace_local[comp_res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:140:13+8 + assume {:print "$track_local(97,9,0):", $t2} $t2 == $t2; + + // $t3 := ristretto255::point_decompress($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:141:9+27 + assume {:print "$at(134,6157,6184)"} true; + call $t3 := $1_ristretto255_point_decompress($t2); + if ($abort_flag) { + assume {:print "$at(134,6157,6184)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(97,9):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:141:9+27 + assume {:print "$track_return(97,9,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:142:5+1 + assume {:print "$at(134,6189,6190)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_compressed_point_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:163:5+323 +procedure {:inline 1} $1_ristretto255_new_compressed_point_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_CompressedRistretto') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $t2: bool; + var $t3: $1_ristretto255_CompressedRistretto; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_CompressedRistretto'': $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:163:5+1 + assume {:print "$at(134,6953,6954)"} true; + assume {:print "$track_local(97,12,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: ristretto255::point_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume {:print "$at(134,7058,7092)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume $IsValid'bool'($t2); + + // assume Eq($t2, ristretto255::spec_point_is_canonical_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume $IsEqual'bool'($t2, $1_ristretto255_spec_point_is_canonical_internal($t0)); + + // $t2 := opaque end: ristretto255::point_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:166:23+5 + assume {:print "$at(134,7170,7175)"} true; +L1: + + // $t3 := pack ristretto255::CompressedRistretto($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:31+63 + assume {:print "$at(134,7126,7189)"} true; + $t3 := $1_ristretto255_CompressedRistretto($t0); + + // $t1 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + assume ($IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + assume $IsEqual'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1, $1_option_spec_some'$1_ristretto255_CompressedRistretto'($t3)); + + // $t1 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume {:print "$at(134,7220,7260)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume {:print "$at(134,7220,7260)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume ($IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume $IsEqual'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1, $1_option_spec_none'$1_ristretto255_CompressedRistretto'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; + assume {:print "$track_return(97,12,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:171:5+1 + assume {:print "$at(134,7275,7276)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:171:5+1 + assume {:print "$at(134,7275,7276)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::new_compressed_point_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:163:5+323 +procedure {:timeLimit 80} $1_ristretto255_new_compressed_point_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_CompressedRistretto') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $t2: bool; + var $t3: $1_ristretto255_CompressedRistretto; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_CompressedRistretto'': $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:163:5+1 + assume {:print "$at(134,6953,6954)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:163:5+1 + assume {:print "$track_local(97,12,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: ristretto255::point_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume {:print "$at(134,7058,7092)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume $IsValid'bool'($t2); + + // assume Eq($t2, ristretto255::spec_point_is_canonical_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + assume $IsEqual'bool'($t2, $1_ristretto255_spec_point_is_canonical_internal($t0)); + + // $t2 := opaque end: ristretto255::point_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:13+34 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:166:23+5 + assume {:print "$at(134,7170,7175)"} true; +L1: + + // $t3 := pack ristretto255::CompressedRistretto($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:31+63 + assume {:print "$at(134,7126,7189)"} true; + $t3 := $1_ristretto255_CompressedRistretto($t0); + + // $t1 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + assume ($IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + assume $IsEqual'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1, $1_option_spec_some'$1_ristretto255_CompressedRistretto'($t3)); + + // $t1 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:165:13+82 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume {:print "$at(134,7220,7260)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume {:print "$at(134,7220,7260)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume ($IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + assume $IsEqual'$1_option_Option'$1_ristretto255_CompressedRistretto''($t1, $1_option_spec_none'$1_ristretto255_CompressedRistretto'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:169:13+40 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:164:9+216 + assume {:print "$at(134,7054,7270)"} true; + assume {:print "$track_return(97,12,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:171:5+1 + assume {:print "$at(134,7275,7276)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:171:5+1 + assume {:print "$at(134,7275,7276)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::new_point_from_64_uniform_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:205:5+351 +procedure {:timeLimit 80} $1_ristretto255_new_point_from_64_uniform_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_RistrettoPoint') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: $1_ristretto255_RistrettoPoint; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:205:5+1 + assume {:print "$at(134,8742,8743)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:205:5+1 + assume {:print "$track_local(97,13,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:13+27 + assume {:print "$at(134,8842,8869)"} true; + call $t2 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(134,8842,8869)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,13):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:44+2 + $t4 := 64; + assume $IsValid'u64'($t4); + + // $t5 := ==($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:41+2 + $t5 := $IsEqual'u64'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:9+249 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:66+5 + assume {:print "$at(134,8991,8996)"} true; +L1: + + // $t6 := opaque begin: ristretto255::new_point_from_64_uniform_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + assume {:print "$at(134,8950,8997)"} true; + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + havoc $t7; + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + assume {:print "$at(134,8950,8997)"} true; + assume {:print "$track_abort(97,13):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 +L5: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + assume {:print "$at(134,8950,8997)"} true; + assume $IsValid'u64'($t6); + + // $t6 := opaque end: ristretto255::new_point_from_64_uniform_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:208:25+47 + + // $t8 := pack ristretto255::RistrettoPoint($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:207:31+102 + assume {:print "$at(134,8909,9011)"} true; + $t8 := $1_ristretto255_RistrettoPoint($t6); + + // $t1 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:207:13+121 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:207:13+121 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:207:13+121 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_some'$1_ristretto255_RistrettoPoint'($t8)); + + // $t1 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:207:13+121 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:9+249 + assume {:print "$at(134,8838,9087)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:211:13+35 + assume {:print "$at(134,9042,9077)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:211:13+35 + assume {:print "$at(134,9042,9077)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:211:13+35 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:211:13+35 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_none'$1_ristretto255_RistrettoPoint'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:211:13+35 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:9+249 + assume {:print "$at(134,8838,9087)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:206:9+249 + assume {:print "$at(134,8838,9087)"} true; + assume {:print "$track_return(97,13,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:213:5+1 + assume {:print "$at(134,9092,9093)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:213:5+1 + assume {:print "$at(134,9092,9093)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:213:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:213:5+1 + assume {:print "$at(134,9092,9093)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_point_from_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:175:5+313 +procedure {:inline 1} $1_ristretto255_new_point_from_bytes(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_RistrettoPoint') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: $1_ristretto255_RistrettoPoint; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:175:5+1 + assume {:print "$at(134,7417,7418)"} true; + assume {:print "$track_local(97,15,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := opaque begin: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 +L6: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + assume {:print "$track_abort(97,15):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume $IsValid'bool'($t5); + + // ($t4, $t5) := opaque end: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + + // trace_local[is_canonical]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:22+12 + assume {:print "$track_local(97,15,3):", $t5} $t5 == $t5; + + // trace_local[handle]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:14+6 + assume {:print "$track_local(97,15,2):", $t4} $t4 == $t4; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:48+6 + assume {:print "$at(134,7640,7646)"} true; +L1: + + // $t8 := pack ristretto255::RistrettoPoint($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:31+25 + assume {:print "$at(134,7623,7648)"} true; + $t8 := $1_ristretto255_RistrettoPoint($t4); + + // $t1 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_some'$1_ristretto255_RistrettoPoint'($t8)); + + // $t1 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume {:print "$at(134,7679,7714)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume {:print "$at(134,7679,7714)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_none'$1_ristretto255_RistrettoPoint'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + assume {:print "$track_return(97,15,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_point_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:175:5+313 +procedure {:timeLimit 80} $1_ristretto255_new_point_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_RistrettoPoint') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: $1_ristretto255_RistrettoPoint; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:175:5+1 + assume {:print "$at(134,7417,7418)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:175:5+1 + assume {:print "$track_local(97,15,0):", $t0} $t0 == $t0; + + // ($t4, $t5) := opaque begin: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 +L6: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + assume {:print "$track_abort(97,15):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 +L5: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume {:print "$at(134,7531,7563)"} true; + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + assume $IsValid'bool'($t5); + + // ($t4, $t5) := opaque end: ristretto255::point_decompress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:38+32 + + // trace_local[is_canonical]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:22+12 + assume {:print "$track_local(97,15,3):", $t5} $t5 == $t5; + + // trace_local[handle]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:176:14+6 + assume {:print "$track_local(97,15,2):", $t4} $t4 == $t4; + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:48+6 + assume {:print "$at(134,7640,7646)"} true; +L1: + + // $t8 := pack ristretto255::RistrettoPoint($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:31+25 + assume {:print "$at(134,7623,7648)"} true; + $t8 := $1_ristretto255_RistrettoPoint($t4); + + // $t1 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_some'$1_ristretto255_RistrettoPoint'($t8)); + + // $t1 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:178:13+44 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume {:print "$at(134,7679,7714)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume {:print "$at(134,7679,7714)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + assume $IsEqual'$1_option_Option'$1_ristretto255_RistrettoPoint''($t1, $1_option_spec_none'$1_ristretto255_RistrettoPoint'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:180:13+35 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:177:9+151 + assume {:print "$at(134,7573,7724)"} true; + assume {:print "$track_return(97,15,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:182:5+1 + assume {:print "$at(134,7729,7730)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_point_from_sha2_512 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:197:5+188 +procedure {:inline 1} $1_ristretto255_new_point_from_sha2_512(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: $1_ristretto255_RistrettoPoint; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:197:5+1 + assume {:print "$at(134,8318,8319)"} true; + assume {:print "$track_local(97,16,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::new_point_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + assume {:print "$track_abort(97,16):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + assume $IsValid'u64'($t1); + + // $t1 := opaque end: ristretto255::new_point_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + + // $t4 := pack ristretto255::RistrettoPoint($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:198:9+93 + assume {:print "$at(134,8407,8500)"} true; + $t4 := $1_ristretto255_RistrettoPoint($t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:198:9+93 + assume {:print "$track_return(97,16,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_point_from_sha2_512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:197:5+188 +procedure {:timeLimit 80} $1_ristretto255_new_point_from_sha2_512$verify(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: $1_ristretto255_RistrettoPoint; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:197:5+1 + assume {:print "$at(134,8318,8319)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:197:5+1 + assume {:print "$track_local(97,16,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::new_point_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + assume {:print "$track_abort(97,16):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + assume {:print "$at(134,8444,8490)"} true; + assume $IsValid'u64'($t1); + + // $t1 := opaque end: ristretto255::new_point_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:199:21+46 + + // $t4 := pack ristretto255::RistrettoPoint($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:198:9+93 + assume {:print "$at(134,8407,8500)"} true; + $t4 := $1_ristretto255_RistrettoPoint($t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:198:9+93 + assume {:print "$track_return(97,16,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:201:5+1 + assume {:print "$at(134,8505,8506)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_point_from_sha512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:192:5+132 +procedure {:timeLimit 80} $1_ristretto255_new_point_from_sha512$verify(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: int; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:192:5+1 + assume {:print "$at(134,8101,8102)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:192:5+1 + assume {:print "$track_local(97,17,0):", $t0} $t0 == $t0; + + // $t1 := ristretto255::new_point_from_sha2_512($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:193:9+39 + assume {:print "$at(134,8188,8227)"} true; + call $t1 := $1_ristretto255_new_point_from_sha2_512($t0); + if ($abort_flag) { + assume {:print "$at(134,8188,8227)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,17):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:193:9+39 + assume {:print "$track_return(97,17,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:194:5+1 + assume {:print "$at(134,8232,8233)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:194:5+1 + assume {:print "$at(134,8232,8233)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:194:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:194:5+1 + assume {:print "$at(134,8232,8233)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_scalar_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:340:5+275 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_Scalar') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_Scalar'; + var $t2: bool; + var $t3: $1_ristretto255_Scalar; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_Scalar'': $1_option_Option'$1_ristretto255_Scalar'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:340:5+1 + assume {:print "$at(134,14105,14106)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:340:5+1 + assume {:print "$track_local(97,19,0):", $t0} $t0 == $t0; + + // $t2 := opaque begin: ristretto255::scalar_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:13+35 + assume {:print "$at(134,14187,14222)"} true; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:13+35 + assume $IsValid'bool'($t2); + + // assume Eq($t2, ristretto255::spec_scalar_is_canonical_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:13+35 + assume $IsEqual'bool'($t2, $1_ristretto255_spec_scalar_is_canonical_internal($t0)); + + // $t2 := opaque end: ristretto255::scalar_is_canonical_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:13+35 + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:9+191 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:343:23+5 + assume {:print "$at(134,14287,14292)"} true; +L1: + + // $t3 := pack ristretto255::Scalar($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:342:31+50 + assume {:print "$at(134,14256,14306)"} true; + $t3 := $1_ristretto255_Scalar($t0); + + // $t1 := opaque begin: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:342:13+69 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:342:13+69 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:342:13+69 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_some'$1_ristretto255_Scalar'($t3)); + + // $t1 := opaque end: option::some($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:342:13+69 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:9+191 + assume {:print "$at(134,14183,14374)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:346:13+27 + assume {:print "$at(134,14337,14364)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:346:13+27 + assume {:print "$at(134,14337,14364)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:346:13+27 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:346:13+27 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_none'$1_ristretto255_Scalar'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:346:13+27 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:9+191 + assume {:print "$at(134,14183,14374)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:341:9+191 + assume {:print "$at(134,14183,14374)"} true; + assume {:print "$track_return(97,19,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:348:5+1 + assume {:print "$at(134,14379,14380)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:132:9+16 + assume {:print "$at(135,3172,3188)"} true; + assert {:msg "assert_failed(135,3172,3188): function does not abort under this condition"} + !false; + + // assert Implies(ristretto255::spec_scalar_is_canonical_internal($t0), And(option::spec_is_some($t1), Eq>(select ristretto255::Scalar.data(option::spec_borrow($t1)), $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:133:9+151 + assume {:print "$at(135,3197,3348)"} true; + assert {:msg "assert_failed(135,3197,3348): post-condition does not hold"} + ($1_ristretto255_spec_scalar_is_canonical_internal($t0) ==> ($1_option_spec_is_some'$1_ristretto255_Scalar'($t1) && $IsEqual'vec'u8''($1_option_spec_borrow'$1_ristretto255_Scalar'($t1)->$data, $t0))); + + // assert Implies(Not(ristretto255::spec_scalar_is_canonical_internal($t0)), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:135:9+88 + assume {:print "$at(135,3357,3445)"} true; + assert {:msg "assert_failed(135,3357,3445): post-condition does not hold"} + (!$1_ristretto255_spec_scalar_is_canonical_internal($t0) ==> $1_option_spec_is_none'$1_ristretto255_Scalar'($t1)); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:135:9+88 + $ret0 := $t1; + return; + +} + +// fun ristretto255::new_scalar_from_sha2_512 [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:358:5+168 +procedure {:inline 1} $1_ristretto255_new_scalar_from_sha2_512(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ristretto255_Scalar; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:358:5+1 + assume {:print "$at(134,14740,14741)"} true; + assume {:print "$track_local(97,20,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::scalar_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume {:print "$at(134,14849,14892)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, ristretto255::spec_scalar_from_sha512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume $IsEqual'vec'u8''($t1, $1_ristretto255_spec_scalar_from_sha512_internal($t0)); + + // $t1 := opaque end: ristretto255::scalar_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + + // $t2 := pack ristretto255::Scalar($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:359:9+80 + assume {:print "$at(134,14822,14902)"} true; + $t2 := $1_ristretto255_Scalar($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:359:9+80 + assume {:print "$track_return(97,20,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:362:5+1 + assume {:print "$at(134,14907,14908)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:362:5+1 + assume {:print "$at(134,14907,14908)"} true; + $ret0 := $t2; + return; + +} + +// fun ristretto255::new_scalar_from_sha2_512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:358:5+168 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_sha2_512$verify(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ristretto255_Scalar; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:358:5+1 + assume {:print "$at(134,14740,14741)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:358:5+1 + assume {:print "$track_local(97,20,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::scalar_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume {:print "$at(134,14849,14892)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, ristretto255::spec_scalar_from_sha512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + assume $IsEqual'vec'u8''($t1, $1_ristretto255_spec_scalar_from_sha512_internal($t0)); + + // $t1 := opaque end: ristretto255::scalar_from_sha512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:360:19+43 + + // $t2 := pack ristretto255::Scalar($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:359:9+80 + assume {:print "$at(134,14822,14902)"} true; + $t2 := $1_ristretto255_Scalar($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:359:9+80 + assume {:print "$track_return(97,20,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:362:5+1 + assume {:print "$at(134,14907,14908)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:145:9+16 + assume {:print "$at(135,3678,3694)"} true; + assert {:msg "assert_failed(135,3678,3694): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t2), ristretto255::spec_scalar_from_sha512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:146:9+72 + assume {:print "$at(135,3703,3775)"} true; + assert {:msg "assert_failed(135,3703,3775): post-condition does not hold"} + $IsEqual'vec'u8''($t2->$data, $1_ristretto255_spec_scalar_from_sha512_internal($t0)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:146:9+72 + $ret0 := $t2; + return; + +} + +// fun ristretto255::new_scalar_from_sha512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:353:5+126 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_sha512$verify(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: $1_ristretto255_Scalar; + var $t2: int; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:353:5+1 + assume {:print "$at(134,14538,14539)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[sha2_512_input]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:353:5+1 + assume {:print "$track_local(97,21,0):", $t0} $t0 == $t0; + + // $t1 := ristretto255::new_scalar_from_sha2_512($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:354:9+40 + assume {:print "$at(134,14618,14658)"} true; + call $t1 := $1_ristretto255_new_scalar_from_sha2_512($t0); + if ($abort_flag) { + assume {:print "$at(134,14618,14658)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,21):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:354:9+40 + assume {:print "$track_return(97,21,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:355:5+1 + assume {:print "$at(134,14663,14664)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:355:5+1 + assume {:print "$at(134,14663,14664)"} true; + $ret0 := $t1; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:355:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:355:5+1 + assume {:print "$at(134,14663,14664)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_scalar_from_u128 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:388:5+154 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_u128$verify(_$t0: int) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ristretto255_Scalar; + var $t0: int; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'u128': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:388:5+1 + assume {:print "$at(134,15574,15575)"} true; + assume $IsValid'u128'($t0); + + // trace_local[sixteen_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:388:5+1 + assume {:print "$track_local(97,22,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::scalar_from_u128_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:390:19+40 + assume {:print "$at(134,15672,15712)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:390:19+40 + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, ristretto255::spec_scalar_from_u128_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:390:19+40 + assume $IsEqual'vec'u8''($t1, $1_ristretto255_spec_scalar_from_u128_internal($t0)); + + // $t1 := opaque end: ristretto255::scalar_from_u128_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:390:19+40 + + // $t2 := pack ristretto255::Scalar($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:389:9+77 + assume {:print "$at(134,15645,15722)"} true; + $t2 := $1_ristretto255_Scalar($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:389:9+77 + assume {:print "$track_return(97,22,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:392:5+1 + assume {:print "$at(134,15727,15728)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:166:9+16 + assume {:print "$at(135,4270,4286)"} true; + assert {:msg "assert_failed(135,4270,4286): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t2), ristretto255::spec_scalar_from_u128_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:167:9+69 + assume {:print "$at(135,4295,4364)"} true; + assert {:msg "assert_failed(135,4295,4364): post-condition does not hold"} + $IsEqual'vec'u8''($t2->$data, $1_ristretto255_spec_scalar_from_u128_internal($t0)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:167:9+69 + $ret0 := $t2; + return; + +} + +// fun ristretto255::new_scalar_from_u32 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:374:5+154 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_u32$verify(_$t0: int) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (int); + var $t4: $1_ristretto255_Scalar; + var $t0: int; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'u32': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:374:5+1 + assume {:print "$at(134,15184,15185)"} true; + assume $IsValid'u32'($t0); + + // trace_local[four_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:374:5+1 + assume {:print "$track_local(97,23,0):", $t0} $t0 == $t0; + + // $t1 := (u64)($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:376:44+19 + assume {:print "$at(134,15302,15321)"} true; + call $t1 := $CastU64($t0); + if ($abort_flag) { + assume {:print "$at(134,15302,15321)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,23):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := opaque begin: ristretto255::scalar_from_u64_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:376:19+45 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:376:19+45 + assume $IsValid'vec'u8''($t3); + + // assume Eq>($t3, ristretto255::spec_scalar_from_u64_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:376:19+45 + assume $IsEqual'vec'u8''($t3, $1_ristretto255_spec_scalar_from_u64_internal($t1)); + + // $t3 := opaque end: ristretto255::scalar_from_u64_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:376:19+45 + + // $t4 := pack ristretto255::Scalar($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:375:9+82 + assume {:print "$at(134,15250,15332)"} true; + $t4 := $1_ristretto255_Scalar($t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:375:9+82 + assume {:print "$track_return(97,23,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:378:5+1 + assume {:print "$at(134,15337,15338)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:156:9+16 + assume {:print "$at(135,3994,4010)"} true; + assert {:msg "assert_failed(135,3994,4010): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t4), ristretto255::spec_scalar_from_u64_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:157:9+65 + assume {:print "$at(135,4019,4084)"} true; + assert {:msg "assert_failed(135,4019,4084): post-condition does not hold"} + $IsEqual'vec'u8''($t4->$data, $1_ristretto255_spec_scalar_from_u64_internal($t0)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:157:9+65 + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:378:5+1 + assume {:print "$at(134,15337,15338)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:155:5+131 + assume {:print "$at(135,3959,4090)"} true; + assert {:msg "assert_failed(135,3959,4090): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:155:5+131 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_scalar_from_u64 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:381:5+147 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_u64$verify(_$t0: int) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: Vec (int); + var $t2: $1_ristretto255_Scalar; + var $t0: int; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:381:5+1 + assume {:print "$at(134,15382,15383)"} true; + assume $IsValid'u64'($t0); + + // trace_local[eight_bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:381:5+1 + assume {:print "$track_local(97,24,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::scalar_from_u64_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:383:19+37 + assume {:print "$at(134,15476,15513)"} true; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:383:19+37 + assume $IsValid'vec'u8''($t1); + + // assume Eq>($t1, ristretto255::spec_scalar_from_u64_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:383:19+37 + assume $IsEqual'vec'u8''($t1, $1_ristretto255_spec_scalar_from_u64_internal($t0)); + + // $t1 := opaque end: ristretto255::scalar_from_u64_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:383:19+37 + + // $t2 := pack ristretto255::Scalar($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:382:9+74 + assume {:print "$at(134,15449,15523)"} true; + $t2 := $1_ristretto255_Scalar($t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:382:9+74 + assume {:print "$track_return(97,24,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:385:5+1 + assume {:print "$at(134,15528,15529)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:161:9+16 + assume {:print "$at(135,4131,4147)"} true; + assert {:msg "assert_failed(135,4131,4147): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t2), ristretto255::spec_scalar_from_u64_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:162:9+66 + assume {:print "$at(135,4156,4222)"} true; + assert {:msg "assert_failed(135,4156,4222): post-condition does not hold"} + $IsEqual'vec'u8''($t2->$data, $1_ristretto255_spec_scalar_from_u64_internal($t0)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:162:9+66 + $ret0 := $t2; + return; + +} + +// fun ristretto255::new_scalar_from_u8 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:365:5+189 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_from_u8$verify(_$t0: int) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: $Mutation (int); + var $t2: $1_ristretto255_Scalar; + var $t3: int; + var $t4: $Mutation ($1_ristretto255_Scalar); + var $t5: $Mutation (Vec (int)); + var $t6: int; + var $t7: $Mutation (int); + var $t8: $1_ristretto255_Scalar; + var $t0: int; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'u8': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:365:5+1 + assume {:print "$at(134,14951,14952)"} true; + assume $IsValid'u8'($t0); + + // trace_local[byte]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:365:5+1 + assume {:print "$track_local(97,25,0):", $t0} $t0 == $t0; + + // $t2 := ristretto255::scalar_zero() on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:366:17+13 + assume {:print "$at(134,15017,15030)"} true; + call $t2 := $1_ristretto255_scalar_zero(); + if ($abort_flag) { + assume {:print "$at(134,15017,15030)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,25):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[s]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:366:13+1 + assume {:print "$track_local(97,25,2):", $t2} $t2 == $t2; + + // $t4 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:367:54+1 + assume {:print "$at(134,15085,15086)"} true; + $t4 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t5 := borrow_field.data($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:367:49+11 + $t5 := $ChildMutation($t4, 0, $Dereference($t4)->$data); + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:367:62+1 + $t6 := 0; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow_mut($t5, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:367:25+39 + call $t7,$t5 := $1_vector_borrow_mut'u8'($t5, $t6); + if ($abort_flag) { + assume {:print "$at(134,15056,15095)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,25):", $t3} $t3 == $t3; + goto L2; + } + + // trace_local[byte_zero]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:367:13+9 + $temp_0'u8' := $Dereference($t7); + assume {:print "$track_local(97,25,1):", $temp_0'u8'} $temp_0'u8' == $temp_0'u8'; + + // write_ref($t7, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:368:9+17 + assume {:print "$at(134,15105,15122)"} true; + $t7 := $UpdateMutation($t7, $t0); + + // write_back[Reference($t5)[]]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:368:9+17 + $t5 := $UpdateMutation($t5, UpdateVec($Dereference($t5), ReadVec($t7->p, LenVec($t5->p)), $Dereference($t7))); + + // write_back[Reference($t4).data (vector)]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:368:9+17 + $t4 := $UpdateMutation($t4, $Update'$1_ristretto255_Scalar'_data($Dereference($t4), $Dereference($t5))); + + // write_back[LocalRoot($t2)@]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:368:9+17 + $t2 := $Dereference($t4); + + // trace_local[s]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:368:9+17 + assume {:print "$track_local(97,25,2):", $t2} $t2 == $t2; + + // $t8 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:370:9+1 + assume {:print "$at(134,15133,15134)"} true; + $t8 := $t2; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:370:9+1 + assume {:print "$track_return(97,25,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:371:5+1 + assume {:print "$at(134,15139,15140)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:150:9+16 + assume {:print "$at(135,3821,3837)"} true; + assert {:msg "assert_failed(135,3821,3837): function does not abort under this condition"} + !false; + + // assert Eq(Index(select ristretto255::Scalar.data($t8), 0), $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:151:9+31 + assume {:print "$at(135,3846,3877)"} true; + assert {:msg "assert_failed(135,3846,3877): post-condition does not hold"} + $IsEqual'u8'(ReadVec($t8->$data, 0), $t0); + + // assert forall i: num: Range(1, Len(select ristretto255::Scalar.data($t8))): Eq(Index(select ristretto255::Scalar.data($t8), i), 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:152:9+61 + assume {:print "$at(135,3886,3947)"} true; + assert {:msg "assert_failed(135,3886,3947): post-condition does not hold"} + (var $range_0 := $Range(1, LenVec($t8->$data)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'u8'(ReadVec($t8->$data, i), 0))))); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:152:9+61 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:371:5+1 + assume {:print "$at(134,15139,15140)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:149:5+166 + assume {:print "$at(135,3787,3953)"} true; + assert {:msg "assert_failed(135,3787,3953): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:149:5+166 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_scalar_reduced_from_32_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:395:5+315 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_reduced_from_32_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_Scalar') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_Scalar'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: Vec (int); + var $t7: bool; + var $t8: $1_ristretto255_Scalar; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_Scalar'': $1_option_Option'$1_ristretto255_Scalar'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:395:5+1 + assume {:print "$at(134,15848,15849)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:395:5+1 + assume {:print "$track_local(97,26,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:13+27 + assume {:print "$at(134,15941,15968)"} true; + call $t2 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(134,15941,15968)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,26):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:44+2 + $t4 := 32; + assume $IsValid'u64'($t4); + + // $t5 := ==($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:41+2 + $t5 := $IsEqual'u64'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:9+220 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:61+5 + assume {:print "$at(134,16077,16082)"} true; +L1: + + // $t6 := opaque begin: ristretto255::scalar_reduced_from_32_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + assume {:print "$at(134,16039,16083)"} true; + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + havoc $t7; + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 +L6: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + assume {:print "$at(134,16039,16083)"} true; + assume {:print "$track_abort(97,26):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 +L5: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + assume {:print "$at(134,16039,16083)"} true; + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, ristretto255::spec_scalar_reduced_from_32_bytes_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + assume $IsEqual'vec'u8''($t6, $1_ristretto255_spec_scalar_reduced_from_32_bytes_internal($t0)); + + // $t6 := opaque end: ristretto255::scalar_reduced_from_32_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:398:23+44 + + // $t8 := pack ristretto255::Scalar($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:397:31+89 + assume {:print "$at(134,16008,16097)"} true; + $t8 := $1_ristretto255_Scalar($t6); + + // $t1 := opaque begin: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:397:13+108 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:397:13+108 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:397:13+108 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_some'$1_ristretto255_Scalar'($t8)); + + // $t1 := opaque end: option::some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:397:13+108 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:9+220 + assume {:print "$at(134,15937,16157)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:401:13+19 + assume {:print "$at(134,16128,16147)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:401:13+19 + assume {:print "$at(134,16128,16147)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:401:13+19 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:401:13+19 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_none'$1_ristretto255_Scalar'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:401:13+19 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:9+220 + assume {:print "$at(134,15937,16157)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:396:9+220 + assume {:print "$at(134,15937,16157)"} true; + assume {:print "$track_return(97,26,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:403:5+1 + assume {:print "$at(134,16162,16163)"} true; +L3: + + // assert Implies(Neq(Len($t0), 32), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:171:9+63 + assume {:print "$at(135,4424,4487)"} true; + assert {:msg "assert_failed(135,4424,4487): post-condition does not hold"} + (!$IsEqual'num'(LenVec($t0), 32) ==> $1_option_spec_is_none'$1_ristretto255_Scalar'($t1)); + + // assert Implies(Eq(Len($t0), 32), Eq>(select ristretto255::Scalar.data(option::spec_borrow($t1)), ristretto255::spec_scalar_reduced_from_32_bytes_internal($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:172:9+120 + assume {:print "$at(135,4496,4616)"} true; + assert {:msg "assert_failed(135,4496,4616): post-condition does not hold"} + ($IsEqual'num'(LenVec($t0), 32) ==> $IsEqual'vec'u8''($1_option_spec_borrow'$1_ristretto255_Scalar'($t1)->$data, $1_ristretto255_spec_scalar_reduced_from_32_bytes_internal($t0))); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:172:9+120 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:403:5+1 + assume {:print "$at(134,16162,16163)"} true; +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:403:5+1 + assume {:print "$at(134,16162,16163)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::new_scalar_uniform_from_64_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:407:5+315 +procedure {:timeLimit 80} $1_ristretto255_new_scalar_uniform_from_64_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_Scalar') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_Scalar'; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: Vec (int); + var $t7: $1_ristretto255_Scalar; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_Scalar'': $1_option_Option'$1_ristretto255_Scalar'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:407:5+1 + assume {:print "$at(134,16339,16340)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:407:5+1 + assume {:print "$track_local(97,27,0):", $t0} $t0 == $t0; + + // $t2 := vector::length($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:13+27 + assume {:print "$at(134,16432,16459)"} true; + call $t2 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(134,16432,16459)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,27):", $t3} $t3 == $t3; + goto L4; + } + + // $t4 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:44+2 + $t4 := 64; + assume $IsValid'u64'($t4); + + // $t5 := ==($t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:41+2 + $t5 := $IsEqual'u64'($t2, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:9+220 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:410:61+5 + assume {:print "$at(134,16568,16573)"} true; +L1: + + // $t6 := opaque begin: ristretto255::scalar_uniform_from_64_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:410:23+44 + assume {:print "$at(134,16530,16574)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:410:23+44 + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, ristretto255::spec_scalar_uniform_from_64_bytes_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:410:23+44 + assume $IsEqual'vec'u8''($t6, $1_ristretto255_spec_scalar_uniform_from_64_bytes_internal($t0)); + + // $t6 := opaque end: ristretto255::scalar_uniform_from_64_bytes_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:410:23+44 + + // $t7 := pack ristretto255::Scalar($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:409:31+89 + assume {:print "$at(134,16499,16588)"} true; + $t7 := $1_ristretto255_Scalar($t6); + + // $t1 := opaque begin: option::some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:409:13+108 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:409:13+108 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:409:13+108 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_some'$1_ristretto255_Scalar'($t7)); + + // $t1 := opaque end: option::some($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:409:13+108 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:9+220 + assume {:print "$at(134,16428,16648)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:413:13+19 + assume {:print "$at(134,16619,16638)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:413:13+19 + assume {:print "$at(134,16619,16638)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:413:13+19 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:413:13+19 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_none'$1_ristretto255_Scalar'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:413:13+19 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:9+220 + assume {:print "$at(134,16428,16648)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:408:9+220 + assume {:print "$at(134,16428,16648)"} true; + assume {:print "$track_return(97,27,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:415:5+1 + assume {:print "$at(134,16653,16654)"} true; +L3: + + // assert Implies(Neq(Len($t0), 64), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:176:9+63 + assume {:print "$at(135,4676,4739)"} true; + assert {:msg "assert_failed(135,4676,4739): post-condition does not hold"} + (!$IsEqual'num'(LenVec($t0), 64) ==> $1_option_spec_is_none'$1_ristretto255_Scalar'($t1)); + + // assert Implies(Eq(Len($t0), 64), Eq>(select ristretto255::Scalar.data(option::spec_borrow($t1)), ristretto255::spec_scalar_uniform_from_64_bytes_internal($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:177:9+120 + assume {:print "$at(135,4748,4868)"} true; + assert {:msg "assert_failed(135,4748,4868): post-condition does not hold"} + ($IsEqual'num'(LenVec($t0), 64) ==> $IsEqual'vec'u8''($1_option_spec_borrow'$1_ristretto255_Scalar'($t1)->$data, $1_ristretto255_spec_scalar_uniform_from_64_bytes_internal($t0))); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:177:9+120 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:415:5+1 + assume {:print "$at(134,16653,16654)"} true; +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:415:5+1 + assume {:print "$at(134,16653,16654)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+171 +procedure {:inline 1} $1_ristretto255_point_add(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume {:print "$at(134,11222,11223)"} true; + assume {:print "$track_local(97,28,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume {:print "$track_local(97,28,1):", $t1} $t1 == $t1; + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:46+5 + assume {:print "$at(134,11371,11376)"} true; + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := opaque begin: ristretto255::point_add_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + assume {:print "$at(134,11346,11377)"} true; + assume {:print "$track_abort(97,28):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + assume {:print "$at(134,11346,11377)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: ristretto255::point_add_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + + // $t6 := pack ristretto255::RistrettoPoint($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:270:9+78 + assume {:print "$at(134,11309,11387)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:270:9+78 + assume {:print "$track_return(97,28,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+171 +procedure {:timeLimit 80} $1_ristretto255_point_add$verify(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume {:print "$at(134,11222,11223)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume {:print "$track_local(97,28,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:269:5+1 + assume {:print "$track_local(97,28,1):", $t1} $t1 == $t1; + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:46+5 + assume {:print "$at(134,11371,11376)"} true; + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := opaque begin: ristretto255::point_add_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + assume {:print "$at(134,11346,11377)"} true; + assume {:print "$track_abort(97,28):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + assume {:print "$at(134,11346,11377)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: ristretto255::point_add_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:271:21+31 + + // $t6 := pack ristretto255::RistrettoPoint($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:270:9+78 + assume {:print "$at(134,11309,11387)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:270:9+78 + assume {:print "$track_return(97,28,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:273:5+1 + assume {:print "$at(134,11392,11393)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_add_assign [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+150 +procedure {:inline 1} $1_ristretto255_point_add_assign(_$t0: $Mutation ($1_ristretto255_RistrettoPoint), _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + assume {:print "$at(134,11436,11437)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + assume {:print "$track_local(97,29,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:27+12 + assume {:print "$at(134,11557,11569)"} true; + $t3 := $Dereference($t0); + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:34+4 + $t4 := true; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: ristretto255::point_add_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + havoc $t6; + + // if ($t6) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + if ($t6) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + assume {:print "$at(134,11539,11569)"} true; + assume {:print "$track_abort(97,29):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + assume {:print "$at(134,11539,11569)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::point_add_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:278:9+1 + assume {:print "$at(134,11579,11580)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:278:9+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_add_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+150 +procedure {:timeLimit 80} $1_ristretto255_point_add_assign$verify(_$t0: $Mutation ($1_ristretto255_RistrettoPoint), _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + assume {:print "$at(134,11436,11437)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:276:5+1 + assume {:print "$track_local(97,29,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:27+12 + assume {:print "$at(134,11557,11569)"} true; + $t3 := $Dereference($t0); + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:34+4 + $t4 := true; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: ristretto255::point_add_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + havoc $t6; + + // if ($t6) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + if ($t6) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + assume {:print "$at(134,11539,11569)"} true; + assume {:print "$track_abort(97,29):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + assume {:print "$at(134,11539,11569)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::point_add_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:277:9+30 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:278:9+1 + assume {:print "$at(134,11579,11580)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:278:9+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,29,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:279:5+1 + assume {:print "$at(134,11585,11586)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_clone [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+293 +procedure {:inline 1} $1_ristretto255_point_clone(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+1 + assume {:print "$at(134,9575,9576)"} true; + assume {:print "$track_local(97,31,0):", $t0} $t0 == $t0; + + // $t1 := features::bulletproofs_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:13+32 + assume {:print "$at(134,9652,9684)"} true; + call $t1 := $1_features_bulletproofs_enabled(); + if ($abort_flag) { + assume {:print "$at(134,9652,9684)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:9+122 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + assume {:print "$at(134,9700,9760)"} true; +L1: + + // $t4 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:45+26 + assume {:print "$at(134,9732,9758)"} true; + $t4 := 5; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(134,9705,9760)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + assume {:print "$at(134,9700,9760)"} true; + assume {:print "$track_abort(97,31):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:42+5 + assume {:print "$at(134,9839,9844)"} true; +L0: + + // $t6 := get_field.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:42+12 + assume {:print "$at(134,9839,9851)"} true; + $t6 := $t0->$handle; + + // $t7 := opaque begin: ristretto255::point_clone_internal($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + havoc $t8; + + // if ($t8) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + if ($t8) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 +L5: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + assume {:print "$at(134,9818,9852)"} true; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 +L4: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + assume {:print "$at(134,9818,9852)"} true; + assume $IsValid'u64'($t7); + + // $t7 := opaque end: ristretto255::point_clone_internal($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + + // $t9 := pack ristretto255::RistrettoPoint($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:229:9+81 + assume {:print "$at(134,9781,9862)"} true; + $t9 := $1_ristretto255_RistrettoPoint($t7); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:229:9+81 + assume {:print "$track_return(97,31,0):", $t9} $t9 == $t9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; +L2: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; + $ret0 := $t9; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 +L3: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_clone [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+293 +procedure {:timeLimit 80} $1_ristretto255_point_clone$verify(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: bool; + var $t9: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+1 + assume {:print "$at(134,9575,9576)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:224:5+1 + assume {:print "$track_local(97,31,0):", $t0} $t0 == $t0; + + // $t1 := features::bulletproofs_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:13+32 + assume {:print "$at(134,9652,9684)"} true; + call $t1 := $1_features_bulletproofs_enabled(); + if ($abort_flag) { + assume {:print "$at(134,9652,9684)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:225:9+122 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + assume {:print "$at(134,9700,9760)"} true; +L1: + + // $t4 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:45+26 + assume {:print "$at(134,9732,9758)"} true; + $t4 := 5; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(134,9705,9760)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + assume {:print "$at(134,9700,9760)"} true; + assume {:print "$track_abort(97,31):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:226:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:42+5 + assume {:print "$at(134,9839,9844)"} true; +L0: + + // $t6 := get_field.handle($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:42+12 + assume {:print "$at(134,9839,9851)"} true; + $t6 := $t0->$handle; + + // $t7 := opaque begin: ristretto255::point_clone_internal($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + + // $t8 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + havoc $t8; + + // if ($t8) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + if ($t8) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 +L5: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + assume {:print "$at(134,9818,9852)"} true; + assume {:print "$track_abort(97,31):", $t2} $t2 == $t2; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 +L4: + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + assume {:print "$at(134,9818,9852)"} true; + assume $IsValid'u64'($t7); + + // $t7 := opaque end: ristretto255::point_clone_internal($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:230:21+34 + + // $t9 := pack ristretto255::RistrettoPoint($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:229:9+81 + assume {:print "$at(134,9781,9862)"} true; + $t9 := $1_ristretto255_RistrettoPoint($t7); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:229:9+81 + assume {:print "$track_return(97,31,0):", $t9} $t9 == $t9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; +L2: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; + $ret0 := $t9; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 +L3: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:232:5+1 + assume {:print "$at(134,9867,9868)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_compress [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:235:5+167 +procedure {:inline 1} $1_ristretto255_point_compress(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: int; + var $t4: $1_ristretto255_CompressedRistretto; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:235:5+1 + assume {:print "$at(134,9964,9965)"} true; + assume {:print "$track_local(97,33,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::point_compress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + assume {:print "$track_abort(97,33):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + assume $IsValid'vec'u8''($t1); + + // $t1 := opaque end: ristretto255::point_compress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + + // $t4 := pack ristretto255::CompressedRistretto($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:236:9+80 + assume {:print "$at(134,10045,10125)"} true; + $t4 := $1_ristretto255_CompressedRistretto($t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:236:9+80 + assume {:print "$track_return(97,33,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_compress [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:235:5+167 +procedure {:timeLimit 80} $1_ristretto255_point_compress$verify(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: Vec (int); + var $t2: bool; + var $t3: int; + var $t4: $1_ristretto255_CompressedRistretto; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:235:5+1 + assume {:print "$at(134,9964,9965)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:235:5+1 + assume {:print "$track_local(97,33,0):", $t0} $t0 == $t0; + + // $t1 := opaque begin: ristretto255::point_compress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + havoc $t2; + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 +L4: + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + assume {:print "$track_abort(97,33):", $t3} $t3 == $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 +L3: + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + assume {:print "$at(134,10085,10115)"} true; + assume $IsValid'vec'u8''($t1); + + // $t1 := opaque end: ristretto255::point_compress_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:237:19+30 + + // $t4 := pack ristretto255::CompressedRistretto($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:236:9+80 + assume {:print "$at(134,10045,10125)"} true; + $t4 := $1_ristretto255_CompressedRistretto($t1); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:236:9+80 + assume {:print "$track_return(97,33,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:239:5+1 + assume {:print "$at(134,10130,10131)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_decompress [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:216:5+320 +procedure {:inline 1} $1_ristretto255_point_decompress(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:216:5+1 + assume {:print "$at(134,9216,9217)"} true; + assume {:print "$track_local(97,35,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:53+10 + assume {:print "$at(134,9484,9494)"} true; + $t1 := $t0->$data; + + // ($t2, $t3) := opaque begin: ristretto255::point_decompress_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume {:print "$at(134,9458,9495)"} true; + assume {:print "$track_abort(97,35):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume {:print "$at(134,9458,9495)"} true; + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume $IsValid'bool'($t3); + + // ($t2, $t3) := opaque end: ristretto255::point_decompress_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:22+1 + + // $t6 := pack ristretto255::RistrettoPoint($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:220:9+25 + assume {:print "$at(134,9505,9530)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t2); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:220:9+25 + assume {:print "$track_return(97,35,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_decompress [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:216:5+320 +procedure {:timeLimit 80} $1_ristretto255_point_decompress$verify(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: bool; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:216:5+1 + assume {:print "$at(134,9216,9217)"} true; + assume $IsValid'$1_ristretto255_CompressedRistretto'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:216:5+1 + assume {:print "$track_local(97,35,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:53+10 + assume {:print "$at(134,9484,9494)"} true; + $t1 := $t0->$data; + + // ($t2, $t3) := opaque begin: ristretto255::point_decompress_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume {:print "$at(134,9458,9495)"} true; + assume {:print "$track_abort(97,35):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume {:print "$at(134,9458,9495)"} true; + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + assume $IsValid'bool'($t3); + + // ($t2, $t3) := opaque end: ristretto255::point_decompress_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:27+37 + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:219:22+1 + + // $t6 := pack ristretto255::RistrettoPoint($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:220:9+25 + assume {:print "$at(134,9505,9530)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t2); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:220:9+25 + assume {:print "$track_return(97,35,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:221:5+1 + assume {:print "$at(134,9535,9536)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_identity [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:124:5+132 +procedure {:inline 1} $1_ristretto255_point_identity() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: int; + var $t3: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // bytecode translation starts here + // $t0 := opaque begin: ristretto255::point_identity_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + havoc $t1; + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + assume {:print "$track_abort(97,38):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 +L3: + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + assume $IsValid'u64'($t0); + + // $t0 := opaque end: ristretto255::point_identity_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + + // $t3 := pack ristretto255::RistrettoPoint($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:125:9+72 + assume {:print "$at(134,5551,5623)"} true; + $t3 := $1_ristretto255_RistrettoPoint($t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:125:9+72 + assume {:print "$track_return(97,38,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_identity [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:124:5+132 +procedure {:timeLimit 80} $1_ristretto255_point_identity$verify() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: int; + var $t1: bool; + var $t2: int; + var $t3: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := opaque begin: ristretto255::point_identity_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + havoc $t1; + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 +L4: + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + assume {:print "$track_abort(97,38):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 +L3: + + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + assume {:print "$at(134,5588,5613)"} true; + assume $IsValid'u64'($t0); + + // $t0 := opaque end: ristretto255::point_identity_internal() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:126:21+25 + + // $t3 := pack ristretto255::RistrettoPoint($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:125:9+72 + assume {:print "$at(134,5551,5623)"} true; + $t3 := $1_ristretto255_RistrettoPoint($t0); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:125:9+72 + assume {:print "$track_return(97,38,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:128:5+1 + assume {:print "$at(134,5628,5629)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_identity_compressed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:117:5+193 +procedure {:timeLimit 80} $1_ristretto255_point_identity_compressed$verify() returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t0: Vec (int); + var $t1: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:119:19+67 + assume {:print "$at(134,5347,5414)"} true; + $t0 := 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''($t0); + + // $t1 := pack ristretto255::CompressedRistretto($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:118:9+117 + assume {:print "$at(134,5307,5424)"} true; + $t1 := $1_ristretto255_CompressedRistretto($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:118:9+117 + assume {:print "$track_return(97,39,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:121:5+1 + assume {:print "$at(134,5429,5430)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:121:5+1 + assume {:print "$at(134,5429,5430)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::point_mul [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:249:5+176 +procedure {:timeLimit 80} $1_ristretto255_point_mul$verify(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: Vec (int); + var $t3: bool; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:249:5+1 + assume {:print "$at(134,10477,10478)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:249:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:249:5+1 + assume {:print "$track_local(97,42,0):", $t0} $t0 == $t0; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:249:5+1 + assume {:print "$track_local(97,42,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:47+6 + assume {:print "$at(134,10623,10629)"} true; + $t2 := $t1->$data; + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:55+5 + $t3 := false; + assume $IsValid'bool'($t3); + + // $t4 := opaque begin: ristretto255::point_mul_internal($t0, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + havoc $t5; + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 +L4: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + assume {:print "$at(134,10597,10637)"} true; + assume {:print "$track_abort(97,42):", $t6} $t6 == $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 +L3: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + assume {:print "$at(134,10597,10637)"} true; + assume $IsValid'u64'($t4); + + // $t4 := opaque end: ristretto255::point_mul_internal($t0, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:251:21+40 + + // $t7 := pack ristretto255::RistrettoPoint($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:250:9+87 + assume {:print "$at(134,10560,10647)"} true; + $t7 := $1_ristretto255_RistrettoPoint($t4); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:250:9+87 + assume {:print "$track_return(97,42,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:253:5+1 + assume {:print "$at(134,10652,10653)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:253:5+1 + assume {:print "$at(134,10652,10653)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:253:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:253:5+1 + assume {:print "$at(134,10652,10653)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_mul_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:256:5+159 +procedure {:timeLimit 80} $1_ristretto255_point_mul_assign$verify(_$t0: $Mutation ($1_ristretto255_RistrettoPoint), _$t1: $1_ristretto255_Scalar) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:256:5+1 + assume {:print "$at(134,10700,10701)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:256:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:256:5+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,43,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:256:5+1 + assume {:print "$track_local(97,43,1):", $t1} $t1 == $t1; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:35+6 + assume {:print "$at(134,10825,10831)"} true; + $t3 := $t1->$data; + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:27+21 + $t4 := $Dereference($t0); + + // $t5 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:43+4 + $t5 := true; + assume $IsValid'bool'($t5); + + // $t6 := opaque begin: ristretto255::point_mul_internal($t4, $t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + + // $t7 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + havoc $t7; + + // if ($t7) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + if ($t7) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 +L4: + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + assume {:print "$at(134,10799,10838)"} true; + assume {:print "$track_abort(97,43):", $t8} $t8 == $t8; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 +L3: + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + assume {:print "$at(134,10799,10838)"} true; + assume $IsValid'u64'($t6); + + // $t6 := opaque end: ristretto255::point_mul_internal($t4, $t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:257:9+39 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:258:9+5 + assume {:print "$at(134,10848,10853)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,43,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:258:9+5 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,43,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:259:5+1 + assume {:print "$at(134,10858,10859)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:259:5+1 + assume {:print "$at(134,10858,10859)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:259:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:259:5+1 + assume {:print "$at(134,10858,10859)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_neg [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:295:5+148 +procedure {:timeLimit 80} $1_ristretto255_point_neg$verify(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:295:5+1 + assume {:print "$at(134,12003,12004)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:295:5+1 + assume {:print "$track_local(97,45,0):", $t0} $t0 == $t0; + + // $t1 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:43+5 + assume {:print "$at(134,12129,12134)"} true; + $t1 := false; + assume $IsValid'bool'($t1); + + // $t2 := opaque begin: ristretto255::point_neg_internal($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + havoc $t3; + + // if ($t3) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + if ($t3) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 +L4: + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + assume {:print "$at(134,12107,12135)"} true; + assume {:print "$track_abort(97,45):", $t4} $t4 == $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 +L3: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + assume {:print "$at(134,12107,12135)"} true; + assume $IsValid'u64'($t2); + + // $t2 := opaque end: ristretto255::point_neg_internal($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:297:21+28 + + // $t5 := pack ristretto255::RistrettoPoint($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:296:9+75 + assume {:print "$at(134,12070,12145)"} true; + $t5 := $1_ristretto255_RistrettoPoint($t2); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:296:9+75 + assume {:print "$track_return(97,45,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:299:5+1 + assume {:print "$at(134,12150,12151)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:299:5+1 + assume {:print "$at(134,12150,12151)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:299:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:299:5+1 + assume {:print "$at(134,12150,12151)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_neg_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:302:5+127 +procedure {:timeLimit 80} $1_ristretto255_point_neg_assign$verify(_$t0: $Mutation ($1_ristretto255_RistrettoPoint)) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:302:5+1 + assume {:print "$at(134,12195,12196)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($Dereference($t0)); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:302:5+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,46,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // $t1 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:27+9 + assume {:print "$at(134,12296,12305)"} true; + $t1 := $Dereference($t0); + + // $t2 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:31+4 + $t2 := true; + assume $IsValid'bool'($t2); + + // $t3 := opaque begin: ristretto255::point_neg_internal($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + havoc $t4; + + // if ($t4) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + if ($t4) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + assume {:print "$at(134,12278,12305)"} true; + assume {:print "$track_abort(97,46):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + assume {:print "$at(134,12278,12305)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: ristretto255::point_neg_internal($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:303:9+27 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:304:9+1 + assume {:print "$at(134,12315,12316)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,46,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:304:9+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,46,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:305:5+1 + assume {:print "$at(134,12321,12322)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:305:5+1 + assume {:print "$at(134,12321,12322)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:305:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:305:5+1 + assume {:print "$at(134,12321,12322)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_sub [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+171 +procedure {:inline 1} $1_ristretto255_point_sub(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume {:print "$at(134,11614,11615)"} true; + assume {:print "$track_local(97,48,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume {:print "$track_local(97,48,1):", $t1} $t1 == $t1; + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:46+5 + assume {:print "$at(134,11763,11768)"} true; + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := opaque begin: ristretto255::point_sub_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + assume {:print "$at(134,11738,11769)"} true; + assume {:print "$track_abort(97,48):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + assume {:print "$at(134,11738,11769)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: ristretto255::point_sub_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + + // $t6 := pack ristretto255::RistrettoPoint($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:283:9+78 + assume {:print "$at(134,11701,11779)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:283:9+78 + assume {:print "$track_return(97,48,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+171 +procedure {:timeLimit 80} $1_ristretto255_point_sub$verify(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume {:print "$at(134,11614,11615)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume {:print "$track_local(97,48,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:282:5+1 + assume {:print "$track_local(97,48,1):", $t1} $t1 == $t1; + + // $t2 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:46+5 + assume {:print "$at(134,11763,11768)"} true; + $t2 := false; + assume $IsValid'bool'($t2); + + // $t3 := opaque begin: ristretto255::point_sub_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + havoc $t4; + + // if ($t4) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + if ($t4) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 +L4: + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + assume {:print "$at(134,11738,11769)"} true; + assume {:print "$track_abort(97,48):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 +L3: + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + assume {:print "$at(134,11738,11769)"} true; + assume $IsValid'u64'($t3); + + // $t3 := opaque end: ristretto255::point_sub_internal($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:284:21+31 + + // $t6 := pack ristretto255::RistrettoPoint($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:283:9+78 + assume {:print "$at(134,11701,11779)"} true; + $t6 := $1_ristretto255_RistrettoPoint($t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:283:9+78 + assume {:print "$track_return(97,48,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:286:5+1 + assume {:print "$at(134,11784,11785)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255::point_sub_assign [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+150 +procedure {:inline 1} $1_ristretto255_point_sub_assign(_$t0: $Mutation ($1_ristretto255_RistrettoPoint), _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + assume {:print "$at(134,11828,11829)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + assume {:print "$track_local(97,49,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:27+12 + assume {:print "$at(134,11949,11961)"} true; + $t3 := $Dereference($t0); + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:34+4 + $t4 := true; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: ristretto255::point_sub_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + havoc $t6; + + // if ($t6) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + if ($t6) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + assume {:print "$at(134,11931,11961)"} true; + assume {:print "$track_abort(97,49):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + assume {:print "$at(134,11931,11961)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::point_sub_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:291:9+1 + assume {:print "$at(134,11971,11972)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:291:9+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_sub_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+150 +procedure {:timeLimit 80} $1_ristretto255_point_sub_assign$verify(_$t0: $Mutation ($1_ristretto255_RistrettoPoint), _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $Mutation ($1_ristretto255_RistrettoPoint), $ret1: $Mutation ($1_ristretto255_RistrettoPoint)) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: bool; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t0: $Mutation ($1_ristretto255_RistrettoPoint); + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + assume {:print "$at(134,11828,11829)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:289:5+1 + assume {:print "$track_local(97,49,1):", $t1} $t1 == $t1; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:27+12 + assume {:print "$at(134,11949,11961)"} true; + $t3 := $Dereference($t0); + + // $t4 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:34+4 + $t4 := true; + assume $IsValid'bool'($t4); + + // $t5 := opaque begin: ristretto255::point_sub_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + havoc $t6; + + // if ($t6) goto L5 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + if ($t6) { goto L5; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 +L4: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + assume {:print "$at(134,11931,11961)"} true; + assume {:print "$track_abort(97,49):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 +L3: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + assume {:print "$at(134,11931,11961)"} true; + assume $IsValid'u64'($t5); + + // $t5 := opaque end: ristretto255::point_sub_internal($t3, $t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:290:9+30 + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:291:9+1 + assume {:print "$at(134,11971,11972)"} true; + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_return(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:291:9+1 + $temp_0'$1_ristretto255_RistrettoPoint' := $Dereference($t0); + assume {:print "$track_local(97,49,0):", $temp_0'$1_ristretto255_RistrettoPoint'} $temp_0'$1_ristretto255_RistrettoPoint' == $temp_0'$1_ristretto255_RistrettoPoint'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; + $ret0 := $t0; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:292:5+1 + assume {:print "$at(134,11977,11978)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun ristretto255::point_to_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:244:5+93 +procedure {:inline 1} $1_ristretto255_point_to_bytes(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:244:5+1 + assume {:print "$at(134,10351,10352)"} true; + assume {:print "$track_local(97,51,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:245:9+10 + assume {:print "$at(134,10428,10438)"} true; + $t1 := $t0->$data; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:245:9+10 + assume {:print "$track_return(97,51,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:246:5+1 + assume {:print "$at(134,10443,10444)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:246:5+1 + assume {:print "$at(134,10443,10444)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::point_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:244:5+93 +procedure {:timeLimit 80} $1_ristretto255_point_to_bytes$verify(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:244:5+1 + assume {:print "$at(134,10351,10352)"} true; + assume $IsValid'$1_ristretto255_CompressedRistretto'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:244:5+1 + assume {:print "$track_local(97,51,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:245:9+10 + assume {:print "$at(134,10428,10438)"} true; + $t1 := $t0->$data; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:245:9+10 + assume {:print "$track_return(97,51,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:246:5+1 + assume {:print "$at(134,10443,10444)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:246:5+1 + assume {:print "$at(134,10443,10444)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::scalar_add [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+142 +procedure {:inline 1} $1_ristretto255_scalar_add(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume {:print "$at(134,18414,18415)"} true; + assume {:print "$track_local(97,52,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume {:print "$track_local(97,52,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:39+6 + assume {:print "$at(134,18525,18531)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_add_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_add_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_add_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_add_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:474:9+72 + assume {:print "$at(134,18478,18550)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:474:9+72 + assume {:print "$track_return(97,52,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:477:5+1 + assume {:print "$at(134,18555,18556)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:477:5+1 + assume {:print "$at(134,18555,18556)"} true; + $ret0 := $t5; + return; + +} + +// fun ristretto255::scalar_add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+142 +procedure {:timeLimit 80} $1_ristretto255_scalar_add$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume {:print "$at(134,18414,18415)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume {:print "$track_local(97,52,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:473:5+1 + assume {:print "$track_local(97,52,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:39+6 + assume {:print "$at(134,18525,18531)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_add_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_add_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_add_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_add_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:475:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:474:9+72 + assume {:print "$at(134,18478,18550)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:474:9+72 + assume {:print "$track_return(97,52,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:477:5+1 + assume {:print "$at(134,18555,18556)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:248:9+16 + assume {:print "$at(135,6675,6691)"} true; + assert {:msg "assert_failed(135,6675,6691): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t5), ristretto255::spec_scalar_add_internal(select ristretto255::Scalar.data($t0), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:249:9+64 + assume {:print "$at(135,6700,6764)"} true; + assert {:msg "assert_failed(135,6700,6764): post-condition does not hold"} + $IsEqual'vec'u8''($t5->$data, $1_ristretto255_spec_scalar_add_internal($t0->$data, $t1->$data)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:249:9+64 + $ret0 := $t5; + return; + +} + +// fun ristretto255::scalar_add_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+127 +procedure {:timeLimit 80} $1_ristretto255_scalar_add_assign$verify(_$t0: $Mutation ($1_ristretto255_Scalar), _$t1: $1_ristretto255_Scalar) returns ($ret0: $Mutation ($1_ristretto255_Scalar), $ret1: $Mutation ($1_ristretto255_Scalar)) +{ + // declare local variables + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_Scalar; + var $t4: $1_ristretto255_Scalar; + var $t5: $1_ristretto255_Scalar; + var $t6: $1_ristretto255_Scalar; + var $t7: int; + var $t8: Vec (int); + var $t9: $Mutation (Vec (int)); + var $t10: $Mutation ($1_ristretto255_Scalar); + var $t0: $Mutation ($1_ristretto255_Scalar); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+1 + assume {:print "$at(134,18653,18654)"} true; + assume $IsValid'$1_ristretto255_Scalar'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+1 + $t4 := $Dereference($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,53,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:481:5+1 + assume {:print "$track_local(97,53,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:28+6 + assume {:print "$at(134,18752,18758)"} true; + $t5 := $Dereference($t0); + + // $t6 := ristretto255::scalar_add($t5, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:18+16 + call $t6 := $1_ristretto255_scalar_add($t5, $t1); + if ($abort_flag) { + assume {:print "$at(134,18742,18758)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(97,53):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := get_field.data($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:18+21 + $t8 := $t6->$data; + + // $t9 := borrow_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:9+6 + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:9+30 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).data (vector)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:9+30 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_Scalar'_data($Dereference($t0), $Dereference($t9))); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:482:9+30 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,53,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:483:9+1 + assume {:print "$at(134,18773,18774)"} true; + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_return(97,53,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:483:9+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,53,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // $t10 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:483:9+1 + $t10 := $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:484:5+1 + assume {:print "$at(134,18779,18780)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:253:9+16 + assume {:print "$at(135,6809,6825)"} true; + assert {:msg "assert_failed(135,6809,6825): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t0), ristretto255::spec_scalar_add_internal(select ristretto255::Scalar.data($t4), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:254:9+64 + assume {:print "$at(135,6834,6898)"} true; + assert {:msg "assert_failed(135,6834,6898): post-condition does not hold"} + $IsEqual'vec'u8''($Dereference($t0)->$data, $1_ristretto255_spec_scalar_add_internal($t4->$data, $t1->$data)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:254:9+64 + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:484:5+1 + assume {:print "$at(134,18779,18780)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:252:5+128 + assume {:print "$at(135,6776,6904)"} true; + assert {:msg "assert_failed(135,6776,6904): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:252:5+128 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::scalar_equals [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:442:5+95 +procedure {:timeLimit 80} $1_ristretto255_scalar_equals$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: bool) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: bool; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:442:5+1 + assume {:print "$at(134,17477,17478)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:442:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:442:5+1 + assume {:print "$track_local(97,55,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:442:5+1 + assume {:print "$track_local(97,55,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:443:9+8 + assume {:print "$at(134,17546,17554)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:443:21+8 + $t3 := $t1->$data; + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:443:18+2 + $t4 := $IsEqual'vec'u8''($t2, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:443:9+20 + assume {:print "$track_return(97,55,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:444:5+1 + assume {:print "$at(134,17571,17572)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:197:9+16 + assume {:print "$at(135,5221,5237)"} true; + assert {:msg "assert_failed(135,5221,5237): function does not abort under this condition"} + !false; + + // assert Eq($t4, Eq>(select ristretto255::Scalar.data($t0), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:198:9+41 + assume {:print "$at(135,5246,5287)"} true; + assert {:msg "assert_failed(135,5246,5287): post-condition does not hold"} + $IsEqual'bool'($t4, $IsEqual'vec'u8''($t0->$data, $t1->$data)); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:198:9+41 + $ret0 := $t4; + return; + +} + +// fun ristretto255::scalar_invert [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:448:5+267 +procedure {:timeLimit 80} $1_ristretto255_scalar_invert$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: $1_option_Option'$1_ristretto255_Scalar') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_Scalar'; + var $t2: bool; + var $t3: int; + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_option_Option'$1_ristretto255_Scalar'': $1_option_Option'$1_ristretto255_Scalar'; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:448:5+1 + assume {:print "$at(134,17672,17673)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:448:5+1 + assume {:print "$track_local(97,59,0):", $t0} $t0 == $t0; + + // $t2 := ristretto255::scalar_is_zero($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:13+17 + assume {:print "$at(134,17739,17756)"} true; + call $t2 := $1_ristretto255_scalar_is_zero($t0); + if ($abort_flag) { + assume {:print "$at(134,17739,17756)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(97,59):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:9+198 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:9+198 +L1: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:450:13+27 + assume {:print "$at(134,17772,17799)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:450:13+27 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:450:13+27 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_none'$1_ristretto255_Scalar'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:450:13+27 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:9+198 + assume {:print "$at(134,17735,17933)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:46+1 + assume {:print "$at(134,17901,17902)"} true; +L0: + + // $t4 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:46+6 + assume {:print "$at(134,17901,17907)"} true; + $t4 := $t0->$data; + + // $t5 := opaque begin: ristretto255::scalar_invert_internal($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:23+30 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:23+30 + assume $IsValid'vec'u8''($t5); + + // assume Eq>($t5, ristretto255::spec_scalar_invert_internal($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:23+30 + assume $IsEqual'vec'u8''($t5, $1_ristretto255_spec_scalar_invert_internal($t4)); + + // $t5 := opaque end: ristretto255::scalar_invert_internal($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:453:23+30 + + // $t6 := pack ristretto255::Scalar($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:452:31+75 + assume {:print "$at(134,17847,17922)"} true; + $t6 := $1_ristretto255_Scalar($t5); + + // $t1 := opaque begin: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:452:13+94 + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:452:13+94 + assume ($IsValid'$1_option_Option'$1_ristretto255_Scalar''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:452:13+94 + assume $IsEqual'$1_option_Option'$1_ristretto255_Scalar''($t1, $1_option_spec_some'$1_ristretto255_Scalar'($t6)); + + // $t1 := opaque end: option::some($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:452:13+94 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:9+198 + assume {:print "$at(134,17735,17933)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:449:9+198 + assume {:print "$at(134,17735,17933)"} true; + assume {:print "$track_return(97,59,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:456:5+1 + assume {:print "$at(134,17938,17939)"} true; +L3: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:202:9+16 + assume {:print "$at(135,5328,5344)"} true; + assert {:msg "assert_failed(135,5328,5344): function does not abort under this condition"} + !false; + + // assert Implies(ristretto255::spec_scalar_is_zero($t0), option::spec_is_none($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:203:9+69 + assume {:print "$at(135,5353,5422)"} true; + assert {:msg "assert_failed(135,5353,5422): post-condition does not hold"} + ($1_ristretto255_spec_scalar_is_zero($t0) ==> $1_option_spec_is_none'$1_ristretto255_Scalar'($t1)); + + // assert Implies(Not(ristretto255::spec_scalar_is_zero($t0)), And(option::spec_is_some($t1), Eq>(select ristretto255::Scalar.data(option::spec_borrow($t1)), ristretto255::spec_scalar_invert_internal(select ristretto255::Scalar.data($t0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:204:9+152 + assume {:print "$at(135,5431,5583)"} true; + assert {:msg "assert_failed(135,5431,5583): post-condition does not hold"} + (!$1_ristretto255_spec_scalar_is_zero($t0) ==> ($1_option_spec_is_some'$1_ristretto255_Scalar'($t1) && $IsEqual'vec'u8''($1_option_spec_borrow'$1_ristretto255_Scalar'($t1)->$data, $1_ristretto255_spec_scalar_invert_internal($t0->$data)))); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:204:9+152 + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:456:5+1 + assume {:print "$at(134,17938,17939)"} true; +L4: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:201:5+290 + assume {:print "$at(135,5299,5589)"} true; + assert {:msg "assert_failed(135,5299,5589): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:201:5+290 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255::scalar_is_one [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:437:5+136 +procedure {:timeLimit 80} $1_ristretto255_scalar_is_one$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: bool; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:437:5+1 + assume {:print "$at(134,17284,17285)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:437:5+1 + assume {:print "$track_local(97,62,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:438:9+6 + assume {:print "$at(134,17337,17343)"} true; + $t1 := $t0->$data; + + // $t2 := [1, 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:438:19+67 + $t2 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(1, 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''($t2); + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:438:16+2 + $t3 := $IsEqual'vec'u8''($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:438:9+77 + assume {:print "$track_return(97,62,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:439:5+1 + assume {:print "$at(134,17419,17420)"} true; +L1: + + // assert Eq($t3, ristretto255::spec_scalar_is_one($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:193:9+40 + assume {:print "$at(135,5140,5180)"} true; + assert {:msg "assert_failed(135,5140,5180): post-condition does not hold"} + $IsEqual'bool'($t3, $1_ristretto255_spec_scalar_is_one($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:193:9+40 + $ret0 := $t3; + return; + +} + +// fun ristretto255::scalar_is_zero [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:425:5+137 +procedure {:inline 1} $1_ristretto255_scalar_is_zero(_$t0: $1_ristretto255_Scalar) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: bool; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:425:5+1 + assume {:print "$at(134,16901,16902)"} true; + assume {:print "$track_local(97,63,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:9+6 + assume {:print "$at(134,16955,16961)"} true; + $t1 := $t0->$data; + + // $t2 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:19+67 + $t2 := 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''($t2); + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:16+2 + $t3 := $IsEqual'vec'u8''($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:9+77 + assume {:print "$track_return(97,63,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:427:5+1 + assume {:print "$at(134,17037,17038)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:427:5+1 + assume {:print "$at(134,17037,17038)"} true; + $ret0 := $t3; + return; + +} + +// fun ristretto255::scalar_is_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:425:5+137 +procedure {:timeLimit 80} $1_ristretto255_scalar_is_zero$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: bool) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: bool; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:425:5+1 + assume {:print "$at(134,16901,16902)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:425:5+1 + assume {:print "$track_local(97,63,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:9+6 + assume {:print "$at(134,16955,16961)"} true; + $t1 := $t0->$data; + + // $t2 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:19+67 + $t2 := 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''($t2); + + // $t3 := ==($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:16+2 + $t3 := $IsEqual'vec'u8''($t1, $t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:426:9+77 + assume {:print "$track_return(97,63,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:427:5+1 + assume {:print "$at(134,17037,17038)"} true; +L1: + + // assert Eq($t3, ristretto255::spec_scalar_is_zero($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:185:9+41 + assume {:print "$at(135,4985,5026)"} true; + assert {:msg "assert_failed(135,4985,5026): post-condition does not hold"} + $IsEqual'bool'($t3, $1_ristretto255_spec_scalar_is_zero($t0)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:185:9+41 + $ret0 := $t3; + return; + +} + +// fun ristretto255::scalar_mul_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+127 +procedure {:timeLimit 80} $1_ristretto255_scalar_mul_assign$verify(_$t0: $Mutation ($1_ristretto255_Scalar), _$t1: $1_ristretto255_Scalar) returns ($ret0: $Mutation ($1_ristretto255_Scalar), $ret1: $Mutation ($1_ristretto255_Scalar)) +{ + // declare local variables + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_Scalar; + var $t4: $1_ristretto255_Scalar; + var $t5: $1_ristretto255_Scalar; + var $t6: $1_ristretto255_Scalar; + var $t7: int; + var $t8: Vec (int); + var $t9: $Mutation (Vec (int)); + var $t10: $Mutation ($1_ristretto255_Scalar); + var $t0: $Mutation ($1_ristretto255_Scalar); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+1 + assume {:print "$at(134,18237,18238)"} true; + assume $IsValid'$1_ristretto255_Scalar'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+1 + $t4 := $Dereference($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,65,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:467:5+1 + assume {:print "$track_local(97,65,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:28+6 + assume {:print "$at(134,18336,18342)"} true; + $t5 := $Dereference($t0); + + // $t6 := ristretto255::scalar_mul($t5, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:18+16 + call $t6 := $1_ristretto255_scalar_mul($t5, $t1); + if ($abort_flag) { + assume {:print "$at(134,18326,18342)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(97,65):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := get_field.data($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:18+21 + $t8 := $t6->$data; + + // $t9 := borrow_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:9+6 + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:9+30 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).data (vector)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:9+30 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_Scalar'_data($Dereference($t0), $Dereference($t9))); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:468:9+30 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,65,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:469:9+1 + assume {:print "$at(134,18357,18358)"} true; + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_return(97,65,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:469:9+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,65,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // $t10 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:469:9+1 + $t10 := $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:470:5+1 + assume {:print "$at(134,18363,18364)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:263:9+16 + assume {:print "$at(135,7070,7086)"} true; + assert {:msg "assert_failed(135,7070,7086): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t0), ristretto255::spec_scalar_mul_internal(select ristretto255::Scalar.data($t4), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:264:9+64 + assume {:print "$at(135,7095,7159)"} true; + assert {:msg "assert_failed(135,7095,7159): post-condition does not hold"} + $IsEqual'vec'u8''($Dereference($t0)->$data, $1_ristretto255_spec_scalar_mul_internal($t4->$data, $t1->$data)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:264:9+64 + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:470:5+1 + assume {:print "$at(134,18363,18364)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:262:5+128 + assume {:print "$at(135,7037,7165)"} true; + assert {:msg "assert_failed(135,7037,7165): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:262:5+128 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::scalar_neg [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:501:5+122 +procedure {:timeLimit 80} $1_ristretto255_scalar_neg$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t1: Vec (int); + var $t2: Vec (int); + var $t3: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:501:5+1 + assume {:print "$at(134,19265,19266)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:501:5+1 + assume {:print "$track_local(97,67,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:503:39+6 + assume {:print "$at(134,19364,19370)"} true; + $t1 := $t0->$data; + + // $t2 := opaque begin: ristretto255::scalar_neg_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:503:19+27 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:503:19+27 + assume $IsValid'vec'u8''($t2); + + // assume Eq>($t2, ristretto255::spec_scalar_neg_internal($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:503:19+27 + assume $IsEqual'vec'u8''($t2, $1_ristretto255_spec_scalar_neg_internal($t1)); + + // $t2 := opaque end: ristretto255::scalar_neg_internal($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:503:19+27 + + // $t3 := pack ristretto255::Scalar($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:502:9+64 + assume {:print "$at(134,19317,19381)"} true; + $t3 := $1_ristretto255_Scalar($t2); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:502:9+64 + assume {:print "$track_return(97,67,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:505:5+1 + assume {:print "$at(134,19386,19387)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:232:9+16 + assume {:print "$at(135,6272,6288)"} true; + assert {:msg "assert_failed(135,6272,6288): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t3), ristretto255::spec_scalar_neg_internal(select ristretto255::Scalar.data($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:233:9+56 + assume {:print "$at(135,6297,6353)"} true; + assert {:msg "assert_failed(135,6297,6353): post-condition does not hold"} + $IsEqual'vec'u8''($t3->$data, $1_ristretto255_spec_scalar_neg_internal($t0->$data)); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:233:9+56 + $ret0 := $t3; + return; + +} + +// fun ristretto255::scalar_neg_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:509:5+112 +procedure {:timeLimit 80} $1_ristretto255_scalar_neg_assign$verify(_$t0: $Mutation ($1_ristretto255_Scalar)) returns ($ret0: $Mutation ($1_ristretto255_Scalar), $ret1: $Mutation ($1_ristretto255_Scalar)) +{ + // declare local variables + var $t1: $1_ristretto255_Scalar; + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_Scalar; + var $t4: $1_ristretto255_Scalar; + var $t5: Vec (int); + var $t6: $Mutation (Vec (int)); + var $t7: $Mutation ($1_ristretto255_Scalar); + var $t0: $Mutation ($1_ristretto255_Scalar); + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:509:5+1 + assume {:print "$at(134,19453,19454)"} true; + assume $IsValid'$1_ristretto255_Scalar'($Dereference($t0)); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:509:5+1 + $t2 := $Dereference($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:509:5+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,68,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // $t3 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:29+1 + assume {:print "$at(134,19541,19542)"} true; + $t3 := $Dereference($t0); + + // $t4 := opaque begin: ristretto255::scalar_neg($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:18+13 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:18+13 + assume $IsValid'$1_ristretto255_Scalar'($t4); + + // assume Eq>(select ristretto255::Scalar.data($t4), ristretto255::spec_scalar_neg_internal(select ristretto255::Scalar.data($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:18+13 + assume $IsEqual'vec'u8''($t4->$data, $1_ristretto255_spec_scalar_neg_internal($t3->$data)); + + // $t4 := opaque end: ristretto255::scalar_neg($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:18+13 + + // $t5 := get_field.data($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:18+18 + $t5 := $t4->$data; + + // $t6 := borrow_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:9+6 + $t6 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // write_ref($t6, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:9+27 + $t6 := $UpdateMutation($t6, $t5); + + // write_back[Reference($t0).data (vector)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:9+27 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_Scalar'_data($Dereference($t0), $Dereference($t6))); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:510:9+27 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,68,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:511:9+1 + assume {:print "$at(134,19558,19559)"} true; + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_return(97,68,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:511:9+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,68,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // $t7 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:511:9+1 + $t7 := $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:512:5+1 + assume {:print "$at(134,19564,19565)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:243:9+16 + assume {:print "$at(135,6556,6572)"} true; + assert {:msg "assert_failed(135,6556,6572): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t0), ristretto255::spec_scalar_neg_internal(select ristretto255::Scalar.data($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:244:9+56 + assume {:print "$at(135,6581,6637)"} true; + assert {:msg "assert_failed(135,6581,6637): post-condition does not hold"} + $IsEqual'vec'u8''($Dereference($t0)->$data, $1_ristretto255_spec_scalar_neg_internal($t2->$data)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:244:9+56 + $ret0 := $t7; + $ret1 := $t0; + return; + +} + +// fun ristretto255::scalar_one [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:430:5+152 +procedure {:timeLimit 80} $1_ristretto255_scalar_one$verify() returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t0: Vec (int); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := [1, 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:432:19+67 + assume {:print "$at(134,17144,17211)"} true; + $t0 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(1, 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''($t0); + + // $t1 := pack ristretto255::Scalar($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:431:9+104 + assume {:print "$at(134,17117,17221)"} true; + $t1 := $1_ristretto255_Scalar($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:431:9+104 + assume {:print "$track_return(97,70,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:434:5+1 + assume {:print "$at(134,17226,17227)"} true; +L1: + + // assert ristretto255::spec_scalar_is_one($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:189:9+35 + assume {:print "$at(135,5064,5099)"} true; + assert {:msg "assert_failed(135,5064,5099): post-condition does not hold"} + $1_ristretto255_spec_scalar_is_one($t1); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:189:9+35 + $ret0 := $t1; + return; + +} + +// fun ristretto255::scalar_sub [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+142 +procedure {:inline 1} $1_ristretto255_scalar_sub(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume {:print "$at(134,18837,18838)"} true; + assume {:print "$track_local(97,72,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume {:print "$track_local(97,72,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:39+6 + assume {:print "$at(134,18948,18954)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_sub_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_sub_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_sub_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_sub_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:488:9+72 + assume {:print "$at(134,18901,18973)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:488:9+72 + assume {:print "$track_return(97,72,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:491:5+1 + assume {:print "$at(134,18978,18979)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:491:5+1 + assume {:print "$at(134,18978,18979)"} true; + $ret0 := $t5; + return; + +} + +// fun ristretto255::scalar_sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+142 +procedure {:timeLimit 80} $1_ristretto255_scalar_sub$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t2: Vec (int); + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: $1_ristretto255_Scalar; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume {:print "$at(134,18837,18838)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume {:print "$track_local(97,72,0):", $t0} $t0 == $t0; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:487:5+1 + assume {:print "$track_local(97,72,1):", $t1} $t1 == $t1; + + // $t2 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:39+6 + assume {:print "$at(134,18948,18954)"} true; + $t2 := $t0->$data; + + // $t3 := get_field.data($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:47+6 + $t3 := $t1->$data; + + // $t4 := opaque begin: ristretto255::scalar_sub_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + assume $IsValid'vec'u8''($t4); + + // assume Eq>($t4, ristretto255::spec_scalar_sub_internal($t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + assume $IsEqual'vec'u8''($t4, $1_ristretto255_spec_scalar_sub_internal($t2, $t3)); + + // $t4 := opaque end: ristretto255::scalar_sub_internal($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:489:19+35 + + // $t5 := pack ristretto255::Scalar($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:488:9+72 + assume {:print "$at(134,18901,18973)"} true; + $t5 := $1_ristretto255_Scalar($t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:488:9+72 + assume {:print "$track_return(97,72,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:491:5+1 + assume {:print "$at(134,18978,18979)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:220:9+16 + assume {:print "$at(135,5955,5971)"} true; + assert {:msg "assert_failed(135,5955,5971): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t5), ristretto255::spec_scalar_sub_internal(select ristretto255::Scalar.data($t0), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:221:9+64 + assume {:print "$at(135,5980,6044)"} true; + assert {:msg "assert_failed(135,5980,6044): post-condition does not hold"} + $IsEqual'vec'u8''($t5->$data, $1_ristretto255_spec_scalar_sub_internal($t0->$data, $t1->$data)); + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:221:9+64 + $ret0 := $t5; + return; + +} + +// fun ristretto255::scalar_sub_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+127 +procedure {:timeLimit 80} $1_ristretto255_scalar_sub_assign$verify(_$t0: $Mutation ($1_ristretto255_Scalar), _$t1: $1_ristretto255_Scalar) returns ($ret0: $Mutation ($1_ristretto255_Scalar), $ret1: $Mutation ($1_ristretto255_Scalar)) +{ + // declare local variables + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_Scalar; + var $t4: $1_ristretto255_Scalar; + var $t5: $1_ristretto255_Scalar; + var $t6: $1_ristretto255_Scalar; + var $t7: int; + var $t8: Vec (int); + var $t9: $Mutation (Vec (int)); + var $t10: $Mutation ($1_ristretto255_Scalar); + var $t0: $Mutation ($1_ristretto255_Scalar); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+1 + assume {:print "$at(134,19068,19069)"} true; + assume $IsValid'$1_ristretto255_Scalar'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // $t4 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+1 + $t4 := $Dereference($t0); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,73,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[b]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:495:5+1 + assume {:print "$track_local(97,73,1):", $t1} $t1 == $t1; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:28+6 + assume {:print "$at(134,19167,19173)"} true; + $t5 := $Dereference($t0); + + // $t6 := ristretto255::scalar_sub($t5, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:18+16 + call $t6 := $1_ristretto255_scalar_sub($t5, $t1); + if ($abort_flag) { + assume {:print "$at(134,19157,19173)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(97,73):", $t7} $t7 == $t7; + goto L2; + } + + // $t8 := get_field.data($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:18+21 + $t8 := $t6->$data; + + // $t9 := borrow_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:9+6 + $t9 := $ChildMutation($t0, 0, $Dereference($t0)->$data); + + // write_ref($t9, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:9+30 + $t9 := $UpdateMutation($t9, $t8); + + // write_back[Reference($t0).data (vector)]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:9+30 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_Scalar'_data($Dereference($t0), $Dereference($t9))); + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:496:9+30 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,73,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:497:9+1 + assume {:print "$at(134,19188,19189)"} true; + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_return(97,73,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // trace_local[a]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:497:9+1 + $temp_0'$1_ristretto255_Scalar' := $Dereference($t0); + assume {:print "$track_local(97,73,0):", $temp_0'$1_ristretto255_Scalar'} $temp_0'$1_ristretto255_Scalar' == $temp_0'$1_ristretto255_Scalar'; + + // $t10 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:497:9+1 + $t10 := $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:498:5+1 + assume {:print "$at(134,19194,19195)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:268:9+16 + assume {:print "$at(135,7204,7220)"} true; + assert {:msg "assert_failed(135,7204,7220): function does not abort under this condition"} + !false; + + // assert Eq>(select ristretto255::Scalar.data($t0), ristretto255::spec_scalar_sub_internal(select ristretto255::Scalar.data($t4), select ristretto255::Scalar.data($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:269:9+64 + assume {:print "$at(135,7229,7293)"} true; + assert {:msg "assert_failed(135,7229,7293): post-condition does not hold"} + $IsEqual'vec'u8''($Dereference($t0)->$data, $1_ristretto255_spec_scalar_sub_internal($t4->$data, $t1->$data)); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:269:9+64 + $ret0 := $t10; + $ret1 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:498:5+1 + assume {:print "$at(134,19194,19195)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:267:5+128 + assume {:print "$at(135,7171,7299)"} true; + assert {:msg "assert_failed(135,7171,7299): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:267:5+128 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255::scalar_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:515:5+73 +procedure {:timeLimit 80} $1_ristretto255_scalar_to_bytes$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:515:5+1 + assume {:print "$at(134,19626,19627)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[s]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:515:5+1 + assume {:print "$track_local(97,75,0):", $t0} $t0 == $t0; + + // $t1 := get_field.data($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:516:9+6 + assume {:print "$at(134,19687,19693)"} true; + $t1 := $t0->$data; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:516:9+6 + assume {:print "$track_return(97,75,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:517:5+1 + assume {:print "$at(134,19698,19699)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:273:9+16 + assume {:print "$at(135,7336,7352)"} true; + assert {:msg "assert_failed(135,7336,7352): function does not abort under this condition"} + !false; + + // assert Eq>($t1, select ristretto255::Scalar.data($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:274:9+25 + assume {:print "$at(135,7361,7386)"} true; + assert {:msg "assert_failed(135,7361,7386): post-condition does not hold"} + $IsEqual'vec'u8''($t1, $t0->$data); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:274:9+25 + $ret0 := $t1; + return; + +} + +// fun ristretto255::scalar_zero [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:418:5+153 +procedure {:inline 1} $1_ristretto255_scalar_zero() returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t0: Vec (int); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + + // bytecode translation starts here + // $t0 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:420:19+67 + assume {:print "$at(134,16761,16828)"} true; + $t0 := 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''($t0); + + // $t1 := pack ristretto255::Scalar($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:419:9+104 + assume {:print "$at(134,16734,16838)"} true; + $t1 := $1_ristretto255_Scalar($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:419:9+104 + assume {:print "$track_return(97,77,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:422:5+1 + assume {:print "$at(134,16843,16844)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:422:5+1 + assume {:print "$at(134,16843,16844)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255::scalar_zero [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:418:5+153 +procedure {:timeLimit 80} $1_ristretto255_scalar_zero$verify() returns ($ret0: $1_ristretto255_Scalar) +{ + // declare local variables + var $t0: Vec (int); + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := [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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:420:19+67 + assume {:print "$at(134,16761,16828)"} true; + $t0 := 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''($t0); + + // $t1 := pack ristretto255::Scalar($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:419:9+104 + assume {:print "$at(134,16734,16838)"} true; + $t1 := $1_ristretto255_Scalar($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:419:9+104 + assume {:print "$track_return(97,77,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.move:422:5+1 + assume {:print "$at(134,16843,16844)"} true; +L1: + + // assert ristretto255::spec_scalar_is_zero($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:181:9+36 + assume {:print "$at(135,4907,4943)"} true; + assert {:msg "assert_failed(135,4907,4943): post-condition does not hold"} + $1_ristretto255_spec_scalar_is_zero($t1); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255.spec.move:181:9+36 + $ret0 := $t1; + return; + +} + +// struct ristretto255_pedersen::Commitment at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:23:5+65 +datatype $1_ristretto255_pedersen_Commitment { + $1_ristretto255_pedersen_Commitment($point: $1_ristretto255_RistrettoPoint) +} +function {:inline} $Update'$1_ristretto255_pedersen_Commitment'_point(s: $1_ristretto255_pedersen_Commitment, x: $1_ristretto255_RistrettoPoint): $1_ristretto255_pedersen_Commitment { + $1_ristretto255_pedersen_Commitment(x) +} +function $IsValid'$1_ristretto255_pedersen_Commitment'(s: $1_ristretto255_pedersen_Commitment): bool { + $IsValid'$1_ristretto255_RistrettoPoint'(s->$point) +} +function {:inline} $IsEqual'$1_ristretto255_pedersen_Commitment'(s1: $1_ristretto255_pedersen_Commitment, s2: $1_ristretto255_pedersen_Commitment): bool { + s1 == s2 +} + +// fun ristretto255_pedersen::commitment_add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:90:5+179 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_add$verify(_$t0: $1_ristretto255_pedersen_Commitment, _$t1: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: int; + var $t6: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_pedersen_Commitment; + var $t1: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:90:5+1 + assume {:print "$at(140,3549,3550)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:90:5+1 + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:90:5+1 + assume {:print "$track_local(98,0,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:90:5+1 + assume {:print "$track_local(98,0,1):", $t1} $t1 == $t1; + + // $t2 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:92:44+10 + assume {:print "$at(140,3689,3699)"} true; + $t2 := $t0->$point; + + // $t3 := get_field.point($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:92:56+10 + $t3 := $t1->$point; + + // $t4 := ristretto255::point_add($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:92:20+47 + call $t4 := $1_ristretto255_point_add($t2, $t3); + if ($abort_flag) { + assume {:print "$at(140,3665,3712)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,0):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ristretto255_pedersen::Commitment($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:91:9+89 + assume {:print "$at(140,3633,3722)"} true; + $t6 := $1_ristretto255_pedersen_Commitment($t4); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:91:9+89 + assume {:print "$track_return(98,0,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:94:5+1 + assume {:print "$at(140,3727,3728)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:94:5+1 + assume {:print "$at(140,3727,3728)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:94:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:94:5+1 + assume {:print "$at(140,3727,3728)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_add_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:97:5+148 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_add_assign$verify(_$t0: $Mutation ($1_ristretto255_pedersen_Commitment), _$t1: $1_ristretto255_pedersen_Commitment) returns ($ret0: $Mutation ($1_ristretto255_pedersen_Commitment)) +{ + // declare local variables + var $t2: $Mutation ($1_ristretto255_RistrettoPoint); + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $Mutation ($1_ristretto255_RistrettoPoint); + var $t5: int; + var $t0: $Mutation ($1_ristretto255_pedersen_Commitment); + var $t1: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:97:5+1 + assume {:print "$at(140,3795,3796)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:97:5+1 + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:97:5+1 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,1,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:97:5+1 + assume {:print "$track_local(98,1,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:40+14 + assume {:print "$at(140,3909,3923)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$point); + + // $t3 := get_field.point($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:56+10 + $t3 := $t1->$point; + + // $t4 := ristretto255::point_add_assign($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:9+58 + call $t4,$t2 := $1_ristretto255_point_add_assign($t2, $t3); + if ($abort_flag) { + assume {:print "$at(140,3878,3936)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,1):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).point (ristretto255::RistrettoPoint)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:9+58 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_pedersen_Commitment'_point($Dereference($t0), $Dereference($t2))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:9+58 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,1,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:9+58 + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:98:67+1 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,1,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:99:5+1 + assume {:print "$at(140,3942,3943)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:99:5+1 + assume {:print "$at(140,3942,3943)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:99:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:99:5+1 + assume {:print "$at(140,3942,3943)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_as_compressed_point [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:132:5+119 +procedure {:inline 1} $1_ristretto255_pedersen_commitment_as_compressed_point(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: int; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:132:5+1 + assume {:print "$at(140,5232,5233)"} true; + assume {:print "$track_local(98,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:24+8 + assume {:print "$at(140,5336,5344)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::point_compress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:9+24 + call $t2 := $1_ristretto255_point_compress($t1); + if ($abort_flag) { + assume {:print "$at(140,5321,5345)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(98,2):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:9+24 + assume {:print "$track_return(98,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_as_compressed_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:132:5+119 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_as_compressed_point$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: int; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:132:5+1 + assume {:print "$at(140,5232,5233)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:132:5+1 + assume {:print "$track_local(98,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:24+8 + assume {:print "$at(140,5336,5344)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::point_compress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:9+24 + call $t2 := $1_ristretto255_point_compress($t1); + if ($abort_flag) { + assume {:print "$at(140,5321,5345)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(98,2):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:133:9+24 + assume {:print "$track_return(98,2,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:134:5+1 + assume {:print "$at(140,5350,5351)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_as_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:127:5+88 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_as_point$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:127:5+1 + assume {:print "$at(140,5064,5065)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:127:5+1 + assume {:print "$track_local(98,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:128:9+8 + assume {:print "$at(140,5138,5146)"} true; + $t1 := $t0->$point; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:128:9+8 + assume {:print "$track_return(98,3,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:129:5+1 + assume {:print "$at(140,5151,5152)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:129:5+1 + assume {:print "$at(140,5151,5152)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_pedersen::commitment_clone [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:115:5+149 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_clone$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: int; + var $t4: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:115:5+1 + assume {:print "$at(140,4555,4556)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:115:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:115:5+1 + assume {:print "$track_local(98,4,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:117:46+8 + assume {:print "$at(140,4679,4687)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::point_clone($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:117:20+35 + call $t2 := $1_ristretto255_point_clone($t1); + if ($abort_flag) { + assume {:print "$at(140,4653,4688)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(98,4):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := pack ristretto255_pedersen::Commitment($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:116:9+77 + assume {:print "$at(140,4621,4698)"} true; + $t4 := $1_ristretto255_pedersen_Commitment($t2); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:116:9+77 + assume {:print "$track_return(98,4,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:119:5+1 + assume {:print "$at(140,4703,4704)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:119:5+1 + assume {:print "$at(140,4703,4704)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:119:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:119:5+1 + assume {:print "$at(140,4703,4704)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_equals [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:122:5+137 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_equals$verify(_$t0: $1_ristretto255_pedersen_Commitment, _$t1: $1_ristretto255_pedersen_Commitment) returns ($ret0: bool) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t0: $1_ristretto255_pedersen_Commitment; + var $t1: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:122:5+1 + assume {:print "$at(140,4807,4808)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:122:5+1 + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:122:5+1 + assume {:print "$track_local(98,5,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:122:5+1 + assume {:print "$track_local(98,5,1):", $t1} $t1 == $t1; + + // $t2 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:36+10 + assume {:print "$at(140,4915,4925)"} true; + $t2 := $t0->$point; + + // $t3 := get_field.point($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:48+10 + $t3 := $t1->$point; + + // $t4 := opaque begin: ristretto255::point_equals($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + havoc $t5; + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 +L4: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + assume {:print "$at(140,4888,4938)"} true; + assume {:print "$track_abort(98,5):", $t6} $t6 == $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 +L3: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + assume {:print "$at(140,4888,4938)"} true; + assume $IsValid'bool'($t4); + + // $t4 := opaque end: ristretto255::point_equals($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:123:9+50 + assume {:print "$track_return(98,5,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:124:5+1 + assume {:print "$at(140,4943,4944)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:124:5+1 + assume {:print "$at(140,4943,4944)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:124:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:124:5+1 + assume {:print "$at(140,4943,4944)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_from_compressed [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:57:5+174 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_from_compressed$verify(_$t0: $1_ristretto255_CompressedRistretto) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: int; + var $t3: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:57:5+1 + assume {:print "$at(140,1968,1969)"} true; + assume $IsValid'$1_ristretto255_CompressedRistretto'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:57:5+1 + assume {:print "$track_local(98,6,0):", $t0} $t0 == $t0; + + // $t1 := ristretto255::point_decompress($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:59:20+37 + assume {:print "$at(140,2089,2126)"} true; + call $t1 := $1_ristretto255_point_decompress($t0); + if ($abort_flag) { + assume {:print "$at(140,2089,2126)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(98,6):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack ristretto255_pedersen::Commitment($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:58:9+79 + assume {:print "$at(140,2057,2136)"} true; + $t3 := $1_ristretto255_pedersen_Commitment($t1); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:58:9+79 + assume {:print "$track_return(98,6,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:61:5+1 + assume {:print "$at(140,2141,2142)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:61:5+1 + assume {:print "$at(140,2141,2142)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:61:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:61:5+1 + assume {:print "$at(140,2141,2142)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_from_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:50:5+124 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_from_point$verify(_$t0: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t1: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:50:5+1 + assume {:print "$at(140,1769,1770)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // trace_local[point]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:50:5+1 + assume {:print "$track_local(98,7,0):", $t0} $t0 == $t0; + + // $t1 := pack ristretto255_pedersen::Commitment($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:51:9+40 + assume {:print "$at(140,1847,1887)"} true; + $t1 := $1_ristretto255_pedersen_Commitment($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:51:9+40 + assume {:print "$track_return(98,7,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:54:5+1 + assume {:print "$at(140,1892,1893)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:54:5+1 + assume {:print "$at(140,1892,1893)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_pedersen::commitment_into_compressed_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:143:5+120 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_into_compressed_point$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: int; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:143:5+1 + assume {:print "$at(140,5614,5615)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:143:5+1 + assume {:print "$track_local(98,8,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:144:24+8 + assume {:print "$at(140,5719,5727)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::point_compress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:144:9+24 + call $t2 := $1_ristretto255_point_compress($t1); + if ($abort_flag) { + assume {:print "$at(140,5704,5728)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(98,8):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:144:9+24 + assume {:print "$track_return(98,8,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:145:5+1 + assume {:print "$at(140,5733,5734)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:145:5+1 + assume {:print "$at(140,5733,5734)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:145:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:145:5+1 + assume {:print "$at(140,5733,5734)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_into_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:137:5+123 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_into_point$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:137:5+1 + assume {:print "$at(140,5420,5421)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:137:5+1 + assume {:print "$track_local(98,9,0):", $t0} $t0 == $t0; + + // $t1 := unpack ristretto255_pedersen::Commitment($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:138:13+20 + assume {:print "$at(140,5498,5518)"} true; + $t1 := $t0->$point; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:139:9+5 + assume {:print "$at(140,5532,5537)"} true; + assume {:print "$track_return(98,9,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:140:5+1 + assume {:print "$at(140,5542,5543)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:140:5+1 + assume {:print "$at(140,5542,5543)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_pedersen::commitment_sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:103:5+179 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_sub$verify(_$t0: $1_ristretto255_pedersen_Commitment, _$t1: $1_ristretto255_pedersen_Commitment) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: int; + var $t6: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_pedersen_Commitment; + var $t1: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:103:5+1 + assume {:print "$at(140,4112,4113)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:103:5+1 + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:103:5+1 + assume {:print "$track_local(98,10,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:103:5+1 + assume {:print "$track_local(98,10,1):", $t1} $t1 == $t1; + + // $t2 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:105:44+10 + assume {:print "$at(140,4252,4262)"} true; + $t2 := $t0->$point; + + // $t3 := get_field.point($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:105:56+10 + $t3 := $t1->$point; + + // $t4 := ristretto255::point_sub($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:105:20+47 + call $t4 := $1_ristretto255_point_sub($t2, $t3); + if ($abort_flag) { + assume {:print "$at(140,4228,4275)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,10):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack ristretto255_pedersen::Commitment($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:104:9+89 + assume {:print "$at(140,4196,4285)"} true; + $t6 := $1_ristretto255_pedersen_Commitment($t4); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:104:9+89 + assume {:print "$track_return(98,10,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:107:5+1 + assume {:print "$at(140,4290,4291)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:107:5+1 + assume {:print "$at(140,4290,4291)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:107:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:107:5+1 + assume {:print "$at(140,4290,4291)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_sub_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:110:5+148 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_sub_assign$verify(_$t0: $Mutation ($1_ristretto255_pedersen_Commitment), _$t1: $1_ristretto255_pedersen_Commitment) returns ($ret0: $Mutation ($1_ristretto255_pedersen_Commitment)) +{ + // declare local variables + var $t2: $Mutation ($1_ristretto255_RistrettoPoint); + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $Mutation ($1_ristretto255_RistrettoPoint); + var $t5: int; + var $t0: $Mutation ($1_ristretto255_pedersen_Commitment); + var $t1: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:110:5+1 + assume {:print "$at(140,4358,4359)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:110:5+1 + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:110:5+1 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,11,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:110:5+1 + assume {:print "$track_local(98,11,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:40+14 + assume {:print "$at(140,4472,4486)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$point); + + // $t3 := get_field.point($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:56+10 + $t3 := $t1->$point; + + // $t4 := ristretto255::point_sub_assign($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:9+58 + call $t4,$t2 := $1_ristretto255_point_sub_assign($t2, $t3); + if ($abort_flag) { + assume {:print "$at(140,4441,4499)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,11):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).point (ristretto255::RistrettoPoint)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:9+58 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_pedersen_Commitment'_point($Dereference($t0), $Dereference($t2))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:9+58 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,11,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:9+58 + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:111:67+1 + $temp_0'$1_ristretto255_pedersen_Commitment' := $Dereference($t0); + assume {:print "$track_local(98,11,0):", $temp_0'$1_ristretto255_pedersen_Commitment'} $temp_0'$1_ristretto255_pedersen_Commitment' == $temp_0'$1_ristretto255_pedersen_Commitment'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:112:5+1 + assume {:print "$at(140,4505,4506)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:112:5+1 + assume {:print "$at(140,4505,4506)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:112:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:112:5+1 + assume {:print "$at(140,4505,4506)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::commitment_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:45:5+150 +procedure {:timeLimit 80} $1_ristretto255_pedersen_commitment_to_bytes$verify(_$t0: $1_ristretto255_pedersen_Commitment) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_CompressedRistretto; + var $t4: int; + var $t5: Vec (int); + var $t0: $1_ristretto255_pedersen_Commitment; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:45:5+1 + assume {:print "$at(140,1553,1554)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // trace_local[comm]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:45:5+1 + assume {:print "$track_local(98,12,0):", $t0} $t0 == $t0; + + // $t2 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:46:68+11 + assume {:print "$at(140,1684,1695)"} true; + $t2 := $t0->$point; + + // $t3 := ristretto255::point_compress($t2) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:46:39+41 + call $t3 := $1_ristretto255_point_compress($t2); + if ($abort_flag) { + assume {:print "$at(140,1655,1696)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(98,12):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := ristretto255::point_to_bytes($t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:46:9+72 + call $t5 := $1_ristretto255_point_to_bytes($t3); + if ($abort_flag) { + assume {:print "$at(140,1625,1697)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(98,12):", $t4} $t4 == $t4; + goto L2; + } + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:46:9+72 + assume {:print "$track_return(98,12,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:47:5+1 + assume {:print "$at(140,1702,1703)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:47:5+1 + assume {:print "$at(140,1702,1703)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:47:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:47:5+1 + assume {:print "$at(140,1702,1703)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::new_commitment [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+233 +procedure {:timeLimit 80} $1_ristretto255_pedersen_new_commitment$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_RistrettoPoint, _$t2: $1_ristretto255_Scalar, _$t3: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: bool; + var $t6: int; + var $t7: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_Scalar; + var $t3: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume {:print "$at(140,2261,2262)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume {:print "$track_local(98,13,0):", $t0} $t0 == $t0; + + // trace_local[val_base]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume {:print "$track_local(98,13,1):", $t1} $t1 == $t1; + + // trace_local[r]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume {:print "$track_local(98,13,2):", $t2} $t2 == $t2; + + // trace_local[rand_base]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:64:5+1 + assume {:print "$track_local(98,13,3):", $t3} $t3 == $t3; + + // $t4 := opaque begin: ristretto255::double_scalar_mul($t0, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + assume {:print "$at(140,2420,2478)"} true; + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + havoc $t5; + + // if ($t5) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + if ($t5) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 +L4: + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + assume {:print "$at(140,2420,2478)"} true; + assume {:print "$track_abort(98,13):", $t6} $t6 == $t6; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 +L3: + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + assume {:print "$at(140,2420,2478)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t4); + + // $t4 := opaque end: ristretto255::double_scalar_mul($t0, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:66:20+58 + + // $t7 := pack ristretto255_pedersen::Commitment($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:65:9+100 + assume {:print "$at(140,2388,2488)"} true; + $t7 := $1_ristretto255_pedersen_Commitment($t4); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:65:9+100 + assume {:print "$track_return(98,13,0):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:68:5+1 + assume {:print "$at(140,2493,2494)"} true; +L1: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:68:5+1 + assume {:print "$at(140,2493,2494)"} true; + $ret0 := $t7; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:68:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:68:5+1 + assume {:print "$at(140,2493,2494)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::new_commitment_for_bulletproof [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:79:5+351 +procedure {:timeLimit 80} $1_ristretto255_pedersen_new_commitment_for_bulletproof$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t2: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: Vec (int); + var $t5: int; + var $t6: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t7: $1_ristretto255_RistrettoPoint; + var $t8: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t9: bool; + var $t10: $1_ristretto255_RistrettoPoint; + var $t11: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:79:5+1 + assume {:print "$at(140,3029,3030)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:79:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:79:5+1 + assume {:print "$track_local(98,14,0):", $t0} $t0 == $t0; + + // trace_local[r]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:79:5+1 + assume {:print "$track_local(98,14,1):", $t1} $t1 == $t1; + + // $t4 := [140, 146, 64, 180, 86, 169, 230, 220, 101, 195, 119, 161, 4, 141, 116, 95, 148, 160, 140, 219, 127, 68, 203, 205, 123, 70, 243, 64, 72, 135, 17, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:80:60+38 + assume {:print "$at(140,3168,3206)"} true; + $t4 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(140, 146, 64, 180), MakeVec4(86, 169, 230, 220)), MakeVec4(101, 195, 119, 161)), MakeVec4(4, 141, 116, 95)), MakeVec4(148, 160, 140, 219)), MakeVec4(127, 68, 203, 205)), MakeVec4(123, 70, 243, 64)), MakeVec4(72, 135, 17, 52)); + assume $IsValid'vec'u8''($t4); + + // $t2 := ristretto255::new_point_from_bytes($t4) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:80:25+74 + call $t2 := $1_ristretto255_new_point_from_bytes($t4); + if ($abort_flag) { + assume {:print "$at(140,3133,3207)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,14):", $t5} $t5 == $t5; + goto L2; + } + + // trace_local[rand_base]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:80:13+9 + assume {:print "$track_local(98,14,2):", $t2} $t2 == $t2; + + // $t6 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:46+14 + assume {:print "$at(140,3254,3268)"} true; + $t6 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t7 := opaque begin: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume ($t9 == $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t6))); + + // if ($t9) goto L4 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + if ($t9) { goto L4; } else { goto L5; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 +L4: + + // assume And(option::spec_is_none($t6), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume {:print "$at(140,3233,3269)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t6)) && $IsEqual'num'(262145, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume {:print "$at(140,3233,3269)"} true; + assume {:print "$track_abort(98,14):", $t5} $t5 == $t5; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 +L3: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume {:print "$at(140,3233,3269)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''); + + // assume And(WellFormed($t6), Le(Len(select option::Option.vec($t6)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($Dereference($t6)) && (LenVec($Dereference($t6)->$vec) <= 1)); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t7); + + // assume Eq($t7, option::spec_borrow($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume $IsEqual'$1_ristretto255_RistrettoPoint'($t7, $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'($t8)); + + // assume option::spec_is_none($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t6)); + + // $t7 := opaque end: option::extract($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + + // assert Le(Len(select option::Option.vec($t6)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t6)->$vec) <= 1); + + // write_back[LocalRoot($t2)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume {:print "$at(140,3233,3269)"} true; + $t2 := $Dereference($t6); + + // trace_local[rand_base]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:25+36 + assume {:print "$track_local(98,14,2):", $t2} $t2 == $t2; + + // trace_local[rand_base#1]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:81:13+9 + assume {:print "$track_local(98,14,3):", $t7} $t7 == $t7; + + // $t10 := ristretto255::basepoint_double_mul($t1, $t7, $t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:84:20+52 + assume {:print "$at(140,3312,3364)"} true; + call $t10 := $1_ristretto255_basepoint_double_mul($t1, $t7, $t0); + if ($abort_flag) { + assume {:print "$at(140,3312,3364)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(98,14):", $t5} $t5 == $t5; + goto L2; + } + + // $t11 := pack ristretto255_pedersen::Commitment($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:83:9+94 + assume {:print "$at(140,3280,3374)"} true; + $t11 := $1_ristretto255_pedersen_Commitment($t10); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:83:9+94 + assume {:print "$track_return(98,14,0):", $t11} $t11 == $t11; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:86:5+1 + assume {:print "$at(140,3379,3380)"} true; +L1: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:86:5+1 + assume {:print "$at(140,3379,3380)"} true; + $ret0 := $t11; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:86:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:86:5+1 + assume {:print "$at(140,3379,3380)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun ristretto255_pedersen::new_commitment_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:32:5+408 +procedure {:timeLimit 80} $1_ristretto255_pedersen_new_commitment_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_pedersen_Commitment') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_pedersen_Commitment'; + var $t2: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t3: int; + var $t4: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t5: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t6: bool; + var $t7: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t8: $1_ristretto255_RistrettoPoint; + var $t9: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t10: bool; + var $t11: $1_ristretto255_pedersen_Commitment; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'$1_option_Option'$1_ristretto255_pedersen_Commitment'': $1_option_Option'$1_ristretto255_pedersen_Commitment'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:32:5+1 + assume {:print "$at(140,1083,1084)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:32:5+1 + assume {:print "$track_local(98,15,0):", $t0} $t0 == $t0; + + // $t2 := ristretto255::new_point_from_bytes($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:33:21+41 + assume {:print "$at(140,1181,1222)"} true; + call $t2 := $1_ristretto255_new_point_from_bytes($t0); + if ($abort_flag) { + assume {:print "$at(140,1181,1222)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(98,15):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:33:13+5 + assume {:print "$track_local(98,15,2):", $t2} $t2 == $t2; + + // $t4 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:34+10 + assume {:print "$at(140,1257,1267)"} true; + $t4 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t5 := read_ref($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:34+10 + $t5 := $Dereference($t4); + + // assert Le(Len(select option::Option.vec($t4)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t4)->$vec) <= 1); + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:34+10 + assume {:print "$at(140,1257,1267)"} true; + assume {:print "$track_local(98,15,2):", $t2} $t2 == $t2; + + // $t6 := opaque begin: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:13+32 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:13+32 + assume $IsValid'bool'($t6); + + // assume Eq($t6, option::spec_is_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:13+32 + assume $IsEqual'bool'($t6, $1_option_spec_is_some'$1_ristretto255_RistrettoPoint'($t5)); + + // $t6 := opaque end: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:13+32 + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:9+253 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:45+10 + assume {:print "$at(140,1352,1362)"} true; +L1: + + // $t7 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:45+10 + assume {:print "$at(140,1352,1362)"} true; + $t7 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t8 := opaque begin: option::extract($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + + // $t9 := read_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + $t9 := $Dereference($t7); + + // assume Identical($t10, option::spec_is_none($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume ($t10 == $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t7))); + + // if ($t10) goto L6 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + if ($t10) { goto L6; } else { goto L7; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 +L6: + + // assume And(option::spec_is_none($t7), Eq(262145, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume {:print "$at(140,1331,1363)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t7)) && $IsEqual'num'(262145, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume {:print "$at(140,1331,1363)"} true; + assume {:print "$track_abort(98,15):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 +L5: + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume {:print "$at(140,1331,1363)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''; + $t7 := $UpdateMutation($t7, $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''); + + // assume And(WellFormed($t7), Le(Len(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($Dereference($t7)) && (LenVec($Dereference($t7)->$vec) <= 1)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t8); + + // assume Eq($t8, option::spec_borrow($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume $IsEqual'$1_ristretto255_RistrettoPoint'($t8, $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'($t9)); + + // assume option::spec_is_none($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t7)); + + // $t8 := opaque end: option::extract($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + + // assert Le(Len(select option::Option.vec($t7)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t7)->$vec) <= 1); + + // write_back[LocalRoot($t2)@]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume {:print "$at(140,1331,1363)"} true; + $t2 := $Dereference($t7); + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:36:24+32 + assume {:print "$track_local(98,15,2):", $t2} $t2 == $t2; + + // $t11 := pack ristretto255_pedersen::Commitment($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:35:24+82 + assume {:print "$at(140,1295,1377)"} true; + $t11 := $1_ristretto255_pedersen_Commitment($t8); + + // $t1 := opaque begin: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:38:13+23 + assume {:print "$at(140,1391,1414)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:38:13+23 + assume ($IsValid'$1_option_Option'$1_ristretto255_pedersen_Commitment''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:38:13+23 + assume $IsEqual'$1_option_Option'$1_ristretto255_pedersen_Commitment''($t1, $1_option_spec_some'$1_ristretto255_pedersen_Commitment'($t11)); + + // $t1 := opaque end: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:38:13+23 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:9+253 + assume {:print "$at(140,1232,1485)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:40:13+31 + assume {:print "$at(140,1444,1475)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:40:13+31 + assume {:print "$at(140,1444,1475)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:40:13+31 + assume ($IsValid'$1_option_Option'$1_ristretto255_pedersen_Commitment''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:40:13+31 + assume $IsEqual'$1_option_Option'$1_ristretto255_pedersen_Commitment''($t1, $1_option_spec_none'$1_ristretto255_pedersen_Commitment'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:40:13+31 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:9+253 + assume {:print "$at(140,1232,1485)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:34:9+253 + assume {:print "$at(140,1232,1485)"} true; + assume {:print "$track_return(98,15,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:42:5+1 + assume {:print "$at(140,1490,1491)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:42:5+1 + assume {:print "$at(140,1490,1491)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:42:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:42:5+1 + assume {:print "$at(140,1490,1491)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t7) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun ristretto255_pedersen::new_commitment_with_basepoint [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+214 +procedure {:timeLimit 80} $1_ristretto255_pedersen_new_commitment_with_basepoint$verify(_$t0: $1_ristretto255_Scalar, _$t1: $1_ristretto255_Scalar, _$t2: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_pedersen_Commitment) +{ + // declare local variables + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: int; + var $t5: $1_ristretto255_pedersen_Commitment; + var $t0: $1_ristretto255_Scalar; + var $t1: $1_ristretto255_Scalar; + var $t2: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume {:print "$at(140,2594,2595)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume $IsValid'$1_ristretto255_Scalar'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t2); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume {:print "$track_local(98,16,0):", $t0} $t0 == $t0; + + // trace_local[r]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume {:print "$track_local(98,16,1):", $t1} $t1 == $t1; + + // trace_local[rand_base]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:71:5+1 + assume {:print "$track_local(98,16,2):", $t2} $t2 == $t2; + + // $t3 := ristretto255::basepoint_double_mul($t1, $t2, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:73:20+51 + assume {:print "$at(140,2741,2792)"} true; + call $t3 := $1_ristretto255_basepoint_double_mul($t1, $t2, $t0); + if ($abort_flag) { + assume {:print "$at(140,2741,2792)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(98,16):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := pack ristretto255_pedersen::Commitment($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:72:9+93 + assume {:print "$at(140,2709,2802)"} true; + $t5 := $1_ristretto255_pedersen_Commitment($t3); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:72:9+93 + assume {:print "$track_return(98,16,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:75:5+1 + assume {:print "$at(140,2807,2808)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:75:5+1 + assume {:print "$at(140,2807,2808)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:75:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:75:5+1 + assume {:print "$at(140,2807,2808)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun ristretto255_pedersen::randomness_base_for_bulletproof [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:155:5+178 +procedure {:timeLimit 80} $1_ristretto255_pedersen_randomness_base_for_bulletproof$verify() returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t0: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t1: Vec (int); + var $t2: int; + var $t3: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t6: bool; + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t1 := [140, 146, 64, 180, 86, 169, 230, 220, 101, 195, 119, 161, 4, 141, 116, 95, 148, 160, 140, 219, 127, 68, 203, 205, 123, 70, 243, 64, 72, 135, 17, 52] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:70+38 + assume {:print "$at(140,6389,6427)"} true; + $t1 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(140, 146, 64, 180), MakeVec4(86, 169, 230, 220)), MakeVec4(101, 195, 119, 161)), MakeVec4(4, 141, 116, 95)), MakeVec4(148, 160, 140, 219)), MakeVec4(127, 68, 203, 205)), MakeVec4(123, 70, 243, 64)), MakeVec4(72, 135, 17, 52)); + assume $IsValid'vec'u8''($t1); + + // $t0 := ristretto255::new_point_from_bytes($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:35+74 + call $t0 := $1_ristretto255_new_point_from_bytes($t1); + if ($abort_flag) { + assume {:print "$at(140,6354,6428)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(98,17):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:30+79 + $t3 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t4 := opaque begin: option::extract($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + + // $t5 := read_ref($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + $t5 := $Dereference($t3); + + // assume Identical($t6, option::spec_is_none($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume ($t6 == $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t3))); + + // if ($t6) goto L4 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + if ($t6) { goto L4; } else { goto L5; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 +L4: + + // assume And(option::spec_is_none($t3), Eq(262145, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$at(140,6328,6429)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t3)) && $IsEqual'num'(262145, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$at(140,6328,6429)"} true; + assume {:print "$track_abort(98,17):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 +L3: + + // $t3 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$at(140,6328,6429)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''; + $t3 := $UpdateMutation($t3, $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''); + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($Dereference($t3)) && (LenVec($Dereference($t3)->$vec) <= 1)); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t4); + + // assume Eq($t4, option::spec_borrow($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume $IsEqual'$1_ristretto255_RistrettoPoint'($t4, $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'($t5)); + + // assume option::spec_is_none($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t3)); + + // $t4 := opaque end: option::extract($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + + // assert Le(Len(select option::Option.vec($t3)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$vec) <= 1); + + // write_back[LocalRoot($t0)@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$at(140,6328,6429)"} true; + $t0 := $Dereference($t3); + + // trace_local[tmp#$0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$track_local(98,17,0):", $t0} $t0 == $t0; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:156:9+101 + assume {:print "$track_return(98,17,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:157:5+1 + assume {:print "$at(140,6434,6435)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:157:5+1 + assume {:print "$at(140,6434,6435)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:157:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_pedersen.move:157:5+1 + assume {:print "$at(140,6434,6435)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t3) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// struct ristretto255_bulletproofs::RangeProof at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:41:5+73 +datatype $1_ristretto255_bulletproofs_RangeProof { + $1_ristretto255_bulletproofs_RangeProof($bytes: Vec (int)) +} +function {:inline} $Update'$1_ristretto255_bulletproofs_RangeProof'_bytes(s: $1_ristretto255_bulletproofs_RangeProof, x: Vec (int)): $1_ristretto255_bulletproofs_RangeProof { + $1_ristretto255_bulletproofs_RangeProof(x) +} +function $IsValid'$1_ristretto255_bulletproofs_RangeProof'(s: $1_ristretto255_bulletproofs_RangeProof): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_ristretto255_bulletproofs_RangeProof'(s1: $1_ristretto255_bulletproofs_RangeProof, s2: $1_ristretto255_bulletproofs_RangeProof): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun ristretto255_bulletproofs::get_max_range_bits [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:50:5+67 +procedure {:timeLimit 80} $1_ristretto255_bulletproofs_get_max_range_bits$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $temp_0'u64': int; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:51:9+14 + assume {:print "$at(136,1650,1664)"} true; + $t0 := 64; + assume $IsValid'u64'($t0); + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:51:9+14 + assume {:print "$track_return(99,0,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:52:5+1 + assume {:print "$at(136,1669,1670)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:52:5+1 + assume {:print "$at(136,1669,1670)"} true; + $ret0 := $t0; + return; + +} + +// fun ristretto255_bulletproofs::range_proof_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:56:5+121 +procedure {:timeLimit 80} $1_ristretto255_bulletproofs_range_proof_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_ristretto255_bulletproofs_RangeProof) +{ + // declare local variables + var $t1: $1_ristretto255_bulletproofs_RangeProof; + var $t0: Vec (int); + var $temp_0'$1_ristretto255_bulletproofs_RangeProof': $1_ristretto255_bulletproofs_RangeProof; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:56:5+1 + assume {:print "$at(136,1929,1930)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:56:5+1 + assume {:print "$track_local(99,1,0):", $t0} $t0 == $t0; + + // $t1 := pack ristretto255_bulletproofs::RangeProof($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:57:9+40 + assume {:print "$at(136,2004,2044)"} true; + $t1 := $1_ristretto255_bulletproofs_RangeProof($t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:57:9+40 + assume {:print "$track_return(99,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:60:5+1 + assume {:print "$at(136,2049,2050)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:60:5+1 + assume {:print "$at(136,2049,2050)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_bulletproofs::range_proof_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:63:5+91 +procedure {:timeLimit 80} $1_ristretto255_bulletproofs_range_proof_to_bytes$verify(_$t0: $1_ristretto255_bulletproofs_RangeProof) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_ristretto255_bulletproofs_RangeProof; + var $temp_0'$1_ristretto255_bulletproofs_RangeProof': $1_ristretto255_bulletproofs_RangeProof; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:63:5+1 + assume {:print "$at(136,2114,2115)"} true; + assume $IsValid'$1_ristretto255_bulletproofs_RangeProof'($t0); + + // trace_local[proof]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:63:5+1 + assume {:print "$track_local(99,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:64:9+11 + assume {:print "$at(136,2188,2199)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:64:9+11 + assume {:print "$track_return(99,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:65:5+1 + assume {:print "$at(136,2204,2205)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:65:5+1 + assume {:print "$at(136,2204,2205)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_bulletproofs::verify_range_proof [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+500 +procedure {:timeLimit 80} $1_ristretto255_bulletproofs_verify_range_proof$verify(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint, _$t2: $1_ristretto255_RistrettoPoint, _$t3: $1_ristretto255_bulletproofs_RangeProof, _$t4: int, _$t5: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t6: $1_ristretto255_CompressedRistretto; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $1_ristretto255_CompressedRistretto; + var $t12: Vec (int); + var $t13: Vec (int); + var $t14: bool; + var $t15: bool; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_bulletproofs_RangeProof; + var $t4: int; + var $t5: Vec (int); + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_bulletproofs_RangeProof': $1_ristretto255_bulletproofs_RangeProof; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$at(136,3549,3550)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume $IsValid'$1_ristretto255_bulletproofs_RangeProof'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume $IsValid'vec'u8''($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[com]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,0):", $t0} $t0 == $t0; + + // trace_local[val_base]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,1):", $t1} $t1 == $t1; + + // trace_local[rand_base]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,2):", $t2} $t2 == $t2; + + // trace_local[proof]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,3):", $t3} $t3 == $t3; + + // trace_local[num_bits]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,4):", $t4} $t4 == $t4; + + // trace_local[dst]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:88:5+1 + assume {:print "$track_local(99,3,5):", $t5} $t5 == $t5; + + // $t7 := features::bulletproofs_enabled() on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:17+32 + assume {:print "$at(136,3761,3793)"} true; + call $t7 := $1_features_bulletproofs_enabled(); + if ($abort_flag) { + assume {:print "$at(136,3761,3793)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(99,3):", $t8} $t8 == $t8; + goto L4; + } + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 + assume {:print "$at(136,3753,3844)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 +L0: + + // $t9 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:72+26 + assume {:print "$at(136,3816,3842)"} true; + $t9 := 4; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_state($t9) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:51+48 + call $t10 := $1_error_invalid_state($t9); + if ($abort_flag) { + assume {:print "$at(136,3795,3843)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(99,3):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 + assume {:print "$at(136,3753,3844)"} true; + assume {:print "$track_abort(99,3):", $t10} $t10 == $t10; + + // $t8 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 + $t8 := $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:93:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:96:72+3 + assume {:print "$at(136,3955,3958)"} true; +L2: + + // $t11 := ristretto255::point_compress($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:96:43+33 + assume {:print "$at(136,3926,3959)"} true; + call $t11 := $1_ristretto255_point_compress($t0); + if ($abort_flag) { + assume {:print "$at(136,3926,3959)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(99,3):", $t8} $t8 == $t8; + goto L4; + } + + // $t12 := ristretto255::point_to_bytes($t11) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:96:13+64 + call $t12 := $1_ristretto255_point_to_bytes($t11); + if ($abort_flag) { + assume {:print "$at(136,3896,3960)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(99,3):", $t8} $t8 == $t8; + goto L4; + } + + // $t13 := get_field.bytes($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:98:13+11 + assume {:print "$at(136,4007,4018)"} true; + $t13 := $t3->$bytes; + + // $t14 := opaque begin: ristretto255_bulletproofs::verify_range_proof_internal($t12, $t1, $t2, $t13, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + assume {:print "$at(136,3855,4043)"} true; + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + havoc $t15; + + // if ($t15) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + if ($t15) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 +L6: + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + assume {:print "$at(136,3855,4043)"} true; + assume {:print "$track_abort(99,3):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 +L5: + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + assume {:print "$at(136,3855,4043)"} true; + assume $IsValid'bool'($t14); + + // $t14 := opaque end: ristretto255_bulletproofs::verify_range_proof_internal($t12, $t1, $t2, $t13, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:95:9+188 + assume {:print "$track_return(99,3,0):", $t14} $t14 == $t14; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:100:5+1 + assume {:print "$at(136,4048,4049)"} true; +L3: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:100:5+1 + assume {:print "$at(136,4048,4049)"} true; + $ret0 := $t14; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:100:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:100:5+1 + assume {:print "$at(136,4048,4049)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun ristretto255_bulletproofs::verify_range_proof_pedersen [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+511 +procedure {:timeLimit 80} $1_ristretto255_bulletproofs_verify_range_proof_pedersen$verify(_$t0: $1_ristretto255_pedersen_Commitment, _$t1: $1_ristretto255_bulletproofs_RangeProof, _$t2: int, _$t3: Vec (int)) returns ($ret0: bool) +{ + // declare local variables + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: $1_ristretto255_RistrettoPoint; + var $t6: $1_ristretto255_RistrettoPoint; + var $t7: $1_ristretto255_CompressedRistretto; + var $t8: Vec (int); + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: $1_ristretto255_CompressedRistretto; + var $t14: Vec (int); + var $t15: $1_ristretto255_RistrettoPoint; + var $t16: $1_ristretto255_RistrettoPoint; + var $t17: Vec (int); + var $t18: bool; + var $t19: bool; + var $t0: $1_ristretto255_pedersen_Commitment; + var $t1: $1_ristretto255_bulletproofs_RangeProof; + var $t2: int; + var $t3: Vec (int); + var $temp_0'$1_ristretto255_bulletproofs_RangeProof': $1_ristretto255_bulletproofs_RangeProof; + var $temp_0'$1_ristretto255_pedersen_Commitment': $1_ristretto255_pedersen_Commitment; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume {:print "$at(136,2797,2798)"} true; + assume $IsValid'$1_ristretto255_pedersen_Commitment'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume $IsValid'$1_ristretto255_bulletproofs_RangeProof'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume $IsValid'vec'u8''($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[com]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume {:print "$track_local(99,5,0):", $t0} $t0 == $t0; + + // trace_local[proof]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume {:print "$track_local(99,5,1):", $t1} $t1 == $t1; + + // trace_local[num_bits]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume {:print "$track_local(99,5,2):", $t2} $t2 == $t2; + + // trace_local[dst]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:74:5+1 + assume {:print "$track_local(99,5,3):", $t3} $t3 == $t3; + + // $t9 := features::bulletproofs_enabled() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:17+32 + assume {:print "$at(136,2940,2972)"} true; + call $t9 := $1_features_bulletproofs_enabled(); + if ($abort_flag) { + assume {:print "$at(136,2940,2972)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 + assume {:print "$at(136,2932,3023)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 +L0: + + // $t11 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:72+26 + assume {:print "$at(136,2995,3021)"} true; + $t11 := 4; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_state($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:51+48 + call $t12 := $1_error_invalid_state($t11); + if ($abort_flag) { + assume {:print "$at(136,2974,3022)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 + assume {:print "$at(136,2932,3023)"} true; + assume {:print "$track_abort(99,5):", $t12} $t12 == $t12; + + // $t10 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 + $t10 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:75:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:78:84+3 + assume {:print "$at(136,3146,3149)"} true; +L2: + + // $t13 := ristretto255_pedersen::commitment_as_compressed_point($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:78:43+45 + assume {:print "$at(136,3105,3150)"} true; + call $t13 := $1_ristretto255_pedersen_commitment_as_compressed_point($t0); + if ($abort_flag) { + assume {:print "$at(136,3105,3150)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t14 := ristretto255::point_to_bytes($t13) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:78:13+76 + call $t14 := $1_ristretto255_point_to_bytes($t13); + if ($abort_flag) { + assume {:print "$at(136,3075,3151)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t15 := ristretto255::basepoint() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:79:14+25 + assume {:print "$at(136,3166,3191)"} true; + call $t15 := $1_ristretto255_basepoint(); + if ($abort_flag) { + assume {:print "$at(136,3166,3191)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t16 := ristretto255::hash_to_point_base() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:79:42+34 + call $t16 := $1_ristretto255_hash_to_point_base(); + if ($abort_flag) { + assume {:print "$at(136,3194,3228)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + goto L4; + } + + // $t17 := get_field.bytes($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:80:13+11 + assume {:print "$at(136,3242,3253)"} true; + $t17 := $t1->$bytes; + + // $t18 := opaque begin: ristretto255_bulletproofs::verify_range_proof_internal($t14, $t15, $t16, $t17, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + assume {:print "$at(136,3034,3302)"} true; + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + havoc $t19; + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 +L6: + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + assume {:print "$at(136,3034,3302)"} true; + assume {:print "$track_abort(99,5):", $t10} $t10 == $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 +L5: + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + assume {:print "$at(136,3034,3302)"} true; + assume $IsValid'bool'($t18); + + // $t18 := opaque end: ristretto255_bulletproofs::verify_range_proof_internal($t14, $t15, $t16, $t17, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + + // trace_return[0]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:77:9+268 + assume {:print "$track_return(99,5,0):", $t18} $t18 == $t18; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:84:5+1 + assume {:print "$at(136,3307,3308)"} true; +L3: + + // return $t18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:84:5+1 + assume {:print "$at(136,3307,3308)"} true; + $ret0 := $t18; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:84:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_bulletproofs.move:84:5+1 + assume {:print "$at(136,3307,3308)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// struct ristretto255_elgamal::Ciphertext at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:21:5+124 +datatype $1_ristretto255_elgamal_Ciphertext { + $1_ristretto255_elgamal_Ciphertext($left: $1_ristretto255_RistrettoPoint, $right: $1_ristretto255_RistrettoPoint) +} +function {:inline} $Update'$1_ristretto255_elgamal_Ciphertext'_left(s: $1_ristretto255_elgamal_Ciphertext, x: $1_ristretto255_RistrettoPoint): $1_ristretto255_elgamal_Ciphertext { + $1_ristretto255_elgamal_Ciphertext(x, s->$right) +} +function {:inline} $Update'$1_ristretto255_elgamal_Ciphertext'_right(s: $1_ristretto255_elgamal_Ciphertext, x: $1_ristretto255_RistrettoPoint): $1_ristretto255_elgamal_Ciphertext { + $1_ristretto255_elgamal_Ciphertext(s->$left, x) +} +function $IsValid'$1_ristretto255_elgamal_Ciphertext'(s: $1_ristretto255_elgamal_Ciphertext): bool { + $IsValid'$1_ristretto255_RistrettoPoint'(s->$left) + && $IsValid'$1_ristretto255_RistrettoPoint'(s->$right) +} +function {:inline} $IsEqual'$1_ristretto255_elgamal_Ciphertext'(s1: $1_ristretto255_elgamal_Ciphertext, s2: $1_ristretto255_elgamal_Ciphertext): bool { + s1 == s2 +} + +// struct ristretto255_elgamal::CompressedCiphertext at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:27:5+128 +datatype $1_ristretto255_elgamal_CompressedCiphertext { + $1_ristretto255_elgamal_CompressedCiphertext($left: $1_ristretto255_CompressedRistretto, $right: $1_ristretto255_CompressedRistretto) +} +function {:inline} $Update'$1_ristretto255_elgamal_CompressedCiphertext'_left(s: $1_ristretto255_elgamal_CompressedCiphertext, x: $1_ristretto255_CompressedRistretto): $1_ristretto255_elgamal_CompressedCiphertext { + $1_ristretto255_elgamal_CompressedCiphertext(x, s->$right) +} +function {:inline} $Update'$1_ristretto255_elgamal_CompressedCiphertext'_right(s: $1_ristretto255_elgamal_CompressedCiphertext, x: $1_ristretto255_CompressedRistretto): $1_ristretto255_elgamal_CompressedCiphertext { + $1_ristretto255_elgamal_CompressedCiphertext(s->$left, x) +} +function $IsValid'$1_ristretto255_elgamal_CompressedCiphertext'(s: $1_ristretto255_elgamal_CompressedCiphertext): bool { + $IsValid'$1_ristretto255_CompressedRistretto'(s->$left) + && $IsValid'$1_ristretto255_CompressedRistretto'(s->$right) +} +function {:inline} $IsEqual'$1_ristretto255_elgamal_CompressedCiphertext'(s1: $1_ristretto255_elgamal_CompressedCiphertext, s2: $1_ristretto255_elgamal_CompressedCiphertext): bool { + $IsEqual'$1_ristretto255_CompressedRistretto'(s1->$left, s2->$left) + && $IsEqual'$1_ristretto255_CompressedRistretto'(s1->$right, s2->$right)} + +// struct ristretto255_elgamal::CompressedPubkey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:33:5+89 +datatype $1_ristretto255_elgamal_CompressedPubkey { + $1_ristretto255_elgamal_CompressedPubkey($point: $1_ristretto255_CompressedRistretto) +} +function {:inline} $Update'$1_ristretto255_elgamal_CompressedPubkey'_point(s: $1_ristretto255_elgamal_CompressedPubkey, x: $1_ristretto255_CompressedRistretto): $1_ristretto255_elgamal_CompressedPubkey { + $1_ristretto255_elgamal_CompressedPubkey(x) +} +function $IsValid'$1_ristretto255_elgamal_CompressedPubkey'(s: $1_ristretto255_elgamal_CompressedPubkey): bool { + $IsValid'$1_ristretto255_CompressedRistretto'(s->$point) +} +function {:inline} $IsEqual'$1_ristretto255_elgamal_CompressedPubkey'(s1: $1_ristretto255_elgamal_CompressedPubkey, s2: $1_ristretto255_elgamal_CompressedPubkey): bool { + $IsEqual'$1_ristretto255_CompressedRistretto'(s1->$point, s2->$point)} + +// fun ristretto255_elgamal::ciphertext_add [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:155:5+245 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_add$verify(_$t0: $1_ristretto255_elgamal_Ciphertext, _$t1: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t7: $1_ristretto255_RistrettoPoint; + var $t8: $1_ristretto255_RistrettoPoint; + var $t9: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $t1: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:155:5+1 + assume {:print "$at(138,6203,6204)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:155:5+1 + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:155:5+1 + assume {:print "$track_local(100,0,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:155:5+1 + assume {:print "$track_local(100,0,1):", $t1} $t1 == $t1; + + // $t2 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:157:43+9 + assume {:print "$at(138,6342,6351)"} true; + $t2 := $t0->$left; + + // $t3 := get_field.left($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:157:54+9 + $t3 := $t1->$left; + + // $t4 := ristretto255::point_add($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:157:19+45 + call $t4 := $1_ristretto255_point_add($t2, $t3); + if ($abort_flag) { + assume {:print "$at(138,6318,6363)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,0):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:158:44+10 + assume {:print "$at(138,6408,6418)"} true; + $t6 := $t0->$right; + + // $t7 := get_field.right($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:158:56+10 + $t7 := $t1->$right; + + // $t8 := ristretto255::point_add($t6, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:158:20+47 + call $t8 := $1_ristretto255_point_add($t6, $t7); + if ($abort_flag) { + assume {:print "$at(138,6384,6431)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,0):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := pack ristretto255_elgamal::Ciphertext($t4, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:156:9+155 + assume {:print "$at(138,6287,6442)"} true; + $t9 := $1_ristretto255_elgamal_Ciphertext($t4, $t8); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:156:9+155 + assume {:print "$track_return(100,0,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:160:5+1 + assume {:print "$at(138,6447,6448)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:160:5+1 + assume {:print "$at(138,6447,6448)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:160:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:160:5+1 + assume {:print "$at(138,6447,6448)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_add_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:163:5+214 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_add_assign$verify(_$t0: $Mutation ($1_ristretto255_elgamal_Ciphertext), _$t1: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $Mutation ($1_ristretto255_elgamal_Ciphertext)) +{ + // declare local variables + var $t2: $Mutation ($1_ristretto255_RistrettoPoint); + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $Mutation ($1_ristretto255_RistrettoPoint); + var $t5: int; + var $t6: $Mutation ($1_ristretto255_RistrettoPoint); + var $t7: $1_ristretto255_RistrettoPoint; + var $t8: $Mutation ($1_ristretto255_RistrettoPoint); + var $t0: $Mutation ($1_ristretto255_elgamal_Ciphertext); + var $t1: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:163:5+1 + assume {:print "$at(138,6515,6516)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:163:5+1 + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:163:5+1 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,1,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:163:5+1 + assume {:print "$track_local(100,1,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:40+13 + assume {:print "$at(138,6629,6642)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$left); + + // $t3 := get_field.left($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:55+9 + $t3 := $t1->$left; + + // $t4 := ristretto255::point_add_assign($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:9+56 + call $t4,$t2 := $1_ristretto255_point_add_assign($t2, $t3); + if ($abort_flag) { + assume {:print "$at(138,6598,6654)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,1):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).left (ristretto255::RistrettoPoint)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:9+56 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_elgamal_Ciphertext'_left($Dereference($t0), $Dereference($t2))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:9+56 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,1,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:164:9+56 + + // $t6 := borrow_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:40+14 + assume {:print "$at(138,6695,6709)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$right); + + // $t7 := get_field.right($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:56+10 + $t7 := $t1->$right; + + // $t8 := ristretto255::point_add_assign($t6, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:9+58 + call $t8,$t6 := $1_ristretto255_point_add_assign($t6, $t7); + if ($abort_flag) { + assume {:print "$at(138,6664,6722)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,1):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).right (ristretto255::RistrettoPoint)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:9+58 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_elgamal_Ciphertext'_right($Dereference($t0), $Dereference($t6))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:9+58 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,1,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:9+58 + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:165:67+1 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,1,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:166:5+1 + assume {:print "$at(138,6728,6729)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:166:5+1 + assume {:print "$at(138,6728,6729)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:166:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:166:5+1 + assume {:print "$at(138,6728,6729)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_as_points [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:133:5+119 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_as_points$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_RistrettoPoint, $ret1: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:133:5+1 + assume {:print "$at(138,5311,5312)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:133:5+1 + assume {:print "$track_local(100,2,0):", $t0} $t0 == $t0; + + // $t1 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:134:10+7 + assume {:print "$at(138,5406,5413)"} true; + $t1 := $t0->$left; + + // $t2 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:134:19+8 + $t2 := $t0->$right; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:134:9+19 + assume {:print "$track_return(100,2,0):", $t1} $t1 == $t1; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:134:9+19 + assume {:print "$track_return(100,2,1):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:135:5+1 + assume {:print "$at(138,5429,5430)"} true; +L1: + + // return ($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:135:5+1 + assume {:print "$at(138,5429,5430)"} true; + $ret0 := $t1; + $ret1 := $t2; + return; + +} + +// fun ristretto255_elgamal::ciphertext_clone [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:184:5+204 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_clone$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: int; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: $1_ristretto255_RistrettoPoint; + var $t6: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:184:5+1 + assume {:print "$at(138,7473,7474)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:184:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:184:5+1 + assume {:print "$track_local(100,3,0):", $t0} $t0 == $t0; + + // $t1 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:186:45+7 + assume {:print "$at(138,7596,7603)"} true; + $t1 := $t0->$left; + + // $t2 := ristretto255::point_clone($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:186:19+34 + call $t2 := $1_ristretto255_point_clone($t1); + if ($abort_flag) { + assume {:print "$at(138,7570,7604)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,3):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:187:46+8 + assume {:print "$at(138,7651,7659)"} true; + $t4 := $t0->$right; + + // $t5 := ristretto255::point_clone($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:187:20+35 + call $t5 := $1_ristretto255_point_clone($t4); + if ($abort_flag) { + assume {:print "$at(138,7625,7660)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,3):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := pack ristretto255_elgamal::Ciphertext($t2, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:185:9+132 + assume {:print "$at(138,7539,7671)"} true; + $t6 := $1_ristretto255_elgamal_Ciphertext($t2, $t5); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:185:9+132 + assume {:print "$track_return(100,3,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:189:5+1 + assume {:print "$at(138,7676,7677)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:189:5+1 + assume {:print "$at(138,7676,7677)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:189:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:189:5+1 + assume {:print "$at(138,7676,7677)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_equals [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:192:5+197 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_equals$verify(_$t0: $1_ristretto255_elgamal_Ciphertext, _$t1: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t8: $1_ristretto255_RistrettoPoint; + var $t9: $1_ristretto255_RistrettoPoint; + var $t10: bool; + var $t11: bool; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $t1: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:192:5+1 + assume {:print "$at(138,7780,7781)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:192:5+1 + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:192:5+1 + assume {:print "$track_local(100,4,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:192:5+1 + assume {:print "$track_local(100,4,1):", $t1} $t1 == $t1; + + // $t3 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:36+9 + assume {:print "$at(138,7888,7897)"} true; + $t3 := $t0->$left; + + // $t4 := get_field.left($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:47+9 + $t4 := $t1->$left; + + // $t5 := opaque begin: ristretto255::point_equals($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + havoc $t6; + + // if ($t6) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + if ($t6) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 +L6: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + assume {:print "$at(138,7861,7909)"} true; + assume {:print "$track_abort(100,4):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 +L5: + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + assume {:print "$at(138,7861,7909)"} true; + assume $IsValid'bool'($t5); + + // $t5 := opaque end: ristretto255::point_equals($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+48 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:37+3 + assume {:print "$at(138,7949,7952)"} true; +L1: + + // $t8 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:36+10 + assume {:print "$at(138,7948,7958)"} true; + $t8 := $t0->$right; + + // $t9 := get_field.right($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:48+10 + $t9 := $t1->$right; + + // $t2 := opaque begin: ristretto255::point_equals($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + havoc $t10; + + // if ($t10) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + if ($t10) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 +L8: + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + assume {:print "$at(138,7921,7971)"} true; + assume {:print "$track_abort(100,4):", $t7} $t7 == $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + goto L4; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 +L7: + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + assume {:print "$at(138,7921,7971)"} true; + assume $IsValid'bool'($t2); + + // $t2 := opaque end: ristretto255::point_equals($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:194:9+50 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 + assume {:print "$at(138,7861,7971)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 +L0: + + // $t11 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 + assume {:print "$at(138,7861,7971)"} true; + $t11 := false; + assume $IsValid'bool'($t11); + + // $t2 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 + $t2 := $t11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:193:9+110 + assume {:print "$at(138,7861,7971)"} true; + assume {:print "$track_return(100,4,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:195:5+1 + assume {:print "$at(138,7976,7977)"} true; +L3: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:195:5+1 + assume {:print "$at(138,7976,7977)"} true; + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:195:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:195:5+1 + assume {:print "$at(138,7976,7977)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_from_compressed_points [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:109:5+207 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_from_compressed_points$verify(_$t0: $1_ristretto255_CompressedRistretto, _$t1: $1_ristretto255_CompressedRistretto) returns ($ret0: $1_ristretto255_elgamal_CompressedCiphertext) +{ + // declare local variables + var $t2: $1_ristretto255_elgamal_CompressedCiphertext; + var $t0: $1_ristretto255_CompressedRistretto; + var $t1: $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_elgamal_CompressedCiphertext': $1_ristretto255_elgamal_CompressedCiphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:109:5+1 + assume {:print "$at(138,4297,4298)"} true; + assume $IsValid'$1_ristretto255_CompressedRistretto'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:109:5+1 + assume $IsValid'$1_ristretto255_CompressedRistretto'($t1); + + // trace_local[left]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:109:5+1 + assume {:print "$track_local(100,5,0):", $t0} $t0 == $t0; + + // trace_local[right]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:109:5+1 + assume {:print "$track_local(100,5,1):", $t1} $t1 == $t1; + + // $t2 := pack ristretto255_elgamal::CompressedCiphertext($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:110:9+69 + assume {:print "$at(138,4429,4498)"} true; + $t2 := $1_ristretto255_elgamal_CompressedCiphertext($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:110:9+69 + assume {:print "$track_return(100,5,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:114:5+1 + assume {:print "$at(138,4503,4504)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:114:5+1 + assume {:print "$at(138,4503,4504)"} true; + $ret0 := $t2; + return; + +} + +// fun ristretto255_elgamal::ciphertext_from_points [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:101:5+166 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_from_points$verify(_$t0: $1_ristretto255_RistrettoPoint, _$t1: $1_ristretto255_RistrettoPoint) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t2: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_RistrettoPoint; + var $t1: $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:101:5+1 + assume {:print "$at(138,4044,4045)"} true; + assume $IsValid'$1_ristretto255_RistrettoPoint'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:101:5+1 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t1); + + // trace_local[left]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:101:5+1 + assume {:print "$track_local(100,6,0):", $t0} $t0 == $t0; + + // trace_local[right]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:101:5+1 + assume {:print "$track_local(100,6,1):", $t1} $t1 == $t1; + + // $t2 := pack ristretto255_elgamal::Ciphertext($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:102:9+59 + assume {:print "$at(138,4145,4204)"} true; + $t2 := $1_ristretto255_elgamal_Ciphertext($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:102:9+59 + assume {:print "$track_return(100,6,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:106:5+1 + assume {:print "$at(138,4209,4210)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:106:5+1 + assume {:print "$at(138,4209,4210)"} true; + $ret0 := $t2; + return; + +} + +// fun ristretto255_elgamal::ciphertext_into_points [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:127:5+156 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_into_points$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_RistrettoPoint, $ret1: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:127:5+1 + assume {:print "$at(138,5073,5074)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // trace_local[c]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:127:5+1 + assume {:print "$track_local(100,7,0):", $t0} $t0 == $t0; + + // ($t1, $t2) := unpack ristretto255_elgamal::Ciphertext($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:128:13+26 + assume {:print "$at(138,5170,5196)"} true; + $t1 := $t0->$left; + $t2 := $t0->$right; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:129:9+13 + assume {:print "$at(138,5210,5223)"} true; + assume {:print "$track_return(100,7,0):", $t1} $t1 == $t1; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:129:9+13 + assume {:print "$track_return(100,7,1):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:130:5+1 + assume {:print "$at(138,5228,5229)"} true; +L1: + + // return ($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:130:5+1 + assume {:print "$at(138,5228,5229)"} true; + $ret0 := $t1; + $ret1 := $t2; + return; + +} + +// fun ristretto255_elgamal::ciphertext_sub [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:170:5+245 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_sub$verify(_$t0: $1_ristretto255_elgamal_Ciphertext, _$t1: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: int; + var $t6: $1_ristretto255_RistrettoPoint; + var $t7: $1_ristretto255_RistrettoPoint; + var $t8: $1_ristretto255_RistrettoPoint; + var $t9: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $t1: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:170:5+1 + assume {:print "$at(138,6898,6899)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:170:5+1 + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:170:5+1 + assume {:print "$track_local(100,8,0):", $t0} $t0 == $t0; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:170:5+1 + assume {:print "$track_local(100,8,1):", $t1} $t1 == $t1; + + // $t2 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:172:43+9 + assume {:print "$at(138,7037,7046)"} true; + $t2 := $t0->$left; + + // $t3 := get_field.left($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:172:54+9 + $t3 := $t1->$left; + + // $t4 := ristretto255::point_sub($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:172:19+45 + call $t4 := $1_ristretto255_point_sub($t2, $t3); + if ($abort_flag) { + assume {:print "$at(138,7013,7058)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,8):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:173:44+10 + assume {:print "$at(138,7103,7113)"} true; + $t6 := $t0->$right; + + // $t7 := get_field.right($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:173:56+10 + $t7 := $t1->$right; + + // $t8 := ristretto255::point_sub($t6, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:173:20+47 + call $t8 := $1_ristretto255_point_sub($t6, $t7); + if ($abort_flag) { + assume {:print "$at(138,7079,7126)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,8):", $t5} $t5 == $t5; + goto L2; + } + + // $t9 := pack ristretto255_elgamal::Ciphertext($t4, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:171:9+155 + assume {:print "$at(138,6982,7137)"} true; + $t9 := $1_ristretto255_elgamal_Ciphertext($t4, $t8); + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:171:9+155 + assume {:print "$track_return(100,8,0):", $t9} $t9 == $t9; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:175:5+1 + assume {:print "$at(138,7142,7143)"} true; +L1: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:175:5+1 + assume {:print "$at(138,7142,7143)"} true; + $ret0 := $t9; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:175:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:175:5+1 + assume {:print "$at(138,7142,7143)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_sub_assign [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:178:5+214 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_sub_assign$verify(_$t0: $Mutation ($1_ristretto255_elgamal_Ciphertext), _$t1: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $Mutation ($1_ristretto255_elgamal_Ciphertext)) +{ + // declare local variables + var $t2: $Mutation ($1_ristretto255_RistrettoPoint); + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $Mutation ($1_ristretto255_RistrettoPoint); + var $t5: int; + var $t6: $Mutation ($1_ristretto255_RistrettoPoint); + var $t7: $1_ristretto255_RistrettoPoint; + var $t8: $Mutation ($1_ristretto255_RistrettoPoint); + var $t0: $Mutation ($1_ristretto255_elgamal_Ciphertext); + var $t1: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:178:5+1 + assume {:print "$at(138,7210,7211)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:178:5+1 + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t1); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:178:5+1 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,9,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // trace_local[rhs]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:178:5+1 + assume {:print "$track_local(100,9,1):", $t1} $t1 == $t1; + + // $t2 := borrow_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:40+13 + assume {:print "$at(138,7324,7337)"} true; + $t2 := $ChildMutation($t0, 0, $Dereference($t0)->$left); + + // $t3 := get_field.left($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:55+9 + $t3 := $t1->$left; + + // $t4 := ristretto255::point_sub_assign($t2, $t3) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:9+56 + call $t4,$t2 := $1_ristretto255_point_sub_assign($t2, $t3); + if ($abort_flag) { + assume {:print "$at(138,7293,7349)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,9):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).left (ristretto255::RistrettoPoint)]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:9+56 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_elgamal_Ciphertext'_left($Dereference($t0), $Dereference($t2))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:9+56 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,9,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:179:9+56 + + // $t6 := borrow_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:40+14 + assume {:print "$at(138,7390,7404)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$right); + + // $t7 := get_field.right($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:56+10 + $t7 := $t1->$right; + + // $t8 := ristretto255::point_sub_assign($t6, $t7) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:9+58 + call $t8,$t6 := $1_ristretto255_point_sub_assign($t6, $t7); + if ($abort_flag) { + assume {:print "$at(138,7359,7417)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(100,9):", $t5} $t5 == $t5; + goto L2; + } + + // write_back[Reference($t0).right (ristretto255::RistrettoPoint)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:9+58 + $t0 := $UpdateMutation($t0, $Update'$1_ristretto255_elgamal_Ciphertext'_right($Dereference($t0), $Dereference($t6))); + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:9+58 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,9,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:9+58 + + // trace_local[lhs]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:180:67+1 + $temp_0'$1_ristretto255_elgamal_Ciphertext' := $Dereference($t0); + assume {:print "$track_local(100,9,0):", $temp_0'$1_ristretto255_elgamal_Ciphertext'} $temp_0'$1_ristretto255_elgamal_Ciphertext' == $temp_0'$1_ristretto255_elgamal_Ciphertext'; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:181:5+1 + assume {:print "$at(138,7423,7424)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:181:5+1 + assume {:print "$at(138,7423,7424)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:181:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:181:5+1 + assume {:print "$at(138,7423,7424)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::ciphertext_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:117:5+421 +procedure {:timeLimit 80} $1_ristretto255_elgamal_ciphertext_to_bytes$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: Vec (int); + var $t4: Vec (int); + var $t5: Vec (int); + var $t6: $1_ristretto255_RistrettoPoint; + var $t7: $1_ristretto255_CompressedRistretto; + var $t8: int; + var $t9: Vec (int); + var $t10: $1_ristretto255_RistrettoPoint; + var $t11: $1_ristretto255_CompressedRistretto; + var $t12: Vec (int); + var $t13: $Mutation (Vec (int)); + var $t14: $Mutation (Vec (int)); + var $t15: Vec (int); + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:117:5+1 + assume {:print "$at(138,4582,4583)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // trace_local[ct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:117:5+1 + assume {:print "$track_local(100,10,0):", $t0} $t0 == $t0; + + // $t6 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:118:85+8 + assume {:print "$at(138,4728,4736)"} true; + $t6 := $t0->$left; + + // $t7 := ristretto255::point_compress($t6) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:118:56+38 + call $t7 := $1_ristretto255_point_compress($t6); + if ($abort_flag) { + assume {:print "$at(138,4699,4737)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // $t9 := ristretto255::point_to_bytes($t7) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:118:26+69 + call $t9 := $1_ristretto255_point_to_bytes($t7); + if ($abort_flag) { + assume {:print "$at(138,4669,4738)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[bytes_left]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:118:13+10 + assume {:print "$track_local(100,10,4):", $t9} $t9 == $t9; + + // $t10 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:119:86+9 + assume {:print "$at(138,4825,4834)"} true; + $t10 := $t0->$right; + + // $t11 := ristretto255::point_compress($t10) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:119:57+39 + call $t11 := $1_ristretto255_point_compress($t10); + if ($abort_flag) { + assume {:print "$at(138,4796,4835)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // $t12 := ristretto255::point_to_bytes($t11) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:119:27+70 + call $t12 := $1_ristretto255_point_to_bytes($t11); + if ($abort_flag) { + assume {:print "$at(138,4766,4836)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[bytes_right]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:119:13+11 + assume {:print "$track_local(100,10,5):", $t12} $t12 == $t12; + + // $t3 := vector::empty() on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:120:21+19 + assume {:print "$at(138,4858,4877)"} true; + call $t3 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(138,4858,4877)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:120:13+5 + assume {:print "$track_local(100,10,3):", $t3} $t3 == $t3; + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:121:28+10 + assume {:print "$at(138,4906,4916)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::append($t13, $t9) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:121:9+42 + call $t13 := $1_vector_append'u8'($t13, $t9); + if ($abort_flag) { + assume {:print "$at(138,4887,4929)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:121:9+42 + $t3 := $Dereference($t13); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:121:9+42 + assume {:print "$track_local(100,10,3):", $t3} $t3 == $t3; + + // $t14 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:122:28+10 + assume {:print "$at(138,4958,4968)"} true; + $t14 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::append($t14, $t12) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:122:9+43 + call $t14 := $1_vector_append'u8'($t14, $t12); + if ($abort_flag) { + assume {:print "$at(138,4939,4982)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,10):", $t8} $t8 == $t8; + goto L2; + } + + // write_back[LocalRoot($t3)@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:122:9+43 + $t3 := $Dereference($t14); + + // trace_local[bytes]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:122:9+43 + assume {:print "$track_local(100,10,3):", $t3} $t3 == $t3; + + // $t15 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:123:9+5 + assume {:print "$at(138,4992,4997)"} true; + $t15 := $t3; + + // trace_return[0]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:123:9+5 + assume {:print "$track_return(100,10,0):", $t15} $t15 == $t15; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:124:5+1 + assume {:print "$at(138,5002,5003)"} true; +L1: + + // return $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:124:5+1 + assume {:print "$at(138,5002,5003)"} true; + $ret0 := $t15; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:124:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:124:5+1 + assume {:print "$at(138,5002,5003)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::compress_ciphertext [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:138:5+208 +procedure {:timeLimit 80} $1_ristretto255_elgamal_compress_ciphertext$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_elgamal_CompressedCiphertext) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: $1_ristretto255_CompressedRistretto; + var $t3: int; + var $t4: $1_ristretto255_RistrettoPoint; + var $t5: $1_ristretto255_CompressedRistretto; + var $t6: $1_ristretto255_elgamal_CompressedCiphertext; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_CompressedCiphertext': $1_ristretto255_elgamal_CompressedCiphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:138:5+1 + assume {:print "$at(138,5512,5513)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // trace_local[ct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:138:5+1 + assume {:print "$track_local(100,11,0):", $t0} $t0 == $t0; + + // $t1 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:140:34+8 + assume {:print "$at(138,5648,5656)"} true; + $t1 := $t0->$left; + + // $t2 := ristretto255::point_compress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:140:19+24 + call $t2 := $1_ristretto255_point_compress($t1); + if ($abort_flag) { + assume {:print "$at(138,5633,5657)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:141:35+9 + assume {:print "$at(138,5693,5702)"} true; + $t4 := $t0->$right; + + // $t5 := ristretto255::point_compress($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:141:20+25 + call $t5 := $1_ristretto255_point_compress($t4); + if ($abort_flag) { + assume {:print "$at(138,5678,5703)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,11):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := pack ristretto255_elgamal::CompressedCiphertext($t2, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:139:9+122 + assume {:print "$at(138,5592,5714)"} true; + $t6 := $1_ristretto255_elgamal_CompressedCiphertext($t2, $t5); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:139:9+122 + assume {:print "$track_return(100,11,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:143:5+1 + assume {:print "$at(138,5719,5720)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:143:5+1 + assume {:print "$at(138,5719,5720)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:143:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:143:5+1 + assume {:print "$at(138,5719,5720)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::decompress_ciphertext [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:146:5+232 +procedure {:timeLimit 80} $1_ristretto255_elgamal_decompress_ciphertext$verify(_$t0: $1_ristretto255_elgamal_CompressedCiphertext) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: int; + var $t4: $1_ristretto255_CompressedRistretto; + var $t5: $1_ristretto255_RistrettoPoint; + var $t6: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_elgamal_CompressedCiphertext; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_elgamal_CompressedCiphertext': $1_ristretto255_elgamal_CompressedCiphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:146:5+1 + assume {:print "$at(138,5802,5803)"} true; + assume $IsValid'$1_ristretto255_elgamal_CompressedCiphertext'($t0); + + // trace_local[ct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:146:5+1 + assume {:print "$track_local(100,12,0):", $t0} $t0 == $t0; + + // $t1 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:148:50+8 + assume {:print "$at(138,5946,5954)"} true; + $t1 := $t0->$left; + + // $t2 := ristretto255::point_decompress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:148:19+40 + call $t2 := $1_ristretto255_point_decompress($t1); + if ($abort_flag) { + assume {:print "$at(138,5915,5955)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := get_field.right($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:149:51+9 + assume {:print "$at(138,6007,6016)"} true; + $t4 := $t0->$right; + + // $t5 := ristretto255::point_decompress($t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:149:20+41 + call $t5 := $1_ristretto255_point_decompress($t4); + if ($abort_flag) { + assume {:print "$at(138,5976,6017)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,12):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := pack ristretto255_elgamal::Ciphertext($t2, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:147:9+144 + assume {:print "$at(138,5884,6028)"} true; + $t6 := $1_ristretto255_elgamal_Ciphertext($t2, $t5); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:147:9+144 + assume {:print "$track_return(100,12,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:151:5+1 + assume {:print "$at(138,6033,6034)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:151:5+1 + assume {:print "$at(138,6033,6034)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:151:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:151:5+1 + assume {:print "$at(138,6033,6034)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::get_value_component [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:198:5+89 +procedure {:timeLimit 80} $1_ristretto255_elgamal_get_value_component$verify(_$t0: $1_ristretto255_elgamal_Ciphertext) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t0: $1_ristretto255_elgamal_Ciphertext; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:198:5+1 + assume {:print "$at(138,8090,8091)"} true; + assume $IsValid'$1_ristretto255_elgamal_Ciphertext'($t0); + + // trace_local[ct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:198:5+1 + assume {:print "$track_local(100,13,0):", $t0} $t0 == $t0; + + // $t1 := get_field.left($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:199:9+8 + assume {:print "$at(138,8165,8173)"} true; + $t1 := $t0->$left; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:199:9+8 + assume {:print "$track_return(100,13,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:200:5+1 + assume {:print "$at(138,8178,8179)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:200:5+1 + assume {:print "$at(138,8178,8179)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_elgamal::new_ciphertext_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:71:5+813 +procedure {:timeLimit 80} $1_ristretto255_elgamal_new_ciphertext_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_elgamal_Ciphertext') +{ + // declare local variables + var $t1: bool; + var $t2: $1_option_Option'$1_ristretto255_elgamal_Ciphertext'; + var $t3: Vec (int); + var $t4: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t5: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t6: Vec (int); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: $1_option_Option'$1_ristretto255_elgamal_Ciphertext'; + var $t12: $1_option_Option'$1_ristretto255_elgamal_Ciphertext'; + var $t13: $Mutation (Vec (int)); + var $t14: int; + var $t15: Vec (int); + var $t16: Vec (int); + var $t17: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t18: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t19: bool; + var $t20: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t21: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t22: bool; + var $t23: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t24: $1_ristretto255_RistrettoPoint; + var $t25: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t26: bool; + var $t27: $Mutation ($1_option_Option'$1_ristretto255_RistrettoPoint'); + var $t28: $1_ristretto255_RistrettoPoint; + var $t29: $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $t30: bool; + var $t31: $1_ristretto255_elgamal_Ciphertext; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint'': $1_option_Option'$1_ristretto255_RistrettoPoint'; + var $temp_0'$1_option_Option'$1_ristretto255_elgamal_Ciphertext'': $1_option_Option'$1_ristretto255_elgamal_Ciphertext'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:71:5+1 + assume {:print "$at(138,2781,2782)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:71:5+1 + assume {:print "$track_local(100,14,0):", $t0} $t0 == $t0; + + // $t6 := copy($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:72:27+6 + assume {:print "$at(138,2885,2891)"} true; + $t6 := $t0; + + // $t7 := vector::length($t6) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:72:12+22 + call $t7 := $1_vector_length'u8'($t6); + if ($abort_flag) { + assume {:print "$at(138,2870,2892)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + goto L9; + } + + // $t9 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:72:38+2 + $t9 := 64; + assume $IsValid'u64'($t9); + + // $t10 := !=($t7, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:72:35+2 + $t10 := !$IsEqual'u64'($t7, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:72:9+95 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:20+31 + assume {:print "$at(138,2921,2952)"} true; +L1: + + // $t11 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:20+31 + assume {:print "$at(138,2921,2952)"} true; + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:20+31 + assume ($IsValid'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:20+31 + assume $IsEqual'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t11, $1_option_spec_none'$1_ristretto255_elgamal_Ciphertext'()); + + // $t11 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:20+31 + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:13+38 + assume {:print "$track_return(100,14,0):", $t11} $t11 == $t11; + + // $t12 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:13+38 + $t12 := $t11; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:73:13+38 + goto L8; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:40+10 + assume {:print "$at(138,3004,3014)"} true; +L0: + + // $t13 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:40+10 + assume {:print "$at(138,3004,3014)"} true; + $t13 := $Mutation($Local(0), EmptyVec(), $t0); + + // $t14 := 32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:52+2 + $t14 := 32; + assume $IsValid'u64'($t14); + + // $t15 := vector::trim($t13, $t14) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:27+28 + call $t15,$t13 := $1_vector_trim'u8'($t13, $t14); + if ($abort_flag) { + assume {:print "$at(138,2991,3019)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + goto L9; + } + + // write_back[LocalRoot($t0)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:27+28 + $t0 := $Dereference($t13); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:27+28 + assume {:print "$track_local(100,14,0):", $t0} $t0 == $t0; + + // trace_local[bytes_right]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:76:13+11 + assume {:print "$track_local(100,14,3):", $t15} $t15 == $t15; + + // $t16 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:78:61+5 + assume {:print "$at(138,3082,3087)"} true; + $t16 := $t0; + + // $t4 := ristretto255::new_point_from_bytes($t16) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:78:26+41 + call $t4 := $1_ristretto255_new_point_from_bytes($t16); + if ($abort_flag) { + assume {:print "$at(138,3047,3088)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[left_point]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:78:13+10 + assume {:print "$track_local(100,14,4):", $t4} $t4 == $t4; + + // $t5 := ristretto255::new_point_from_bytes($t15) on_abort goto L9 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:79:27+47 + assume {:print "$at(138,3116,3163)"} true; + call $t5 := $1_ristretto255_new_point_from_bytes($t15); + if ($abort_flag) { + assume {:print "$at(138,3116,3163)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + goto L9; + } + + // trace_local[right_point]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:79:13+11 + assume {:print "$track_local(100,14,5):", $t5} $t5 == $t5; + + // $t17 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:50+15 + assume {:print "$at(138,3215,3230)"} true; + $t17 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:50+15 + $t18 := $Dereference($t17); + + // assert Le(Len(select option::Option.vec($t17)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t17)->$vec) <= 1); + + // trace_local[left_point]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:50+15 + assume {:print "$at(138,3215,3230)"} true; + assume {:print "$track_local(100,14,4):", $t4} $t4 == $t4; + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+53 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+53 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+53 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_ristretto255_RistrettoPoint'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+53 + + // if ($t19) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 + if ($t19) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:107+16 +L3: + + // $t20 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:107+16 + assume {:print "$at(138,3272,3288)"} true; + $t20 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t21 := read_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:107+16 + $t21 := $Dereference($t20); + + // assert Le(Len(select option::Option.vec($t20)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$vec) <= 1); + + // trace_local[right_point]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:107+16 + assume {:print "$at(138,3272,3288)"} true; + assume {:print "$track_local(100,14,5):", $t5} $t5 == $t5; + + // $t1 := opaque begin: option::is_some($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:70+54 + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:70+54 + assume $IsValid'bool'($t1); + + // assume Eq($t1, option::spec_is_some($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:70+54 + assume $IsEqual'bool'($t1, $1_option_spec_is_some'$1_ristretto255_RistrettoPoint'($t21)); + + // $t1 := opaque end: option::is_some($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:70+54 + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 +L2: + + // $t22 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 + assume {:print "$at(138,3178,3289)"} true; + $t22 := false; + assume $IsValid'bool'($t22); + + // $t1 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 + $t1 := $t22; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:13+111 +L4: + + // if ($t1) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:9+414 + assume {:print "$at(138,3174,3588)"} true; + if ($t1) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:60+15 + assume {:print "$at(138,3407,3422)"} true; +L6: + + // $t23 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:60+15 + assume {:print "$at(138,3407,3422)"} true; + $t23 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t24 := opaque begin: option::extract($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + + // $t25 := read_ref($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + $t25 := $Dereference($t23); + + // assume Identical($t26, option::spec_is_none($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume ($t26 == $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t23))); + + // if ($t26) goto L11 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + if ($t26) { goto L11; } else { goto L14; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 +L11: + + // assume And(option::spec_is_none($t23), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume {:print "$at(138,3370,3423)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t23)) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume {:print "$at(138,3370,3423)"} true; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + goto L9; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 +L10: + + // $t23 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume {:print "$at(138,3370,3423)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''; + $t23 := $UpdateMutation($t23, $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''); + + // assume And(WellFormed($t23), Le(Len(select option::Option.vec($t23)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($Dereference($t23)) && (LenVec($Dereference($t23)->$vec) <= 1)); + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t24); + + // assume Eq($t24, option::spec_borrow($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume $IsEqual'$1_ristretto255_RistrettoPoint'($t24, $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'($t25)); + + // assume option::spec_is_none($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t23)); + + // $t24 := opaque end: option::extract($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + + // assert Le(Len(select option::Option.vec($t23)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t23)->$vec) <= 1); + + // write_back[LocalRoot($t4)@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume {:print "$at(138,3370,3423)"} true; + $t4 := $Dereference($t23); + + // trace_local[left_point]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:83:23+53 + assume {:print "$track_local(100,14,4):", $t4} $t4 == $t4; + + // $t27 := borrow_local($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:61+16 + assume {:print "$at(138,3485,3501)"} true; + $t27 := $Mutation($Local(5), EmptyVec(), $t5); + + // $t28 := opaque begin: option::extract($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + + // $t29 := read_ref($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + $t29 := $Dereference($t27); + + // assume Identical($t30, option::spec_is_none($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume ($t30 == $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t27))); + + // if ($t30) goto L13 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + if ($t30) { goto L13; } else { goto L15; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 +L13: + + // assume And(option::spec_is_none($t27), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume {:print "$at(138,3448,3502)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t27)) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume {:print "$at(138,3448,3502)"} true; + assume {:print "$track_abort(100,14):", $t8} $t8 == $t8; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + goto L9; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 +L12: + + // $t27 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume {:print "$at(138,3448,3502)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''; + $t27 := $UpdateMutation($t27, $temp_0'$1_option_Option'$1_ristretto255_RistrettoPoint''); + + // assume And(WellFormed($t27), Le(Len(select option::Option.vec($t27)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume ($IsValid'$1_option_Option'$1_ristretto255_RistrettoPoint''($Dereference($t27)) && (LenVec($Dereference($t27)->$vec) <= 1)); + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume $IsValid'$1_ristretto255_RistrettoPoint'($t28); + + // assume Eq($t28, option::spec_borrow($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume $IsEqual'$1_ristretto255_RistrettoPoint'($t28, $1_option_spec_borrow'$1_ristretto255_RistrettoPoint'($t29)); + + // assume option::spec_is_none($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume $1_option_spec_is_none'$1_ristretto255_RistrettoPoint'($Dereference($t27)); + + // $t28 := opaque end: option::extract($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + + // assert Le(Len(select option::Option.vec($t27)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t27)->$vec) <= 1); + + // write_back[LocalRoot($t5)@]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume {:print "$at(138,3448,3502)"} true; + $t5 := $Dereference($t27); + + // trace_local[right_point]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:84:24+54 + assume {:print "$track_local(100,14,5):", $t5} $t5 == $t5; + + // $t31 := pack ristretto255_elgamal::Ciphertext($t24, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:82:43+181 + assume {:print "$at(138,3335,3516)"} true; + $t31 := $1_ristretto255_elgamal_Ciphertext($t24, $t28); + + // $t2 := opaque begin: option::some($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:82:13+212 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:82:13+212 + assume ($IsValid'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:82:13+212 + assume $IsEqual'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t2, $1_option_spec_some'$1_ristretto255_elgamal_Ciphertext'($t31)); + + // $t2 := opaque end: option::some($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:82:13+212 + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:9+414 + assume {:print "$at(138,3174,3588)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:87:13+31 + assume {:print "$at(138,3547,3578)"} true; +L5: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:87:13+31 + assume {:print "$at(138,3547,3578)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:87:13+31 + assume ($IsValid'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:87:13+31 + assume $IsEqual'$1_option_Option'$1_ristretto255_elgamal_Ciphertext''($t2, $1_option_spec_none'$1_ristretto255_elgamal_Ciphertext'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:87:13+31 + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:9+414 + assume {:print "$at(138,3174,3588)"} true; +L7: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:9+414 + assume {:print "$at(138,3174,3588)"} true; + assume {:print "$track_return(100,14,0):", $t2} $t2 == $t2; + + // $t12 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:81:9+414 + $t12 := $t2; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:89:5+1 + assume {:print "$at(138,3593,3594)"} true; +L8: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:89:5+1 + assume {:print "$at(138,3593,3594)"} true; + $ret0 := $t12; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:89:5+1 +L9: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:89:5+1 + assume {:print "$at(138,3593,3594)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L14 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L14: + + // drop($t23) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + + // label L15 at :1:1+10 +L15: + + // drop($t27) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + +} + +// fun ristretto255_elgamal::new_ciphertext_no_randomness [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:93:5+207 +procedure {:timeLimit 80} $1_ristretto255_elgamal_new_ciphertext_no_randomness$verify(_$t0: $1_ristretto255_Scalar) returns ($ret0: $1_ristretto255_elgamal_Ciphertext) +{ + // declare local variables + var $t1: $1_ristretto255_RistrettoPoint; + var $t2: int; + var $t3: $1_ristretto255_RistrettoPoint; + var $t4: $1_ristretto255_elgamal_Ciphertext; + var $t0: $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_Scalar': $1_ristretto255_Scalar; + var $temp_0'$1_ristretto255_elgamal_Ciphertext': $1_ristretto255_elgamal_Ciphertext; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:93:5+1 + assume {:print "$at(138,3762,3763)"} true; + assume $IsValid'$1_ristretto255_Scalar'($t0); + + // trace_local[val]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:93:5+1 + assume {:print "$track_local(100,15,0):", $t0} $t0 == $t0; + + // $t1 := ristretto255::basepoint_mul($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:95:19+32 + assume {:print "$at(138,3869,3901)"} true; + call $t1 := $1_ristretto255_basepoint_mul($t0); + if ($abort_flag) { + assume {:print "$at(138,3869,3901)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(100,15):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := ristretto255::point_identity() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:96:20+30 + assume {:print "$at(138,3922,3952)"} true; + call $t3 := $1_ristretto255_point_identity(); + if ($abort_flag) { + assume {:print "$at(138,3922,3952)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(100,15):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := pack ristretto255_elgamal::Ciphertext($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:94:9+125 + assume {:print "$at(138,3838,3963)"} true; + $t4 := $1_ristretto255_elgamal_Ciphertext($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:94:9+125 + assume {:print "$track_return(100,15,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:98:5+1 + assume {:print "$at(138,3968,3969)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:98:5+1 + assume {:print "$at(138,3968,3969)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:98:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:98:5+1 + assume {:print "$at(138,3968,3969)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::new_pubkey_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:42:5+429 +procedure {:timeLimit 80} $1_ristretto255_elgamal_new_pubkey_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey') +{ + // declare local variables + var $t1: $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'; + var $t2: $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $t3: int; + var $t4: $Mutation ($1_option_Option'$1_ristretto255_CompressedRistretto'); + var $t5: $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $t6: bool; + var $t7: $Mutation ($1_option_Option'$1_ristretto255_CompressedRistretto'); + var $t8: $1_ristretto255_CompressedRistretto; + var $t9: $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $t10: bool; + var $t11: $1_ristretto255_elgamal_CompressedPubkey; + var $t0: Vec (int); + var $temp_0'$1_option_Option'$1_ristretto255_CompressedRistretto'': $1_option_Option'$1_ristretto255_CompressedRistretto'; + var $temp_0'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'': $1_option_Option'$1_ristretto255_elgamal_CompressedPubkey'; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:42:5+1 + assume {:print "$at(138,1457,1458)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:42:5+1 + assume {:print "$track_local(100,16,0):", $t0} $t0 == $t0; + + // $t2 := ristretto255::new_compressed_point_from_bytes($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:43:21+52 + assume {:print "$at(138,1557,1609)"} true; + call $t2 := $1_ristretto255_new_compressed_point_from_bytes($t0); + if ($abort_flag) { + assume {:print "$at(138,1557,1609)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,16):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:43:13+5 + assume {:print "$track_local(100,16,2):", $t2} $t2 == $t2; + + // $t4 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:34+10 + assume {:print "$at(138,1644,1654)"} true; + $t4 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t5 := read_ref($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:34+10 + $t5 := $Dereference($t4); + + // assert Le(Len(select option::Option.vec($t4)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t4)->$vec) <= 1); + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:34+10 + assume {:print "$at(138,1644,1654)"} true; + assume {:print "$track_local(100,16,2):", $t2} $t2 == $t2; + + // $t6 := opaque begin: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:13+32 + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:13+32 + assume $IsValid'bool'($t6); + + // assume Eq($t6, option::spec_is_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:13+32 + assume $IsEqual'bool'($t6, $1_option_spec_is_some'$1_ristretto255_CompressedRistretto'($t5)); + + // $t6 := opaque end: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:13+32 + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:9+261 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:45+10 + assume {:print "$at(138,1743,1753)"} true; +L1: + + // $t7 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:45+10 + assume {:print "$at(138,1743,1753)"} true; + $t7 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t8 := opaque begin: option::extract($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + + // $t9 := read_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + $t9 := $Dereference($t7); + + // assume Identical($t10, option::spec_is_none($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume ($t10 == $1_option_spec_is_none'$1_ristretto255_CompressedRistretto'($Dereference($t7))); + + // if ($t10) goto L6 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + if ($t10) { goto L6; } else { goto L7; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 +L6: + + // assume And(option::spec_is_none($t7), Eq(262145, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume {:print "$at(138,1722,1754)"} true; + assume ($1_option_spec_is_none'$1_ristretto255_CompressedRistretto'($Dereference($t7)) && $IsEqual'num'(262145, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume {:print "$at(138,1722,1754)"} true; + assume {:print "$track_abort(100,16):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 +L5: + + // $t7 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume {:print "$at(138,1722,1754)"} true; + havoc $temp_0'$1_option_Option'$1_ristretto255_CompressedRistretto''; + $t7 := $UpdateMutation($t7, $temp_0'$1_option_Option'$1_ristretto255_CompressedRistretto''); + + // assume And(WellFormed($t7), Le(Len(select option::Option.vec($t7)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume ($IsValid'$1_option_Option'$1_ristretto255_CompressedRistretto''($Dereference($t7)) && (LenVec($Dereference($t7)->$vec) <= 1)); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume $IsValid'$1_ristretto255_CompressedRistretto'($t8); + + // assume Eq($t8, option::spec_borrow($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume $IsEqual'$1_ristretto255_CompressedRistretto'($t8, $1_option_spec_borrow'$1_ristretto255_CompressedRistretto'($t9)); + + // assume option::spec_is_none($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume $1_option_spec_is_none'$1_ristretto255_CompressedRistretto'($Dereference($t7)); + + // $t8 := opaque end: option::extract($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + + // assert Le(Len(select option::Option.vec($t7)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t7)->$vec) <= 1); + + // write_back[LocalRoot($t2)@]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume {:print "$at(138,1722,1754)"} true; + $t2 := $Dereference($t7); + + // trace_local[point]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:46:24+32 + assume {:print "$track_local(100,16,2):", $t2} $t2 == $t2; + + // $t11 := pack ristretto255_elgamal::CompressedPubkey($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:45:22+88 + assume {:print "$at(138,1680,1768)"} true; + $t11 := $1_ristretto255_elgamal_CompressedPubkey($t8); + + // $t1 := opaque begin: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:48:13+21 + assume {:print "$at(138,1782,1803)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:48:13+21 + assume ($IsValid'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_some($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:48:13+21 + assume $IsEqual'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''($t1, $1_option_spec_some'$1_ristretto255_elgamal_CompressedPubkey'($t11)); + + // $t1 := opaque end: option::some($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:48:13+21 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:9+261 + assume {:print "$at(138,1619,1880)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:50:13+37 + assume {:print "$at(138,1833,1870)"} true; +L0: + + // $t1 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:50:13+37 + assume {:print "$at(138,1833,1870)"} true; + + // assume And(WellFormed($t1), Le(Len(select option::Option.vec($t1)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:50:13+37 + assume ($IsValid'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''($t1) && (LenVec($t1->$vec) <= 1)); + + // assume Eq>($t1, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:50:13+37 + assume $IsEqual'$1_option_Option'$1_ristretto255_elgamal_CompressedPubkey''($t1, $1_option_spec_none'$1_ristretto255_elgamal_CompressedPubkey'()); + + // $t1 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:50:13+37 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:9+261 + assume {:print "$at(138,1619,1880)"} true; +L2: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:44:9+261 + assume {:print "$at(138,1619,1880)"} true; + assume {:print "$track_return(100,16,0):", $t1} $t1 == $t1; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:52:5+1 + assume {:print "$at(138,1885,1886)"} true; +L3: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:52:5+1 + assume {:print "$at(138,1885,1886)"} true; + $ret0 := $t1; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:52:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:52:5+1 + assume {:print "$at(138,1885,1886)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t7) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun ristretto255_elgamal::pubkey_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:55:5+135 +procedure {:timeLimit 80} $1_ristretto255_elgamal_pubkey_to_bytes$verify(_$t0: $1_ristretto255_elgamal_CompressedPubkey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t2: Vec (int); + var $t3: int; + var $t0: $1_ristretto255_elgamal_CompressedPubkey; + var $temp_0'$1_ristretto255_elgamal_CompressedPubkey': $1_ristretto255_elgamal_CompressedPubkey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:55:5+1 + assume {:print "$at(138,1990,1991)"} true; + assume $IsValid'$1_ristretto255_elgamal_CompressedPubkey'($t0); + + // trace_local[pubkey]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:55:5+1 + assume {:print "$track_local(100,17,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:56:49+12 + assume {:print "$at(138,2106,2118)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::compressed_point_to_bytes($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:56:9+53 + call $t2 := $1_ristretto255_compressed_point_to_bytes($t1); + if ($abort_flag) { + assume {:print "$at(138,2066,2119)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,17):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:56:9+53 + assume {:print "$track_return(100,17,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:57:5+1 + assume {:print "$at(138,2124,2125)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:57:5+1 + assume {:print "$at(138,2124,2125)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:57:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:57:5+1 + assume {:print "$at(138,2124,2125)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun ristretto255_elgamal::pubkey_to_compressed_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:65:5+114 +procedure {:timeLimit 80} $1_ristretto255_elgamal_pubkey_to_compressed_point$verify(_$t0: $1_ristretto255_elgamal_CompressedPubkey) returns ($ret0: $1_ristretto255_CompressedRistretto) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t0: $1_ristretto255_elgamal_CompressedPubkey; + var $temp_0'$1_ristretto255_CompressedRistretto': $1_ristretto255_CompressedRistretto; + var $temp_0'$1_ristretto255_elgamal_CompressedPubkey': $1_ristretto255_elgamal_CompressedPubkey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:65:5+1 + assume {:print "$at(138,2470,2471)"} true; + assume $IsValid'$1_ristretto255_elgamal_CompressedPubkey'($t0); + + // trace_local[pubkey]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:65:5+1 + assume {:print "$track_local(100,18,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:66:9+12 + assume {:print "$at(138,2566,2578)"} true; + $t1 := $t0->$point; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:66:9+12 + assume {:print "$track_return(100,18,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:67:5+1 + assume {:print "$at(138,2583,2584)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:67:5+1 + assume {:print "$at(138,2583,2584)"} true; + $ret0 := $t1; + return; + +} + +// fun ristretto255_elgamal::pubkey_to_point [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:60:5+131 +procedure {:timeLimit 80} $1_ristretto255_elgamal_pubkey_to_point$verify(_$t0: $1_ristretto255_elgamal_CompressedPubkey) returns ($ret0: $1_ristretto255_RistrettoPoint) +{ + // declare local variables + var $t1: $1_ristretto255_CompressedRistretto; + var $t2: $1_ristretto255_RistrettoPoint; + var $t3: int; + var $t0: $1_ristretto255_elgamal_CompressedPubkey; + var $temp_0'$1_ristretto255_RistrettoPoint': $1_ristretto255_RistrettoPoint; + var $temp_0'$1_ristretto255_elgamal_CompressedPubkey': $1_ristretto255_elgamal_CompressedPubkey; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:60:5+1 + assume {:print "$at(138,2231,2232)"} true; + assume $IsValid'$1_ristretto255_elgamal_CompressedPubkey'($t0); + + // trace_local[pubkey]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:60:5+1 + assume {:print "$track_local(100,19,0):", $t0} $t0 == $t0; + + // $t1 := get_field.point($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:61:40+13 + assume {:print "$at(138,2342,2355)"} true; + $t1 := $t0->$point; + + // $t2 := ristretto255::point_decompress($t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:61:9+45 + call $t2 := $1_ristretto255_point_decompress($t1); + if ($abort_flag) { + assume {:print "$at(138,2311,2356)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(100,19):", $t3} $t3 == $t3; + goto L2; + } + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:61:9+45 + assume {:print "$track_return(100,19,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:62:5+1 + assume {:print "$at(138,2361,2362)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:62:5+1 + assume {:print "$at(138,2361,2362)"} true; + $ret0 := $t2; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:62:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/ristretto255_elgamal.move:62:5+1 + assume {:print "$at(138,2361,2362)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:46:10+110 +function $1_secp256k1_ecdsa_recover_internal_abort_condition(message: Vec (int), recovery_id: int, signature: Vec (int)): bool; +axiom (forall message: Vec (int), recovery_id: int, signature: Vec (int) :: +(var $$res := $1_secp256k1_ecdsa_recover_internal_abort_condition(message, recovery_id, signature); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:47:10+114 +function $1_secp256k1_spec_ecdsa_recover_internal_result_1(message: Vec (int), recovery_id: int, signature: Vec (int)): Vec (int); +axiom (forall message: Vec (int), recovery_id: int, signature: Vec (int) :: +(var $$res := $1_secp256k1_spec_ecdsa_recover_internal_result_1(message, recovery_id, signature); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:48:10+108 +function $1_secp256k1_spec_ecdsa_recover_internal_result_2(message: Vec (int), recovery_id: int, signature: Vec (int)): bool; +axiom (forall message: Vec (int), recovery_id: int, signature: Vec (int) :: +(var $$res := $1_secp256k1_spec_ecdsa_recover_internal_result_2(message, recovery_id, signature); +$IsValid'bool'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+246 +function {:inline} $1_secp256k1_$ecdsa_raw_public_key_from_64_bytes(bytes: Vec (int)): $1_secp256k1_ECDSARawPublicKey { + $1_secp256k1_ECDSARawPublicKey(bytes) +} + +// struct secp256k1::ECDSARawPublicKey at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:19:5+80 +datatype $1_secp256k1_ECDSARawPublicKey { + $1_secp256k1_ECDSARawPublicKey($bytes: Vec (int)) +} +function {:inline} $Update'$1_secp256k1_ECDSARawPublicKey'_bytes(s: $1_secp256k1_ECDSARawPublicKey, x: Vec (int)): $1_secp256k1_ECDSARawPublicKey { + $1_secp256k1_ECDSARawPublicKey(x) +} +function $IsValid'$1_secp256k1_ECDSARawPublicKey'(s: $1_secp256k1_ECDSARawPublicKey): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_secp256k1_ECDSARawPublicKey'(s1: $1_secp256k1_ECDSARawPublicKey, s2: $1_secp256k1_ECDSARawPublicKey): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// struct secp256k1::ECDSASignature at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:24:5+77 +datatype $1_secp256k1_ECDSASignature { + $1_secp256k1_ECDSASignature($bytes: Vec (int)) +} +function {:inline} $Update'$1_secp256k1_ECDSASignature'_bytes(s: $1_secp256k1_ECDSASignature, x: Vec (int)): $1_secp256k1_ECDSASignature { + $1_secp256k1_ECDSASignature(x) +} +function $IsValid'$1_secp256k1_ECDSASignature'(s: $1_secp256k1_ECDSASignature): bool { + $IsValid'vec'u8''(s->$bytes) +} +function {:inline} $IsEqual'$1_secp256k1_ECDSASignature'(s1: $1_secp256k1_ECDSASignature, s2: $1_secp256k1_ECDSASignature): bool { + $IsEqual'vec'u8''(s1->$bytes, s2->$bytes)} + +// fun secp256k1::ecdsa_raw_public_key_from_64_bytes [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+246 +procedure {:inline 1} $1_secp256k1_ecdsa_raw_public_key_from_64_bytes(_$t0: Vec (int)) returns ($ret0: $1_secp256k1_ECDSARawPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_secp256k1_ECDSARawPublicKey; + var $t0: Vec (int); + var $temp_0'$1_secp256k1_ECDSARawPublicKey': $1_secp256k1_ECDSARawPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+1 + assume {:print "$at(142,1339,1340)"} true; + assume {:print "$track_local(101,0,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:17+27 + assume {:print "$at(142,1441,1468)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(142,1441,1468)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,0):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:48+24 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + assume {:print "$at(142,1433,1542)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:103+13 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:103+13 + assume {:print "$at(142,1527,1540)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:74+43 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(142,1498,1541)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + assume {:print "$at(142,1433,1542)"} true; + assume {:print "$track_abort(101,0):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:29+5 + assume {:print "$at(142,1572,1577)"} true; +L2: + + // $t7 := pack secp256k1::ECDSARawPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:9+27 + assume {:print "$at(142,1552,1579)"} true; + $t7 := $1_secp256k1_ECDSARawPublicKey($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:9+27 + assume {:print "$track_return(101,0,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 + assume {:print "$at(142,1584,1585)"} true; +L3: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 + assume {:print "$at(142,1584,1585)"} true; + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 + assume {:print "$at(142,1584,1585)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun secp256k1::ecdsa_raw_public_key_from_64_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+246 +procedure {:timeLimit 80} $1_secp256k1_ecdsa_raw_public_key_from_64_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_secp256k1_ECDSARawPublicKey) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_secp256k1_ECDSARawPublicKey; + var $t0: Vec (int); + var $temp_0'$1_secp256k1_ECDSARawPublicKey': $1_secp256k1_ECDSARawPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+1 + assume {:print "$at(142,1339,1340)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:35:5+1 + assume {:print "$track_local(101,0,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:17+27 + assume {:print "$at(142,1441,1468)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(142,1441,1468)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,0):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:48+24 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + assume {:print "$at(142,1433,1542)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:103+13 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:103+13 + assume {:print "$at(142,1527,1540)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:74+43 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(142,1498,1541)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,0):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + assume {:print "$at(142,1433,1542)"} true; + assume {:print "$track_abort(101,0):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:36:9+109 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:29+5 + assume {:print "$at(142,1572,1577)"} true; +L2: + + // $t7 := pack secp256k1::ECDSARawPublicKey($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:9+27 + assume {:print "$at(142,1552,1579)"} true; + $t7 := $1_secp256k1_ECDSARawPublicKey($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:37:9+27 + assume {:print "$track_return(101,0,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 + assume {:print "$at(142,1584,1585)"} true; +L3: + + // assert Not(Neq(Len($t0), 64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:8:9+49 + assume {:print "$at(143,308,357)"} true; + assert {:msg "assert_failed(143,308,357): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), 64); + + // assert Eq($t7, pack secp256k1::ECDSARawPublicKey($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:9:9+46 + assume {:print "$at(143,366,412)"} true; + assert {:msg "assert_failed(143,366,412): post-condition does not hold"} + $IsEqual'$1_secp256k1_ECDSARawPublicKey'($t7, $1_secp256k1_ECDSARawPublicKey($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:9:9+46 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:38:5+1 + assume {:print "$at(142,1584,1585)"} true; +L4: + + // assert Neq(Len($t0), 64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:7:5+198 + assume {:print "$at(143,220,418)"} true; + assert {:msg "assert_failed(143,220,418): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'(LenVec($t0), 64); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:7:5+198 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun secp256k1::ecdsa_raw_public_key_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:41:5+101 +procedure {:timeLimit 80} $1_secp256k1_ecdsa_raw_public_key_to_bytes$verify(_$t0: $1_secp256k1_ECDSARawPublicKey) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_secp256k1_ECDSARawPublicKey; + var $temp_0'$1_secp256k1_ECDSARawPublicKey': $1_secp256k1_ECDSARawPublicKey; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:41:5+1 + assume {:print "$at(142,1651,1652)"} true; + assume $IsValid'$1_secp256k1_ECDSARawPublicKey'($t0); + + // trace_local[pk]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:41:5+1 + assume {:print "$track_local(101,1,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:42:9+8 + assume {:print "$at(142,1738,1746)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:42:9+8 + assume {:print "$track_return(101,1,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:43:5+1 + assume {:print "$at(142,1751,1752)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:13:9+16 + assume {:print "$at(143,505,521)"} true; + assert {:msg "assert_failed(143,505,521): function does not abort under this condition"} + !false; + + // assert Eq>($t1, select secp256k1::ECDSARawPublicKey.bytes($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:14:9+27 + assume {:print "$at(143,530,557)"} true; + assert {:msg "assert_failed(143,530,557): post-condition does not hold"} + $IsEqual'vec'u8''($t1, $t0->$bytes); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:14:9+27 + $ret0 := $t1; + return; + +} + +// fun secp256k1::ecdsa_recover [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+418 +procedure {:timeLimit 80} $1_secp256k1_ecdsa_recover$verify(_$t0: Vec (int), _$t1: int, _$t2: $1_secp256k1_ECDSASignature) returns ($ret0: $1_option_Option'$1_secp256k1_ECDSARawPublicKey') +{ + // declare local variables + var $t3: $1_option_Option'$1_secp256k1_ECDSARawPublicKey'; + var $t4: Vec (int); + var $t5: bool; + var $t6: Vec (int); + var $t7: bool; + var $t8: Vec (int); + var $t9: Vec (int); + var $t10: bool; + var $t11: bool; + var $t12: int; + var $t13: $1_secp256k1_ECDSARawPublicKey; + var $t0: Vec (int); + var $t1: int; + var $t2: $1_secp256k1_ECDSASignature; + var $temp_0'$1_option_Option'$1_secp256k1_ECDSARawPublicKey'': $1_option_Option'$1_secp256k1_ECDSARawPublicKey'; + var $temp_0'$1_secp256k1_ECDSASignature': $1_secp256k1_ECDSASignature; + var $temp_0'bool': bool; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume {:print "$at(142,2378,2379)"} true; + assume $IsValid'vec'u8''($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume $IsValid'u8'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume $IsValid'$1_secp256k1_ECDSASignature'($t2); + + // assume Identical($t6, secp256k1::spec_ecdsa_recover_internal_result_1($t0, $t1, select secp256k1::ECDSASignature.bytes($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:28:9+85 + assume {:print "$at(143,958,1043)"} true; + assume ($t6 == $1_secp256k1_spec_ecdsa_recover_internal_result_1($t0, $t1, $t2->$bytes)); + + // assume Identical($t7, secp256k1::spec_ecdsa_recover_internal_result_2($t0, $t1, select secp256k1::ECDSASignature.bytes($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:29:9+90 + assume {:print "$at(143,1052,1142)"} true; + assume ($t7 == $1_secp256k1_spec_ecdsa_recover_internal_result_2($t0, $t1, $t2->$bytes)); + + // trace_local[message]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume {:print "$at(142,2378,2379)"} true; + assume {:print "$track_local(101,2,0):", $t0} $t0 == $t0; + + // trace_local[recovery_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume {:print "$track_local(101,2,1):", $t1} $t1 == $t1; + + // trace_local[signature]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:56:5+1 + assume {:print "$track_local(101,2,2):", $t2} $t2 == $t2; + + // $t8 := get_field.bytes($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:74+15 + assume {:print "$at(142,2602,2617)"} true; + $t8 := $t2->$bytes; + + // ($t9, $t10) := opaque begin: secp256k1::ecdsa_recover_internal($t0, $t1, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + + // assume Identical($t11, secp256k1::ecdsa_recover_internal_abort_condition($t0, $t1, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume ($t11 == $1_secp256k1_ecdsa_recover_internal_abort_condition($t0, $t1, $t8)); + + // if ($t11) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + if ($t11) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 +L6: + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume {:print "$at(142,2557,2618)"} true; + assume {:print "$track_abort(101,2):", $t12} $t12 == $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 +L5: + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume {:print "$at(142,2557,2618)"} true; + assume $IsValid'vec'u8''($t9); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume $IsValid'bool'($t10); + + // assume Eq>($t9, secp256k1::spec_ecdsa_recover_internal_result_1($t0, $t1, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume $IsEqual'vec'u8''($t9, $1_secp256k1_spec_ecdsa_recover_internal_result_1($t0, $t1, $t8)); + + // assume Eq($t10, secp256k1::spec_ecdsa_recover_internal_result_2($t0, $t1, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume $IsEqual'bool'($t10, $1_secp256k1_spec_ecdsa_recover_internal_result_2($t0, $t1, $t8)); + + // assume Eq(Len($t9), if $t10 { + // 64 + // } else { + // 0 + // }) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + assume $IsEqual'num'(LenVec($t9), (if ($t10) then (64) else (0))); + + // ($t9, $t10) := opaque end: secp256k1::ecdsa_recover_internal($t0, $t1, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:29+61 + + // trace_local[success]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:18+7 + assume {:print "$track_local(101,2,5):", $t10} $t10 == $t10; + + // trace_local[pk]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:61:14+2 + assume {:print "$track_local(101,2,4):", $t9} $t9 == $t9; + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:62:9+162 + assume {:print "$at(142,2628,2790)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:66+2 + assume {:print "$at(142,2708,2710)"} true; +L1: + + // $t13 := secp256k1::ecdsa_raw_public_key_from_64_bytes($t9) on_abort goto L4 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:31+38 + assume {:print "$at(142,2673,2711)"} true; + call $t13 := $1_secp256k1_ecdsa_raw_public_key_from_64_bytes($t9); + if ($abort_flag) { + assume {:print "$at(142,2673,2711)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(101,2):", $t12} $t12 == $t12; + goto L4; + } + + // $t3 := opaque begin: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:13+57 + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:13+57 + assume ($IsValid'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>($t3, option::spec_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:13+57 + assume $IsEqual'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3, $1_option_spec_some'$1_secp256k1_ECDSARawPublicKey'($t13)); + + // $t3 := opaque end: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:63:13+57 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:62:9+162 + assume {:print "$at(142,2628,2790)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:65:13+38 + assume {:print "$at(142,2742,2780)"} true; +L0: + + // $t3 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:65:13+38 + assume {:print "$at(142,2742,2780)"} true; + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:65:13+38 + assume ($IsValid'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>($t3, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:65:13+38 + assume $IsEqual'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3, $1_option_spec_none'$1_secp256k1_ECDSARawPublicKey'()); + + // $t3 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:65:13+38 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:62:9+162 + assume {:print "$at(142,2628,2790)"} true; +L2: + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:62:9+162 + assume {:print "$at(142,2628,2790)"} true; + assume {:print "$track_return(101,2,0):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:67:5+1 + assume {:print "$at(142,2795,2796)"} true; +L3: + + // assert Not(secp256k1::ecdsa_recover_internal_abort_condition[]($t0, $t1, select secp256k1::ECDSASignature.bytes($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:27:9+88 + assume {:print "$at(143,861,949)"} true; + assert {:msg "assert_failed(143,861,949): function does not abort under this condition"} + !$1_secp256k1_ecdsa_recover_internal_abort_condition($t0, $t1, $t2->$bytes); + + // assert Implies($t7, Eq>($t3, option::spec_some(secp256k1::$ecdsa_raw_public_key_from_64_bytes($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:30:9+93 + assume {:print "$at(143,1151,1244)"} true; + assert {:msg "assert_failed(143,1151,1244): post-condition does not hold"} + ($t7 ==> $IsEqual'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3, $1_option_spec_some'$1_secp256k1_ECDSARawPublicKey'($1_secp256k1_$ecdsa_raw_public_key_from_64_bytes($t6)))); + + // assert Implies(Not($t7), Eq>($t3, option::spec_none())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:31:9+75 + assume {:print "$at(143,1253,1328)"} true; + assert {:msg "assert_failed(143,1253,1328): post-condition does not hold"} + (!$t7 ==> $IsEqual'$1_option_Option'$1_secp256k1_ECDSARawPublicKey''($t3, $1_option_spec_none'$1_secp256k1_ECDSARawPublicKey'())); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:31:9+75 + $ret0 := $t3; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:67:5+1 + assume {:print "$at(142,2795,2796)"} true; +L4: + + // assert secp256k1::ecdsa_recover_internal_abort_condition[]($t0, $t1, select secp256k1::ECDSASignature.bytes($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:22:5+626 + assume {:print "$at(143,708,1334)"} true; + assert {:msg "assert_failed(143,708,1334): abort not covered by any of the `aborts_if` clauses"} + $1_secp256k1_ecdsa_recover_internal_abort_condition($t0, $t1, $t2->$bytes); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:22:5+626 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun secp256k1::ecdsa_signature_from_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:29:5+227 +procedure {:timeLimit 80} $1_secp256k1_ecdsa_signature_from_bytes$verify(_$t0: Vec (int)) returns ($ret0: $1_secp256k1_ECDSASignature) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_secp256k1_ECDSASignature; + var $t0: Vec (int); + var $temp_0'$1_secp256k1_ECDSASignature': $1_secp256k1_ECDSASignature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:29:5+1 + assume {:print "$at(142,1022,1023)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:29:5+1 + assume {:print "$track_local(101,4,0):", $t0} $t0 == $t0; + + // $t1 := vector::length($t0) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:17+27 + assume {:print "$at(142,1113,1140)"} true; + call $t1 := $1_vector_length'u8'($t0); + if ($abort_flag) { + assume {:print "$at(142,1113,1140)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,4):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := 64 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:48+19 + $t3 := 64; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:45+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 + assume {:print "$at(142,1105,1209)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:98+13 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:98+13 + assume {:print "$at(142,1194,1207)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:69+43 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(142,1165,1208)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(101,4):", $t2} $t2 == $t2; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 + assume {:print "$at(142,1105,1209)"} true; + assume {:print "$track_abort(101,4):", $t6} $t6 == $t6; + + // $t2 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 + $t2 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:30:9+104 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:31:26+5 + assume {:print "$at(142,1236,1241)"} true; +L2: + + // $t7 := pack secp256k1::ECDSASignature($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:31:9+24 + assume {:print "$at(142,1219,1243)"} true; + $t7 := $1_secp256k1_ECDSASignature($t0); + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:31:9+24 + assume {:print "$track_return(101,4,0):", $t7} $t7 == $t7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:32:5+1 + assume {:print "$at(142,1248,1249)"} true; +L3: + + // assert Not(Neq(Len($t0), 64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:3:9+44 + assume {:print "$at(143,112,156)"} true; + assert {:msg "assert_failed(143,112,156): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t0), 64); + + // assert Eq($t7, pack secp256k1::ECDSASignature($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:4:9+43 + assume {:print "$at(143,165,208)"} true; + assert {:msg "assert_failed(143,165,208): post-condition does not hold"} + $IsEqual'$1_secp256k1_ECDSASignature'($t7, $1_secp256k1_ECDSASignature($t0)); + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:4:9+43 + $ret0 := $t7; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:32:5+1 + assume {:print "$at(142,1248,1249)"} true; +L4: + + // assert Neq(Len($t0), 64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:2:5+179 + assume {:print "$at(143,35,214)"} true; + assert {:msg "assert_failed(143,35,214): abort not covered by any of the `aborts_if` clauses"} + !$IsEqual'num'(LenVec($t0), 64); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:2:5+179 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun secp256k1::ecdsa_signature_to_bytes [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:46:5+95 +procedure {:timeLimit 80} $1_secp256k1_ecdsa_signature_to_bytes$verify(_$t0: $1_secp256k1_ECDSASignature) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: Vec (int); + var $t0: $1_secp256k1_ECDSASignature; + var $temp_0'$1_secp256k1_ECDSASignature': $1_secp256k1_ECDSASignature; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:46:5+1 + assume {:print "$at(142,1815,1816)"} true; + assume $IsValid'$1_secp256k1_ECDSASignature'($t0); + + // trace_local[sig]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:46:5+1 + assume {:print "$track_local(101,5,0):", $t0} $t0 == $t0; + + // $t1 := get_field.bytes($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:47:9+9 + assume {:print "$at(142,1895,1904)"} true; + $t1 := $t0->$bytes; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:47:9+9 + assume {:print "$track_return(101,5,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.move:48:5+1 + assume {:print "$at(142,1909,1910)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:18:9+16 + assume {:print "$at(143,643,659)"} true; + assert {:msg "assert_failed(143,643,659): function does not abort under this condition"} + !false; + + // assert Eq>($t1, select secp256k1::ECDSASignature.bytes($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:19:9+28 + assume {:print "$at(143,668,696)"} true; + assert {:msg "assert_failed(143,668,696): post-condition does not hold"} + $IsEqual'vec'u8''($t1, $t0->$bytes); + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/cryptography/secp256k1.spec.move:19:9+28 + $ret0 := $t1; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:4:9+42 +function $1_starcoin_hash_spec_sip_hash(bytes: Vec (int)): int; +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_sip_hash(bytes); +$IsValid'u64'($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:7:9+50 +function $1_starcoin_hash_spec_keccak256(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_keccak256(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:12:9+58 +function $1_starcoin_hash_spec_sha2_512_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_sha2_512_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:17:9+58 +function $1_starcoin_hash_spec_sha3_512_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_sha3_512_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:22:9+59 +function $1_starcoin_hash_spec_ripemd160_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_ripemd160_internal(bytes); +$IsValid'vec'u8''($$res))); + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:27:9+61 +function $1_starcoin_hash_spec_blake2b_256_internal(bytes: Vec (int)): Vec (int); +axiom (forall bytes: Vec (int) :: +(var $$res := $1_starcoin_hash_spec_blake2b_256_internal(bytes); +$IsValid'vec'u8''($$res))); + +// fun starcoin_hash::blake2b_256 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:69:5+229 +procedure {:timeLimit 80} $1_starcoin_hash_blake2b_256$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:69:5+1 + assume {:print "$at(157,2355,2356)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:69:5+1 + assume {:print "$track_local(102,0,0):", $t0} $t0 == $t0; + + // $t1 := features::blake2b_256_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:70:13+31 + assume {:print "$at(157,2423,2454)"} true; + call $t1 := $1_features_blake2b_256_enabled(); + if ($abort_flag) { + assume {:print "$at(157,2423,2454)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,0):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:70:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:70:9+121 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:45+26 + assume {:print "$at(157,2502,2528)"} true; +L1: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:45+26 + assume {:print "$at(157,2502,2528)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(157,2475,2530)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,0):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:13+60 + assume {:print "$at(157,2470,2530)"} true; + assume {:print "$track_abort(102,0):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:71:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:30+5 + assume {:print "$at(157,2572,2577)"} true; +L0: + + // $t6 := opaque begin: starcoin_hash::blake2b_256_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:9+27 + assume {:print "$at(157,2551,2578)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:9+27 + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, starcoin_hash::spec_blake2b_256_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:9+27 + assume $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_blake2b_256_internal($t0)); + + // $t6 := opaque end: starcoin_hash::blake2b_256_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:9+27 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:74:9+27 + assume {:print "$track_return(102,0,0):", $t6} $t6 == $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:75:5+1 + assume {:print "$at(157,2583,2584)"} true; +L2: + + // assert Not(Not(features::spec_is_enabled[](8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:93:9+67 + assume {:print "$at(158,3526,3593)"} true; + assert {:msg "assert_failed(158,3526,3593): function does not abort under this condition"} + !!$1_features_spec_is_enabled(8); + + // assert Eq>($t6, starcoin_hash::spec_blake2b_256_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:94:9+51 + assume {:print "$at(158,3602,3653)"} true; + assert {:msg "assert_failed(158,3602,3653): post-condition does not hold"} + $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_blake2b_256_internal($t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:94:9+51 + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:75:5+1 + assume {:print "$at(157,2583,2584)"} true; +L3: + + // assert Not(features::spec_is_enabled[](8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:91:5+214 + assume {:print "$at(158,3445,3659)"} true; + assert {:msg "assert_failed(158,3445,3659): abort not covered by any of the `aborts_if` clauses"} + !$1_features_spec_is_enabled(8); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:91:5+214 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_hash::ripemd160 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:60:5+236 +procedure {:timeLimit 80} $1_starcoin_hash_ripemd160$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:60:5+1 + assume {:print "$at(157,2064,2065)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:60:5+1 + assume {:print "$track_local(102,3,0):", $t0} $t0 == $t0; + + // $t1 := features::sha_512_and_ripemd_160_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:61:13+42 + assume {:print "$at(157,2130,2172)"} true; + call $t1 := $1_features_sha_512_and_ripemd_160_enabled(); + if ($abort_flag) { + assume {:print "$at(157,2130,2172)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,3):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:61:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:61:9+132 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:45+26 + assume {:print "$at(157,2220,2246)"} true; +L1: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:45+26 + assume {:print "$at(157,2220,2246)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(157,2193,2248)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,3):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:13+60 + assume {:print "$at(157,2188,2248)"} true; + assume {:print "$track_abort(102,3):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:62:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:28+5 + assume {:print "$at(157,2288,2293)"} true; +L0: + + // $t6 := opaque begin: starcoin_hash::ripemd160_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:9+25 + assume {:print "$at(157,2269,2294)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:9+25 + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, starcoin_hash::spec_ripemd160_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:9+25 + assume $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_ripemd160_internal($t0)); + + // $t6 := opaque end: starcoin_hash::ripemd160_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:9+25 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:65:9+25 + assume {:print "$track_return(102,3,0):", $t6} $t6 == $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:66:5+1 + assume {:print "$at(157,2299,2300)"} true; +L2: + + // assert Not(Not(features::spec_is_enabled[](3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:81:9+79 + assume {:print "$at(158,3118,3197)"} true; + assert {:msg "assert_failed(158,3118,3197): function does not abort under this condition"} + !!$1_features_spec_is_enabled(3); + + // assert Eq>($t6, starcoin_hash::spec_ripemd160_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:82:9+49 + assume {:print "$at(158,3206,3255)"} true; + assert {:msg "assert_failed(158,3206,3255): post-condition does not hold"} + $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_ripemd160_internal($t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:82:9+49 + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:66:5+1 + assume {:print "$at(157,2299,2300)"} true; +L3: + + // assert Not(features::spec_is_enabled[](3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:79:5+222 + assume {:print "$at(158,3039,3261)"} true; + assert {:msg "assert_failed(158,3039,3261): abort not covered by any of the `aborts_if` clauses"} + !$1_features_spec_is_enabled(3); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:79:5+222 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_hash::sha2_512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:38:5+234 +procedure {:timeLimit 80} $1_starcoin_hash_sha2_512$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:38:5+1 + assume {:print "$at(157,1243,1244)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:38:5+1 + assume {:print "$track_local(102,5,0):", $t0} $t0 == $t0; + + // $t1 := features::sha_512_and_ripemd_160_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:39:13+42 + assume {:print "$at(157,1308,1350)"} true; + call $t1 := $1_features_sha_512_and_ripemd_160_enabled(); + if ($abort_flag) { + assume {:print "$at(157,1308,1350)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,5):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:39:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:39:9+132 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:45+26 + assume {:print "$at(157,1398,1424)"} true; +L1: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:45+26 + assume {:print "$at(157,1398,1424)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(157,1371,1426)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,5):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:13+60 + assume {:print "$at(157,1366,1426)"} true; + assume {:print "$track_abort(102,5):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:40:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:27+5 + assume {:print "$at(157,1465,1470)"} true; +L0: + + // $t6 := opaque begin: starcoin_hash::sha2_512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:9+24 + assume {:print "$at(157,1447,1471)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:9+24 + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, starcoin_hash::spec_sha2_512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:9+24 + assume $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_sha2_512_internal($t0)); + + // $t6 := opaque end: starcoin_hash::sha2_512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:9+24 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:43:9+24 + assume {:print "$track_return(102,5,0):", $t6} $t6 == $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:44:5+1 + assume {:print "$at(157,1476,1477)"} true; +L2: + + // assert Not(Not(features::spec_is_enabled[](3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:69:9+79 + assume {:print "$at(158,2665,2744)"} true; + assert {:msg "assert_failed(158,2665,2744): function does not abort under this condition"} + !!$1_features_spec_is_enabled(3); + + // assert Eq>($t6, starcoin_hash::spec_sha2_512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:70:9+48 + assume {:print "$at(158,2753,2801)"} true; + assert {:msg "assert_failed(158,2753,2801): post-condition does not hold"} + $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_sha2_512_internal($t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:70:9+48 + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:44:5+1 + assume {:print "$at(157,1476,1477)"} true; +L3: + + // assert Not(features::spec_is_enabled[](3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:67:5+220 + assume {:print "$at(158,2587,2807)"} true; + assert {:msg "assert_failed(158,2587,2807): abort not covered by any of the `aborts_if` clauses"} + !$1_features_spec_is_enabled(3); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:67:5+220 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_hash::sha3_512 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:47:5+234 +procedure {:timeLimit 80} $1_starcoin_hash_sha3_512$verify(_$t0: Vec (int)) returns ($ret0: Vec (int)) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $t0: Vec (int); + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:47:5+1 + assume {:print "$at(157,1529,1530)"} true; + assume $IsValid'vec'u8''($t0); + + // trace_local[bytes]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:47:5+1 + assume {:print "$track_local(102,7,0):", $t0} $t0 == $t0; + + // $t1 := features::sha_512_and_ripemd_160_enabled() on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:48:13+42 + assume {:print "$at(157,1594,1636)"} true; + call $t1 := $1_features_sha_512_and_ripemd_160_enabled(); + if ($abort_flag) { + assume {:print "$at(157,1594,1636)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,7):", $t2} $t2 == $t2; + goto L3; + } + + // $t3 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:48:12+1 + call $t3 := $Not($t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:48:9+132 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:45+26 + assume {:print "$at(157,1684,1710)"} true; +L1: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:45+26 + assume {:print "$at(157,1684,1710)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_state($t4) on_abort goto L3 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:18+55 + call $t5 := $1_error_invalid_state($t4); + if ($abort_flag) { + assume {:print "$at(157,1657,1712)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,7):", $t2} $t2 == $t2; + goto L3; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:13+60 + assume {:print "$at(157,1652,1712)"} true; + assume {:print "$track_abort(102,7):", $t5} $t5 == $t5; + + // $t2 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:13+60 + $t2 := $t5; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:49:13+60 + goto L3; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:27+5 + assume {:print "$at(157,1751,1756)"} true; +L0: + + // $t6 := opaque begin: starcoin_hash::sha3_512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:9+24 + assume {:print "$at(157,1733,1757)"} true; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:9+24 + assume $IsValid'vec'u8''($t6); + + // assume Eq>($t6, starcoin_hash::spec_sha3_512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:9+24 + assume $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_sha3_512_internal($t0)); + + // $t6 := opaque end: starcoin_hash::sha3_512_internal($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:9+24 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:52:9+24 + assume {:print "$track_return(102,7,0):", $t6} $t6 == $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:53:5+1 + assume {:print "$at(157,1762,1763)"} true; +L2: + + // assert Not(Not(features::spec_is_enabled[](3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:75:9+79 + assume {:print "$at(158,2891,2970)"} true; + assert {:msg "assert_failed(158,2891,2970): function does not abort under this condition"} + !!$1_features_spec_is_enabled(3); + + // assert Eq>($t6, starcoin_hash::spec_sha3_512_internal($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:76:9+48 + assume {:print "$at(158,2979,3027)"} true; + assert {:msg "assert_failed(158,2979,3027): post-condition does not hold"} + $IsEqual'vec'u8''($t6, $1_starcoin_hash_spec_sha3_512_internal($t0)); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:76:9+48 + $ret0 := $t6; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:53:5+1 + assume {:print "$at(157,1762,1763)"} true; +L3: + + // assert Not(features::spec_is_enabled[](3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:73:5+220 + assume {:print "$at(158,2813,3033)"} true; + assert {:msg "assert_failed(158,2813,3033): abort not covered by any of the `aborts_if` clauses"} + !$1_features_spec_is_enabled(3); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:73:5+220 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_hash::sip_hash_from_value [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:28:5+132 +procedure {:timeLimit 80} $1_starcoin_hash_sip_hash_from_value$verify(_$t0: #0) returns ($ret0: int) +{ + // declare local variables + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:28:5+1 + assume {:print "$at(157,946,947)"} true; + assume $IsValid'#0'($t0); + + // trace_local[v]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:28:5+1 + assume {:print "$track_local(102,10,0):", $t0} $t0 == $t0; + + // $t1 := bcs::to_bytes<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:29:21+16 + assume {:print "$at(157,1030,1046)"} true; + call $t1 := $1_bcs_to_bytes'#0'($t0); + if ($abort_flag) { + assume {:print "$at(157,1030,1046)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(102,10):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := opaque begin: starcoin_hash::sip_hash($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:31:9+15 + assume {:print "$at(157,1057,1072)"} true; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:31:9+15 + assume $IsValid'u64'($t3); + + // assume Eq($t3, starcoin_hash::spec_sip_hash($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:31:9+15 + assume $IsEqual'u64'($t3, $1_starcoin_hash_spec_sip_hash($t1)); + + // $t3 := opaque end: starcoin_hash::sip_hash($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:31:9+15 + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:31:9+15 + assume {:print "$track_return(102,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:32:5+1 + assume {:print "$at(157,1077,1078)"} true; +L1: + + // assert Eq($t3, starcoin_hash::spec_sip_hash(bcs::serialize<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:40:9+51 + assume {:print "$at(158,1762,1813)"} true; + assert {:msg "assert_failed(158,1762,1813): post-condition does not hold"} + $IsEqual'u64'($t3, $1_starcoin_hash_spec_sip_hash($1_bcs_serialize'#0'($t0))); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.spec.move:40:9+51 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:32:5+1 + assume {:print "$at(157,1077,1078)"} true; +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/hash.move:32:5+1 + assume {:print "$at(157,1077,1078)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+85 +function {:inline} $1_smart_vector_$is_empty'#0'(self: $1_smart_vector_SmartVector'#0'): bool { + $IsEqual'u64'($1_smart_vector_$length'#0'(self), 0) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+240 +function {:inline} $1_smart_vector_$length'#0'(self: $1_smart_vector_SmartVector'#0'): int { + ($1_vector_$length'#0'(self->$inline_vec) + (if ($1_option_$is_none'$1_big_vector_BigVector'#0''(self->$big_vec)) then (0) else ($1_big_vector_$length'#0'($1_option_$borrow'$1_big_vector_BigVector'#0''(self->$big_vec))))) +} + +// struct smart_vector::SmartVector<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:23:5+181 +datatype $1_smart_vector_SmartVector'#0' { + $1_smart_vector_SmartVector'#0'($inline_vec: Vec (#0), $big_vec: $1_option_Option'$1_big_vector_BigVector'#0'', $inline_capacity: $1_option_Option'u64', $bucket_size: $1_option_Option'u64') +} +function {:inline} $Update'$1_smart_vector_SmartVector'#0''_inline_vec(s: $1_smart_vector_SmartVector'#0', x: Vec (#0)): $1_smart_vector_SmartVector'#0' { + $1_smart_vector_SmartVector'#0'(x, s->$big_vec, s->$inline_capacity, s->$bucket_size) +} +function {:inline} $Update'$1_smart_vector_SmartVector'#0''_big_vec(s: $1_smart_vector_SmartVector'#0', x: $1_option_Option'$1_big_vector_BigVector'#0''): $1_smart_vector_SmartVector'#0' { + $1_smart_vector_SmartVector'#0'(s->$inline_vec, x, s->$inline_capacity, s->$bucket_size) +} +function {:inline} $Update'$1_smart_vector_SmartVector'#0''_inline_capacity(s: $1_smart_vector_SmartVector'#0', x: $1_option_Option'u64'): $1_smart_vector_SmartVector'#0' { + $1_smart_vector_SmartVector'#0'(s->$inline_vec, s->$big_vec, x, s->$bucket_size) +} +function {:inline} $Update'$1_smart_vector_SmartVector'#0''_bucket_size(s: $1_smart_vector_SmartVector'#0', x: $1_option_Option'u64'): $1_smart_vector_SmartVector'#0' { + $1_smart_vector_SmartVector'#0'(s->$inline_vec, s->$big_vec, s->$inline_capacity, x) +} +function $IsValid'$1_smart_vector_SmartVector'#0''(s: $1_smart_vector_SmartVector'#0'): bool { + $IsValid'vec'#0''(s->$inline_vec) + && $IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''(s->$big_vec) + && $IsValid'$1_option_Option'u64''(s->$inline_capacity) + && $IsValid'$1_option_Option'u64''(s->$bucket_size) +} +function {:inline} $IsEqual'$1_smart_vector_SmartVector'#0''(s1: $1_smart_vector_SmartVector'#0', s2: $1_smart_vector_SmartVector'#0'): bool { + $IsEqual'vec'#0''(s1->$inline_vec, s2->$inline_vec) + && $IsEqual'$1_option_Option'$1_big_vector_BigVector'#0'''(s1->$big_vec, s2->$big_vec) + && $IsEqual'$1_option_Option'u64''(s1->$inline_capacity, s2->$inline_capacity) + && $IsEqual'$1_option_Option'u64''(s1->$bucket_size, s2->$bucket_size)} + +// fun smart_vector::contains [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:327:5+170 +procedure {:timeLimit 80} $1_smart_vector_contains$verify(_$t0: $1_smart_vector_SmartVector'#0', _$t1: #0) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: bool; + var $t6: bool; + var $t7: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:327:5+1 + assume {:print "$at(148,14060,14061)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:327:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:327:5+1 + assume {:print "$track_local(104,5,0):", $t0} $t0 == $t0; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:327:5+1 + assume {:print "$track_local(104,5,1):", $t1} $t1 == $t1; + + // $t2 := smart_vector::is_empty<#0>($t0) on_abort goto L3 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:13+14 + assume {:print "$at(148,14135,14149)"} true; + call $t2 := $1_smart_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,14135,14149)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,5):", $t3} $t3 == $t3; + goto L3; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:9+32 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:29+12 +L1: + + // $t4 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:36+5 + assume {:print "$at(148,14158,14163)"} true; + $t4 := false; + assume $IsValid'bool'($t4); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:29+12 + assume {:print "$track_return(104,5,0):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:29+12 + $t5 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:328:29+12 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:329:35+4 + assume {:print "$at(148,14199,14203)"} true; +L0: + + // ($t6, $t7) := smart_vector::index_of<#0>($t0, $t1) on_abort goto L3 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:329:26+19 + assume {:print "$at(148,14190,14209)"} true; + call $t6,$t7 := $1_smart_vector_index_of'#0'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(148,14190,14209)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,5):", $t3} $t3 == $t3; + goto L3; + } + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:329:21+1 + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:330:9+5 + assume {:print "$at(148,14219,14224)"} true; + assume {:print "$track_return(104,5,0):", $t6} $t6 == $t6; + + // $t5 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:330:9+5 + $t5 := $t6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:331:5+1 + assume {:print "$at(148,14229,14230)"} true; +L2: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:331:5+1 + assume {:print "$at(148,14229,14230)"} true; + $ret0 := $t5; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:331:5+1 +L3: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:331:5+1 + assume {:print "$at(148,14229,14230)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun smart_vector::index_of<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+432 +procedure {:inline 1} $1_smart_vector_index_of'#0'(_$t0: $1_smart_vector_SmartVector'#0', _$t1: #0) returns ($ret0: bool, $ret1: int) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (#0); + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t13: bool; + var $t14: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t15: $1_big_vector_BigVector'#0'; + var $t16: bool; + var $t17: bool; + var $t18: int; + var $t19: Vec (#0); + var $t20: int; + var $t21: bool; + var $t22: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume {:print "$at(148,13488,13489)"} true; + assume {:print "$track_local(104,10,0):", $t0} $t0 == $t0; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume {:print "$track_local(104,10,1):", $t1} $t1 == $t1; + + // $t7 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:43+16 + assume {:print "$at(148,13600,13616)"} true; + $t7 := $t0->$inline_vec; + + // ($t8, $t9) := vector::index_of<#0>($t7, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:26+39 + call $t8,$t9 := $1_vector_index_of'#0'($t7, $t1); + if ($abort_flag) { + assume {:print "$at(148,13583,13622)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:21+1 + assume {:print "$track_local(104,10,6):", $t9} $t9 == $t9; + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 +L1: + + // $t11 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:316:14+4 + assume {:print "$at(148,13658,13662)"} true; + $t11 := true; + assume $IsValid'bool'($t11); + + // $t5 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + $t5 := $t9; + + // $t4 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + $t4 := $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:37+4 + assume {:print "$at(148,13703,13707)"} true; +L0: + + // $t12 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:36+13 + assume {:print "$at(148,13702,13715)"} true; + $t12 := $t0->$big_vec; + + // $t13 := opaque begin: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + assume $IsValid'bool'($t13); + + // assume Eq($t13, option::spec_is_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + assume $IsEqual'bool'($t13, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t12)); + + // $t13 := opaque end: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:67+4 + assume {:print "$at(148,13786,13790)"} true; +L4: + + // $t14 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:66+13 + assume {:print "$at(148,13785,13798)"} true; + $t14 := $t0->$big_vec; + + // $t15 := opaque begin: option::borrow>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + + // assume Identical($t16, option::spec_is_none>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume ($t16 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t14)); + + // if ($t16) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + if ($t16) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 +L9: + + // assume And(option::spec_is_none>($t14), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t14) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 +L8: + + // assume And(WellFormed($t15), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t15), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(select big_vector::BigVector.end_index($t15), 0))), Implies(Eq(select big_vector::BigVector.end_index($t15), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0))), Le(select big_vector::BigVector.end_index($t15), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), select big_vector::BigVector.bucket_size($t15)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), i)), select big_vector::BigVector.bucket_size($t15)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1))), select big_vector::BigVector.bucket_size($t15)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), Div(Sub(Add(select big_vector::BigVector.end_index($t15), select big_vector::BigVector.bucket_size($t15)), 1), select big_vector::BigVector.bucket_size($t15)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(select big_vector::BigVector.end_index($t15), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1), select big_vector::BigVector.bucket_size($t15)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1)))), select big_vector::BigVector.end_index($t15))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t15) && (((((((((((!$IsEqual'u64'($t15->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) ==> $IsEqual'u64'($t15->$end_index, 0))) && ($IsEqual'u64'($t15->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0))) && ($t15->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) * $t15->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, i)), $t15->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1))) <= $t15->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), ((($t15->$end_index + $t15->$bucket_size) - 1) div $t15->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) && $IsEqual'u64'($t15->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1) * $t15->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1)))), $t15->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1))) > 0)))); + + // assume Eq>($t15, option::spec_borrow>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t15, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t14)); + + // $t15 := opaque end: option::borrow>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + + // ($t17, $t18) := big_vector::index_of<#0>($t15, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:30+56 + call $t17,$t18 := $1_big_vector_index_of'#0'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(148,13749,13805)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t19 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:40+16 + assume {:print "$at(148,13846,13862)"} true; + $t19 := $t0->$inline_vec; + + // $t20 := vector::length<#0>($t19) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:25+32 + call $t20 := $1_vector_length'#0'($t19); + if ($abort_flag) { + assume {:print "$at(148,13831,13863)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t3 := +($t18, $t20) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:23+1 + call $t3 := $AddU64($t18, $t20); + if ($abort_flag) { + assume {:print "$at(148,13829,13830)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + assume {:print "$at(148,13682,13914)"} true; + $t2 := $t17; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 +L3: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:321:14+5 + assume {:print "$at(148,13895,13900)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:321:21+1 + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + assume {:print "$at(148,13682,13914)"} true; + $t3 := $t22; + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + $t2 := $t21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 +L5: + + // $t5 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + $t5 := $t3; + + // $t4 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + $t4 := $t2; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 +L2: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + assume {:print "$track_return(104,10,0):", $t4} $t4 == $t4; + + // trace_return[1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$track_return(104,10,1):", $t5} $t5 == $t5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; +L6: + + // return ($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; + $ret0 := $t4; + $ret1 := $t5; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 +L7: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun smart_vector::index_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+432 +procedure {:timeLimit 80} $1_smart_vector_index_of$verify(_$t0: $1_smart_vector_SmartVector'#0', _$t1: #0) returns ($ret0: bool, $ret1: int) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: Vec (#0); + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t13: bool; + var $t14: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t15: $1_big_vector_BigVector'#0'; + var $t16: bool; + var $t17: bool; + var $t18: int; + var $t19: Vec (#0); + var $t20: int; + var $t21: bool; + var $t22: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'bool': bool; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume {:print "$at(148,13488,13489)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume $IsValid'#0'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume {:print "$track_local(104,10,0):", $t0} $t0 == $t0; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:313:5+1 + assume {:print "$track_local(104,10,1):", $t1} $t1 == $t1; + + // $t7 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:43+16 + assume {:print "$at(148,13600,13616)"} true; + $t7 := $t0->$inline_vec; + + // ($t8, $t9) := vector::index_of<#0>($t7, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:26+39 + call $t8,$t9 := $1_vector_index_of'#0'($t7, $t1); + if ($abort_flag) { + assume {:print "$at(148,13583,13622)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[i]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:314:21+1 + assume {:print "$track_local(104,10,6):", $t9} $t9 == $t9; + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 +L1: + + // $t11 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:316:14+4 + assume {:print "$at(148,13658,13662)"} true; + $t11 := true; + assume $IsValid'bool'($t11); + + // $t5 := $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + $t5 := $t9; + + // $t4 := $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + $t4 := $t11; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:37+4 + assume {:print "$at(148,13703,13707)"} true; +L0: + + // $t12 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:36+13 + assume {:print "$at(148,13702,13715)"} true; + $t12 := $t0->$big_vec; + + // $t13 := opaque begin: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + assume $IsValid'bool'($t13); + + // assume Eq($t13, option::spec_is_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + assume $IsEqual'bool'($t13, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t12)); + + // $t13 := opaque end: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:20+30 + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:67+4 + assume {:print "$at(148,13786,13790)"} true; +L4: + + // $t14 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:66+13 + assume {:print "$at(148,13785,13798)"} true; + $t14 := $t0->$big_vec; + + // $t15 := opaque begin: option::borrow>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + + // assume Identical($t16, option::spec_is_none>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume ($t16 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t14)); + + // if ($t16) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + if ($t16) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 +L9: + + // assume And(option::spec_is_none>($t14), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t14) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 +L8: + + // assume And(WellFormed($t15), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t15), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(select big_vector::BigVector.end_index($t15), 0))), Implies(Eq(select big_vector::BigVector.end_index($t15), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0))), Le(select big_vector::BigVector.end_index($t15), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), select big_vector::BigVector.bucket_size($t15)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), i)), select big_vector::BigVector.bucket_size($t15)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1))), select big_vector::BigVector.bucket_size($t15)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), Div(Sub(Add(select big_vector::BigVector.end_index($t15), select big_vector::BigVector.bucket_size($t15)), 1), select big_vector::BigVector.bucket_size($t15)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(select big_vector::BigVector.end_index($t15), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1), select big_vector::BigVector.bucket_size($t15)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1)))), select big_vector::BigVector.end_index($t15))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t15), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t15), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t15)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume {:print "$at(148,13770,13799)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t15) && (((((((((((!$IsEqual'u64'($t15->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) ==> $IsEqual'u64'($t15->$end_index, 0))) && ($IsEqual'u64'($t15->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0))) && ($t15->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) * $t15->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, i)), $t15->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1))) <= $t15->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), ((($t15->$end_index + $t15->$bucket_size) - 1) div $t15->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) && $IsEqual'u64'($t15->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1) * $t15->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1)))), $t15->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t15->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t15->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t15->$buckets) - 1))) > 0)))); + + // assume Eq>($t15, option::spec_borrow>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t15, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t14)); + + // $t15 := opaque end: option::borrow>($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:51+29 + + // ($t17, $t18) := big_vector::index_of<#0>($t15, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:318:30+56 + call $t17,$t18 := $1_big_vector_index_of'#0'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(148,13749,13805)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t19 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:40+16 + assume {:print "$at(148,13846,13862)"} true; + $t19 := $t0->$inline_vec; + + // $t20 := vector::length<#0>($t19) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:25+32 + call $t20 := $1_vector_length'#0'($t19); + if ($abort_flag) { + assume {:print "$at(148,13831,13863)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t3 := +($t18, $t20) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:319:23+1 + call $t3 := $AddU64($t18, $t20); + if ($abort_flag) { + assume {:print "$at(148,13829,13830)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,10):", $t10} $t10 == $t10; + goto L7; + } + + // $t2 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + assume {:print "$at(148,13682,13914)"} true; + $t2 := $t17; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 +L3: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:321:14+5 + assume {:print "$at(148,13895,13900)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:321:21+1 + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t3 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + assume {:print "$at(148,13682,13914)"} true; + $t3 := $t22; + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 + $t2 := $t21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:317:16+232 +L5: + + // $t5 := $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + $t5 := $t3; + + // $t4 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + $t4 := $t2; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 +L2: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$at(148,13632,13914)"} true; + assume {:print "$track_return(104,10,0):", $t4} $t4 == $t4; + + // trace_return[1]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:315:9+282 + assume {:print "$track_return(104,10,1):", $t5} $t5 == $t5; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; +L6: + + // return ($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; + $ret0 := $t4; + $ret1 := $t5; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 +L7: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:323:5+1 + assume {:print "$at(148,13919,13920)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun smart_vector::borrow [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:95:5+387 +procedure {:timeLimit 80} $1_smart_vector_borrow$verify(_$t0: $1_smart_vector_SmartVector'#0', _$t1: int) returns ($ret0: #0) +{ + // declare local variables + var $t2: #0; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: Vec (#0); + var $t10: int; + var $t11: bool; + var $t12: Vec (#0); + var $t13: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t14: $1_big_vector_BigVector'#0'; + var $t15: bool; + var $t16: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:95:5+1 + assume {:print "$at(148,3587,3588)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:95:5+1 + assume $IsValid'u64'($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:95:5+1 + assume {:print "$track_local(104,2,0):", $t0} $t0 == $t0; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:95:5+1 + assume {:print "$track_local(104,2,1):", $t1} $t1 == $t1; + + // $t4 := smart_vector::length<#0>($t0) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:21+12 + assume {:print "$at(148,3665,3677)"} true; + call $t4 := $1_smart_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,3665,3677)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // $t6 := <($t1, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:19+1 + call $t6 := $Lt($t1, $t4); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 + assume {:print "$at(148,3653,3725)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:59+20 + assume {:print "$at(148,3703,3723)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:35+45 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(148,3679,3724)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 + assume {:print "$at(148,3653,3725)"} true; + assume {:print "$track_abort(104,2):", $t8} $t8 == $t8; + + // $t5 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 + $t5 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:96:9+72 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:97:42+4 + assume {:print "$at(148,3768,3772)"} true; +L2: + + // $t9 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:97:41+16 + assume {:print "$at(148,3767,3783)"} true; + $t9 := $t0->$inline_vec; + + // $t10 := vector::length<#0>($t9) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:97:26+32 + call $t10 := $1_vector_length'#0'($t9); + if ($abort_flag) { + assume {:print "$at(148,3752,3784)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // trace_local[inline_len]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:97:13+10 + assume {:print "$track_local(104,2,3):", $t10} $t10 == $t10; + + // $t11 := <($t1, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:98:15+1 + assume {:print "$at(148,3800,3801)"} true; + call $t11 := $Lt($t1, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:98:9+174 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:99:29+4 + assume {:print "$at(148,3844,3848)"} true; +L4: + + // $t12 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:99:28+16 + assume {:print "$at(148,3843,3859)"} true; + $t12 := $t0->$inline_vec; + + // $t2 := vector::borrow<#0>($t12, $t1) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:99:13+35 + call $t2 := $1_vector_borrow'#0'($t12, $t1); + if ($abort_flag) { + assume {:print "$at(148,3828,3863)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:98:9+174 + assume {:print "$at(148,3794,3968)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:48+4 + assume {:print "$at(148,3928,3932)"} true; +L3: + + // $t13 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:47+13 + assume {:print "$at(148,3927,3940)"} true; + $t13 := $t0->$big_vec; + + // $t14 := opaque begin: option::borrow>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + + // assume Identical($t15, option::spec_is_none>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + assume ($t15 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t13)); + + // if ($t15) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + if ($t15) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 +L9: + + // assume And(option::spec_is_none>($t13), Eq(262145, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + assume {:print "$at(148,3912,3941)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t13) && $IsEqual'num'(262145, $t5)); + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + assume {:print "$at(148,3912,3941)"} true; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + goto L7; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 +L8: + + // assume And(WellFormed($t14), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t14), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), Eq(select big_vector::BigVector.end_index($t14), 0))), Implies(Eq(select big_vector::BigVector.end_index($t14), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0))), Le(select big_vector::BigVector.end_index($t14), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), select big_vector::BigVector.bucket_size($t14)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t14), i)), select big_vector::BigVector.bucket_size($t14)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t14), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 1))), select big_vector::BigVector.bucket_size($t14)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t14), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), Div(Sub(Add(select big_vector::BigVector.end_index($t14), select big_vector::BigVector.bucket_size($t14)), 1), select big_vector::BigVector.bucket_size($t14)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), Eq(select big_vector::BigVector.end_index($t14), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 1), select big_vector::BigVector.bucket_size($t14)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t14), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 1)))), select big_vector::BigVector.end_index($t14))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t14), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t14), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t14), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t14)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + assume {:print "$at(148,3912,3941)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t14) && (((((((((((!$IsEqual'u64'($t14->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) ==> $IsEqual'u64'($t14->$end_index, 0))) && ($IsEqual'u64'($t14->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0))) && ($t14->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) * $t14->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t14->$buckets, i)), $t14->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t14->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) - 1))) <= $t14->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t14->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), ((($t14->$end_index + $t14->$bucket_size) - 1) div $t14->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) && $IsEqual'u64'($t14->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) - 1) * $t14->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t14->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) - 1)))), $t14->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t14->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t14->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t14->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t14->$buckets) - 1))) > 0)))); + + // assume Eq>($t14, option::spec_borrow>($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t14, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t13)); + + // $t14 := opaque end: option::borrow>($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:32+29 + + // $t16 := -($t1, $t10) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:65+1 + call $t16 := $Sub($t1, $t10); + if ($abort_flag) { + assume {:print "$at(148,3945,3946)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // $t2 := big_vector::borrow<#0>($t14, $t16) on_abort goto L7 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:101:13+65 + call $t2 := $1_big_vector_borrow'#0'($t14, $t16); + if ($abort_flag) { + assume {:print "$at(148,3893,3958)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(104,2):", $t5} $t5 == $t5; + goto L7; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:98:9+174 + assume {:print "$at(148,3794,3968)"} true; +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:98:9+174 + assume {:print "$at(148,3794,3968)"} true; + assume {:print "$track_return(104,2,0):", $t2} $t2 == $t2; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:103:5+1 + assume {:print "$at(148,3973,3974)"} true; +L6: + + // assert Not(Ge($t1, smart_vector::$length[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:35:9+28 + assume {:print "$at(149,1191,1219)"} true; + assert {:msg "assert_failed(149,1191,1219): function does not abort under this condition"} + !($t1 >= $1_smart_vector_$length'#0'($t0)); + + // assert Not(And(option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)), Gt(Add(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), big_vector::$length[]<#0>(option::$borrow[]>(select smart_vector::SmartVector.big_vec>($t0)))), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:36:9+154 + assume {:print "$at(149,1228,1382)"} true; + assert {:msg "assert_failed(149,1228,1382): function does not abort under this condition"} + !($1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec) && ((LenVec($t0->$inline_vec) + $1_big_vector_$length'#0'($1_option_$borrow'$1_big_vector_BigVector'#0''($t0->$big_vec))) > 18446744073709551615)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:36:9+154 + $ret0 := $t2; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:103:5+1 + assume {:print "$at(148,3973,3974)"} true; +L7: + + // assert Or(Ge($t1, smart_vector::$length[]<#0>($t0)), And(option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)), Gt(Add(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), big_vector::$length[]<#0>(option::$borrow[]>(select smart_vector::SmartVector.big_vec>($t0)))), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:34:5+219 + assume {:print "$at(149,1169,1388)"} true; + assert {:msg "assert_failed(149,1169,1388): abort not covered by any of the `aborts_if` clauses"} + (($t1 >= $1_smart_vector_$length'#0'($t0)) || ($1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec) && ((LenVec($t0->$inline_vec) + $1_big_vector_$length'#0'($1_option_$borrow'$1_big_vector_BigVector'#0''($t0->$big_vec))) > 18446744073709551615))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:34:5+219 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun smart_vector::borrow_mut [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:107:5+419 +procedure {:timeLimit 80} $1_smart_vector_borrow_mut$verify(_$t0: $Mutation ($1_smart_vector_SmartVector'#0'), _$t1: int) returns ($ret0: $Mutation (#0), $ret1: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t2: $Mutation (#0); + var $t3: int; + var $t4: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t5: $Mutation ($1_big_vector_BigVector'#0'); + var $t6: $1_smart_vector_SmartVector'#0'; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: Vec (#0); + var $t13: int; + var $t14: bool; + var $t15: $Mutation (Vec (#0)); + var $t16: int; + var $t17: bool; + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:107:5+1 + assume {:print "$at(148,4092,4093)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:107:5+1 + assume $IsValid'u64'($t1); + + // uninit($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + assume $t4->l == $Uninitialized(); + + // uninit($t5) at :1:1+10 + assume $t5->l == $Uninitialized(); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:107:5+1 + assume {:print "$at(148,4092,4093)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,3,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:107:5+1 + assume {:print "$track_local(104,3,1):", $t1} $t1 == $t1; + + // $t6 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:28+4 + assume {:print "$at(148,4189,4193)"} true; + $t6 := $Dereference($t0); + + // $t7 := smart_vector::length<#0>($t6) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:21+12 + call $t7 := $1_smart_vector_length'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,4182,4194)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t9 := <($t1, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:19+1 + call $t9 := $Lt($t1, $t7); + + // if ($t9) goto L1 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + if ($t9) { goto L1; } else { goto L12; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + assume {:print "$at(148,4170,4242)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 +L0: + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1); + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + assume {:print "$at(148,4170,4242)"} true; + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:59+20 + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:35+45 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(148,4196,4241)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + assume {:print "$at(148,4170,4242)"} true; + assume {:print "$track_abort(104,3):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + $t8 := $t11; + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:108:9+72 + goto L11; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:109:42+4 + assume {:print "$at(148,4285,4289)"} true; +L2: + + // $t12 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:109:41+16 + assume {:print "$at(148,4284,4300)"} true; + $t12 := $Dereference($t0)->$inline_vec; + + // $t13 := vector::length<#0>($t12) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:109:26+32 + call $t13 := $1_vector_length'#0'($t12); + if ($abort_flag) { + assume {:print "$at(148,4269,4301)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // trace_local[inline_len]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:109:13+10 + assume {:print "$track_local(104,3,3):", $t13} $t13 == $t13; + + // $t14 := <($t1, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:15+1 + assume {:print "$at(148,4317,4318)"} true; + call $t14 := $Lt($t1, $t13); + + // if ($t14) goto L4 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + if ($t14) { goto L4; } else { goto L13; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:111:37+4 + assume {:print "$at(148,4369,4373)"} true; +L4: + + // $t15 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:111:32+20 + assume {:print "$at(148,4364,4384)"} true; + $t15 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // $t2 := vector::borrow_mut<#0>($t15, $t1) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:111:13+43 + call $t2,$t15 := $1_vector_borrow_mut'#0'($t15, $t1); + if ($abort_flag) { + assume {:print "$at(148,4345,4388)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + assume {:print "$at(148,4311,4505)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:113:60+4 + assume {:print "$at(148,4465,4469)"} true; +L3: + + // $t4 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:113:55+17 + assume {:print "$at(148,4460,4477)"} true; + $t4 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t5 := option::borrow_mut>($t4) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:113:36+37 + call $t5,$t4 := $1_option_borrow_mut'$1_big_vector_BigVector'#0''($t4); + if ($abort_flag) { + assume {:print "$at(148,4441,4478)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t16 := -($t1, $t13) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:113:77+1 + call $t16 := $Sub($t1, $t13); + if ($abort_flag) { + assume {:print "$at(148,4482,4483)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // $t2 := big_vector::borrow_mut<#0>($t5, $t16) on_abort goto L11 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:113:13+77 + call $t2,$t5 := $1_big_vector_borrow_mut'#0'($t5, $t16); + if ($abort_flag) { + assume {:print "$at(148,4418,4495)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,3):", $t8} $t8 == $t8; + goto L11; + } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + assume {:print "$at(148,4311,4505)"} true; +L5: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + assume {:print "$at(148,4311,4505)"} true; + $temp_0'#0' := $Dereference($t2); + assume {:print "$track_return(104,3,0):", $temp_0'#0'} $temp_0'#0' == $temp_0'#0'; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,3,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 +L7: + + // $t17 := is_parent[Reference($t5).buckets (table_with_length::TableWithLength>)/[]/[]]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + assume {:print "$at(148,4311,4505)"} true; + $t17 := $IsParentMutationHyper($t5, MakeVec3(0, -1, -1), $t2); + + // if ($t17) goto L8 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + if ($t17) { goto L8; } else { goto L14; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 +L8: + + // write_back[Reference($t4).vec (vector>)/[]]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + assume {:print "$at(148,4311,4505)"} true; + $t4 := $UpdateMutation($t4, (var $$sel0 := $Dereference($t4)->$vec; $Update'$1_option_Option'$1_big_vector_BigVector'#0'''_vec($Dereference($t4), UpdateVec($$sel0, ReadVec($t5->p, LenVec($t4->p) + 1), $Dereference($t5))))); + + // write_back[Reference($t0).big_vec (option::Option>)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t4))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,3,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:110:9+194 +L9: + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:115:5+1 + assume {:print "$at(148,4510,4511)"} true; +L10: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:115:5+1 + assume {:print "$at(148,4510,4511)"} true; + $ret0 := $t2; + $ret1 := $t0; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:115:5+1 +L11: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:115:5+1 + assume {:print "$at(148,4510,4511)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + + // label L12 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L12: + + // drop($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L0 at :1:1+10 + goto L0; + + // label L13 at :1:1+10 +L13: + + // drop($t4) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t5) at :1:1+10 + + // goto L3 at :1:1+10 + goto L3; + + // label L14 at :1:1+10 +L14: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t4) at :1:1+10 + + // drop($t5) at :1:1+10 + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun smart_vector::destroy [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:80:5+112 +procedure {:timeLimit 80} $1_smart_vector_destroy$verify(_$t0: $1_smart_vector_SmartVector'#0') returns () +{ + // declare local variables + var $t1: $Mutation ($1_smart_vector_SmartVector'#0'); + var $t2: int; + var $t3: $1_smart_vector_SmartVector'#0'; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:80:5+1 + assume {:print "$at(148,3073,3074)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:80:5+1 + assume {:print "$track_local(104,6,0):", $t0} $t0 == $t0; + + // $t1 := borrow_local($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:81:15+9 + assume {:print "$at(148,3139,3148)"} true; + $t1 := $Mutation($Local(0), EmptyVec(), $t0); + + // smart_vector::clear<#0>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:81:9+16 + call $t1 := $1_smart_vector_clear'#0'($t1); + if ($abort_flag) { + assume {:print "$at(148,3133,3149)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,6):", $t2} $t2 == $t2; + goto L2; + } + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t1)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t1)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t1)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t1)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t1)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t1)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t1)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t1)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t1)->$inline_capacity) || (LenVec($Dereference($t1)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t1)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t1)), option::$is_none(select smart_vector::SmartVector.bucket_size($t1))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t1)), option::$is_some(select smart_vector::SmartVector.bucket_size($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t1)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t1)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t1)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t1)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t1))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t1)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t1)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t1))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t1))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t1)->$bucket_size->$vec) <= 1); + + // write_back[LocalRoot($t0)@]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:81:9+16 + assume {:print "$at(148,3133,3149)"} true; + $t0 := $Dereference($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:81:9+16 + assume {:print "$track_local(104,6,0):", $t0} $t0 == $t0; + + // $t3 := move($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:82:23+4 + assume {:print "$at(148,3173,3177)"} true; + $t3 := $t0; + + // smart_vector::destroy_empty<#0>($t3) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:82:9+19 + call $1_smart_vector_destroy_empty'#0'($t3); + if ($abort_flag) { + assume {:print "$at(148,3159,3178)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,6):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:83:5+1 + assume {:print "$at(148,3184,3185)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:83:5+1 + assume {:print "$at(148,3184,3185)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:83:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:83:5+1 + assume {:print "$at(148,3184,3185)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun smart_vector::destroy_empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:72:5+309 +procedure {:inline 1} $1_smart_vector_destroy_empty'#0'(_$t0: $1_smart_vector_SmartVector'#0') returns () +{ + // declare local variables + var $t1: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Vec (#0); + var $t7: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t8: $1_option_Option'u64'; + var $t9: $1_option_Option'u64'; + var $t10: bool; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:72:5+1 + assume {:print "$at(148,2703,2704)"} true; + assume {:print "$track_local(104,7,0):", $t0} $t0 == $t0; + + // $t2 := smart_vector::is_empty<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:17+15 + assume {:print "$at(148,2771,2786)"} true; + call $t2 := $1_smart_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,2771,2786)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + assume {:print "$at(148,2763,2831)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:58+17 +L0: + + // $t4 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:58+17 + assume {:print "$at(148,2812,2829)"} true; + $t4 := 2; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:34+42 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(148,2788,2830)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + assume {:print "$at(148,2763,2831)"} true; + assume {:print "$track_abort(104,7):", $t5} $t5 == $t5; + + // $t3 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + $t3 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:87+4 + assume {:print "$at(148,2919,2923)"} true; +L2: + + // ($t6, $t7, $t8, $t9) := unpack smart_vector::SmartVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:13+71 + assume {:print "$at(148,2845,2916)"} true; + $t6 := $t0->$inline_vec; + $t7 := $t0->$big_vec; + $t8 := $t0->$inline_capacity; + $t9 := $t0->$bucket_size; + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:81+1 + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:65+1 + + // trace_local[big_vec]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:39+7 + assume {:print "$track_local(104,7,1):", $t7} $t7 == $t7; + + // vector::destroy_empty<#0>($t6) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:75:9+33 + assume {:print "$at(148,2933,2966)"} true; + call $1_vector_destroy_empty'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,2933,2966)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // opaque begin: option::destroy_none>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + + // assume Identical($t10, option::spec_is_some>($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume ($t10 == $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t7)); + + // if ($t10) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + if ($t10) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 +L6: + + // assume And(option::spec_is_some>($t7), Eq(262144, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + assume ($1_option_spec_is_some'$1_big_vector_BigVector'#0''($t7) && $IsEqual'num'(262144, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 +L5: + + // opaque end: option::destroy_none>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 + assume {:print "$at(148,3011,3012)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 + assume {:print "$at(148,3011,3012)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 + assume {:print "$at(148,3011,3012)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun smart_vector::destroy_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:72:5+309 +procedure {:timeLimit 80} $1_smart_vector_destroy_empty$verify(_$t0: $1_smart_vector_SmartVector'#0') returns () +{ + // declare local variables + var $t1: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Vec (#0); + var $t7: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t8: $1_option_Option'u64'; + var $t9: $1_option_Option'u64'; + var $t10: bool; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:72:5+1 + assume {:print "$at(148,2703,2704)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:72:5+1 + assume {:print "$track_local(104,7,0):", $t0} $t0 == $t0; + + // $t2 := smart_vector::is_empty<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:17+15 + assume {:print "$at(148,2771,2786)"} true; + call $t2 := $1_smart_vector_is_empty'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,2771,2786)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + assume {:print "$at(148,2763,2831)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:58+17 +L0: + + // $t4 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:58+17 + assume {:print "$at(148,2812,2829)"} true; + $t4 := 2; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:34+42 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(148,2788,2830)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + assume {:print "$at(148,2763,2831)"} true; + assume {:print "$track_abort(104,7):", $t5} $t5 == $t5; + + // $t3 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + $t3 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:73:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:87+4 + assume {:print "$at(148,2919,2923)"} true; +L2: + + // ($t6, $t7, $t8, $t9) := unpack smart_vector::SmartVector<#0>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:13+71 + assume {:print "$at(148,2845,2916)"} true; + $t6 := $t0->$inline_vec; + $t7 := $t0->$big_vec; + $t8 := $t0->$inline_capacity; + $t9 := $t0->$bucket_size; + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:81+1 + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:65+1 + + // trace_local[big_vec]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:74:39+7 + assume {:print "$track_local(104,7,1):", $t7} $t7 == $t7; + + // vector::destroy_empty<#0>($t6) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:75:9+33 + assume {:print "$at(148,2933,2966)"} true; + call $1_vector_destroy_empty'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,2933,2966)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + goto L4; + } + + // opaque begin: option::destroy_none>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + + // assume Identical($t10, option::spec_is_some>($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume ($t10 == $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t7)); + + // if ($t10) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + if ($t10) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 +L6: + + // assume And(option::spec_is_some>($t7), Eq(262144, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + assume ($1_option_spec_is_some'$1_big_vector_BigVector'#0''($t7) && $IsEqual'num'(262144, $t3)); + + // trace_abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + assume {:print "$track_abort(104,7):", $t3} $t3 == $t3; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 +L5: + + // opaque end: option::destroy_none>($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:76:9+29 + assume {:print "$at(148,2976,3005)"} true; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 + assume {:print "$at(148,3011,3012)"} true; +L3: + + // assert Not(Not(smart_vector::$is_empty[]<#0>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:29:9+28 + assume {:print "$at(149,1039,1067)"} true; + assert {:msg "assert_failed(149,1039,1067): function does not abort under this condition"} + !!$1_smart_vector_$is_empty'#0'($t0); + + // assert Not(Or(Neq(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), 0), option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:30:9+81 + assume {:print "$at(149,1076,1157)"} true; + assert {:msg "assert_failed(149,1076,1157): function does not abort under this condition"} + !(!$IsEqual'num'(LenVec($t0->$inline_vec), 0) || $1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:30:9+81 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:77:5+1 + assume {:print "$at(148,3011,3012)"} true; +L4: + + // assert Or(Not(smart_vector::$is_empty[]<#0>($t0)), Or(Neq(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), 0), option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:28:5+153 + assume {:print "$at(149,1010,1163)"} true; + assert {:msg "assert_failed(149,1010,1163): abort not covered by any of the `aborts_if` clauses"} + (!$1_smart_vector_$is_empty'#0'($t0) || (!$IsEqual'num'(LenVec($t0->$inline_vec), 0) || $1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec))); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:28:5+153 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun smart_vector::empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:42:5+241 +procedure {:inline 1} $1_smart_vector_empty'#0'() returns ($ret0: $1_smart_vector_SmartVector'#0') +{ + // declare local variables + var $t0: Vec (#0); + var $t1: int; + var $t2: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t3: $1_option_Option'u64'; + var $t4: $1_option_Option'u64'; + var $t5: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + + // bytecode translation starts here + // $t0 := vector::empty<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:44:25+8 + assume {:print "$at(148,1730,1738)"} true; + call $t0 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,1730,1738)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(104,8):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume {:print "$at(148,1761,1775)"} true; + + // assume And(WellFormed($t2), And(Le(Len>(select option::Option.vec($t2)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t2): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($t2) && ((LenVec($t2->$vec) <= 1) && (var $range_0 := $t2->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume Eq>>($t2, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume $IsEqual'$1_option_Option'$1_big_vector_BigVector'#0'''($t2, $1_option_spec_none'$1_big_vector_BigVector'#0''()); + + // $t2 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + + // $t3 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume {:print "$at(148,1806,1820)"} true; + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume ($IsValid'$1_option_Option'u64''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>($t3, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume $IsEqual'$1_option_Option'u64''($t3, $1_option_spec_none'u64'()); + + // $t3 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + + // $t4 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume {:print "$at(148,1847,1861)"} true; + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume ($IsValid'$1_option_Option'u64''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume Eq>($t4, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume $IsEqual'$1_option_Option'u64''($t4, $1_option_spec_none'u64'()); + + // $t4 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + + // $t5 := pack smart_vector::SmartVector<#0>($t0, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:43:9+180 + assume {:print "$at(148,1692,1872)"} true; + $t5 := $1_smart_vector_SmartVector'#0'($t0, $t2, $t3, $t4); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:43:9+180 + assume {:print "$track_return(104,8,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 + assume {:print "$at(148,1877,1878)"} true; +L1: + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 + assume {:print "$at(148,1877,1878)"} true; + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 + assume {:print "$at(148,1877,1878)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun smart_vector::empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:42:5+241 +procedure {:timeLimit 80} $1_smart_vector_empty$verify() returns ($ret0: $1_smart_vector_SmartVector'#0') +{ + // declare local variables + var $t0: Vec (#0); + var $t1: int; + var $t2: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t3: $1_option_Option'u64'; + var $t4: $1_option_Option'u64'; + var $t5: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := vector::empty<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:44:25+8 + assume {:print "$at(148,1730,1738)"} true; + call $t0 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,1730,1738)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(104,8):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume {:print "$at(148,1761,1775)"} true; + + // assume And(WellFormed($t2), And(Le(Len>(select option::Option.vec($t2)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t2): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($t2) && ((LenVec($t2->$vec) <= 1) && (var $range_0 := $t2->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume Eq>>($t2, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + assume $IsEqual'$1_option_Option'$1_big_vector_BigVector'#0'''($t2, $1_option_spec_none'$1_big_vector_BigVector'#0''()); + + // $t2 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:45:22+14 + + // $t3 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume {:print "$at(148,1806,1820)"} true; + + // assume And(WellFormed($t3), Le(Len(select option::Option.vec($t3)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume ($IsValid'$1_option_Option'u64''($t3) && (LenVec($t3->$vec) <= 1)); + + // assume Eq>($t3, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + assume $IsEqual'$1_option_Option'u64''($t3, $1_option_spec_none'u64'()); + + // $t3 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:46:30+14 + + // $t4 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume {:print "$at(148,1847,1861)"} true; + + // assume And(WellFormed($t4), Le(Len(select option::Option.vec($t4)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume ($IsValid'$1_option_Option'u64''($t4) && (LenVec($t4->$vec) <= 1)); + + // assume Eq>($t4, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + assume $IsEqual'$1_option_Option'u64''($t4, $1_option_spec_none'u64'()); + + // $t4 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:47:26+14 + + // $t5 := pack smart_vector::SmartVector<#0>($t0, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:43:9+180 + assume {:print "$at(148,1692,1872)"} true; + $t5 := $1_smart_vector_SmartVector'#0'($t0, $t2, $t3, $t4); + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t5)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t5)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t5)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($t5->$bucket_size) || ($1_option_$is_some'u64'($t5->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t5->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t5)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t5)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($t5->$inline_capacity) || (LenVec($t5->$inline_vec) <= $1_option_$borrow'u64'($t5->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t5)), option::$is_none(select smart_vector::SmartVector.bucket_size($t5))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t5)), option::$is_some(select smart_vector::SmartVector.bucket_size($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($t5->$inline_capacity) && $1_option_$is_none'u64'($t5->$bucket_size)) || ($1_option_$is_some'u64'($t5->$inline_capacity) && $1_option_$is_some'u64'($t5->$bucket_size))); + + // trace_return[0]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:43:9+180 + assume {:print "$at(148,1692,1872)"} true; + assume {:print "$track_return(104,8,0):", $t5} $t5 == $t5; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 + assume {:print "$at(148,1877,1878)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:21:9+16 + assume {:print "$at(149,910,926)"} true; + assert {:msg "assert_failed(149,910,926): function does not abort under this condition"} + !false; + + // return $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:21:9+16 + $ret0 := $t5; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:49:5+1 + assume {:print "$at(148,1877,1878)"} true; +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:20:5+43 + assume {:print "$at(149,889,932)"} true; + assert {:msg "assert_failed(149,889,932): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:20:5+43 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun smart_vector::is_empty<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+85 +procedure {:inline 1} $1_smart_vector_is_empty'#0'(_$t0: $1_smart_vector_SmartVector'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+1 + assume {:print "$at(148,14599,14600)"} true; + assume {:print "$track_local(104,11,0):", $t0} $t0 == $t0; + + // $t1 := smart_vector::length<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:9+12 + assume {:print "$at(148,14661,14673)"} true; + call $t1 := $1_smart_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,14661,14673)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,11):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:25+1 + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:22+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:9+17 + assume {:print "$track_return(104,11,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun smart_vector::is_empty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+85 +procedure {:timeLimit 80} $1_smart_vector_is_empty$verify(_$t0: $1_smart_vector_SmartVector'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+1 + assume {:print "$at(148,14599,14600)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:343:5+1 + assume {:print "$track_local(104,11,0):", $t0} $t0 == $t0; + + // $t1 := smart_vector::length<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:9+12 + assume {:print "$at(148,14661,14673)"} true; + call $t1 := $1_smart_vector_length'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,14661,14673)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,11):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:25+1 + $t3 := 0; + assume $IsValid'u64'($t3); + + // $t4 := ==($t1, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:22+2 + $t4 := $IsEqual'u64'($t1, $t3); + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:344:9+17 + assume {:print "$track_return(104,11,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:345:5+1 + assume {:print "$at(148,14683,14684)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun smart_vector::length<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+240 +procedure {:inline 1} $1_smart_vector_length'#0'(_$t0: $1_smart_vector_SmartVector'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t3: bool; + var $t4: int; + var $t5: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t6: $1_big_vector_BigVector'#0'; + var $t7: bool; + var $t8: int; + var $t9: Vec (#0); + var $t10: int; + var $t11: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+1 + assume {:print "$at(148,14277,14278)"} true; + assume {:print "$track_local(104,12,0):", $t0} $t0 == $t0; + + // $t2 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:64+13 + assume {:print "$at(148,14391,14404)"} true; + $t2 := $t0->$big_vec; + + // $t3 := opaque begin: option::is_none>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_none>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + assume $IsEqual'bool'($t3, $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t2)); + + // $t3 := opaque end: option::is_none>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:336:13+1 + assume {:print "$at(148,14421,14422)"} true; +L1: + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:336:13+1 + assume {:print "$at(148,14421,14422)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + assume {:print "$at(148,14371,14511)"} true; + $t1 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:48+4 + assume {:print "$at(148,14487,14491)"} true; +L0: + + // $t5 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:47+13 + assume {:print "$at(148,14486,14499)"} true; + $t5 := $t0->$big_vec; + + // $t6 := opaque begin: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + + // assume Identical($t7, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume ($t7 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5)); + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 +L6: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 +L5: + + // assume And(WellFormed($t6), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t6), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0))), Implies(Eq(select big_vector::BigVector.end_index($t6), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0))), Le(select big_vector::BigVector.end_index($t6), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), i)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), select big_vector::BigVector.bucket_size($t6)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), Div(Sub(Add(select big_vector::BigVector.end_index($t6), select big_vector::BigVector.bucket_size($t6)), 1), select big_vector::BigVector.bucket_size($t6)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1), select big_vector::BigVector.bucket_size($t6)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)))), select big_vector::BigVector.end_index($t6))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t6) && (((((((((((!$IsEqual'u64'($t6->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) ==> $IsEqual'u64'($t6->$end_index, 0))) && ($IsEqual'u64'($t6->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0))) && ($t6->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) * $t6->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, i)), $t6->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) <= $t6->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), ((($t6->$end_index + $t6->$bucket_size) - 1) div $t6->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'u64'($t6->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1) * $t6->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)))), $t6->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) > 0)))); + + // assume Eq>($t6, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t6, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t5)); + + // $t6 := opaque end: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + + // $t1 := big_vector::length<#0>($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:13+49 + call $t1 := $1_big_vector_length'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,14452,14501)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:25+4 + assume {:print "$at(148,14352,14356)"} true; +L2: + + // $t9 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:24+16 + assume {:print "$at(148,14351,14367)"} true; + $t9 := $t0->$inline_vec; + + // $t10 := vector::length<#0>($t9) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:9+32 + call $t10 := $1_vector_length'#0'($t9); + if ($abort_flag) { + assume {:print "$at(148,14336,14368)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // $t11 := +($t10, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:42+1 + call $t11 := $AddU64($t10, $t1); + if ($abort_flag) { + assume {:print "$at(148,14369,14370)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:9+175 + assume {:print "$track_return(104,12,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 + assume {:print "$at(148,14516,14517)"} true; +L3: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 + assume {:print "$at(148,14516,14517)"} true; + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 + assume {:print "$at(148,14516,14517)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun smart_vector::length [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+240 +procedure {:timeLimit 80} $1_smart_vector_length$verify(_$t0: $1_smart_vector_SmartVector'#0') returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t2: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t3: bool; + var $t4: int; + var $t5: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t6: $1_big_vector_BigVector'#0'; + var $t7: bool; + var $t8: int; + var $t9: Vec (#0); + var $t10: int; + var $t11: int; + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+1 + assume {:print "$at(148,14277,14278)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:334:5+1 + assume {:print "$track_local(104,12,0):", $t0} $t0 == $t0; + + // $t2 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:64+13 + assume {:print "$at(148,14391,14404)"} true; + $t2 := $t0->$big_vec; + + // $t3 := opaque begin: option::is_none>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + assume $IsValid'bool'($t3); + + // assume Eq($t3, option::spec_is_none>($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + assume $IsEqual'bool'($t3, $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t2)); + + // $t3 := opaque end: option::is_none>($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:48+30 + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:336:13+1 + assume {:print "$at(148,14421,14422)"} true; +L1: + + // $t4 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:336:13+1 + assume {:print "$at(148,14421,14422)"} true; + $t4 := 0; + assume $IsValid'u64'($t4); + + // $t1 := $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + assume {:print "$at(148,14371,14511)"} true; + $t1 := $t4; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:44+140 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:48+4 + assume {:print "$at(148,14487,14491)"} true; +L0: + + // $t5 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:47+13 + assume {:print "$at(148,14486,14499)"} true; + $t5 := $t0->$big_vec; + + // $t6 := opaque begin: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + + // assume Identical($t7, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume ($t7 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5)); + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 +L6: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 +L5: + + // assume And(WellFormed($t6), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t6), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0))), Implies(Eq(select big_vector::BigVector.end_index($t6), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0))), Le(select big_vector::BigVector.end_index($t6), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), i)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), select big_vector::BigVector.bucket_size($t6)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), Div(Sub(Add(select big_vector::BigVector.end_index($t6), select big_vector::BigVector.bucket_size($t6)), 1), select big_vector::BigVector.bucket_size($t6)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1), select big_vector::BigVector.bucket_size($t6)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)))), select big_vector::BigVector.end_index($t6))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume {:print "$at(148,14471,14500)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t6) && (((((((((((!$IsEqual'u64'($t6->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) ==> $IsEqual'u64'($t6->$end_index, 0))) && ($IsEqual'u64'($t6->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0))) && ($t6->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) * $t6->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, i)), $t6->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) <= $t6->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), ((($t6->$end_index + $t6->$bucket_size) - 1) div $t6->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'u64'($t6->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1) * $t6->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)))), $t6->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) > 0)))); + + // assume Eq>($t6, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t6, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t5)); + + // $t6 := opaque end: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:32+29 + + // $t1 := big_vector::length<#0>($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:338:13+49 + call $t1 := $1_big_vector_length'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,14452,14501)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:25+4 + assume {:print "$at(148,14352,14356)"} true; +L2: + + // $t9 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:24+16 + assume {:print "$at(148,14351,14367)"} true; + $t9 := $t0->$inline_vec; + + // $t10 := vector::length<#0>($t9) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:9+32 + call $t10 := $1_vector_length'#0'($t9); + if ($abort_flag) { + assume {:print "$at(148,14336,14368)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // $t11 := +($t10, $t1) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:42+1 + call $t11 := $AddU64($t10, $t1); + if ($abort_flag) { + assume {:print "$at(148,14369,14370)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,12):", $t8} $t8 == $t8; + goto L4; + } + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:335:9+175 + assume {:print "$track_return(104,12,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 + assume {:print "$at(148,14516,14517)"} true; +L3: + + // assert Not(And(option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)), Gt(Add(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), big_vector::$length[]<#0>(option::spec_borrow[]>(select smart_vector::SmartVector.big_vec>($t0)))), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:16:9+143 + assume {:print "$at(149,734,877)"} true; + assert {:msg "assert_failed(149,734,877): function does not abort under this condition"} + !($1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec) && ((LenVec($t0->$inline_vec) + $1_big_vector_$length'#0'($1_option_spec_borrow'$1_big_vector_BigVector'#0''($t0->$big_vec))) > 18446744073709551615)); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:16:9+143 + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:340:5+1 + assume {:print "$at(148,14516,14517)"} true; +L4: + + // assert And(option::$is_some[]>(select smart_vector::SmartVector.big_vec>($t0)), Gt(Add(Len<#0>(select smart_vector::SmartVector.inline_vec>($t0)), big_vector::$length[]<#0>(option::spec_borrow[]>(select smart_vector::SmartVector.big_vec>($t0)))), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:15:5+171 + assume {:print "$at(149,712,883)"} true; + assert {:msg "assert_failed(149,712,883): abort not covered by any of the `aborts_if` clauses"} + ($1_option_$is_some'$1_big_vector_BigVector'#0''($t0->$big_vec) && ((LenVec($t0->$inline_vec) + $1_big_vector_$length'#0'($1_option_spec_borrow'$1_big_vector_BigVector'#0''($t0->$big_vec))) > 18446744073709551615)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:15:5+171 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun smart_vector::pop_back<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:180:5+633 +procedure {:inline 1} $1_smart_vector_pop_back'#0'(_$t0: $Mutation ($1_smart_vector_SmartVector'#0')) returns ($ret0: #0, $ret1: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t1: #0; + var $t2: $1_big_vector_BigVector'#0'; + var $t3: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t4: #0; + var $t5: $1_smart_vector_SmartVector'#0'; + var $t6: bool; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t12: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t13: bool; + var $t14: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t15: bool; + var $t16: $Mutation ($1_big_vector_BigVector'#0'); + var $t17: #0; + var $t18: $1_big_vector_BigVector'#0'; + var $t19: bool; + var $t20: $1_big_vector_BigVector'#0'; + var $t21: $1_big_vector_BigVector'#0'; + var $t22: bool; + var $t23: $Mutation (Vec (#0)); + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $temp_0'#0': #0; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:180:5+1 + assume {:print "$at(148,7459,7460)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t5 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:27+4 + assume {:print "$at(148,7540,7544)"} true; + $t5 := $Dereference($t0); + + // $t6 := smart_vector::is_empty<#0>($t5) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:18+14 + call $t6 := $1_smart_vector_is_empty'#0'($t5); + if ($abort_flag) { + assume {:print "$at(148,7531,7545)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // $t8 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:17+1 + call $t8 := $Not($t6); + + // if ($t8) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + if ($t8) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + assume {:print "$at(148,7522,7583)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 +L0: + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + assume {:print "$at(148,7522,7583)"} true; + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + + // $t9 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:55+13 + $t9 := 3; + assume $IsValid'u64'($t9); + + // $t10 := error::invalid_state($t9) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:34+35 + call $t10 := $1_error_invalid_state($t9); + if ($abort_flag) { + assume {:print "$at(148,7547,7582)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + assume {:print "$at(148,7522,7583)"} true; + assume {:print "$track_abort(104,14):", $t10} $t10 == $t10; + + // $t7 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + $t7 := $t10; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:181:9+61 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:182:36+4 + assume {:print "$at(148,7620,7624)"} true; +L2: + + // $t11 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:182:31+17 + assume {:print "$at(148,7615,7632)"} true; + $t11 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // trace_local[big_vec_wrapper]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:182:13+15 + $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' := $Dereference($t11); + assume {:print "$track_local(104,14,3):", $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''} $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''' == $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + + // $t12 := read_ref($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:29+15 + assume {:print "$at(148,7662,7677)"} true; + $t12 := $Dereference($t11); + + // $t13 := opaque begin: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:13+32 + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:13+32 + assume $IsValid'bool'($t13); + + // assume Eq($t13, option::spec_is_some>($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:13+32 + assume $IsEqual'bool'($t13, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t12)); + + // $t13 := opaque end: option::is_some>($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:13+32 + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:13+46 + assume {:print "$at(148,7694,7740)"} true; +L4: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:13+46 + assume {:print "$at(148,7694,7740)"} true; + + // $t2 := opaque begin: option::extract>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + + // $t14 := read_ref($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + $t14 := $Dereference($t11); + + // assume Identical($t15, option::spec_is_none>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume ($t15 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t11))); + + // if ($t15) goto L15 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + if ($t15) { goto L15; } else { goto L16; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 +L12: + + // assume And(option::spec_is_none>($t11), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume {:print "$at(148,7708,7740)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t11)) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume {:print "$at(148,7708,7740)"} true; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 +L11: + + // $t11 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume {:print "$at(148,7708,7740)"} true; + havoc $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + $t11 := $UpdateMutation($t11, $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''); + + // assume And(WellFormed($t11), And(Le(Len>(select option::Option.vec($t11)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t11): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($Dereference($t11)) && ((LenVec($Dereference($t11)->$vec) <= 1) && (var $range_0 := $Dereference($t11)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume And(WellFormed($t2), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t2), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), Eq(select big_vector::BigVector.end_index($t2), 0))), Implies(Eq(select big_vector::BigVector.end_index($t2), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0))), Le(select big_vector::BigVector.end_index($t2), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), select big_vector::BigVector.bucket_size($t2)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t2), i)), select big_vector::BigVector.bucket_size($t2)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t2), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 1))), select big_vector::BigVector.bucket_size($t2)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t2), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), Div(Sub(Add(select big_vector::BigVector.end_index($t2), select big_vector::BigVector.bucket_size($t2)), 1), select big_vector::BigVector.bucket_size($t2)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), Eq(select big_vector::BigVector.end_index($t2), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 1), select big_vector::BigVector.bucket_size($t2)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t2), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 1)))), select big_vector::BigVector.end_index($t2))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t2), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t2), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t2), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t2)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume ($IsValid'$1_big_vector_BigVector'#0''($t2) && (((((((((((!$IsEqual'u64'($t2->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) ==> $IsEqual'u64'($t2->$end_index, 0))) && ($IsEqual'u64'($t2->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0))) && ($t2->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) * $t2->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t2->$buckets, i)), $t2->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t2->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) - 1))) <= $t2->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t2->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), ((($t2->$end_index + $t2->$bucket_size) - 1) div $t2->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) && $IsEqual'u64'($t2->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) - 1) * $t2->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t2->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) - 1)))), $t2->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t2->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t2->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t2->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t2->$buckets) - 1))) > 0)))); + + // assume Eq>($t2, option::spec_borrow>($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume $IsEqual'$1_big_vector_BigVector'#0''($t2, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t14)); + + // assume option::spec_is_none>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + assume $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t11)); + + // $t2 := opaque end: option::extract>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:27+32 + + // trace_local[big_vec]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:184:17+7 + assume {:print "$track_local(104,14,2):", $t2} $t2 == $t2; + + // $t16 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:44+12 + assume {:print "$at(148,7785,7797)"} true; + $t16 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t17 := big_vector::pop_back<#0>($t16) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:23+34 + call $t17,$t16 := $1_big_vector_pop_back'#0'($t16); + if ($abort_flag) { + assume {:print "$at(148,7764,7798)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // pack_ref_deep($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:23+34 + + // write_back[LocalRoot($t2)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:23+34 + $t2 := $Dereference($t16); + + // trace_local[big_vec]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:23+34 + assume {:print "$track_local(104,14,2):", $t2} $t2 == $t2; + + // trace_local[val]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:185:17+3 + assume {:print "$track_local(104,14,4):", $t17} $t17 == $t17; + + // $t18 := copy($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:186:38+8 + assume {:print "$at(148,7837,7845)"} true; + $t18 := $t2; + + // $t19 := big_vector::is_empty<#0>($t18) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:186:17+30 + call $t19 := $1_big_vector_is_empty'#0'($t18); + if ($abort_flag) { + assume {:print "$at(148,7816,7846)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:186:13+179 + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + assume {:print "$at(148,7866,7900)"} true; +L6: + + // write_back[Reference($t0).big_vec (option::Option>)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + assume {:print "$at(148,7866,7900)"} true; + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t11))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + + // $t20 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:43+7 + $t20 := $t2; + + // big_vector::destroy_empty<#0>($t20) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + call $1_big_vector_destroy_empty'#0'($t20); + if ($abort_flag) { + assume {:print "$at(148,7866,7900)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:187:17+34 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:30+15 + assume {:print "$at(148,7951,7966)"} true; +L5: + + // $t21 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:47+7 + assume {:print "$at(148,7968,7975)"} true; + $t21 := $t2; + + // opaque begin: option::fill>($t11, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + + // assume Identical($t22, option::spec_is_some>($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume ($t22 == $1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t11))); + + // if ($t22) goto L17 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + if ($t22) { goto L17; } else { goto L18; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 +L14: + + // assume And(option::spec_is_some>($t11), Eq(262144, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume {:print "$at(148,7938,7976)"} true; + assume ($1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t11)) && $IsEqual'num'(262144, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume {:print "$at(148,7938,7976)"} true; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 +L13: + + // $t11 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume {:print "$at(148,7938,7976)"} true; + havoc $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + $t11 := $UpdateMutation($t11, $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''); + + // assume And(WellFormed($t11), And(Le(Len>(select option::Option.vec($t11)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t11): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($Dereference($t11)) && ((LenVec($Dereference($t11)->$vec) <= 1) && (var $range_0 := $Dereference($t11)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume option::spec_is_some>($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume $1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t11)); + + // assume Eq>(option::spec_borrow>($t11), $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + assume $IsEqual'$1_big_vector_BigVector'#0''($1_option_spec_borrow'$1_big_vector_BigVector'#0''($Dereference($t11)), $t21); + + // opaque end: option::fill>($t11, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + + // write_back[Reference($t0).big_vec (option::Option>)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t11))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:189:17+38 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:191:13+3 + assume {:print "$at(148,8005,8008)"} true; +L7: + + // $t1 := $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + assume {:print "$at(148,7642,8086)"} true; + $t1 := $t17; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 +L3: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + assume {:print "$at(148,7642,8086)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + + // $t23 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:193:30+20 + assume {:print "$at(148,8055,8075)"} true; + $t23 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // $t1 := vector::pop_back<#0>($t23) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:193:13+38 + call $t1,$t23 := $1_vector_pop_back'#0'($t23); + if ($abort_flag) { + assume {:print "$at(148,8038,8076)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,14):", $t7} $t7 == $t7; + goto L10; + } + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:193:13+38 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t23))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:193:13+38 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + assume {:print "$at(148,7642,8086)"} true; +L8: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + assume {:print "$at(148,7642,8086)"} true; + assume {:print "$track_return(104,14,0):", $t1} $t1 == $t1; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,14,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:183:9+444 + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:195:5+1 + assume {:print "$at(148,8091,8092)"} true; +L9: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:195:5+1 + assume {:print "$at(148,8091,8092)"} true; + $ret0 := $t1; + $ret1 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:195:5+1 +L10: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:195:5+1 + assume {:print "$at(148,8091,8092)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L15 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L15: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + + // label L16 at :1:1+10 +L16: + + // drop($t11) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + + // label L17 at :1:1+10 +L17: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L18 at :1:1+10 +L18: + + // drop($t11) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L13 at :1:1+10 + goto L13; + +} + +// fun smart_vector::push_back<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:154:5+1126 +procedure {:inline 1} $1_smart_vector_push_back'#0'(_$t0: $Mutation ($1_smart_vector_SmartVector'#0'), _$t1: #0) returns ($ret0: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_smart_vector_SmartVector'#0'; + var $t9: int; + var $t10: int; + var $t11: Vec (#0); + var $t12: int; + var $t13: bool; + var $t14: $1_option_Option'u64'; + var $t15: bool; + var $t16: $1_option_Option'u64'; + var $t17: int; + var $t18: bool; + var $t19: bool; + var $t20: $Mutation (Vec (#0)); + var $t21: $1_option_Option'u64'; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: $Mutation (Vec (#0)); + var $t31: Vec (#0); + 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 $t42: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t43: $1_big_vector_BigVector'#0'; + var $t44: bool; + var $t45: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t46: $Mutation ($1_big_vector_BigVector'#0'); + var $t47: int; + var $t48: int; + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $t1: #0; + var $temp_0'#0': #0; + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:154:5+1 + assume {:print "$at(148,6199,6200)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[val]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:154:5+1 + assume {:print "$track_local(104,15,1):", $t1} $t1 == $t1; + + // $t8 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:155:26+4 + assume {:print "$at(148,6292,6296)"} true; + $t8 := $Dereference($t0); + + // $t9 := smart_vector::length<#0>($t8) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:155:19+12 + call $t9 := $1_smart_vector_length'#0'($t8); + if ($abort_flag) { + assume {:print "$at(148,6285,6297)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[len]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:155:13+3 + assume {:print "$track_local(104,15,6):", $t9} $t9 == $t9; + + // $t11 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:156:41+16 + assume {:print "$at(148,6339,6355)"} true; + $t11 := $Dereference($t0)->$inline_vec; + + // $t12 := vector::length<#0>($t11) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:156:26+32 + call $t12 := $1_vector_length'#0'($t11); + if ($abort_flag) { + assume {:print "$at(148,6324,6356)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[inline_len]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:156:13+10 + assume {:print "$track_local(104,15,5):", $t12} $t12 == $t12; + + // $t13 := ==($t9, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:157:17+2 + assume {:print "$at(148,6374,6376)"} true; + $t13 := $IsEqual'u64'($t9, $t12); + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:157:9+877 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:52+4 + assume {:print "$at(148,6442,6446)"} true; +L1: + + // $t14 := get_field>.inline_capacity($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:51+21 + assume {:print "$at(148,6441,6462)"} true; + $t14 := $Dereference($t0)->$inline_capacity; + + // $t15 := opaque begin: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:35+38 + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:35+38 + assume $IsValid'bool'($t15); + + // assume Eq($t15, option::spec_is_some($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:35+38 + assume $IsEqual'bool'($t15, $1_option_spec_is_some'u64'($t14)); + + // $t15 := opaque end: option::is_some($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:35+38 + + // if ($t15) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:31+734 + if ($t15) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:21+3 + assume {:print "$at(148,6487,6490)"} true; +L3: + + // $t16 := get_field>.inline_capacity($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:43+21 + assume {:print "$at(148,6509,6530)"} true; + $t16 := $Dereference($t0)->$inline_capacity; + + // $t17 := opaque begin: option::borrow($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + + // assume Identical($t18, option::spec_is_none($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + assume ($t18 == $1_option_spec_is_none'u64'($t16)); + + // if ($t18) goto L17 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + if ($t18) { goto L17; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 +L12: + + // assume And(option::spec_is_none($t16), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + assume {:print "$at(148,6494,6531)"} true; + assume ($1_option_spec_is_none'u64'($t16) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + assume {:print "$at(148,6494,6531)"} true; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 +L11: + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + assume {:print "$at(148,6494,6531)"} true; + assume $IsValid'u64'($t17); + + // assume Eq($t17, option::spec_borrow($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + assume $IsEqual'u64'($t17, $1_option_spec_borrow'u64'($t16)); + + // $t17 := opaque end: option::borrow($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:28+37 + + // $t19 := <($t9, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:25+1 + call $t19 := $Lt($t9, $t17); + + // if ($t19) goto L5 else goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:159:17+162 + if ($t19) { goto L5; } else { goto L4; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:160:44+4 + assume {:print "$at(148,6578,6582)"} true; +L5: + + // $t20 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:160:39+20 + assume {:print "$at(148,6573,6593)"} true; + $t20 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // vector::push_back<#0>($t20, $t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:160:21+44 + call $t20 := $1_vector_push_back'#0'($t20, $t1); + if ($abort_flag) { + assume {:print "$at(148,6555,6599)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:160:21+44 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t20))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:160:21+44 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:161:21+6 + assume {:print "$at(148,6621,6627)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:161:21+6 + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:161:21+6 + goto L9; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:34+4 + assume {:print "$at(148,6680,6684)"} true; +L4: + + // $t21 := get_field>.bucket_size($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:33+17 + assume {:print "$at(148,6679,6696)"} true; + $t21 := $Dereference($t0)->$bucket_size; + + // $t22 := opaque begin: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + + // assume Identical($t23, option::spec_is_none($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + assume ($t23 == $1_option_spec_is_none'u64'($t21)); + + // if ($t23) goto L18 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + if ($t23) { goto L18; } else { goto L13; } + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 +L14: + + // assume And(option::spec_is_none($t21), Eq(262145, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + assume {:print "$at(148,6664,6697)"} true; + assume ($1_option_spec_is_none'u64'($t21) && $IsEqual'num'(262145, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + assume {:print "$at(148,6664,6697)"} true; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + goto L10; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 +L13: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + assume {:print "$at(148,6664,6697)"} true; + assume $IsValid'u64'($t22); + + // assume Eq($t22, option::spec_borrow($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + assume $IsEqual'u64'($t22, $1_option_spec_borrow'u64'($t21)); + + // $t22 := opaque end: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:163:18+33 + + // $t2 := $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:31+734 + assume {:print "$at(148,6421,7155)"} true; + $t2 := $t22; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:31+734 + goto L6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:165:44+4 + assume {:print "$at(148,6762,6766)"} true; +L2: + + // $t24 := type_info::size_of_val<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:165:32+17 + assume {:print "$at(148,6750,6767)"} true; + call $t24 := $1_type_info_size_of_val'#0'($t1); + if ($abort_flag) { + assume {:print "$at(148,6750,6767)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[val_size]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:165:21+8 + assume {:print "$track_local(104,15,7):", $t24} $t24 == $t24; + + // $t25 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:46+1 + assume {:print "$at(148,6814,6815)"} true; + $t25 := 1; + assume $IsValid'u64'($t25); + + // $t26 := +($t12, $t25) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:44+1 + call $t26 := $AddU64($t12, $t25); + if ($abort_flag) { + assume {:print "$at(148,6812,6813)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t27 := *($t24, $t26) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:30+1 + call $t27 := $MulU64($t24, $t26); + if ($abort_flag) { + assume {:print "$at(148,6798,6799)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t28 := 150 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:51+3 + $t28 := 150; + assume $IsValid'u64'($t28); + + // $t29 := <($t27, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:49+1 + call $t29 := $Lt($t27, $t28); + + // if ($t29) goto L8 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:166:17+170 + if ($t29) { goto L8; } else { goto L7; } + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:167:44+4 + assume {:print "$at(148,6888,6892)"} true; +L8: + + // $t30 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:167:39+20 + assume {:print "$at(148,6883,6903)"} true; + $t30 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // vector::push_back<#0>($t30, $t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:167:21+44 + call $t30 := $1_vector_push_back'#0'($t30, $t1); + if ($abort_flag) { + assume {:print "$at(148,6865,6909)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:167:21+44 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t30))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:167:21+44 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:168:21+6 + assume {:print "$at(148,6931,6937)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:168:21+6 + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:168:21+6 + goto L9; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:60+4 + assume {:print "$at(148,7016,7020)"} true; +L7: + + // $t31 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:59+16 + assume {:print "$at(148,7015,7031)"} true; + $t31 := $Dereference($t0)->$inline_vec; + + // $t32 := type_info::size_of_val>($t31) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:47+29 + call $t32 := $1_type_info_size_of_val'vec'#0''($t31); + if ($abort_flag) { + assume {:print "$at(148,7003,7032)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t33 := +($t32, $t24) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:77+1 + call $t33 := $AddU64($t32, $t24); + if ($abort_flag) { + assume {:print "$at(148,7033,7034)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t34 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:105+1 + $t34 := 1; + assume $IsValid'u64'($t34); + + // $t35 := +($t12, $t34) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:103+1 + call $t35 := $AddU64($t12, $t34); + if ($abort_flag) { + assume {:print "$at(148,7059,7060)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t36 := /($t33, $t35) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:89+1 + call $t36 := $Div($t33, $t35); + if ($abort_flag) { + assume {:print "$at(148,7045,7046)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t37 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:109+1 + $t37 := 1; + assume $IsValid'u64'($t37); + + // $t38 := math64::max($t36, $t37) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:42+69 + call $t38 := $1_math64_max($t36, $t37); + if ($abort_flag) { + assume {:print "$at(148,6998,7067)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[estimated_avg_size]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:170:21+18 + assume {:print "$track_local(104,15,4):", $t38} $t38 == $t38; + + // $t39 := 1024 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:171:21+4 + assume {:print "$at(148,7089,7093)"} true; + $t39 := 1024; + assume $IsValid'u64'($t39); + + // $t40 := /($t39, $t38) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:171:49+1 + call $t40 := $Div($t39, $t38); + if ($abort_flag) { + assume {:print "$at(148,7117,7118)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // $t41 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:171:71+1 + $t41 := 1; + assume $IsValid'u64'($t41); + + // $t2 := math64::max($t40, $t41) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:171:17+56 + call $t2 := $1_math64_max($t40, $t41); + if ($abort_flag) { + assume {:print "$at(148,7085,7141)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:31+734 + assume {:print "$at(148,6421,7155)"} true; +L6: + + // trace_local[bucket_size]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:158:17+11 + assume {:print "$at(148,6407,6418)"} true; + assume {:print "$track_local(104,15,3):", $t2} $t2 == $t2; + + // $t42 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:26+17 + assume {:print "$at(148,7182,7199)"} true; + $t42 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t43 := big_vector::empty<#0>($t2) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:45+30 + call $t43 := $1_big_vector_empty'#0'($t2); + if ($abort_flag) { + assume {:print "$at(148,7201,7231)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // opaque begin: option::fill>($t42, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + + // assume Identical($t44, option::spec_is_some>($t42)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume ($t44 == $1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t42))); + + // if ($t44) goto L19 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + if ($t44) { goto L19; } else { goto L20; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 +L16: + + // assume And(option::spec_is_some>($t42), Eq(262144, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume {:print "$at(148,7169,7232)"} true; + assume ($1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t42)) && $IsEqual'num'(262144, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume {:print "$at(148,7169,7232)"} true; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + goto L10; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 +L15: + + // $t42 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume {:print "$at(148,7169,7232)"} true; + havoc $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + $t42 := $UpdateMutation($t42, $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''); + + // assume And(WellFormed($t42), And(Le(Len>(select option::Option.vec($t42)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t42): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($Dereference($t42)) && ((LenVec($Dereference($t42)->$vec) <= 1) && (var $range_0 := $Dereference($t42)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume option::spec_is_some>($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume $1_option_spec_is_some'$1_big_vector_BigVector'#0''($Dereference($t42)); + + // assume Eq>(option::spec_borrow>($t42), $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + assume $IsEqual'$1_big_vector_BigVector'#0''($1_option_spec_borrow'$1_big_vector_BigVector'#0''($Dereference($t42)), $t43); + + // opaque end: option::fill>($t42, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + + // write_back[Reference($t0).big_vec (option::Option>)]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t42))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:173:13+63 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:55+4 + assume {:print "$at(148,7299,7303)"} true; +L0: + + // $t45 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:50+17 + assume {:print "$at(148,7294,7311)"} true; + $t45 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t46 := option::borrow_mut>($t45) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:31+37 + call $t46,$t45 := $1_option_borrow_mut'$1_big_vector_BigVector'#0''($t45); + if ($abort_flag) { + assume {:print "$at(148,7275,7312)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // assume Identical($t47, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t46))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:70:9+47 + assume {:print "$at(145,2929,2976)"} true; + assume ($t47 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t46)->$buckets)); + + // assume Identical($t48, big_vector::spec_table_len>(select big_vector::BigVector.buckets>($t46))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:81:9+47 + assume {:print "$at(145,3416,3463)"} true; + assume ($t48 == $1_big_vector_spec_table_len'u64_vec'#0''($Dereference($t46)->$buckets)); + + // big_vector::push_back<#0>($t46, $t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:9+65 + assume {:print "$at(148,7253,7318)"} true; + call $t46 := $1_big_vector_push_back'#0'($t46, $t1); + if ($abort_flag) { + assume {:print "$at(148,7253,7318)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(104,15):", $t10} $t10 == $t10; + goto L10; + } + + // write_back[Reference($t45).vec (vector>)/[]]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:9+65 + $t45 := $UpdateMutation($t45, (var $$sel0 := $Dereference($t45)->$vec; $Update'$1_option_Option'$1_big_vector_BigVector'#0'''_vec($Dereference($t45), UpdateVec($$sel0, ReadVec($t46->p, LenVec($t45->p) + 1), $Dereference($t46))))); + + // write_back[Reference($t0).big_vec (option::Option>)]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:9+65 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t45))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:9+65 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:74+1 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,15,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:175:74+1 + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:176:5+1 + assume {:print "$at(148,7324,7325)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:176:5+1 + assume {:print "$at(148,7324,7325)"} true; + $ret0 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:176:5+1 +L10: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:176:5+1 + assume {:print "$at(148,7324,7325)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L17 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L17: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + + // label L18 at :1:1+10 +L18: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + + // label L19 at :1:1+10 +L19: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L16 at :1:1+10 + goto L16; + + // label L20 at :1:1+10 +L20: + + // drop($t42) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L15 at :1:1+10 + goto L15; + +} + +// fun smart_vector::reverse [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:279:5+1337 +procedure {:timeLimit 80} $1_smart_vector_reverse$verify(_$t0: $Mutation ($1_smart_vector_SmartVector'#0')) returns ($ret0: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: Vec (#0); + var $t4: Vec (#0); + var $t5: Vec (#0); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: #0; + var $t11: int; + var $t12: int; + var $t13: $Mutation (Vec (#0)); + var $t14: $Mutation (Vec (#0)); + var $t15: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t16: bool; + var $t17: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t18: $Mutation ($1_big_vector_BigVector'#0'); + var $t19: Vec (#0); + var $t20: bool; + var $t21: bool; + var $t22: #0; + var $t23: $Mutation (Vec (#0)); + var $t24: $Mutation (Vec (#0)); + var $t25: $Mutation (Vec (#0)); + var $t26: $Mutation (Vec (#0)); + var $t27: Vec (#0); + var $t28: bool; + var $t29: bool; + var $t30: #0; + var $t31: $Mutation (Vec (#0)); + var $t32: $Mutation (Vec (#0)); + var $t33: $Mutation (Vec (#0)); + var $t34: Vec (#0); + var $t35: Vec (#0); + var $t36: bool; + var $t37: bool; + var $t38: #0; + var $t39: $Mutation (Vec (#0)); + var $t40: $Mutation (Vec (#0)); + var $t41: Vec (#0); + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:279:5+1 + assume {:print "$at(148,11950,11951)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:279:5+1 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t5 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:280:41+16 + assume {:print "$at(148,12048,12064)"} true; + $t5 := $Dereference($t0)->$inline_vec; + + // $t6 := vector::length<#0>($t5) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:280:26+32 + call $t6 := $1_vector_length'#0'($t5); + if ($abort_flag) { + assume {:print "$at(148,12033,12065)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // trace_local[inline_len]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:280:13+10 + assume {:print "$track_local(104,17,2):", $t6} $t6 == $t6; + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:281:17+1 + assume {:print "$at(148,12083,12084)"} true; + $t8 := 0; + assume $IsValid'u64'($t8); + + // trace_local[i]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:281:13+1 + assume {:print "$track_local(104,17,1):", $t8} $t8 == $t8; + + // $t3 := vector::empty<#0>() on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:282:30+8 + assume {:print "$at(148,12115,12123)"} true; + call $t3 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,12115,12123)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:282:13+14 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume {:print "$at(148,12201,12202)"} true; +L3: + + // $t1 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume {:print "$at(148,12201,12202)"} true; + havoc $t1; + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'u64'($t1); + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'vec'#0''($t3); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'#0'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'u64'($t12); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $temp_0'$1_smart_vector_SmartVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_smart_vector_SmartVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // $t13 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume $IsValid'vec'#0''($Dereference($t13)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume {:print "$info(): enter loop, variable(s) self, i, new_inline_vec havocked and reassigned"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[i]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume {:print "$track_local(104,17,1):", $t1} $t1 == $t1; + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:16+1 + assume !$abort_flag; + + // $t9 := <($t1, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:18+1 + call $t9 := $Lt($t1, $t6); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:9+125 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:284:9+125 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:31+19 + assume {:print "$at(148,12249,12268)"} true; +L2: + + // $t13 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:31+19 + assume {:print "$at(148,12249,12268)"} true; + $t13 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t10 := smart_vector::pop_back<#0>($t0) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:52+14 + call $t10,$t0 := $1_smart_vector_pop_back'#0'($t0); + if ($abort_flag) { + assume {:print "$at(148,12270,12284)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // vector::push_back<#0>($t13, $t10) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:13+54 + call $t13 := $1_vector_push_back'#0'($t13, $t10); + if ($abort_flag) { + assume {:print "$at(148,12231,12285)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:13+54 + $t3 := $Dereference($t13); + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:285:13+54 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // $t11 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:286:21+1 + assume {:print "$at(148,12307,12308)"} true; + $t11 := 1; + assume $IsValid'u64'($t11); + + // $t12 := +($t1, $t11) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:286:19+1 + call $t12 := $AddU64($t1, $t11); + if ($abort_flag) { + assume {:print "$at(148,12305,12306)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // trace_local[i]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:286:13+1 + assume {:print "$track_local(104,17,1):", $t12} $t12 == $t12; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:286:22+1 + goto L18; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:288:25+19 + assume {:print "$at(148,12345,12364)"} true; +L0: + + // $t14 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:288:25+19 + assume {:print "$at(148,12345,12364)"} true; + $t14 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::reverse<#0>($t14) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:288:9+36 + call $t14 := $1_vector_reverse'#0'($t14); + if ($abort_flag) { + assume {:print "$at(148,12329,12365)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:288:9+36 + $t3 := $Dereference($t14); + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:288:9+36 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // $t15 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:29+13 + assume {:print "$at(148,12445,12458)"} true; + $t15 := $Dereference($t0)->$big_vec; + + // $t16 := opaque begin: option::is_some>($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:13+30 + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:13+30 + assume $IsValid'bool'($t16); + + // assume Eq($t16, option::spec_is_some>($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:13+30 + assume $IsEqual'bool'($t16, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t15)); + + // $t16 := opaque end: option::is_some>($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:13+30 + + // if ($t16) goto L5 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:290:9+119 + if ($t16) { goto L5; } else { goto L24; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:57+4 + assume {:print "$at(148,12519,12523)"} true; +L5: + + // $t17 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:52+17 + assume {:print "$at(148,12514,12531)"} true; + $t17 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t18 := option::borrow_mut>($t17) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:33+37 + call $t18,$t17 := $1_option_borrow_mut'$1_big_vector_BigVector'#0''($t17); + if ($abort_flag) { + assume {:print "$at(148,12495,12532)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // big_vector::reverse<#0>($t18) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:13+58 + call $t18 := $1_big_vector_reverse'#0'($t18); + if ($abort_flag) { + assume {:print "$at(148,12475,12533)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[Reference($t17).vec (vector>)/[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:13+58 + $t17 := $UpdateMutation($t17, (var $$sel0 := $Dereference($t17)->$vec; $Update'$1_option_Option'$1_big_vector_BigVector'#0'''_vec($Dereference($t17), UpdateVec($$sel0, ReadVec($t18->p, LenVec($t17->p) + 1), $Dereference($t18))))); + + // write_back[Reference($t0).big_vec (option::Option>)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:13+58 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t17))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:291:13+58 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:294:24+8 + assume {:print "$at(148,12607,12615)"} true; +L4: + + // $t4 := vector::empty<#0>() on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:294:24+8 + assume {:print "$at(148,12607,12615)"} true; + call $t4 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,12607,12615)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:294:13+8 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume {:print "$at(148,12655,12659)"} true; +L9: + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume {:print "$at(148,12655,12659)"} true; + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'vec'#0''($t4); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'vec'#0''($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'bool'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'bool'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'#0'($t22); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $temp_0'$1_smart_vector_SmartVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_smart_vector_SmartVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // $t23 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'vec'#0''($Dereference($t23)); + + // $t24 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t24; + + // assume WellFormed($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'vec'#0''($Dereference($t24)); + + // $t25 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + havoc $t25; + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume $IsValid'vec'#0''($Dereference($t25)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume {:print "$info(): enter loop, variable(s) self, temp_vec havocked and reassigned"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:39+4 + assume !$abort_flag; + + // $t23 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:34+20 + $t23 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // $t19 := read_ref($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:34+20 + $t19 := $Dereference($t23); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:34+20 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t20 := vector::is_empty<#0>($t19) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:17+38 + call $t20 := $1_vector_is_empty'#0'($t19); + if ($abort_flag) { + assume {:print "$at(148,12633,12671)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // $t21 := !($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:16+1 + call $t21 := $Not($t20); + + // if ($t21) goto L7 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:9+145 + if ($t21) { goto L7; } else { goto L25; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:295:9+145 +L7: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:31+13 + assume {:print "$at(148,12705,12718)"} true; +L8: + + // $t24 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:31+13 + assume {:print "$at(148,12705,12718)"} true; + $t24 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t25 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:63+20 + $t25 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // $t22 := vector::pop_back<#0>($t25) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:46+38 + call $t22,$t25 := $1_vector_pop_back'#0'($t25); + if ($abort_flag) { + assume {:print "$at(148,12720,12758)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:46+38 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t25))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:46+38 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // vector::push_back<#0>($t24, $t22) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:13+72 + call $t24 := $1_vector_push_back'#0'($t24, $t22); + if ($abort_flag) { + assume {:print "$at(148,12687,12759)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t4)@]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:13+72 + $t4 := $Dereference($t24); + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:13+72 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:296:85+1 + goto L19; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:298:25+13 + assume {:print "$at(148,12796,12809)"} true; +L6: + + // $t26 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:298:25+13 + assume {:print "$at(148,12796,12809)"} true; + $t26 := $Mutation($Local(4), EmptyVec(), $t4); + + // vector::reverse<#0>($t26) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:298:9+30 + call $t26 := $1_vector_reverse'#0'($t26); + if ($abort_flag) { + assume {:print "$at(148,12780,12810)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t4)@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:298:9+30 + $t4 := $Dereference($t26); + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:298:9+30 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume {:print "$at(148,12845,12864)"} true; +L13: + + // $t3 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume {:print "$at(148,12845,12864)"} true; + havoc $t3; + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'vec'#0''($t3); + + // $t27 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t27; + + // assume WellFormed($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'vec'#0''($t27); + + // $t28 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t28; + + // assume WellFormed($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'bool'($t28); + + // $t29 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t29; + + // assume WellFormed($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'bool'($t29); + + // $t30 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t30; + + // assume WellFormed($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'#0'($t30); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $temp_0'$1_smart_vector_SmartVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_smart_vector_SmartVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // $t31 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t31; + + // assume WellFormed($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'vec'#0''($Dereference($t31)); + + // $t32 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t32; + + // assume WellFormed($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'vec'#0''($Dereference($t32)); + + // $t33 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + havoc $t33; + + // assume WellFormed($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume $IsValid'vec'#0''($Dereference($t33)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume {:print "$info(): enter loop, variable(s) self, new_inline_vec havocked and reassigned"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume !$abort_flag; + + // $t31 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + $t31 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t27 := read_ref($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + $t27 := $Dereference($t31); + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:34+19 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // $t28 := vector::is_empty<#0>($t27) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:17+37 + call $t28 := $1_vector_is_empty'#0'($t27); + if ($abort_flag) { + assume {:print "$at(148,12828,12865)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // $t29 := !($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:16+1 + call $t29 := $Not($t28); + + // if ($t29) goto L11 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:9+150 + if ($t29) { goto L11; } else { goto L26; } + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:299:9+150 +L11: + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:36+4 + assume {:print "$at(148,12904,12908)"} true; +L12: + + // $t32 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:31+20 + assume {:print "$at(148,12899,12919)"} true; + $t32 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // $t33 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:70+19 + $t33 := $Mutation($Local(3), EmptyVec(), $t3); + + // $t30 := vector::pop_back<#0>($t33) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:53+37 + call $t30,$t33 := $1_vector_pop_back'#0'($t33); + if ($abort_flag) { + assume {:print "$at(148,12921,12958)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t3)@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:53+37 + $t3 := $Dereference($t33); + + // trace_local[new_inline_vec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:53+37 + assume {:print "$track_local(104,17,3):", $t3} $t3 == $t3; + + // vector::push_back<#0>($t32, $t30) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:13+78 + call $t32 := $1_vector_push_back'#0'($t32, $t30); + if ($abort_flag) { + assume {:print "$at(148,12881,12959)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:13+78 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t32))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:13+78 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:300:91+1 + goto L20; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:302:31+14 + assume {:print "$at(148,13002,13016)"} true; +L10: + + // $t34 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:302:31+14 + assume {:print "$at(148,13002,13016)"} true; + $t34 := $t3; + + // vector::destroy_empty<#0>($t34) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:302:9+37 + call $1_vector_destroy_empty'#0'($t34); + if ($abort_flag) { + assume {:print "$at(148,12980,13017)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume {:print "$at(148,13150,13163)"} true; +L17: + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume {:print "$at(148,13150,13163)"} true; + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'vec'#0''($t4); + + // $t35 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t35; + + // assume WellFormed($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'vec'#0''($t35); + + // $t36 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t36; + + // assume WellFormed($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'bool'($t36); + + // $t37 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t37; + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'bool'($t37); + + // $t38 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t38; + + // assume WellFormed($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'#0'($t38); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $temp_0'$1_smart_vector_SmartVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_smart_vector_SmartVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // $t39 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t39; + + // assume WellFormed($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'vec'#0''($Dereference($t39)); + + // $t40 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + havoc $t40; + + // assume WellFormed($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume $IsValid'vec'#0''($Dereference($t40)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume {:print "$info(): enter loop, variable(s) self, temp_vec havocked and reassigned"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume !$abort_flag; + + // $t39 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + $t39 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t35 := read_ref($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + $t35 := $Dereference($t39); + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:34+13 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // $t36 := vector::is_empty<#0>($t35) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:17+31 + call $t36 := $1_vector_is_empty'#0'($t35); + if ($abort_flag) { + assume {:print "$at(148,13133,13164)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // $t37 := !($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:16+1 + call $t37 := $Not($t36); + + // if ($t37) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:9+114 + if ($t37) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:304:9+114 +L15: + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:23+4 + assume {:print "$at(148,13190,13194)"} true; +L16: + + // $t40 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:46+13 + assume {:print "$at(148,13213,13226)"} true; + $t40 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t38 := vector::pop_back<#0>($t40) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:29+31 + call $t38,$t40 := $1_vector_pop_back'#0'($t40); + if ($abort_flag) { + assume {:print "$at(148,13196,13227)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // write_back[LocalRoot($t4)@]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:29+31 + $t4 := $Dereference($t40); + + // trace_local[temp_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:29+31 + assume {:print "$track_local(104,17,4):", $t4} $t4 == $t4; + + // smart_vector::push_back<#0>($t0, $t38) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:13+48 + call $t0 := $1_smart_vector_push_back'#0'($t0, $t38); + if ($abort_flag) { + assume {:print "$at(148,13180,13228)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:305:61+1 + goto L21; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; +L14: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; + + // $t41 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:31+8 + $t41 := $t4; + + // vector::destroy_empty<#0>($t41) on_abort goto L23 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + call $1_vector_destroy_empty'#0'($t41); + if ($abort_flag) { + assume {:print "$at(148,13249,13280)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,17):", $t7} $t7 == $t7; + goto L23; + } + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:40+1 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,17,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1); + + // goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:40+1 + assume {:print "$at(148,13280,13281)"} true; + goto L22; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + // Loop invariant checking block for the loop started with header: L3 +L18: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; + assume false; + return; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + // Loop invariant checking block for the loop started with header: L9 +L19: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + // Loop invariant checking block for the loop started with header: L13 +L20: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; + assume false; + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + // Loop invariant checking block for the loop started with header: L17 +L21: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:307:9+31 + assume {:print "$at(148,13249,13280)"} true; + assume false; + return; + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:308:5+1 + assume {:print "$at(148,13286,13287)"} true; +L22: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:308:5+1 + assume {:print "$at(148,13286,13287)"} true; + $ret0 := $t0; + return; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:308:5+1 +L23: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:308:5+1 + assume {:print "$at(148,13286,13287)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + + // label L24 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L24: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + + // label L25 at :1:1+10 +L25: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L26 at :1:1+10 +L26: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L10 at :1:1+10 + goto L10; + +} + +// fun smart_vector::singleton [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:64:5+137 +procedure {:timeLimit 80} $1_smart_vector_singleton$verify(_$t0: #0) returns ($ret0: $1_smart_vector_SmartVector'#0') +{ + // declare local variables + var $t1: $1_smart_vector_SmartVector'#0'; + var $t2: int; + var $t3: $Mutation ($1_smart_vector_SmartVector'#0'); + var $t4: $1_smart_vector_SmartVector'#0'; + var $t0: #0; + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:64:5+1 + assume {:print "$at(148,2486,2487)"} true; + assume $IsValid'#0'($t0); + + // trace_local[element]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:64:5+1 + assume {:print "$track_local(104,18,0):", $t0} $t0 == $t0; + + // $t1 := smart_vector::empty<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:65:17+7 + assume {:print "$at(148,2563,2570)"} true; + call $t1 := $1_smart_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,2563,2570)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,18):", $t2} $t2 == $t2; + goto L2; + } + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:65:13+1 + assume {:print "$track_local(104,18,1):", $t1} $t1 == $t1; + + // $t3 := borrow_local($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:66:19+6 + assume {:print "$at(148,2590,2596)"} true; + $t3 := $Mutation($Local(1), EmptyVec(), $t1); + + // smart_vector::push_back<#0>($t3, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:66:9+26 + call $t3 := $1_smart_vector_push_back'#0'($t3, $t0); + if ($abort_flag) { + assume {:print "$at(148,2580,2606)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,18):", $t2} $t2 == $t2; + goto L2; + } + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t3)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t3)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t3)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t3)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t3)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t3)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t3)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t3)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t3)->$inline_capacity) || (LenVec($Dereference($t3)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t3)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t3)), option::$is_none(select smart_vector::SmartVector.bucket_size($t3))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t3)), option::$is_some(select smart_vector::SmartVector.bucket_size($t3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t3)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t3)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t3)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t3)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t3))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t3)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t3)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t3))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t3))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t3)->$bucket_size->$vec) <= 1); + + // write_back[LocalRoot($t1)@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:66:9+26 + assume {:print "$at(148,2580,2606)"} true; + $t1 := $Dereference($t3); + + // trace_local[v]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:66:9+26 + assume {:print "$track_local(104,18,1):", $t1} $t1 == $t1; + + // $t4 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:67:9+1 + assume {:print "$at(148,2616,2617)"} true; + $t4 := $t1; + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:67:9+1 + assume {:print "$track_return(104,18,0):", $t4} $t4 == $t4; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:68:5+1 + assume {:print "$at(148,2622,2623)"} true; +L1: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:68:5+1 + assume {:print "$at(148,2622,2623)"} true; + $ret0 := $t4; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:68:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:68:5+1 + assume {:print "$at(148,2622,2623)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun smart_vector::new [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:35:5+66 +procedure {:timeLimit 80} $1_smart_vector_new$verify() returns ($ret0: $1_smart_vector_SmartVector'#0') +{ + // declare local variables + var $t0: $1_smart_vector_SmartVector'#0'; + var $t1: int; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // $t0 := smart_vector::empty<#0>() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:36:9+7 + assume {:print "$at(148,1467,1474)"} true; + call $t0 := $1_smart_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,1467,1474)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(104,13):", $t1} $t1 == $t1; + goto L2; + } + + // trace_return[0]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:36:9+7 + assume {:print "$track_return(104,13,0):", $t0} $t0 == $t0; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:37:5+1 + assume {:print "$at(148,1479,1480)"} true; +L1: + + // return $t0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:37:5+1 + assume {:print "$at(148,1479,1480)"} true; + $ret0 := $t0; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:37:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:37:5+1 + assume {:print "$at(148,1479,1480)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun smart_vector::to_vector [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:143:5+310 +procedure {:timeLimit 80} $1_smart_vector_to_vector$verify(_$t0: $1_smart_vector_SmartVector'#0') returns ($ret0: Vec (#0)) +{ + // declare local variables + var $t1: $1_big_vector_BigVector'#0'; + var $t2: Vec (#0); + var $t3: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t4: bool; + var $t5: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t6: $1_big_vector_BigVector'#0'; + var $t7: bool; + var $t8: int; + var $t9: $Mutation (Vec (#0)); + var $t10: Vec (#0); + var $t11: Vec (#0); + var $t0: $1_smart_vector_SmartVector'#0'; + var $temp_0'$1_big_vector_BigVector'#0'': $1_big_vector_BigVector'#0'; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:143:5+1 + assume {:print "$at(148,5707,5708)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($t0) && ((((((($1_option_$is_none'u64'($t0->$bucket_size) || ($1_option_$is_some'u64'($t0->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t0->$bucket_size), 0))) && ($1_option_$is_none'u64'($t0->$inline_capacity) || (LenVec($t0->$inline_vec) <= $1_option_$borrow'u64'($t0->$inline_capacity)))) && (($1_option_$is_none'u64'($t0->$inline_capacity) && $1_option_$is_none'u64'($t0->$bucket_size)) || ($1_option_$is_some'u64'($t0->$inline_capacity) && $1_option_$is_some'u64'($t0->$bucket_size)))) && (LenVec($t0->$big_vec->$vec) <= 1)) && (var $range_0 := $t0->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($t0->$inline_capacity->$vec) <= 1)) && (LenVec($t0->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:143:5+1 + assume {:print "$track_local(104,21,0):", $t0} $t0 == $t0; + + // $t2 := get_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:144:19+15 + assume {:print "$at(148,5799,5814)"} true; + $t2 := $t0->$inline_vec; + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:144:13+3 + assume {:print "$track_local(104,21,2):", $t2} $t2 == $t2; + + // $t3 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:29+13 + assume {:print "$at(148,5844,5857)"} true; + $t3 := $t0->$big_vec; + + // $t4 := opaque begin: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:13+30 + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:13+30 + assume $IsValid'bool'($t4); + + // assume Eq($t4, option::spec_is_some>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:13+30 + assume $IsEqual'bool'($t4, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t3)); + + // $t4 := opaque end: option::is_some>($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:13+30 + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:9+174 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:43+4 + assume {:print "$at(148,5904,5908)"} true; +L1: + + // $t5 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:42+13 + assume {:print "$at(148,5903,5916)"} true; + $t5 := $t0->$big_vec; + + // $t6 := opaque begin: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + + // assume Identical($t7, option::spec_is_none>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + assume ($t7 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5)); + + // if ($t7) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + if ($t7) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 +L6: + + // assume And(option::spec_is_none>($t5), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + assume {:print "$at(148,5888,5917)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($t5) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + assume {:print "$at(148,5888,5917)"} true; + assume {:print "$track_abort(104,21):", $t8} $t8 == $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 +L5: + + // assume And(WellFormed($t6), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t6), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0))), Implies(Eq(select big_vector::BigVector.end_index($t6), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0))), Le(select big_vector::BigVector.end_index($t6), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), i)), select big_vector::BigVector.bucket_size($t6)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), select big_vector::BigVector.bucket_size($t6)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), Div(Sub(Add(select big_vector::BigVector.end_index($t6), select big_vector::BigVector.bucket_size($t6)), 1), select big_vector::BigVector.bucket_size($t6)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(select big_vector::BigVector.end_index($t6), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1), select big_vector::BigVector.bucket_size($t6)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1)))), select big_vector::BigVector.end_index($t6))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t6), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t6), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t6)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + assume {:print "$at(148,5888,5917)"} true; + assume ($IsValid'$1_big_vector_BigVector'#0''($t6) && (((((((((((!$IsEqual'u64'($t6->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) ==> $IsEqual'u64'($t6->$end_index, 0))) && ($IsEqual'u64'($t6->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0))) && ($t6->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) * $t6->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, i)), $t6->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) <= $t6->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), ((($t6->$end_index + $t6->$bucket_size) - 1) div $t6->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'u64'($t6->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1) * $t6->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1)))), $t6->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t6->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t6->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t6->$buckets) - 1))) > 0)))); + + // assume Eq>($t6, option::spec_borrow>($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + assume $IsEqual'$1_big_vector_BigVector'#0''($t6, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t5)); + + // $t6 := opaque end: option::borrow>($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:27+29 + + // trace_local[big_vec]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:146:17+7 + assume {:print "$track_local(104,21,1):", $t6} $t6 == $t6; + + // $t9 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:28+8 + assume {:print "$at(148,5946,5954)"} true; + $t9 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t10 := big_vector::to_vector<#0>($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:38+30 + call $t10 := $1_big_vector_to_vector'#0'($t6); + if ($abort_flag) { + assume {:print "$at(148,5956,5986)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,21):", $t8} $t8 == $t8; + goto L4; + } + + // vector::append<#0>($t9, $t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:13+56 + call $t9 := $1_vector_append'#0'($t9, $t10); + if ($abort_flag) { + assume {:print "$at(148,5931,5987)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(104,21):", $t8} $t8 == $t8; + goto L4; + } + + // write_back[LocalRoot($t2)@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:13+56 + $t2 := $Dereference($t9); + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:13+56 + assume {:print "$track_local(104,21,2):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:147:69+1 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:145:9+174 + assume {:print "$at(148,5824,5998)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:149:9+3 + assume {:print "$at(148,6008,6011)"} true; +L2: + + // $t11 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:149:9+3 + assume {:print "$at(148,6008,6011)"} true; + $t11 := $t2; + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:149:9+3 + assume {:print "$track_return(104,21,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:150:5+1 + assume {:print "$at(148,6016,6017)"} true; +L3: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:150:5+1 + assume {:print "$at(148,6016,6017)"} true; + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:150:5+1 +L4: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:150:5+1 + assume {:print "$at(148,6016,6017)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun smart_vector::add_all [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:136:5+144 +procedure {:timeLimit 80} $1_smart_vector_add_all$verify(_$t0: $Mutation ($1_smart_vector_SmartVector'#0'), _$t1: Vec (#0)) returns ($ret0: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t2: int; + var $t3: Vec (#0); + var $t4: Vec (#0); + var $t5: #0; + var $t6: $Mutation (Vec (#0)); + var $t7: int; + var $t8: Vec (#0); + var $t9: Vec (#0); + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: #0; + var $t14: int; + var $t15: int; + var $t16: $Mutation (Vec (#0)); + var $t17: Vec (#0); + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $t1: Vec (#0); + var $temp_0'#0': #0; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + var $temp_0'vec'#0'': Vec (#0); + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:136:5+1 + assume {:print "$at(148,5279,5280)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:136:5+1 + assume $IsValid'vec'#0''($t1); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:136:5+1 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,0,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[vals]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:136:5+1 + assume {:print "$track_local(104,0,1):", $t1} $t1 == $t1; + + // $t3 := $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$at(16,9729,9733)"} true; + $t3 := $t1; + + // trace_local[self#755]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:270:41+4 + assume {:print "$track_local(104,0,3):", $t3} $t3 == $t3; + + // $t6 := borrow_local($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:17+9 + assume {:print "$at(16,9784,9793)"} true; + $t6 := $Mutation($Local(3), EmptyVec(), $t3); + + // vector::reverse<#0>($t6) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + call $t6 := $1_vector_reverse'#0'($t6); + if ($abort_flag) { + assume {:print "$at(16,9776,9794)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // write_back[LocalRoot($t3)@]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + $t3 := $Dereference($t6); + + // trace_local[self#755]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:271:9+18 + assume {:print "$track_local(104,0,3):", $t3} $t3 == $t3; + + // $t8 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:26+4 + assume {:print "$at(16,9880,9884)"} true; + $t8 := $t3; + + // $t4 := $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$at(16,10024,10028)"} true; + $t4 := $t8; + + // trace_local[self#758]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:276:49+4 + assume {:print "$track_local(104,0,4):", $t4} $t4 == $t4; + + // $t9 := copy($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:26+5 + assume {:print "$at(16,10088,10093)"} true; + $t9 := $t4; + + // $t10 := vector::length<#0>($t9) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:19+13 + call $t10 := $1_vector_length'#0'($t9); + if ($abort_flag) { + assume {:print "$at(16,10081,10094)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // trace_local[len#760]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:277:13+3 + assume {:print "$track_local(104,0,2):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; +L3: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$at(16,10111,10114)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t2); + + // $t4 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t4; + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($t4); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'bool'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'#0'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'u64'($t15); + + // $t0 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $temp_0'$1_smart_vector_SmartVector'#0''; + $t0 := $UpdateMutation($t0, $temp_0'$1_smart_vector_SmartVector'#0''); + + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // $t16 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume $IsValid'vec'#0''($Dereference($t16)); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$info(): enter loop, variable(s) self, len#760, self#758 havocked and reassigned"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,0,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // trace_local[len#760]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(104,0,2):", $t2} $t2 == $t2; + + // trace_local[self#758]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume {:print "$track_local(104,0,4):", $t4} $t4 == $t4; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:16+3 + assume !$abort_flag; + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:22+1 + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := >($t2, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:20+1 + call $t12 := $Gt($t2, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:278:9+90 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; +L2: + + // $t16 := borrow_local($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:24+9 + assume {:print "$at(16,10145,10154)"} true; + $t16 := $Mutation($Local(4), EmptyVec(), $t4); + + // $t13 := vector::pop_back<#0>($t16) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + call $t13,$t16 := $1_vector_pop_back'#0'($t16); + if ($abort_flag) { + assume {:print "$at(16,10136,10155)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // write_back[LocalRoot($t4)@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + $t4 := $Dereference($t16); + + // trace_local[self#758]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:279:15+19 + assume {:print "$track_local(104,0,4):", $t4} $t4 == $t4; + + // trace_local[val#762]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:38+1 + assume {:print "$at(16,9892,9893)"} true; + assume {:print "$track_local(104,0,5):", $t13} $t13 == $t13; + + // smart_vector::push_back<#0>($t0, $t13) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:137:40+20 + assume {:print "$at(148,5393,5413)"} true; + call $t0 := $1_smart_vector_push_back'#0'($t0, $t13); + if ($abort_flag) { + assume {:print "$at(148,5393,5413)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:25+1 + assume {:print "$at(16,10182,10183)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := -($t2, $t14) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:23+1 + call $t15 := $Sub($t2, $t14); + if ($abort_flag) { + assume {:print "$at(16,10180,10181)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // trace_local[len#760]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:13+3 + assume {:print "$track_local(104,0,2):", $t15} $t15 == $t15; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:280:26+1 + goto L4; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; + + // $t17 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:23+4 + $t17 := $t4; + + // vector::destroy_empty<#0>($t17) on_abort goto L6 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + call $1_vector_destroy_empty'#0'($t17); + if ($abort_flag) { + assume {:print "$at(16,10204,10223)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(104,0):", $t7} $t7 == $t7; + goto L6; + } + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:41+1 + assume {:print "$at(16,9895,9896)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,0,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1); + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:272:41+1 + assume {:print "$at(16,9895,9896)"} true; + goto L5; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + // Loop invariant checking block for the loop started with header: L3 + assume {:print "$at(16,10204,10223)"} true; +L4: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:282:9+19 + assume {:print "$at(16,10204,10223)"} true; + assume false; + return; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:138:5+1 + assume {:print "$at(148,5422,5423)"} true; +L5: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:138:5+1 + assume {:print "$at(148,5422,5423)"} true; + $ret0 := $t0; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:138:5+1 +L6: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:138:5+1 + assume {:print "$at(148,5422,5423)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun smart_vector::clear<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:86:5+221 +procedure {:inline 1} $1_smart_vector_clear'#0'(_$t0: $Mutation ($1_smart_vector_SmartVector'#0')) returns ($ret0: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: int; + var $t3: $Mutation (Vec (#0)); + var $t4: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t5: bool; + var $t6: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t7: $1_big_vector_BigVector'#0'; + var $t8: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t9: bool; + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:86:5+1 + assume {:print "$at(148,3244,3245)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t1 := vector::empty<#0>() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:27+8 + assume {:print "$at(148,3325,3333)"} true; + call $t1 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,3325,3333)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+15 + $t3 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // write_ref($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t3))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t4 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:29+13 + assume {:print "$at(148,3363,3376)"} true; + $t4 := $Dereference($t0)->$big_vec; + + // $t5 := opaque begin: option::is_some>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t4)); + + // $t5 := opaque end: option::is_some>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:54+4 + assume {:print "$at(148,3434,3438)"} true; +L1: + + // $t6 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:49+17 + assume {:print "$at(148,3429,3446)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t7 := opaque begin: option::extract>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($t9 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6))); + + // if ($t9) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + if ($t9) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 +L6: + + // assume And(option::spec_is_none>($t6), Eq(262145, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6)) && $IsEqual'num'(262145, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 +L5: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + havoc $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''); + + // assume And(WellFormed($t6), And(Le(Len>(select option::Option.vec($t6)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t6): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($Dereference($t6)) && ((LenVec($Dereference($t6)->$vec) <= 1) && (var $range_0 := $Dereference($t6)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume And(WellFormed($t7), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t7), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(select big_vector::BigVector.end_index($t7), 0))), Implies(Eq(select big_vector::BigVector.end_index($t7), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0))), Le(select big_vector::BigVector.end_index($t7), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), select big_vector::BigVector.bucket_size($t7)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), i)), select big_vector::BigVector.bucket_size($t7)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1))), select big_vector::BigVector.bucket_size($t7)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), Div(Sub(Add(select big_vector::BigVector.end_index($t7), select big_vector::BigVector.bucket_size($t7)), 1), select big_vector::BigVector.bucket_size($t7)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(select big_vector::BigVector.end_index($t7), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1), select big_vector::BigVector.bucket_size($t7)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1)))), select big_vector::BigVector.end_index($t7))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($IsValid'$1_big_vector_BigVector'#0''($t7) && (((((((((((!$IsEqual'u64'($t7->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) ==> $IsEqual'u64'($t7->$end_index, 0))) && ($IsEqual'u64'($t7->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0))) && ($t7->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) * $t7->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, i)), $t7->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1))) <= $t7->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), ((($t7->$end_index + $t7->$bucket_size) - 1) div $t7->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) && $IsEqual'u64'($t7->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1) * $t7->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1)))), $t7->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1))) > 0)))); + + // assume Eq>($t7, option::spec_borrow>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume $IsEqual'$1_big_vector_BigVector'#0''($t7, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t8)); + + // assume option::spec_is_none>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6)); + + // $t7 := opaque end: option::extract>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + + // write_back[Reference($t0).big_vec (option::Option>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t6))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // big_vector::destroy<#0>($t7) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:13+55 + call $1_big_vector_destroy'#0'($t7); + if ($abort_flag) { + assume {:print "$at(148,3393,3448)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 +L2: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // pack_ref_deep($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun smart_vector::clear [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:86:5+221 +procedure {:timeLimit 80} $1_smart_vector_clear$verify(_$t0: $Mutation ($1_smart_vector_SmartVector'#0')) returns ($ret0: $Mutation ($1_smart_vector_SmartVector'#0')) +{ + // declare local variables + var $t1: Vec (#0); + var $t2: int; + var $t3: $Mutation (Vec (#0)); + var $t4: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t5: bool; + var $t6: $Mutation ($1_option_Option'$1_big_vector_BigVector'#0''); + var $t7: $1_big_vector_BigVector'#0'; + var $t8: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t9: bool; + var $t0: $Mutation ($1_smart_vector_SmartVector'#0'); + var $temp_0'$1_option_Option'$1_big_vector_BigVector'#0''': $1_option_Option'$1_big_vector_BigVector'#0''; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume And(WellFormed($t0), And(And(And(And(And(And(Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))), Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0))))), Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0))))), Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1)), forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0)))), Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1)), Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:86:5+1 + assume {:print "$at(148,3244,3245)"} true; + assume ($IsValid'$1_smart_vector_SmartVector'#0''($Dereference($t0)) && ((((((($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))) && ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity)))) && (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size)))) && (LenVec($Dereference($t0)->$big_vec->$vec) <= 1)) && (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0)))))))) && (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1)) && (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:86:5+1 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t1 := vector::empty<#0>() on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:27+8 + assume {:print "$at(148,3325,3333)"} true; + call $t1 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,3325,3333)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + goto L4; + } + + // $t3 := borrow_field>.inline_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+15 + $t3 := $ChildMutation($t0, 0, $Dereference($t0)->$inline_vec); + + // write_ref($t3, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $t3 := $UpdateMutation($t3, $t1); + + // write_back[Reference($t0).inline_vec (vector<#0>)]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_inline_vec($Dereference($t0), $Dereference($t3))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:87:9+26 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // $t4 := get_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:29+13 + assume {:print "$at(148,3363,3376)"} true; + $t4 := $Dereference($t0)->$big_vec; + + // $t5 := opaque begin: option::is_some>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + assume $IsValid'bool'($t5); + + // assume Eq($t5, option::spec_is_some>($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + assume $IsEqual'bool'($t5, $1_option_spec_is_some'$1_big_vector_BigVector'#0''($t4)); + + // $t5 := opaque end: option::is_some>($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:13+30 + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:54+4 + assume {:print "$at(148,3434,3438)"} true; +L1: + + // $t6 := borrow_field>.big_vec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:49+17 + assume {:print "$at(148,3429,3446)"} true; + $t6 := $ChildMutation($t0, 1, $Dereference($t0)->$big_vec); + + // $t7 := opaque begin: option::extract>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + + // $t8 := read_ref($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $t8 := $Dereference($t6); + + // assume Identical($t9, option::spec_is_none>($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($t9 == $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6))); + + // if ($t9) goto L7 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + if ($t9) { goto L7; } else { goto L8; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 +L6: + + // assume And(option::spec_is_none>($t6), Eq(262145, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + assume ($1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6)) && $IsEqual'num'(262145, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 +L5: + + // $t6 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume {:print "$at(148,3413,3447)"} true; + havoc $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''; + $t6 := $UpdateMutation($t6, $temp_0'$1_option_Option'$1_big_vector_BigVector'#0'''); + + // assume And(WellFormed($t6), And(Le(Len>(select option::Option.vec($t6)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t6): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($Dereference($t6)) && ((LenVec($Dereference($t6)->$vec) <= 1) && (var $range_0 := $Dereference($t6)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume And(WellFormed($t7), And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($t7), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(select big_vector::BigVector.end_index($t7), 0))), Implies(Eq(select big_vector::BigVector.end_index($t7), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0))), Le(select big_vector::BigVector.end_index($t7), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), select big_vector::BigVector.bucket_size($t7)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), i)), select big_vector::BigVector.bucket_size($t7)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1))), select big_vector::BigVector.bucket_size($t7)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), Div(Sub(Add(select big_vector::BigVector.end_index($t7), select big_vector::BigVector.bucket_size($t7)), 1), select big_vector::BigVector.bucket_size($t7)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(select big_vector::BigVector.end_index($t7), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1), select big_vector::BigVector.bucket_size($t7)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1)))), select big_vector::BigVector.end_index($t7))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($t7), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($t7), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($t7)), 1))), 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume ($IsValid'$1_big_vector_BigVector'#0''($t7) && (((((((((((!$IsEqual'u64'($t7->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) ==> $IsEqual'u64'($t7->$end_index, 0))) && ($IsEqual'u64'($t7->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0))) && ($t7->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) * $t7->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (var $range_0 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1)); (forall $i_1: int :: $InRange($range_0, $i_1) ==> (var i := $i_1; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, i)), $t7->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1))) <= $t7->$bucket_size))) && (var $range_2 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), ((($t7->$end_index + $t7->$bucket_size) - 1) div $t7->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) && $IsEqual'u64'($t7->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1) * $t7->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1)))), $t7->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($t7->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($t7->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($t7->$buckets) - 1))) > 0)))); + + // assume Eq>($t7, option::spec_borrow>($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume $IsEqual'$1_big_vector_BigVector'#0''($t7, $1_option_spec_borrow'$1_big_vector_BigVector'#0''($t8)); + + // assume option::spec_is_none>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + assume $1_option_spec_is_none'$1_big_vector_BigVector'#0''($Dereference($t6)); + + // $t7 := opaque end: option::extract>($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + + // write_back[Reference($t0).big_vec (option::Option>)]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $t0 := $UpdateMutation($t0, $Update'$1_smart_vector_SmartVector'#0''_big_vec($Dereference($t0), $Dereference($t6))); + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:33+34 + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // big_vector::destroy<#0>($t7) on_abort goto L4 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:89:13+55 + call $1_big_vector_destroy'#0'($t7); + if ($abort_flag) { + assume {:print "$at(148,3393,3448)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(104,4):", $t2} $t2 == $t2; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 +L2: + + // trace_local[self]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:88:9+116 + assume {:print "$at(148,3343,3459)"} true; + $temp_0'$1_smart_vector_SmartVector'#0'' := $Dereference($t0); + assume {:print "$track_local(104,4,0):", $temp_0'$1_smart_vector_SmartVector'#0''} $temp_0'$1_smart_vector_SmartVector'#0'' == $temp_0'$1_smart_vector_SmartVector'#0''; + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t0)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t0)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t0)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$bucket_size) || ($1_option_$is_some'u64'($Dereference($t0)->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($Dereference($t0)->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t0)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) || (LenVec($Dereference($t0)->$inline_vec) <= $1_option_$borrow'u64'($Dereference($t0)->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_none(select smart_vector::SmartVector.bucket_size($t0))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t0)), option::$is_some(select smart_vector::SmartVector.bucket_size($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_none'u64'($Dereference($t0)->$bucket_size)) || ($1_option_$is_some'u64'($Dereference($t0)->$inline_capacity) && $1_option_$is_some'u64'($Dereference($t0)->$bucket_size))); + + // assert Le(Len>(select option::Option.vec(select smart_vector::SmartVector.big_vec($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$big_vec->$vec) <= 1); + + // assert forall $elem: big_vector::BigVector<#0>: select option::Option.vec(select smart_vector::SmartVector.big_vec($t0)): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/big_vector.spec.move:7:9+27 + assume {:print "$at(145,135,162)"} true; + assert {:msg "assert_failed(145,135,162): data invariant does not hold"} + (var $range_0 := $Dereference($t0)->$big_vec->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.inline_capacity($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$inline_capacity->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select smart_vector::SmartVector.bucket_size($t0))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t0)->$bucket_size->$vec) <= 1); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 +L4: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:91:5+1 + assume {:print "$at(148,3464,3465)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + + // label L7 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L7: + + // drop($t0) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L8 at :1:1+10 +L8: + + // drop($t6) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + +} + +// fun smart_vector::empty_with_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:53:5+395 +procedure {:timeLimit 80} $1_smart_vector_empty_with_config$verify(_$t0: int, _$t1: int) returns ($ret0: $1_smart_vector_SmartVector'#0') +{ + // declare local variables + var $t2: int; + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: Vec (#0); + var $t8: $1_option_Option'$1_big_vector_BigVector'#0''; + var $t9: $1_option_Option'u64'; + var $t10: $1_option_Option'u64'; + var $t11: $1_smart_vector_SmartVector'#0'; + var $t0: int; + var $t1: int; + var $temp_0'$1_smart_vector_SmartVector'#0'': $1_smart_vector_SmartVector'#0'; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:53:5+1 + assume {:print "$at(148,2021,2022)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:53:5+1 + assume $IsValid'u64'($t1); + + // trace_local[inline_capacity]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:53:5+1 + assume {:print "$track_local(104,9,0):", $t0} $t0 == $t0; + + // trace_local[bucket_size]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:53:5+1 + assume {:print "$track_local(104,9,1):", $t1} $t1 == $t1; + + // $t2 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:31+1 + assume {:print "$at(148,2148,2149)"} true; + $t2 := 0; + assume $IsValid'u64'($t2); + + // $t3 := >($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:29+1 + call $t3 := $Gt($t1, $t2); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 + assume {:print "$at(148,2126,2194)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:58+17 +L0: + + // $t4 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:58+17 + assume {:print "$at(148,2175,2192)"} true; + $t4 := 4; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:34+42 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(148,2151,2193)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(104,9):", $t6} $t6 == $t6; + goto L4; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 + assume {:print "$at(148,2126,2194)"} true; + assume {:print "$track_abort(104,9):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 + $t6 := $t5; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:54:9+68 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:56:25+8 + assume {:print "$at(148,2242,2250)"} true; +L2: + + // $t7 := vector::empty<#0>() on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:56:25+8 + assume {:print "$at(148,2242,2250)"} true; + call $t7 := $1_vector_empty'#0'(); + if ($abort_flag) { + assume {:print "$at(148,2242,2250)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(104,9):", $t6} $t6 == $t6; + goto L4; + } + + // $t8 := opaque begin: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:57:22+14 + assume {:print "$at(148,2273,2287)"} true; + + // assume And(WellFormed($t8), And(Le(Len>(select option::Option.vec($t8)), 1), forall $elem: big_vector::BigVector<#0>: select option::Option.vec($t8): And(And(And(And(And(And(And(And(And(And(And(Neq(select big_vector::BigVector.bucket_size($elem), 0), Implies(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0))), Implies(Eq(select big_vector::BigVector.end_index($elem), 0), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0))), Le(select big_vector::BigVector.end_index($elem), Mul(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), forall i: num: Range(0, Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)): Eq(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), i)), select big_vector::BigVector.bucket_size($elem)))), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Le(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), select big_vector::BigVector.bucket_size($elem)))), forall i: num: Range(0, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), Div(Sub(Add(select big_vector::BigVector.end_index($elem), select big_vector::BigVector.bucket_size($elem)), 1), select big_vector::BigVector.bucket_size($elem)))), Or(And(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(select big_vector::BigVector.end_index($elem), 0)), And(Neq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Eq(Add(Mul(Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1), select big_vector::BigVector.bucket_size($elem)), Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1)))), select big_vector::BigVector.end_index($elem))))), forall i: u64: TypeDomain() where Ge(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): Not(big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i))), forall i: u64: TypeDomain() where Lt(i, big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem))): big_vector::spec_table_contains>(select big_vector::BigVector.buckets($elem), i)), Or(Eq(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 0), Gt(Len<#0>(table_with_length::spec_get>(select big_vector::BigVector.buckets($elem), Sub(big_vector::spec_table_len>(select big_vector::BigVector.buckets($elem)), 1))), 0))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:57:22+14 + assume ($IsValid'$1_option_Option'$1_big_vector_BigVector'#0'''($t8) && ((LenVec($t8->$vec) <= 1) && (var $range_0 := $t8->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((((((((((((!$IsEqual'u64'($elem->$bucket_size, 0) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) ==> $IsEqual'u64'($elem->$end_index, 0))) && ($IsEqual'u64'($elem->$end_index, 0) ==> $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0))) && ($elem->$end_index <= ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) * $elem->$bucket_size))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (var $range_2 := $Range(0, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)); (forall $i_3: int :: $InRange($range_2, $i_3) ==> (var i := $i_3; + ($IsEqual'num'(LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, i)), $elem->$bucket_size))))))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) <= $elem->$bucket_size))) && (var $range_4 := $Range(0, $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets)); (forall $i_5: int :: $InRange($range_4, $i_5) ==> (var i := $i_5; + ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))))) && $IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), ((($elem->$end_index + $elem->$bucket_size) - 1) div $elem->$bucket_size))) && (($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'u64'($elem->$end_index, 0)) || (!$IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) && $IsEqual'num'(((($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1) * $elem->$bucket_size) + LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1)))), $elem->$end_index)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i >= $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> (!$1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && (forall i: int :: $IsValid'u64'(i) ==> ((i < $1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets))) ==> ($1_big_vector_spec_table_contains'u64_vec'#0''($elem->$buckets, i)))) && ($IsEqual'u64'($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets), 0) || (LenVec($1_table_with_length_spec_get'u64_vec'#0''($elem->$buckets, ($1_big_vector_spec_table_len'u64_vec'#0''($elem->$buckets) - 1))) > 0))))))))); + + // assume Eq>>($t8, option::spec_none>()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:57:22+14 + assume $IsEqual'$1_option_Option'$1_big_vector_BigVector'#0'''($t8, $1_option_spec_none'$1_big_vector_BigVector'#0''()); + + // $t8 := opaque end: option::none>() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:57:22+14 + + // $t9 := opaque begin: option::some($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:58:30+29 + assume {:print "$at(148,2318,2347)"} true; + + // assume And(WellFormed($t9), Le(Len(select option::Option.vec($t9)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:58:30+29 + assume ($IsValid'$1_option_Option'u64''($t9) && (LenVec($t9->$vec) <= 1)); + + // assume Eq>($t9, option::spec_some($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:58:30+29 + assume $IsEqual'$1_option_Option'u64''($t9, $1_option_spec_some'u64'($t0)); + + // $t9 := opaque end: option::some($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:58:30+29 + + // $t10 := opaque begin: option::some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:59:26+25 + assume {:print "$at(148,2374,2399)"} true; + + // assume And(WellFormed($t10), Le(Len(select option::Option.vec($t10)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:59:26+25 + assume ($IsValid'$1_option_Option'u64''($t10) && (LenVec($t10->$vec) <= 1)); + + // assume Eq>($t10, option::spec_some($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:59:26+25 + assume $IsEqual'$1_option_Option'u64''($t10, $1_option_spec_some'u64'($t1)); + + // $t10 := opaque end: option::some($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:59:26+25 + + // $t11 := pack smart_vector::SmartVector<#0>($t7, $t8, $t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:55:9+206 + assume {:print "$at(148,2204,2410)"} true; + $t11 := $1_smart_vector_SmartVector'#0'($t7, $t8, $t9, $t10); + + // assert Or(option::$is_none(select smart_vector::SmartVector.bucket_size($t11)), And(option::$is_some(select smart_vector::SmartVector.bucket_size($t11)), Neq(option::$borrow(select smart_vector::SmartVector.bucket_size($t11)), 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:5:9+121 + assume {:print "$at(149,121,242)"} true; + assert {:msg "assert_failed(149,121,242): data invariant does not hold"} + ($1_option_$is_none'u64'($t11->$bucket_size) || ($1_option_$is_some'u64'($t11->$bucket_size) && !$IsEqual'u64'($1_option_$borrow'u64'($t11->$bucket_size), 0))); + + // assert Or(option::$is_none(select smart_vector::SmartVector.inline_capacity($t11)), Le(Len<#0>(select smart_vector::SmartVector.inline_vec($t11)), option::$borrow(select smart_vector::SmartVector.inline_capacity($t11)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:8:9+111 + assume {:print "$at(149,322,433)"} true; + assert {:msg "assert_failed(149,322,433): data invariant does not hold"} + ($1_option_$is_none'u64'($t11->$inline_capacity) || (LenVec($t11->$inline_vec) <= $1_option_$borrow'u64'($t11->$inline_capacity))); + + // assert Or(And(option::$is_none(select smart_vector::SmartVector.inline_capacity($t11)), option::$is_none(select smart_vector::SmartVector.bucket_size($t11))), And(option::$is_some(select smart_vector::SmartVector.inline_capacity($t11)), option::$is_some(select smart_vector::SmartVector.bucket_size($t11)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:11:9+159 + assume {:print "$at(149,541,700)"} true; + assert {:msg "assert_failed(149,541,700): data invariant does not hold"} + (($1_option_$is_none'u64'($t11->$inline_capacity) && $1_option_$is_none'u64'($t11->$bucket_size)) || ($1_option_$is_some'u64'($t11->$inline_capacity) && $1_option_$is_some'u64'($t11->$bucket_size))); + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:55:9+206 + assume {:print "$at(148,2204,2410)"} true; + assume {:print "$track_return(104,9,0):", $t11} $t11 == $t11; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:61:5+1 + assume {:print "$at(148,2415,2416)"} true; +L3: + + // assert Not(Eq($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:25:9+27 + assume {:print "$at(149,971,998)"} true; + assert {:msg "assert_failed(149,971,998): function does not abort under this condition"} + !$IsEqual'u64'($t1, 0); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:25:9+27 + $ret0 := $t11; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.move:61:5+1 + assume {:print "$at(148,2415,2416)"} true; +L4: + + // assert Eq($t1, 0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:24:5+66 + assume {:print "$at(149,938,1004)"} true; + assert {:msg "assert_failed(149,938,1004): abort not covered by any of the `aborts_if` clauses"} + $IsEqual'u64'($t1, 0); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-stdlib/sources/data_structures/smart_vector.spec.move:24:5+66 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// struct starcoin_token::StarcoinCollection at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:35:5+1042 +datatype $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection($mutator_ref: $1_option_Option'$1_collection_MutatorRef', $royalty_mutator_ref: $1_option_Option'$1_royalty_MutatorRef', $mutable_description: bool, $mutable_uri: bool, $mutable_token_description: bool, $mutable_token_name: bool, $mutable_token_properties: bool, $mutable_token_uri: bool, $tokens_burnable_by_creator: bool, $tokens_freezable_by_creator: bool) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutator_ref(s: $1_starcoin_token_StarcoinCollection, x: $1_option_Option'$1_collection_MutatorRef'): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(x, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_royalty_mutator_ref(s: $1_starcoin_token_StarcoinCollection, x: $1_option_Option'$1_royalty_MutatorRef'): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, x, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_description(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, x, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_uri(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, x, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_token_description(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, x, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_token_name(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, x, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_token_properties(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, x, s->$mutable_token_uri, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_mutable_token_uri(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, x, s->$tokens_burnable_by_creator, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_tokens_burnable_by_creator(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, x, s->$tokens_freezable_by_creator) +} +function {:inline} $Update'$1_starcoin_token_StarcoinCollection'_tokens_freezable_by_creator(s: $1_starcoin_token_StarcoinCollection, x: bool): $1_starcoin_token_StarcoinCollection { + $1_starcoin_token_StarcoinCollection(s->$mutator_ref, s->$royalty_mutator_ref, s->$mutable_description, s->$mutable_uri, s->$mutable_token_description, s->$mutable_token_name, s->$mutable_token_properties, s->$mutable_token_uri, s->$tokens_burnable_by_creator, x) +} +function $IsValid'$1_starcoin_token_StarcoinCollection'(s: $1_starcoin_token_StarcoinCollection): bool { + $IsValid'$1_option_Option'$1_collection_MutatorRef''(s->$mutator_ref) + && $IsValid'$1_option_Option'$1_royalty_MutatorRef''(s->$royalty_mutator_ref) + && $IsValid'bool'(s->$mutable_description) + && $IsValid'bool'(s->$mutable_uri) + && $IsValid'bool'(s->$mutable_token_description) + && $IsValid'bool'(s->$mutable_token_name) + && $IsValid'bool'(s->$mutable_token_properties) + && $IsValid'bool'(s->$mutable_token_uri) + && $IsValid'bool'(s->$tokens_burnable_by_creator) + && $IsValid'bool'(s->$tokens_freezable_by_creator) +} +function {:inline} $IsEqual'$1_starcoin_token_StarcoinCollection'(s1: $1_starcoin_token_StarcoinCollection, s2: $1_starcoin_token_StarcoinCollection): bool { + $IsEqual'$1_option_Option'$1_collection_MutatorRef''(s1->$mutator_ref, s2->$mutator_ref) + && $IsEqual'$1_option_Option'$1_royalty_MutatorRef''(s1->$royalty_mutator_ref, s2->$royalty_mutator_ref) + && $IsEqual'bool'(s1->$mutable_description, s2->$mutable_description) + && $IsEqual'bool'(s1->$mutable_uri, s2->$mutable_uri) + && $IsEqual'bool'(s1->$mutable_token_description, s2->$mutable_token_description) + && $IsEqual'bool'(s1->$mutable_token_name, s2->$mutable_token_name) + && $IsEqual'bool'(s1->$mutable_token_properties, s2->$mutable_token_properties) + && $IsEqual'bool'(s1->$mutable_token_uri, s2->$mutable_token_uri) + && $IsEqual'bool'(s1->$tokens_burnable_by_creator, s2->$tokens_burnable_by_creator) + && $IsEqual'bool'(s1->$tokens_freezable_by_creator, s2->$tokens_freezable_by_creator)} +var $1_starcoin_token_StarcoinCollection_$memory: $Memory $1_starcoin_token_StarcoinCollection; + +// struct starcoin_token::StarcoinToken at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:60:5+388 +datatype $1_starcoin_token_StarcoinToken { + $1_starcoin_token_StarcoinToken($burn_ref: $1_option_Option'$1_object_token_BurnRef', $transfer_ref: $1_option_Option'$1_object_TransferRef', $mutator_ref: $1_option_Option'$1_object_token_MutatorRef', $property_mutator_ref: $1_object_property_map_MutatorRef) +} +function {:inline} $Update'$1_starcoin_token_StarcoinToken'_burn_ref(s: $1_starcoin_token_StarcoinToken, x: $1_option_Option'$1_object_token_BurnRef'): $1_starcoin_token_StarcoinToken { + $1_starcoin_token_StarcoinToken(x, s->$transfer_ref, s->$mutator_ref, s->$property_mutator_ref) +} +function {:inline} $Update'$1_starcoin_token_StarcoinToken'_transfer_ref(s: $1_starcoin_token_StarcoinToken, x: $1_option_Option'$1_object_TransferRef'): $1_starcoin_token_StarcoinToken { + $1_starcoin_token_StarcoinToken(s->$burn_ref, x, s->$mutator_ref, s->$property_mutator_ref) +} +function {:inline} $Update'$1_starcoin_token_StarcoinToken'_mutator_ref(s: $1_starcoin_token_StarcoinToken, x: $1_option_Option'$1_object_token_MutatorRef'): $1_starcoin_token_StarcoinToken { + $1_starcoin_token_StarcoinToken(s->$burn_ref, s->$transfer_ref, x, s->$property_mutator_ref) +} +function {:inline} $Update'$1_starcoin_token_StarcoinToken'_property_mutator_ref(s: $1_starcoin_token_StarcoinToken, x: $1_object_property_map_MutatorRef): $1_starcoin_token_StarcoinToken { + $1_starcoin_token_StarcoinToken(s->$burn_ref, s->$transfer_ref, s->$mutator_ref, x) +} +function $IsValid'$1_starcoin_token_StarcoinToken'(s: $1_starcoin_token_StarcoinToken): bool { + $IsValid'$1_option_Option'$1_object_token_BurnRef''(s->$burn_ref) + && $IsValid'$1_option_Option'$1_object_TransferRef''(s->$transfer_ref) + && $IsValid'$1_option_Option'$1_object_token_MutatorRef''(s->$mutator_ref) + && $IsValid'$1_object_property_map_MutatorRef'(s->$property_mutator_ref) +} +function {:inline} $IsEqual'$1_starcoin_token_StarcoinToken'(s1: $1_starcoin_token_StarcoinToken, s2: $1_starcoin_token_StarcoinToken): bool { + $IsEqual'$1_option_Option'$1_object_token_BurnRef''(s1->$burn_ref, s2->$burn_ref) + && $IsEqual'$1_option_Option'$1_object_TransferRef''(s1->$transfer_ref, s2->$transfer_ref) + && $IsEqual'$1_option_Option'$1_object_token_MutatorRef''(s1->$mutator_ref, s2->$mutator_ref) + && $IsEqual'$1_object_property_map_MutatorRef'(s1->$property_mutator_ref, s2->$property_mutator_ref)} +var $1_starcoin_token_StarcoinToken_$memory: $Memory $1_starcoin_token_StarcoinToken; + +// fun starcoin_token::burn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+705 +procedure {:timeLimit 80} $1_starcoin_token_burn$verify(_$t0: $signer, _$t1: $1_object_Object'#0') returns () +{ + // declare local variables + var $t2: $1_option_Option'$1_object_token_BurnRef'; + var $t3: $signer; + var $t4: $1_object_property_map_MutatorRef; + var $t5: $1_starcoin_token_StarcoinToken; + var $t6: $1_object_Object'#0'; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $1_starcoin_token_StarcoinToken; + var $t19: $1_option_Option'$1_object_token_BurnRef'; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: $1_starcoin_token_StarcoinToken; + var $t25: $1_option_Option'$1_object_token_BurnRef'; + var $t26: $1_option_Option'$1_object_TransferRef'; + var $t27: $1_option_Option'$1_object_token_MutatorRef'; + var $t28: $1_object_property_map_MutatorRef; + var $t29: $Mutation ($1_option_Option'$1_object_token_BurnRef'); + var $t30: $1_object_token_BurnRef; + var $t31: $1_option_Option'$1_object_token_BurnRef'; + var $t32: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_property_map_MutatorRef': $1_object_property_map_MutatorRef; + var $temp_0'$1_option_Option'$1_object_token_BurnRef'': $1_option_Option'$1_object_token_BurnRef'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume {:print "$at(183,13552,13553)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume {:print "$track_local(105,5,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:379:5+1 + assume {:print "$track_local(105,5,1):", $t1} $t1 == $t1; + + // trace_local[creator#807]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,5,3):", $t0} $t0 == $t0; + + // trace_local[token#806]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,5,6):", $t1} $t1 == $t1; + + // $t8 := object::object_address<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t8 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[token_address#808]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,5,7):", $t8} $t8 == $t8; + + // $t10 := exists($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t10 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t11 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t11 := 2; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,5):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t9 := $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t13 := object_token::creator<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t13 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // $t14 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // $t15 := ==($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t15 := $IsEqual'address'($t13, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t16 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t16 := 3; + assume $IsValid'u64'($t16); + + // $t17 := error::permission_denied($t16) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t17 := $1_error_permission_denied($t16); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,5):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t9 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t18 := get_global($t8) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[starcoin_token]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:380:13+14 + assume {:print "$at(183,13655,13669)"} true; + assume {:print "$track_local(105,5,5):", $t18} $t18 == $t18; + + // $t19 := get_field.burn_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:382:29+24 + assume {:print "$at(183,13753,13777)"} true; + $t19 := $t18->$burn_ref; + + // $t20 := opaque begin: option::is_some($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:382:13+41 + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:382:13+41 + assume $IsValid'bool'($t20); + + // assume Eq($t20, option::spec_is_some($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:382:13+41 + assume $IsEqual'bool'($t20, $1_option_spec_is_some'$1_object_token_BurnRef'($t19)); + + // $t20 := opaque end: option::is_some($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:382:13+41 + + // if ($t20) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 + assume {:print "$at(183,13716,13848)"} true; + if ($t20) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 + assume {:print "$at(183,13716,13848)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 +L6: + + // $t21 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:383:38+19 + assume {:print "$at(183,13817,13836)"} true; + $t21 := 5; + assume $IsValid'u64'($t21); + + // $t22 := error::permission_denied($t21) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:383:13+45 + call $t22 := $1_error_permission_denied($t21); + if ($abort_flag) { + assume {:print "$at(183,13792,13837)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 + assume {:print "$at(183,13716,13848)"} true; + assume {:print "$track_abort(105,5):", $t22} $t22 == $t22; + + // $t9 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 + $t9 := $t22; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:381:9+132 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:385:9+19 + assume {:print "$at(183,13858,13877)"} true; +L8: + + // $t23 := object::object_address<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:386:55+30 + assume {:print "$at(183,13933,13963)"} true; + call $t23 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13933,13963)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // $t24 := move_from($t23) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:386:30+9 + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t23)) { + call $ExecFailureAbort(); + } else { + $t24 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t23); + $1_starcoin_token_StarcoinToken_$memory := $ResourceRemove($1_starcoin_token_StarcoinToken_$memory, $t23); + } + if ($abort_flag) { + assume {:print "$at(183,13908,13917)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // ($t25, $t26, $t27, $t28) := unpack starcoin_token::StarcoinToken($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:387:13+138 + assume {:print "$at(183,13978,14116)"} true; + $t25 := $t24->$burn_ref; + $t26 := $t24->$transfer_ref; + $t27 := $t24->$mutator_ref; + $t28 := $t24->$property_mutator_ref; + + // trace_local[property_mutator_ref]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:391:13+20 + assume {:print "$at(183,14085,14105)"} true; + assume {:print "$track_local(105,5,4):", $t28} $t28 == $t28; + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:390:26+1 + assume {:print "$at(183,14070,14071)"} true; + + // drop($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:389:27+1 + assume {:print "$at(183,14042,14043)"} true; + + // $t2 := $t25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:388:13+8 + assume {:print "$at(183,14006,14014)"} true; + $t2 := $t25; + + // trace_local[burn_ref]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:388:13+8 + assume {:print "$track_local(105,5,2):", $t2} $t2 == $t2; + + // object_property_map::burn($t28) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:393:9+47 + assume {:print "$at(183,14143,14190)"} true; + call $1_object_property_map_burn($t28); + if ($abort_flag) { + assume {:print "$at(183,14143,14190)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // $t29 := borrow_local($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:44+13 + assume {:print "$at(183,14235,14248)"} true; + $t29 := $Mutation($Local(2), EmptyVec(), $t2); + + // $t30 := opaque begin: option::extract($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + + // $t31 := read_ref($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + $t31 := $Dereference($t29); + + // assume Identical($t32, option::spec_is_none($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume ($t32 == $1_option_spec_is_none'$1_object_token_BurnRef'($Dereference($t29))); + + // if ($t32) goto L12 else goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + if ($t32) { goto L12; } else { goto L13; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 +L12: + + // assume And(option::spec_is_none($t29), Eq(262145, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume {:print "$at(183,14219,14249)"} true; + assume ($1_option_spec_is_none'$1_object_token_BurnRef'($Dereference($t29)) && $IsEqual'num'(262145, $t9)); + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume {:print "$at(183,14219,14249)"} true; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 +L11: + + // $t29 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume {:print "$at(183,14219,14249)"} true; + havoc $temp_0'$1_option_Option'$1_object_token_BurnRef''; + $t29 := $UpdateMutation($t29, $temp_0'$1_option_Option'$1_object_token_BurnRef''); + + // assume And(WellFormed($t29), And(Le(Len(select option::Option.vec($t29)), 1), forall $elem: object_token::BurnRef: select option::Option.vec($t29): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume ($IsValid'$1_option_Option'$1_object_token_BurnRef''($Dereference($t29)) && ((LenVec($Dereference($t29)->$vec) <= 1) && (var $range_0 := $Dereference($t29)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))))); + + // assume And(WellFormed($t30), And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($t30))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($t30))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume ($IsValid'$1_object_token_BurnRef'($t30) && ((LenVec($t30->$inner->$vec) <= 1) && (LenVec($t30->$self->$vec) <= 1))); + + // assume Eq($t30, option::spec_borrow($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume $IsEqual'$1_object_token_BurnRef'($t30, $1_option_spec_borrow'$1_object_token_BurnRef'($t31)); + + // assume option::spec_is_none($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume $1_option_spec_is_none'$1_object_token_BurnRef'($Dereference($t29)); + + // $t30 := opaque end: option::extract($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + + // assert Le(Len(select option::Option.vec($t29)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t29)->$vec) <= 1); + + // assert forall $elem: object_token::BurnRef: select option::Option.vec($t29): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (var $range_0 := $Dereference($t29)->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))); + + // write_back[LocalRoot($t2)@]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume {:print "$at(183,14219,14249)"} true; + $t2 := $Dereference($t29); + + // trace_local[burn_ref]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:28+30 + assume {:print "$track_local(105,5,2):", $t2} $t2 == $t2; + + // object_token::burn($t30) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:394:9+50 + call $1_object_token_burn($t30); + if ($abort_flag) { + assume {:print "$at(183,14200,14250)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,5):", $t9} $t9 == $t9; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:395:5+1 + assume {:print "$at(183,14256,14257)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:395:5+1 + assume {:print "$at(183,14256,14257)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:395:5+1 +L10: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:395:5+1 + assume {:print "$at(183,14256,14257)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + + // label L13 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L13: + + // drop($t29) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + +} + +// fun starcoin_token::mint [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+449 +procedure {:timeLimit 80} $1_starcoin_token_mint$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int))) returns () +{ + // declare local variables + var $t8: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t9: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$at(183,6171,6172)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'vec'$1_string_String''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume $IsValid'vec'vec'u8'''($t7); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:169:5+1 + assume {:print "$track_local(105,21,7):", $t7} $t7 == $t7; + + // $t8 := starcoin_token::mint_token_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:179:9+110 + assume {:print "$at(183,6503,6613)"} true; + call $t8 := $1_starcoin_token_mint_token_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,6503,6613)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,21):", $t9} $t9 == $t9; + goto L2; + } + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:179:9+110 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:180:5+1 + assume {:print "$at(183,6619,6620)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:180:5+1 + assume {:print "$at(183,6619,6620)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:180:5+1 +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:180:5+1 + assume {:print "$at(183,6619,6620)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1657 +procedure {:inline 1} $1_starcoin_token_mint_internal(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int))) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: $1_option_Option'$1_object_token_MutatorRef'; + var $t12: $1_option_Option'$1_object_token_BurnRef'; + var $t13: $1_starcoin_token_StarcoinCollection; + var $t14: int; + var $t15: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t16: $1_object_ConstructorRef; + var $t17: $1_option_Option'$1_object_token_MutatorRef'; + var $t18: $1_string_String; + var $t19: $signer; + var $t20: $1_object_property_map_PropertyMap; + var $t21: $1_starcoin_token_StarcoinToken; + var $t22: $1_option_Option'$1_royalty_Royalty'; + var $t23: $1_object_ConstructorRef; + var $t24: int; + var $t25: $signer; + var $t26: int; + var $t27: int; + var $t28: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $1_starcoin_token_StarcoinCollection; + var $t34: bool; + var $t35: bool; + var $t36: bool; + var $t37: $1_object_token_MutatorRef; + var $t38: bool; + var $t39: $1_object_token_BurnRef; + var $t40: $1_option_Option'$1_object_TransferRef'; + var $t41: $1_object_property_map_MutatorRef; + var $t42: $1_starcoin_token_StarcoinToken; + var $t43: $1_object_property_map_PropertyMap; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'$1_option_Option'$1_object_token_MutatorRef'': $1_option_Option'$1_object_token_MutatorRef'; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$at(183,9834,9835)"} true; + assume {:print "$track_local(105,22,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,7):", $t7} $t7 == $t7; + + // $t22 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume {:print "$at(183,10246,10260)"} true; + + // assume And(WellFormed($t22), Le(Len(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t22) && (LenVec($t22->$vec) <= 1)); + + // assume Eq>($t22, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t22, $1_option_spec_none'$1_royalty_Royalty'()); + + // $t22 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + + // $t23 := object_token::create($t0, $t1, $t2, $t3, $t22, $t4) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:31+81 + call $t23 := $1_object_token_create($t0, $t1, $t2, $t3, $t22, $t4); + if ($abort_flag) { + assume {:print "$at(183,10185,10266)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[constructor_ref]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:13+15 + assume {:print "$track_local(105,22,16):", $t23} $t23 == $t23; + + // $t25 := object::generate_signer($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:286:29+41 + assume {:print "$at(183,10297,10338)"} true; + call $t25 := $1_object_generate_signer($t23); + if ($abort_flag) { + assume {:print "$at(183,10297,10338)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[object_signer]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:286:13+13 + assume {:print "$track_local(105,22,19):", $t25} $t25 == $t25; + + // trace_local[name#829]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:537:52+4 + assume {:print "$at(183,19251,19255)"} true; + assume {:print "$track_local(105,22,18):", $t1} $t1 == $t1; + + // $t26 := signer::address_of($t0) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:70+27 + assume {:print "$at(183,19365,19392)"} true; + call $t26 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,19365,19392)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t27 := collection::create_collection_address($t26, $t1) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:31+73 + call $t27 := $1_collection_create_collection_address($t26, $t1); + if ($abort_flag) { + assume {:print "$at(183,19326,19399)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t28 := object::address_to_object($t27) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:539:9+62 + assume {:print "$at(183,19409,19471)"} true; + call $t28 := $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'($t27); + if ($abort_flag) { + assume {:print "$at(183,19409,19471)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection_obj]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:288:13+14 + assume {:print "$at(183,10353,10367)"} true; + assume {:print "$track_local(105,22,15):", $t28} $t28 == $t28; + + // $t29 := object::object_address($t28) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t29 := $1_object_object_address'$1_starcoin_token_StarcoinCollection'($t28); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection_address#832]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,22,14):", $t29} $t29 == $t29; + + // $t30 := exists($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t30 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t29); + + // if ($t30) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t30) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,22):", $t32} $t32 == $t32; + + // $t24 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t24 := $t32; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t33 := get_global($t29) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t33 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t29); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection#2]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:289:13+10 + assume {:print "$at(183,10423,10433)"} true; + assume {:print "$track_local(105,22,13):", $t33} $t33 == $t33; + + // $t34 := get_field.mutable_token_description($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+36 + assume {:print "$at(183,10516,10552)"} true; + $t34 := $t33->$mutable_token_description; + + // if ($t34) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + if ($t34) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 +L4: + + // $t35 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + assume {:print "$at(183,10516,10601)"} true; + $t35 := true; + assume $IsValid'bool'($t35); + + // $t9 := $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + $t9 := $t35; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:293:20+10 + assume {:print "$at(183,10572,10582)"} true; +L3: + + // $t9 := get_field.mutable_token_name($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:293:20+29 + assume {:print "$at(183,10572,10601)"} true; + $t9 := $t33->$mutable_token_name; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + assume {:print "$at(183,10516,10601)"} true; +L5: + + // if ($t9) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; + if ($t9) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 +L7: + + // $t36 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; + $t36 := true; + assume $IsValid'bool'($t36); + + // $t10 := $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + $t10 := $t36; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:294:20+10 + assume {:print "$at(183,10621,10631)"} true; +L6: + + // $t10 := get_field.mutable_token_uri($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:294:20+28 + assume {:print "$at(183,10621,10649)"} true; + $t10 := $t33->$mutable_token_uri; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; +L8: + + // if ($t10) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; + if ($t10) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:61+16 + assume {:print "$at(183,10722,10738)"} true; +L10: + + // $t37 := object_token::generate_mutator_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:26+52 + assume {:print "$at(183,10687,10739)"} true; + call $t37 := $1_object_token_generate_mutator_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,10687,10739)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t11 := opaque begin: option::some($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + assume ($IsValid'$1_option_Option'$1_object_token_MutatorRef''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_some($t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + assume $IsEqual'$1_option_Option'$1_object_token_MutatorRef''($t11, $1_option_spec_some'$1_object_token_MutatorRef'($t37)); + + // $t11 := opaque end: option::some($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume {:print "$at(183,10770,10784)"} true; +L9: + + // $t11 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume {:print "$at(183,10770,10784)"} true; + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume ($IsValid'$1_option_Option'$1_object_token_MutatorRef''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume $IsEqual'$1_option_Option'$1_object_token_MutatorRef''($t11, $1_option_spec_none'$1_object_token_MutatorRef'()); + + // $t11 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; +L11: + + // trace_local[mutator_ref]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:13+11 + assume {:print "$at(183,10485,10496)"} true; + assume {:print "$track_local(105,22,17):", $t11} $t11 == $t11; + + // $t38 := get_field.tokens_burnable_by_creator($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:28+37 + assume {:print "$at(183,10824,10861)"} true; + $t38 := $t33->$tokens_burnable_by_creator; + + // if ($t38) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + if ($t38) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:58+16 + assume {:print "$at(183,10922,10938)"} true; +L13: + + // $t39 := object_token::generate_burn_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:26+49 + assume {:print "$at(183,10890,10939)"} true; + call $t39 := $1_object_token_generate_burn_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,10890,10939)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t12 := opaque begin: option::some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + + // assume And(WellFormed($t12), And(Le(Len(select option::Option.vec($t12)), 1), forall $elem: object_token::BurnRef: select option::Option.vec($t12): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + assume ($IsValid'$1_option_Option'$1_object_token_BurnRef''($t12) && ((LenVec($t12->$vec) <= 1) && (var $range_0 := $t12->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))))); + + // assume Eq>($t12, option::spec_some($t39)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + assume $IsEqual'$1_option_Option'$1_object_token_BurnRef''($t12, $1_option_spec_some'$1_object_token_BurnRef'($t39)); + + // $t12 := opaque end: option::some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + assume {:print "$at(183,10820,10994)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume {:print "$at(183,10970,10984)"} true; +L12: + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume {:print "$at(183,10970,10984)"} true; + + // assume And(WellFormed($t12), And(Le(Len(select option::Option.vec($t12)), 1), forall $elem: object_token::BurnRef: select option::Option.vec($t12): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume ($IsValid'$1_option_Option'$1_object_token_BurnRef''($t12) && ((LenVec($t12->$vec) <= 1) && (var $range_0 := $t12->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))))); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume $IsEqual'$1_option_Option'$1_object_token_BurnRef''($t12, $1_option_spec_none'$1_object_token_BurnRef'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + assume {:print "$at(183,10820,10994)"} true; +L14: + + // $t40 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume {:print "$at(183,11090,11104)"} true; + + // assume And(WellFormed($t40), Le(Len(select option::Option.vec($t40)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume ($IsValid'$1_option_Option'$1_object_TransferRef''($t40) && (LenVec($t40->$vec) <= 1)); + + // assume Eq>($t40, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume $IsEqual'$1_option_Option'$1_object_TransferRef''($t40, $1_option_spec_none'$1_object_TransferRef'()); + + // $t40 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + + // $t41 := object_property_map::generate_mutator_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:311:35+59 + assume {:print "$at(183,11165,11224)"} true; + call $t41 := $1_object_property_map_generate_mutator_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,11165,11224)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t42 := pack starcoin_token::StarcoinToken($t12, $t40, $t11, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:307:30+209 + assume {:print "$at(183,11026,11235)"} true; + $t42 := $1_starcoin_token_StarcoinToken($t12, $t40, $t11, $t41); + + // trace_local[starcoin_token]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:307:13+14 + assume {:print "$track_local(105,22,21):", $t42} $t42 == $t42; + + // move_to($t42, $t25) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:313:9+7 + assume {:print "$at(183,11245,11252)"} true; + if ($ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t25->$addr)) { + call $ExecFailureAbort(); + } else { + $1_starcoin_token_StarcoinToken_$memory := $ResourceUpdate($1_starcoin_token_StarcoinToken_$memory, $t25->$addr, $t42); + } + if ($abort_flag) { + assume {:print "$at(183,11245,11252)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t43 := object_property_map::prepare_input($t5, $t6, $t7) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:315:26+82 + assume {:print "$at(183,11312,11394)"} true; + call $t43 := $1_object_property_map_prepare_input($t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,11312,11394)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[properties]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:315:13+10 + assume {:print "$track_local(105,22,20):", $t43} $t43 == $t43; + + // object_property_map::init($t23, $t43) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:316:9+55 + assume {:print "$at(183,11404,11459)"} true; + call $1_object_property_map_init($t23, $t43); + if ($abort_flag) { + assume {:print "$at(183,11404,11459)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:318:9+15 + assume {:print "$at(183,11470,11485)"} true; + assume {:print "$track_return(105,22,0):", $t23} $t23 == $t23; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; +L15: + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; + $ret0 := $t23; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 +L16: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1657 +procedure {:timeLimit 80} $1_starcoin_token_mint_internal$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int))) returns ($ret0: $1_object_ConstructorRef) +{ + // declare local variables + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: $1_option_Option'$1_object_token_MutatorRef'; + var $t12: $1_option_Option'$1_object_token_BurnRef'; + var $t13: $1_starcoin_token_StarcoinCollection; + var $t14: int; + var $t15: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t16: $1_object_ConstructorRef; + var $t17: $1_option_Option'$1_object_token_MutatorRef'; + var $t18: $1_string_String; + var $t19: $signer; + var $t20: $1_object_property_map_PropertyMap; + var $t21: $1_starcoin_token_StarcoinToken; + var $t22: $1_option_Option'$1_royalty_Royalty'; + var $t23: $1_object_ConstructorRef; + var $t24: int; + var $t25: $signer; + var $t26: int; + var $t27: int; + var $t28: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $1_starcoin_token_StarcoinCollection; + var $t34: bool; + var $t35: bool; + var $t36: bool; + var $t37: $1_object_token_MutatorRef; + var $t38: bool; + var $t39: $1_object_token_BurnRef; + var $t40: $1_option_Option'$1_object_TransferRef'; + var $t41: $1_object_property_map_MutatorRef; + var $t42: $1_starcoin_token_StarcoinToken; + var $t43: $1_object_property_map_PropertyMap; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_object_property_map_PropertyMap': $1_object_property_map_PropertyMap; + var $temp_0'$1_option_Option'$1_object_token_MutatorRef'': $1_option_Option'$1_object_token_MutatorRef'; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$at(183,9834,9835)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'vec'$1_string_String''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume $IsValid'vec'vec'u8'''($t7); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:274:5+1 + assume {:print "$track_local(105,22,7):", $t7} $t7 == $t7; + + // $t22 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume {:print "$at(183,10246,10260)"} true; + + // assume And(WellFormed($t22), Le(Len(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t22) && (LenVec($t22->$vec) <= 1)); + + // assume Eq>($t22, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t22, $1_option_spec_none'$1_royalty_Royalty'()); + + // $t22 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:92+14 + + // $t23 := object_token::create($t0, $t1, $t2, $t3, $t22, $t4) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:31+81 + call $t23 := $1_object_token_create($t0, $t1, $t2, $t3, $t22, $t4); + if ($abort_flag) { + assume {:print "$at(183,10185,10266)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[constructor_ref]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:284:13+15 + assume {:print "$track_local(105,22,16):", $t23} $t23 == $t23; + + // $t25 := object::generate_signer($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:286:29+41 + assume {:print "$at(183,10297,10338)"} true; + call $t25 := $1_object_generate_signer($t23); + if ($abort_flag) { + assume {:print "$at(183,10297,10338)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[object_signer]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:286:13+13 + assume {:print "$track_local(105,22,19):", $t25} $t25 == $t25; + + // trace_local[name#829]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:537:52+4 + assume {:print "$at(183,19251,19255)"} true; + assume {:print "$track_local(105,22,18):", $t1} $t1 == $t1; + + // $t26 := signer::address_of($t0) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:70+27 + assume {:print "$at(183,19365,19392)"} true; + call $t26 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,19365,19392)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t27 := collection::create_collection_address($t26, $t1) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:31+73 + call $t27 := $1_collection_create_collection_address($t26, $t1); + if ($abort_flag) { + assume {:print "$at(183,19326,19399)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t28 := object::address_to_object($t27) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:539:9+62 + assume {:print "$at(183,19409,19471)"} true; + call $t28 := $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'($t27); + if ($abort_flag) { + assume {:print "$at(183,19409,19471)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection_obj]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:288:13+14 + assume {:print "$at(183,10353,10367)"} true; + assume {:print "$track_local(105,22,15):", $t28} $t28 == $t28; + + // $t29 := object::object_address($t28) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t29 := $1_object_object_address'$1_starcoin_token_StarcoinCollection'($t28); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection_address#832]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,22,14):", $t29} $t29 == $t29; + + // $t30 := exists($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t30 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t29); + + // if ($t30) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t30) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,22):", $t32} $t32 == $t32; + + // $t24 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t24 := $t32; + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L16; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t33 := get_global($t29) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t33 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t29); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[collection#2]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:289:13+10 + assume {:print "$at(183,10423,10433)"} true; + assume {:print "$track_local(105,22,13):", $t33} $t33 == $t33; + + // $t34 := get_field.mutable_token_description($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+36 + assume {:print "$at(183,10516,10552)"} true; + $t34 := $t33->$mutable_token_description; + + // if ($t34) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + if ($t34) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 +L4: + + // $t35 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + assume {:print "$at(183,10516,10601)"} true; + $t35 := true; + assume $IsValid'bool'($t35); + + // $t9 := $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + $t9 := $t35; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:293:20+10 + assume {:print "$at(183,10572,10582)"} true; +L3: + + // $t9 := get_field.mutable_token_name($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:293:20+29 + assume {:print "$at(183,10572,10601)"} true; + $t9 := $t33->$mutable_token_name; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+85 + assume {:print "$at(183,10516,10601)"} true; +L5: + + // if ($t9) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; + if ($t9) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 +L7: + + // $t36 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; + $t36 := true; + assume $IsValid'bool'($t36); + + // $t10 := $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + $t10 := $t36; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:294:20+10 + assume {:print "$at(183,10621,10631)"} true; +L6: + + // $t10 := get_field.mutable_token_uri($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:294:20+28 + assume {:print "$at(183,10621,10649)"} true; + $t10 := $t33->$mutable_token_uri; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:292:13+133 + assume {:print "$at(183,10516,10649)"} true; +L8: + + // if ($t10) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; + if ($t10) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:61+16 + assume {:print "$at(183,10722,10738)"} true; +L10: + + // $t37 := object_token::generate_mutator_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:26+52 + assume {:print "$at(183,10687,10739)"} true; + call $t37 := $1_object_token_generate_mutator_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,10687,10739)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t11 := opaque begin: option::some($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + assume ($IsValid'$1_option_Option'$1_object_token_MutatorRef''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_some($t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + assume $IsEqual'$1_option_Option'$1_object_token_MutatorRef''($t11, $1_option_spec_some'$1_object_token_MutatorRef'($t37)); + + // $t11 := opaque end: option::some($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:296:13+66 + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume {:print "$at(183,10770,10784)"} true; +L9: + + // $t11 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume {:print "$at(183,10770,10784)"} true; + + // assume And(WellFormed($t11), Le(Len(select option::Option.vec($t11)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume ($IsValid'$1_option_Option'$1_object_token_MutatorRef''($t11) && (LenVec($t11->$vec) <= 1)); + + // assume Eq>($t11, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + assume $IsEqual'$1_option_Option'$1_object_token_MutatorRef''($t11, $1_option_spec_none'$1_object_token_MutatorRef'()); + + // $t11 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:298:13+14 + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:27+295 + assume {:print "$at(183,10499,10794)"} true; +L11: + + // trace_local[mutator_ref]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:291:13+11 + assume {:print "$at(183,10485,10496)"} true; + assume {:print "$track_local(105,22,17):", $t11} $t11 == $t11; + + // $t38 := get_field.tokens_burnable_by_creator($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:28+37 + assume {:print "$at(183,10824,10861)"} true; + $t38 := $t33->$tokens_burnable_by_creator; + + // if ($t38) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + if ($t38) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:58+16 + assume {:print "$at(183,10922,10938)"} true; +L13: + + // $t39 := object_token::generate_burn_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:26+49 + assume {:print "$at(183,10890,10939)"} true; + call $t39 := $1_object_token_generate_burn_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,10890,10939)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t12 := opaque begin: option::some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + + // assume And(WellFormed($t12), And(Le(Len(select option::Option.vec($t12)), 1), forall $elem: object_token::BurnRef: select option::Option.vec($t12): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + assume ($IsValid'$1_option_Option'$1_object_token_BurnRef''($t12) && ((LenVec($t12->$vec) <= 1) && (var $range_0 := $t12->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))))); + + // assume Eq>($t12, option::spec_some($t39)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + assume $IsEqual'$1_option_Option'$1_object_token_BurnRef''($t12, $1_option_spec_some'$1_object_token_BurnRef'($t39)); + + // $t12 := opaque end: option::some($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:302:13+63 + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + assume {:print "$at(183,10820,10994)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume {:print "$at(183,10970,10984)"} true; +L12: + + // $t12 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume {:print "$at(183,10970,10984)"} true; + + // assume And(WellFormed($t12), And(Le(Len(select option::Option.vec($t12)), 1), forall $elem: object_token::BurnRef: select option::Option.vec($t12): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume ($IsValid'$1_option_Option'$1_object_token_BurnRef''($t12) && ((LenVec($t12->$vec) <= 1) && (var $range_0 := $t12->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))))); + + // assume Eq>($t12, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + assume $IsEqual'$1_option_Option'$1_object_token_BurnRef''($t12, $1_option_spec_none'$1_object_token_BurnRef'()); + + // $t12 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:304:13+14 + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:301:24+174 + assume {:print "$at(183,10820,10994)"} true; +L14: + + // $t40 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume {:print "$at(183,11090,11104)"} true; + + // assume And(WellFormed($t40), Le(Len(select option::Option.vec($t40)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume ($IsValid'$1_option_Option'$1_object_TransferRef''($t40) && (LenVec($t40->$vec) <= 1)); + + // assume Eq>($t40, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + assume $IsEqual'$1_option_Option'$1_object_TransferRef''($t40, $1_option_spec_none'$1_object_TransferRef'()); + + // $t40 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:309:27+14 + + // $t41 := object_property_map::generate_mutator_ref($t23) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:311:35+59 + assume {:print "$at(183,11165,11224)"} true; + call $t41 := $1_object_property_map_generate_mutator_ref($t23); + if ($abort_flag) { + assume {:print "$at(183,11165,11224)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t42 := pack starcoin_token::StarcoinToken($t12, $t40, $t11, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:307:30+209 + assume {:print "$at(183,11026,11235)"} true; + $t42 := $1_starcoin_token_StarcoinToken($t12, $t40, $t11, $t41); + + // trace_local[starcoin_token]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:307:13+14 + assume {:print "$track_local(105,22,21):", $t42} $t42 == $t42; + + // move_to($t42, $t25) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:313:9+7 + assume {:print "$at(183,11245,11252)"} true; + if ($ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t25->$addr)) { + call $ExecFailureAbort(); + } else { + $1_starcoin_token_StarcoinToken_$memory := $ResourceUpdate($1_starcoin_token_StarcoinToken_$memory, $t25->$addr, $t42); + } + if ($abort_flag) { + assume {:print "$at(183,11245,11252)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // $t43 := object_property_map::prepare_input($t5, $t6, $t7) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:315:26+82 + assume {:print "$at(183,11312,11394)"} true; + call $t43 := $1_object_property_map_prepare_input($t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,11312,11394)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_local[properties]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:315:13+10 + assume {:print "$track_local(105,22,20):", $t43} $t43 == $t43; + + // object_property_map::init($t23, $t43) on_abort goto L16 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:316:9+55 + assume {:print "$at(183,11404,11459)"} true; + call $1_object_property_map_init($t23, $t43); + if ($abort_flag) { + assume {:print "$at(183,11404,11459)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(105,22):", $t24} $t24 == $t24; + goto L16; + } + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:318:9+15 + assume {:print "$at(183,11470,11485)"} true; + assume {:print "$track_return(105,22,0):", $t23} $t23 == $t23; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; +L15: + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; + $ret0 := $t23; + return; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 +L16: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:319:5+1 + assume {:print "$at(183,11490,11491)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+470 +procedure {:timeLimit 80} $1_starcoin_token_set_description$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $1_object_Object'#0'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_starcoin_token_StarcoinToken; + var $t20: $1_option_Option'$1_object_token_MutatorRef'; + var $t21: $1_object_token_MutatorRef; + var $t22: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume {:print "$at(183,15330,15331)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume {:print "$track_local(105,31,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume {:print "$track_local(105,31,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:420:5+1 + assume {:print "$track_local(105,31,2):", $t2} $t2 == $t2; + + // $t6 := starcoin_token::is_mutable_description<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:426:13+29 + assume {:print "$at(183,15533,15562)"} true; + call $t6 := $1_starcoin_token_is_mutable_description'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,15533,15562)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 + assume {:print "$at(183,15512,15631)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 + assume {:print "$at(183,15512,15631)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 +L0: + + // $t8 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:427:38+18 + assume {:print "$at(183,15601,15619)"} true; + $t8 := 4; + assume $IsValid'u64'($t8); + + // $t9 := error::permission_denied($t8) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:427:13+44 + call $t9 := $1_error_permission_denied($t8); + if ($abort_flag) { + assume {:print "$at(183,15576,15620)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 + assume {:print "$at(183,15512,15631)"} true; + assume {:print "$track_abort(105,31):", $t9} $t9 == $t9; + + // $t7 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 + $t7 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:425:9+119 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:429:48+6 + assume {:print "$at(183,15680,15686)"} true; +L2: + + // trace_local[creator#849]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,31,3):", $t0} $t0 == $t0; + + // trace_local[token#848]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,31,4):", $t1} $t1 == $t1; + + // $t10 := object::object_address<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t10 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // trace_local[token_address#850]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,31,5):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t11 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L3: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,31):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t7 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L5: + + // $t14 := object_token::creator<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t14 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // $t15 := signer::address_of($t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // $t16 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L6: + + // $t17 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t17 := 3; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,31):", $t18} $t18 == $t18; + + // $t7 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t7 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L8: + + // $t19 := get_global($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // $t20 := get_field.mutator_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:54+27 + assume {:print "$at(183,15751,15778)"} true; + $t20 := $t19->$mutator_ref; + + // $t21 := opaque begin: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + + // assume Identical($t22, option::spec_is_none($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + assume ($t22 == $1_option_spec_is_none'$1_object_token_MutatorRef'($t20)); + + // if ($t22) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + if ($t22) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 +L12: + + // assume And(option::spec_is_none($t20), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + assume {:print "$at(183,15736,15779)"} true; + assume ($1_option_spec_is_none'$1_object_token_MutatorRef'($t20) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + assume {:print "$at(183,15736,15779)"} true; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 +L11: + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + assume {:print "$at(183,15736,15779)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t21); + + // assume Eq($t21, option::spec_borrow($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + assume $IsEqual'$1_object_token_MutatorRef'($t21, $1_option_spec_borrow'$1_object_token_MutatorRef'($t20)); + + // $t21 := opaque end: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:39+43 + + // object_token::set_description($t21, $t2) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:430:9+87 + call $1_object_token_set_description($t21, $t2); + if ($abort_flag) { + assume {:print "$at(183,15706,15793)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,31):", $t7} $t7 == $t7; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:431:5+1 + assume {:print "$at(183,15799,15800)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:431:5+1 + assume {:print "$at(183,15799,15800)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:431:5+1 +L10: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:431:5+1 + assume {:print "$at(183,15799,15800)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+435 +procedure {:timeLimit 80} $1_starcoin_token_set_name$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $1_object_Object'#0'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_starcoin_token_StarcoinToken; + var $t20: $1_option_Option'$1_object_token_MutatorRef'; + var $t21: $1_object_token_MutatorRef; + var $t22: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume {:print "$at(183,15806,15807)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume {:print "$track_local(105,32,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume {:print "$track_local(105,32,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:433:5+1 + assume {:print "$track_local(105,32,2):", $t2} $t2 == $t2; + + // $t6 := starcoin_token::is_mutable_name<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:439:13+22 + assume {:print "$at(183,15995,16017)"} true; + call $t6 := $1_starcoin_token_is_mutable_name'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,15995,16017)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 + assume {:print "$at(183,15974,16086)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 + assume {:print "$at(183,15974,16086)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 +L0: + + // $t8 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:440:38+18 + assume {:print "$at(183,16056,16074)"} true; + $t8 := 4; + assume $IsValid'u64'($t8); + + // $t9 := error::permission_denied($t8) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:440:13+44 + call $t9 := $1_error_permission_denied($t8); + if ($abort_flag) { + assume {:print "$at(183,16031,16075)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 + assume {:print "$at(183,15974,16086)"} true; + assume {:print "$track_abort(105,32):", $t9} $t9 == $t9; + + // $t7 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 + $t7 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:438:9+112 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:442:48+6 + assume {:print "$at(183,16135,16141)"} true; +L2: + + // trace_local[creator#852]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,32,3):", $t0} $t0 == $t0; + + // trace_local[token#851]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,32,4):", $t1} $t1 == $t1; + + // $t10 := object::object_address<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t10 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // trace_local[token_address#853]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,32,5):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t11 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L3: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,32):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t7 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L5: + + // $t14 := object_token::creator<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t14 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // $t15 := signer::address_of($t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // $t16 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L6: + + // $t17 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t17 := 3; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,32):", $t18} $t18 == $t18; + + // $t7 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t7 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L8: + + // $t19 := get_global($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // $t20 := get_field.mutator_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:47+27 + assume {:print "$at(183,16199,16226)"} true; + $t20 := $t19->$mutator_ref; + + // $t21 := opaque begin: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + + // assume Identical($t22, option::spec_is_none($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + assume ($t22 == $1_option_spec_is_none'$1_object_token_MutatorRef'($t20)); + + // if ($t22) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + if ($t22) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 +L12: + + // assume And(option::spec_is_none($t20), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + assume {:print "$at(183,16184,16227)"} true; + assume ($1_option_spec_is_none'$1_object_token_MutatorRef'($t20) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + assume {:print "$at(183,16184,16227)"} true; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 +L11: + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + assume {:print "$at(183,16184,16227)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t21); + + // assume Eq($t21, option::spec_borrow($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + assume $IsEqual'$1_object_token_MutatorRef'($t21, $1_option_spec_borrow'$1_object_token_MutatorRef'($t20)); + + // $t21 := opaque end: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:32+43 + + // object_token::set_name($t21, $t2) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:443:9+73 + call $1_object_token_set_name($t21, $t2); + if ($abort_flag) { + assume {:print "$at(183,16161,16234)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,32):", $t7} $t7 == $t7; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:444:5+1 + assume {:print "$at(183,16240,16241)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:444:5+1 + assume {:print "$at(183,16240,16241)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:444:5+1 +L10: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:444:5+1 + assume {:print "$at(183,16240,16241)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+430 +procedure {:timeLimit 80} $1_starcoin_token_set_uri$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $1_object_Object'#0'; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_starcoin_token_StarcoinToken; + var $t20: $1_option_Option'$1_object_token_MutatorRef'; + var $t21: $1_object_token_MutatorRef; + var $t22: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume {:print "$at(183,16247,16248)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume {:print "$track_local(105,33,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume {:print "$track_local(105,33,1):", $t1} $t1 == $t1; + + // trace_local[uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:446:5+1 + assume {:print "$track_local(105,33,2):", $t2} $t2 == $t2; + + // $t6 := starcoin_token::is_mutable_uri<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:452:13+21 + assume {:print "$at(183,16434,16455)"} true; + call $t6 := $1_starcoin_token_is_mutable_uri'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,16434,16455)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 + assume {:print "$at(183,16413,16524)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 + assume {:print "$at(183,16413,16524)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 +L0: + + // $t8 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:453:38+18 + assume {:print "$at(183,16494,16512)"} true; + $t8 := 4; + assume $IsValid'u64'($t8); + + // $t9 := error::permission_denied($t8) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:453:13+44 + call $t9 := $1_error_permission_denied($t8); + if ($abort_flag) { + assume {:print "$at(183,16469,16513)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 + assume {:print "$at(183,16413,16524)"} true; + assume {:print "$track_abort(105,33):", $t9} $t9 == $t9; + + // $t7 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 + $t7 := $t9; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:451:9+111 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:455:48+6 + assume {:print "$at(183,16573,16579)"} true; +L2: + + // trace_local[creator#855]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,33,3):", $t0} $t0 == $t0; + + // trace_local[token#854]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,33,4):", $t1} $t1 == $t1; + + // $t10 := object::object_address<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t10 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // trace_local[token_address#856]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,33,5):", $t10} $t10 == $t10; + + // $t11 := exists($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t11 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L3: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,33):", $t13} $t13 == $t13; + + // $t7 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t7 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L5: + + // $t14 := object_token::creator<#0>($t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t14 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // $t15 := signer::address_of($t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // $t16 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t16) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L6: + + // $t17 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t17 := 3; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,33):", $t18} $t18 == $t18; + + // $t7 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t7 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L8: + + // $t19 := get_global($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t10); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // $t20 := get_field.mutator_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:46+27 + assume {:print "$at(183,16636,16663)"} true; + $t20 := $t19->$mutator_ref; + + // $t21 := opaque begin: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + + // assume Identical($t22, option::spec_is_none($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + assume ($t22 == $1_option_spec_is_none'$1_object_token_MutatorRef'($t20)); + + // if ($t22) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + if ($t22) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 +L12: + + // assume And(option::spec_is_none($t20), Eq(262145, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + assume {:print "$at(183,16621,16664)"} true; + assume ($1_option_spec_is_none'$1_object_token_MutatorRef'($t20) && $IsEqual'num'(262145, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + assume {:print "$at(183,16621,16664)"} true; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 +L11: + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + assume {:print "$at(183,16621,16664)"} true; + assume $IsValid'$1_object_token_MutatorRef'($t21); + + // assume Eq($t21, option::spec_borrow($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + assume $IsEqual'$1_object_token_MutatorRef'($t21, $1_option_spec_borrow'$1_object_token_MutatorRef'($t20)); + + // $t21 := opaque end: option::borrow($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:31+43 + + // object_token::set_uri($t21, $t2) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:456:9+71 + call $1_object_token_set_uri($t21, $t2); + if ($abort_flag) { + assume {:print "$at(183,16599,16670)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,33):", $t7} $t7 == $t7; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:457:5+1 + assume {:print "$at(183,16676,16677)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:457:5+1 + assume {:print "$at(183,16676,16677)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:457:5+1 +L10: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:457:5+1 + assume {:print "$at(183,16676,16677)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun starcoin_token::add_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+507 +procedure {:timeLimit 80} $1_starcoin_token_add_property$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: Vec (int)) returns () +{ + // declare local variables + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinToken; + var $t7: $1_object_Object'#0'; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_starcoin_token_StarcoinToken; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_object_property_map_MutatorRef; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: Vec (int); + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$at(183,16683,16684)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume $IsValid'vec'u8''($t4); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$track_local(105,0,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$track_local(105,0,1):", $t1} $t1 == $t1; + + // trace_local[key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$track_local(105,0,2):", $t2} $t2 == $t2; + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$track_local(105,0,3):", $t3} $t3 == $t3; + + // trace_local[value]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:459:5+1 + assume {:print "$track_local(105,0,4):", $t4} $t4 == $t4; + + // trace_local[creator#795]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,0,5):", $t0} $t0 == $t0; + + // trace_local[token#794]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,0,7):", $t1} $t1 == $t1; + + // $t9 := object::object_address<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t9 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[token_address#796]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,0,8):", $t9} $t9 == $t9; + + // $t11 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t11 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,0):", $t13} $t13 == $t13; + + // $t10 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t10 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t14 := object_token::creator<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t14 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // $t15 := signer::address_of($t0) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // $t16 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t17 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t17 := 3; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,0):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t10 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t19 := get_global($t9) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t9); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[starcoin_token]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:466:13+14 + assume {:print "$at(183,16907,16921)"} true; + assume {:print "$track_local(105,0,6):", $t19} $t19 == $t19; + + // $t20 := starcoin_token::are_properties_mutable<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:468:13+29 + assume {:print "$at(183,16989,17018)"} true; + call $t20 := $1_starcoin_token_are_properties_mutable'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,16989,17018)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // if ($t20) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 + assume {:print "$at(183,16968,17092)"} true; + if ($t20) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 + assume {:print "$at(183,16968,17092)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 +L6: + + // $t21 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:469:38+23 + assume {:print "$at(183,17057,17080)"} true; + $t21 := 6; + assume $IsValid'u64'($t21); + + // $t22 := error::permission_denied($t21) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:469:13+49 + call $t22 := $1_error_permission_denied($t21); + if ($abort_flag) { + assume {:print "$at(183,17032,17081)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 + assume {:print "$at(183,16968,17092)"} true; + assume {:print "$track_abort(105,0):", $t22} $t22 == $t22; + + // $t10 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 + $t10 := $t22; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:467:9+124 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:472:35+14 + assume {:print "$at(183,17129,17143)"} true; +L8: + + // $t23 := get_field.property_mutator_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:472:34+36 + assume {:print "$at(183,17128,17164)"} true; + $t23 := $t19->$property_mutator_ref; + + // object_property_map::add($t23, $t2, $t3, $t4) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:472:9+80 + call $1_object_property_map_add($t23, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(183,17103,17183)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,0):", $t10} $t10 == $t10; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:473:5+1 + assume {:print "$at(183,17189,17190)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:473:5+1 + assume {:print "$at(183,17189,17190)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:473:5+1 +L10: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:473:5+1 + assume {:print "$at(183,17189,17190)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun starcoin_token::add_typed_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+491 +procedure {:timeLimit 80} $1_starcoin_token_add_typed_property$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String, _$t3: #1) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_starcoin_token_StarcoinToken; + var $t6: $1_object_Object'#0'; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $1_starcoin_token_StarcoinToken; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_object_property_map_MutatorRef; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $t3: #1; + var $temp_0'#1': #1; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume {:print "$at(183,17196,17197)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume $IsValid'#1'($t3); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume {:print "$track_local(105,1,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume {:print "$track_local(105,1,1):", $t1} $t1 == $t1; + + // trace_local[key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume {:print "$track_local(105,1,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:475:5+1 + assume {:print "$track_local(105,1,3):", $t3} $t3 == $t3; + + // trace_local[creator#798]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,1,4):", $t0} $t0 == $t0; + + // trace_local[token#797]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,1,6):", $t1} $t1 == $t1; + + // $t8 := object::object_address<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t8 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[token_address#799]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,1,7):", $t8} $t8 == $t8; + + // $t10 := exists($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t10 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t11 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t11 := 2; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,1):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t9 := $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t13 := object_token::creator<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t13 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // $t14 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // $t15 := ==($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t15 := $IsEqual'address'($t13, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t16 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t16 := 3; + assume $IsValid'u64'($t16); + + // $t17 := error::permission_denied($t16) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t17 := $1_error_permission_denied($t16); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,1):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t9 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t18 := get_global($t8) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[starcoin_token]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:481:13+14 + assume {:print "$at(183,17404,17418)"} true; + assume {:print "$track_local(105,1,5):", $t18} $t18 == $t18; + + // $t19 := starcoin_token::are_properties_mutable<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:483:13+29 + assume {:print "$at(183,17486,17515)"} true; + call $t19 := $1_starcoin_token_are_properties_mutable'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,17486,17515)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 + assume {:print "$at(183,17465,17589)"} true; + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 + assume {:print "$at(183,17465,17589)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 +L6: + + // $t20 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:484:38+23 + assume {:print "$at(183,17554,17577)"} true; + $t20 := 6; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:484:13+49 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(183,17529,17578)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 + assume {:print "$at(183,17465,17589)"} true; + assume {:print "$track_abort(105,1):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:482:9+124 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:487:41+14 + assume {:print "$at(183,17632,17646)"} true; +L8: + + // $t22 := get_field.property_mutator_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:487:40+36 + assume {:print "$at(183,17631,17667)"} true; + $t22 := $t18->$property_mutator_ref; + + // object_property_map::add_typed<#1>($t22, $t2, $t3) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:487:9+80 + call $1_object_property_map_add_typed'#1'($t22, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(183,17600,17680)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,1):", $t9} $t9 == $t9; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:488:5+1 + assume {:print "$at(183,17686,17687)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:488:5+1 + assume {:print "$at(183,17686,17687)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:488:5+1 +L10: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:488:5+1 + assume {:print "$at(183,17686,17687)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_collection_tokens_burnable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:593:5+195 +procedure {:timeLimit 80} $1_starcoin_token_are_collection_tokens_burnable$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:593:5+1 + assume {:print "$at(183,21238,21239)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:593:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:593:5+1 + assume {:print "$track_local(105,2,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#801]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,2,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,2):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,2):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,2):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.tokens_burnable_by_creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:596:9+57 + assume {:print "$at(183,21370,21427)"} true; + $t8 := $t7->$tokens_burnable_by_creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:596:9+57 + assume {:print "$track_return(105,2,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:597:5+1 + assume {:print "$at(183,21432,21433)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:597:5+1 + assume {:print "$at(183,21432,21433)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:597:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:597:5+1 + assume {:print "$at(183,21432,21433)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_collection_tokens_freezable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+197 +procedure {:inline 1} $1_starcoin_token_are_collection_tokens_freezable'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+1 + assume {:print "$at(183,21439,21440)"} true; + assume {:print "$track_local(105,3,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#803]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,3,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,3):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.tokens_freezable_by_creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$at(183,21572,21630)"} true; + $t8 := $t7->$tokens_freezable_by_creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$track_return(105,3,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_collection_tokens_freezable [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+197 +procedure {:inline 1} $1_starcoin_token_are_collection_tokens_freezable'$1_starcoin_token_StarcoinCollection'(_$t0: $1_object_Object'$1_starcoin_token_StarcoinCollection') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+1 + assume {:print "$at(183,21439,21440)"} true; + assume {:print "$track_local(105,3,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'$1_starcoin_token_StarcoinCollection'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#803]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,3,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,3):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.tokens_freezable_by_creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$at(183,21572,21630)"} true; + $t8 := $t7->$tokens_freezable_by_creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$track_return(105,3,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_collection_tokens_freezable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+197 +procedure {:timeLimit 80} $1_starcoin_token_are_collection_tokens_freezable$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+1 + assume {:print "$at(183,21439,21440)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:599:5+1 + assume {:print "$track_local(105,3,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#803]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,3,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,3):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,3):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.tokens_freezable_by_creator($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$at(183,21572,21630)"} true; + $t8 := $t7->$tokens_freezable_by_creator; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:602:9+58 + assume {:print "$track_return(105,3,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:603:5+1 + assume {:print "$at(183,21635,21636)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_properties_mutable<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+230 +procedure {:inline 1} $1_starcoin_token_are_properties_mutable'#0'(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: $1_object_Object'$1_collection_Collection'; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_starcoin_token_StarcoinCollection; + var $t10: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+1 + assume {:print "$at(183,11849,11850)"} true; + assume {:print "$track_local(105,4,0):", $t0} $t0 == $t0; + + // $t3 := object_token::collection_object<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:334:26+38 + assume {:print "$at(183,11970,12008)"} true; + call $t3 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,11970,12008)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[collection]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:334:13+10 + assume {:print "$track_local(105,4,1):", $t3} $t3 == $t3; + + // $t5 := object::object_address($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t5 := $1_object_object_address'$1_collection_Collection'($t3); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[collection_address#805]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,4,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t6 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,4):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t9 := get_global($t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t10 := get_field.mutable_token_properties($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:335:9+55 + assume {:print "$at(183,12018,12073)"} true; + $t10 := $t9->$mutable_token_properties; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:335:9+55 + assume {:print "$track_return(105,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun starcoin_token::are_properties_mutable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+230 +procedure {:timeLimit 80} $1_starcoin_token_are_properties_mutable$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: $1_object_Object'$1_collection_Collection'; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: $1_starcoin_token_StarcoinCollection; + var $t10: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+1 + assume {:print "$at(183,11849,11850)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:333:5+1 + assume {:print "$track_local(105,4,0):", $t0} $t0 == $t0; + + // $t3 := object_token::collection_object<#0>($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:334:26+38 + assume {:print "$at(183,11970,12008)"} true; + call $t3 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,11970,12008)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[collection]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:334:13+10 + assume {:print "$track_local(105,4,1):", $t3} $t3 == $t3; + + // $t5 := object::object_address($t3) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t5 := $1_object_object_address'$1_collection_Collection'($t3); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_local[collection_address#805]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,4,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t6 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,4):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t9 := get_global($t5) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(105,4):", $t4} $t4 == $t4; + goto L4; + } + + // $t10 := get_field.mutable_token_properties($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:335:9+55 + assume {:print "$at(183,12018,12073)"} true; + $t10 := $t9->$mutable_token_properties; + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:335:9+55 + assume {:print "$track_return(105,4,0):", $t10} $t10 == $t10; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; +L3: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; + $ret0 := $t10; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:336:5+1 + assume {:print "$at(183,12078,12079)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun starcoin_token::create_collection [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1085 +procedure {:timeLimit 80} $1_starcoin_token_create_collection$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: bool, _$t6: bool, _$t7: bool, _$t8: bool, _$t9: bool, _$t10: bool, _$t11: bool, _$t12: bool, _$t13: bool, _$t14: int, _$t15: int) returns () +{ + // declare local variables + var $t16: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t17: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + $t10 := _$t10; + $t11 := _$t11; + $t12 := _$t12; + $t13 := _$t13; + $t14 := _$t14; + $t15 := _$t15; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$at(183,3013,3014)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t8); + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t9); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t10); + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t11); + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t12); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'bool'($t13); + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'u64'($t14); + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume $IsValid'u64'($t15); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,4):", $t4} $t4 == $t4; + + // trace_local[mutable_description]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,5):", $t5} $t5 == $t5; + + // trace_local[mutable_royalty]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,6):", $t6} $t6 == $t6; + + // trace_local[mutable_uri]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,7):", $t7} $t7 == $t7; + + // trace_local[mutable_token_description]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,8):", $t8} $t8 == $t8; + + // trace_local[mutable_token_name]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,9):", $t9} $t9 == $t9; + + // trace_local[mutable_token_properties]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,10):", $t10} $t10 == $t10; + + // trace_local[mutable_token_uri]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,11):", $t11} $t11 == $t11; + + // trace_local[tokens_burnable_by_creator]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,12):", $t12} $t12 == $t12; + + // trace_local[tokens_freezable_by_creator]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,13):", $t13} $t13 == $t13; + + // trace_local[royalty_numerator]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,14):", $t14} $t14 == $t14; + + // trace_local[royalty_denominator]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:72:5+1 + assume {:print "$track_local(105,6,15):", $t15} $t15 == $t15; + + // $t16 := starcoin_token::create_collection_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9, $t10, $t11, $t12, $t13, $t14, $t15) on_abort goto L2 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:90:9+511 + assume {:print "$at(183,3580,4091)"} true; + call $t16 := $1_starcoin_token_create_collection_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9, $t10, $t11, $t12, $t13, $t14, $t15); + if ($abort_flag) { + assume {:print "$at(183,3580,4091)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(105,6):", $t17} $t17 == $t17; + goto L2; + } + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:90:9+511 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:108:5+1 + assume {:print "$at(183,4097,4098)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:108:5+1 + assume {:print "$at(183,4097,4098)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:108:5+1 +L2: + + // abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:108:5+1 + assume {:print "$at(183,4097,4098)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun starcoin_token::create_collection_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1968 +procedure {:inline 1} $1_starcoin_token_create_collection_object(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: bool, _$t6: bool, _$t7: bool, _$t8: bool, _$t9: bool, _$t10: bool, _$t11: bool, _$t12: bool, _$t13: bool, _$t14: int, _$t15: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinCollection') +{ + // declare local variables + var $t16: $1_option_Option'$1_collection_MutatorRef'; + var $t17: $1_option_Option'$1_royalty_MutatorRef'; + var $t18: $1_object_ConstructorRef; + var $t19: int; + var $t20: $1_option_Option'$1_collection_MutatorRef'; + var $t21: $signer; + var $t22: $1_royalty_Royalty; + var $t23: $1_option_Option'$1_royalty_MutatorRef'; + var $t24: $1_starcoin_token_StarcoinCollection; + var $t25: int; + var $t26: int; + var $t27: $1_royalty_Royalty; + var $t28: $1_option_Option'$1_royalty_Royalty'; + var $t29: $1_object_ConstructorRef; + var $t30: $signer; + var $t31: bool; + var $t32: $1_collection_MutatorRef; + var $t33: $1_object_ExtendRef; + var $t34: $1_royalty_MutatorRef; + var $t35: $1_starcoin_token_StarcoinCollection; + var $t36: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_option_Option'$1_collection_MutatorRef'': $1_option_Option'$1_collection_MutatorRef'; + var $temp_0'$1_option_Option'$1_royalty_MutatorRef'': $1_option_Option'$1_royalty_MutatorRef'; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + $t10 := _$t10; + $t11 := _$t11; + $t12 := _$t12; + $t13 := _$t13; + $t14 := _$t14; + $t15 := _$t15; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$at(183,4104,4105)"} true; + assume {:print "$track_local(105,7,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,4):", $t4} $t4 == $t4; + + // trace_local[mutable_description]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,5):", $t5} $t5 == $t5; + + // trace_local[mutable_royalty]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,6):", $t6} $t6 == $t6; + + // trace_local[mutable_uri]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,7):", $t7} $t7 == $t7; + + // trace_local[mutable_token_description]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,8):", $t8} $t8 == $t8; + + // trace_local[mutable_token_name]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,9):", $t9} $t9 == $t9; + + // trace_local[mutable_token_properties]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,10):", $t10} $t10 == $t10; + + // trace_local[mutable_token_uri]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,11):", $t11} $t11 == $t11; + + // trace_local[tokens_burnable_by_creator]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,12):", $t12} $t12 == $t12; + + // trace_local[tokens_freezable_by_creator]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,13):", $t13} $t13 == $t13; + + // trace_local[royalty_numerator]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,14):", $t14} $t14 == $t14; + + // trace_local[royalty_denominator]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,15):", $t15} $t15 == $t15; + + // $t25 := signer::address_of($t0) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:128:28+27 + assume {:print "$at(183,4719,4746)"} true; + call $t25 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,4719,4746)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[creator_addr]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:128:13+12 + assume {:print "$track_local(105,7,19):", $t25} $t25 == $t25; + + // $t27 := royalty::create($t14, $t15, $t25) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:129:23+69 + assume {:print "$at(183,4770,4839)"} true; + call $t27 := $1_royalty_create($t14, $t15, $t25); + if ($abort_flag) { + assume {:print "$at(183,4770,4839)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[royalty]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:129:13+7 + assume {:print "$track_local(105,7,22):", $t27} $t27 == $t27; + + // $t28 := opaque begin: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume {:print "$at(183,5008,5029)"} true; + + // assume And(WellFormed($t28), Le(Len(select option::Option.vec($t28)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t28) && (LenVec($t28->$vec) <= 1)); + + // assume Eq>($t28, option::spec_some($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t28, $1_option_spec_some'$1_royalty_Royalty'($t27)); + + // $t28 := opaque end: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + + // $t29 := collection::create_fixed_collection($t0, $t1, $t2, $t3, $t28, $t4) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:130:31+186 + assume {:print "$at(183,4871,5057)"} true; + call $t29 := $1_collection_create_fixed_collection($t0, $t1, $t2, $t3, $t28, $t4); + if ($abort_flag) { + assume {:print "$at(183,4871,5057)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[constructor_ref]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:130:13+15 + assume {:print "$track_local(105,7,18):", $t29} $t29 == $t29; + + // $t30 := object::generate_signer($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:139:29+41 + assume {:print "$at(183,5088,5129)"} true; + call $t30 := $1_object_generate_signer($t29); + if ($abort_flag) { + assume {:print "$at(183,5088,5129)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[object_signer]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:139:13+13 + assume {:print "$track_local(105,7,21):", $t30} $t30 == $t30; + + // $t31 := ||($t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:51+2 + assume {:print "$at(183,5181,5183)"} true; + call $t31 := $Or($t5, $t7); + + // if ($t31) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + if ($t31) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:59+16 + assume {:print "$at(183,5257,5273)"} true; +L1: + + // $t32 := collection::generate_mutator_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:26+50 + assume {:print "$at(183,5224,5274)"} true; + call $t32 := $1_collection_generate_mutator_ref($t29); + if ($abort_flag) { + assume {:print "$at(183,5224,5274)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t16 := opaque begin: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + + // assume And(WellFormed($t16), Le(Len(select option::Option.vec($t16)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + assume ($IsValid'$1_option_Option'$1_collection_MutatorRef''($t16) && (LenVec($t16->$vec) <= 1)); + + // assume Eq>($t16, option::spec_some($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + assume $IsEqual'$1_option_Option'$1_collection_MutatorRef''($t16, $1_option_spec_some'$1_collection_MutatorRef'($t32)); + + // $t16 := opaque end: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + assume {:print "$at(183,5157,5329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume {:print "$at(183,5305,5319)"} true; +L0: + + // $t16 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume {:print "$at(183,5305,5319)"} true; + + // assume And(WellFormed($t16), Le(Len(select option::Option.vec($t16)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume ($IsValid'$1_option_Option'$1_collection_MutatorRef''($t16) && (LenVec($t16->$vec) <= 1)); + + // assume Eq>($t16, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume $IsEqual'$1_option_Option'$1_collection_MutatorRef''($t16, $1_option_spec_none'$1_collection_MutatorRef'()); + + // $t16 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + assume {:print "$at(183,5157,5329)"} true; +L2: + + // trace_local[mutator_ref]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:13+11 + assume {:print "$at(183,5143,5154)"} true; + assume {:print "$track_local(105,7,20):", $t16} $t16 == $t16; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:84+16 + assume {:print "$at(183,5472,5488)"} true; +L4: + + // $t33 := object::generate_extend_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:56+45 + assume {:print "$at(183,5444,5489)"} true; + call $t33 := $1_object_generate_extend_ref($t29); + if ($abort_flag) { + assume {:print "$at(183,5444,5489)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t34 := royalty::generate_mutator_ref($t33) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:26+76 + call $t34 := $1_royalty_generate_mutator_ref($t33); + if ($abort_flag) { + assume {:print "$at(183,5414,5490)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t17 := opaque begin: option::some($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + assume ($IsValid'$1_option_Option'$1_royalty_MutatorRef''($t17) && (LenVec($t17->$vec) <= 1)); + + // assume Eq>($t17, option::spec_some($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + assume $IsEqual'$1_option_Option'$1_royalty_MutatorRef''($t17, $1_option_spec_some'$1_royalty_MutatorRef'($t34)); + + // $t17 := opaque end: option::some($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume {:print "$at(183,5521,5535)"} true; +L3: + + // $t17 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume {:print "$at(183,5521,5535)"} true; + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume ($IsValid'$1_option_Option'$1_royalty_MutatorRef''($t17) && (LenVec($t17->$vec) <= 1)); + + // assume Eq>($t17, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume $IsEqual'$1_option_Option'$1_royalty_MutatorRef''($t17, $1_option_spec_none'$1_royalty_MutatorRef'()); + + // $t17 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; +L5: + + // trace_local[royalty_mutator_ref]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:13+19 + assume {:print "$at(183,5344,5363)"} true; + assume {:print "$track_local(105,7,23):", $t17} $t17 == $t17; + + // $t35 := pack starcoin_token::StarcoinCollection($t16, $t17, $t5, $t7, $t8, $t9, $t10, $t11, $t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:152:35+367 + assume {:print "$at(183,5582,5949)"} true; + $t35 := $1_starcoin_token_StarcoinCollection($t16, $t17, $t5, $t7, $t8, $t9, $t10, $t11, $t12, $t13); + + // trace_local[starcoin_collection]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:152:13+19 + assume {:print "$track_local(105,7,24):", $t35} $t35 == $t35; + + // move_to($t35, $t30) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:164:9+7 + assume {:print "$at(183,5959,5966)"} true; + if ($ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t30->$addr)) { + call $ExecFailureAbort(); + } else { + $1_starcoin_token_StarcoinCollection_$memory := $ResourceUpdate($1_starcoin_token_StarcoinCollection_$memory, $t30->$addr, $t35); + } + if ($abort_flag) { + assume {:print "$at(183,5959,5966)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t36 := object::object_from_constructor_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:165:9+53 + assume {:print "$at(183,6013,6066)"} true; + call $t36 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinCollection'($t29); + if ($abort_flag) { + assume {:print "$at(183,6013,6066)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:165:9+53 + assume {:print "$track_return(105,7,0):", $t36} $t36 == $t36; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; +L6: + + // return $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; + $ret0 := $t36; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 +L7: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + +} + +// fun starcoin_token::create_collection_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1968 +procedure {:timeLimit 80} $1_starcoin_token_create_collection_object$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: bool, _$t6: bool, _$t7: bool, _$t8: bool, _$t9: bool, _$t10: bool, _$t11: bool, _$t12: bool, _$t13: bool, _$t14: int, _$t15: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinCollection') +{ + // declare local variables + var $t16: $1_option_Option'$1_collection_MutatorRef'; + var $t17: $1_option_Option'$1_royalty_MutatorRef'; + var $t18: $1_object_ConstructorRef; + var $t19: int; + var $t20: $1_option_Option'$1_collection_MutatorRef'; + var $t21: $signer; + var $t22: $1_royalty_Royalty; + var $t23: $1_option_Option'$1_royalty_MutatorRef'; + var $t24: $1_starcoin_token_StarcoinCollection; + var $t25: int; + var $t26: int; + var $t27: $1_royalty_Royalty; + var $t28: $1_option_Option'$1_royalty_Royalty'; + var $t29: $1_object_ConstructorRef; + var $t30: $signer; + var $t31: bool; + var $t32: $1_collection_MutatorRef; + var $t33: $1_object_ExtendRef; + var $t34: $1_royalty_MutatorRef; + var $t35: $1_starcoin_token_StarcoinCollection; + var $t36: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: bool; + var $t6: bool; + var $t7: bool; + var $t8: bool; + var $t9: bool; + var $t10: bool; + var $t11: bool; + var $t12: bool; + var $t13: bool; + var $t14: int; + var $t15: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinCollection'': $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $temp_0'$1_option_Option'$1_collection_MutatorRef'': $1_option_Option'$1_collection_MutatorRef'; + var $temp_0'$1_option_Option'$1_royalty_MutatorRef'': $1_option_Option'$1_royalty_MutatorRef'; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + $t10 := _$t10; + $t11 := _$t11; + $t12 := _$t12; + $t13 := _$t13; + $t14 := _$t14; + $t15 := _$t15; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$at(183,4104,4105)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t8); + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t9); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t10); + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t11); + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t12); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'bool'($t13); + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'u64'($t14); + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume $IsValid'u64'($t15); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,0):", $t0} $t0 == $t0; + + // trace_local[description]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,1):", $t1} $t1 == $t1; + + // trace_local[max_supply]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,4):", $t4} $t4 == $t4; + + // trace_local[mutable_description]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,5):", $t5} $t5 == $t5; + + // trace_local[mutable_royalty]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,6):", $t6} $t6 == $t6; + + // trace_local[mutable_uri]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,7):", $t7} $t7 == $t7; + + // trace_local[mutable_token_description]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,8):", $t8} $t8 == $t8; + + // trace_local[mutable_token_name]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,9):", $t9} $t9 == $t9; + + // trace_local[mutable_token_properties]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,10):", $t10} $t10 == $t10; + + // trace_local[mutable_token_uri]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,11):", $t11} $t11 == $t11; + + // trace_local[tokens_burnable_by_creator]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,12):", $t12} $t12 == $t12; + + // trace_local[tokens_freezable_by_creator]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,13):", $t13} $t13 == $t13; + + // trace_local[royalty_numerator]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,14):", $t14} $t14 == $t14; + + // trace_local[royalty_denominator]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:110:5+1 + assume {:print "$track_local(105,7,15):", $t15} $t15 == $t15; + + // $t25 := signer::address_of($t0) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:128:28+27 + assume {:print "$at(183,4719,4746)"} true; + call $t25 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,4719,4746)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[creator_addr]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:128:13+12 + assume {:print "$track_local(105,7,19):", $t25} $t25 == $t25; + + // $t27 := royalty::create($t14, $t15, $t25) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:129:23+69 + assume {:print "$at(183,4770,4839)"} true; + call $t27 := $1_royalty_create($t14, $t15, $t25); + if ($abort_flag) { + assume {:print "$at(183,4770,4839)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[royalty]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:129:13+7 + assume {:print "$track_local(105,7,22):", $t27} $t27 == $t27; + + // $t28 := opaque begin: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume {:print "$at(183,5008,5029)"} true; + + // assume And(WellFormed($t28), Le(Len(select option::Option.vec($t28)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume ($IsValid'$1_option_Option'$1_royalty_Royalty''($t28) && (LenVec($t28->$vec) <= 1)); + + // assume Eq>($t28, option::spec_some($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + assume $IsEqual'$1_option_Option'$1_royalty_Royalty''($t28, $1_option_spec_some'$1_royalty_Royalty'($t27)); + + // $t28 := opaque end: option::some($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:135:13+21 + + // $t29 := collection::create_fixed_collection($t0, $t1, $t2, $t3, $t28, $t4) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:130:31+186 + assume {:print "$at(183,4871,5057)"} true; + call $t29 := $1_collection_create_fixed_collection($t0, $t1, $t2, $t3, $t28, $t4); + if ($abort_flag) { + assume {:print "$at(183,4871,5057)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[constructor_ref]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:130:13+15 + assume {:print "$track_local(105,7,18):", $t29} $t29 == $t29; + + // $t30 := object::generate_signer($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:139:29+41 + assume {:print "$at(183,5088,5129)"} true; + call $t30 := $1_object_generate_signer($t29); + if ($abort_flag) { + assume {:print "$at(183,5088,5129)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_local[object_signer]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:139:13+13 + assume {:print "$track_local(105,7,21):", $t30} $t30 == $t30; + + // $t31 := ||($t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:51+2 + assume {:print "$at(183,5181,5183)"} true; + call $t31 := $Or($t5, $t7); + + // if ($t31) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + if ($t31) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:59+16 + assume {:print "$at(183,5257,5273)"} true; +L1: + + // $t32 := collection::generate_mutator_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:26+50 + assume {:print "$at(183,5224,5274)"} true; + call $t32 := $1_collection_generate_mutator_ref($t29); + if ($abort_flag) { + assume {:print "$at(183,5224,5274)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t16 := opaque begin: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + + // assume And(WellFormed($t16), Le(Len(select option::Option.vec($t16)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + assume ($IsValid'$1_option_Option'$1_collection_MutatorRef''($t16) && (LenVec($t16->$vec) <= 1)); + + // assume Eq>($t16, option::spec_some($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + assume $IsEqual'$1_option_Option'$1_collection_MutatorRef''($t16, $1_option_spec_some'$1_collection_MutatorRef'($t32)); + + // $t16 := opaque end: option::some($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:141:13+64 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + assume {:print "$at(183,5157,5329)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume {:print "$at(183,5305,5319)"} true; +L0: + + // $t16 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume {:print "$at(183,5305,5319)"} true; + + // assume And(WellFormed($t16), Le(Len(select option::Option.vec($t16)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume ($IsValid'$1_option_Option'$1_collection_MutatorRef''($t16) && (LenVec($t16->$vec) <= 1)); + + // assume Eq>($t16, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + assume $IsEqual'$1_option_Option'$1_collection_MutatorRef''($t16, $1_option_spec_none'$1_collection_MutatorRef'()); + + // $t16 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:143:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:27+172 + assume {:print "$at(183,5157,5329)"} true; +L2: + + // trace_local[mutator_ref]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:140:13+11 + assume {:print "$at(183,5143,5154)"} true; + assume {:print "$track_local(105,7,20):", $t16} $t16 == $t16; + + // if ($t6) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; + if ($t6) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:84+16 + assume {:print "$at(183,5472,5488)"} true; +L4: + + // $t33 := object::generate_extend_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:56+45 + assume {:print "$at(183,5444,5489)"} true; + call $t33 := $1_object_generate_extend_ref($t29); + if ($abort_flag) { + assume {:print "$at(183,5444,5489)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t34 := royalty::generate_mutator_ref($t33) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:26+76 + call $t34 := $1_royalty_generate_mutator_ref($t33); + if ($abort_flag) { + assume {:print "$at(183,5414,5490)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t17 := opaque begin: option::some($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + assume ($IsValid'$1_option_Option'$1_royalty_MutatorRef''($t17) && (LenVec($t17->$vec) <= 1)); + + // assume Eq>($t17, option::spec_some($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + assume $IsEqual'$1_option_Option'$1_royalty_MutatorRef''($t17, $1_option_spec_some'$1_royalty_MutatorRef'($t34)); + + // $t17 := opaque end: option::some($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:147:13+90 + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume {:print "$at(183,5521,5535)"} true; +L3: + + // $t17 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume {:print "$at(183,5521,5535)"} true; + + // assume And(WellFormed($t17), Le(Len(select option::Option.vec($t17)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume ($IsValid'$1_option_Option'$1_royalty_MutatorRef''($t17) && (LenVec($t17->$vec) <= 1)); + + // assume Eq>($t17, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + assume $IsEqual'$1_option_Option'$1_royalty_MutatorRef''($t17, $1_option_spec_none'$1_royalty_MutatorRef'()); + + // $t17 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:149:13+14 + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:35+179 + assume {:print "$at(183,5366,5545)"} true; +L5: + + // trace_local[royalty_mutator_ref]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:146:13+19 + assume {:print "$at(183,5344,5363)"} true; + assume {:print "$track_local(105,7,23):", $t17} $t17 == $t17; + + // $t35 := pack starcoin_token::StarcoinCollection($t16, $t17, $t5, $t7, $t8, $t9, $t10, $t11, $t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:152:35+367 + assume {:print "$at(183,5582,5949)"} true; + $t35 := $1_starcoin_token_StarcoinCollection($t16, $t17, $t5, $t7, $t8, $t9, $t10, $t11, $t12, $t13); + + // trace_local[starcoin_collection]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:152:13+19 + assume {:print "$track_local(105,7,24):", $t35} $t35 == $t35; + + // move_to($t35, $t30) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:164:9+7 + assume {:print "$at(183,5959,5966)"} true; + if ($ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t30->$addr)) { + call $ExecFailureAbort(); + } else { + $1_starcoin_token_StarcoinCollection_$memory := $ResourceUpdate($1_starcoin_token_StarcoinCollection_$memory, $t30->$addr, $t35); + } + if ($abort_flag) { + assume {:print "$at(183,5959,5966)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // $t36 := object::object_from_constructor_ref($t29) on_abort goto L7 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:165:9+53 + assume {:print "$at(183,6013,6066)"} true; + call $t36 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinCollection'($t29); + if ($abort_flag) { + assume {:print "$at(183,6013,6066)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(105,7):", $t26} $t26 == $t26; + goto L7; + } + + // trace_return[0]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:165:9+53 + assume {:print "$track_return(105,7,0):", $t36} $t36 == $t36; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; +L6: + + // return $t36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; + $ret0 := $t36; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 +L7: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:166:5+1 + assume {:print "$at(183,6071,6072)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + +} + +// fun starcoin_token::freeze_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+516 +procedure {:timeLimit 80} $1_starcoin_token_freeze_transfer$verify(_$t0: $signer, _$t1: $1_object_Object'#0') returns () +{ + // declare local variables + var $t2: bool; + var $t3: $signer; + var $t4: $1_starcoin_token_StarcoinToken; + var $t5: $1_object_Object'#0'; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinToken; + var $t18: $1_object_Object'$1_collection_Collection'; + var $t19: bool; + var $t20: $1_option_Option'$1_object_TransferRef'; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_option_Option'$1_object_TransferRef'; + var $t25: $1_object_TransferRef; + var $t26: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume {:print "$at(183,14263,14264)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume {:print "$track_local(105,8,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:397:5+1 + assume {:print "$track_local(105,8,1):", $t1} $t1 == $t1; + + // trace_local[creator#810]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,8,3):", $t0} $t0 == $t0; + + // trace_local[token#809]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,8,5):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[token_address#811]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,8,6):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,8):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t8 := $t11; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t12 := object_token::creator<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t12 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // $t13 := signer::address_of($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,8):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t8 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[starcoin_token]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:398:13+14 + assume {:print "$at(183,14397,14411)"} true; + assume {:print "$track_local(105,8,4):", $t17} $t17 == $t17; + + // $t18 := object_token::collection_object<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:45+38 + assume {:print "$at(183,14511,14549)"} true; + call $t18 := $1_object_token_collection_object'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,14511,14549)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // $t19 := starcoin_token::are_collection_tokens_freezable($t18) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+71 + call $t19 := $1_starcoin_token_are_collection_tokens_freezable'$1_collection_Collection'($t18); + if ($abort_flag) { + assume {:print "$at(183,14479,14550)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:37+14 + assume {:print "$at(183,14587,14601)"} true; +L7: + + // $t20 := get_field.transfer_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:36+28 + assume {:print "$at(183,14586,14614)"} true; + $t20 := $t17->$transfer_ref; + + // $t2 := opaque begin: option::is_some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:20+45 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:20+45 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:20+45 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_object_TransferRef'($t20)); + + // $t2 := opaque end: option::is_some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:401:20+45 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 + assume {:print "$at(183,14479,14615)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 +L6: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 + assume {:print "$at(183,14479,14615)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 + $t2 := $t21; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:400:13+136 +L8: + + // if ($t2) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 + assume {:print "$at(183,14458,14684)"} true; + if ($t2) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 + assume {:print "$at(183,14458,14684)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 +L9: + + // $t22 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:402:38+18 + assume {:print "$at(183,14654,14672)"} true; + $t22 := 4; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:402:13+44 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(183,14629,14673)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 + assume {:print "$at(183,14458,14684)"} true; + assume {:print "$track_abort(105,8):", $t23} $t23 == $t23; + + // $t8 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 + $t8 := $t23; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:399:9+226 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:58+14 + assume {:print "$at(183,14743,14757)"} true; +L11: + + // $t24 := get_field.transfer_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:57+28 + assume {:print "$at(183,14742,14770)"} true; + $t24 := $t17->$transfer_ref; + + // $t25 := opaque begin: option::borrow($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + + // assume Identical($t26, option::spec_is_none($t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + assume ($t26 == $1_option_spec_is_none'$1_object_TransferRef'($t24)); + + // if ($t26) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + if ($t26) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 +L15: + + // assume And(option::spec_is_none($t24), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + assume {:print "$at(183,14727,14771)"} true; + assume ($1_option_spec_is_none'$1_object_TransferRef'($t24) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + assume {:print "$at(183,14727,14771)"} true; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 +L14: + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + assume {:print "$at(183,14727,14771)"} true; + assume $IsValid'$1_object_TransferRef'($t25); + + // assume Eq($t25, option::spec_borrow($t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + assume $IsEqual'$1_object_TransferRef'($t25, $1_option_spec_borrow'$1_object_TransferRef'($t24)); + + // $t25 := opaque end: option::borrow($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:42+44 + + // object::disable_ungated_transfer($t25) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:404:9+78 + call $1_object_disable_ungated_transfer($t25); + if ($abort_flag) { + assume {:print "$at(183,14694,14772)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,8):", $t8} $t8 == $t8; + goto L13; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:405:5+1 + assume {:print "$at(183,14778,14779)"} true; +L12: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:405:5+1 + assume {:print "$at(183,14778,14779)"} true; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:405:5+1 +L13: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:405:5+1 + assume {:print "$at(183,14778,14779)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_burnable [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:339:5+135 +procedure {:timeLimit 80} $1_starcoin_token_is_burnable$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinToken; + var $t8: $1_option_Option'$1_object_token_BurnRef'; + var $t9: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:339:5+1 + assume {:print "$at(183,12097,12098)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:339:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:339:5+1 + assume {:print "$track_local(105,9,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:324:29+29 + assume {:print "$at(183,11612,11641)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,11612,11641)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,9):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[token_address#813]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:324:13+13 + assume {:print "$track_local(105,9,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:326:13+6 + assume {:print "$at(183,11672,11678)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 + assume {:print "$at(183,11651,11772)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 + assume {:print "$at(183,11651,11772)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:327:30+21 + assume {:print "$at(183,11739,11760)"} true; +L0: + + // $t5 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:327:30+21 + assume {:print "$at(183,11739,11760)"} true; + $t5 := 2; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:327:13+39 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,11722,11761)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,9):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 + assume {:print "$at(183,11651,11772)"} true; + assume {:print "$track_abort(105,9):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:325:9+121 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:329:38+13 + assume {:print "$at(183,11811,11824)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:329:9+13 + assume {:print "$at(183,11782,11795)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,11782,11795)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,9):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.burn_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:25+24 + assume {:print "$at(183,12201,12225)"} true; + $t8 := $t7->$burn_ref; + + // $t9 := opaque begin: option::is_some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:9+41 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:9+41 + assume $IsValid'bool'($t9); + + // assume Eq($t9, option::spec_is_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:9+41 + assume $IsEqual'bool'($t9, $1_option_spec_is_some'$1_object_token_BurnRef'($t8)); + + // $t9 := opaque end: option::is_some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:9+41 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:340:9+41 + assume {:print "$track_return(105,9,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:341:5+1 + assume {:print "$at(183,12231,12232)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:341:5+1 + assume {:print "$at(183,12231,12232)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:341:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:341:5+1 + assume {:print "$at(183,12231,12232)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_freezable_by_creator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:344:5+182 +procedure {:timeLimit 80} $1_starcoin_token_is_freezable_by_creator$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:344:5+1 + assume {:print "$at(183,12250,12251)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:344:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:344:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:344:5+1 + assume {:print "$track_local(105,10,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:345:41+38 + assume {:print "$at(183,12387,12425)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12387,12425)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,10):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::are_collection_tokens_freezable($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:345:9+71 + call $t3 := $1_starcoin_token_are_collection_tokens_freezable'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12355,12426)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,10):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:345:9+71 + assume {:print "$track_return(105,10,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:346:5+1 + assume {:print "$at(183,12431,12432)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:346:5+1 + assume {:print "$at(183,12431,12432)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:346:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:346:5+1 + assume {:print "$at(183,12431,12432)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:551:5+191 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_description$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:551:5+1 + assume {:print "$at(183,19845,19846)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:551:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:551:5+1 + assume {:print "$track_local(105,11,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,11):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#815]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,11,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,11):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,11):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,11):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:554:9+50 + assume {:print "$at(183,19980,20030)"} true; + $t8 := $t7->$mutable_description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:554:9+50 + assume {:print "$track_return(105,11,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:555:5+1 + assume {:print "$at(183,20035,20036)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:555:5+1 + assume {:print "$at(183,20035,20036)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:555:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:555:5+1 + assume {:print "$at(183,20035,20036)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:557:5+205 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_royalty$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: $1_option_Option'$1_royalty_MutatorRef'; + var $t9: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:557:5+1 + assume {:print "$at(183,20042,20043)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:557:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:557:5+1 + assume {:print "$track_local(105,12,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,12):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#817]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,12,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,12):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,12):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,12):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.royalty_mutator_ref($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:25+51 + assume {:print "$at(183,20189,20240)"} true; + $t8 := $t7->$royalty_mutator_ref; + + // $t9 := opaque begin: option::is_some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:9+68 + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:9+68 + assume $IsValid'bool'($t9); + + // assume Eq($t9, option::spec_is_some($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:9+68 + assume $IsEqual'bool'($t9, $1_option_spec_is_some'$1_royalty_MutatorRef'($t8)); + + // $t9 := opaque end: option::is_some($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:9+68 + + // trace_return[0]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:560:9+68 + assume {:print "$track_return(105,12,0):", $t9} $t9 == $t9; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:561:5+1 + assume {:print "$at(183,20246,20247)"} true; +L3: + + // return $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:561:5+1 + assume {:print "$at(183,20246,20247)"} true; + $ret0 := $t9; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:561:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:561:5+1 + assume {:print "$at(183,20246,20247)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_description [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+203 +procedure {:inline 1} $1_starcoin_token_is_mutable_collection_token_description'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+1 + assume {:print "$at(183,20434,20435)"} true; + assume {:print "$track_local(105,13,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#819]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,13,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,13):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:572:9+56 + assume {:print "$at(183,20575,20631)"} true; + $t8 := $t7->$mutable_token_description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:572:9+56 + assume {:print "$track_return(105,13,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+203 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_token_description$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+1 + assume {:print "$at(183,20434,20435)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:569:5+1 + assume {:print "$track_local(105,13,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#819]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,13,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,13):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,13):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:572:9+56 + assume {:print "$at(183,20575,20631)"} true; + $t8 := $t7->$mutable_token_description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:572:9+56 + assume {:print "$track_return(105,13,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:573:5+1 + assume {:print "$at(183,20636,20637)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_name [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+189 +procedure {:inline 1} $1_starcoin_token_is_mutable_collection_token_name'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+1 + assume {:print "$at(183,20643,20644)"} true; + assume {:print "$track_local(105,14,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#821]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,14,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,14):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:578:9+49 + assume {:print "$at(183,20777,20826)"} true; + $t8 := $t7->$mutable_token_name; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:578:9+49 + assume {:print "$track_return(105,14,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+189 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_token_name$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+1 + assume {:print "$at(183,20643,20644)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:575:5+1 + assume {:print "$track_local(105,14,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#821]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,14,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,14):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,14):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_name($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:578:9+49 + assume {:print "$at(183,20777,20826)"} true; + $t8 := $t7->$mutable_token_name; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:578:9+49 + assume {:print "$track_return(105,14,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:579:5+1 + assume {:print "$at(183,20831,20832)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_properties [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:587:5+201 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_token_properties$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:587:5+1 + assume {:print "$at(183,21031,21032)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:587:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:587:5+1 + assume {:print "$track_local(105,15,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,15):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#823]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,15,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,15):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,15):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,15):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_properties($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:590:9+55 + assume {:print "$at(183,21171,21226)"} true; + $t8 := $t7->$mutable_token_properties; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:590:9+55 + assume {:print "$track_return(105,15,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:591:5+1 + assume {:print "$at(183,21231,21232)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:591:5+1 + assume {:print "$at(183,21231,21232)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:591:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:591:5+1 + assume {:print "$at(183,21231,21232)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_uri [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+187 +procedure {:inline 1} $1_starcoin_token_is_mutable_collection_token_uri'$1_collection_Collection'(_$t0: $1_object_Object'$1_collection_Collection') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'$1_collection_Collection'; + var $temp_0'$1_object_Object'$1_collection_Collection'': $1_object_Object'$1_collection_Collection'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+1 + assume {:print "$at(183,20838,20839)"} true; + assume {:print "$track_local(105,16,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'$1_collection_Collection'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#825]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,16,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,16):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:584:9+48 + assume {:print "$at(183,20971,21019)"} true; + $t8 := $t7->$mutable_token_uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:584:9+48 + assume {:print "$track_return(105,16,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_token_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+187 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_token_uri$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+1 + assume {:print "$at(183,20838,20839)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:581:5+1 + assume {:print "$track_local(105,16,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#825]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,16,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,16):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,16):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_token_uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:584:9+48 + assume {:print "$at(183,20971,21019)"} true; + $t8 := $t7->$mutable_token_uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:584:9+48 + assume {:print "$track_return(105,16,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:585:5+1 + assume {:print "$at(183,21024,21025)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_collection_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:563:5+175 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_collection_uri$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: $1_starcoin_token_StarcoinCollection; + var $t8: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:563:5+1 + assume {:print "$at(183,20253,20254)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:563:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[collection]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:563:5+1 + assume {:print "$track_local(105,17,0):", $t0} $t0 == $t0; + + // $t2 := object::object_address<#0>($t0) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:34+29 + assume {:print "$at(183,19595,19624)"} true; + call $t2 := $1_object_object_address'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,19595,19624)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,17):", $t3} $t3 == $t3; + goto L4; + } + + // trace_local[collection_address#827]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:543:13+18 + assume {:print "$track_local(105,17,1):", $t2} $t2 == $t2; + + // $t4 := exists($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:545:13+6 + assume {:print "$at(183,19655,19661)"} true; + $t4 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:30+26 + assume {:print "$at(183,19732,19758)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:546:13+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(183,19715,19759)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,17):", $t3} $t3 == $t3; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + assume {:print "$at(183,19634,19770)"} true; + assume {:print "$track_abort(105,17):", $t6} $t6 == $t6; + + // $t3 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + $t3 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:544:9+136 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:43+18 + assume {:print "$at(183,19814,19832)"} true; +L2: + + // $t7 := get_global($t2) on_abort goto L4 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:548:9+13 + assume {:print "$at(183,19780,19793)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(183,19780,19793)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(105,17):", $t3} $t3 == $t3; + goto L4; + } + + // $t8 := get_field.mutable_uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:566:9+42 + assume {:print "$at(183,20380,20422)"} true; + $t8 := $t7->$mutable_uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:566:9+42 + assume {:print "$track_return(105,17,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:567:5+1 + assume {:print "$at(183,20427,20428)"} true; +L3: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:567:5+1 + assume {:print "$at(183,20427,20428)"} true; + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:567:5+1 +L4: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:567:5+1 + assume {:print "$at(183,20427,20428)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_description<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+189 +procedure {:inline 1} $1_starcoin_token_is_mutable_description'#0'(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+1 + assume {:print "$at(183,12450,12451)"} true; + assume {:print "$track_local(105,18,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:49+38 + assume {:print "$at(183,12594,12632)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12594,12632)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,18):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_description($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:9+79 + call $t3 := $1_starcoin_token_is_mutable_collection_token_description'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12554,12633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,18):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:9+79 + assume {:print "$track_return(105,18,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+189 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_description$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+1 + assume {:print "$at(183,12450,12451)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:349:5+1 + assume {:print "$track_local(105,18,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:49+38 + assume {:print "$at(183,12594,12632)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12594,12632)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,18):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_description($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:9+79 + call $t3 := $1_starcoin_token_is_mutable_collection_token_description'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12554,12633)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,18):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:350:9+79 + assume {:print "$track_return(105,18,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:351:5+1 + assume {:print "$at(183,12638,12639)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_name<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+175 +procedure {:inline 1} $1_starcoin_token_is_mutable_name'#0'(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+1 + assume {:print "$at(183,12657,12658)"} true; + assume {:print "$track_local(105,19,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:42+38 + assume {:print "$at(183,12787,12825)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12787,12825)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,19):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_name($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:9+72 + call $t3 := $1_starcoin_token_is_mutable_collection_token_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12754,12826)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,19):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:9+72 + assume {:print "$track_return(105,19,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_name [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+175 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_name$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+1 + assume {:print "$at(183,12657,12658)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:354:5+1 + assume {:print "$track_local(105,19,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:42+38 + assume {:print "$at(183,12787,12825)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12787,12825)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,19):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_name($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:9+72 + call $t3 := $1_starcoin_token_is_mutable_collection_token_name'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12754,12826)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,19):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:355:9+72 + assume {:print "$track_return(105,19,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:356:5+1 + assume {:print "$at(183,12831,12832)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_uri<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+173 +procedure {:inline 1} $1_starcoin_token_is_mutable_uri'#0'(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+1 + assume {:print "$at(183,12850,12851)"} true; + assume {:print "$track_local(105,20,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:41+38 + assume {:print "$at(183,12978,13016)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12978,13016)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,20):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_uri($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:9+71 + call $t3 := $1_starcoin_token_is_mutable_collection_token_uri'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12946,13017)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,20):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:9+71 + assume {:print "$track_return(105,20,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::is_mutable_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+173 +procedure {:timeLimit 80} $1_starcoin_token_is_mutable_uri$verify(_$t0: $1_object_Object'#0') returns ($ret0: bool) +{ + // declare local variables + var $t1: $1_object_Object'$1_collection_Collection'; + var $t2: int; + var $t3: bool; + var $t0: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+1 + assume {:print "$at(183,12850,12851)"} true; + assume $IsValid'$1_object_Object'#0''($t0); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:359:5+1 + assume {:print "$track_local(105,20,0):", $t0} $t0 == $t0; + + // $t1 := object_token::collection_object<#0>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:41+38 + assume {:print "$at(183,12978,13016)"} true; + call $t1 := $1_object_token_collection_object'#0'($t0); + if ($abort_flag) { + assume {:print "$at(183,12978,13016)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,20):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := starcoin_token::is_mutable_collection_token_uri($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:9+71 + call $t3 := $1_starcoin_token_is_mutable_collection_token_uri'$1_collection_Collection'($t1); + if ($abort_flag) { + assume {:print "$at(183,12946,13017)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(105,20):", $t2} $t2 == $t2; + goto L2; + } + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:360:9+71 + assume {:print "$track_return(105,20,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:361:5+1 + assume {:print "$at(183,13022,13023)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_soul_bound [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+621 +procedure {:timeLimit 80} $1_starcoin_token_mint_soul_bound$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int)), _$t8: int) returns () +{ + // declare local variables + var $t9: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t10: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $t8: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$at(183,8114,8115)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'vec'$1_string_String''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'vec'vec'u8'''($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume $IsValid'address'($t8); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,7):", $t7} $t7 == $t7; + + // trace_local[soul_bound_to]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:219:5+1 + assume {:print "$track_local(105,23,8):", $t8} $t8 == $t8; + + // $t9 := starcoin_token::mint_soul_bound_token_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:230:9+254 + assume {:print "$at(183,8474,8728)"} true; + call $t9 := $1_starcoin_token_mint_soul_bound_token_object($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8); + if ($abort_flag) { + assume {:print "$at(183,8474,8728)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,23):", $t10} $t10 == $t10; + goto L2; + } + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:230:9+254 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:241:5+1 + assume {:print "$at(183,8734,8735)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:241:5+1 + assume {:print "$at(183,8734,8735)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:241:5+1 +L2: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:241:5+1 + assume {:print "$at(183,8734,8735)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_soul_bound_token_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+987 +procedure {:inline 1} $1_starcoin_token_mint_soul_bound_token_object(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int)), _$t8: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t9: $1_object_ConstructorRef; + var $t10: $1_object_TransferRef; + var $t11: $1_object_ConstructorRef; + var $t12: int; + var $t13: $1_object_TransferRef; + var $t14: int; + var $t15: $1_object_LinearTransferRef; + var $t16: $1_object_ObjectCore; + var $t17: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $t8: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$at(183,8841,8842)"} true; + assume {:print "$track_local(105,24,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,7):", $t7} $t7 == $t7; + + // trace_local[soul_bound_to]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,8):", $t8} $t8 == $t8; + + // $t11 := starcoin_token::mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:255:31+213 + assume {:print "$at(183,9253,9466)"} true; + call $t11 := $1_starcoin_token_mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,9253,9466)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[constructor_ref]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:255:13+15 + assume {:print "$track_local(105,24,9):", $t11} $t11 == $t11; + + // $t13 := object::generate_transfer_ref($t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:266:28+47 + assume {:print "$at(183,9496,9543)"} true; + call $t13 := $1_object_generate_transfer_ref($t11); + if ($abort_flag) { + assume {:print "$at(183,9496,9543)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[transfer_ref]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:266:13+12 + assume {:print "$track_local(105,24,10):", $t13} $t13 == $t13; + + // assume Identical($t14, select object::ObjectCore.owner(global(select object::TransferRef.self($t13)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:412:9+47 + assume {:print "$at(50,16622,16669)"} true; + assume ($t14 == $ResourceValue($1_object_ObjectCore_$memory, $t13->$self)->$owner); + + // $t15 := object::generate_linear_transfer_ref($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:267:35+51 + assume {:print "$at(183,9579,9630)"} true; + call $t15 := $1_object_generate_linear_transfer_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,9579,9630)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // assume Identical($t16, global(select object::LinearTransferRef.self($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:421:9+42 + assume {:print "$at(50,16907,16949)"} true; + assume ($t16 == $ResourceValue($1_object_ObjectCore_$memory, $t15->$self)); + + // object::transfer_with_ref($t15, $t8) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:268:9+61 + assume {:print "$at(183,9640,9701)"} true; + call $1_object_transfer_with_ref($t15, $t8); + if ($abort_flag) { + assume {:print "$at(183,9640,9701)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // object::disable_ungated_transfer($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:269:9+47 + assume {:print "$at(183,9711,9758)"} true; + call $1_object_disable_ungated_transfer($t13); + if ($abort_flag) { + assume {:print "$at(183,9711,9758)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // $t17 := object::object_from_constructor_ref($t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:271:9+53 + assume {:print "$at(183,9769,9822)"} true; + call $t17 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinToken'($t11); + if ($abort_flag) { + assume {:print "$at(183,9769,9822)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:271:9+53 + assume {:print "$track_return(105,24,0):", $t17} $t17 == $t17; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; +L1: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; + $ret0 := $t17; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_soul_bound_token_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+987 +procedure {:timeLimit 80} $1_starcoin_token_mint_soul_bound_token_object$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int)), _$t8: int) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t9: $1_object_ConstructorRef; + var $t10: $1_object_TransferRef; + var $t11: $1_object_ConstructorRef; + var $t12: int; + var $t13: $1_object_TransferRef; + var $t14: int; + var $t15: $1_object_LinearTransferRef; + var $t16: $1_object_ObjectCore; + var $t17: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $t8: int; + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$at(183,8841,8842)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'vec'$1_string_String''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'vec'vec'u8'''($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume $IsValid'address'($t8); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,7):", $t7} $t7 == $t7; + + // trace_local[soul_bound_to]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:244:5+1 + assume {:print "$track_local(105,24,8):", $t8} $t8 == $t8; + + // $t11 := starcoin_token::mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:255:31+213 + assume {:print "$at(183,9253,9466)"} true; + call $t11 := $1_starcoin_token_mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,9253,9466)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[constructor_ref]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:255:13+15 + assume {:print "$track_local(105,24,9):", $t11} $t11 == $t11; + + // $t13 := object::generate_transfer_ref($t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:266:28+47 + assume {:print "$at(183,9496,9543)"} true; + call $t13 := $1_object_generate_transfer_ref($t11); + if ($abort_flag) { + assume {:print "$at(183,9496,9543)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[transfer_ref]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:266:13+12 + assume {:print "$track_local(105,24,10):", $t13} $t13 == $t13; + + // assume Identical($t14, select object::ObjectCore.owner(global(select object::TransferRef.self($t13)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:412:9+47 + assume {:print "$at(50,16622,16669)"} true; + assume ($t14 == $ResourceValue($1_object_ObjectCore_$memory, $t13->$self)->$owner); + + // $t15 := object::generate_linear_transfer_ref($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:267:35+51 + assume {:print "$at(183,9579,9630)"} true; + call $t15 := $1_object_generate_linear_transfer_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,9579,9630)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // assume Identical($t16, global(select object::LinearTransferRef.self($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/object.spec.move:421:9+42 + assume {:print "$at(50,16907,16949)"} true; + assume ($t16 == $ResourceValue($1_object_ObjectCore_$memory, $t15->$self)); + + // object::transfer_with_ref($t15, $t8) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:268:9+61 + assume {:print "$at(183,9640,9701)"} true; + call $1_object_transfer_with_ref($t15, $t8); + if ($abort_flag) { + assume {:print "$at(183,9640,9701)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // object::disable_ungated_transfer($t13) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:269:9+47 + assume {:print "$at(183,9711,9758)"} true; + call $1_object_disable_ungated_transfer($t13); + if ($abort_flag) { + assume {:print "$at(183,9711,9758)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // $t17 := object::object_from_constructor_ref($t11) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:271:9+53 + assume {:print "$at(183,9769,9822)"} true; + call $t17 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinToken'($t11); + if ($abort_flag) { + assume {:print "$at(183,9769,9822)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(105,24):", $t12} $t12 == $t12; + goto L2; + } + + // trace_return[0]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:271:9+53 + assume {:print "$track_return(105,24,0):", $t17} $t17 == $t17; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; +L1: + + // return $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; + $ret0 := $t17; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:272:5+1 + assume {:print "$at(183,9827,9828)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun starcoin_token::mint_token_object [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1284 +procedure {:inline 1} $1_starcoin_token_mint_token_object(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int))) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t8: int; + var $t9: $1_object_ConstructorRef; + var $t10: $1_string_String; + var $t11: $Mutation ($1_starcoin_token_StarcoinToken); + var $t12: $1_object_TransferRef; + var $t13: $1_object_ConstructorRef; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t18: bool; + var $t19: int; + var $t20: $Mutation ($1_starcoin_token_StarcoinToken); + var $t21: $1_object_TransferRef; + var $t22: $Mutation ($1_option_Option'$1_object_TransferRef'); + var $t23: bool; + var $t24: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_object_TransferRef'': $1_option_Option'$1_object_TransferRef'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$at(183,6724,6725)"} true; + assume {:print "$track_local(105,25,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,7):", $t7} $t7 == $t7; + + // $t13 := starcoin_token::mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:193:31+213 + assume {:print "$at(183,7108,7321)"} true; + call $t13 := $1_starcoin_token_mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,7108,7321)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[constructor_ref]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:193:13+15 + assume {:print "$track_local(105,25,9):", $t13} $t13 == $t13; + + // trace_local[name#834]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:537:52+4 + assume {:print "$at(183,19251,19255)"} true; + assume {:print "$track_local(105,25,10):", $t1} $t1 == $t1; + + // $t15 := signer::address_of($t0) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:70+27 + assume {:print "$at(183,19365,19392)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,19365,19392)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t16 := collection::create_collection_address($t15, $t1) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:31+73 + call $t16 := $1_collection_create_collection_address($t15, $t1); + if ($abort_flag) { + assume {:print "$at(183,19326,19399)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t17 := object::address_to_object($t16) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:539:9+62 + assume {:print "$at(183,19409,19471)"} true; + call $t17 := $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'($t16); + if ($abort_flag) { + assume {:print "$at(183,19409,19471)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t18 := starcoin_token::are_collection_tokens_freezable($t17) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:207:36+43 + assume {:print "$at(183,7512,7555)"} true; + call $t18 := $1_starcoin_token_are_collection_tokens_freezable'$1_starcoin_token_StarcoinCollection'($t17); + if ($abort_flag) { + assume {:print "$at(183,7512,7555)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:208:9+373 + assume {:print "$at(183,7565,7938)"} true; + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:209:76+16 + assume {:print "$at(183,7668,7684)"} true; +L1: + + // $t19 := object::address_from_constructor_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:209:39+54 + assume {:print "$at(183,7631,7685)"} true; + call $t19 := $1_object_address_from_constructor_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,7631,7685)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t20 := borrow_global($t19) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:210:34+17 + assume {:print "$at(183,7720,7737)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t19)); + } + if ($abort_flag) { + assume {:print "$at(183,7720,7737)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[starcoin_token]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:210:17+14 + $temp_0'$1_starcoin_token_StarcoinToken' := $Dereference($t20); + assume {:print "$track_local(105,25,11):", $temp_0'$1_starcoin_token_StarcoinToken'} $temp_0'$1_starcoin_token_StarcoinToken' == $temp_0'$1_starcoin_token_StarcoinToken'; + + // $t21 := object::generate_transfer_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:211:32+47 + assume {:print "$at(183,7806,7853)"} true; + call $t21 := $1_object_generate_transfer_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,7806,7853)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[transfer_ref]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:211:17+12 + assume {:print "$track_local(105,25,12):", $t21} $t21 == $t21; + + // $t22 := borrow_field.transfer_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:26+32 + assume {:print "$at(183,7880,7912)"} true; + $t22 := $ChildMutation($t20, 1, $Dereference($t20)->$transfer_ref); + + // opaque begin: option::fill($t22, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + + // assume Identical($t23, option::spec_is_some($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume ($t23 == $1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22))); + + // if ($t23) goto L6 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + if ($t23) { goto L6; } else { goto L7; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 +L5: + + // assume And(option::spec_is_some($t22), Eq(262144, $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + assume ($1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22)) && $IsEqual'num'(262144, $t14)); + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 +L4: + + // $t22 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + havoc $temp_0'$1_option_Option'$1_object_TransferRef''; + $t22 := $UpdateMutation($t22, $temp_0'$1_option_Option'$1_object_TransferRef''); + + // assume And(WellFormed($t22), Le(Len(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume ($IsValid'$1_option_Option'$1_object_TransferRef''($Dereference($t22)) && (LenVec($Dereference($t22)->$vec) <= 1)); + + // assume option::spec_is_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume $1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22)); + + // assume Eq(option::spec_borrow($t22), $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume $IsEqual'$1_object_TransferRef'($1_option_spec_borrow'$1_object_TransferRef'($Dereference($t22)), $t21); + + // opaque end: option::fill($t22, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + + // write_back[Reference($t20).transfer_ref (option::Option)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + $t20 := $UpdateMutation($t20, $Update'$1_starcoin_token_StarcoinToken'_transfer_ref($Dereference($t20), $Dereference($t22))); + + // pack_ref_deep($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + + // write_back[starcoin_token::StarcoinToken@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + $1_starcoin_token_StarcoinToken_$memory := $ResourceUpdate($1_starcoin_token_StarcoinToken_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:45+16 + assume {:print "$at(183,7985,8001)"} true; +L0: + + // $t24 := object::object_from_constructor_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:9+53 + assume {:print "$at(183,7949,8002)"} true; + call $t24 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinToken'($t13); + if ($abort_flag) { + assume {:print "$at(183,7949,8002)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_return[0]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:9+53 + assume {:print "$track_return(105,25,0):", $t24} $t24 == $t24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; +L2: + + // return $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; + $ret0 := $t24; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 +L3: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + + // label L6 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L6: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + + // label L7 at :1:1+10 +L7: + + // drop($t22) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun starcoin_token::mint_token_object [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1284 +procedure {:timeLimit 80} $1_starcoin_token_mint_token_object$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: Vec ($1_string_String), _$t6: Vec ($1_string_String), _$t7: Vec (Vec (int))) returns ($ret0: $1_object_Object'$1_starcoin_token_StarcoinToken') +{ + // declare local variables + var $t8: int; + var $t9: $1_object_ConstructorRef; + var $t10: $1_string_String; + var $t11: $Mutation ($1_starcoin_token_StarcoinToken); + var $t12: $1_object_TransferRef; + var $t13: $1_object_ConstructorRef; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: $1_object_Object'$1_starcoin_token_StarcoinCollection'; + var $t18: bool; + var $t19: int; + var $t20: $Mutation ($1_starcoin_token_StarcoinToken); + var $t21: $1_object_TransferRef; + var $t22: $Mutation ($1_option_Option'$1_object_TransferRef'); + var $t23: bool; + var $t24: $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: Vec ($1_string_String); + var $t6: Vec ($1_string_String); + var $t7: Vec (Vec (int)); + var $temp_0'$1_object_ConstructorRef': $1_object_ConstructorRef; + var $temp_0'$1_object_Object'$1_starcoin_token_StarcoinToken'': $1_object_Object'$1_starcoin_token_StarcoinToken'; + var $temp_0'$1_object_TransferRef': $1_object_TransferRef; + var $temp_0'$1_option_Option'$1_object_TransferRef'': $1_option_Option'$1_object_TransferRef'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$at(183,6724,6725)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'vec'$1_string_String''($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume $IsValid'vec'vec'u8'''($t7); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_collection_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: collection::FixedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_FixedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_FixedSupply_$memory, $a_0); + ($IsValid'$1_collection_FixedSupply'($rsc)))); + + // assume forall $rsc: collection::UnlimitedSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_UnlimitedSupply_$memory, $a_0); + ($IsValid'$1_collection_UnlimitedSupply'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: object_token::TokenIdentifiers: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_TokenIdentifiers_$memory, $a_0); + ($IsValid'$1_object_token_TokenIdentifiers'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,3):", $t3} $t3 == $t3; + + // trace_local[uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,4):", $t4} $t4 == $t4; + + // trace_local[property_keys]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,5):", $t5} $t5 == $t5; + + // trace_local[property_types]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,6):", $t6} $t6 == $t6; + + // trace_local[property_values]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:183:5+1 + assume {:print "$track_local(105,25,7):", $t7} $t7 == $t7; + + // $t13 := starcoin_token::mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:193:31+213 + assume {:print "$at(183,7108,7321)"} true; + call $t13 := $1_starcoin_token_mint_internal($t0, $t1, $t2, $t3, $t4, $t5, $t6, $t7); + if ($abort_flag) { + assume {:print "$at(183,7108,7321)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[constructor_ref]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:193:13+15 + assume {:print "$track_local(105,25,9):", $t13} $t13 == $t13; + + // trace_local[name#834]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:537:52+4 + assume {:print "$at(183,19251,19255)"} true; + assume {:print "$track_local(105,25,10):", $t1} $t1 == $t1; + + // $t15 := signer::address_of($t0) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:70+27 + assume {:print "$at(183,19365,19392)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,19365,19392)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t16 := collection::create_collection_address($t15, $t1) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:538:31+73 + call $t16 := $1_collection_create_collection_address($t15, $t1); + if ($abort_flag) { + assume {:print "$at(183,19326,19399)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t17 := object::address_to_object($t16) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:539:9+62 + assume {:print "$at(183,19409,19471)"} true; + call $t17 := $1_object_address_to_object'$1_starcoin_token_StarcoinCollection'($t16); + if ($abort_flag) { + assume {:print "$at(183,19409,19471)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t18 := starcoin_token::are_collection_tokens_freezable($t17) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:207:36+43 + assume {:print "$at(183,7512,7555)"} true; + call $t18 := $1_starcoin_token_are_collection_tokens_freezable'$1_starcoin_token_StarcoinCollection'($t17); + if ($abort_flag) { + assume {:print "$at(183,7512,7555)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:208:9+373 + assume {:print "$at(183,7565,7938)"} true; + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:209:76+16 + assume {:print "$at(183,7668,7684)"} true; +L1: + + // $t19 := object::address_from_constructor_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:209:39+54 + assume {:print "$at(183,7631,7685)"} true; + call $t19 := $1_object_address_from_constructor_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,7631,7685)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // $t20 := borrow_global($t19) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:210:34+17 + assume {:print "$at(183,7720,7737)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t19)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t19), EmptyVec(), $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t19)); + } + if ($abort_flag) { + assume {:print "$at(183,7720,7737)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[starcoin_token]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:210:17+14 + $temp_0'$1_starcoin_token_StarcoinToken' := $Dereference($t20); + assume {:print "$track_local(105,25,11):", $temp_0'$1_starcoin_token_StarcoinToken'} $temp_0'$1_starcoin_token_StarcoinToken' == $temp_0'$1_starcoin_token_StarcoinToken'; + + // $t21 := object::generate_transfer_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:211:32+47 + assume {:print "$at(183,7806,7853)"} true; + call $t21 := $1_object_generate_transfer_ref($t13); + if ($abort_flag) { + assume {:print "$at(183,7806,7853)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_local[transfer_ref]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:211:17+12 + assume {:print "$track_local(105,25,12):", $t21} $t21 == $t21; + + // $t22 := borrow_field.transfer_ref($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:26+32 + assume {:print "$at(183,7880,7912)"} true; + $t22 := $ChildMutation($t20, 1, $Dereference($t20)->$transfer_ref); + + // opaque begin: option::fill($t22, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + + // assume Identical($t23, option::spec_is_some($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume ($t23 == $1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22))); + + // if ($t23) goto L6 else goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + if ($t23) { goto L6; } else { goto L7; } + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 +L5: + + // assume And(option::spec_is_some($t22), Eq(262144, $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + assume ($1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22)) && $IsEqual'num'(262144, $t14)); + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + + // goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + goto L3; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 +L4: + + // $t22 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + havoc $temp_0'$1_option_Option'$1_object_TransferRef''; + $t22 := $UpdateMutation($t22, $temp_0'$1_option_Option'$1_object_TransferRef''); + + // assume And(WellFormed($t22), Le(Len(select option::Option.vec($t22)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume ($IsValid'$1_option_Option'$1_object_TransferRef''($Dereference($t22)) && (LenVec($Dereference($t22)->$vec) <= 1)); + + // assume option::spec_is_some($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume $1_option_spec_is_some'$1_object_TransferRef'($Dereference($t22)); + + // assume Eq(option::spec_borrow($t22), $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume $IsEqual'$1_object_TransferRef'($1_option_spec_borrow'$1_object_TransferRef'($Dereference($t22)), $t21); + + // opaque end: option::fill($t22, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + + // write_back[Reference($t20).transfer_ref (option::Option)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + $t20 := $UpdateMutation($t20, $Update'$1_starcoin_token_StarcoinToken'_transfer_ref($Dereference($t20), $Dereference($t22))); + + // assert Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($t20))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$burn_ref->$vec) <= 1); + + // assert forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($t20)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (var $range_0 := $Dereference($t20)->$burn_ref->$vec; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1)))))); + + // assert Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($t20))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$transfer_ref->$vec) <= 1); + + // assert Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($t20))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$mutator_ref->$vec) <= 1); + + // write_back[starcoin_token::StarcoinToken@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:212:13+60 + assume {:print "$at(183,7867,7927)"} true; + $1_starcoin_token_StarcoinToken_$memory := $ResourceUpdate($1_starcoin_token_StarcoinToken_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:45+16 + assume {:print "$at(183,7985,8001)"} true; +L0: + + // $t24 := object::object_from_constructor_ref($t13) on_abort goto L3 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:9+53 + assume {:print "$at(183,7949,8002)"} true; + call $t24 := $1_object_object_from_constructor_ref'$1_starcoin_token_StarcoinToken'($t13); + if ($abort_flag) { + assume {:print "$at(183,7949,8002)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(105,25):", $t14} $t14 == $t14; + goto L3; + } + + // trace_return[0]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:215:9+53 + assume {:print "$track_return(105,25,0):", $t24} $t24 == $t24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; +L2: + + // return $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; + $ret0 := $t24; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 +L3: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:216:5+1 + assume {:print "$at(183,8007,8008)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + + // label L6 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L6: + + // drop($t20) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L5 at :1:1+10 + goto L5; + + // label L7 at :1:1+10 +L7: + + // drop($t22) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L4 at :1:1+10 + goto L4; + +} + +// fun starcoin_token::remove_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+452 +procedure {:timeLimit 80} $1_starcoin_token_remove_property$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: $1_starcoin_token_StarcoinToken; + var $t5: $1_object_Object'#0'; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinToken; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $1_object_property_map_MutatorRef; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume {:print "$at(183,17693,17694)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume {:print "$track_local(105,26,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume {:print "$track_local(105,26,1):", $t1} $t1 == $t1; + + // trace_local[key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:490:5+1 + assume {:print "$track_local(105,26,2):", $t2} $t2 == $t2; + + // trace_local[creator#837]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,26,3):", $t0} $t0 == $t0; + + // trace_local[token#836]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,26,5):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[token_address#838]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,26,6):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,26):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t8 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t12 := object_token::creator<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t12 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,26):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t8 := $t16; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[starcoin_token]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:495:13+14 + assume {:print "$at(183,17871,17885)"} true; + assume {:print "$track_local(105,26,4):", $t17} $t17 == $t17; + + // $t18 := starcoin_token::are_properties_mutable<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:497:13+29 + assume {:print "$at(183,17953,17982)"} true; + call $t18 := $1_starcoin_token_are_properties_mutable'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,17953,17982)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 + assume {:print "$at(183,17932,18056)"} true; + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 + assume {:print "$at(183,17932,18056)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 +L6: + + // $t19 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:498:38+23 + assume {:print "$at(183,18021,18044)"} true; + $t19 := 6; + assume $IsValid'u64'($t19); + + // $t20 := error::permission_denied($t19) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:498:13+49 + call $t20 := $1_error_permission_denied($t19); + if ($abort_flag) { + assume {:print "$at(183,17996,18045)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 + assume {:print "$at(183,17932,18056)"} true; + assume {:print "$track_abort(105,26):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 + $t8 := $t20; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:496:9+124 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:501:38+14 + assume {:print "$at(183,18096,18110)"} true; +L8: + + // $t21 := get_field.property_mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:501:37+36 + assume {:print "$at(183,18095,18131)"} true; + $t21 := $t17->$property_mutator_ref; + + // object_property_map::remove($t21, $t2) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:501:9+71 + call $1_object_property_map_remove($t21, $t2); + if ($abort_flag) { + assume {:print "$at(183,18067,18138)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,26):", $t8} $t8 == $t8; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:502:5+1 + assume {:print "$at(183,18144,18145)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:502:5+1 + assume {:print "$at(183,18144,18145)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:502:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:502:5+1 + assume {:print "$at(183,18144,18145)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_collection_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+505 +procedure {:timeLimit 80} $1_starcoin_token_set_collection_description$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $1_object_Object'#0'; + var $t4: int; + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinCollection; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinCollection; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $1_option_Option'$1_collection_MutatorRef'; + var $t22: $1_collection_MutatorRef; + var $t23: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume {:print "$at(183,22228,22229)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume {:print "$track_local(105,27,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume {:print "$track_local(105,27,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:620:5+1 + assume {:print "$track_local(105,27,2):", $t2} $t2 == $t2; + + // trace_local[creator#840]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:77+7 + assume {:print "$at(183,21742,21749)"} true; + assume {:print "$track_local(105,27,5):", $t0} $t0 == $t0; + + // trace_local[collection#839]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:53+10 + assume {:print "$track_local(105,27,3):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:34+34 + assume {:print "$at(183,21816,21850)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,21816,21850)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[collection_address#841]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:13+18 + assume {:print "$track_local(105,27,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:610:13+6 + assume {:print "$at(183,21881,21887)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:30+26 + assume {:print "$at(183,21958,21984)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:13+44 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,21941,21985)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + assume {:print "$track_abort(105,27):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + $t8 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:34+10 + assume {:print "$at(183,22048,22058)"} true; +L2: + + // $t12 := collection::creator<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:13+32 + assume {:print "$at(183,22027,22059)"} true; + call $t12 := $1_collection_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,22027,22059)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:49+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,22063,22090)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:46+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,22104,22142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + assume {:print "$track_abort(105,27):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + $t8 := $t16; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:43+18 + assume {:print "$at(183,22197,22215)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:9+13 + assume {:print "$at(183,22163,22176)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,22163,22176)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[starcoin_collection]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:625:13+19 + assume {:print "$at(183,22415,22434)"} true; + assume {:print "$track_local(105,27,6):", $t17} $t17 == $t17; + + // $t18 := get_field.mutable_description($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:627:13+39 + assume {:print "$at(183,22518,22557)"} true; + $t18 := $t17->$mutable_description; + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 + assume {:print "$at(183,22497,22626)"} true; + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 + assume {:print "$at(183,22497,22626)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 +L6: + + // $t19 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:628:38+18 + assume {:print "$at(183,22596,22614)"} true; + $t19 := 4; + assume $IsValid'u64'($t19); + + // $t20 := error::permission_denied($t19) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:628:13+44 + call $t20 := $1_error_permission_denied($t19); + if ($abort_flag) { + assume {:print "$at(183,22571,22615)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 + assume {:print "$at(183,22497,22626)"} true; + assume {:print "$track_abort(105,27):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 + $t8 := $t20; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:626:9+129 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:53+19 + assume {:print "$at(183,22680,22699)"} true; +L8: + + // $t21 := get_field.mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:52+32 + assume {:print "$at(183,22679,22711)"} true; + $t21 := $t17->$mutator_ref; + + // $t22 := opaque begin: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + + // assume Identical($t23, option::spec_is_none($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + assume ($t23 == $1_option_spec_is_none'$1_collection_MutatorRef'($t21)); + + // if ($t23) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + if ($t23) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 +L12: + + // assume And(option::spec_is_none($t21), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + assume {:print "$at(183,22664,22712)"} true; + assume ($1_option_spec_is_none'$1_collection_MutatorRef'($t21) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + assume {:print "$at(183,22664,22712)"} true; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 +L11: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + assume {:print "$at(183,22664,22712)"} true; + assume $IsValid'$1_collection_MutatorRef'($t22); + + // assume Eq($t22, option::spec_borrow($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + assume $IsEqual'$1_collection_MutatorRef'($t22, $1_option_spec_borrow'$1_collection_MutatorRef'($t21)); + + // $t22 := opaque end: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:37+48 + + // collection::set_description($t22, $t2) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:630:9+90 + call $1_collection_set_description($t22, $t2); + if ($abort_flag) { + assume {:print "$at(183,22636,22726)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,27):", $t8} $t8 == $t8; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:631:5+1 + assume {:print "$at(183,22732,22733)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:631:5+1 + assume {:print "$at(183,22732,22733)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:631:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:631:5+1 + assume {:print "$at(183,22732,22733)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_collection_royalties<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+513 +procedure {:inline 1} $1_starcoin_token_set_collection_royalties'#0'(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t3: $1_object_Object'#0'; + var $t4: int; + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinCollection; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinCollection; + var $t18: $1_option_Option'$1_royalty_MutatorRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_option_Option'$1_royalty_MutatorRef'; + var $t23: $1_royalty_MutatorRef; + var $t24: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_royalty_Royalty; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$at(183,22739,22740)"} true; + assume {:print "$track_local(105,28,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$track_local(105,28,1):", $t1} $t1 == $t1; + + // trace_local[royalty]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$track_local(105,28,2):", $t2} $t2 == $t2; + + // trace_local[creator#843]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:77+7 + assume {:print "$at(183,21742,21749)"} true; + assume {:print "$track_local(105,28,5):", $t0} $t0 == $t0; + + // trace_local[collection#842]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:53+10 + assume {:print "$track_local(105,28,3):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:34+34 + assume {:print "$at(183,21816,21850)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,21816,21850)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[collection_address#844]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:13+18 + assume {:print "$track_local(105,28,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:610:13+6 + assume {:print "$at(183,21881,21887)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:30+26 + assume {:print "$at(183,21958,21984)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:13+44 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,21941,21985)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + assume {:print "$track_abort(105,28):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + $t8 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:34+10 + assume {:print "$at(183,22048,22058)"} true; +L2: + + // $t12 := collection::creator<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:13+32 + assume {:print "$at(183,22027,22059)"} true; + call $t12 := $1_collection_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,22027,22059)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:49+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,22063,22090)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:46+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,22104,22142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + assume {:print "$track_abort(105,28):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + $t8 := $t16; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:43+18 + assume {:print "$at(183,22197,22215)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:9+13 + assume {:print "$at(183,22163,22176)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,22163,22176)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[starcoin_collection]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:638:13+19 + assume {:print "$at(183,22924,22943)"} true; + assume {:print "$track_local(105,28,6):", $t17} $t17 == $t17; + + // $t18 := get_field.royalty_mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:29+40 + assume {:print "$at(183,23043,23083)"} true; + $t18 := $t17->$royalty_mutator_ref; + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_royalty_MutatorRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 +L6: + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:641:38+18 + assume {:print "$at(183,23123,23141)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:641:13+44 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(183,23098,23142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + assume {:print "$track_abort(105,28):", $t21} $t21 == $t21; + + // $t8 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + $t8 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:41+19 + assume {:print "$at(183,23195,23214)"} true; +L8: + + // $t22 := get_field.royalty_mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:40+40 + assume {:print "$at(183,23194,23234)"} true; + $t22 := $t17->$royalty_mutator_ref; + + // $t23 := opaque begin: option::borrow($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + + // assume Identical($t24, option::spec_is_none($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume ($t24 == $1_option_spec_is_none'$1_royalty_MutatorRef'($t22)); + + // if ($t24) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + if ($t24) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 +L12: + + // assume And(option::spec_is_none($t22), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume ($1_option_spec_is_none'$1_royalty_MutatorRef'($t22) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 +L11: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume $IsValid'$1_royalty_MutatorRef'($t23); + + // assume Eq($t23, option::spec_borrow($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume $IsEqual'$1_royalty_MutatorRef'($t23, $1_option_spec_borrow'$1_royalty_MutatorRef'($t22)); + + // $t23 := opaque end: option::borrow($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + + // royalty::update($t23, $t2) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:9+82 + call $1_royalty_update($t23, $t2); + if ($abort_flag) { + assume {:print "$at(183,23163,23245)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_collection_royalties [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+513 +procedure {:timeLimit 80} $1_starcoin_token_set_collection_royalties$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_royalty_Royalty) returns () +{ + // declare local variables + var $t3: $1_object_Object'#0'; + var $t4: int; + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinCollection; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinCollection; + var $t18: $1_option_Option'$1_royalty_MutatorRef'; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_option_Option'$1_royalty_MutatorRef'; + var $t23: $1_royalty_MutatorRef; + var $t24: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_royalty_Royalty; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$at(183,22739,22740)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume $IsValid'$1_royalty_Royalty'($t2); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$track_local(105,28,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$track_local(105,28,1):", $t1} $t1 == $t1; + + // trace_local[royalty]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:633:5+1 + assume {:print "$track_local(105,28,2):", $t2} $t2 == $t2; + + // trace_local[creator#843]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:77+7 + assume {:print "$at(183,21742,21749)"} true; + assume {:print "$track_local(105,28,5):", $t0} $t0 == $t0; + + // trace_local[collection#842]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:53+10 + assume {:print "$track_local(105,28,3):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:34+34 + assume {:print "$at(183,21816,21850)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,21816,21850)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[collection_address#844]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:13+18 + assume {:print "$track_local(105,28,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:610:13+6 + assume {:print "$at(183,21881,21887)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:30+26 + assume {:print "$at(183,21958,21984)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:13+44 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,21941,21985)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + assume {:print "$track_abort(105,28):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + $t8 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:34+10 + assume {:print "$at(183,22048,22058)"} true; +L2: + + // $t12 := collection::creator<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:13+32 + assume {:print "$at(183,22027,22059)"} true; + call $t12 := $1_collection_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,22027,22059)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:49+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,22063,22090)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:46+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,22104,22142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + assume {:print "$track_abort(105,28):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + $t8 := $t16; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:43+18 + assume {:print "$at(183,22197,22215)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:9+13 + assume {:print "$at(183,22163,22176)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,22163,22176)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[starcoin_collection]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:638:13+19 + assume {:print "$at(183,22924,22943)"} true; + assume {:print "$track_local(105,28,6):", $t17} $t17 == $t17; + + // $t18 := get_field.royalty_mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:29+40 + assume {:print "$at(183,23043,23083)"} true; + $t18 := $t17->$royalty_mutator_ref; + + // $t19 := opaque begin: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + assume $IsValid'bool'($t19); + + // assume Eq($t19, option::spec_is_some($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + assume $IsEqual'bool'($t19, $1_option_spec_is_some'$1_royalty_MutatorRef'($t18)); + + // $t19 := opaque end: option::is_some($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:640:13+57 + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 +L6: + + // $t20 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:641:38+18 + assume {:print "$at(183,23123,23141)"} true; + $t20 := 4; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:641:13+44 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(183,23098,23142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + assume {:print "$at(183,23006,23153)"} true; + assume {:print "$track_abort(105,28):", $t21} $t21 == $t21; + + // $t8 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + $t8 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:639:9+147 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:41+19 + assume {:print "$at(183,23195,23214)"} true; +L8: + + // $t22 := get_field.royalty_mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:40+40 + assume {:print "$at(183,23194,23234)"} true; + $t22 := $t17->$royalty_mutator_ref; + + // $t23 := opaque begin: option::borrow($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + + // assume Identical($t24, option::spec_is_none($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume ($t24 == $1_option_spec_is_none'$1_royalty_MutatorRef'($t22)); + + // if ($t24) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + if ($t24) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 +L12: + + // assume And(option::spec_is_none($t22), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume ($1_option_spec_is_none'$1_royalty_MutatorRef'($t22) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 +L11: + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume {:print "$at(183,23179,23235)"} true; + assume $IsValid'$1_royalty_MutatorRef'($t23); + + // assume Eq($t23, option::spec_borrow($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + assume $IsEqual'$1_royalty_MutatorRef'($t23, $1_option_spec_borrow'$1_royalty_MutatorRef'($t22)); + + // $t23 := opaque end: option::borrow($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:25+56 + + // royalty::update($t23, $t2) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:643:9+82 + call $1_royalty_update($t23, $t2); + if ($abort_flag) { + assume {:print "$at(183,23163,23245)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,28):", $t8} $t8 == $t8; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:644:5+1 + assume {:print "$at(183,23251,23252)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_collection_royalties_call [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+403 +procedure {:timeLimit 80} $1_starcoin_token_set_collection_royalties_call$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: int, _$t3: int, _$t4: int) returns () +{ + // declare local variables + var $t5: $1_royalty_Royalty; + var $t6: $1_royalty_Royalty; + var $t7: int; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: int; + var $t3: int; + var $t4: int; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_royalty_Royalty': $1_royalty_Royalty; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$at(183,23258,23259)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume $IsValid'u64'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume $IsValid'address'($t4); + + // assume forall $rsc: royalty::Royalty: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_royalty_Royalty_$memory, $a_0)}(var $rsc := $ResourceValue($1_royalty_Royalty_$memory, $a_0); + ($IsValid'$1_royalty_Royalty'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$track_local(105,29,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$track_local(105,29,1):", $t1} $t1 == $t1; + + // trace_local[royalty_numerator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$track_local(105,29,2):", $t2} $t2 == $t2; + + // trace_local[royalty_denominator]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$track_local(105,29,3):", $t3} $t3 == $t3; + + // trace_local[payee_address]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:646:5+1 + assume {:print "$track_local(105,29,4):", $t4} $t4 == $t4; + + // $t6 := royalty::create($t2, $t3, $t4) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:653:23+70 + assume {:print "$at(183,23520,23590)"} true; + call $t6 := $1_royalty_create($t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(183,23520,23590)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,29):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[royalty]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:653:13+7 + assume {:print "$track_local(105,29,5):", $t6} $t6 == $t6; + + // starcoin_token::set_collection_royalties<#0>($t0, $t1, $t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:654:9+54 + assume {:print "$at(183,23600,23654)"} true; + call $1_starcoin_token_set_collection_royalties'#0'($t0, $t1, $t6); + if ($abort_flag) { + assume {:print "$at(183,23600,23654)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(105,29):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:655:5+1 + assume {:print "$at(183,23660,23661)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:655:5+1 + assume {:print "$at(183,23660,23661)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:655:5+1 +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:655:5+1 + assume {:print "$at(183,23660,23661)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun starcoin_token::set_collection_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+465 +procedure {:timeLimit 80} $1_starcoin_token_set_collection_uri$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $1_object_Object'#0'; + var $t4: int; + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinCollection; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinCollection; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $1_option_Option'$1_collection_MutatorRef'; + var $t22: $1_collection_MutatorRef; + var $t23: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinCollection': $1_starcoin_token_StarcoinCollection; + var $temp_0'$1_string_String': $1_string_String; + 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume {:print "$at(183,23667,23668)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume {:print "$track_local(105,30,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume {:print "$track_local(105,30,1):", $t1} $t1 == $t1; + + // trace_local[uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:657:5+1 + assume {:print "$track_local(105,30,2):", $t2} $t2 == $t2; + + // trace_local[creator#846]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:77+7 + assume {:print "$at(183,21742,21749)"} true; + assume {:print "$track_local(105,30,5):", $t0} $t0 == $t0; + + // trace_local[collection#845]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:607:53+10 + assume {:print "$track_local(105,30,3):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:34+34 + assume {:print "$at(183,21816,21850)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,21816,21850)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[collection_address#847]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:608:13+18 + assume {:print "$track_local(105,30,4):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:610:13+6 + assume {:print "$at(183,21881,21887)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 +L0: + + // $t10 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:30+26 + assume {:print "$at(183,21958,21984)"} true; + $t10 := 1; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:611:13+44 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,21941,21985)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + assume {:print "$at(183,21860,21996)"} true; + assume {:print "$track_abort(105,30):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + $t8 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:609:9+136 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:34+10 + assume {:print "$at(183,22048,22058)"} true; +L2: + + // $t12 := collection::creator<#0>($t1) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:13+32 + assume {:print "$at(183,22027,22059)"} true; + call $t12 := $1_collection_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,22027,22059)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:49+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,22063,22090)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:614:46+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:38+12 + assume {:print "$at(183,22129,22141)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:615:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,22104,22142)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + assume {:print "$at(183,22006,22153)"} true; + assume {:print "$track_abort(105,30):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + $t8 := $t16; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:613:9+147 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:43+18 + assume {:print "$at(183,22197,22215)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:617:9+13 + assume {:print "$at(183,22163,22176)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinCollection_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,22163,22176)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // trace_local[starcoin_collection]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:662:13+19 + assume {:print "$at(183,23838,23857)"} true; + assume {:print "$track_local(105,30,6):", $t17} $t17 == $t17; + + // $t18 := get_field.mutable_uri($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:664:13+31 + assume {:print "$at(183,23941,23972)"} true; + $t18 := $t17->$mutable_uri; + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 + assume {:print "$at(183,23920,24041)"} true; + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 + assume {:print "$at(183,23920,24041)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 +L6: + + // $t19 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:665:38+18 + assume {:print "$at(183,24011,24029)"} true; + $t19 := 4; + assume $IsValid'u64'($t19); + + // $t20 := error::permission_denied($t19) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:665:13+44 + call $t20 := $1_error_permission_denied($t19); + if ($abort_flag) { + assume {:print "$at(183,23986,24030)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 + assume {:print "$at(183,23920,24041)"} true; + assume {:print "$track_abort(105,30):", $t20} $t20 == $t20; + + // $t8 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 + $t8 := $t20; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:663:9+121 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:45+19 + assume {:print "$at(183,24087,24106)"} true; +L8: + + // $t21 := get_field.mutator_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:44+32 + assume {:print "$at(183,24086,24118)"} true; + $t21 := $t17->$mutator_ref; + + // $t22 := opaque begin: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + + // assume Identical($t23, option::spec_is_none($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + assume ($t23 == $1_option_spec_is_none'$1_collection_MutatorRef'($t21)); + + // if ($t23) goto L12 else goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + if ($t23) { goto L12; } else { goto L11; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 +L12: + + // assume And(option::spec_is_none($t21), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + assume {:print "$at(183,24071,24119)"} true; + assume ($1_option_spec_is_none'$1_collection_MutatorRef'($t21) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + assume {:print "$at(183,24071,24119)"} true; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + goto L10; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 +L11: + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + assume {:print "$at(183,24071,24119)"} true; + assume $IsValid'$1_collection_MutatorRef'($t22); + + // assume Eq($t22, option::spec_borrow($t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + assume $IsEqual'$1_collection_MutatorRef'($t22, $1_option_spec_borrow'$1_collection_MutatorRef'($t21)); + + // $t22 := opaque end: option::borrow($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:29+48 + + // collection::set_uri($t22, $t2) on_abort goto L10 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:667:9+74 + call $1_collection_set_uri($t22, $t2); + if ($abort_flag) { + assume {:print "$at(183,24051,24125)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,30):", $t8} $t8 == $t8; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:668:5+1 + assume {:print "$at(183,24131,24132)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:668:5+1 + assume {:print "$at(183,24131,24132)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:668:5+1 +L10: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:668:5+1 + assume {:print "$at(183,24131,24132)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::unfreeze_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+539 +procedure {:timeLimit 80} $1_starcoin_token_unfreeze_transfer$verify(_$t0: $signer, _$t1: $1_object_Object'#0') returns () +{ + // declare local variables + var $t2: bool; + var $t3: $signer; + var $t4: $1_starcoin_token_StarcoinToken; + var $t5: $1_object_Object'#0'; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: $1_starcoin_token_StarcoinToken; + var $t18: $1_object_Object'$1_collection_Collection'; + var $t19: bool; + var $t20: $1_option_Option'$1_object_TransferRef'; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_option_Option'$1_object_TransferRef'; + var $t25: $1_object_TransferRef; + var $t26: bool; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume {:print "$at(183,14785,14786)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume {:print "$track_local(105,34,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:407:5+1 + assume {:print "$track_local(105,34,1):", $t1} $t1 == $t1; + + // trace_local[creator#858]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,34,3):", $t0} $t0 == $t0; + + // trace_local[token#857]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,34,5):", $t1} $t1 == $t1; + + // $t7 := object::object_address<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t7 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[token_address#859]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,34,6):", $t7} $t7 == $t7; + + // $t9 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t9 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,34):", $t11} $t11 == $t11; + + // $t8 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t8 := $t11; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L13; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t12 := object_token::creator<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t12 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // $t13 := signer::address_of($t0) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t14 := $IsEqual'address'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t15 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t15 := 3; + assume $IsValid'u64'($t15); + + // $t16 := error::permission_denied($t15) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t16 := $1_error_permission_denied($t15); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,34):", $t16} $t16 == $t16; + + // $t8 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t8 := $t16; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t17 := get_global($t7) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t7); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // trace_local[starcoin_token]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:411:13+14 + assume {:print "$at(183,14943,14957)"} true; + assume {:print "$track_local(105,34,4):", $t17} $t17 == $t17; + + // $t18 := object_token::collection_object<#0>($t1) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:45+38 + assume {:print "$at(183,15057,15095)"} true; + call $t18 := $1_object_token_collection_object'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,15057,15095)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // $t19 := starcoin_token::are_collection_tokens_freezable($t18) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+71 + call $t19 := $1_starcoin_token_are_collection_tokens_freezable'$1_collection_Collection'($t18); + if ($abort_flag) { + assume {:print "$at(183,15025,15096)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:37+14 + assume {:print "$at(183,15133,15147)"} true; +L7: + + // $t20 := get_field.transfer_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:36+28 + assume {:print "$at(183,15132,15160)"} true; + $t20 := $t17->$transfer_ref; + + // $t2 := opaque begin: option::is_some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:20+45 + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:20+45 + assume $IsValid'bool'($t2); + + // assume Eq($t2, option::spec_is_some($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:20+45 + assume $IsEqual'bool'($t2, $1_option_spec_is_some'$1_object_TransferRef'($t20)); + + // $t2 := opaque end: option::is_some($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:414:20+45 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 + assume {:print "$at(183,15025,15161)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 +L6: + + // $t21 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 + assume {:print "$at(183,15025,15161)"} true; + $t21 := false; + assume $IsValid'bool'($t21); + + // $t2 := $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 + $t2 := $t21; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:413:13+136 +L8: + + // if ($t2) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 + assume {:print "$at(183,15004,15230)"} true; + if ($t2) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 + assume {:print "$at(183,15004,15230)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 +L9: + + // $t22 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:415:38+18 + assume {:print "$at(183,15200,15218)"} true; + $t22 := 4; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:415:13+44 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(183,15175,15219)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 + assume {:print "$at(183,15004,15230)"} true; + assume {:print "$track_abort(105,34):", $t23} $t23 == $t23; + + // $t8 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 + $t8 := $t23; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:412:9+226 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:57+14 + assume {:print "$at(183,15288,15302)"} true; +L11: + + // $t24 := get_field.transfer_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:56+28 + assume {:print "$at(183,15287,15315)"} true; + $t24 := $t17->$transfer_ref; + + // $t25 := opaque begin: option::borrow($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + + // assume Identical($t26, option::spec_is_none($t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + assume ($t26 == $1_option_spec_is_none'$1_object_TransferRef'($t24)); + + // if ($t26) goto L15 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + if ($t26) { goto L15; } else { goto L14; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 +L15: + + // assume And(option::spec_is_none($t24), Eq(262145, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + assume {:print "$at(183,15272,15316)"} true; + assume ($1_option_spec_is_none'$1_object_TransferRef'($t24) && $IsEqual'num'(262145, $t8)); + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + assume {:print "$at(183,15272,15316)"} true; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + goto L13; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 +L14: + + // assume WellFormed($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + assume {:print "$at(183,15272,15316)"} true; + assume $IsValid'$1_object_TransferRef'($t25); + + // assume Eq($t25, option::spec_borrow($t24)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + assume $IsEqual'$1_object_TransferRef'($t25, $1_option_spec_borrow'$1_object_TransferRef'($t24)); + + // $t25 := opaque end: option::borrow($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:41+44 + + // object::enable_ungated_transfer($t25) on_abort goto L13 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:417:9+77 + call $1_object_enable_ungated_transfer($t25); + if ($abort_flag) { + assume {:print "$at(183,15240,15317)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(105,34):", $t8} $t8 == $t8; + goto L13; + } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:418:5+1 + assume {:print "$at(183,15323,15324)"} true; +L12: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:418:5+1 + assume {:print "$at(183,15323,15324)"} true; + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:418:5+1 +L13: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:418:5+1 + assume {:print "$at(183,15323,15324)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun starcoin_token::update_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+514 +procedure {:timeLimit 80} $1_starcoin_token_update_property$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String, _$t3: $1_string_String, _$t4: Vec (int)) returns () +{ + // declare local variables + var $t5: $signer; + var $t6: $1_starcoin_token_StarcoinToken; + var $t7: $1_object_Object'#0'; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_starcoin_token_StarcoinToken; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_object_property_map_MutatorRef; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: Vec (int); + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$at(183,18151,18152)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume $IsValid'vec'u8''($t4); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$track_local(105,35,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$track_local(105,35,1):", $t1} $t1 == $t1; + + // trace_local[key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$track_local(105,35,2):", $t2} $t2 == $t2; + + // trace_local[type]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$track_local(105,35,3):", $t3} $t3 == $t3; + + // trace_local[value]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:504:5+1 + assume {:print "$track_local(105,35,4):", $t4} $t4 == $t4; + + // trace_local[creator#861]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,35,5):", $t0} $t0 == $t0; + + // trace_local[token#860]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,35,7):", $t1} $t1 == $t1; + + // $t9 := object::object_address<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t9 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[token_address#862]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,35,8):", $t9} $t9 == $t9; + + // $t11 := exists($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t11 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t12 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t12 := 2; + assume $IsValid'u64'($t12); + + // $t13 := error::not_found($t12) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t13 := $1_error_not_found($t12); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,35):", $t13} $t13 == $t13; + + // $t10 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t10 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t14 := object_token::creator<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t14 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // $t15 := signer::address_of($t0) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // $t16 := ==($t14, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t16 := $IsEqual'address'($t14, $t15); + + // if ($t16) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t16) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t17 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t17 := 3; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,35):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t10 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t19 := get_global($t9) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t19 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t9); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // trace_local[starcoin_token]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:511:13+14 + assume {:print "$at(183,18378,18392)"} true; + assume {:print "$track_local(105,35,6):", $t19} $t19 == $t19; + + // $t20 := starcoin_token::are_properties_mutable<#0>($t1) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:513:13+29 + assume {:print "$at(183,18460,18489)"} true; + call $t20 := $1_starcoin_token_are_properties_mutable'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,18460,18489)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // if ($t20) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 + assume {:print "$at(183,18439,18563)"} true; + if ($t20) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 + assume {:print "$at(183,18439,18563)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 +L6: + + // $t21 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:514:38+23 + assume {:print "$at(183,18528,18551)"} true; + $t21 := 6; + assume $IsValid'u64'($t21); + + // $t22 := error::permission_denied($t21) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:514:13+49 + call $t22 := $1_error_permission_denied($t21); + if ($abort_flag) { + assume {:print "$at(183,18503,18552)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 + assume {:print "$at(183,18439,18563)"} true; + assume {:print "$track_abort(105,35):", $t22} $t22 == $t22; + + // $t10 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 + $t10 := $t22; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:512:9+124 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:517:38+14 + assume {:print "$at(183,18603,18617)"} true; +L8: + + // $t23 := get_field.property_mutator_ref($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:517:37+36 + assume {:print "$at(183,18602,18638)"} true; + $t23 := $t19->$property_mutator_ref; + + // object_property_map::update($t23, $t2, $t3, $t4) on_abort goto L10 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:517:9+84 + call $1_object_property_map_update($t23, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(183,18574,18658)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(105,35):", $t10} $t10 == $t10; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:518:5+1 + assume {:print "$at(183,18664,18665)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:518:5+1 + assume {:print "$at(183,18664,18665)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:518:5+1 +L10: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:518:5+1 + assume {:print "$at(183,18664,18665)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun starcoin_token::update_typed_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+498 +procedure {:timeLimit 80} $1_starcoin_token_update_typed_property$verify(_$t0: $signer, _$t1: $1_object_Object'#0', _$t2: $1_string_String, _$t3: #1) returns () +{ + // declare local variables + var $t4: $signer; + var $t5: $1_starcoin_token_StarcoinToken; + var $t6: $1_object_Object'#0'; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: $1_starcoin_token_StarcoinToken; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: $1_object_property_map_MutatorRef; + var $t0: $signer; + var $t1: $1_object_Object'#0'; + var $t2: $1_string_String; + var $t3: #1; + var $temp_0'#1': #1; + var $temp_0'$1_object_Object'#0'': $1_object_Object'#0'; + var $temp_0'$1_starcoin_token_StarcoinToken': $1_starcoin_token_StarcoinToken; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume {:print "$at(183,18671,18672)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume $IsValid'$1_object_Object'#0''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume $IsValid'#1'($t3); + + // assume forall $rsc: collection::Collection: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_collection_Collection_$memory, $a_0)}(var $rsc := $ResourceValue($1_collection_Collection_$memory, $a_0); + ($IsValid'$1_collection_Collection'($rsc)))); + + // assume forall $rsc: object_property_map::PropertyMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_property_map_PropertyMap_$memory, $a_0); + ($IsValid'$1_object_property_map_PropertyMap'($rsc)))); + + // assume forall $rsc: object_token::Token: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_token_Token_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_token_Token_$memory, $a_0); + ($IsValid'$1_object_token_Token'($rsc)))); + + // assume forall $rsc: starcoin_token::StarcoinCollection: ResourceDomain(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.mutator_ref($rsc))), 1), Le(Len(select option::Option.vec(select starcoin_token::StarcoinCollection.royalty_mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinCollection_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinCollection'($rsc) && ((LenVec($rsc->$mutator_ref->$vec) <= 1) && (LenVec($rsc->$royalty_mutator_ref->$vec) <= 1)))))); + + // assume forall $rsc: starcoin_token::StarcoinToken: ResourceDomain(): And(WellFormed($rsc), And(And(And(Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc))), 1), forall $elem: object_token::BurnRef: select option::Option.vec(select starcoin_token::StarcoinToken.burn_ref($rsc)): And(Le(Len(select option::Option.vec(select object_token::BurnRef.inner($elem))), 1), Le(Len
(select option::Option.vec(select object_token::BurnRef.self($elem))), 1))), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.transfer_ref($rsc))), 1)), Le(Len(select option::Option.vec(select starcoin_token::StarcoinToken.mutator_ref($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0)}(var $rsc := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $a_0); + (($IsValid'$1_starcoin_token_StarcoinToken'($rsc) && ((((LenVec($rsc->$burn_ref->$vec) <= 1) && (var $range_1 := $rsc->$burn_ref->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + (((LenVec($elem->$inner->$vec) <= 1) && (LenVec($elem->$self->$vec) <= 1))))))) && (LenVec($rsc->$transfer_ref->$vec) <= 1)) && (LenVec($rsc->$mutator_ref->$vec) <= 1)))))); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume {:print "$track_local(105,36,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume {:print "$track_local(105,36,1):", $t1} $t1 == $t1; + + // trace_local[key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume {:print "$track_local(105,36,2):", $t2} $t2 == $t2; + + // trace_local[value]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:520:5+1 + assume {:print "$track_local(105,36,3):", $t3} $t3 == $t3; + + // trace_local[creator#864]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:61+7 + assume {:print "$at(183,13108,13115)"} true; + assume {:print "$track_local(105,36,4):", $t0} $t0 == $t0; + + // trace_local[token#863]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:365:42+5 + assume {:print "$track_local(105,36,6):", $t1} $t1 == $t1; + + // $t8 := object::object_address<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:29+29 + assume {:print "$at(183,13172,13201)"} true; + call $t8 := $1_object_object_address'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13172,13201)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[token_address#865]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:366:13+13 + assume {:print "$track_local(105,36,7):", $t8} $t8 == $t8; + + // $t10 := exists($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:368:13+6 + assume {:print "$at(183,13232,13238)"} true; + $t10 := $ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 +L0: + + // $t11 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:30+21 + assume {:print "$at(183,13299,13320)"} true; + $t11 := 2; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:369:13+39 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(183,13282,13321)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + assume {:print "$at(183,13211,13332)"} true; + assume {:print "$track_abort(105,36):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + $t9 := $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:367:9+121 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:36+5 + assume {:print "$at(183,13387,13392)"} true; +L2: + + // $t13 := object_token::creator<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:13+29 + assume {:print "$at(183,13364,13393)"} true; + call $t13 := $1_object_token_creator'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,13364,13393)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // $t14 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:46+27 + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(183,13397,13424)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // $t15 := ==($t13, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:373:43+2 + $t15 := $IsEqual'address'($t13, $t14); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; +L3: + + // $t16 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:38+12 + assume {:print "$at(183,13463,13475)"} true; + $t16 := 3; + assume $IsValid'u64'($t16); + + // $t17 := error::permission_denied($t16) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:374:13+38 + call $t17 := $1_error_permission_denied($t16); + if ($abort_flag) { + assume {:print "$at(183,13438,13476)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + assume {:print "$at(183,13343,13487)"} true; + assume {:print "$track_abort(105,36):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + $t9 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:372:9+144 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:38+13 + assume {:print "$at(183,13526,13539)"} true; +L5: + + // $t18 := get_global($t8) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:376:9+13 + assume {:print "$at(183,13497,13510)"} true; + if (!$ResourceExists($1_starcoin_token_StarcoinToken_$memory, $t8)) { + call $ExecFailureAbort(); + } else { + $t18 := $ResourceValue($1_starcoin_token_StarcoinToken_$memory, $t8); + } + if ($abort_flag) { + assume {:print "$at(183,13497,13510)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[starcoin_token]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:526:13+14 + assume {:print "$at(183,18882,18896)"} true; + assume {:print "$track_local(105,36,5):", $t18} $t18 == $t18; + + // $t19 := starcoin_token::are_properties_mutable<#0>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:528:13+29 + assume {:print "$at(183,18964,18993)"} true; + call $t19 := $1_starcoin_token_are_properties_mutable'#0'($t1); + if ($abort_flag) { + assume {:print "$at(183,18964,18993)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 + assume {:print "$at(183,18943,19067)"} true; + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 + assume {:print "$at(183,18943,19067)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 +L6: + + // $t20 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:529:38+23 + assume {:print "$at(183,19032,19055)"} true; + $t20 := 6; + assume $IsValid'u64'($t20); + + // $t21 := error::permission_denied($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:529:13+49 + call $t21 := $1_error_permission_denied($t20); + if ($abort_flag) { + assume {:print "$at(183,19007,19056)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 + assume {:print "$at(183,18943,19067)"} true; + assume {:print "$track_abort(105,36):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:527:9+124 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:532:44+14 + assume {:print "$at(183,19113,19127)"} true; +L8: + + // $t22 := get_field.property_mutator_ref($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:532:43+36 + assume {:print "$at(183,19112,19148)"} true; + $t22 := $t18->$property_mutator_ref; + + // object_property_map::update_typed<#1>($t22, $t2, $t3) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:532:9+84 + call $1_object_property_map_update_typed'#1'($t22, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(183,19078,19162)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(105,36):", $t9} $t9 == $t9; + goto L10; + } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:533:5+1 + assume {:print "$at(183,19168,19169)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:533:5+1 + assume {:print "$at(183,19168,19169)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:533:5+1 +L10: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token-objects/sources/starcoin_token.move:533:5+1 + assume {:print "$at(183,19168,19169)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// struct stc_transaction_fee::TransactionFee at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:16:5+92 +datatype $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC' { + $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'($fee: $1_coin_Coin'$1_starcoin_coin_STC') +} +function {:inline} $Update'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''_fee(s: $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC', x: $1_coin_Coin'$1_starcoin_coin_STC'): $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC' { + $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'(x) +} +function $IsValid'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(s: $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'): bool { + $IsValid'$1_coin_Coin'$1_starcoin_coin_STC''(s->$fee) +} +function {:inline} $IsEqual'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''(s1: $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC', s2: $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'): bool { + s1 == s2 +} +var $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory: $Memory $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'; + +// struct stc_transaction_fee::TransactionFee<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:16:5+92 +datatype $1_stc_transaction_fee_TransactionFee'#0' { + $1_stc_transaction_fee_TransactionFee'#0'($fee: $1_coin_Coin'#0') +} +function {:inline} $Update'$1_stc_transaction_fee_TransactionFee'#0''_fee(s: $1_stc_transaction_fee_TransactionFee'#0', x: $1_coin_Coin'#0'): $1_stc_transaction_fee_TransactionFee'#0' { + $1_stc_transaction_fee_TransactionFee'#0'(x) +} +function $IsValid'$1_stc_transaction_fee_TransactionFee'#0''(s: $1_stc_transaction_fee_TransactionFee'#0'): bool { + $IsValid'$1_coin_Coin'#0''(s->$fee) +} +function {:inline} $IsEqual'$1_stc_transaction_fee_TransactionFee'#0''(s1: $1_stc_transaction_fee_TransactionFee'#0', s2: $1_stc_transaction_fee_TransactionFee'#0'): bool { + s1 == s2 +} +var $1_stc_transaction_fee_TransactionFee'#0'_$memory: $Memory $1_stc_transaction_fee_TransactionFee'#0'; + +// fun stc_transaction_fee::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+236 +procedure {:timeLimit 80} $1_stc_transaction_fee_initialize$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory#777: $Memory $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume {:print "$at(93,835,836)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: stc_transaction_fee::TransactionFee: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''($rsc)))); + + // @777 := save_mem(stc_transaction_fee::TransactionFee) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory#777 := $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:22:5+1 + assume {:print "$track_local(106,2,0):", $t0} $t0 == $t0; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + assume {:print "$at(93,925,977)"} true; + + // assume Identical($t1, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + assume ($t1 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t1) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + if ($t1) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + assume {:print "$at(93,925,977)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t2)); + + // trace_abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + assume {:print "$at(93,925,977)"} true; + assume {:print "$track_abort(106,2):", $t2} $t2 == $t2; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:24:9+52 + assume {:print "$at(93,925,977)"} true; + + // stc_transaction_fee::add_txn_fee_token($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:27:9+31 + assume {:print "$at(93,1033,1064)"} true; + call $1_stc_transaction_fee_add_txn_fee_token'$1_starcoin_coin_STC'($t0); + if ($abort_flag) { + assume {:print "$at(93,1033,1064)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,2):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:28:5+1 + assume {:print "$at(93,1070,1071)"} true; +L1: + + // assert Not(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:34:9+84 + assume {:print "$at(93,1176,1260)"} true; + assert {:msg "assert_failed(93,1176,1260): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()); + + // assert Not(exists[@777]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:35:9+67 + assume {:print "$at(93,1269,1336)"} true; + assert {:msg "assert_failed(93,1269,1336): function does not abort under this condition"} + !$ResourceExists($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory#777, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:35:9+67 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:28:5+1 + assume {:print "$at(93,1070,1071)"} true; +L2: + + // assert Or(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]()), exists[@777]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:30:5+265 + assume {:print "$at(93,1077,1342)"} true; + assert {:msg "assert_failed(93,1077,1342): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()) || $ResourceExists($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory#777, $1_signer_$address_of($t0))); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:30:5+265 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_transaction_fee::add_txn_fee_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+195 +procedure {:inline 1} $1_stc_transaction_fee_add_txn_fee_token'$1_starcoin_coin_STC'(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t2: int; + var $t3: $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume {:print "$at(93,1434,1435)"} true; + assume {:print "$track_local(106,0,0):", $t0} $t0 == $t0; + + // $t1 := coin::zero<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:43:22+12 + assume {:print "$at(93,1586,1598)"} true; + call $t1 := $1_coin_zero'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(93,1586,1598)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack stc_transaction_fee::TransactionFee<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:42:13+76 + assume {:print "$at(93,1537,1613)"} true; + $t3 := $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'($t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:40:9+7 + assume {:print "$at(93,1495,1502)"} true; + if ($ResourceExists($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(93,1495,1502)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,0):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 + assume {:print "$at(93,1628,1629)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 + assume {:print "$at(93,1628,1629)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 +L2: + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 + assume {:print "$at(93,1628,1629)"} true; + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_transaction_fee::add_txn_fee_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+195 +procedure {:timeLimit 80} $1_stc_transaction_fee_add_txn_fee_token$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: $1_coin_Coin'#0'; + var $t2: int; + var $t3: $1_stc_transaction_fee_TransactionFee'#0'; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_stc_transaction_fee_TransactionFee'#0'_$memory#769: $Memory $1_stc_transaction_fee_TransactionFee'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume {:print "$at(93,1434,1435)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: stc_transaction_fee::TransactionFee<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory, $a_0); + ($IsValid'$1_stc_transaction_fee_TransactionFee'#0''($rsc)))); + + // @769 := save_mem(stc_transaction_fee::TransactionFee<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + $1_stc_transaction_fee_TransactionFee'#0'_$memory#769 := $1_stc_transaction_fee_TransactionFee'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:39:5+1 + assume {:print "$track_local(106,0,0):", $t0} $t0 == $t0; + + // $t1 := coin::zero<#0>() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:43:22+12 + assume {:print "$at(93,1586,1598)"} true; + call $t1 := $1_coin_zero'#0'(); + if ($abort_flag) { + assume {:print "$at(93,1586,1598)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := pack stc_transaction_fee::TransactionFee<#0>($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:42:13+76 + assume {:print "$at(93,1537,1613)"} true; + $t3 := $1_stc_transaction_fee_TransactionFee'#0'($t1); + + // move_to>($t3, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:40:9+7 + assume {:print "$at(93,1495,1502)"} true; + if ($ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_stc_transaction_fee_TransactionFee'#0'_$memory := $ResourceUpdate($1_stc_transaction_fee_TransactionFee'#0'_$memory, $t0->$addr, $t3); + } + if ($abort_flag) { + assume {:print "$at(93,1495,1502)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,0):", $t2} $t2 == $t2; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 + assume {:print "$at(93,1628,1629)"} true; +L1: + + // assert Not(exists[@769]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:50:9+73 + assume {:print "$at(93,1693,1766)"} true; + assert {:msg "assert_failed(93,1693,1766): function does not abort under this condition"} + !$ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory#769, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:50:9+73 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:46:5+1 + assume {:print "$at(93,1628,1629)"} true; +L2: + + // assert exists[@769]>(signer::$address_of[]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:48:5+137 + assume {:print "$at(93,1635,1772)"} true; + assert {:msg "assert_failed(93,1635,1772): abort not covered by any of the `aborts_if` clauses"} + $ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory#769, $1_signer_$address_of($t0)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:48:5+137 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_transaction_fee::distribute_transaction_fees [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:73:5+921 +procedure {:inline 1} $1_stc_transaction_fee_distribute_transaction_fees'$1_starcoin_coin_STC'(_$t0: $signer) returns ($ret0: $1_coin_Coin'$1_starcoin_coin_STC') +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t5: int; + var $t6: $Mutation ($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'); + var $t7: int; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: $Mutation ($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'); + var $t14: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: $Mutation ($1_coin_Coin'$1_starcoin_coin_STC'); + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: $signer; + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'': $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:73:5+1 + assume {:print "$at(93,2618,2619)"} true; + assume {:print "$track_local(106,1,0):", $t0} $t0 == $t0; + + // $t8 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 100, 105, 115, 116, 114, 105, 98, 117, 116, 101, 95, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 95, 102, 101, 101, 115, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:76:41+51 + assume {:print "$at(93,2790,2841)"} true; + $t8 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 100)), MakeVec4(105, 115, 116, 114)), MakeVec4(105, 98, 117, 116)), MakeVec4(101, 95, 116, 114)), MakeVec4(97, 110, 115, 97)), MakeVec4(99, 116, 105, 111)), MakeVec4(110, 95, 102, 101)), MakeVec4(101, 115, 32, 124)), MakeVec4(32, 69, 110, 116)), MakeVec4(101, 114, 101, 100)); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:76:23+70 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(93,2772,2842)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // debug::print($t9) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:76:9+85 + call $1_debug_print'$1_string_String'($t9); + if ($abort_flag) { + assume {:print "$at(93,2758,2843)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:78:27+42 + assume {:print "$at(93,2872,2914)"} true; + call $t11 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(93,2872,2914)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[fee_address]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:78:13+11 + assume {:print "$track_local(106,1,5):", $t11} $t11 == $t11; + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + assume {:print "$at(93,2924,2976)"} true; + + // assume Identical($t12, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + assume ($t12 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t12) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + if ($t12) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + assume {:print "$at(93,2924,2976)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t10)); + + // trace_abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + assume {:print "$at(93,2924,2976)"} true; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:79:9+52 + assume {:print "$at(93,2924,2976)"} true; + + // $t13 := borrow_global>($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:82:24+17 + assume {:print "$at(93,3026,3043)"} true; + if (!$ResourceExists($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(93,3026,3043)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[txn_fees]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:82:13+8 + $temp_0'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'' := $Dereference($t13); + assume {:print "$track_local(106,1,6):", $temp_0'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''} $temp_0'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'' == $temp_0'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''; + + // $t14 := get_field>.fee($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:83:44+13 + assume {:print "$at(93,3128,3141)"} true; + $t14 := $Dereference($t13)->$fee; + + // $t15 := coin::value<#0>($t14) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:83:21+37 + call $t15 := $1_coin_value'$1_starcoin_coin_STC'($t14); + if ($abort_flag) { + assume {:print "$at(93,3105,3142)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[value]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:83:13+5 + assume {:print "$track_local(106,1,7):", $t15} $t15 == $t15; + + // $t16 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:21+1 + assume {:print "$at(93,3165,3166)"} true; + $t16 := 0; + assume $IsValid'u64'($t16); + + // $t17 := >($t15, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:19+1 + call $t17 := $Gt($t15, $t16); + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:9+380 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:86:45+61 + assume {:print "$at(93,3214,3275)"} true; +L1: + + // $t18 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 100, 105, 115, 116, 114, 105, 98, 117, 116, 101, 95, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 95, 102, 101, 101, 115, 32, 124, 32, 69, 120, 105, 116, 32, 119, 105, 116, 104, 32, 118, 97, 108, 117, 101, 58, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:86:45+61 + assume {:print "$at(93,3214,3275)"} true; + $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 100)), MakeVec4(105, 115, 116, 114)), MakeVec4(105, 98, 117, 116)), MakeVec4(101, 95, 116, 114)), MakeVec4(97, 110, 115, 97)), MakeVec4(99, 116, 105, 111)), MakeVec4(110, 95, 102, 101)), MakeVec4(101, 115, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 32, 119, 105)), MakeVec4(116, 104, 32, 118)), MakeVec4(97, 108, 117, 101)), MakeVec2(58, 32)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:86:27+80 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(93,3196,3276)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // debug::print($t19) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:86:13+95 + call $1_debug_print'$1_string_String'($t19); + if ($abort_flag) { + assume {:print "$at(93,3182,3277)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // debug::print($t15) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:87:13+20 + assume {:print "$at(93,3291,3311)"} true; + call $1_debug_print'u64'($t15); + if ($abort_flag) { + assume {:print "$at(93,3291,3311)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // $t20 := borrow_field>.fee($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:88:27+17 + assume {:print "$at(93,3339,3356)"} true; + $t20 := $ChildMutation($t13, 0, $Dereference($t13)->$fee); + + // $t4 := coin::extract<#0>($t20, $t15) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:88:13+39 + call $t4,$t20 := $1_coin_extract'$1_starcoin_coin_STC'($t20, $t15); + if ($abort_flag) { + assume {:print "$at(93,3325,3364)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // write_back[Reference($t13).fee (coin::Coin<#0>)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:88:13+39 + $t13 := $UpdateMutation($t13, $Update'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''_fee($Dereference($t13), $Dereference($t20))); + + // write_back[stc_transaction_fee::TransactionFee<#0>@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:88:13+39 + $1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory := $ResourceUpdate($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:9+380 + assume {:print "$at(93,3153,3533)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:90:27+77 + assume {:print "$at(93,3408,3485)"} true; +L0: + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:90:27+77 + assume {:print "$at(93,3408,3485)"} true; + + // $t21 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 100, 105, 115, 116, 114, 105, 98, 117, 116, 101, 95, 116, 114, 97, 110, 115, 97, 99, 116, 105, 111, 110, 95, 102, 101, 101, 115, 32, 124, 32, 69, 120, 105, 116, 32, 119, 105, 116, 104, 32, 122, 101, 114, 111] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:90:45+58 + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 100)), MakeVec4(105, 115, 116, 114)), MakeVec4(105, 98, 117, 116)), MakeVec4(101, 95, 116, 114)), MakeVec4(97, 110, 115, 97)), MakeVec4(99, 116, 105, 111)), MakeVec4(110, 95, 102, 101)), MakeVec4(101, 115, 32, 124)), MakeVec4(32, 69, 120, 105)), MakeVec4(116, 32, 119, 105)), MakeVec4(116, 104, 32, 122)), MakeVec3(101, 114, 111)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:90:27+77 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(93,3408,3485)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // debug::print($t22) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:90:13+92 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(93,3394,3486)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // $t4 := coin::zero<#0>() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:91:13+23 + assume {:print "$at(93,3500,3523)"} true; + call $t4 := $1_coin_zero'$1_starcoin_coin_STC'(); + if ($abort_flag) { + assume {:print "$at(93,3500,3523)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(106,1):", $t10} $t10 == $t10; + goto L4; + } + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:9+380 + assume {:print "$at(93,3153,3533)"} true; +L2: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:85:9+380 + assume {:print "$at(93,3153,3533)"} true; + assume {:print "$track_return(106,1,0):", $t4} $t4 == $t4; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:93:5+1 + assume {:print "$at(93,3538,3539)"} true; +L3: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:93:5+1 + assume {:print "$at(93,3538,3539)"} true; + $ret0 := $t4; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:93:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:93:5+1 + assume {:print "$at(93,3538,3539)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun stc_transaction_fee::pay_fee [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+272 +procedure {:timeLimit 80} $1_stc_transaction_fee_pay_fee$verify(_$t0: $1_coin_Coin'#0') returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $Mutation ($1_stc_transaction_fee_TransactionFee'#0'); + var $t4: $Mutation ($1_coin_Coin'#0'); + var $t0: $1_coin_Coin'#0'; + var $temp_0'$1_coin_Coin'#0'': $1_coin_Coin'#0'; + var $1_stc_transaction_fee_TransactionFee'#0'_$memory#788: $Memory $1_stc_transaction_fee_TransactionFee'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume {:print "$at(93,1835,1836)"} true; + assume $IsValid'$1_coin_Coin'#0''($t0); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // assume forall $rsc: stc_transaction_fee::TransactionFee<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory, $a_0); + ($IsValid'$1_stc_transaction_fee_TransactionFee'#0''($rsc)))); + + // @788 := save_mem(stc_transaction_fee::TransactionFee<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + $1_stc_transaction_fee_TransactionFee'#0'_$memory#788 := $1_stc_transaction_fee_TransactionFee'#0'_$memory; + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:54:5+1 + assume {:print "$track_local(106,3,0):", $t0} $t0 == $t0; + + // $t1 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:56:13+42 + assume {:print "$at(93,2002,2044)"} true; + call $t1 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(93,2002,2044)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := borrow_global>($t1) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:55:24+17 + assume {:print "$at(93,1944,1961)"} true; + if (!$ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t3 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(93,1944,1961)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,3):", $t2} $t2 == $t2; + goto L2; + } + + // $t4 := borrow_field>.fee($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:58:21+17 + assume {:print "$at(93,2076,2093)"} true; + $t4 := $ChildMutation($t3, 0, $Dereference($t3)->$fee); + + // coin::merge<#0>($t4, $t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:58:9+37 + call $t4 := $1_coin_merge'#0'($t4, $t0); + if ($abort_flag) { + assume {:print "$at(93,2064,2101)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(106,3):", $t2} $t2 == $t2; + goto L2; + } + + // write_back[Reference($t3).fee (coin::Coin<#0>)]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:58:9+37 + $t3 := $UpdateMutation($t3, $Update'$1_stc_transaction_fee_TransactionFee'#0''_fee($Dereference($t3), $Dereference($t4))); + + // write_back[stc_transaction_fee::TransactionFee<#0>@]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:58:9+37 + $1_stc_transaction_fee_TransactionFee'#0'_$memory := $ResourceUpdate($1_stc_transaction_fee_TransactionFee'#0'_$memory, $GlobalLocationAddress($t3), + $Dereference($t3)); + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:59:5+1 + assume {:print "$at(93,2106,2107)"} true; +L1: + + // assert Not(Not(exists[@788]>(system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:64:9+89 + assume {:print "$at(93,2187,2276)"} true; + assert {:msg "assert_failed(93,2187,2276): function does not abort under this condition"} + !!$ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory#788, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Gt(Add(select coin::Coin.value>(select stc_transaction_fee::TransactionFee.fee>(global[@788]>(system_addresses::$get_starcoin_framework[]()))), select coin::Coin.value>($t0)), MaxU128())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:65:9+147 + assume {:print "$at(93,2285,2432)"} true; + assert {:msg "assert_failed(93,2285,2432): function does not abort under this condition"} + !(($ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory#788, $1_system_addresses_$get_starcoin_framework())->$fee->$value + $t0->$value) > $MAX_U128); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:65:9+147 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:59:5+1 + assume {:print "$at(93,2106,2107)"} true; +L2: + + // assert Or(Not(exists[@788]>(system_addresses::$get_starcoin_framework[]())), Gt(Add(select coin::Coin.value>(select stc_transaction_fee::TransactionFee.fee>(global[@788]>(system_addresses::$get_starcoin_framework[]()))), select coin::Coin.value>($t0)), MaxU128())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:61:5+325 + assume {:print "$at(93,2113,2438)"} true; + assert {:msg "assert_failed(93,2113,2438): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_stc_transaction_fee_TransactionFee'#0'_$memory#788, $1_system_addresses_$get_starcoin_framework()) || (($ResourceValue($1_stc_transaction_fee_TransactionFee'#0'_$memory#788, $1_system_addresses_$get_starcoin_framework())->$fee->$value + $t0->$value) > $MAX_U128)); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_fee.move:61:5+325 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:91:5+161 +function {:inline} $1_stc_block_$get_current_block_number($1_stc_block_BlockMetadata_$memory: $Memory $1_stc_block_BlockMetadata): int { + $ResourceValue($1_stc_block_BlockMetadata_$memory, $1_system_addresses_$get_starcoin_framework())->$number +} + +// struct stc_block::BlockMetadata at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:37:5+494 +datatype $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata($number: int, $parent_hash: Vec (int), $author: int, $uncles: int, $parents_hash: Vec (int), $new_block_events: $1_event_EventHandle'$1_stc_block_NewBlockEvent') +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_number(s: $1_stc_block_BlockMetadata, x: int): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(x, s->$parent_hash, s->$author, s->$uncles, s->$parents_hash, s->$new_block_events) +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_parent_hash(s: $1_stc_block_BlockMetadata, x: Vec (int)): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(s->$number, x, s->$author, s->$uncles, s->$parents_hash, s->$new_block_events) +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_author(s: $1_stc_block_BlockMetadata, x: int): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(s->$number, s->$parent_hash, x, s->$uncles, s->$parents_hash, s->$new_block_events) +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_uncles(s: $1_stc_block_BlockMetadata, x: int): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(s->$number, s->$parent_hash, s->$author, x, s->$parents_hash, s->$new_block_events) +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_parents_hash(s: $1_stc_block_BlockMetadata, x: Vec (int)): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(s->$number, s->$parent_hash, s->$author, s->$uncles, x, s->$new_block_events) +} +function {:inline} $Update'$1_stc_block_BlockMetadata'_new_block_events(s: $1_stc_block_BlockMetadata, x: $1_event_EventHandle'$1_stc_block_NewBlockEvent'): $1_stc_block_BlockMetadata { + $1_stc_block_BlockMetadata(s->$number, s->$parent_hash, s->$author, s->$uncles, s->$parents_hash, x) +} +function $IsValid'$1_stc_block_BlockMetadata'(s: $1_stc_block_BlockMetadata): bool { + $IsValid'u64'(s->$number) + && $IsValid'vec'u8''(s->$parent_hash) + && $IsValid'address'(s->$author) + && $IsValid'u64'(s->$uncles) + && $IsValid'vec'u8''(s->$parents_hash) + && $IsValid'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(s->$new_block_events) +} +function {:inline} $IsEqual'$1_stc_block_BlockMetadata'(s1: $1_stc_block_BlockMetadata, s2: $1_stc_block_BlockMetadata): bool { + $IsEqual'u64'(s1->$number, s2->$number) + && $IsEqual'vec'u8''(s1->$parent_hash, s2->$parent_hash) + && $IsEqual'address'(s1->$author, s2->$author) + && $IsEqual'u64'(s1->$uncles, s2->$uncles) + && $IsEqual'vec'u8''(s1->$parents_hash, s2->$parents_hash) + && $IsEqual'$1_event_EventHandle'$1_stc_block_NewBlockEvent''(s1->$new_block_events, s2->$new_block_events)} +var $1_stc_block_BlockMetadata_$memory: $Memory $1_stc_block_BlockMetadata; + +// struct stc_block::NewBlockEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:53:5+169 +datatype $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent($number: int, $author: int, $timestamp: int, $uncles: int, $parents_hash: Vec (int)) +} +function {:inline} $Update'$1_stc_block_NewBlockEvent'_number(s: $1_stc_block_NewBlockEvent, x: int): $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent(x, s->$author, s->$timestamp, s->$uncles, s->$parents_hash) +} +function {:inline} $Update'$1_stc_block_NewBlockEvent'_author(s: $1_stc_block_NewBlockEvent, x: int): $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent(s->$number, x, s->$timestamp, s->$uncles, s->$parents_hash) +} +function {:inline} $Update'$1_stc_block_NewBlockEvent'_timestamp(s: $1_stc_block_NewBlockEvent, x: int): $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent(s->$number, s->$author, x, s->$uncles, s->$parents_hash) +} +function {:inline} $Update'$1_stc_block_NewBlockEvent'_uncles(s: $1_stc_block_NewBlockEvent, x: int): $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent(s->$number, s->$author, s->$timestamp, x, s->$parents_hash) +} +function {:inline} $Update'$1_stc_block_NewBlockEvent'_parents_hash(s: $1_stc_block_NewBlockEvent, x: Vec (int)): $1_stc_block_NewBlockEvent { + $1_stc_block_NewBlockEvent(s->$number, s->$author, s->$timestamp, s->$uncles, x) +} +function $IsValid'$1_stc_block_NewBlockEvent'(s: $1_stc_block_NewBlockEvent): bool { + $IsValid'u64'(s->$number) + && $IsValid'address'(s->$author) + && $IsValid'u64'(s->$timestamp) + && $IsValid'u64'(s->$uncles) + && $IsValid'vec'u8''(s->$parents_hash) +} +function {:inline} $IsEqual'$1_stc_block_NewBlockEvent'(s1: $1_stc_block_NewBlockEvent, s2: $1_stc_block_NewBlockEvent): bool { + $IsEqual'u64'(s1->$number, s2->$number) + && $IsEqual'address'(s1->$author, s2->$author) + && $IsEqual'u64'(s1->$timestamp, s2->$timestamp) + && $IsEqual'u64'(s1->$uncles, s2->$uncles) + && $IsEqual'vec'u8''(s1->$parents_hash, s2->$parents_hash)} + +// fun stc_block::initialize [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+671 +procedure {:timeLimit 80} $1_stc_block_initialize$verify(_$t0: $signer, _$t1: Vec (int)) returns () +{ + // declare local variables + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_stc_block_BlockMetadata; + var $t5: Vec (int); + var $t6: $1_string_String; + var $t7: int; + var $t8: bool; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: Vec (int); + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_event_EventHandle'$1_stc_block_NewBlockEvent'; + var $t16: $1_stc_block_BlockMetadata; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t0: $signer; + var $t1: Vec (int); + var $temp_0'$1_stc_block_BlockMetadata': $1_stc_block_BlockMetadata; + var $temp_0'signer': $signer; + var $temp_0'vec'u8'': Vec (int); + var $1_stc_block_BlockMetadata_$memory#792: $Memory $1_stc_block_BlockMetadata; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + assume {:print "$at(88,1905,1906)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + assume $IsValid'vec'u8''($t1); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // @792 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + $1_stc_block_BlockMetadata_$memory#792 := $1_stc_block_BlockMetadata_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + assume {:print "$track_local(107,5,0):", $t0} $t0 == $t0; + + // trace_local[parent_hash]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:63:5+1 + assume {:print "$track_local(107,5,1):", $t1} $t1 == $t1; + + // $t5 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 32, 124, 32, 101, 110, 116, 101, 114, 101, 100, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:64:41+35 + assume {:print "$at(88,2012,2047)"} true; + $t5 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 105)), MakeVec4(110, 105, 116, 105)), MakeVec4(97, 108, 105, 122)), MakeVec4(101, 32, 124, 32)), MakeVec4(101, 110, 116, 101)), MakeVec4(114, 101, 100, 32)); + assume $IsValid'vec'u8''($t5); + + // $t6 := string::utf8($t5) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:64:23+54 + call $t6 := $1_string_utf8($t5); + if ($abort_flag) { + assume {:print "$at(88,1994,2048)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // debug::print($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:64:9+69 + call $1_debug_print'$1_string_String'($t6); + if ($abort_flag) { + assume {:print "$at(88,1980,2049)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + assume {:print "$at(88,2060,2112)"} true; + + // assume Identical($t8, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + assume ($t8 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t8) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + if ($t8) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 +L4: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + assume {:print "$at(88,2060,2112)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t7)); + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + assume {:print "$at(88,2060,2112)"} true; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + goto L2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 +L3: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:66:9+52 + assume {:print "$at(88,2060,2112)"} true; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:69:21+1 + assume {:print "$at(88,2180,2181)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:71:21+42 + assume {:print "$at(88,2228,2270)"} true; + call $t10 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,2228,2270)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:72:21+1 + assume {:print "$at(88,2292,2293)"} true; + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := vector::empty() on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:73:27+19 + assume {:print "$at(88,2321,2340)"} true; + call $t12 := $1_vector_empty'u8'(); + if ($abort_flag) { + assume {:print "$at(88,2321,2340)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // $t15 := account::new_event_handle($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:74:31+49 + assume {:print "$at(88,2372,2421)"} true; + call $t15 := $1_account_new_event_handle'$1_stc_block_NewBlockEvent'($t0); + if ($abort_flag) { + assume {:print "$at(88,2372,2421)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // $t16 := pack stc_block::BlockMetadata($t9, $t1, $t10, $t11, $t12, $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:68:30+288 + assume {:print "$at(88,2144,2432)"} true; + $t16 := $1_stc_block_BlockMetadata($t9, $t1, $t10, $t11, $t12, $t15); + + // trace_local[block_metadata]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:68:13+14 + assume {:print "$track_local(107,5,4):", $t16} $t16 == $t16; + + // move_to($t16, $t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:77:9+7 + assume {:print "$at(88,2443,2450)"} true; + if ($ResourceExists($1_stc_block_BlockMetadata_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_stc_block_BlockMetadata_$memory := $ResourceUpdate($1_stc_block_BlockMetadata_$memory, $t0->$addr, $t16); + } + if ($abort_flag) { + assume {:print "$at(88,2443,2450)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // $t17 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 105, 110, 105, 116, 105, 97, 108, 105, 122, 101, 32, 124, 32, 101, 120, 105, 116, 101, 100, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:79:41+34 + assume {:print "$at(88,2533,2567)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 105)), MakeVec4(110, 105, 116, 105)), MakeVec4(97, 108, 105, 122)), MakeVec4(101, 32, 124, 32)), MakeVec4(101, 120, 105, 116)), MakeVec3(101, 100, 32)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:79:23+53 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(88,2515,2568)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // debug::print($t18) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:79:9+68 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(88,2501,2569)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(107,5):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:80:5+1 + assume {:print "$at(88,2575,2576)"} true; +L1: + + // assert Not(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:86:9+84 + assume {:print "$at(88,2681,2765)"} true; + assert {:msg "assert_failed(88,2681,2765): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()); + + // assert Not(exists[@792](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:87:9+61 + assume {:print "$at(88,2774,2835)"} true; + assert {:msg "assert_failed(88,2774,2835): function does not abort under this condition"} + !$ResourceExists($1_stc_block_BlockMetadata_$memory#792, $1_signer_$address_of($t0)); + + // assert Not(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:7:9+84 + assume {:print "$at(89,196,280)"} true; + assert {:msg "assert_failed(89,196,280): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()); + + // assert Not(exists[@792](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:8:9+61 + assume {:print "$at(89,289,350)"} true; + assert {:msg "assert_failed(89,289,350): function does not abort under this condition"} + !$ResourceExists($1_stc_block_BlockMetadata_$memory#792, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:8:9+61 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:80:5+1 + assume {:print "$at(88,2575,2576)"} true; +L2: + + // assert Or(Or(Or(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]()), exists[@792](signer::$address_of[]($t0))), Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())), exists[@792](signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:3:5+259 + assume {:print "$at(89,97,356)"} true; + assert {:msg "assert_failed(89,97,356): abort not covered by any of the `aborts_if` clauses"} + (((!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()) || $ResourceExists($1_stc_block_BlockMetadata_$memory#792, $1_signer_$address_of($t0))) || !$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework())) || $ResourceExists($1_stc_block_BlockMetadata_$memory#792, $1_signer_$address_of($t0))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:3:5+259 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun stc_block::block_prologue [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1832 +procedure {:timeLimit 80} $1_stc_block_block_prologue$verify(_$t0: $signer, _$t1: Vec (int), _$t2: int, _$t3: int, _$t4: Vec (int), _$t5: int, _$t6: int, _$t7: int, _$t8: int, _$t9: Vec (int)) returns () +{ + // declare local variables + var $t10: $1_string_String; + var $t11: $1_string_String; + var $t12: int; + var $t13: $1_string_String; + var $t14: $1_string_String; + var $t15: int; + var $t16: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: $1_coin_Coin'$1_starcoin_coin_STC'; + var $t26: Vec (int); + var $t27: $1_string_String; + var $t28: int; + var $t29: Vec (int); + var $t30: $1_string_String; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: Vec (int); + var $t37: $1_string_String; + var $t0: $signer; + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: Vec (int); + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: Vec (int); + var $temp_0'$1_coin_Coin'$1_starcoin_coin_STC'': $1_coin_Coin'$1_starcoin_coin_STC'; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'u8': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$at(88,4021,4022)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'address'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'vec'u8''($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'u64'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'u64'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'u8'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'u64'($t8); + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $IsValid'vec'u8''($t9); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: chain_id::ChainId: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_chain_id_ChainId_$memory, $a_0)}(var $rsc := $ResourceValue($1_chain_id_ChainId_$memory, $a_0); + ($IsValid'$1_chain_id_ChainId'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116: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: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'$1_starcoin_coin_STC'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'$1_starcoin_coin_STC''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $ResourceExists($1_coin_Ghost$supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'$1_starcoin_coin_STC'_$memory, 0); + + // assume forall $rsc: treasury::Treasury: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_treasury_Treasury'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_treasury_Treasury'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: on_chain_config::Config: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_block_reward_config_RewardConfig'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'$1_block_reward_config_RewardConfig''($rsc)))); + + // assume forall $rsc: on_chain_config::Config: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_consensus_config_ConsensusConfig'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'$1_consensus_config_ConsensusConfig''($rsc)))); + + // assume forall $rsc: dao_treasury_withdraw_proposal::WrappedWithdrawCapability: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_dao_treasury_withdraw_proposal_WrappedWithdrawCapability'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: block_reward::RewardQueue: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_block_reward_RewardQueue_$memory, $a_0)}(var $rsc := $ResourceValue($1_block_reward_RewardQueue_$memory, $a_0); + ($IsValid'$1_block_reward_RewardQueue'($rsc)))); + + // assume forall $rsc: epoch::Epoch: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_epoch_Epoch_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_Epoch_$memory, $a_0); + ($IsValid'$1_epoch_Epoch'($rsc)))); + + // assume forall $rsc: epoch::EpochData: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_epoch_EpochData_$memory, $a_0)}(var $rsc := $ResourceValue($1_epoch_EpochData_$memory, $a_0); + ($IsValid'$1_epoch_EpochData'($rsc)))); + + // assume forall $rsc: stc_transaction_fee::TransactionFee: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC'_$memory, $a_0); + ($IsValid'$1_stc_transaction_fee_TransactionFee'$1_starcoin_coin_STC''($rsc)))); + + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // assume Eq(chain_status::$is_genesis(), Not(chain_status::$is_operating())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1832 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/chain_status.spec.move:27:9+42 + assume $IsEqual'bool'($1_chain_status_$is_genesis($1_chain_status_GenesisEndMarker_$memory), !$1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory)); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1832 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,0):", $t0} $t0 == $t0; + + // trace_local[parent_hash]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,1):", $t1} $t1 == $t1; + + // trace_local[timestamp]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,2):", $t2} $t2 == $t2; + + // trace_local[author]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,3):", $t3} $t3 == $t3; + + // trace_local[auth_key_vec]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,4):", $t4} $t4 == $t4; + + // trace_local[uncles]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,5):", $t5} $t5 == $t5; + + // trace_local[number]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,6):", $t6} $t6 == $t6; + + // trace_local[chain_id]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,7):", $t7} $t7 == $t7; + + // trace_local[parent_gas_used]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,8):", $t8} $t8 == $t8; + + // trace_local[parents_hash]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:116:5+1 + assume {:print "$track_local(107,0,9):", $t9} $t9 == $t9; + + // $t17 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 98, 108, 111, 99, 107, 95, 112, 114, 111, 108, 111, 103, 117, 101, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:128:41+38 + assume {:print "$at(88,4388,4426)"} true; + $t17 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 112, 114, 111)), MakeVec4(108, 111, 103, 117)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:128:23+57 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(88,4370,4427)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t18) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:128:9+72 + call $1_debug_print'$1_string_String'($t18); + if ($abort_flag) { + assume {:print "$at(88,4356,4428)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + assume {:print "$at(88,4489,4542)"} true; + + // assume Identical($t20, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + assume ($t20 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t20) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + if ($t20) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + assume {:print "$at(88,4489,4542)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t19)); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + assume {:print "$at(88,4489,4542)"} true; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:131:9+53 + assume {:print "$at(88,4489,4542)"} true; + + // $t21 := chain_id::get() on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:136:13+15 + assume {:print "$at(88,4686,4701)"} true; + call $t21 := $1_chain_id_get(); + if ($abort_flag) { + assume {:print "$at(88,4686,4701)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t22 := ==($t21, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:136:29+2 + $t22 := $IsEqual'u8'($t21, $t7); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 + assume {:print "$at(88,4665,4784)"} true; + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 + assume {:print "$at(88,4665,4784)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:137:37+22 + assume {:print "$at(88,4751,4773)"} true; +L0: + + // $t23 := 1006 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:137:37+22 + assume {:print "$at(88,4751,4773)"} true; + $t23 := 1006; + assume $IsValid'u64'($t23); + + // $t24 := error::invalid_argument($t23) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:137:13+47 + call $t24 := $1_error_invalid_argument($t23); + if ($abort_flag) { + assume {:print "$at(88,4727,4774)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 + assume {:print "$at(88,4665,4784)"} true; + assume {:print "$track_abort(107,0):", $t24} $t24 == $t24; + + // $t19 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 + $t19 := $t24; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:135:9+119 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:141:77+8 + assume {:print "$at(88,4906,4914)"} true; +L2: + + // $t25 := stc_transaction_fee::distribute_transaction_fees($t0) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:141:23+63 + assume {:print "$at(88,4852,4915)"} true; + call $t25 := $1_stc_transaction_fee_distribute_transaction_fees'$1_starcoin_coin_STC'($t0); + if ($abort_flag) { + assume {:print "$at(88,4852,4915)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // trace_local[txn_fee]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:141:13+7 + assume {:print "$track_local(107,0,16):", $t25} $t25 == $t25; + + // $t26 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 98, 108, 111, 99, 107, 95, 112, 114, 111, 108, 111, 103, 117, 101, 32, 124, 32, 116, 120, 110, 95, 102, 101, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:143:41+38 + assume {:print "$at(88,4958,4996)"} true; + $t26 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 112, 114, 111)), MakeVec4(108, 111, 103, 117)), MakeVec4(101, 32, 124, 32)), MakeVec4(116, 120, 110, 95)), MakeVec3(102, 101, 101)); + assume $IsValid'vec'u8''($t26); + + // $t27 := string::utf8($t26) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:143:23+57 + call $t27 := $1_string_utf8($t26); + if ($abort_flag) { + assume {:print "$at(88,4940,4997)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t27) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:143:9+72 + call $1_debug_print'$1_string_String'($t27); + if ($abort_flag) { + assume {:print "$at(88,4926,4998)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t28 := coin::value($t25) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:144:23+21 + assume {:print "$at(88,5022,5043)"} true; + call $t28 := $1_coin_value'$1_starcoin_coin_STC'($t25); + if ($abort_flag) { + assume {:print "$at(88,5022,5043)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t28) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:144:9+36 + call $1_debug_print'u64'($t28); + if ($abort_flag) { + assume {:print "$at(88,5008,5044)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t29 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 98, 108, 111, 99, 107, 95, 112, 114, 111, 108, 111, 103, 117, 101, 32, 124, 32, 116, 105, 109, 101, 115, 116, 97, 109, 112, 58, 58, 117, 112, 100, 97, 116, 101, 95, 103, 108, 111, 98, 97, 108, 95, 116, 105, 109, 101] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:147:41+60 + assume {:print "$at(88,5128,5188)"} true; + $t29 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 112, 114, 111)), MakeVec4(108, 111, 103, 117)), MakeVec4(101, 32, 124, 32)), MakeVec4(116, 105, 109, 101)), MakeVec4(115, 116, 97, 109)), MakeVec4(112, 58, 58, 117)), MakeVec4(112, 100, 97, 116)), MakeVec4(101, 95, 103, 108)), MakeVec4(111, 98, 97, 108)), MakeVec4(95, 116, 105, 109)), MakeVec1(101)); + assume $IsValid'vec'u8''($t29); + + // $t30 := string::utf8($t29) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:147:23+79 + call $t30 := $1_string_utf8($t29); + if ($abort_flag) { + assume {:print "$at(88,5110,5189)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t30) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:147:9+94 + call $1_debug_print'$1_string_String'($t30); + if ($abort_flag) { + assume {:print "$at(88,5096,5190)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t2) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:148:9+24 + assume {:print "$at(88,5200,5224)"} true; + call $1_debug_print'u64'($t2); + if ($abort_flag) { + assume {:print "$at(88,5200,5224)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t31 := signer::address_of($t0) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:149:49+28 + assume {:print "$at(88,5274,5302)"} true; + call $t31 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(88,5274,5302)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t32 := 1000 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:149:91+4 + $t32 := 1000; + assume $IsValid'u64'($t32); + + // $t33 := *($t2, $t32) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:149:89+1 + call $t33 := $MulU64($t2, $t32); + if ($abort_flag) { + assume {:print "$at(88,5314,5315)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // assert chain_status::$is_operating() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:41:9+38 + assume {:print "$at(111,2048,2086)"} true; + assert {:msg "assert_failed(111,2048,2086): precondition does not hold at this call"} + $1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory); + + // timestamp::update_global_time($t0, $t31, $t33) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:149:9+87 + assume {:print "$at(88,5234,5321)"} true; + call $1_timestamp_update_global_time($t0, $t31, $t33); + if ($abort_flag) { + assume {:print "$at(88,5234,5321)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // stc_block::process_block_metadata($t0, $t1, $t3, $t2, $t5, $t6, $t9) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:151:9+189 + assume {:print "$at(88,5332,5521)"} true; + call $1_stc_block_process_block_metadata($t0, $t1, $t3, $t2, $t5, $t6, $t9); + if ($abort_flag) { + assume {:print "$at(88,5332,5521)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t34 := epoch::adjust_epoch($t0, $t6, $t2, $t5, $t8) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:161:22+73 + assume {:print "$at(88,5545,5618)"} true; + call $t34 := $1_epoch_adjust_epoch($t0, $t6, $t2, $t5, $t8); + if ($abort_flag) { + assume {:print "$at(88,5545,5618)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // trace_local[reward]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:161:13+6 + assume {:print "$track_local(107,0,15):", $t34} $t34 == $t34; + + // assume Identical($t35, vector::$length(select block_reward::RewardQueue.infos(global(system_addresses::$get_starcoin_framework())))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/block_reward.spec.move:40:9+111 + assume {:print "$at(61,1812,1923)"} true; + assume ($t35 == $1_vector_$length'$1_block_reward_RewardInfo'($ResourceValue($1_block_reward_RewardQueue_$memory, $1_system_addresses_$get_starcoin_framework())->$infos)); + + // block_reward::process_block_reward($t0, $t6, $t34, $t3, $t4, $t25) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:164:9+91 + assume {:print "$at(88,5673,5764)"} true; + call $1_block_reward_process_block_reward($t0, $t6, $t34, $t3, $t4, $t25); + if ($abort_flag) { + assume {:print "$at(88,5673,5764)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // $t36 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 98, 108, 111, 99, 107, 95, 112, 114, 111, 108, 111, 103, 117, 101, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:166:41+37 + assume {:print "$at(88,5807,5844)"} true; + $t36 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 112, 114, 111)), MakeVec4(108, 111, 103, 117)), MakeVec4(101, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t36); + + // $t37 := string::utf8($t36) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:166:23+56 + call $t37 := $1_string_utf8($t36); + if ($abort_flag) { + assume {:print "$at(88,5789,5845)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // debug::print($t37) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:166:9+71 + call $1_debug_print'$1_string_String'($t37); + if ($abort_flag) { + assume {:print "$at(88,5775,5846)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(107,0):", $t19} $t19 == $t19; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:167:5+1 + assume {:print "$at(88,5852,5853)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:167:5+1 + assume {:print "$at(88,5852,5853)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:167:5+1 +L4: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:167:5+1 + assume {:print "$at(88,5852,5853)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun stc_block::get_current_author [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:110:5+159 +procedure {:timeLimit 80} $1_stc_block_get_current_author$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_block_BlockMetadata; + var $t3: int; + var $temp_0'address': int; + var $1_stc_block_BlockMetadata_$memory#798: $Memory $1_stc_block_BlockMetadata; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:110:5+1 + assume {:print "$at(88,3675,3676)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // @798 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:110:5+1 + $1_stc_block_BlockMetadata_$memory#798 := $1_stc_block_BlockMetadata_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:111:38+42 + assume {:print "$at(88,3778,3820)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,3778,3820)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:111:9+13 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stc_block_BlockMetadata_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(88,3749,3762)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,1):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.author($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:111:9+79 + $t3 := $t2->$author; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:111:9+79 + assume {:print "$track_return(107,1,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:112:5+1 + assume {:print "$at(88,3833,3834)"} true; +L1: + + // assert Not(Not(exists[@798](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:20:9+77 + assume {:print "$at(89,645,722)"} true; + assert {:msg "assert_failed(89,645,722): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#798, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:20:9+77 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:112:5+1 + assume {:print "$at(88,3833,3834)"} true; +L2: + + // assert Not(exists[@798](system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:19:5+117 + assume {:print "$at(89,611,728)"} true; + assert {:msg "assert_failed(89,611,728): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_stc_block_BlockMetadata_$memory#798, $1_system_addresses_$get_starcoin_framework()); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:19:5+117 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_block::get_current_block_number [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:91:5+161 +procedure {:inline 1} $1_stc_block_get_current_block_number() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_block_BlockMetadata; + var $t3: int; + var $temp_0'u64': int; + + // bytecode translation starts here + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:38+42 + assume {:print "$at(88,2989,3031)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,2989,3031)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+13 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stc_block_BlockMetadata_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(88,2960,2973)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.number($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+79 + $t3 := $t2->$number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+79 + assume {:print "$track_return(107,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 + assume {:print "$at(88,3044,3045)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 + assume {:print "$at(88,3044,3045)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 + assume {:print "$at(88,3044,3045)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_block::get_current_block_number [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:91:5+161 +procedure {:timeLimit 80} $1_stc_block_get_current_block_number$verify() returns ($ret0: int) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_block_BlockMetadata; + var $t3: int; + var $temp_0'u64': int; + var $1_stc_block_BlockMetadata_$memory#799: $Memory $1_stc_block_BlockMetadata; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:91:5+1 + assume {:print "$at(88,2884,2885)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // @799 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:91:5+1 + $1_stc_block_BlockMetadata_$memory#799 := $1_stc_block_BlockMetadata_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:38+42 + assume {:print "$at(88,2989,3031)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,2989,3031)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+13 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stc_block_BlockMetadata_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(88,2960,2973)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,2):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.number($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+79 + $t3 := $t2->$number; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:92:9+79 + assume {:print "$track_return(107,2,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 + assume {:print "$at(88,3044,3045)"} true; +L1: + + // assert Not(Not(exists[@799](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:12:9+77 + assume {:print "$at(89,402,479)"} true; + assert {:msg "assert_failed(89,402,479): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#799, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:12:9+77 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:93:5+1 + assume {:print "$at(88,3044,3045)"} true; +L2: + + // assert Not(exists[@799](system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:11:5+123 + assume {:print "$at(89,362,485)"} true; + assert {:msg "assert_failed(89,362,485): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_stc_block_BlockMetadata_$memory#799, $1_system_addresses_$get_starcoin_framework()); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:11:5+123 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_block::get_parent_hash [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:96:5+166 +procedure {:timeLimit 80} $1_stc_block_get_parent_hash$verify() returns ($ret0: Vec (int)) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_block_BlockMetadata; + var $t3: Vec (int); + var $temp_0'vec'u8'': Vec (int); + var $1_stc_block_BlockMetadata_$memory#801: $Memory $1_stc_block_BlockMetadata; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:96:5+1 + assume {:print "$at(88,3093,3094)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // @801 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:96:5+1 + $1_stc_block_BlockMetadata_$memory#801 := $1_stc_block_BlockMetadata_$memory; + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:97:40+42 + assume {:print "$at(88,3198,3240)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,3198,3240)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:97:11+13 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stc_block_BlockMetadata_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(88,3169,3182)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,3):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.parent_hash($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:97:10+85 + $t3 := $t2->$parent_hash; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:97:9+86 + assume {:print "$track_return(107,3,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:98:5+1 + assume {:print "$at(88,3258,3259)"} true; +L1: + + // assert Not(Not(exists[@801](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:101:9+77 + assume {:print "$at(88,3296,3373)"} true; + assert {:msg "assert_failed(88,3296,3373): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#801, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@801](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:16:9+77 + assume {:print "$at(89,522,599)"} true; + assert {:msg "assert_failed(89,522,599): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#801, $1_system_addresses_$get_starcoin_framework()); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:16:9+77 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:98:5+1 + assume {:print "$at(88,3258,3259)"} true; +L2: + + // assert Or(Not(exists[@801](system_addresses::$get_starcoin_framework[]())), Not(exists[@801](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:15:5+114 + assume {:print "$at(89,491,605)"} true; + assert {:msg "assert_failed(89,491,605): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_stc_block_BlockMetadata_$memory#801, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_stc_block_BlockMetadata_$memory#801, $1_system_addresses_$get_starcoin_framework())); + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:15:5+114 + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_block::get_parents_hash [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:105:5+168 +procedure {:timeLimit 80} $1_stc_block_get_parents_hash$verify() returns ($ret0: Vec (int)) +{ + // declare local variables + var $t0: int; + var $t1: int; + var $t2: $1_stc_block_BlockMetadata; + var $t3: Vec (int); + var $temp_0'vec'u8'': Vec (int); + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:105:5+1 + assume {:print "$at(88,3441,3442)"} true; + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // $t0 := system_addresses::get_starcoin_framework() on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:106:40+42 + assume {:print "$at(88,3547,3589)"} true; + call $t0 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,3547,3589)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,4):", $t1} $t1 == $t1; + goto L2; + } + + // $t2 := get_global($t0) on_abort goto L2 with $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:106:11+13 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t2 := $ResourceValue($1_stc_block_BlockMetadata_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(88,3518,3531)"} true; + $t1 := $abort_code; + assume {:print "$track_abort(107,4):", $t1} $t1 == $t1; + goto L2; + } + + // $t3 := get_field.parents_hash($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:106:10+86 + $t3 := $t2->$parents_hash; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:106:9+87 + assume {:print "$track_return(107,4,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:107:5+1 + assume {:print "$at(88,3608,3609)"} true; +L1: + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:107:5+1 + assume {:print "$at(88,3608,3609)"} true; + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:107:5+1 +L2: + + // abort($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:107:5+1 + assume {:print "$at(88,3608,3609)"} true; + $abort_code := $t1; + $abort_flag := true; + return; + +} + +// fun stc_block::process_block_metadata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1445 +procedure {:inline 1} $1_stc_block_process_block_metadata(_$t0: $signer, _$t1: Vec (int), _$t2: int, _$t3: int, _$t4: int, _$t5: int, _$t6: Vec (int)) returns () +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $1_string_String; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Vec (int); + var $t15: int; + var $t16: $Mutation ($1_event_EventHandle'$1_stc_block_NewBlockEvent'); + var $t17: $Mutation ($1_stc_block_BlockMetadata); + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: $Mutation ($1_stc_block_BlockMetadata); + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: int; + var $t32: $Mutation (int); + var $t33: $Mutation (int); + var $t34: $Mutation (Vec (int)); + var $t35: $Mutation (int); + var $t36: $Mutation (Vec (int)); + var $t37: Vec (int); + var $t38: $1_string_String; + var $t39: $Mutation ($1_event_EventHandle'$1_stc_block_NewBlockEvent'); + var $t40: $1_stc_block_NewBlockEvent; + var $t41: Vec (int); + var $t42: $1_string_String; + var $t0: $signer; + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $temp_0'$1_stc_block_BlockMetadata': $1_stc_block_BlockMetadata; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$at(88,5890,5891)"} true; + assume {:print "$track_local(107,6,0):", $t0} $t0 == $t0; + + // trace_local[parent_hash]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,1):", $t1} $t1 == $t1; + + // trace_local[author]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,2):", $t2} $t2 == $t2; + + // trace_local[timestamp]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,3):", $t3} $t3 == $t3; + + // trace_local[uncles]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,4):", $t4} $t4 == $t4; + + // trace_local[number]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,5):", $t5} $t5 == $t5; + + // trace_local[parents_hash]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,6):", $t6} $t6 == $t6; + + // $t18 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:41+46 + assume {:print "$at(88,6173,6219)"} true; + $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:23+65 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(88,6155,6220)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t19) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:9+80 + call $1_debug_print'$1_string_String'($t19); + if ($abort_flag) { + assume {:print "$at(88,6141,6221)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + + // assume Identical($t21, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume ($t21 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t21) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + if ($t21) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t20)); + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + + // $t22 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:67+42 + assume {:print "$at(88,6353,6395)"} true; + call $t22 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,6353,6395)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t23 := borrow_global($t22) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:34+17 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t22)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t22), EmptyVec(), $ResourceValue($1_stc_block_BlockMetadata_$memory, $t22)); + } + if ($abort_flag) { + assume {:print "$at(88,6320,6337)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // trace_local[block_metadata_ref]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:13+18 + $temp_0'$1_stc_block_BlockMetadata' := $Dereference($t23); + assume {:print "$track_local(107,6,17):", $temp_0'$1_stc_block_BlockMetadata'} $temp_0'$1_stc_block_BlockMetadata' == $temp_0'$1_stc_block_BlockMetadata'; + + // $t24 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 116, 111, 32, 99, 104, 101, 99, 107, 32, 98, 108, 111, 99, 107, 32, 110, 117, 109, 98, 101, 114] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:41+60 + assume {:print "$at(88,6439,6499)"} true; + $t24 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(116, 111, 32, 99)), MakeVec4(104, 101, 99, 107)), MakeVec4(32, 98, 108, 111)), MakeVec4(99, 107, 32, 110)), MakeVec4(117, 109, 98, 101)), MakeVec1(114)); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:23+79 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(88,6421,6500)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t25) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:9+94 + call $1_debug_print'$1_string_String'($t25); + if ($abort_flag) { + assume {:print "$at(88,6407,6501)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t26 := get_field.number($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:28+25 + assume {:print "$at(88,6531,6556)"} true; + $t26 := $Dereference($t23)->$number; + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:56+1 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t26, $t27) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:54+1 + call $t28 := $AddU64($t26, $t27); + if ($abort_flag) { + assume {:print "$at(88,6557,6558)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t29 := ==($t5, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:24+2 + $t29 := $IsEqual'u64'($t5, $t28); + + // if ($t29) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + if ($t29) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 +L0: + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + + // $t30 := 1017 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:84+22 + $t30 := 1017; + assume $IsValid'u64'($t30); + + // $t31 := error::invalid_argument($t30) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:60+47 + call $t31 := $1_error_invalid_argument($t30); + if ($abort_flag) { + assume {:print "$at(88,6563,6610)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + assume {:print "$track_abort(107,6):", $t31} $t31 == $t31; + + // $t20 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + $t20 := $t31; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:37+6 + assume {:print "$at(88,6649,6655)"} true; +L2: + + // $t32 := borrow_field.number($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+25 + assume {:print "$at(88,6621,6646)"} true; + $t32 := $ChildMutation($t23, 0, $Dereference($t23)->$number); + + // write_ref($t32, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+34 + $t32 := $UpdateMutation($t32, $t5); + + // write_back[Reference($t23).number (u64)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_number($Dereference($t23), $Dereference($t32))); + + // $t33 := borrow_field.author($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+25 + assume {:print "$at(88,6665,6690)"} true; + $t33 := $ChildMutation($t23, 2, $Dereference($t23)->$author); + + // write_ref($t33, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+34 + $t33 := $UpdateMutation($t33, $t2); + + // write_back[Reference($t23).author (address)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_author($Dereference($t23), $Dereference($t33))); + + // $t34 := borrow_field.parent_hash($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+30 + assume {:print "$at(88,6709,6739)"} true; + $t34 := $ChildMutation($t23, 1, $Dereference($t23)->$parent_hash); + + // write_ref($t34, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+44 + $t34 := $UpdateMutation($t34, $t1); + + // write_back[Reference($t23).parent_hash (vector)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+44 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_parent_hash($Dereference($t23), $Dereference($t34))); + + // $t35 := borrow_field.uncles($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+25 + assume {:print "$at(88,6763,6788)"} true; + $t35 := $ChildMutation($t23, 3, $Dereference($t23)->$uncles); + + // write_ref($t35, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+34 + $t35 := $UpdateMutation($t35, $t4); + + // write_back[Reference($t23).uncles (u64)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_uncles($Dereference($t23), $Dereference($t35))); + + // $t36 := borrow_field.parents_hash($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+31 + assume {:print "$at(88,6807,6838)"} true; + $t36 := $ChildMutation($t23, 4, $Dereference($t23)->$parents_hash); + + // write_ref($t36, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+46 + $t36 := $UpdateMutation($t36, $t6); + + // write_back[Reference($t23).parents_hash (vector)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+46 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_parents_hash($Dereference($t23), $Dereference($t36))); + + // $t37 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 116, 111, 32, 101, 109, 105, 116, 32, 78, 101, 119, 66, 108, 111, 99, 107, 69, 118, 101, 110, 116, 32, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:41+62 + assume {:print "$at(88,6896,6958)"} true; + $t37 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(116, 111, 32, 101)), MakeVec4(109, 105, 116, 32)), MakeVec4(78, 101, 119, 66)), MakeVec4(108, 111, 99, 107)), MakeVec4(69, 118, 101, 110)), MakeVec3(116, 32, 32)); + assume $IsValid'vec'u8''($t37); + + // $t38 := string::utf8($t37) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:23+81 + call $t38 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(88,6878,6959)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t38) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:9+96 + call $1_debug_print'$1_string_String'($t38); + if ($abort_flag) { + assume {:print "$at(88,6864,6960)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t39 := borrow_field.new_block_events($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:197:13+40 + assume {:print "$at(88,7017,7057)"} true; + $t39 := $ChildMutation($t23, 5, $Dereference($t23)->$new_block_events); + + // $t40 := pack stc_block::NewBlockEvent($t5, $t2, $t3, $t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:198:13+158 + assume {:print "$at(88,7071,7229)"} true; + $t40 := $1_stc_block_NewBlockEvent($t5, $t2, $t3, $t4, $t6); + + // opaque begin: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + assume {:print "$at(88,6971,7239)"} true; + + // opaque end: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + + // write_back[Reference($t23).new_block_events (event::EventHandle)]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_new_block_events($Dereference($t23), $Dereference($t39))); + + // write_back[stc_block::BlockMetadata@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + $1_stc_block_BlockMetadata_$memory := $ResourceUpdate($1_stc_block_BlockMetadata_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // $t41 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:41+45 + assume {:print "$at(88,7281,7326)"} true; + $t41 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t41); + + // $t42 := string::utf8($t41) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:23+64 + call $t42 := $1_string_utf8($t41); + if ($abort_flag) { + assume {:print "$at(88,7263,7327)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t42) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:9+79 + call $1_debug_print'$1_string_String'($t42); + if ($abort_flag) { + assume {:print "$at(88,7249,7328)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 + assume {:print "$at(88,7334,7335)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 + assume {:print "$at(88,7334,7335)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 +L4: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 + assume {:print "$at(88,7334,7335)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// fun stc_block::process_block_metadata [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1445 +procedure {:timeLimit 80} $1_stc_block_process_block_metadata$verify(_$t0: $signer, _$t1: Vec (int), _$t2: int, _$t3: int, _$t4: int, _$t5: int, _$t6: Vec (int)) returns () +{ + // declare local variables + var $t7: $1_string_String; + var $t8: $1_string_String; + var $t9: $1_string_String; + var $t10: $1_string_String; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Vec (int); + var $t15: int; + var $t16: $Mutation ($1_event_EventHandle'$1_stc_block_NewBlockEvent'); + var $t17: $Mutation ($1_stc_block_BlockMetadata); + var $t18: Vec (int); + var $t19: $1_string_String; + var $t20: int; + var $t21: bool; + var $t22: int; + var $t23: $Mutation ($1_stc_block_BlockMetadata); + var $t24: Vec (int); + var $t25: $1_string_String; + var $t26: int; + var $t27: int; + var $t28: int; + var $t29: bool; + var $t30: int; + var $t31: int; + var $t32: $Mutation (int); + var $t33: $Mutation (int); + var $t34: $Mutation (Vec (int)); + var $t35: $Mutation (int); + var $t36: $Mutation (Vec (int)); + var $t37: Vec (int); + var $t38: $1_string_String; + var $t39: $Mutation ($1_event_EventHandle'$1_stc_block_NewBlockEvent'); + var $t40: $1_stc_block_NewBlockEvent; + var $t41: Vec (int); + var $t42: $1_string_String; + var $t0: $signer; + var $t1: Vec (int); + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Vec (int); + var $temp_0'$1_stc_block_BlockMetadata': $1_stc_block_BlockMetadata; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'u8'': Vec (int); + var $1_stc_block_BlockMetadata_$memory#793: $Memory $1_stc_block_BlockMetadata; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$at(88,5890,5891)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'vec'u8''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'u64'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'u64'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume $IsValid'vec'u8''($t6); + + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // @793 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + $1_stc_block_BlockMetadata_$memory#793 := $1_stc_block_BlockMetadata_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,0):", $t0} $t0 == $t0; + + // trace_local[parent_hash]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,1):", $t1} $t1 == $t1; + + // trace_local[author]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,2):", $t2} $t2 == $t2; + + // trace_local[timestamp]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,3):", $t3} $t3 == $t3; + + // trace_local[uncles]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,4):", $t4} $t4 == $t4; + + // trace_local[number]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,5):", $t5} $t5 == $t5; + + // trace_local[parents_hash]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:170:5+1 + assume {:print "$track_local(107,6,6):", $t6} $t6 == $t6; + + // $t18 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:41+46 + assume {:print "$at(88,6173,6219)"} true; + $t18 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t18); + + // $t19 := string::utf8($t18) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:23+65 + call $t19 := $1_string_utf8($t18); + if ($abort_flag) { + assume {:print "$at(88,6155,6220)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t19) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:179:9+80 + call $1_debug_print'$1_string_String'($t19); + if ($abort_flag) { + assume {:print "$at(88,6141,6221)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // opaque begin: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + + // assume Identical($t21, Neq
(signer::$address_of($t0), 0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume ($t21 == !$IsEqual'address'($1_signer_$address_of($t0), 1)); + + // if ($t21) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + if ($t21) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 +L6: + + // assume And(Neq
(signer::$address_of($t0), 0x1), Eq(5, $t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + assume (!$IsEqual'address'($1_signer_$address_of($t0), 1) && $IsEqual'num'(5, $t20)); + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + goto L4; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 +L5: + + // opaque end: system_addresses::assert_starcoin_framework($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:181:9+52 + assume {:print "$at(88,6232,6284)"} true; + + // $t22 := system_addresses::get_starcoin_framework() on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:67+42 + assume {:print "$at(88,6353,6395)"} true; + call $t22 := $1_system_addresses_get_starcoin_framework(); + if ($abort_flag) { + assume {:print "$at(88,6353,6395)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t23 := borrow_global($t22) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:34+17 + if (!$ResourceExists($1_stc_block_BlockMetadata_$memory, $t22)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t22), EmptyVec(), $ResourceValue($1_stc_block_BlockMetadata_$memory, $t22)); + } + if ($abort_flag) { + assume {:print "$at(88,6320,6337)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // trace_local[block_metadata_ref]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:183:13+18 + $temp_0'$1_stc_block_BlockMetadata' := $Dereference($t23); + assume {:print "$track_local(107,6,17):", $temp_0'$1_stc_block_BlockMetadata'} $temp_0'$1_stc_block_BlockMetadata' == $temp_0'$1_stc_block_BlockMetadata'; + + // $t24 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 116, 111, 32, 99, 104, 101, 99, 107, 32, 98, 108, 111, 99, 107, 32, 110, 117, 109, 98, 101, 114] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:41+60 + assume {:print "$at(88,6439,6499)"} true; + $t24 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(116, 111, 32, 99)), MakeVec4(104, 101, 99, 107)), MakeVec4(32, 98, 108, 111)), MakeVec4(99, 107, 32, 110)), MakeVec4(117, 109, 98, 101)), MakeVec1(114)); + assume $IsValid'vec'u8''($t24); + + // $t25 := string::utf8($t24) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:23+79 + call $t25 := $1_string_utf8($t24); + if ($abort_flag) { + assume {:print "$at(88,6421,6500)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t25) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:185:9+94 + call $1_debug_print'$1_string_String'($t25); + if ($abort_flag) { + assume {:print "$at(88,6407,6501)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t26 := get_field.number($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:28+25 + assume {:print "$at(88,6531,6556)"} true; + $t26 := $Dereference($t23)->$number; + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:56+1 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := +($t26, $t27) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:54+1 + call $t28 := $AddU64($t26, $t27); + if ($abort_flag) { + assume {:print "$at(88,6557,6558)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t29 := ==($t5, $t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:24+2 + $t29 := $IsEqual'u64'($t5, $t28); + + // if ($t29) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + if ($t29) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 +L0: + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + + // $t30 := 1017 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:84+22 + $t30 := 1017; + assume $IsValid'u64'($t30); + + // $t31 := error::invalid_argument($t30) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:60+47 + call $t31 := $1_error_invalid_argument($t30); + if ($abort_flag) { + assume {:print "$at(88,6563,6610)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + assume {:print "$at(88,6512,6611)"} true; + assume {:print "$track_abort(107,6):", $t31} $t31 == $t31; + + // $t20 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + $t20 := $t31; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:187:9+99 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:37+6 + assume {:print "$at(88,6649,6655)"} true; +L2: + + // $t32 := borrow_field.number($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+25 + assume {:print "$at(88,6621,6646)"} true; + $t32 := $ChildMutation($t23, 0, $Dereference($t23)->$number); + + // write_ref($t32, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+34 + $t32 := $UpdateMutation($t32, $t5); + + // write_back[Reference($t23).number (u64)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:188:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_number($Dereference($t23), $Dereference($t32))); + + // $t33 := borrow_field.author($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+25 + assume {:print "$at(88,6665,6690)"} true; + $t33 := $ChildMutation($t23, 2, $Dereference($t23)->$author); + + // write_ref($t33, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+34 + $t33 := $UpdateMutation($t33, $t2); + + // write_back[Reference($t23).author (address)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:189:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_author($Dereference($t23), $Dereference($t33))); + + // $t34 := borrow_field.parent_hash($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+30 + assume {:print "$at(88,6709,6739)"} true; + $t34 := $ChildMutation($t23, 1, $Dereference($t23)->$parent_hash); + + // write_ref($t34, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+44 + $t34 := $UpdateMutation($t34, $t1); + + // write_back[Reference($t23).parent_hash (vector)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:190:9+44 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_parent_hash($Dereference($t23), $Dereference($t34))); + + // $t35 := borrow_field.uncles($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+25 + assume {:print "$at(88,6763,6788)"} true; + $t35 := $ChildMutation($t23, 3, $Dereference($t23)->$uncles); + + // write_ref($t35, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+34 + $t35 := $UpdateMutation($t35, $t4); + + // write_back[Reference($t23).uncles (u64)]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:191:9+34 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_uncles($Dereference($t23), $Dereference($t35))); + + // $t36 := borrow_field.parents_hash($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+31 + assume {:print "$at(88,6807,6838)"} true; + $t36 := $ChildMutation($t23, 4, $Dereference($t23)->$parents_hash); + + // write_ref($t36, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+46 + $t36 := $UpdateMutation($t36, $t6); + + // write_back[Reference($t23).parents_hash (vector)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:192:9+46 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_parents_hash($Dereference($t23), $Dereference($t36))); + + // $t37 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 116, 111, 32, 101, 109, 105, 116, 32, 78, 101, 119, 66, 108, 111, 99, 107, 69, 118, 101, 110, 116, 32, 32] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:41+62 + assume {:print "$at(88,6896,6958)"} true; + $t37 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(116, 111, 32, 101)), MakeVec4(109, 105, 116, 32)), MakeVec4(78, 101, 119, 66)), MakeVec4(108, 111, 99, 107)), MakeVec4(69, 118, 101, 110)), MakeVec3(116, 32, 32)); + assume $IsValid'vec'u8''($t37); + + // $t38 := string::utf8($t37) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:23+81 + call $t38 := $1_string_utf8($t37); + if ($abort_flag) { + assume {:print "$at(88,6878,6959)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t38) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:194:9+96 + call $1_debug_print'$1_string_String'($t38); + if ($abort_flag) { + assume {:print "$at(88,6864,6960)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // $t39 := borrow_field.new_block_events($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:197:13+40 + assume {:print "$at(88,7017,7057)"} true; + $t39 := $ChildMutation($t23, 5, $Dereference($t23)->$new_block_events); + + // $t40 := pack stc_block::NewBlockEvent($t5, $t2, $t3, $t4, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:198:13+158 + assume {:print "$at(88,7071,7229)"} true; + $t40 := $1_stc_block_NewBlockEvent($t5, $t2, $t3, $t4, $t6); + + // opaque begin: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + assume {:print "$at(88,6971,7239)"} true; + + // opaque end: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + + // write_back[Reference($t23).new_block_events (event::EventHandle)]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + $t23 := $UpdateMutation($t23, $Update'$1_stc_block_BlockMetadata'_new_block_events($Dereference($t23), $Dereference($t39))); + + // write_back[stc_block::BlockMetadata@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:196:9+268 + $1_stc_block_BlockMetadata_$memory := $ResourceUpdate($1_stc_block_BlockMetadata_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // $t41 := [115, 116, 99, 95, 98, 108, 111, 99, 107, 58, 58, 112, 114, 111, 99, 101, 115, 115, 95, 98, 108, 111, 99, 107, 95, 109, 101, 116, 97, 100, 97, 116, 97, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:41+45 + assume {:print "$at(88,7281,7326)"} true; + $t41 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(115, 116, 99, 95), MakeVec4(98, 108, 111, 99)), MakeVec4(107, 58, 58, 112)), MakeVec4(114, 111, 99, 101)), MakeVec4(115, 115, 95, 98)), MakeVec4(108, 111, 99, 107)), MakeVec4(95, 109, 101, 116)), MakeVec4(97, 100, 97, 116)), MakeVec4(97, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t41); + + // $t42 := string::utf8($t41) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:23+64 + call $t42 := $1_string_utf8($t41); + if ($abort_flag) { + assume {:print "$at(88,7263,7327)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // debug::print($t42) on_abort goto L4 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:206:9+79 + call $1_debug_print'$1_string_String'($t42); + if ($abort_flag) { + assume {:print "$at(88,7249,7328)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(107,6):", $t20} $t20 == $t20; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 + assume {:print "$at(88,7334,7335)"} true; +L3: + + // assert Not(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:26:9+84 + assume {:print "$at(89,798,882)"} true; + assert {:msg "assert_failed(89,798,882): function does not abort under this condition"} + !!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@793](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:27:9+77 + assume {:print "$at(89,891,968)"} true; + assert {:msg "assert_failed(89,891,968): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#793, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Neq($t5, Add(select stc_block::BlockMetadata.number(global[@793](system_addresses::$get_starcoin_framework[]())), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:28:9+97 + assume {:print "$at(89,977,1074)"} true; + assert {:msg "assert_failed(89,977,1074): function does not abort under this condition"} + !!$IsEqual'u64'($t5, ($ResourceValue($1_stc_block_BlockMetadata_$memory#793, $1_system_addresses_$get_starcoin_framework())->$number + 1)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:28:9+97 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.move:207:5+1 + assume {:print "$at(88,7334,7335)"} true; +L4: + + // assert Or(Or(Neq
(signer::$address_of[]($t0), system_addresses::$get_starcoin_framework[]()), Not(exists[@793](system_addresses::$get_starcoin_framework[]()))), Neq($t5, Add(select stc_block::BlockMetadata.number(global[@793](system_addresses::$get_starcoin_framework[]())), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:23:5+346 + assume {:print "$at(89,734,1080)"} true; + assert {:msg "assert_failed(89,734,1080): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'address'($1_signer_$address_of($t0), $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_stc_block_BlockMetadata_$memory#793, $1_system_addresses_$get_starcoin_framework())) || !$IsEqual'u64'($t5, ($ResourceValue($1_stc_block_BlockMetadata_$memory#793, $1_system_addresses_$get_starcoin_framework())->$number + 1))); + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_block.spec.move:23:5+346 + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// struct stc_offer::Offer<#0> at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:12:5+116 +datatype $1_stc_offer_Offer'#0' { + $1_stc_offer_Offer'#0'($offered: #0, $for_address: int, $time_lock: int) +} +function {:inline} $Update'$1_stc_offer_Offer'#0''_offered(s: $1_stc_offer_Offer'#0', x: #0): $1_stc_offer_Offer'#0' { + $1_stc_offer_Offer'#0'(x, s->$for_address, s->$time_lock) +} +function {:inline} $Update'$1_stc_offer_Offer'#0''_for_address(s: $1_stc_offer_Offer'#0', x: int): $1_stc_offer_Offer'#0' { + $1_stc_offer_Offer'#0'(s->$offered, x, s->$time_lock) +} +function {:inline} $Update'$1_stc_offer_Offer'#0''_time_lock(s: $1_stc_offer_Offer'#0', x: int): $1_stc_offer_Offer'#0' { + $1_stc_offer_Offer'#0'(s->$offered, s->$for_address, x) +} +function $IsValid'$1_stc_offer_Offer'#0''(s: $1_stc_offer_Offer'#0'): bool { + $IsValid'#0'(s->$offered) + && $IsValid'address'(s->$for_address) + && $IsValid'u64'(s->$time_lock) +} +function {:inline} $IsEqual'$1_stc_offer_Offer'#0''(s1: $1_stc_offer_Offer'#0', s2: $1_stc_offer_Offer'#0'): bool { + s1 == s2 +} +var $1_stc_offer_Offer'#0'_$memory: $Memory $1_stc_offer_Offer'#0'; + +// fun stc_offer::address_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:81:5+158 +procedure {:timeLimit 80} $1_stc_offer_address_of$verify(_$t0: int) returns ($ret0: int) +{ + // declare local variables + var $t1: $1_stc_offer_Offer'#0'; + var $t2: int; + var $t3: int; + var $t0: int; + var $temp_0'address': int; + var $1_stc_offer_Offer'#0'_$memory#802: $Memory $1_stc_offer_Offer'#0'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:81:5+1 + assume {:print "$at(92,3130,3131)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: stc_offer::Offer<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:81:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0); + ($IsValid'$1_stc_offer_Offer'#0''($rsc)))); + + // @802 := save_mem(stc_offer::Offer<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:81:5+1 + $1_stc_offer_Offer'#0'_$memory#802 := $1_stc_offer_Offer'#0'_$memory; + + // trace_local[offer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:81:5+1 + assume {:print "$track_local(109,0,0):", $t0} $t0 == $t0; + + // $t1 := get_global>($t0) on_abort goto L2 with $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:82:9+13 + assume {:print "$at(92,3226,3239)"} true; + if (!$ResourceExists($1_stc_offer_Offer'#0'_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t1 := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(92,3226,3239)"} true; + $t2 := $abort_code; + assume {:print "$track_abort(109,0):", $t2} $t2 == $t2; + goto L2; + } + + // $t3 := get_field>.for_address($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:82:9+56 + $t3 := $t1->$for_address; + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:82:9+56 + assume {:print "$track_return(109,0,0):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:83:5+1 + assume {:print "$at(92,3287,3288)"} true; +L1: + + // assert Not(Not(exists[@802]>($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:86:9+49 + assume {:print "$at(92,3320,3369)"} true; + assert {:msg "assert_failed(92,3320,3369): function does not abort under this condition"} + !!$ResourceExists($1_stc_offer_Offer'#0'_$memory#802, $t0); + + // return $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:86:9+49 + $ret0 := $t3; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:83:5+1 + assume {:print "$at(92,3287,3288)"} true; +L2: + + // assert Not(exists[@802]>($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:85:5+81 + assume {:print "$at(92,3294,3375)"} true; + assert {:msg "assert_failed(92,3294,3375): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_stc_offer_Offer'#0'_$memory#802, $t0); + + // abort($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:85:5+81 + $abort_code := $t2; + $abort_flag := true; + return; + +} + +// fun stc_offer::create [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+346 +procedure {:timeLimit 80} $1_stc_offer_create$verify(_$t0: $signer, _$t1: #0, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_stc_offer_Offer'#0'; + var $t0: $signer; + var $t1: #0; + var $t2: int; + var $t3: int; + var $temp_0'#0': #0; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#803: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_stc_offer_Offer'#0'_$memory#804: $Memory $1_stc_offer_Offer'#0'; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume {:print "$at(92,810,811)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume $IsValid'#0'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume $IsValid'u64'($t3); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26: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: stc_offer::Offer<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0); + ($IsValid'$1_stc_offer_Offer'#0''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+346 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @803 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#803 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @804 := save_mem(stc_offer::Offer<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + $1_stc_offer_Offer'#0'_$memory#804 := $1_stc_offer_Offer'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume {:print "$track_local(109,1,0):", $t0} $t0 == $t0; + + // trace_local[offered]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume {:print "$track_local(109,1,1):", $t1} $t1 == $t1; + + // trace_local[for_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume {:print "$track_local(109,1,2):", $t2} $t2 == $t2; + + // trace_local[lock_period]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:26:5+1 + assume {:print "$track_local(109,1,3):", $t3} $t3 == $t3; + + // $t5 := timestamp::now_seconds() on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:27:25+24 + assume {:print "$at(92,946,970)"} true; + call $t5 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(92,946,970)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(109,1):", $t6} $t6 == $t6; + goto L2; + } + + // $t7 := +($t5, $t3) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:27:50+1 + call $t7 := $AddU64($t5, $t3); + if ($abort_flag) { + assume {:print "$at(92,971,972)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(109,1):", $t6} $t6 == $t6; + goto L2; + } + + // trace_local[time_lock]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:27:13+9 + assume {:print "$track_local(109,1,4):", $t7} $t7 == $t7; + + // $t8 := pack stc_offer::Offer<#0>($t1, $t2, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:29:26+94 + assume {:print "$at(92,1054,1148)"} true; + $t8 := $1_stc_offer_Offer'#0'($t1, $t2, $t7); + + // move_to>($t8, $t0) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:29:9+7 + if ($ResourceExists($1_stc_offer_Offer'#0'_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_stc_offer_Offer'#0'_$memory := $ResourceUpdate($1_stc_offer_Offer'#0'_$memory, $t0->$addr, $t8); + } + if ($abort_flag) { + assume {:print "$at(92,1037,1044)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(109,1):", $t6} $t6 == $t6; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:34:5+1 + assume {:print "$at(92,1155,1156)"} true; +L1: + + // assert Not(Gt(Add(timestamp::$now_seconds[@803](), $t3), MaxU64())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:41:9+61 + assume {:print "$at(92,1326,1387)"} true; + assert {:msg "assert_failed(92,1326,1387): function does not abort under this condition"} + !(($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#803) + $t3) > $MAX_U64); + + // assert Not(exists[@804]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:42:9+62 + assume {:print "$at(92,1396,1458)"} true; + assert {:msg "assert_failed(92,1396,1458): function does not abort under this condition"} + !$ResourceExists($1_stc_offer_Offer'#0'_$memory#804, $1_signer_$address_of($t0)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:42:9+62 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:34:5+1 + assume {:print "$at(92,1155,1156)"} true; +L2: + + // assert Or(Gt(Add(timestamp::$now_seconds[@803](), $t3), MaxU64()), exists[@804]>(signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:36:5+302 + assume {:print "$at(92,1162,1464)"} true; + assert {:msg "assert_failed(92,1162,1464): abort not covered by any of the `aborts_if` clauses"} + ((($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#803) + $t3) > $MAX_U64) || $ResourceExists($1_stc_offer_Offer'#0'_$memory#804, $1_signer_$address_of($t0))); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:36:5+302 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun stc_offer::exists_at [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:71:5+120 +procedure {:timeLimit 80} $1_stc_offer_exists_at$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:71:5+1 + assume {:print "$at(92,2833,2834)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: stc_offer::Offer<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:71:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0); + ($IsValid'$1_stc_offer_Offer'#0''($rsc)))); + + // trace_local[offer_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:71:5+1 + assume {:print "$track_local(109,2,0):", $t0} $t0 == $t0; + + // $t1 := exists>($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:72:9+6 + assume {:print "$at(92,2910,2916)"} true; + $t1 := $ResourceExists($1_stc_offer_Offer'#0'_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:72:9+37 + assume {:print "$track_return(109,2,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:73:5+1 + assume {:print "$at(92,2952,2953)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:76:9+16 + assume {:print "$at(92,2984,3000)"} true; + assert {:msg "assert_failed(92,2984,3000): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:76:9+16 + $ret0 := $t1; + return; + +} + +// fun stc_offer::redeem [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+518 +procedure {:timeLimit 80} $1_stc_offer_redeem$verify(_$t0: $signer, _$t1: int) returns ($ret0: #0) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: #0; + var $t6: int; + var $t7: int; + var $t8: $1_stc_offer_Offer'#0'; + var $t9: int; + var $t10: #0; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t0: $signer; + var $t1: int; + var $temp_0'#0': #0; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_stc_offer_Offer'#0'_$memory#805: $Memory $1_stc_offer_Offer'#0'; + var $1_timestamp_CurrentTimeMicroseconds_$memory#806: $Memory $1_timestamp_CurrentTimeMicroseconds; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + assume {:print "$at(92,1736,1737)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + assume $IsValid'address'($t1); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49: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: stc_offer::Offer<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $a_0); + ($IsValid'$1_stc_offer_Offer'#0''($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+518 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @806 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#806 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @805 := save_mem(stc_offer::Offer<#0>) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + $1_stc_offer_Offer'#0'_$memory#805 := $1_stc_offer_Offer'#0'_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + assume {:print "$track_local(109,3,0):", $t0} $t0 == $t0; + + // trace_local[offer_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:49:5+1 + assume {:print "$track_local(109,3,1):", $t1} $t1 == $t1; + + // $t8 := move_from>($t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:50:66+9 + assume {:print "$at(92,1903,1912)"} true; + if (!$ResourceExists($1_stc_offer_Offer'#0'_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_stc_offer_Offer'#0'_$memory, $t1); + $1_stc_offer_Offer'#0'_$memory := $ResourceRemove($1_stc_offer_Offer'#0'_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(92,1903,1912)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(109,3):", $t9} $t9 == $t9; + goto L10; + } + + // ($t10, $t11, $t12) := unpack stc_offer::Offer<#0>($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:50:13+50 + $t10 := $t8->$offered; + $t11 := $t8->$for_address; + $t12 := $t8->$time_lock; + + // trace_local[time_lock]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:50:52+9 + assume {:print "$track_local(109,3,7):", $t12} $t12 == $t12; + + // trace_local[for_address]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:50:39+11 + assume {:print "$track_local(109,3,3):", $t11} $t11 == $t11; + + // trace_local[offered]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:50:30+7 + assume {:print "$track_local(109,3,5):", $t10} $t10 == $t10; + + // $t13 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:51:22+27 + assume {:print "$at(92,1966,1993)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(92,1966,1993)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(109,3):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[sender]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:51:13+6 + assume {:print "$track_local(109,3,6):", $t13} $t13 == $t13; + + // $t14 := timestamp::now_seconds() on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:52:19+24 + assume {:print "$at(92,2013,2037)"} true; + call $t14 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(92,2013,2037)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(109,3):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[now]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:52:13+3 + assume {:print "$track_local(109,3,4):", $t14} $t14 == $t14; + + // $t15 := ==($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:24+2 + assume {:print "$at(92,2062,2064)"} true; + $t15 := $IsEqual'address'($t13, $t11); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 +L1: + + // $t16 := true at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 + assume {:print "$at(92,2055,2103)"} true; + $t16 := true; + assume $IsValid'bool'($t16); + + // $t2 := $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 + $t2 := $t16; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:42+6 +L0: + + // $t2 := ==($t13, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:49+2 + assume {:print "$at(92,2087,2089)"} true; + $t2 := $IsEqual'address'($t13, $t1); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:17+48 +L2: + + // if ($t2) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 + assume {:print "$at(92,2047,2153)"} true; + if ($t2) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 + assume {:print "$at(92,2047,2153)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:91+22 +L3: + + // $t17 := 101 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:91+22 + assume {:print "$at(92,2129,2151)"} true; + $t17 := 101; + assume $IsValid'u64'($t17); + + // $t18 := error::invalid_argument($t17) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:67+47 + call $t18 := $1_error_invalid_argument($t17); + if ($abort_flag) { + assume {:print "$at(92,2105,2152)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(109,3):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 + assume {:print "$at(92,2047,2153)"} true; + assume {:print "$track_abort(109,3):", $t18} $t18 == $t18; + + // $t9 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 + $t9 := $t18; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:53:9+106 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:17+3 + assume {:print "$at(92,2171,2174)"} true; +L5: + + // $t19 := >=($t14, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:21+2 + assume {:print "$at(92,2175,2177)"} true; + call $t19 := $Ge($t14, $t12); + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 + assume {:print "$at(92,2163,2231)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:56+19 +L6: + + // $t20 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:56+19 + assume {:print "$at(92,2210,2229)"} true; + $t20 := 102; + assume $IsValid'u64'($t20); + + // $t21 := error::invalid_state($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:35+41 + call $t21 := $1_error_invalid_state($t20); + if ($abort_flag) { + assume {:print "$at(92,2189,2230)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(109,3):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 + assume {:print "$at(92,2163,2231)"} true; + assume {:print "$track_abort(109,3):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:54:9+68 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:55:9+7 + assume {:print "$at(92,2241,2248)"} true; +L8: + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:55:9+7 + assume {:print "$at(92,2241,2248)"} true; + assume {:print "$track_return(109,3,0):", $t10} $t10 == $t10; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:56:5+1 + assume {:print "$at(92,2253,2254)"} true; +L9: + + // assert Not(Not(exists[@805]>($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:62:9+49 + assume {:print "$at(92,2366,2415)"} true; + assert {:msg "assert_failed(92,2366,2415): function does not abort under this condition"} + !!$ResourceExists($1_stc_offer_Offer'#0'_$memory#805, $t1); + + // assert Not(And(Neq
(signer::$address_of[]($t0), select stc_offer::Offer.for_address>(global[@805]>($t1))), Neq
(signer::$address_of[]($t0), $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:63:9+167 + assume {:print "$at(92,2424,2591)"} true; + assert {:msg "assert_failed(92,2424,2591): function does not abort under this condition"} + !(!$IsEqual'address'($1_signer_$address_of($t0), $ResourceValue($1_stc_offer_Offer'#0'_$memory#805, $t1)->$for_address) && !$IsEqual'address'($1_signer_$address_of($t0), $t1)); + + // assert Not(Lt(timestamp::$now_seconds[@806](), select stc_offer::Offer.time_lock>(global[@805]>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:66:9+85 + assume {:print "$at(92,2600,2685)"} true; + assert {:msg "assert_failed(92,2600,2685): function does not abort under this condition"} + !($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#806) < $ResourceValue($1_stc_offer_Offer'#0'_$memory#805, $t1)->$time_lock); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:66:9+85 + $ret0 := $t10; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:56:5+1 + assume {:print "$at(92,2253,2254)"} true; +L10: + + // assert Or(Or(Not(exists[@805]>($t1)), And(Neq
(signer::$address_of[]($t0), select stc_offer::Offer.for_address>(global[@805]>($t1))), Neq
(signer::$address_of[]($t0), $t1))), Lt(timestamp::$now_seconds[@806](), select stc_offer::Offer.time_lock>(global[@805]>($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:58:5+489 + assume {:print "$at(92,2260,2749)"} true; + assert {:msg "assert_failed(92,2260,2749): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_stc_offer_Offer'#0'_$memory#805, $t1) || (!$IsEqual'address'($1_signer_$address_of($t0), $ResourceValue($1_stc_offer_Offer'#0'_$memory#805, $t1)->$for_address) && !$IsEqual'address'($1_signer_$address_of($t0), $t1))) || ($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#806) < $ResourceValue($1_stc_offer_Offer'#0'_$memory#805, $t1)->$time_lock)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_offer.move:58:5+489 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun stc_transaction_timeout::is_valid_transaction_timestamp [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+583 +procedure {:timeLimit 80} $1_stc_transaction_timeout_is_valid_transaction_timestamp$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: int; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: bool; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: bool; + var $t0: int; + var $temp_0'bool': bool; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#807: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_stc_block_BlockMetadata_$memory#808: $Memory $1_stc_block_BlockMetadata; + var $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809: $Memory $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + assume {:print "$at(97,800,801)"} true; + assume $IsValid'u64'($t0); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23: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: on_chain_config::Config: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $a_0)}(var $rsc := $ResourceValue($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory, $a_0); + ($IsValid'$1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig''($rsc)))); + + // assume forall $rsc: stc_block::BlockMetadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_stc_block_BlockMetadata_$memory, $a_0); + ($IsValid'$1_stc_block_BlockMetadata'($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+583 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // @807 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + $1_timestamp_CurrentTimeMicroseconds_$memory#807 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @809 := save_mem(on_chain_config::Config) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809 := $1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory; + + // @808 := save_mem(stc_block::BlockMetadata) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + $1_stc_block_BlockMetadata_$memory#808 := $1_stc_block_BlockMetadata_$memory; + + // trace_local[txn_timestamp]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:23:5+1 + assume {:print "$track_local(110,0,0):", $t0} $t0 == $t0; + + // $t5 := timestamp::now_seconds() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:24:34+24 + assume {:print "$at(97,903,927)"} true; + call $t5 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(97,903,927)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(110,0):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[current_block_time]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:24:13+18 + assume {:print "$track_local(110,0,2):", $t5} $t5 == $t5; + + // $t7 := stc_block::get_current_block_number() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:25:28+37 + assume {:print "$at(97,956,993)"} true; + call $t7 := $1_stc_block_get_current_block_number(); + if ($abort_flag) { + assume {:print "$at(97,956,993)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(110,0):", $t6} $t6 == $t6; + goto L6; + } + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:27:29+1 + assume {:print "$at(97,1102,1103)"} true; + $t8 := 0; + assume $IsValid'u64'($t8); + + // $t9 := ==($t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:27:26+2 + $t9 := $IsEqual'u64'($t7, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:27:9+88 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:28:20+13 + assume {:print "$at(97,1126,1139)"} true; +L1: + + // $t10 := >($t0, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:28:34+1 + assume {:print "$at(97,1140,1141)"} true; + call $t10 := $Gt($t0, $t5); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:28:13+41 + assume {:print "$track_return(110,0,0):", $t10} $t10 == $t10; + + // $t11 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:28:13+41 + $t11 := $t10; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:28:13+41 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:30:23+50 + assume {:print "$at(97,1194,1244)"} true; +L0: + + // $t12 := stc_transaction_timeout_config::duration_seconds() on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:30:23+50 + assume {:print "$at(97,1194,1244)"} true; + call $t12 := $1_stc_transaction_timeout_config_duration_seconds(); + if ($abort_flag) { + assume {:print "$at(97,1194,1244)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(110,0):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[timeout]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:30:13+7 + assume {:print "$track_local(110,0,4):", $t12} $t12 == $t12; + + // $t13 := +($t5, $t12) on_abort goto L6 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:31:47+1 + assume {:print "$at(97,1292,1293)"} true; + call $t13 := $AddU64($t5, $t12); + if ($abort_flag) { + assume {:print "$at(97,1292,1293)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(110,0):", $t6} $t6 == $t6; + goto L6; + } + + // trace_local[max_txn_time]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:31:13+12 + assume {:print "$track_local(110,0,3):", $t13} $t13 == $t13; + + // $t14 := <($t5, $t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:28+1 + assume {:print "$at(97,1330,1331)"} true; + call $t14 := $Lt($t5, $t0); + + // if ($t14) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + if ($t14) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:47+13 +L3: + + // $t1 := <($t0, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:61+1 + assume {:print "$at(97,1363,1364)"} true; + call $t1 := $Lt($t0, $t13); + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 +L2: + + // $t15 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + assume {:print "$at(97,1311,1377)"} true; + $t15 := false; + assume $IsValid'bool'($t15); + + // $t1 := $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + $t1 := $t15; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 +L4: + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + assume {:print "$at(97,1311,1377)"} true; + assume {:print "$track_return(110,0,0):", $t1} $t1 == $t1; + + // $t11 := move($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:32:9+66 + $t11 := $t1; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:33:5+1 + assume {:print "$at(97,1382,1383)"} true; +L5: + + // assert Not(Not(exists[@807](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:41:9+98 + assume {:print "$at(97,1621,1719)"} true; + assert {:msg "assert_failed(97,1621,1719): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#807, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(Not(exists[@808](system_addresses::$get_starcoin_framework[]()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:42:9+88 + assume {:print "$at(97,1728,1816)"} true; + assert {:msg "assert_failed(97,1728,1816): function does not abort under this condition"} + !!$ResourceExists($1_stc_block_BlockMetadata_$memory#808, $1_system_addresses_$get_starcoin_framework()); + + // assert Not(And(Neq(stc_block::$get_current_block_number[@808](), 0), Gt(Add(timestamp::$now_seconds[@807](), stc_transaction_timeout_config::$duration_seconds[@809]()), MaxU64()))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:45:9+158 + assume {:print "$at(97,1884,2042)"} true; + assert {:msg "assert_failed(97,1884,2042): function does not abort under this condition"} + !(!$IsEqual'u64'($1_stc_block_$get_current_block_number($1_stc_block_BlockMetadata_$memory#808), 0) && (($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#807) + $1_stc_transaction_timeout_config_$duration_seconds($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809)) > $MAX_U64)); + + // assert Not(And(Neq(stc_block::$get_current_block_number[@808](), 0), Not(exists[@809]>(system_addresses::$get_starcoin_framework[]())))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:47:9+225 + assume {:print "$at(97,2051,2276)"} true; + assert {:msg "assert_failed(97,2051,2276): function does not abort under this condition"} + !(!$IsEqual'u64'($1_stc_block_$get_current_block_number($1_stc_block_BlockMetadata_$memory#808), 0) && !$ResourceExists($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809, $1_system_addresses_$get_starcoin_framework())); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:47:9+225 + $ret0 := $t11; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:33:5+1 + assume {:print "$at(97,1382,1383)"} true; +L6: + + // assert Or(Or(Or(Not(exists[@807](system_addresses::$get_starcoin_framework[]())), Not(exists[@808](system_addresses::$get_starcoin_framework[]()))), And(Neq(stc_block::$get_current_block_number[@808](), 0), Gt(Add(timestamp::$now_seconds[@807](), stc_transaction_timeout_config::$duration_seconds[@809]()), MaxU64()))), And(Neq(stc_block::$get_current_block_number[@808](), 0), Not(exists[@809]>(system_addresses::$get_starcoin_framework[]())))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:35:5+893 + assume {:print "$at(97,1389,2282)"} true; + assert {:msg "assert_failed(97,1389,2282): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#807, $1_system_addresses_$get_starcoin_framework()) || !$ResourceExists($1_stc_block_BlockMetadata_$memory#808, $1_system_addresses_$get_starcoin_framework())) || (!$IsEqual'u64'($1_stc_block_$get_current_block_number($1_stc_block_BlockMetadata_$memory#808), 0) && (($1_timestamp_$now_seconds($1_timestamp_CurrentTimeMicroseconds_$memory#807) + $1_stc_transaction_timeout_config_$duration_seconds($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809)) > $MAX_U64))) || (!$IsEqual'u64'($1_stc_block_$get_current_block_number($1_stc_block_BlockMetadata_$memory#808), 0) && !$ResourceExists($1_on_chain_config_Config'$1_stc_transaction_timeout_config_TransactionTimeoutConfig'_$memory#809, $1_system_addresses_$get_starcoin_framework()))); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/stc_transaction_timeout.move:35:5+893 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// struct token_event_store::CollectionDescriptionMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:28:5+188 +datatype $1_token_event_store_CollectionDescriptionMutate { + $1_token_event_store_CollectionDescriptionMutate($creator_addr: int, $collection_name: $1_string_String, $old_description: $1_string_String, $new_description: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutate'_creator_addr(s: $1_token_event_store_CollectionDescriptionMutate, x: int): $1_token_event_store_CollectionDescriptionMutate { + $1_token_event_store_CollectionDescriptionMutate(x, s->$collection_name, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutate'_collection_name(s: $1_token_event_store_CollectionDescriptionMutate, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutate { + $1_token_event_store_CollectionDescriptionMutate(s->$creator_addr, x, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutate'_old_description(s: $1_token_event_store_CollectionDescriptionMutate, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutate { + $1_token_event_store_CollectionDescriptionMutate(s->$creator_addr, s->$collection_name, x, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutate'_new_description(s: $1_token_event_store_CollectionDescriptionMutate, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutate { + $1_token_event_store_CollectionDescriptionMutate(s->$creator_addr, s->$collection_name, s->$old_description, x) +} +function $IsValid'$1_token_event_store_CollectionDescriptionMutate'(s: $1_token_event_store_CollectionDescriptionMutate): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$old_description) + && $IsValid'$1_string_String'(s->$new_description) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionDescriptionMutate'(s1: $1_token_event_store_CollectionDescriptionMutate, s2: $1_token_event_store_CollectionDescriptionMutate): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$old_description, s2->$old_description) + && $IsEqual'$1_string_String'(s1->$new_description, s2->$new_description)} + +// struct token_event_store::CollectionDescriptionMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:19:5+193 +datatype $1_token_event_store_CollectionDescriptionMutateEvent { + $1_token_event_store_CollectionDescriptionMutateEvent($creator_addr: int, $collection_name: $1_string_String, $old_description: $1_string_String, $new_description: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutateEvent'_creator_addr(s: $1_token_event_store_CollectionDescriptionMutateEvent, x: int): $1_token_event_store_CollectionDescriptionMutateEvent { + $1_token_event_store_CollectionDescriptionMutateEvent(x, s->$collection_name, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutateEvent'_collection_name(s: $1_token_event_store_CollectionDescriptionMutateEvent, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutateEvent { + $1_token_event_store_CollectionDescriptionMutateEvent(s->$creator_addr, x, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutateEvent'_old_description(s: $1_token_event_store_CollectionDescriptionMutateEvent, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutateEvent { + $1_token_event_store_CollectionDescriptionMutateEvent(s->$creator_addr, s->$collection_name, x, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_CollectionDescriptionMutateEvent'_new_description(s: $1_token_event_store_CollectionDescriptionMutateEvent, x: $1_string_String): $1_token_event_store_CollectionDescriptionMutateEvent { + $1_token_event_store_CollectionDescriptionMutateEvent(s->$creator_addr, s->$collection_name, s->$old_description, x) +} +function $IsValid'$1_token_event_store_CollectionDescriptionMutateEvent'(s: $1_token_event_store_CollectionDescriptionMutateEvent): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$old_description) + && $IsValid'$1_string_String'(s->$new_description) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionDescriptionMutateEvent'(s1: $1_token_event_store_CollectionDescriptionMutateEvent, s2: $1_token_event_store_CollectionDescriptionMutateEvent): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$old_description, s2->$old_description) + && $IsEqual'$1_string_String'(s1->$new_description, s2->$new_description)} + +// struct token_event_store::CollectionMaxiumMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:62:5+169 +datatype $1_token_event_store_CollectionMaxiumMutate { + $1_token_event_store_CollectionMaxiumMutate($creator_addr: int, $collection_name: $1_string_String, $old_maximum: int, $new_maximum: int) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutate'_creator_addr(s: $1_token_event_store_CollectionMaxiumMutate, x: int): $1_token_event_store_CollectionMaxiumMutate { + $1_token_event_store_CollectionMaxiumMutate(x, s->$collection_name, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutate'_collection_name(s: $1_token_event_store_CollectionMaxiumMutate, x: $1_string_String): $1_token_event_store_CollectionMaxiumMutate { + $1_token_event_store_CollectionMaxiumMutate(s->$creator_addr, x, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutate'_old_maximum(s: $1_token_event_store_CollectionMaxiumMutate, x: int): $1_token_event_store_CollectionMaxiumMutate { + $1_token_event_store_CollectionMaxiumMutate(s->$creator_addr, s->$collection_name, x, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutate'_new_maximum(s: $1_token_event_store_CollectionMaxiumMutate, x: int): $1_token_event_store_CollectionMaxiumMutate { + $1_token_event_store_CollectionMaxiumMutate(s->$creator_addr, s->$collection_name, s->$old_maximum, x) +} +function $IsValid'$1_token_event_store_CollectionMaxiumMutate'(s: $1_token_event_store_CollectionMaxiumMutate): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'u64'(s->$old_maximum) + && $IsValid'u64'(s->$new_maximum) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionMaxiumMutate'(s1: $1_token_event_store_CollectionMaxiumMutate, s2: $1_token_event_store_CollectionMaxiumMutate): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'u64'(s1->$old_maximum, s2->$old_maximum) + && $IsEqual'u64'(s1->$new_maximum, s2->$new_maximum)} + +// struct token_event_store::CollectionMaxiumMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:53:5+174 +datatype $1_token_event_store_CollectionMaxiumMutateEvent { + $1_token_event_store_CollectionMaxiumMutateEvent($creator_addr: int, $collection_name: $1_string_String, $old_maximum: int, $new_maximum: int) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutateEvent'_creator_addr(s: $1_token_event_store_CollectionMaxiumMutateEvent, x: int): $1_token_event_store_CollectionMaxiumMutateEvent { + $1_token_event_store_CollectionMaxiumMutateEvent(x, s->$collection_name, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutateEvent'_collection_name(s: $1_token_event_store_CollectionMaxiumMutateEvent, x: $1_string_String): $1_token_event_store_CollectionMaxiumMutateEvent { + $1_token_event_store_CollectionMaxiumMutateEvent(s->$creator_addr, x, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutateEvent'_old_maximum(s: $1_token_event_store_CollectionMaxiumMutateEvent, x: int): $1_token_event_store_CollectionMaxiumMutateEvent { + $1_token_event_store_CollectionMaxiumMutateEvent(s->$creator_addr, s->$collection_name, x, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_CollectionMaxiumMutateEvent'_new_maximum(s: $1_token_event_store_CollectionMaxiumMutateEvent, x: int): $1_token_event_store_CollectionMaxiumMutateEvent { + $1_token_event_store_CollectionMaxiumMutateEvent(s->$creator_addr, s->$collection_name, s->$old_maximum, x) +} +function $IsValid'$1_token_event_store_CollectionMaxiumMutateEvent'(s: $1_token_event_store_CollectionMaxiumMutateEvent): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'u64'(s->$old_maximum) + && $IsValid'u64'(s->$new_maximum) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionMaxiumMutateEvent'(s1: $1_token_event_store_CollectionMaxiumMutateEvent, s2: $1_token_event_store_CollectionMaxiumMutateEvent): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'u64'(s1->$old_maximum, s2->$old_maximum) + && $IsEqual'u64'(s1->$new_maximum, s2->$new_maximum)} + +// struct token_event_store::CollectionUriMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:45:5+164 +datatype $1_token_event_store_CollectionUriMutate { + $1_token_event_store_CollectionUriMutate($creator_addr: int, $collection_name: $1_string_String, $old_uri: $1_string_String, $new_uri: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutate'_creator_addr(s: $1_token_event_store_CollectionUriMutate, x: int): $1_token_event_store_CollectionUriMutate { + $1_token_event_store_CollectionUriMutate(x, s->$collection_name, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutate'_collection_name(s: $1_token_event_store_CollectionUriMutate, x: $1_string_String): $1_token_event_store_CollectionUriMutate { + $1_token_event_store_CollectionUriMutate(s->$creator_addr, x, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutate'_old_uri(s: $1_token_event_store_CollectionUriMutate, x: $1_string_String): $1_token_event_store_CollectionUriMutate { + $1_token_event_store_CollectionUriMutate(s->$creator_addr, s->$collection_name, x, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutate'_new_uri(s: $1_token_event_store_CollectionUriMutate, x: $1_string_String): $1_token_event_store_CollectionUriMutate { + $1_token_event_store_CollectionUriMutate(s->$creator_addr, s->$collection_name, s->$old_uri, x) +} +function $IsValid'$1_token_event_store_CollectionUriMutate'(s: $1_token_event_store_CollectionUriMutate): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$old_uri) + && $IsValid'$1_string_String'(s->$new_uri) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionUriMutate'(s1: $1_token_event_store_CollectionUriMutate, s2: $1_token_event_store_CollectionUriMutate): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$old_uri, s2->$old_uri) + && $IsEqual'$1_string_String'(s1->$new_uri, s2->$new_uri)} + +// struct token_event_store::CollectionUriMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:36:5+169 +datatype $1_token_event_store_CollectionUriMutateEvent { + $1_token_event_store_CollectionUriMutateEvent($creator_addr: int, $collection_name: $1_string_String, $old_uri: $1_string_String, $new_uri: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutateEvent'_creator_addr(s: $1_token_event_store_CollectionUriMutateEvent, x: int): $1_token_event_store_CollectionUriMutateEvent { + $1_token_event_store_CollectionUriMutateEvent(x, s->$collection_name, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutateEvent'_collection_name(s: $1_token_event_store_CollectionUriMutateEvent, x: $1_string_String): $1_token_event_store_CollectionUriMutateEvent { + $1_token_event_store_CollectionUriMutateEvent(s->$creator_addr, x, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutateEvent'_old_uri(s: $1_token_event_store_CollectionUriMutateEvent, x: $1_string_String): $1_token_event_store_CollectionUriMutateEvent { + $1_token_event_store_CollectionUriMutateEvent(s->$creator_addr, s->$collection_name, x, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_CollectionUriMutateEvent'_new_uri(s: $1_token_event_store_CollectionUriMutateEvent, x: $1_string_String): $1_token_event_store_CollectionUriMutateEvent { + $1_token_event_store_CollectionUriMutateEvent(s->$creator_addr, s->$collection_name, s->$old_uri, x) +} +function $IsValid'$1_token_event_store_CollectionUriMutateEvent'(s: $1_token_event_store_CollectionUriMutateEvent): bool { + $IsValid'address'(s->$creator_addr) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$old_uri) + && $IsValid'$1_string_String'(s->$new_uri) +} +function {:inline} $IsEqual'$1_token_event_store_CollectionUriMutateEvent'(s1: $1_token_event_store_CollectionUriMutateEvent, s2: $1_token_event_store_CollectionUriMutateEvent): bool { + $IsEqual'address'(s1->$creator_addr, s2->$creator_addr) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$old_uri, s2->$old_uri) + && $IsEqual'$1_string_String'(s1->$new_uri, s2->$new_uri)} + +// struct token_event_store::DefaultPropertyMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:123:5+313 +datatype $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate($creator: int, $collection: $1_string_String, $token: $1_string_String, $keys: Vec ($1_string_String), $old_values: Vec ($1_option_Option'$1_property_map_PropertyValue'), $new_values: Vec ($1_property_map_PropertyValue)) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_creator(s: $1_token_event_store_DefaultPropertyMutate, x: int): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(x, s->$collection, s->$token, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_collection(s: $1_token_event_store_DefaultPropertyMutate, x: $1_string_String): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(s->$creator, x, s->$token, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_token(s: $1_token_event_store_DefaultPropertyMutate, x: $1_string_String): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(s->$creator, s->$collection, x, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_keys(s: $1_token_event_store_DefaultPropertyMutate, x: Vec ($1_string_String)): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(s->$creator, s->$collection, s->$token, x, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_old_values(s: $1_token_event_store_DefaultPropertyMutate, x: Vec ($1_option_Option'$1_property_map_PropertyValue')): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(s->$creator, s->$collection, s->$token, s->$keys, x, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutate'_new_values(s: $1_token_event_store_DefaultPropertyMutate, x: Vec ($1_property_map_PropertyValue)): $1_token_event_store_DefaultPropertyMutate { + $1_token_event_store_DefaultPropertyMutate(s->$creator, s->$collection, s->$token, s->$keys, s->$old_values, x) +} +function $IsValid'$1_token_event_store_DefaultPropertyMutate'(s: $1_token_event_store_DefaultPropertyMutate): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'vec'$1_string_String''(s->$keys) + && $IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''(s->$old_values) + && $IsValid'vec'$1_property_map_PropertyValue''(s->$new_values) +} +function {:inline} $IsEqual'$1_token_event_store_DefaultPropertyMutate'(s1: $1_token_event_store_DefaultPropertyMutate, s2: $1_token_event_store_DefaultPropertyMutate): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'vec'$1_string_String''(s1->$keys, s2->$keys) + && $IsEqual'vec'$1_option_Option'$1_property_map_PropertyValue'''(s1->$old_values, s2->$old_values) + && $IsEqual'vec'$1_property_map_PropertyValue''(s1->$new_values, s2->$new_values)} + +// struct token_event_store::DefaultPropertyMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:111:5+318 +datatype $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent($creator: int, $collection: $1_string_String, $token: $1_string_String, $keys: Vec ($1_string_String), $old_values: Vec ($1_option_Option'$1_property_map_PropertyValue'), $new_values: Vec ($1_property_map_PropertyValue)) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_creator(s: $1_token_event_store_DefaultPropertyMutateEvent, x: int): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(x, s->$collection, s->$token, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_collection(s: $1_token_event_store_DefaultPropertyMutateEvent, x: $1_string_String): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(s->$creator, x, s->$token, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_token(s: $1_token_event_store_DefaultPropertyMutateEvent, x: $1_string_String): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(s->$creator, s->$collection, x, s->$keys, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_keys(s: $1_token_event_store_DefaultPropertyMutateEvent, x: Vec ($1_string_String)): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(s->$creator, s->$collection, s->$token, x, s->$old_values, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_old_values(s: $1_token_event_store_DefaultPropertyMutateEvent, x: Vec ($1_option_Option'$1_property_map_PropertyValue')): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(s->$creator, s->$collection, s->$token, s->$keys, x, s->$new_values) +} +function {:inline} $Update'$1_token_event_store_DefaultPropertyMutateEvent'_new_values(s: $1_token_event_store_DefaultPropertyMutateEvent, x: Vec ($1_property_map_PropertyValue)): $1_token_event_store_DefaultPropertyMutateEvent { + $1_token_event_store_DefaultPropertyMutateEvent(s->$creator, s->$collection, s->$token, s->$keys, s->$old_values, x) +} +function $IsValid'$1_token_event_store_DefaultPropertyMutateEvent'(s: $1_token_event_store_DefaultPropertyMutateEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'vec'$1_string_String''(s->$keys) + && $IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''(s->$old_values) + && $IsValid'vec'$1_property_map_PropertyValue''(s->$new_values) +} +function {:inline} $IsEqual'$1_token_event_store_DefaultPropertyMutateEvent'(s1: $1_token_event_store_DefaultPropertyMutateEvent, s2: $1_token_event_store_DefaultPropertyMutateEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'vec'$1_string_String''(s1->$keys, s2->$keys) + && $IsEqual'vec'$1_option_Option'$1_property_map_PropertyValue'''(s1->$old_values, s2->$old_values) + && $IsEqual'vec'$1_property_map_PropertyValue''(s1->$new_values, s2->$new_values)} + +// struct token_event_store::DescriptionMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:144:5+191 +datatype $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_description: $1_string_String, $new_description: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutate'_creator(s: $1_token_event_store_DescriptionMutate, x: int): $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate(x, s->$collection, s->$token, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutate'_collection(s: $1_token_event_store_DescriptionMutate, x: $1_string_String): $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate(s->$creator, x, s->$token, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutate'_token(s: $1_token_event_store_DescriptionMutate, x: $1_string_String): $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate(s->$creator, s->$collection, x, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutate'_old_description(s: $1_token_event_store_DescriptionMutate, x: $1_string_String): $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate(s->$creator, s->$collection, s->$token, x, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutate'_new_description(s: $1_token_event_store_DescriptionMutate, x: $1_string_String): $1_token_event_store_DescriptionMutate { + $1_token_event_store_DescriptionMutate(s->$creator, s->$collection, s->$token, s->$old_description, x) +} +function $IsValid'$1_token_event_store_DescriptionMutate'(s: $1_token_event_store_DescriptionMutate): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'$1_string_String'(s->$old_description) + && $IsValid'$1_string_String'(s->$new_description) +} +function {:inline} $IsEqual'$1_token_event_store_DescriptionMutate'(s1: $1_token_event_store_DescriptionMutate, s2: $1_token_event_store_DescriptionMutate): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'$1_string_String'(s1->$old_description, s2->$old_description) + && $IsEqual'$1_string_String'(s1->$new_description, s2->$new_description)} + +// struct token_event_store::DescriptionMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:134:5+196 +datatype $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_description: $1_string_String, $new_description: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutateEvent'_creator(s: $1_token_event_store_DescriptionMutateEvent, x: int): $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent(x, s->$collection, s->$token, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutateEvent'_collection(s: $1_token_event_store_DescriptionMutateEvent, x: $1_string_String): $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent(s->$creator, x, s->$token, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutateEvent'_token(s: $1_token_event_store_DescriptionMutateEvent, x: $1_string_String): $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent(s->$creator, s->$collection, x, s->$old_description, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutateEvent'_old_description(s: $1_token_event_store_DescriptionMutateEvent, x: $1_string_String): $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent(s->$creator, s->$collection, s->$token, x, s->$new_description) +} +function {:inline} $Update'$1_token_event_store_DescriptionMutateEvent'_new_description(s: $1_token_event_store_DescriptionMutateEvent, x: $1_string_String): $1_token_event_store_DescriptionMutateEvent { + $1_token_event_store_DescriptionMutateEvent(s->$creator, s->$collection, s->$token, s->$old_description, x) +} +function $IsValid'$1_token_event_store_DescriptionMutateEvent'(s: $1_token_event_store_DescriptionMutateEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'$1_string_String'(s->$old_description) + && $IsValid'$1_string_String'(s->$new_description) +} +function {:inline} $IsEqual'$1_token_event_store_DescriptionMutateEvent'(s1: $1_token_event_store_DescriptionMutateEvent, s2: $1_token_event_store_DescriptionMutateEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'$1_string_String'(s1->$old_description, s2->$old_description) + && $IsEqual'$1_string_String'(s1->$new_description, s2->$new_description)} + +// struct token_event_store::MaximumMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:190:5+173 +datatype $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_maximum: int, $new_maximum: int) +} +function {:inline} $Update'$1_token_event_store_MaximumMutate'_creator(s: $1_token_event_store_MaximumMutate, x: int): $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate(x, s->$collection, s->$token, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaximumMutate'_collection(s: $1_token_event_store_MaximumMutate, x: $1_string_String): $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate(s->$creator, x, s->$token, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaximumMutate'_token(s: $1_token_event_store_MaximumMutate, x: $1_string_String): $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate(s->$creator, s->$collection, x, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaximumMutate'_old_maximum(s: $1_token_event_store_MaximumMutate, x: int): $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate(s->$creator, s->$collection, s->$token, x, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaximumMutate'_new_maximum(s: $1_token_event_store_MaximumMutate, x: int): $1_token_event_store_MaximumMutate { + $1_token_event_store_MaximumMutate(s->$creator, s->$collection, s->$token, s->$old_maximum, x) +} +function $IsValid'$1_token_event_store_MaximumMutate'(s: $1_token_event_store_MaximumMutate): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'u64'(s->$old_maximum) + && $IsValid'u64'(s->$new_maximum) +} +function {:inline} $IsEqual'$1_token_event_store_MaximumMutate'(s1: $1_token_event_store_MaximumMutate, s2: $1_token_event_store_MaximumMutate): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'u64'(s1->$old_maximum, s2->$old_maximum) + && $IsEqual'u64'(s1->$new_maximum, s2->$new_maximum)} + +// struct token_event_store::MaxiumMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:180:5+177 +datatype $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_maximum: int, $new_maximum: int) +} +function {:inline} $Update'$1_token_event_store_MaxiumMutateEvent'_creator(s: $1_token_event_store_MaxiumMutateEvent, x: int): $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent(x, s->$collection, s->$token, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaxiumMutateEvent'_collection(s: $1_token_event_store_MaxiumMutateEvent, x: $1_string_String): $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent(s->$creator, x, s->$token, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaxiumMutateEvent'_token(s: $1_token_event_store_MaxiumMutateEvent, x: $1_string_String): $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent(s->$creator, s->$collection, x, s->$old_maximum, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaxiumMutateEvent'_old_maximum(s: $1_token_event_store_MaxiumMutateEvent, x: int): $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent(s->$creator, s->$collection, s->$token, x, s->$new_maximum) +} +function {:inline} $Update'$1_token_event_store_MaxiumMutateEvent'_new_maximum(s: $1_token_event_store_MaxiumMutateEvent, x: int): $1_token_event_store_MaxiumMutateEvent { + $1_token_event_store_MaxiumMutateEvent(s->$creator, s->$collection, s->$token, s->$old_maximum, x) +} +function $IsValid'$1_token_event_store_MaxiumMutateEvent'(s: $1_token_event_store_MaxiumMutateEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'u64'(s->$old_maximum) + && $IsValid'u64'(s->$new_maximum) +} +function {:inline} $IsEqual'$1_token_event_store_MaxiumMutateEvent'(s1: $1_token_event_store_MaxiumMutateEvent, s2: $1_token_event_store_MaxiumMutateEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'u64'(s1->$old_maximum, s2->$old_maximum) + && $IsEqual'u64'(s1->$new_maximum, s2->$new_maximum)} + +// struct token_event_store::OptInTransfer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:81:5+162 +datatype $1_token_event_store_OptInTransfer { + $1_token_event_store_OptInTransfer($account_address: int, $opt_in: bool) +} +function {:inline} $Update'$1_token_event_store_OptInTransfer'_account_address(s: $1_token_event_store_OptInTransfer, x: int): $1_token_event_store_OptInTransfer { + $1_token_event_store_OptInTransfer(x, s->$opt_in) +} +function {:inline} $Update'$1_token_event_store_OptInTransfer'_opt_in(s: $1_token_event_store_OptInTransfer, x: bool): $1_token_event_store_OptInTransfer { + $1_token_event_store_OptInTransfer(s->$account_address, x) +} +function $IsValid'$1_token_event_store_OptInTransfer'(s: $1_token_event_store_OptInTransfer): bool { + $IsValid'address'(s->$account_address) + && $IsValid'bool'(s->$opt_in) +} +function {:inline} $IsEqual'$1_token_event_store_OptInTransfer'(s1: $1_token_event_store_OptInTransfer, s2: $1_token_event_store_OptInTransfer): bool { + s1 == s2 +} + +// struct token_event_store::OptInTransferEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:74:5+133 +datatype $1_token_event_store_OptInTransferEvent { + $1_token_event_store_OptInTransferEvent($opt_in: bool) +} +function {:inline} $Update'$1_token_event_store_OptInTransferEvent'_opt_in(s: $1_token_event_store_OptInTransferEvent, x: bool): $1_token_event_store_OptInTransferEvent { + $1_token_event_store_OptInTransferEvent(x) +} +function $IsValid'$1_token_event_store_OptInTransferEvent'(s: $1_token_event_store_OptInTransferEvent): bool { + $IsValid'bool'(s->$opt_in) +} +function {:inline} $IsEqual'$1_token_event_store_OptInTransferEvent'(s1: $1_token_event_store_OptInTransferEvent, s2: $1_token_event_store_OptInTransferEvent): bool { + s1 == s2 +} + +// struct token_event_store::RoyaltyMutate at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:167:5+351 +datatype $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_royalty_numerator: int, $old_royalty_denominator: int, $old_royalty_payee_addr: int, $new_royalty_numerator: int, $new_royalty_denominator: int, $new_royalty_payee_addr: int) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_creator(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(x, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_collection(s: $1_token_event_store_RoyaltyMutate, x: $1_string_String): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, x, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_token(s: $1_token_event_store_RoyaltyMutate, x: $1_string_String): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, x, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_old_royalty_numerator(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, x, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_old_royalty_denominator(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, x, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_old_royalty_payee_addr(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, x, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_new_royalty_numerator(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, x, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_new_royalty_denominator(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, x, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutate'_new_royalty_payee_addr(s: $1_token_event_store_RoyaltyMutate, x: int): $1_token_event_store_RoyaltyMutate { + $1_token_event_store_RoyaltyMutate(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, x) +} +function $IsValid'$1_token_event_store_RoyaltyMutate'(s: $1_token_event_store_RoyaltyMutate): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'u64'(s->$old_royalty_numerator) + && $IsValid'u64'(s->$old_royalty_denominator) + && $IsValid'address'(s->$old_royalty_payee_addr) + && $IsValid'u64'(s->$new_royalty_numerator) + && $IsValid'u64'(s->$new_royalty_denominator) + && $IsValid'address'(s->$new_royalty_payee_addr) +} +function {:inline} $IsEqual'$1_token_event_store_RoyaltyMutate'(s1: $1_token_event_store_RoyaltyMutate, s2: $1_token_event_store_RoyaltyMutate): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'u64'(s1->$old_royalty_numerator, s2->$old_royalty_numerator) + && $IsEqual'u64'(s1->$old_royalty_denominator, s2->$old_royalty_denominator) + && $IsEqual'address'(s1->$old_royalty_payee_addr, s2->$old_royalty_payee_addr) + && $IsEqual'u64'(s1->$new_royalty_numerator, s2->$new_royalty_numerator) + && $IsEqual'u64'(s1->$new_royalty_denominator, s2->$new_royalty_denominator) + && $IsEqual'address'(s1->$new_royalty_payee_addr, s2->$new_royalty_payee_addr)} + +// struct token_event_store::RoyaltyMutateEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:153:5+356 +datatype $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_royalty_numerator: int, $old_royalty_denominator: int, $old_royalty_payee_addr: int, $new_royalty_numerator: int, $new_royalty_denominator: int, $new_royalty_payee_addr: int) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_creator(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(x, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_collection(s: $1_token_event_store_RoyaltyMutateEvent, x: $1_string_String): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, x, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_token(s: $1_token_event_store_RoyaltyMutateEvent, x: $1_string_String): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, x, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_old_royalty_numerator(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, x, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_old_royalty_denominator(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, x, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_old_royalty_payee_addr(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, x, s->$new_royalty_numerator, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_new_royalty_numerator(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, x, s->$new_royalty_denominator, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_new_royalty_denominator(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, x, s->$new_royalty_payee_addr) +} +function {:inline} $Update'$1_token_event_store_RoyaltyMutateEvent'_new_royalty_payee_addr(s: $1_token_event_store_RoyaltyMutateEvent, x: int): $1_token_event_store_RoyaltyMutateEvent { + $1_token_event_store_RoyaltyMutateEvent(s->$creator, s->$collection, s->$token, s->$old_royalty_numerator, s->$old_royalty_denominator, s->$old_royalty_payee_addr, s->$new_royalty_numerator, s->$new_royalty_denominator, x) +} +function $IsValid'$1_token_event_store_RoyaltyMutateEvent'(s: $1_token_event_store_RoyaltyMutateEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'u64'(s->$old_royalty_numerator) + && $IsValid'u64'(s->$old_royalty_denominator) + && $IsValid'address'(s->$old_royalty_payee_addr) + && $IsValid'u64'(s->$new_royalty_numerator) + && $IsValid'u64'(s->$new_royalty_denominator) + && $IsValid'address'(s->$new_royalty_payee_addr) +} +function {:inline} $IsEqual'$1_token_event_store_RoyaltyMutateEvent'(s1: $1_token_event_store_RoyaltyMutateEvent, s2: $1_token_event_store_RoyaltyMutateEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'u64'(s1->$old_royalty_numerator, s2->$old_royalty_numerator) + && $IsEqual'u64'(s1->$old_royalty_denominator, s2->$old_royalty_denominator) + && $IsEqual'address'(s1->$old_royalty_payee_addr, s2->$old_royalty_payee_addr) + && $IsEqual'u64'(s1->$new_royalty_numerator, s2->$new_royalty_numerator) + && $IsEqual'u64'(s1->$new_royalty_denominator, s2->$new_royalty_denominator) + && $IsEqual'address'(s1->$new_royalty_payee_addr, s2->$new_royalty_payee_addr)} + +// struct token_event_store::TokenEventStoreV1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:198:5+885 +datatype $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1($collection_uri_mutate_events: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent', $collection_maximum_mutate_events: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent', $collection_description_mutate_events: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent', $opt_in_events: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent', $uri_mutate_events: $1_event_EventHandle'$1_token_event_store_UriMutationEvent', $default_property_mutate_events: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent', $description_mutate_events: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent', $royalty_mutate_events: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent', $maximum_mutate_events: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent', $extension: $1_option_Option'$1_any_Any') +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_collection_uri_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(x, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_collection_maximum_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, x, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_collection_description_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, x, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_opt_in_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, x, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_uri_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, x, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_default_property_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, x, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_description_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, x, s->$royalty_mutate_events, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_royalty_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, x, s->$maximum_mutate_events, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_maximum_mutate_events(s: $1_token_event_store_TokenEventStoreV1, x: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, x, s->$extension) +} +function {:inline} $Update'$1_token_event_store_TokenEventStoreV1'_extension(s: $1_token_event_store_TokenEventStoreV1, x: $1_option_Option'$1_any_Any'): $1_token_event_store_TokenEventStoreV1 { + $1_token_event_store_TokenEventStoreV1(s->$collection_uri_mutate_events, s->$collection_maximum_mutate_events, s->$collection_description_mutate_events, s->$opt_in_events, s->$uri_mutate_events, s->$default_property_mutate_events, s->$description_mutate_events, s->$royalty_mutate_events, s->$maximum_mutate_events, x) +} +function $IsValid'$1_token_event_store_TokenEventStoreV1'(s: $1_token_event_store_TokenEventStoreV1): bool { + $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(s->$collection_uri_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(s->$collection_maximum_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(s->$collection_description_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(s->$opt_in_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(s->$uri_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(s->$default_property_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(s->$description_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(s->$royalty_mutate_events) + && $IsValid'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(s->$maximum_mutate_events) + && $IsValid'$1_option_Option'$1_any_Any''(s->$extension) +} +function {:inline} $IsEqual'$1_token_event_store_TokenEventStoreV1'(s1: $1_token_event_store_TokenEventStoreV1, s2: $1_token_event_store_TokenEventStoreV1): bool { + $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent''(s1->$collection_uri_mutate_events, s2->$collection_uri_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent''(s1->$collection_maximum_mutate_events, s2->$collection_maximum_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent''(s1->$collection_description_mutate_events, s2->$collection_description_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_OptInTransferEvent''(s1->$opt_in_events, s2->$opt_in_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_UriMutationEvent''(s1->$uri_mutate_events, s2->$uri_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent''(s1->$default_property_mutate_events, s2->$default_property_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent''(s1->$description_mutate_events, s2->$description_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent''(s1->$royalty_mutate_events, s2->$royalty_mutate_events) + && $IsEqual'$1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent''(s1->$maximum_mutate_events, s2->$maximum_mutate_events) + && $IsEqual'$1_option_Option'$1_any_Any''(s1->$extension, s2->$extension)} +var $1_token_event_store_TokenEventStoreV1_$memory: $Memory $1_token_event_store_TokenEventStoreV1; + +// struct token_event_store::UriMutation at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:102:5+169 +datatype $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_uri: $1_string_String, $new_uri: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_UriMutation'_creator(s: $1_token_event_store_UriMutation, x: int): $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation(x, s->$collection, s->$token, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutation'_collection(s: $1_token_event_store_UriMutation, x: $1_string_String): $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation(s->$creator, x, s->$token, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutation'_token(s: $1_token_event_store_UriMutation, x: $1_string_String): $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation(s->$creator, s->$collection, x, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutation'_old_uri(s: $1_token_event_store_UriMutation, x: $1_string_String): $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation(s->$creator, s->$collection, s->$token, x, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutation'_new_uri(s: $1_token_event_store_UriMutation, x: $1_string_String): $1_token_event_store_UriMutation { + $1_token_event_store_UriMutation(s->$creator, s->$collection, s->$token, s->$old_uri, x) +} +function $IsValid'$1_token_event_store_UriMutation'(s: $1_token_event_store_UriMutation): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'$1_string_String'(s->$old_uri) + && $IsValid'$1_string_String'(s->$new_uri) +} +function {:inline} $IsEqual'$1_token_event_store_UriMutation'(s1: $1_token_event_store_UriMutation, s2: $1_token_event_store_UriMutation): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'$1_string_String'(s1->$old_uri, s2->$old_uri) + && $IsEqual'$1_string_String'(s1->$new_uri, s2->$new_uri)} + +// struct token_event_store::UriMutationEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:92:5+174 +datatype $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent($creator: int, $collection: $1_string_String, $token: $1_string_String, $old_uri: $1_string_String, $new_uri: $1_string_String) +} +function {:inline} $Update'$1_token_event_store_UriMutationEvent'_creator(s: $1_token_event_store_UriMutationEvent, x: int): $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent(x, s->$collection, s->$token, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutationEvent'_collection(s: $1_token_event_store_UriMutationEvent, x: $1_string_String): $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent(s->$creator, x, s->$token, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutationEvent'_token(s: $1_token_event_store_UriMutationEvent, x: $1_string_String): $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent(s->$creator, s->$collection, x, s->$old_uri, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutationEvent'_old_uri(s: $1_token_event_store_UriMutationEvent, x: $1_string_String): $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent(s->$creator, s->$collection, s->$token, x, s->$new_uri) +} +function {:inline} $Update'$1_token_event_store_UriMutationEvent'_new_uri(s: $1_token_event_store_UriMutationEvent, x: $1_string_String): $1_token_event_store_UriMutationEvent { + $1_token_event_store_UriMutationEvent(s->$creator, s->$collection, s->$token, s->$old_uri, x) +} +function $IsValid'$1_token_event_store_UriMutationEvent'(s: $1_token_event_store_UriMutationEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$token) + && $IsValid'$1_string_String'(s->$old_uri) + && $IsValid'$1_string_String'(s->$new_uri) +} +function {:inline} $IsEqual'$1_token_event_store_UriMutationEvent'(s1: $1_token_event_store_UriMutationEvent, s2: $1_token_event_store_UriMutationEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$token, s2->$token) + && $IsEqual'$1_string_String'(s1->$old_uri, s2->$old_uri) + && $IsEqual'$1_string_String'(s1->$new_uri, s2->$new_uri)} + +// fun token_event_store::emit_collection_description_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1076 +procedure {:inline 1} $1_token_event_store_emit_collection_description_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionDescriptionMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionDescriptionMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionDescriptionMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionDescriptionMutateEvent': $1_token_event_store_CollectionDescriptionMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$at(190,8838,8839)"} true; + assume {:print "$track_local(112,0,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,1):", $t1} $t1 == $t1; + + // trace_local[old_description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,2):", $t2} $t2 == $t2; + + // trace_local[new_description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:261:27+27 + assume {:print "$at(190,9096,9123)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9096,9123)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionDescriptionMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:260:21+198 + assume {:print "$at(190,9035,9233)"} true; + $t10 := $1_token_event_store_CollectionDescriptionMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:260:13+5 + assume {:print "$track_local(112,0,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:266:9+37 + assume {:print "$at(190,9243,9280)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,9243,9280)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:70+27 + assume {:print "$at(190,9351,9378)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9351,9378)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,9314,9331)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,0,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:13+47 + assume {:print "$at(190,9393,9440)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,9393,9440)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:9+354 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:271:54+7 + assume {:print "$at(190,9568,9575)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:271:35+27 + assume {:print "$at(190,9549,9576)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9549,9576)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionDescriptionMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:270:17+233 + assume {:print "$at(190,9485,9718)"} true; + $t18 := $1_token_event_store_CollectionDescriptionMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:269:13+276 + assume {:print "$at(190,9456,9732)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:269:13+276 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:276:14+1 + assume {:print "$at(190,9732,9733)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:9+354 + assume {:print "$at(190,9389,9743)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:279:18+17 + assume {:print "$at(190,9823,9840)"} true; +L2: + + // $t19 := borrow_field.collection_description_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:279:13+59 + assume {:print "$at(190,9818,9877)"} true; + $t19 := $ChildMutation($t15, 2, $Dereference($t15)->$collection_description_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + assume {:print "$at(190,9753,9907)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + + // write_back[Reference($t15).collection_description_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_description_mutate_events($Dereference($t15), $Dereference($t19))); + + // pack_ref_deep($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 + assume {:print "$at(190,9913,9914)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 + assume {:print "$at(190,9913,9914)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 + assume {:print "$at(190,9913,9914)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_collection_description_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1076 +procedure {:timeLimit 80} $1_token_event_store_emit_collection_description_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionDescriptionMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionDescriptionMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionDescriptionMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionDescriptionMutateEvent': $1_token_event_store_CollectionDescriptionMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#814: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#815: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$at(190,8838,8839)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // @815 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$at(190,8838,8839)"} true; + $1_account_Account_$memory#815 := $1_account_Account_$memory; + + // @814 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#814 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,1):", $t1} $t1 == $t1; + + // trace_local[old_description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,2):", $t2} $t2 == $t2; + + // trace_local[new_description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:259:5+1 + assume {:print "$track_local(112,0,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:261:27+27 + assume {:print "$at(190,9096,9123)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9096,9123)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionDescriptionMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:260:21+198 + assume {:print "$at(190,9035,9233)"} true; + $t10 := $1_token_event_store_CollectionDescriptionMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:260:13+5 + assume {:print "$track_local(112,0,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:266:9+37 + assume {:print "$at(190,9243,9280)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,9243,9280)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:70+27 + assume {:print "$at(190,9351,9378)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9351,9378)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,9314,9331)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:267:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,0,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:13+47 + assume {:print "$at(190,9393,9440)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,9393,9440)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:9+354 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:271:54+7 + assume {:print "$at(190,9568,9575)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:271:35+27 + assume {:print "$at(190,9549,9576)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,9549,9576)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,0):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionDescriptionMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:270:17+233 + assume {:print "$at(190,9485,9718)"} true; + $t18 := $1_token_event_store_CollectionDescriptionMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:269:13+276 + assume {:print "$at(190,9456,9732)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:269:13+276 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:276:14+1 + assume {:print "$at(190,9732,9733)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:268:9+354 + assume {:print "$at(190,9389,9743)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:279:18+17 + assume {:print "$at(190,9823,9840)"} true; +L2: + + // $t19 := borrow_field.collection_description_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:279:13+59 + assume {:print "$at(190,9818,9877)"} true; + $t19 := $ChildMutation($t15, 2, $Dereference($t15)->$collection_description_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + assume {:print "$at(190,9753,9907)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + + // write_back[Reference($t15).collection_description_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_description_mutate_events($Dereference($t15), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t15))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t15)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:278:9+154 + assume {:print "$at(190,9753,9907)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 + assume {:print "$at(190,9913,9914)"} true; +L3: + + // assert Not(And(Not(exists[@814]($t6)), Not(exists[@815]($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && !$ResourceExists($1_account_Account_$memory#815, $t6)); + + // assert Not(And(Not(exists[@814]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@814]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:282:5+1 + assume {:print "$at(190,9913,9914)"} true; +L4: + + // assert Or(Or(And(Not(exists[@814]($t6)), Not(exists[@815]($t6))), And(Not(exists[@814]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))), And(Not(exists[@814]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:39:5+192 + assume {:print "$at(191,1528,1720)"} true; + assert {:msg "assert_failed(191,1528,1720): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && !$ResourceExists($1_account_Account_$memory#815, $t6)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#814, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:39:5+192 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_collection_maximum_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1023 +procedure {:inline 1} $1_token_event_store_emit_collection_maximum_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionMaxiumMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionMaxiumMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionMaxiumMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionMaxiumMutateEvent': $1_token_event_store_CollectionMaxiumMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$at(190,9971,9972)"} true; + assume {:print "$track_local(112,1,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,1):", $t1} $t1 == $t1; + + // trace_local[old_maximum]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,2):", $t2} $t2 == $t2; + + // trace_local[new_maximum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:287:27+27 + assume {:print "$at(190,10206,10233)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10206,10233)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionMaxiumMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:286:21+185 + assume {:print "$at(190,10150,10335)"} true; + $t10 := $1_token_event_store_CollectionMaxiumMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:286:13+5 + assume {:print "$track_local(112,1,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:292:9+37 + assume {:print "$at(190,10345,10382)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,10345,10382)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:70+27 + assume {:print "$at(190,10453,10480)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10453,10480)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,10416,10433)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,1,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:13+47 + assume {:print "$at(190,10495,10542)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,10495,10542)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:9+341 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:297:54+7 + assume {:print "$at(190,10665,10672)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:297:35+27 + assume {:print "$at(190,10646,10673)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10646,10673)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionMaxiumMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:296:17+220 + assume {:print "$at(190,10587,10807)"} true; + $t18 := $1_token_event_store_CollectionMaxiumMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:295:13+263 + assume {:print "$at(190,10558,10821)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:295:13+263 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:302:14+1 + assume {:print "$at(190,10821,10822)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:9+341 + assume {:print "$at(190,10491,10832)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:305:18+17 + assume {:print "$at(190,10907,10924)"} true; +L2: + + // $t19 := borrow_field.collection_maximum_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:305:13+55 + assume {:print "$at(190,10902,10957)"} true; + $t19 := $ChildMutation($t15, 1, $Dereference($t15)->$collection_maximum_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + assume {:print "$at(190,10842,10987)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + + // write_back[Reference($t15).collection_maximum_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_maximum_mutate_events($Dereference($t15), $Dereference($t19))); + + // pack_ref_deep($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 + assume {:print "$at(190,10993,10994)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 + assume {:print "$at(190,10993,10994)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 + assume {:print "$at(190,10993,10994)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_collection_maximum_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1023 +procedure {:timeLimit 80} $1_token_event_store_emit_collection_maximum_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionMaxiumMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionMaxiumMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionMaxiumMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $t3: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionMaxiumMutateEvent': $1_token_event_store_CollectionMaxiumMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_event_store_TokenEventStoreV1_$memory#818: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#819: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$at(190,9971,9972)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume $IsValid'u64'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // @819 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$at(190,9971,9972)"} true; + $1_account_Account_$memory#819 := $1_account_Account_$memory; + + // @818 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#818 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,1):", $t1} $t1 == $t1; + + // trace_local[old_maximum]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,2):", $t2} $t2 == $t2; + + // trace_local[new_maximum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:285:5+1 + assume {:print "$track_local(112,1,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:287:27+27 + assume {:print "$at(190,10206,10233)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10206,10233)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionMaxiumMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:286:21+185 + assume {:print "$at(190,10150,10335)"} true; + $t10 := $1_token_event_store_CollectionMaxiumMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:286:13+5 + assume {:print "$track_local(112,1,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:292:9+37 + assume {:print "$at(190,10345,10382)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,10345,10382)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:70+27 + assume {:print "$at(190,10453,10480)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10453,10480)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,10416,10433)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:293:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,1,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:13+47 + assume {:print "$at(190,10495,10542)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,10495,10542)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:9+341 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:297:54+7 + assume {:print "$at(190,10665,10672)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:297:35+27 + assume {:print "$at(190,10646,10673)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,10646,10673)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,1):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionMaxiumMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:296:17+220 + assume {:print "$at(190,10587,10807)"} true; + $t18 := $1_token_event_store_CollectionMaxiumMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:295:13+263 + assume {:print "$at(190,10558,10821)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:295:13+263 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:302:14+1 + assume {:print "$at(190,10821,10822)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:294:9+341 + assume {:print "$at(190,10491,10832)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:305:18+17 + assume {:print "$at(190,10907,10924)"} true; +L2: + + // $t19 := borrow_field.collection_maximum_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:305:13+55 + assume {:print "$at(190,10902,10957)"} true; + $t19 := $ChildMutation($t15, 1, $Dereference($t15)->$collection_maximum_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + assume {:print "$at(190,10842,10987)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + + // write_back[Reference($t15).collection_maximum_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_maximum_mutate_events($Dereference($t15), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t15))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t15)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:304:9+145 + assume {:print "$at(190,10842,10987)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 + assume {:print "$at(190,10993,10994)"} true; +L3: + + // assert Not(And(Not(exists[@818]($t6)), Not(exists[@819]($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && !$ResourceExists($1_account_Account_$memory#819, $t6)); + + // assert Not(And(Not(exists[@818]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@818]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:308:5+1 + assume {:print "$at(190,10993,10994)"} true; +L4: + + // assert Or(Or(And(Not(exists[@818]($t6)), Not(exists[@819]($t6))), And(Not(exists[@818]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))), And(Not(exists[@818]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:43:5+174 + assume {:print "$at(191,1726,1900)"} true; + assert {:msg "assert_failed(191,1726,1900): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && !$ResourceExists($1_account_Account_$memory#819, $t6)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#818, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:43:5+174 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_collection_uri_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+988 +procedure {:inline 1} $1_token_event_store_emit_collection_uri_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionUriMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionUriMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionUriMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionUriMutateEvent': $1_token_event_store_CollectionUriMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$at(190,7789,7790)"} true; + assume {:print "$track_local(112,2,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,1):", $t1} $t1 == $t1; + + // trace_local[old_uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,2):", $t2} $t2 == $t2; + + // trace_local[new_uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:235:27+27 + assume {:print "$at(190,8015,8042)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8015,8042)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionUriMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:234:21+174 + assume {:print "$at(190,7962,8136)"} true; + $t10 := $1_token_event_store_CollectionUriMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:234:13+5 + assume {:print "$track_local(112,2,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:240:9+37 + assume {:print "$at(190,8146,8183)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,8146,8183)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:70+27 + assume {:print "$at(190,8254,8281)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8254,8281)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,8217,8234)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,2,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:13+47 + assume {:print "$at(190,8296,8343)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,8296,8343)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:9+330 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:245:54+7 + assume {:print "$at(190,8463,8470)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:245:35+27 + assume {:print "$at(190,8444,8471)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8444,8471)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionUriMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:244:17+209 + assume {:print "$at(190,8388,8597)"} true; + $t18 := $1_token_event_store_CollectionUriMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:243:13+252 + assume {:print "$at(190,8359,8611)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:243:13+252 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:250:14+1 + assume {:print "$at(190,8611,8612)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:9+330 + assume {:print "$at(190,8292,8622)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:253:18+17 + assume {:print "$at(190,8694,8711)"} true; +L2: + + // $t19 := borrow_field.collection_uri_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:253:13+51 + assume {:print "$at(190,8689,8740)"} true; + $t19 := $ChildMutation($t15, 0, $Dereference($t15)->$collection_uri_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + assume {:print "$at(190,8632,8770)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + + // write_back[Reference($t15).collection_uri_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_uri_mutate_events($Dereference($t15), $Dereference($t19))); + + // pack_ref_deep($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 + assume {:print "$at(190,8776,8777)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 + assume {:print "$at(190,8776,8777)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 + assume {:print "$at(190,8776,8777)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_collection_uri_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+988 +procedure {:timeLimit 80} $1_token_event_store_emit_collection_uri_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String) returns () +{ + // declare local variables + var $t4: $1_token_event_store_CollectionUriMutateEvent; + var $t5: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t6: int; + var $t7: $1_account_Account; + var $t8: int; + var $t9: int; + var $t10: $1_token_event_store_CollectionUriMutateEvent; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t16: bool; + var $t17: int; + var $t18: $1_token_event_store_CollectionUriMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_CollectionUriMutateEvent': $1_token_event_store_CollectionUriMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#822: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#823: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$at(190,7789,7790)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // @823 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$at(190,7789,7790)"} true; + $1_account_Account_$memory#823 := $1_account_Account_$memory; + + // @822 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#822 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,1):", $t1} $t1 == $t1; + + // trace_local[old_uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,2):", $t2} $t2 == $t2; + + // trace_local[new_uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:233:5+1 + assume {:print "$track_local(112,2,3):", $t3} $t3 == $t3; + + // $t8 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:235:27+27 + assume {:print "$at(190,8015,8042)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8015,8042)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := pack token_event_store::CollectionUriMutateEvent($t8, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:234:21+174 + assume {:print "$at(190,7962,8136)"} true; + $t10 := $1_token_event_store_CollectionUriMutateEvent($t8, $t1, $t2, $t3); + + // trace_local[event]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:234:13+5 + assume {:print "$track_local(112,2,4):", $t10} $t10 == $t10; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:240:9+37 + assume {:print "$at(190,8146,8183)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,8146,8183)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:70+27 + assume {:print "$at(190,8254,8281)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8254,8281)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t15 := borrow_global($t14) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,8217,8234)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token_event_store]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:241:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t15); + assume {:print "$track_local(112,2,5):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t16 := features::module_event_migration_enabled() on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:13+47 + assume {:print "$at(190,8296,8343)"} true; + call $t16 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,8296,8343)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // if ($t16) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:9+330 + if ($t16) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:245:54+7 + assume {:print "$at(190,8463,8470)"} true; +L1: + + // $t17 := signer::address_of($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:245:35+27 + assume {:print "$at(190,8444,8471)"} true; + call $t17 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,8444,8471)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(112,2):", $t9} $t9 == $t9; + goto L4; + } + + // $t18 := pack token_event_store::CollectionUriMutate($t17, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:244:17+209 + assume {:print "$at(190,8388,8597)"} true; + $t18 := $1_token_event_store_CollectionUriMutate($t17, $t1, $t2, $t3); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:243:13+252 + assume {:print "$at(190,8359,8611)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:243:13+252 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:250:14+1 + assume {:print "$at(190,8611,8612)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:242:9+330 + assume {:print "$at(190,8292,8622)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:253:18+17 + assume {:print "$at(190,8694,8711)"} true; +L2: + + // $t19 := borrow_field.collection_uri_mutate_events($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:253:13+51 + assume {:print "$at(190,8689,8740)"} true; + $t19 := $ChildMutation($t15, 0, $Dereference($t15)->$collection_uri_mutate_events); + + // opaque begin: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + assume {:print "$at(190,8632,8770)"} true; + + // opaque end: event::emit_event($t19, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + + // write_back[Reference($t15).collection_uri_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + $t15 := $UpdateMutation($t15, $Update'$1_token_event_store_TokenEventStoreV1'_collection_uri_mutate_events($Dereference($t15), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t15))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t15)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:252:9+138 + assume {:print "$at(190,8632,8770)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 + assume {:print "$at(190,8776,8777)"} true; +L3: + + // assert Not(And(Not(exists[@822]($t6)), Not(exists[@823]($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && !$ResourceExists($1_account_Account_$memory#823, $t6)); + + // assert Not(And(Not(exists[@822]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@822]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:256:5+1 + assume {:print "$at(190,8776,8777)"} true; +L4: + + // assert Or(Or(And(Not(exists[@822]($t6)), Not(exists[@823]($t6))), And(Not(exists[@822]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))), And(Not(exists[@822]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:35:5+168 + assume {:print "$at(191,1354,1522)"} true; + assert {:msg "assert_failed(191,1354,1522): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && !$ResourceExists($1_account_Account_$memory#823, $t6)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#822, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:35:5+168 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_default_property_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1192 +procedure {:inline 1} $1_token_event_store_emit_default_property_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec ($1_string_String), _$t4: Vec ($1_option_Option'$1_property_map_PropertyValue'), _$t5: Vec ($1_property_map_PropertyValue)) returns () +{ + // declare local variables + var $t6: int; + var $t7: $1_token_event_store_DefaultPropertyMutateEvent; + var $t8: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t9: int; + var $t10: $1_account_Account; + var $t11: int; + var $t12: int; + var $t13: $1_token_event_store_DefaultPropertyMutateEvent; + var $t14: int; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t18: bool; + var $t19: $1_token_event_store_DefaultPropertyMutate; + var $t20: $Mutation ($1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec ($1_string_String); + var $t4: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $t5: Vec ($1_property_map_PropertyValue); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_DefaultPropertyMutateEvent': $1_token_event_store_DefaultPropertyMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_option_Option'$1_property_map_PropertyValue''': Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $temp_0'vec'$1_property_map_PropertyValue'': Vec ($1_property_map_PropertyValue); + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, global($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t10 == $ResourceValue($1_account_Account_$memory, $t9)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$at(190,12855,12856)"} true; + assume {:print "$track_local(112,3,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,2):", $t2} $t2 == $t2; + + // trace_local[keys]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,3):", $t3} $t3 == $t3; + + // trace_local[old_values]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,4):", $t4} $t4 == $t4; + + // trace_local[new_values]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,5):", $t5} $t5 == $t5; + + // $t11 := signer::address_of($t0) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:375:28+27 + assume {:print "$at(190,13173,13200)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,13173,13200)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[creator_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:375:13+12 + assume {:print "$track_local(112,3,6):", $t11} $t11 == $t11; + + // $t13 := pack token_event_store::DefaultPropertyMutateEvent($t11, $t1, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:377:21+182 + assume {:print "$at(190,13223,13405)"} true; + $t13 := $1_token_event_store_DefaultPropertyMutateEvent($t11, $t1, $t2, $t3, $t4, $t5); + + // trace_local[event]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:377:13+5 + assume {:print "$track_local(112,3,7):", $t13} $t13 == $t13; + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:386:9+37 + assume {:print "$at(190,13416,13453)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,13416,13453)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // $t17 := borrow_global($t11) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:387:33+17 + assume {:print "$at(190,13487,13504)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(190,13487,13504)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[token_event_store]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:387:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t17); + assume {:print "$track_local(112,3,8):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t18 := features::module_event_migration_enabled() on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:388:13+47 + assume {:print "$at(190,13551,13598)"} true; + call $t18 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,13551,13598)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:388:9+341 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:391:30+12 + assume {:print "$at(190,13696,13708)"} true; +L1: + + // $t19 := pack token_event_store::DefaultPropertyMutate($t11, $t1, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:390:17+233 + assume {:print "$at(190,13643,13876)"} true; + $t19 := $1_token_event_store_DefaultPropertyMutate($t11, $t1, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:389:13+263 + assume {:print "$at(190,13614,13877)"} true; + + // opaque end: event::emit($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:389:13+263 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:400:18+17 + assume {:print "$at(190,13962,13979)"} true; +L0: + + // $t20 := borrow_field.default_property_mutate_events($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:400:13+53 + assume {:print "$at(190,13957,14010)"} true; + $t20 := $ChildMutation($t17, 5, $Dereference($t17)->$default_property_mutate_events); + + // opaque begin: event::emit_event($t20, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + assume {:print "$at(190,13898,14040)"} true; + + // opaque end: event::emit_event($t20, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + + // write_back[Reference($t17).default_property_mutate_events (event::EventHandle)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + $t17 := $UpdateMutation($t17, $Update'$1_token_event_store_TokenEventStoreV1'_default_property_mutate_events($Dereference($t17), $Dereference($t20))); + + // pack_ref_deep($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + + // write_back[token_event_store::TokenEventStoreV1@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 + assume {:print "$at(190,14046,14047)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 + assume {:print "$at(190,14046,14047)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 +L3: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 + assume {:print "$at(190,14046,14047)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_default_property_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1192 +procedure {:timeLimit 80} $1_token_event_store_emit_default_property_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: Vec ($1_string_String), _$t4: Vec ($1_option_Option'$1_property_map_PropertyValue'), _$t5: Vec ($1_property_map_PropertyValue)) returns () +{ + // declare local variables + var $t6: int; + var $t7: $1_token_event_store_DefaultPropertyMutateEvent; + var $t8: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t9: int; + var $t10: $1_account_Account; + var $t11: int; + var $t12: int; + var $t13: $1_token_event_store_DefaultPropertyMutateEvent; + var $t14: int; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t18: bool; + var $t19: $1_token_event_store_DefaultPropertyMutate; + var $t20: $Mutation ($1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: Vec ($1_string_String); + var $t4: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $t5: Vec ($1_property_map_PropertyValue); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_DefaultPropertyMutateEvent': $1_token_event_store_DefaultPropertyMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'vec'$1_option_Option'$1_property_map_PropertyValue''': Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $temp_0'vec'$1_property_map_PropertyValue'': Vec ($1_property_map_PropertyValue); + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $1_token_event_store_TokenEventStoreV1_$memory#826: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#827: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$at(190,12855,12856)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume $IsValid'vec'$1_string_String''($t3); + + // assume And(WellFormed($t4), forall $elem: option::Option: $t4: Le(Len(select option::Option.vec($elem)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume ($IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''($t4) && (var $range_0 := $t4; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1)))))); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume $IsValid'vec'$1_property_map_PropertyValue''($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, global($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t10 == $ResourceValue($1_account_Account_$memory, $t9)); + + // @827 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$at(190,12855,12856)"} true; + $1_account_Account_$memory#827 := $1_account_Account_$memory; + + // @826 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#826 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,2):", $t2} $t2 == $t2; + + // trace_local[keys]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,3):", $t3} $t3 == $t3; + + // trace_local[old_values]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,4):", $t4} $t4 == $t4; + + // trace_local[new_values]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:367:5+1 + assume {:print "$track_local(112,3,5):", $t5} $t5 == $t5; + + // $t11 := signer::address_of($t0) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:375:28+27 + assume {:print "$at(190,13173,13200)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,13173,13200)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[creator_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:375:13+12 + assume {:print "$track_local(112,3,6):", $t11} $t11 == $t11; + + // $t13 := pack token_event_store::DefaultPropertyMutateEvent($t11, $t1, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:377:21+182 + assume {:print "$at(190,13223,13405)"} true; + $t13 := $1_token_event_store_DefaultPropertyMutateEvent($t11, $t1, $t2, $t3, $t4, $t5); + + // trace_local[event]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:377:13+5 + assume {:print "$track_local(112,3,7):", $t13} $t13 == $t13; + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:386:9+37 + assume {:print "$at(190,13416,13453)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,13416,13453)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // $t17 := borrow_global($t11) on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:387:33+17 + assume {:print "$at(190,13487,13504)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(190,13487,13504)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // trace_local[token_event_store]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:387:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t17); + assume {:print "$track_local(112,3,8):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t18 := features::module_event_migration_enabled() on_abort goto L3 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:388:13+47 + assume {:print "$at(190,13551,13598)"} true; + call $t18 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,13551,13598)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(112,3):", $t12} $t12 == $t12; + goto L3; + } + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:388:9+341 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:391:30+12 + assume {:print "$at(190,13696,13708)"} true; +L1: + + // $t19 := pack token_event_store::DefaultPropertyMutate($t11, $t1, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:390:17+233 + assume {:print "$at(190,13643,13876)"} true; + $t19 := $1_token_event_store_DefaultPropertyMutate($t11, $t1, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:389:13+263 + assume {:print "$at(190,13614,13877)"} true; + + // opaque end: event::emit($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:389:13+263 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:400:18+17 + assume {:print "$at(190,13962,13979)"} true; +L0: + + // $t20 := borrow_field.default_property_mutate_events($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:400:13+53 + assume {:print "$at(190,13957,14010)"} true; + $t20 := $ChildMutation($t17, 5, $Dereference($t17)->$default_property_mutate_events); + + // opaque begin: event::emit_event($t20, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + assume {:print "$at(190,13898,14040)"} true; + + // opaque end: event::emit_event($t20, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + + // write_back[Reference($t17).default_property_mutate_events (event::EventHandle)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + $t17 := $UpdateMutation($t17, $Update'$1_token_event_store_TokenEventStoreV1'_default_property_mutate_events($Dereference($t17), $Dereference($t20))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t17))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t17)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:399:9+142 + assume {:print "$at(190,13898,14040)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 + assume {:print "$at(190,14046,14047)"} true; +L2: + + // assert Not(And(Not(exists[@826]($t9)), Not(exists[@827]($t9)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && !$ResourceExists($1_account_Account_$memory#827, $t9)); + + // assert Not(And(Not(exists[@826]($t9)), Ge(Add(select account::Account.guid_creation_num($t10), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && (($t10->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@826]($t9)), Gt(Add(select account::Account.guid_creation_num($t10), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && (($t10->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:403:5+1 + assume {:print "$at(190,14046,14047)"} true; +L3: + + // assert Or(Or(And(Not(exists[@826]($t9)), Not(exists[@827]($t9))), And(Not(exists[@826]($t9)), Ge(Add(select account::Account.guid_creation_num($t10), 9), 1125899906842624))), And(Not(exists[@826]($t9)), Gt(Add(select account::Account.guid_creation_num($t10), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:61:5+306 + assume {:print "$at(191,2282,2588)"} true; + assert {:msg "assert_failed(191,2282,2588): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && !$ResourceExists($1_account_Account_$memory#827, $t9)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && (($t10->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#826, $t9) && (($t10->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:61:5+306 + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_descrition_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1093 +procedure {:inline 1} $1_token_event_store_emit_token_descrition_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_DescriptionMutateEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_DescriptionMutateEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_DescriptionMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_DescriptionMutateEvent': $1_token_event_store_DescriptionMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$at(190,14093,14094)"} true; + assume {:print "$track_local(112,4,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,2):", $t2} $t2 == $t2; + + // trace_local[old_description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,3):", $t3} $t3 == $t3; + + // trace_local[new_description]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:413:28+27 + assume {:print "$at(190,14353,14380)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,14353,14380)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:413:13+12 + assume {:print "$track_local(112,4,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::DescriptionMutateEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:415:21+170 + assume {:print "$at(190,14403,14573)"} true; + $t12 := $1_token_event_store_DescriptionMutateEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:415:13+5 + assume {:print "$track_local(112,4,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:423:9+37 + assume {:print "$at(190,14584,14621)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,14584,14621)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:424:33+17 + assume {:print "$at(190,14655,14672)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,14655,14672)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:424:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,4,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:425:13+47 + assume {:print "$at(190,14719,14766)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,14719,14766)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:425:9+321 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:428:30+12 + assume {:print "$at(190,14860,14872)"} true; +L1: + + // $t18 := pack token_event_store::DescriptionMutate($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:427:17+213 + assume {:print "$at(190,14811,15024)"} true; + $t18 := $1_token_event_store_DescriptionMutate($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:426:13+243 + assume {:print "$at(190,14782,15025)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:426:13+243 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:436:18+17 + assume {:print "$at(190,15106,15123)"} true; +L0: + + // $t19 := borrow_field.description_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:436:13+48 + assume {:print "$at(190,15101,15149)"} true; + $t19 := $ChildMutation($t16, 6, $Dereference($t16)->$description_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + assume {:print "$at(190,15046,15179)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + + // write_back[Reference($t16).description_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_description_mutate_events($Dereference($t16), $Dereference($t19))); + + // pack_ref_deep($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 + assume {:print "$at(190,15185,15186)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 + assume {:print "$at(190,15185,15186)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 +L3: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 + assume {:print "$at(190,15185,15186)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_descrition_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1093 +procedure {:timeLimit 80} $1_token_event_store_emit_token_descrition_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_DescriptionMutateEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_DescriptionMutateEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_DescriptionMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_DescriptionMutateEvent': $1_token_event_store_DescriptionMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#830: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#831: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$at(190,14093,14094)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // @831 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$at(190,14093,14094)"} true; + $1_account_Account_$memory#831 := $1_account_Account_$memory; + + // @830 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#830 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,2):", $t2} $t2 == $t2; + + // trace_local[old_description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,3):", $t3} $t3 == $t3; + + // trace_local[new_description]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:406:5+1 + assume {:print "$track_local(112,4,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:413:28+27 + assume {:print "$at(190,14353,14380)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,14353,14380)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:413:13+12 + assume {:print "$track_local(112,4,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::DescriptionMutateEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:415:21+170 + assume {:print "$at(190,14403,14573)"} true; + $t12 := $1_token_event_store_DescriptionMutateEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:415:13+5 + assume {:print "$track_local(112,4,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:423:9+37 + assume {:print "$at(190,14584,14621)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,14584,14621)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:424:33+17 + assume {:print "$at(190,14655,14672)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,14655,14672)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:424:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,4,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:425:13+47 + assume {:print "$at(190,14719,14766)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,14719,14766)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,4):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:425:9+321 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:428:30+12 + assume {:print "$at(190,14860,14872)"} true; +L1: + + // $t18 := pack token_event_store::DescriptionMutate($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:427:17+213 + assume {:print "$at(190,14811,15024)"} true; + $t18 := $1_token_event_store_DescriptionMutate($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:426:13+243 + assume {:print "$at(190,14782,15025)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:426:13+243 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:436:18+17 + assume {:print "$at(190,15106,15123)"} true; +L0: + + // $t19 := borrow_field.description_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:436:13+48 + assume {:print "$at(190,15101,15149)"} true; + $t19 := $ChildMutation($t16, 6, $Dereference($t16)->$description_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + assume {:print "$at(190,15046,15179)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + + // write_back[Reference($t16).description_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_description_mutate_events($Dereference($t16), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:435:9+133 + assume {:print "$at(190,15046,15179)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 + assume {:print "$at(190,15185,15186)"} true; +L2: + + // assert Not(And(Not(exists[@830]($t8)), Not(exists[@831]($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && !$ResourceExists($1_account_Account_$memory#831, $t8)); + + // assert Not(And(Not(exists[@830]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@830]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:439:5+1 + assume {:print "$at(190,15185,15186)"} true; +L3: + + // assert Or(Or(And(Not(exists[@830]($t8)), Not(exists[@831]($t8))), And(Not(exists[@830]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))), And(Not(exists[@830]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:72:5+248 + assume {:print "$at(191,2594,2842)"} true; + assert {:msg "assert_failed(191,2594,2842): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && !$ResourceExists($1_account_Account_$memory#831, $t8)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#830, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:72:5+248 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_maximum_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1043 +procedure {:inline 1} $1_token_event_store_emit_token_maximum_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: int) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_MaxiumMutateEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_MaxiumMutateEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_MaximumMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_MaxiumMutateEvent': $1_token_event_store_MaxiumMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$at(190,16855,16856)"} true; + assume {:print "$track_local(112,5,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,2):", $t2} $t2 == $t2; + + // trace_local[old_maximum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,3):", $t3} $t3 == $t3; + + // trace_local[new_maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:496:28+27 + assume {:print "$at(190,17098,17125)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,17098,17125)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:496:13+12 + assume {:print "$track_local(112,5,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::MaxiumMutateEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:498:21+157 + assume {:print "$at(190,17148,17305)"} true; + $t12 := $1_token_event_store_MaxiumMutateEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:498:13+5 + assume {:print "$track_local(112,5,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:506:9+37 + assume {:print "$at(190,17316,17353)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,17316,17353)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:507:34+17 + assume {:print "$at(190,17388,17405)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,17388,17405)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:507:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,5,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:508:13+47 + assume {:print "$at(190,17452,17499)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,17452,17499)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:508:9+309 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:511:30+12 + assume {:print "$at(190,17589,17601)"} true; +L1: + + // $t18 := pack token_event_store::MaximumMutate($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:510:17+201 + assume {:print "$at(190,17544,17745)"} true; + $t18 := $1_token_event_store_MaximumMutate($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:509:13+231 + assume {:print "$at(190,17515,17746)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:509:13+231 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:519:18+17 + assume {:print "$at(190,17822,17839)"} true; +L0: + + // $t19 := borrow_field.maximum_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:519:13+44 + assume {:print "$at(190,17817,17861)"} true; + $t19 := $ChildMutation($t16, 8, $Dereference($t16)->$maximum_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + assume {:print "$at(190,17767,17891)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + + // write_back[Reference($t16).maximum_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_maximum_mutate_events($Dereference($t16), $Dereference($t19))); + + // pack_ref_deep($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 + assume {:print "$at(190,17897,17898)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 + assume {:print "$at(190,17897,17898)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 +L3: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 + assume {:print "$at(190,17897,17898)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_maximum_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1043 +procedure {:timeLimit 80} $1_token_event_store_emit_token_maximum_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: int) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_MaxiumMutateEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_MaxiumMutateEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_MaximumMutate; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_MaxiumMutateEvent': $1_token_event_store_MaxiumMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_event_store_TokenEventStoreV1_$memory#834: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#835: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$at(190,16855,16856)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume $IsValid'u64'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume $IsValid'u64'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // @835 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$at(190,16855,16856)"} true; + $1_account_Account_$memory#835 := $1_account_Account_$memory; + + // @834 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#834 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,2):", $t2} $t2 == $t2; + + // trace_local[old_maximum]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,3):", $t3} $t3 == $t3; + + // trace_local[new_maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:489:5+1 + assume {:print "$track_local(112,5,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:496:28+27 + assume {:print "$at(190,17098,17125)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,17098,17125)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:496:13+12 + assume {:print "$track_local(112,5,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::MaxiumMutateEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:498:21+157 + assume {:print "$at(190,17148,17305)"} true; + $t12 := $1_token_event_store_MaxiumMutateEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:498:13+5 + assume {:print "$track_local(112,5,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:506:9+37 + assume {:print "$at(190,17316,17353)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,17316,17353)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:507:34+17 + assume {:print "$at(190,17388,17405)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,17388,17405)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:507:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,5,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:508:13+47 + assume {:print "$at(190,17452,17499)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,17452,17499)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,5):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:508:9+309 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:511:30+12 + assume {:print "$at(190,17589,17601)"} true; +L1: + + // $t18 := pack token_event_store::MaximumMutate($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:510:17+201 + assume {:print "$at(190,17544,17745)"} true; + $t18 := $1_token_event_store_MaximumMutate($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:509:13+231 + assume {:print "$at(190,17515,17746)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:509:13+231 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:519:18+17 + assume {:print "$at(190,17822,17839)"} true; +L0: + + // $t19 := borrow_field.maximum_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:519:13+44 + assume {:print "$at(190,17817,17861)"} true; + $t19 := $ChildMutation($t16, 8, $Dereference($t16)->$maximum_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + assume {:print "$at(190,17767,17891)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + + // write_back[Reference($t16).maximum_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_maximum_mutate_events($Dereference($t16), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:518:9+124 + assume {:print "$at(190,17767,17891)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 + assume {:print "$at(190,17897,17898)"} true; +L2: + + // assert Not(And(Not(exists[@834]($t8)), Not(exists[@835]($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && !$ResourceExists($1_account_Account_$memory#835, $t8)); + + // assert Not(And(Not(exists[@834]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@834]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:522:5+1 + assume {:print "$at(190,17897,17898)"} true; +L3: + + // assert Or(Or(And(Not(exists[@834]($t8)), Not(exists[@835]($t8))), And(Not(exists[@834]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))), And(Not(exists[@834]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:96:5+231 + assume {:print "$at(191,3263,3494)"} true; + assert {:msg "assert_failed(191,3263,3494): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && !$ResourceExists($1_account_Account_$memory#835, $t8)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#834, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:96:5+231 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_opt_in_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+711 +procedure {:inline 1} $1_token_event_store_emit_token_opt_in_event(_$t0: $signer, _$t1: bool) returns () +{ + // declare local variables + var $t2: $1_token_event_store_OptInTransferEvent; + var $t3: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t4: int; + var $t5: $1_account_Account; + var $t6: $1_token_event_store_OptInTransferEvent; + var $t7: int; + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t13: bool; + var $t14: int; + var $t15: $1_token_event_store_OptInTransfer; + var $t16: $Mutation ($1_event_EventHandle'$1_token_event_store_OptInTransferEvent'); + var $t0: $signer; + var $t1: bool; + var $temp_0'$1_token_event_store_OptInTransferEvent': $1_token_event_store_OptInTransferEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$at(190,11037,11038)"} true; + assume {:print "$track_local(112,6,0):", $t0} $t0 == $t0; + + // trace_local[opt_in]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$track_local(112,6,1):", $t1} $t1 == $t1; + + // $t6 := pack token_event_store::OptInTransferEvent($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:312:28+48 + assume {:print "$at(190,11168,11216)"} true; + $t6 := $1_token_event_store_OptInTransferEvent($t1); + + // trace_local[opt_in_event]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:312:13+12 + assume {:print "$track_local(112,6,2):", $t6} $t6 == $t6; + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:315:9+37 + assume {:print "$at(190,11226,11263)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,11226,11263)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:70+27 + assume {:print "$at(190,11334,11361)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,11334,11361)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t12 := borrow_global($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(190,11297,11314)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[token_event_store]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t12); + assume {:print "$track_local(112,6,3):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t13 := features::module_event_migration_enabled() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:13+47 + assume {:print "$at(190,11376,11423)"} true; + call $t13 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,11376,11423)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:9+235 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:320:57+7 + assume {:print "$at(190,11540,11547)"} true; +L1: + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:320:38+27 + assume {:print "$at(190,11521,11548)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,11521,11548)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t15 := pack token_event_store::OptInTransfer($t14, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:319:17+127 + assume {:print "$at(190,11468,11595)"} true; + $t15 := $1_token_event_store_OptInTransfer($t14, $t1); + + // opaque begin: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:318:13+157 + assume {:print "$at(190,11439,11596)"} true; + + // opaque end: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:318:13+157 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:322:19+1 + assume {:print "$at(190,11596,11597)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:9+235 + assume {:print "$at(190,11372,11607)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:325:18+17 + assume {:print "$at(190,11673,11690)"} true; +L2: + + // $t16 := borrow_field.opt_in_events($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:325:13+36 + assume {:print "$at(190,11668,11704)"} true; + $t16 := $ChildMutation($t12, 3, $Dereference($t12)->$opt_in_events); + + // opaque begin: event::emit_event($t16, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + assume {:print "$at(190,11617,11741)"} true; + + // opaque end: event::emit_event($t16, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + + // write_back[Reference($t12).opt_in_events (event::EventHandle)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + $t12 := $UpdateMutation($t12, $Update'$1_token_event_store_TokenEventStoreV1'_opt_in_events($Dereference($t12), $Dereference($t16))); + + // pack_ref_deep($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + + // write_back[token_event_store::TokenEventStoreV1@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 + assume {:print "$at(190,11747,11748)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 + assume {:print "$at(190,11747,11748)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 + assume {:print "$at(190,11747,11748)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_opt_in_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+711 +procedure {:timeLimit 80} $1_token_event_store_emit_token_opt_in_event$verify(_$t0: $signer, _$t1: bool) returns () +{ + // declare local variables + var $t2: $1_token_event_store_OptInTransferEvent; + var $t3: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t4: int; + var $t5: $1_account_Account; + var $t6: $1_token_event_store_OptInTransferEvent; + var $t7: int; + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t13: bool; + var $t14: int; + var $t15: $1_token_event_store_OptInTransfer; + var $t16: $Mutation ($1_event_EventHandle'$1_token_event_store_OptInTransferEvent'); + var $t0: $signer; + var $t1: bool; + var $temp_0'$1_token_event_store_OptInTransferEvent': $1_token_event_store_OptInTransferEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#838: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#839: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$at(190,11037,11038)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume $IsValid'bool'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // @839 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$at(190,11037,11038)"} true; + $1_account_Account_$memory#839 := $1_account_Account_$memory; + + // @838 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#838 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$track_local(112,6,0):", $t0} $t0 == $t0; + + // trace_local[opt_in]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:311:5+1 + assume {:print "$track_local(112,6,1):", $t1} $t1 == $t1; + + // $t6 := pack token_event_store::OptInTransferEvent($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:312:28+48 + assume {:print "$at(190,11168,11216)"} true; + $t6 := $1_token_event_store_OptInTransferEvent($t1); + + // trace_local[opt_in_event]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:312:13+12 + assume {:print "$track_local(112,6,2):", $t6} $t6 == $t6; + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:315:9+37 + assume {:print "$at(190,11226,11263)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,11226,11263)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:70+27 + assume {:print "$at(190,11334,11361)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,11334,11361)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t12 := borrow_global($t11) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:33+17 + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t11)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t11), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t11)); + } + if ($abort_flag) { + assume {:print "$at(190,11297,11314)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[token_event_store]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:316:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t12); + assume {:print "$track_local(112,6,3):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t13 := features::module_event_migration_enabled() on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:13+47 + assume {:print "$at(190,11376,11423)"} true; + call $t13 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,11376,11423)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // if ($t13) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:9+235 + if ($t13) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:320:57+7 + assume {:print "$at(190,11540,11547)"} true; +L1: + + // $t14 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:320:38+27 + assume {:print "$at(190,11521,11548)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,11521,11548)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(112,6):", $t10} $t10 == $t10; + goto L4; + } + + // $t15 := pack token_event_store::OptInTransfer($t14, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:319:17+127 + assume {:print "$at(190,11468,11595)"} true; + $t15 := $1_token_event_store_OptInTransfer($t14, $t1); + + // opaque begin: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:318:13+157 + assume {:print "$at(190,11439,11596)"} true; + + // opaque end: event::emit($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:318:13+157 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:322:19+1 + assume {:print "$at(190,11596,11597)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:317:9+235 + assume {:print "$at(190,11372,11607)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:325:18+17 + assume {:print "$at(190,11673,11690)"} true; +L2: + + // $t16 := borrow_field.opt_in_events($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:325:13+36 + assume {:print "$at(190,11668,11704)"} true; + $t16 := $ChildMutation($t12, 3, $Dereference($t12)->$opt_in_events); + + // opaque begin: event::emit_event($t16, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + assume {:print "$at(190,11617,11741)"} true; + + // opaque end: event::emit_event($t16, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + + // write_back[Reference($t12).opt_in_events (event::EventHandle)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + $t12 := $UpdateMutation($t12, $Update'$1_token_event_store_TokenEventStoreV1'_opt_in_events($Dereference($t12), $Dereference($t16))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t12))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t12)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:324:9+124 + assume {:print "$at(190,11617,11741)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 + assume {:print "$at(190,11747,11748)"} true; +L3: + + // assert Not(And(Not(exists[@838]($t4)), Not(exists[@839]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && !$ResourceExists($1_account_Account_$memory#839, $t4)); + + // assert Not(And(Not(exists[@838]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@838]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:328:5+1 + assume {:print "$at(190,11747,11748)"} true; +L4: + + // assert Or(Or(And(Not(exists[@838]($t4)), Not(exists[@839]($t4))), And(Not(exists[@838]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))), And(Not(exists[@838]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:47:5+139 + assume {:print "$at(191,1906,2045)"} true; + assert {:msg "assert_failed(191,1906,2045): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && !$ResourceExists($1_account_Account_$memory#839, $t4)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#838, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:47:5+139 + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_royalty_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1585 +procedure {:inline 1} $1_token_event_store_emit_token_royalty_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: int, _$t5: int, _$t6: int, _$t7: int, _$t8: int) returns () +{ + // declare local variables + var $t9: int; + var $t10: $1_token_event_store_RoyaltyMutateEvent; + var $t11: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: int; + var $t16: $1_token_event_store_RoyaltyMutateEvent; + var $t17: int; + var $t18: int; + var $t19: $1_account_Account; + var $t20: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t21: bool; + var $t22: $1_token_event_store_RoyaltyMutate; + var $t23: $Mutation ($1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_RoyaltyMutateEvent': $1_token_event_store_RoyaltyMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + + // bytecode translation starts here + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$at(190,15228,15229)"} true; + assume {:print "$track_local(112,7,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,2):", $t2} $t2 == $t2; + + // trace_local[old_royalty_numerator]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,3):", $t3} $t3 == $t3; + + // trace_local[old_royalty_denominator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,4):", $t4} $t4 == $t4; + + // trace_local[old_royalty_payee_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,5):", $t5} $t5 == $t5; + + // trace_local[new_royalty_numerator]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,6):", $t6} $t6 == $t6; + + // trace_local[new_royalty_denominator]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,7):", $t7} $t7 == $t7; + + // trace_local[new_royalty_payee_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,8):", $t8} $t8 == $t8; + + // $t14 := signer::address_of($t0) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:453:28+27 + assume {:print "$at(190,15649,15676)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,15649,15676)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // trace_local[creator_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:453:13+12 + assume {:print "$track_local(112,7,9):", $t14} $t14 == $t14; + + // $t16 := pack token_event_store::RoyaltyMutateEvent($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:454:21+324 + assume {:print "$at(190,15698,16022)"} true; + $t16 := $1_token_event_store_RoyaltyMutateEvent($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8); + + // trace_local[event]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:454:13+5 + assume {:print "$track_local(112,7,10):", $t16} $t16 == $t16; + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t19 == $ResourceValue($1_account_Account_$memory, $t18)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:466:9+37 + assume {:print "$at(190,16033,16070)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,16033,16070)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // $t20 := borrow_global($t14) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:467:33+17 + assume {:print "$at(190,16104,16121)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,16104,16121)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // trace_local[token_event_store]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:467:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t20); + assume {:print "$track_local(112,7,11):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t21 := features::module_event_migration_enabled() on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:468:13+47 + assume {:print "$at(190,16168,16215)"} true; + call $t21 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,16168,16215)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:468:9+507 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:471:30+12 + assume {:print "$at(190,16305,16317)"} true; +L1: + + // $t22 := pack token_event_store::RoyaltyMutate($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:470:17+399 + assume {:print "$at(190,16260,16659)"} true; + $t22 := $1_token_event_store_RoyaltyMutate($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:469:13+429 + assume {:print "$at(190,16231,16660)"} true; + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:469:13+429 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:483:18+17 + assume {:print "$at(190,16737,16754)"} true; +L0: + + // $t23 := borrow_field.royalty_mutate_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:483:13+44 + assume {:print "$at(190,16732,16776)"} true; + $t23 := $ChildMutation($t20, 7, $Dereference($t20)->$royalty_mutate_events); + + // opaque begin: event::emit_event($t23, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + assume {:print "$at(190,16681,16806)"} true; + + // opaque end: event::emit_event($t23, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + + // write_back[Reference($t20).royalty_mutate_events (event::EventHandle)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + $t20 := $UpdateMutation($t20, $Update'$1_token_event_store_TokenEventStoreV1'_royalty_mutate_events($Dereference($t20), $Dereference($t23))); + + // pack_ref_deep($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + + // write_back[token_event_store::TokenEventStoreV1@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 + assume {:print "$at(190,16812,16813)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 + assume {:print "$at(190,16812,16813)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 +L3: + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 + assume {:print "$at(190,16812,16813)"} true; + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_royalty_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1585 +procedure {:timeLimit 80} $1_token_event_store_emit_token_royalty_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int, _$t4: int, _$t5: int, _$t6: int, _$t7: int, _$t8: int) returns () +{ + // declare local variables + var $t9: int; + var $t10: $1_token_event_store_RoyaltyMutateEvent; + var $t11: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t12: int; + var $t13: $1_account_Account; + var $t14: int; + var $t15: int; + var $t16: $1_token_event_store_RoyaltyMutateEvent; + var $t17: int; + var $t18: int; + var $t19: $1_account_Account; + var $t20: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t21: bool; + var $t22: $1_token_event_store_RoyaltyMutate; + var $t23: $Mutation ($1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_RoyaltyMutateEvent': $1_token_event_store_RoyaltyMutateEvent; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_event_store_TokenEventStoreV1_$memory#842: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#843: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$at(190,15228,15229)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'u64'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'address'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'u64'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'u64'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume $IsValid'address'($t8); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // @843 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$at(190,15228,15229)"} true; + $1_account_Account_$memory#843 := $1_account_Account_$memory; + + // @842 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#842 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,2):", $t2} $t2 == $t2; + + // trace_local[old_royalty_numerator]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,3):", $t3} $t3 == $t3; + + // trace_local[old_royalty_denominator]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,4):", $t4} $t4 == $t4; + + // trace_local[old_royalty_payee_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,5):", $t5} $t5 == $t5; + + // trace_local[new_royalty_numerator]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,6):", $t6} $t6 == $t6; + + // trace_local[new_royalty_denominator]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,7):", $t7} $t7 == $t7; + + // trace_local[new_royalty_payee_addr]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:442:5+1 + assume {:print "$track_local(112,7,8):", $t8} $t8 == $t8; + + // $t14 := signer::address_of($t0) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:453:28+27 + assume {:print "$at(190,15649,15676)"} true; + call $t14 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,15649,15676)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // trace_local[creator_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:453:13+12 + assume {:print "$track_local(112,7,9):", $t14} $t14 == $t14; + + // $t16 := pack token_event_store::RoyaltyMutateEvent($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:454:21+324 + assume {:print "$at(190,15698,16022)"} true; + $t16 := $1_token_event_store_RoyaltyMutateEvent($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8); + + // trace_local[event]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:454:13+5 + assume {:print "$track_local(112,7,10):", $t16} $t16 == $t16; + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t19 == $ResourceValue($1_account_Account_$memory, $t18)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:466:9+37 + assume {:print "$at(190,16033,16070)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,16033,16070)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // $t20 := borrow_global($t14) on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:467:33+17 + assume {:print "$at(190,16104,16121)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t20 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(190,16104,16121)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // trace_local[token_event_store]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:467:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t20); + assume {:print "$track_local(112,7,11):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t21 := features::module_event_migration_enabled() on_abort goto L3 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:468:13+47 + assume {:print "$at(190,16168,16215)"} true; + call $t21 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,16168,16215)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(112,7):", $t15} $t15 == $t15; + goto L3; + } + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:468:9+507 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:471:30+12 + assume {:print "$at(190,16305,16317)"} true; +L1: + + // $t22 := pack token_event_store::RoyaltyMutate($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:470:17+399 + assume {:print "$at(190,16260,16659)"} true; + $t22 := $1_token_event_store_RoyaltyMutate($t14, $t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8); + + // opaque begin: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:469:13+429 + assume {:print "$at(190,16231,16660)"} true; + + // opaque end: event::emit($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:469:13+429 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:483:18+17 + assume {:print "$at(190,16737,16754)"} true; +L0: + + // $t23 := borrow_field.royalty_mutate_events($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:483:13+44 + assume {:print "$at(190,16732,16776)"} true; + $t23 := $ChildMutation($t20, 7, $Dereference($t20)->$royalty_mutate_events); + + // opaque begin: event::emit_event($t23, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + assume {:print "$at(190,16681,16806)"} true; + + // opaque end: event::emit_event($t23, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + + // write_back[Reference($t20).royalty_mutate_events (event::EventHandle)]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + $t20 := $UpdateMutation($t20, $Update'$1_token_event_store_TokenEventStoreV1'_royalty_mutate_events($Dereference($t20), $Dereference($t23))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t20))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t20)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:482:9+125 + assume {:print "$at(190,16681,16806)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t20), + $Dereference($t20)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 + assume {:print "$at(190,16812,16813)"} true; +L2: + + // assert Not(And(Not(exists[@842]($t12)), Not(exists[@843]($t12)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && !$ResourceExists($1_account_Account_$memory#843, $t12)); + + // assert Not(And(Not(exists[@842]($t12)), Ge(Add(select account::Account.guid_creation_num($t13), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && (($t13->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@842]($t12)), Gt(Add(select account::Account.guid_creation_num($t13), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && (($t13->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:486:5+1 + assume {:print "$at(190,16812,16813)"} true; +L3: + + // assert Or(Or(And(Not(exists[@842]($t12)), Not(exists[@843]($t12))), And(Not(exists[@842]($t12)), Ge(Add(select account::Account.guid_creation_num($t13), 9), 1125899906842624))), And(Not(exists[@842]($t12)), Gt(Add(select account::Account.guid_creation_num($t13), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:82:5+409 + assume {:print "$at(191,2848,3257)"} true; + assert {:msg "assert_failed(191,2848,3257): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && !$ResourceExists($1_account_Account_$memory#843, $t12)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && (($t13->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#842, $t12) && (($t13->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:82:5+409 + $abort_code := $t15; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_uri_mutate_event [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1012 +procedure {:inline 1} $1_token_event_store_emit_token_uri_mutate_event(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_UriMutationEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_UriMutationEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_UriMutation; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_UriMutationEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'$1_token_event_store_UriMutationEvent': $1_token_event_store_UriMutationEvent; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$at(190,11786,11787)"} true; + assume {:print "$track_local(112,8,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,2):", $t2} $t2 == $t2; + + // trace_local[old_uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,3):", $t3} $t3 == $t3; + + // trace_local[new_uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:338:28+27 + assume {:print "$at(190,12023,12050)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,12023,12050)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:338:13+12 + assume {:print "$track_local(112,8,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::UriMutationEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:340:21+148 + assume {:print "$at(190,12073,12221)"} true; + $t12 := $1_token_event_store_UriMutationEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:340:13+5 + assume {:print "$track_local(112,8,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:348:9+37 + assume {:print "$at(190,12232,12269)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,12232,12269)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:349:33+17 + assume {:print "$at(190,12303,12320)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,12303,12320)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:349:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,8,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:350:13+47 + assume {:print "$at(190,12367,12414)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,12367,12414)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:350:9+299 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:353:30+12 + assume {:print "$at(190,12502,12514)"} true; +L1: + + // $t18 := pack token_event_store::UriMutation($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:352:17+191 + assume {:print "$at(190,12459,12650)"} true; + $t18 := $1_token_event_store_UriMutation($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:351:13+221 + assume {:print "$at(190,12430,12651)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:351:13+221 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:361:18+17 + assume {:print "$at(190,12726,12743)"} true; +L0: + + // $t19 := borrow_field.uri_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:361:13+40 + assume {:print "$at(190,12721,12761)"} true; + $t19 := $ChildMutation($t16, 4, $Dereference($t16)->$uri_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + assume {:print "$at(190,12672,12791)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + + // write_back[Reference($t16).uri_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_uri_mutate_events($Dereference($t16), $Dereference($t19))); + + // pack_ref_deep($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 + assume {:print "$at(190,12797,12798)"} true; +L2: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 + assume {:print "$at(190,12797,12798)"} true; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 +L3: + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 + assume {:print "$at(190,12797,12798)"} true; + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::emit_token_uri_mutate_event [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1012 +procedure {:timeLimit 80} $1_token_event_store_emit_token_uri_mutate_event$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: $1_string_String) returns () +{ + // declare local variables + var $t5: int; + var $t6: $1_token_event_store_UriMutationEvent; + var $t7: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t8: int; + var $t9: $1_account_Account; + var $t10: int; + var $t11: int; + var $t12: $1_token_event_store_UriMutationEvent; + var $t13: int; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $Mutation ($1_token_event_store_TokenEventStoreV1); + var $t17: bool; + var $t18: $1_token_event_store_UriMutation; + var $t19: $Mutation ($1_event_EventHandle'$1_token_event_store_UriMutationEvent'); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_event_store_TokenEventStoreV1': $1_token_event_store_TokenEventStoreV1; + var $temp_0'$1_token_event_store_UriMutationEvent': $1_token_event_store_UriMutationEvent; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#846: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#847: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$at(190,11786,11787)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // @847 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$at(190,11786,11787)"} true; + $1_account_Account_$memory#847 := $1_account_Account_$memory; + + // @846 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#846 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,1):", $t1} $t1 == $t1; + + // trace_local[token]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,2):", $t2} $t2 == $t2; + + // trace_local[old_uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,3):", $t3} $t3 == $t3; + + // trace_local[new_uri]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:331:5+1 + assume {:print "$track_local(112,8,4):", $t4} $t4 == $t4; + + // $t10 := signer::address_of($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:338:28+27 + assume {:print "$at(190,12023,12050)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,12023,12050)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[creator_addr]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:338:13+12 + assume {:print "$track_local(112,8,5):", $t10} $t10 == $t10; + + // $t12 := pack token_event_store::UriMutationEvent($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:340:21+148 + assume {:print "$at(190,12073,12221)"} true; + $t12 := $1_token_event_store_UriMutationEvent($t10, $t1, $t2, $t3, $t4); + + // trace_local[event]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:340:13+5 + assume {:print "$track_local(112,8,6):", $t12} $t12 == $t12; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // token_event_store::initialize_token_event_store($t0) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:348:9+37 + assume {:print "$at(190,12232,12269)"} true; + call $1_token_event_store_initialize_token_event_store($t0); + if ($abort_flag) { + assume {:print "$at(190,12232,12269)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // $t16 := borrow_global($t10) on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:349:33+17 + assume {:print "$at(190,12303,12320)"} true; + if (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(190,12303,12320)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // trace_local[token_event_store]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:349:13+17 + $temp_0'$1_token_event_store_TokenEventStoreV1' := $Dereference($t16); + assume {:print "$track_local(112,8,7):", $temp_0'$1_token_event_store_TokenEventStoreV1'} $temp_0'$1_token_event_store_TokenEventStoreV1' == $temp_0'$1_token_event_store_TokenEventStoreV1'; + + // $t17 := features::module_event_migration_enabled() on_abort goto L3 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:350:13+47 + assume {:print "$at(190,12367,12414)"} true; + call $t17 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(190,12367,12414)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(112,8):", $t11} $t11 == $t11; + goto L3; + } + + // if ($t17) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:350:9+299 + if ($t17) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:353:30+12 + assume {:print "$at(190,12502,12514)"} true; +L1: + + // $t18 := pack token_event_store::UriMutation($t10, $t1, $t2, $t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:352:17+191 + assume {:print "$at(190,12459,12650)"} true; + $t18 := $1_token_event_store_UriMutation($t10, $t1, $t2, $t3, $t4); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:351:13+221 + assume {:print "$at(190,12430,12651)"} true; + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:351:13+221 + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:361:18+17 + assume {:print "$at(190,12726,12743)"} true; +L0: + + // $t19 := borrow_field.uri_mutate_events($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:361:13+40 + assume {:print "$at(190,12721,12761)"} true; + $t19 := $ChildMutation($t16, 4, $Dereference($t16)->$uri_mutate_events); + + // opaque begin: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + assume {:print "$at(190,12672,12791)"} true; + + // opaque end: event::emit_event($t19, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + + // write_back[Reference($t16).uri_mutate_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + $t16 := $UpdateMutation($t16, $Update'$1_token_event_store_TokenEventStoreV1'_uri_mutate_events($Dereference($t16), $Dereference($t19))); + + // assert Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($t16))), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (LenVec($Dereference($t16)->$extension->$vec) <= 1); + + // write_back[token_event_store::TokenEventStoreV1@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:360:9+119 + assume {:print "$at(190,12672,12791)"} true; + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 + assume {:print "$at(190,12797,12798)"} true; +L2: + + // assert Not(And(Not(exists[@846]($t8)), Not(exists[@847]($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && !$ResourceExists($1_account_Account_$memory#847, $t8)); + + // assert Not(And(Not(exists[@846]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@846]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:364:5+1 + assume {:print "$at(190,12797,12798)"} true; +L3: + + // assert Or(Or(And(Not(exists[@846]($t8)), Not(exists[@847]($t8))), And(Not(exists[@846]($t8)), Ge(Add(select account::Account.guid_creation_num($t9), 9), 1125899906842624))), And(Not(exists[@846]($t8)), Gt(Add(select account::Account.guid_creation_num($t9), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:51:5+225 + assume {:print "$at(191,2051,2276)"} true; + assert {:msg "assert_failed(191,2051,2276): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && !$ResourceExists($1_account_Account_$memory#847, $t8)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && (($t9->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#846, $t8) && (($t9->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:51:5+225 + $abort_code := $t11; + $abort_flag := true; + return; + +} + +// fun token_event_store::initialize_token_event_store [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1143 +procedure {:inline 1} $1_token_event_store_initialize_token_event_store(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_account_Account; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: bool; + var $t8: int; + var $t9: $1_account_Account; + var $t10: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; + var $t11: int; + var $t12: $1_account_Account; + var $t13: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; + var $t17: int; + var $t18: $1_account_Account; + var $t19: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; + var $t20: int; + var $t21: $1_account_Account; + var $t22: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; + var $t23: int; + var $t24: $1_account_Account; + var $t25: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; + var $t26: int; + var $t27: $1_account_Account; + var $t28: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; + var $t29: int; + var $t30: $1_account_Account; + var $t31: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; + var $t32: int; + var $t33: $1_account_Account; + var $t34: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; + var $t35: $1_option_Option'$1_any_Any'; + var $t36: $1_token_event_store_TokenEventStoreV1; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t3 == $ResourceValue($1_account_Account_$memory, $t2)); + + // trace_local[acct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + assume {:print "$at(190,6593,6594)"} true; + assume {:print "$track_local(112,9,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:40+24 + assume {:print "$at(190,6681,6705)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,6681,6705)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:14+6 + $t6 := $ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t4); + + // $t7 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:13+1 + call $t7 := $Not($t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:9+1079 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:21+4 + assume {:print "$at(190,6730,6734)"} true; +L1: + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // $t10 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:218:47+57 + assume {:print "$at(190,6802,6859)"} true; + call $t10 := $1_account_new_event_handle'$1_token_event_store_CollectionUriMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,6802,6859)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // $t13 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:219:51+60 + assume {:print "$at(190,6911,6971)"} true; + call $t13 := $1_account_new_event_handle'$1_token_event_store_CollectionMaxiumMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,6911,6971)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // $t16 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:220:55+65 + assume {:print "$at(190,7027,7092)"} true; + call $t16 := $1_account_new_event_handle'$1_token_event_store_CollectionDescriptionMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7027,7092)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, global($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t18 == $ResourceValue($1_account_Account_$memory, $t17)); + + // $t19 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:221:32+51 + assume {:print "$at(190,7125,7176)"} true; + call $t19 := $1_account_new_event_handle'$1_token_event_store_OptInTransferEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7125,7176)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, global($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t21 == $ResourceValue($1_account_Account_$memory, $t20)); + + // $t22 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:222:36+49 + assume {:print "$at(190,7213,7262)"} true; + call $t22 := $1_account_new_event_handle'$1_token_event_store_UriMutationEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7213,7262)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t23, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t23 == $1_signer_$address_of($t0)); + + // assume Identical($t24, global($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t24 == $ResourceValue($1_account_Account_$memory, $t23)); + + // $t25 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:223:49+59 + assume {:print "$at(190,7312,7371)"} true; + call $t25 := $1_account_new_event_handle'$1_token_event_store_DefaultPropertyMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7312,7371)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t26, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t26 == $1_signer_$address_of($t0)); + + // assume Identical($t27, global($t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t27 == $ResourceValue($1_account_Account_$memory, $t26)); + + // $t28 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:224:44+55 + assume {:print "$at(190,7416,7471)"} true; + call $t28 := $1_account_new_event_handle'$1_token_event_store_DescriptionMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7416,7471)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t29, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t29 == $1_signer_$address_of($t0)); + + // assume Identical($t30, global($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t30 == $ResourceValue($1_account_Account_$memory, $t29)); + + // $t31 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:225:40+51 + assume {:print "$at(190,7512,7563)"} true; + call $t31 := $1_account_new_event_handle'$1_token_event_store_RoyaltyMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7512,7563)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t32, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t32 == $1_signer_$address_of($t0)); + + // assume Identical($t33, global($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t33 == $ResourceValue($1_account_Account_$memory, $t32)); + + // $t34 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:226:40+50 + assume {:print "$at(190,7604,7654)"} true; + call $t34 := $1_account_new_event_handle'$1_token_event_store_MaxiumMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7604,7654)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // $t35 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume {:print "$at(190,7683,7702)"} true; + + // assume And(WellFormed($t35), Le(Len(select option::Option.vec($t35)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume ($IsValid'$1_option_Option'$1_any_Any''($t35) && (LenVec($t35->$vec) <= 1)); + + // assume Eq>($t35, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume $IsEqual'$1_option_Option'$1_any_Any''($t35, $1_option_spec_none'$1_any_Any'()); + + // $t35 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + + // $t36 := pack token_event_store::TokenEventStoreV1($t10, $t13, $t16, $t19, $t22, $t25, $t28, $t31, $t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:27+981 + assume {:print "$at(190,6736,7717)"} true; + $t36 := $1_token_event_store_TokenEventStoreV1($t10, $t13, $t16, $t19, $t22, $t25, $t28, $t31, $t34, $t35); + + // move_to($t36, $t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:13+7 + if ($ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $t0->$addr, $t36); + } + if ($abort_flag) { + assume {:print "$at(190,6722,6729)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:228:15+1 + assume {:print "$at(190,7718,7719)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:9+1079 + assume {:print "$at(190,6650,7729)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:229:10+1 + assume {:print "$at(190,7729,7730)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 + assume {:print "$at(190,7735,7736)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 + assume {:print "$at(190,7735,7736)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 +L4: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 + assume {:print "$at(190,7735,7736)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun token_event_store::initialize_token_event_store [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1143 +procedure {:timeLimit 80} $1_token_event_store_initialize_token_event_store$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: $1_account_Account; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: bool; + var $t8: int; + var $t9: $1_account_Account; + var $t10: $1_event_EventHandle'$1_token_event_store_CollectionUriMutateEvent'; + var $t11: int; + var $t12: $1_account_Account; + var $t13: $1_event_EventHandle'$1_token_event_store_CollectionMaxiumMutateEvent'; + var $t14: int; + var $t15: $1_account_Account; + var $t16: $1_event_EventHandle'$1_token_event_store_CollectionDescriptionMutateEvent'; + var $t17: int; + var $t18: $1_account_Account; + var $t19: $1_event_EventHandle'$1_token_event_store_OptInTransferEvent'; + var $t20: int; + var $t21: $1_account_Account; + var $t22: $1_event_EventHandle'$1_token_event_store_UriMutationEvent'; + var $t23: int; + var $t24: $1_account_Account; + var $t25: $1_event_EventHandle'$1_token_event_store_DefaultPropertyMutateEvent'; + var $t26: int; + var $t27: $1_account_Account; + var $t28: $1_event_EventHandle'$1_token_event_store_DescriptionMutateEvent'; + var $t29: int; + var $t30: $1_account_Account; + var $t31: $1_event_EventHandle'$1_token_event_store_RoyaltyMutateEvent'; + var $t32: int; + var $t33: $1_account_Account; + var $t34: $1_event_EventHandle'$1_token_event_store_MaxiumMutateEvent'; + var $t35: $1_option_Option'$1_any_Any'; + var $t36: $1_token_event_store_TokenEventStoreV1; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_token_event_store_TokenEventStoreV1_$memory#810: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#811: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + assume {:print "$at(190,6593,6594)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:9:9+36 + assume {:print "$at(191,225,261)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t2 == $1_signer_$address_of($t0)); + + // assume Identical($t3, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t3 == $ResourceValue($1_account_Account_$memory, $t2)); + + // @811 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + assume {:print "$at(190,6593,6594)"} true; + $1_account_Account_$memory#811 := $1_account_Account_$memory; + + // @810 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#810 := $1_token_event_store_TokenEventStoreV1_$memory; + + // trace_local[acct]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:215:5+1 + assume {:print "$track_local(112,9,0):", $t0} $t0 == $t0; + + // $t4 := signer::address_of($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:40+24 + assume {:print "$at(190,6681,6705)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(190,6681,6705)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // $t6 := exists($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:14+6 + $t6 := $ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t4); + + // $t7 := !($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:13+1 + call $t7 := $Not($t6); + + // if ($t7) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:9+1079 + if ($t7) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:21+4 + assume {:print "$at(190,6730,6734)"} true; +L1: + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // $t10 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:218:47+57 + assume {:print "$at(190,6802,6859)"} true; + call $t10 := $1_account_new_event_handle'$1_token_event_store_CollectionUriMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,6802,6859)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // $t13 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:219:51+60 + assume {:print "$at(190,6911,6971)"} true; + call $t13 := $1_account_new_event_handle'$1_token_event_store_CollectionMaxiumMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,6911,6971)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t14, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t14 == $1_signer_$address_of($t0)); + + // assume Identical($t15, global($t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t15 == $ResourceValue($1_account_Account_$memory, $t14)); + + // $t16 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:220:55+65 + assume {:print "$at(190,7027,7092)"} true; + call $t16 := $1_account_new_event_handle'$1_token_event_store_CollectionDescriptionMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7027,7092)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, global($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t18 == $ResourceValue($1_account_Account_$memory, $t17)); + + // $t19 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:221:32+51 + assume {:print "$at(190,7125,7176)"} true; + call $t19 := $1_account_new_event_handle'$1_token_event_store_OptInTransferEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7125,7176)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, global($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t21 == $ResourceValue($1_account_Account_$memory, $t20)); + + // $t22 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:222:36+49 + assume {:print "$at(190,7213,7262)"} true; + call $t22 := $1_account_new_event_handle'$1_token_event_store_UriMutationEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7213,7262)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t23, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t23 == $1_signer_$address_of($t0)); + + // assume Identical($t24, global($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t24 == $ResourceValue($1_account_Account_$memory, $t23)); + + // $t25 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:223:49+59 + assume {:print "$at(190,7312,7371)"} true; + call $t25 := $1_account_new_event_handle'$1_token_event_store_DefaultPropertyMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7312,7371)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t26, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t26 == $1_signer_$address_of($t0)); + + // assume Identical($t27, global($t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t27 == $ResourceValue($1_account_Account_$memory, $t26)); + + // $t28 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:224:44+55 + assume {:print "$at(190,7416,7471)"} true; + call $t28 := $1_account_new_event_handle'$1_token_event_store_DescriptionMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7416,7471)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t29, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t29 == $1_signer_$address_of($t0)); + + // assume Identical($t30, global($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t30 == $ResourceValue($1_account_Account_$memory, $t29)); + + // $t31 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:225:40+51 + assume {:print "$at(190,7512,7563)"} true; + call $t31 := $1_account_new_event_handle'$1_token_event_store_RoyaltyMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7512,7563)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // assume Identical($t32, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t32 == $1_signer_$address_of($t0)); + + // assume Identical($t33, global($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t33 == $ResourceValue($1_account_Account_$memory, $t32)); + + // $t34 := account::new_event_handle($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:226:40+50 + assume {:print "$at(190,7604,7654)"} true; + call $t34 := $1_account_new_event_handle'$1_token_event_store_MaxiumMutateEvent'($t0); + if ($abort_flag) { + assume {:print "$at(190,7604,7654)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // $t35 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume {:print "$at(190,7683,7702)"} true; + + // assume And(WellFormed($t35), Le(Len(select option::Option.vec($t35)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume ($IsValid'$1_option_Option'$1_any_Any''($t35) && (LenVec($t35->$vec) <= 1)); + + // assume Eq>($t35, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + assume $IsEqual'$1_option_Option'$1_any_Any''($t35, $1_option_spec_none'$1_any_Any'()); + + // $t35 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:227:28+19 + + // $t36 := pack token_event_store::TokenEventStoreV1($t10, $t13, $t16, $t19, $t22, $t25, $t28, $t31, $t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:27+981 + assume {:print "$at(190,6736,7717)"} true; + $t36 := $1_token_event_store_TokenEventStoreV1($t10, $t13, $t16, $t19, $t22, $t25, $t28, $t31, $t34, $t35); + + // move_to($t36, $t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:217:13+7 + if ($ResourceExists($1_token_event_store_TokenEventStoreV1_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_event_store_TokenEventStoreV1_$memory := $ResourceUpdate($1_token_event_store_TokenEventStoreV1_$memory, $t0->$addr, $t36); + } + if ($abort_flag) { + assume {:print "$at(190,6722,6729)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(112,9):", $t5} $t5 == $t5; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:228:15+1 + assume {:print "$at(190,7718,7719)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:216:9+1079 + assume {:print "$at(190,6650,7729)"} true; +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:229:10+1 + assume {:print "$at(190,7729,7730)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 + assume {:print "$at(190,7735,7736)"} true; +L3: + + // assert Not(And(Not(exists[@810]($t2)), Not(exists[@811]($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:20:9+69 + assume {:print "$at(191,655,724)"} true; + assert {:msg "assert_failed(191,655,724): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && !$ResourceExists($1_account_Account_$memory#811, $t2)); + + // assert Not(And(Not(exists[@810]($t2)), Ge(Add(select account::Account.guid_creation_num($t3), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:21:9+110 + assume {:print "$at(191,733,843)"} true; + assert {:msg "assert_failed(191,733,843): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && (($t3->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@810]($t2)), Gt(Add(select account::Account.guid_creation_num($t3), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + assume {:print "$at(191,852,938)"} true; + assert {:msg "assert_failed(191,852,938): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && (($t3->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:22:9+86 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.move:230:5+1 + assume {:print "$at(190,7735,7736)"} true; +L4: + + // assert Or(Or(And(Not(exists[@810]($t2)), Not(exists[@811]($t2))), And(Not(exists[@810]($t2)), Ge(Add(select account::Account.guid_creation_num($t3), 9), 1125899906842624))), And(Not(exists[@810]($t2)), Gt(Add(select account::Account.guid_creation_num($t3), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:7:5+199 + assume {:print "$at(191,136,335)"} true; + assert {:msg "assert_failed(191,136,335): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && !$ResourceExists($1_account_Account_$memory#811, $t2)) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && (($t3->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#810, $t2) && (($t3->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:7:5+199 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:59:10+173 +function {:inline} $1_token_spec_create_tokendata(creator: int, collection: $1_string_String, name: $1_string_String): $1_token_TokenDataId { + $1_token_TokenDataId(creator, collection, name) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:226:10+314 +function {:inline} $1_token_spec_create_token_id_raw(creator: int, collection: $1_string_String, name: $1_string_String, property_version: int): $1_token_TokenId { + (var token_data_id := $1_token_TokenDataId(creator, collection, name); $1_token_TokenId(token_data_id, property_version)) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:621:10+183 +function {:inline} $1_token_spec_create_token_data_id(creator: int, collection: $1_string_String, name: $1_string_String): $1_token_TokenDataId { + $1_token_TokenDataId(creator, collection, name) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:789:10+352 +function {:inline} $1_token_spec_balance_of($1_token_TokenStore_$memory: $Memory $1_token_TokenStore, owner: int, id: $1_token_TokenId): int { + (var token_store := $ResourceValue($1_token_TokenStore_$memory, owner); (if (!$ResourceExists($1_token_TokenStore_$memory, owner)) then (0) else ((if ($1_table_spec_contains'$1_token_TokenId_$1_token_Token'(token_store->$tokens, id)) then ($1_table_spec_get'$1_token_TokenId_$1_token_Token'(token_store->$tokens, id)->$amount) else (0))))) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+421 +function {:inline} $1_token_$create_token_data_id(creator: int, collection: $1_string_String, name: $1_string_String): $1_token_TokenDataId { + $1_token_TokenDataId(creator, collection, name) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+179 +function {:inline} $1_token_$create_token_id(token_data_id: $1_token_TokenDataId, property_version: int): $1_token_TokenId { + $1_token_TokenId(token_data_id, property_version) +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+295 +function {:inline} $1_token_$create_token_id_raw(creator: int, collection: $1_string_String, name: $1_string_String, property_version: int): $1_token_TokenId { + $1_token_TokenId($1_token_$create_token_data_id(creator, collection, name), property_version) +} + +// struct token::Deposit at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:294:5+80 +datatype $1_token_Deposit { + $1_token_Deposit($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_Deposit'_id(s: $1_token_Deposit, x: $1_token_TokenId): $1_token_Deposit { + $1_token_Deposit(x, s->$amount) +} +function {:inline} $Update'$1_token_Deposit'_amount(s: $1_token_Deposit, x: int): $1_token_Deposit { + $1_token_Deposit(s->$id, x) +} +function $IsValid'$1_token_Deposit'(s: $1_token_Deposit): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_Deposit'(s1: $1_token_Deposit, s2: $1_token_Deposit): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::DepositEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:287:5+85 +datatype $1_token_DepositEvent { + $1_token_DepositEvent($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_DepositEvent'_id(s: $1_token_DepositEvent, x: $1_token_TokenId): $1_token_DepositEvent { + $1_token_DepositEvent(x, s->$amount) +} +function {:inline} $Update'$1_token_DepositEvent'_amount(s: $1_token_DepositEvent, x: int): $1_token_DepositEvent { + $1_token_DepositEvent(s->$id, x) +} +function $IsValid'$1_token_DepositEvent'(s: $1_token_DepositEvent): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_DepositEvent'(s1: $1_token_DepositEvent, s2: $1_token_DepositEvent): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::Withdraw at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:307:5+81 +datatype $1_token_Withdraw { + $1_token_Withdraw($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_Withdraw'_id(s: $1_token_Withdraw, x: $1_token_TokenId): $1_token_Withdraw { + $1_token_Withdraw(x, s->$amount) +} +function {:inline} $Update'$1_token_Withdraw'_amount(s: $1_token_Withdraw, x: int): $1_token_Withdraw { + $1_token_Withdraw(s->$id, x) +} +function $IsValid'$1_token_Withdraw'(s: $1_token_Withdraw): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_Withdraw'(s1: $1_token_Withdraw, s2: $1_token_Withdraw): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::WithdrawEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:300:5+86 +datatype $1_token_WithdrawEvent { + $1_token_WithdrawEvent($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_WithdrawEvent'_id(s: $1_token_WithdrawEvent, x: $1_token_TokenId): $1_token_WithdrawEvent { + $1_token_WithdrawEvent(x, s->$amount) +} +function {:inline} $Update'$1_token_WithdrawEvent'_amount(s: $1_token_WithdrawEvent, x: int): $1_token_WithdrawEvent { + $1_token_WithdrawEvent(s->$id, x) +} +function $IsValid'$1_token_WithdrawEvent'(s: $1_token_WithdrawEvent): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_WithdrawEvent'(s1: $1_token_WithdrawEvent, s2: $1_token_WithdrawEvent): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::WithdrawCapability at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:279:5+156 +datatype $1_token_WithdrawCapability { + $1_token_WithdrawCapability($token_owner: int, $token_id: $1_token_TokenId, $amount: int, $expiration_sec: int) +} +function {:inline} $Update'$1_token_WithdrawCapability'_token_owner(s: $1_token_WithdrawCapability, x: int): $1_token_WithdrawCapability { + $1_token_WithdrawCapability(x, s->$token_id, s->$amount, s->$expiration_sec) +} +function {:inline} $Update'$1_token_WithdrawCapability'_token_id(s: $1_token_WithdrawCapability, x: $1_token_TokenId): $1_token_WithdrawCapability { + $1_token_WithdrawCapability(s->$token_owner, x, s->$amount, s->$expiration_sec) +} +function {:inline} $Update'$1_token_WithdrawCapability'_amount(s: $1_token_WithdrawCapability, x: int): $1_token_WithdrawCapability { + $1_token_WithdrawCapability(s->$token_owner, s->$token_id, x, s->$expiration_sec) +} +function {:inline} $Update'$1_token_WithdrawCapability'_expiration_sec(s: $1_token_WithdrawCapability, x: int): $1_token_WithdrawCapability { + $1_token_WithdrawCapability(s->$token_owner, s->$token_id, s->$amount, x) +} +function $IsValid'$1_token_WithdrawCapability'(s: $1_token_WithdrawCapability): bool { + $IsValid'address'(s->$token_owner) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) + && $IsValid'u64'(s->$expiration_sec) +} +function {:inline} $IsEqual'$1_token_WithdrawCapability'(s1: $1_token_WithdrawCapability, s2: $1_token_WithdrawCapability): bool { + $IsEqual'address'(s1->$token_owner, s2->$token_owner) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount) + && $IsEqual'u64'(s1->$expiration_sec, s2->$expiration_sec)} + +// struct token::Token at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:158:5+467 +datatype $1_token_Token { + $1_token_Token($id: $1_token_TokenId, $amount: int, $token_properties: $1_property_map_PropertyMap) +} +function {:inline} $Update'$1_token_Token'_id(s: $1_token_Token, x: $1_token_TokenId): $1_token_Token { + $1_token_Token(x, s->$amount, s->$token_properties) +} +function {:inline} $Update'$1_token_Token'_amount(s: $1_token_Token, x: int): $1_token_Token { + $1_token_Token(s->$id, x, s->$token_properties) +} +function {:inline} $Update'$1_token_Token'_token_properties(s: $1_token_Token, x: $1_property_map_PropertyMap): $1_token_Token { + $1_token_Token(s->$id, s->$amount, x) +} +function $IsValid'$1_token_Token'(s: $1_token_Token): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) + && $IsValid'$1_property_map_PropertyMap'(s->$token_properties) +} +function {:inline} $IsEqual'$1_token_Token'(s1: $1_token_Token, s2: $1_token_Token): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount) + && $IsEqual'$1_property_map_PropertyMap'(s1->$token_properties, s2->$token_properties)} + +// struct token::Royalty at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:209:5+340 +datatype $1_token_Royalty { + $1_token_Royalty($royalty_points_numerator: int, $royalty_points_denominator: int, $payee_address: int) +} +function {:inline} $Update'$1_token_Royalty'_royalty_points_numerator(s: $1_token_Royalty, x: int): $1_token_Royalty { + $1_token_Royalty(x, s->$royalty_points_denominator, s->$payee_address) +} +function {:inline} $Update'$1_token_Royalty'_royalty_points_denominator(s: $1_token_Royalty, x: int): $1_token_Royalty { + $1_token_Royalty(s->$royalty_points_numerator, x, s->$payee_address) +} +function {:inline} $Update'$1_token_Royalty'_payee_address(s: $1_token_Royalty, x: int): $1_token_Royalty { + $1_token_Royalty(s->$royalty_points_numerator, s->$royalty_points_denominator, x) +} +function $IsValid'$1_token_Royalty'(s: $1_token_Royalty): bool { + $IsValid'u64'(s->$royalty_points_numerator) + && $IsValid'u64'(s->$royalty_points_denominator) + && $IsValid'address'(s->$payee_address) +} +function {:inline} $IsEqual'$1_token_Royalty'(s1: $1_token_Royalty, s2: $1_token_Royalty): bool { + s1 == s2 +} + +// struct token::BurnToken at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:363:5+82 +datatype $1_token_BurnToken { + $1_token_BurnToken($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_BurnToken'_id(s: $1_token_BurnToken, x: $1_token_TokenId): $1_token_BurnToken { + $1_token_BurnToken(x, s->$amount) +} +function {:inline} $Update'$1_token_BurnToken'_amount(s: $1_token_BurnToken, x: int): $1_token_BurnToken { + $1_token_BurnToken(s->$id, x) +} +function $IsValid'$1_token_BurnToken'(s: $1_token_BurnToken): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_BurnToken'(s1: $1_token_BurnToken, s2: $1_token_BurnToken): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::BurnTokenEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:357:5+87 +datatype $1_token_BurnTokenEvent { + $1_token_BurnTokenEvent($id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_BurnTokenEvent'_id(s: $1_token_BurnTokenEvent, x: $1_token_TokenId): $1_token_BurnTokenEvent { + $1_token_BurnTokenEvent(x, s->$amount) +} +function {:inline} $Update'$1_token_BurnTokenEvent'_amount(s: $1_token_BurnTokenEvent, x: int): $1_token_BurnTokenEvent { + $1_token_BurnTokenEvent(s->$id, x) +} +function $IsValid'$1_token_BurnTokenEvent'(s: $1_token_BurnTokenEvent): bool { + $IsValid'$1_token_TokenId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_BurnTokenEvent'(s1: $1_token_BurnTokenEvent, s2: $1_token_BurnTokenEvent): bool { + $IsEqual'$1_token_TokenId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::CollectionData at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:262:5+912 +datatype $1_token_CollectionData { + $1_token_CollectionData($description: $1_string_String, $name: $1_string_String, $uri: $1_string_String, $supply: int, $maximum: int, $mutability_config: $1_token_CollectionMutabilityConfig) +} +function {:inline} $Update'$1_token_CollectionData'_description(s: $1_token_CollectionData, x: $1_string_String): $1_token_CollectionData { + $1_token_CollectionData(x, s->$name, s->$uri, s->$supply, s->$maximum, s->$mutability_config) +} +function {:inline} $Update'$1_token_CollectionData'_name(s: $1_token_CollectionData, x: $1_string_String): $1_token_CollectionData { + $1_token_CollectionData(s->$description, x, s->$uri, s->$supply, s->$maximum, s->$mutability_config) +} +function {:inline} $Update'$1_token_CollectionData'_uri(s: $1_token_CollectionData, x: $1_string_String): $1_token_CollectionData { + $1_token_CollectionData(s->$description, s->$name, x, s->$supply, s->$maximum, s->$mutability_config) +} +function {:inline} $Update'$1_token_CollectionData'_supply(s: $1_token_CollectionData, x: int): $1_token_CollectionData { + $1_token_CollectionData(s->$description, s->$name, s->$uri, x, s->$maximum, s->$mutability_config) +} +function {:inline} $Update'$1_token_CollectionData'_maximum(s: $1_token_CollectionData, x: int): $1_token_CollectionData { + $1_token_CollectionData(s->$description, s->$name, s->$uri, s->$supply, x, s->$mutability_config) +} +function {:inline} $Update'$1_token_CollectionData'_mutability_config(s: $1_token_CollectionData, x: $1_token_CollectionMutabilityConfig): $1_token_CollectionData { + $1_token_CollectionData(s->$description, s->$name, s->$uri, s->$supply, s->$maximum, x) +} +function $IsValid'$1_token_CollectionData'(s: $1_token_CollectionData): bool { + $IsValid'$1_string_String'(s->$description) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'u64'(s->$supply) + && $IsValid'u64'(s->$maximum) + && $IsValid'$1_token_CollectionMutabilityConfig'(s->$mutability_config) +} +function {:inline} $IsEqual'$1_token_CollectionData'(s1: $1_token_CollectionData, s2: $1_token_CollectionData): bool { + $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'u64'(s1->$supply, s2->$supply) + && $IsEqual'u64'(s1->$maximum, s2->$maximum) + && $IsEqual'$1_token_CollectionMutabilityConfig'(s1->$mutability_config, s2->$mutability_config)} + +// struct token::CollectionMutabilityConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:243:5+268 +datatype $1_token_CollectionMutabilityConfig { + $1_token_CollectionMutabilityConfig($description: bool, $uri: bool, $maximum: bool) +} +function {:inline} $Update'$1_token_CollectionMutabilityConfig'_description(s: $1_token_CollectionMutabilityConfig, x: bool): $1_token_CollectionMutabilityConfig { + $1_token_CollectionMutabilityConfig(x, s->$uri, s->$maximum) +} +function {:inline} $Update'$1_token_CollectionMutabilityConfig'_uri(s: $1_token_CollectionMutabilityConfig, x: bool): $1_token_CollectionMutabilityConfig { + $1_token_CollectionMutabilityConfig(s->$description, x, s->$maximum) +} +function {:inline} $Update'$1_token_CollectionMutabilityConfig'_maximum(s: $1_token_CollectionMutabilityConfig, x: bool): $1_token_CollectionMutabilityConfig { + $1_token_CollectionMutabilityConfig(s->$description, s->$uri, x) +} +function $IsValid'$1_token_CollectionMutabilityConfig'(s: $1_token_CollectionMutabilityConfig): bool { + $IsValid'bool'(s->$description) + && $IsValid'bool'(s->$uri) + && $IsValid'bool'(s->$maximum) +} +function {:inline} $IsEqual'$1_token_CollectionMutabilityConfig'(s1: $1_token_CollectionMutabilityConfig, s2: $1_token_CollectionMutabilityConfig): bool { + s1 == s2 +} + +// struct token::Collections at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:253:5+336 +datatype $1_token_Collections { + $1_token_Collections($collection_data: Table int ($1_token_CollectionData), $token_data: Table int ($1_token_TokenData), $create_collection_events: $1_event_EventHandle'$1_token_CreateCollectionEvent', $create_token_data_events: $1_event_EventHandle'$1_token_CreateTokenDataEvent', $mint_token_events: $1_event_EventHandle'$1_token_MintTokenEvent') +} +function {:inline} $Update'$1_token_Collections'_collection_data(s: $1_token_Collections, x: Table int ($1_token_CollectionData)): $1_token_Collections { + $1_token_Collections(x, s->$token_data, s->$create_collection_events, s->$create_token_data_events, s->$mint_token_events) +} +function {:inline} $Update'$1_token_Collections'_token_data(s: $1_token_Collections, x: Table int ($1_token_TokenData)): $1_token_Collections { + $1_token_Collections(s->$collection_data, x, s->$create_collection_events, s->$create_token_data_events, s->$mint_token_events) +} +function {:inline} $Update'$1_token_Collections'_create_collection_events(s: $1_token_Collections, x: $1_event_EventHandle'$1_token_CreateCollectionEvent'): $1_token_Collections { + $1_token_Collections(s->$collection_data, s->$token_data, x, s->$create_token_data_events, s->$mint_token_events) +} +function {:inline} $Update'$1_token_Collections'_create_token_data_events(s: $1_token_Collections, x: $1_event_EventHandle'$1_token_CreateTokenDataEvent'): $1_token_Collections { + $1_token_Collections(s->$collection_data, s->$token_data, s->$create_collection_events, x, s->$mint_token_events) +} +function {:inline} $Update'$1_token_Collections'_mint_token_events(s: $1_token_Collections, x: $1_event_EventHandle'$1_token_MintTokenEvent'): $1_token_Collections { + $1_token_Collections(s->$collection_data, s->$token_data, s->$create_collection_events, s->$create_token_data_events, x) +} +function $IsValid'$1_token_Collections'(s: $1_token_Collections): bool { + $IsValid'$1_table_Table'$1_string_String_$1_token_CollectionData''(s->$collection_data) + && $IsValid'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''(s->$token_data) + && $IsValid'$1_event_EventHandle'$1_token_CreateCollectionEvent''(s->$create_collection_events) + && $IsValid'$1_event_EventHandle'$1_token_CreateTokenDataEvent''(s->$create_token_data_events) + && $IsValid'$1_event_EventHandle'$1_token_MintTokenEvent''(s->$mint_token_events) +} +function {:inline} $IsEqual'$1_token_Collections'(s1: $1_token_Collections, s2: $1_token_Collections): bool { + s1 == s2 +} +var $1_token_Collections_$memory: $Memory $1_token_Collections; + +// struct token::CreateCollection at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:396:5+178 +datatype $1_token_CreateCollection { + $1_token_CreateCollection($creator: int, $collection_name: $1_string_String, $uri: $1_string_String, $description: $1_string_String, $maximum: int) +} +function {:inline} $Update'$1_token_CreateCollection'_creator(s: $1_token_CreateCollection, x: int): $1_token_CreateCollection { + $1_token_CreateCollection(x, s->$collection_name, s->$uri, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollection'_collection_name(s: $1_token_CreateCollection, x: $1_string_String): $1_token_CreateCollection { + $1_token_CreateCollection(s->$creator, x, s->$uri, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollection'_uri(s: $1_token_CreateCollection, x: $1_string_String): $1_token_CreateCollection { + $1_token_CreateCollection(s->$creator, s->$collection_name, x, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollection'_description(s: $1_token_CreateCollection, x: $1_string_String): $1_token_CreateCollection { + $1_token_CreateCollection(s->$creator, s->$collection_name, s->$uri, x, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollection'_maximum(s: $1_token_CreateCollection, x: int): $1_token_CreateCollection { + $1_token_CreateCollection(s->$creator, s->$collection_name, s->$uri, s->$description, x) +} +function $IsValid'$1_token_CreateCollection'(s: $1_token_CreateCollection): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'u64'(s->$maximum) +} +function {:inline} $IsEqual'$1_token_CreateCollection'(s1: $1_token_CreateCollection, s2: $1_token_CreateCollection): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'u64'(s1->$maximum, s2->$maximum)} + +// struct token::CreateCollectionEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:387:5+183 +datatype $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent($creator: int, $collection_name: $1_string_String, $uri: $1_string_String, $description: $1_string_String, $maximum: int) +} +function {:inline} $Update'$1_token_CreateCollectionEvent'_creator(s: $1_token_CreateCollectionEvent, x: int): $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent(x, s->$collection_name, s->$uri, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollectionEvent'_collection_name(s: $1_token_CreateCollectionEvent, x: $1_string_String): $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent(s->$creator, x, s->$uri, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollectionEvent'_uri(s: $1_token_CreateCollectionEvent, x: $1_string_String): $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent(s->$creator, s->$collection_name, x, s->$description, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollectionEvent'_description(s: $1_token_CreateCollectionEvent, x: $1_string_String): $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent(s->$creator, s->$collection_name, s->$uri, x, s->$maximum) +} +function {:inline} $Update'$1_token_CreateCollectionEvent'_maximum(s: $1_token_CreateCollectionEvent, x: int): $1_token_CreateCollectionEvent { + $1_token_CreateCollectionEvent(s->$creator, s->$collection_name, s->$uri, s->$description, x) +} +function $IsValid'$1_token_CreateCollectionEvent'(s: $1_token_CreateCollectionEvent): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection_name) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'u64'(s->$maximum) +} +function {:inline} $IsEqual'$1_token_CreateCollectionEvent'(s1: $1_token_CreateCollectionEvent, s2: $1_token_CreateCollectionEvent): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection_name, s2->$collection_name) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'u64'(s1->$maximum, s2->$maximum)} + +// struct token::CreateTokenData at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:329:5+459 +datatype $1_token_CreateTokenData { + $1_token_CreateTokenData($id: $1_token_TokenDataId, $description: $1_string_String, $maximum: int, $uri: $1_string_String, $royalty_payee_address: int, $royalty_points_denominator: int, $royalty_points_numerator: int, $name: $1_string_String, $mutability_config: $1_token_TokenMutabilityConfig, $property_keys: Vec ($1_string_String), $property_values: Vec (Vec (int)), $property_types: Vec ($1_string_String)) +} +function {:inline} $Update'$1_token_CreateTokenData'_id(s: $1_token_CreateTokenData, x: $1_token_TokenDataId): $1_token_CreateTokenData { + $1_token_CreateTokenData(x, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_description(s: $1_token_CreateTokenData, x: $1_string_String): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, x, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_maximum(s: $1_token_CreateTokenData, x: int): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, x, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_uri(s: $1_token_CreateTokenData, x: $1_string_String): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, x, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_royalty_payee_address(s: $1_token_CreateTokenData, x: int): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, x, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_royalty_points_denominator(s: $1_token_CreateTokenData, x: int): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, x, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_royalty_points_numerator(s: $1_token_CreateTokenData, x: int): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, x, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_name(s: $1_token_CreateTokenData, x: $1_string_String): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, x, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_mutability_config(s: $1_token_CreateTokenData, x: $1_token_TokenMutabilityConfig): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, x, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_property_keys(s: $1_token_CreateTokenData, x: Vec ($1_string_String)): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, x, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_property_values(s: $1_token_CreateTokenData, x: Vec (Vec (int))): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, x, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenData'_property_types(s: $1_token_CreateTokenData, x: Vec ($1_string_String)): $1_token_CreateTokenData { + $1_token_CreateTokenData(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, x) +} +function $IsValid'$1_token_CreateTokenData'(s: $1_token_CreateTokenData): bool { + $IsValid'$1_token_TokenDataId'(s->$id) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'u64'(s->$maximum) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'address'(s->$royalty_payee_address) + && $IsValid'u64'(s->$royalty_points_denominator) + && $IsValid'u64'(s->$royalty_points_numerator) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_token_TokenMutabilityConfig'(s->$mutability_config) + && $IsValid'vec'$1_string_String''(s->$property_keys) + && $IsValid'vec'vec'u8'''(s->$property_values) + && $IsValid'vec'$1_string_String''(s->$property_types) +} +function {:inline} $IsEqual'$1_token_CreateTokenData'(s1: $1_token_CreateTokenData, s2: $1_token_CreateTokenData): bool { + $IsEqual'$1_token_TokenDataId'(s1->$id, s2->$id) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'u64'(s1->$maximum, s2->$maximum) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'address'(s1->$royalty_payee_address, s2->$royalty_payee_address) + && $IsEqual'u64'(s1->$royalty_points_denominator, s2->$royalty_points_denominator) + && $IsEqual'u64'(s1->$royalty_points_numerator, s2->$royalty_points_numerator) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_token_TokenMutabilityConfig'(s1->$mutability_config, s2->$mutability_config) + && $IsEqual'vec'$1_string_String''(s1->$property_keys, s2->$property_keys) + && $IsEqual'vec'vec'u8'''(s1->$property_values, s2->$property_values) + && $IsEqual'vec'$1_string_String''(s1->$property_types, s2->$property_types)} + +// struct token::CreateTokenDataEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:313:5+464 +datatype $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent($id: $1_token_TokenDataId, $description: $1_string_String, $maximum: int, $uri: $1_string_String, $royalty_payee_address: int, $royalty_points_denominator: int, $royalty_points_numerator: int, $name: $1_string_String, $mutability_config: $1_token_TokenMutabilityConfig, $property_keys: Vec ($1_string_String), $property_values: Vec (Vec (int)), $property_types: Vec ($1_string_String)) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_id(s: $1_token_CreateTokenDataEvent, x: $1_token_TokenDataId): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(x, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_description(s: $1_token_CreateTokenDataEvent, x: $1_string_String): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, x, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_maximum(s: $1_token_CreateTokenDataEvent, x: int): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, x, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_uri(s: $1_token_CreateTokenDataEvent, x: $1_string_String): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, x, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_royalty_payee_address(s: $1_token_CreateTokenDataEvent, x: int): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, x, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_royalty_points_denominator(s: $1_token_CreateTokenDataEvent, x: int): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, x, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_royalty_points_numerator(s: $1_token_CreateTokenDataEvent, x: int): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, x, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_name(s: $1_token_CreateTokenDataEvent, x: $1_string_String): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, x, s->$mutability_config, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_mutability_config(s: $1_token_CreateTokenDataEvent, x: $1_token_TokenMutabilityConfig): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, x, s->$property_keys, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_property_keys(s: $1_token_CreateTokenDataEvent, x: Vec ($1_string_String)): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, x, s->$property_values, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_property_values(s: $1_token_CreateTokenDataEvent, x: Vec (Vec (int))): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, x, s->$property_types) +} +function {:inline} $Update'$1_token_CreateTokenDataEvent'_property_types(s: $1_token_CreateTokenDataEvent, x: Vec ($1_string_String)): $1_token_CreateTokenDataEvent { + $1_token_CreateTokenDataEvent(s->$id, s->$description, s->$maximum, s->$uri, s->$royalty_payee_address, s->$royalty_points_denominator, s->$royalty_points_numerator, s->$name, s->$mutability_config, s->$property_keys, s->$property_values, x) +} +function $IsValid'$1_token_CreateTokenDataEvent'(s: $1_token_CreateTokenDataEvent): bool { + $IsValid'$1_token_TokenDataId'(s->$id) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'u64'(s->$maximum) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'address'(s->$royalty_payee_address) + && $IsValid'u64'(s->$royalty_points_denominator) + && $IsValid'u64'(s->$royalty_points_numerator) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_token_TokenMutabilityConfig'(s->$mutability_config) + && $IsValid'vec'$1_string_String''(s->$property_keys) + && $IsValid'vec'vec'u8'''(s->$property_values) + && $IsValid'vec'$1_string_String''(s->$property_types) +} +function {:inline} $IsEqual'$1_token_CreateTokenDataEvent'(s1: $1_token_CreateTokenDataEvent, s2: $1_token_CreateTokenDataEvent): bool { + $IsEqual'$1_token_TokenDataId'(s1->$id, s2->$id) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'u64'(s1->$maximum, s2->$maximum) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'address'(s1->$royalty_payee_address, s2->$royalty_payee_address) + && $IsEqual'u64'(s1->$royalty_points_denominator, s2->$royalty_points_denominator) + && $IsEqual'u64'(s1->$royalty_points_numerator, s2->$royalty_points_numerator) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_token_TokenMutabilityConfig'(s1->$mutability_config, s2->$mutability_config) + && $IsEqual'vec'$1_string_String''(s1->$property_keys, s2->$property_keys) + && $IsEqual'vec'vec'u8'''(s1->$property_values, s2->$property_values) + && $IsEqual'vec'$1_string_String''(s1->$property_types, s2->$property_types)} + +// struct token::MintToken at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:351:5+86 +datatype $1_token_MintToken { + $1_token_MintToken($id: $1_token_TokenDataId, $amount: int) +} +function {:inline} $Update'$1_token_MintToken'_id(s: $1_token_MintToken, x: $1_token_TokenDataId): $1_token_MintToken { + $1_token_MintToken(x, s->$amount) +} +function {:inline} $Update'$1_token_MintToken'_amount(s: $1_token_MintToken, x: int): $1_token_MintToken { + $1_token_MintToken(s->$id, x) +} +function $IsValid'$1_token_MintToken'(s: $1_token_MintToken): bool { + $IsValid'$1_token_TokenDataId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_MintToken'(s1: $1_token_MintToken, s2: $1_token_MintToken): bool { + $IsEqual'$1_token_TokenDataId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::MintTokenEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:345:5+91 +datatype $1_token_MintTokenEvent { + $1_token_MintTokenEvent($id: $1_token_TokenDataId, $amount: int) +} +function {:inline} $Update'$1_token_MintTokenEvent'_id(s: $1_token_MintTokenEvent, x: $1_token_TokenDataId): $1_token_MintTokenEvent { + $1_token_MintTokenEvent(x, s->$amount) +} +function {:inline} $Update'$1_token_MintTokenEvent'_amount(s: $1_token_MintTokenEvent, x: int): $1_token_MintTokenEvent { + $1_token_MintTokenEvent(s->$id, x) +} +function $IsValid'$1_token_MintTokenEvent'(s: $1_token_MintTokenEvent): bool { + $IsValid'$1_token_TokenDataId'(s->$id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_MintTokenEvent'(s1: $1_token_MintTokenEvent, s2: $1_token_MintTokenEvent): bool { + $IsEqual'$1_token_TokenDataId'(s1->$id, s2->$id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token::MutateTokenPropertyMap at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:378:5+200 +datatype $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap($old_id: $1_token_TokenId, $new_id: $1_token_TokenId, $keys: Vec ($1_string_String), $values: Vec (Vec (int)), $types: Vec ($1_string_String)) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMap'_old_id(s: $1_token_MutateTokenPropertyMap, x: $1_token_TokenId): $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap(x, s->$new_id, s->$keys, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMap'_new_id(s: $1_token_MutateTokenPropertyMap, x: $1_token_TokenId): $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap(s->$old_id, x, s->$keys, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMap'_keys(s: $1_token_MutateTokenPropertyMap, x: Vec ($1_string_String)): $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap(s->$old_id, s->$new_id, x, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMap'_values(s: $1_token_MutateTokenPropertyMap, x: Vec (Vec (int))): $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap(s->$old_id, s->$new_id, s->$keys, x, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMap'_types(s: $1_token_MutateTokenPropertyMap, x: Vec ($1_string_String)): $1_token_MutateTokenPropertyMap { + $1_token_MutateTokenPropertyMap(s->$old_id, s->$new_id, s->$keys, s->$values, x) +} +function $IsValid'$1_token_MutateTokenPropertyMap'(s: $1_token_MutateTokenPropertyMap): bool { + $IsValid'$1_token_TokenId'(s->$old_id) + && $IsValid'$1_token_TokenId'(s->$new_id) + && $IsValid'vec'$1_string_String''(s->$keys) + && $IsValid'vec'vec'u8'''(s->$values) + && $IsValid'vec'$1_string_String''(s->$types) +} +function {:inline} $IsEqual'$1_token_MutateTokenPropertyMap'(s1: $1_token_MutateTokenPropertyMap, s2: $1_token_MutateTokenPropertyMap): bool { + $IsEqual'$1_token_TokenId'(s1->$old_id, s2->$old_id) + && $IsEqual'$1_token_TokenId'(s1->$new_id, s2->$new_id) + && $IsEqual'vec'$1_string_String''(s1->$keys, s2->$keys) + && $IsEqual'vec'vec'u8'''(s1->$values, s2->$values) + && $IsEqual'vec'$1_string_String''(s1->$types, s2->$types)} + +// struct token::MutateTokenPropertyMapEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:369:5+205 +datatype $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent($old_id: $1_token_TokenId, $new_id: $1_token_TokenId, $keys: Vec ($1_string_String), $values: Vec (Vec (int)), $types: Vec ($1_string_String)) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMapEvent'_old_id(s: $1_token_MutateTokenPropertyMapEvent, x: $1_token_TokenId): $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent(x, s->$new_id, s->$keys, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMapEvent'_new_id(s: $1_token_MutateTokenPropertyMapEvent, x: $1_token_TokenId): $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent(s->$old_id, x, s->$keys, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMapEvent'_keys(s: $1_token_MutateTokenPropertyMapEvent, x: Vec ($1_string_String)): $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent(s->$old_id, s->$new_id, x, s->$values, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMapEvent'_values(s: $1_token_MutateTokenPropertyMapEvent, x: Vec (Vec (int))): $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent(s->$old_id, s->$new_id, s->$keys, x, s->$types) +} +function {:inline} $Update'$1_token_MutateTokenPropertyMapEvent'_types(s: $1_token_MutateTokenPropertyMapEvent, x: Vec ($1_string_String)): $1_token_MutateTokenPropertyMapEvent { + $1_token_MutateTokenPropertyMapEvent(s->$old_id, s->$new_id, s->$keys, s->$values, x) +} +function $IsValid'$1_token_MutateTokenPropertyMapEvent'(s: $1_token_MutateTokenPropertyMapEvent): bool { + $IsValid'$1_token_TokenId'(s->$old_id) + && $IsValid'$1_token_TokenId'(s->$new_id) + && $IsValid'vec'$1_string_String''(s->$keys) + && $IsValid'vec'vec'u8'''(s->$values) + && $IsValid'vec'$1_string_String''(s->$types) +} +function {:inline} $IsEqual'$1_token_MutateTokenPropertyMapEvent'(s1: $1_token_MutateTokenPropertyMapEvent, s2: $1_token_MutateTokenPropertyMapEvent): bool { + $IsEqual'$1_token_TokenId'(s1->$old_id, s2->$old_id) + && $IsEqual'$1_token_TokenId'(s1->$new_id, s2->$new_id) + && $IsEqual'vec'$1_string_String''(s1->$keys, s2->$keys) + && $IsEqual'vec'vec'u8'''(s1->$values, s2->$values) + && $IsEqual'vec'$1_string_String''(s1->$types, s2->$types)} + +// struct token::TokenData at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:187:5+1333 +datatype $1_token_TokenData { + $1_token_TokenData($maximum: int, $largest_property_version: int, $supply: int, $uri: $1_string_String, $royalty: $1_token_Royalty, $name: $1_string_String, $description: $1_string_String, $default_properties: $1_property_map_PropertyMap, $mutability_config: $1_token_TokenMutabilityConfig) +} +function {:inline} $Update'$1_token_TokenData'_maximum(s: $1_token_TokenData, x: int): $1_token_TokenData { + $1_token_TokenData(x, s->$largest_property_version, s->$supply, s->$uri, s->$royalty, s->$name, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_largest_property_version(s: $1_token_TokenData, x: int): $1_token_TokenData { + $1_token_TokenData(s->$maximum, x, s->$supply, s->$uri, s->$royalty, s->$name, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_supply(s: $1_token_TokenData, x: int): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, x, s->$uri, s->$royalty, s->$name, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_uri(s: $1_token_TokenData, x: $1_string_String): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, x, s->$royalty, s->$name, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_royalty(s: $1_token_TokenData, x: $1_token_Royalty): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, s->$uri, x, s->$name, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_name(s: $1_token_TokenData, x: $1_string_String): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, s->$uri, s->$royalty, x, s->$description, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_description(s: $1_token_TokenData, x: $1_string_String): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, s->$uri, s->$royalty, s->$name, x, s->$default_properties, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_default_properties(s: $1_token_TokenData, x: $1_property_map_PropertyMap): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, s->$uri, s->$royalty, s->$name, s->$description, x, s->$mutability_config) +} +function {:inline} $Update'$1_token_TokenData'_mutability_config(s: $1_token_TokenData, x: $1_token_TokenMutabilityConfig): $1_token_TokenData { + $1_token_TokenData(s->$maximum, s->$largest_property_version, s->$supply, s->$uri, s->$royalty, s->$name, s->$description, s->$default_properties, x) +} +function $IsValid'$1_token_TokenData'(s: $1_token_TokenData): bool { + $IsValid'u64'(s->$maximum) + && $IsValid'u64'(s->$largest_property_version) + && $IsValid'u64'(s->$supply) + && $IsValid'$1_string_String'(s->$uri) + && $IsValid'$1_token_Royalty'(s->$royalty) + && $IsValid'$1_string_String'(s->$name) + && $IsValid'$1_string_String'(s->$description) + && $IsValid'$1_property_map_PropertyMap'(s->$default_properties) + && $IsValid'$1_token_TokenMutabilityConfig'(s->$mutability_config) +} +function {:inline} $IsEqual'$1_token_TokenData'(s1: $1_token_TokenData, s2: $1_token_TokenData): bool { + $IsEqual'u64'(s1->$maximum, s2->$maximum) + && $IsEqual'u64'(s1->$largest_property_version, s2->$largest_property_version) + && $IsEqual'u64'(s1->$supply, s2->$supply) + && $IsEqual'$1_string_String'(s1->$uri, s2->$uri) + && $IsEqual'$1_token_Royalty'(s1->$royalty, s2->$royalty) + && $IsEqual'$1_string_String'(s1->$name, s2->$name) + && $IsEqual'$1_string_String'(s1->$description, s2->$description) + && $IsEqual'$1_property_map_PropertyMap'(s1->$default_properties, s2->$default_properties) + && $IsEqual'$1_token_TokenMutabilityConfig'(s1->$mutability_config, s2->$mutability_config)} + +// struct token::TokenDataId at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:177:5+366 +datatype $1_token_TokenDataId { + $1_token_TokenDataId($creator: int, $collection: $1_string_String, $name: $1_string_String) +} +function {:inline} $Update'$1_token_TokenDataId'_creator(s: $1_token_TokenDataId, x: int): $1_token_TokenDataId { + $1_token_TokenDataId(x, s->$collection, s->$name) +} +function {:inline} $Update'$1_token_TokenDataId'_collection(s: $1_token_TokenDataId, x: $1_string_String): $1_token_TokenDataId { + $1_token_TokenDataId(s->$creator, x, s->$name) +} +function {:inline} $Update'$1_token_TokenDataId'_name(s: $1_token_TokenDataId, x: $1_string_String): $1_token_TokenDataId { + $1_token_TokenDataId(s->$creator, s->$collection, x) +} +function $IsValid'$1_token_TokenDataId'(s: $1_token_TokenDataId): bool { + $IsValid'address'(s->$creator) + && $IsValid'$1_string_String'(s->$collection) + && $IsValid'$1_string_String'(s->$name) +} +function {:inline} $IsEqual'$1_token_TokenDataId'(s1: $1_token_TokenDataId, s2: $1_token_TokenDataId): bool { + $IsEqual'address'(s1->$creator, s2->$creator) + && $IsEqual'$1_string_String'(s1->$collection, s2->$collection) + && $IsEqual'$1_string_String'(s1->$name, s2->$name)} + +// struct token::TokenId at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:169:5+360 +datatype $1_token_TokenId { + $1_token_TokenId($token_data_id: $1_token_TokenDataId, $property_version: int) +} +function {:inline} $Update'$1_token_TokenId'_token_data_id(s: $1_token_TokenId, x: $1_token_TokenDataId): $1_token_TokenId { + $1_token_TokenId(x, s->$property_version) +} +function {:inline} $Update'$1_token_TokenId'_property_version(s: $1_token_TokenId, x: int): $1_token_TokenId { + $1_token_TokenId(s->$token_data_id, x) +} +function $IsValid'$1_token_TokenId'(s: $1_token_TokenId): bool { + $IsValid'$1_token_TokenDataId'(s->$token_data_id) + && $IsValid'u64'(s->$property_version) +} +function {:inline} $IsEqual'$1_token_TokenId'(s1: $1_token_TokenId, s2: $1_token_TokenId): bool { + $IsEqual'$1_token_TokenDataId'(s1->$token_data_id, s2->$token_data_id) + && $IsEqual'u64'(s1->$property_version, s2->$property_version)} + +// struct token::TokenMutabilityConfig at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:218:5+435 +datatype $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig($maximum: bool, $uri: bool, $royalty: bool, $description: bool, $properties: bool) +} +function {:inline} $Update'$1_token_TokenMutabilityConfig'_maximum(s: $1_token_TokenMutabilityConfig, x: bool): $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig(x, s->$uri, s->$royalty, s->$description, s->$properties) +} +function {:inline} $Update'$1_token_TokenMutabilityConfig'_uri(s: $1_token_TokenMutabilityConfig, x: bool): $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig(s->$maximum, x, s->$royalty, s->$description, s->$properties) +} +function {:inline} $Update'$1_token_TokenMutabilityConfig'_royalty(s: $1_token_TokenMutabilityConfig, x: bool): $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig(s->$maximum, s->$uri, x, s->$description, s->$properties) +} +function {:inline} $Update'$1_token_TokenMutabilityConfig'_description(s: $1_token_TokenMutabilityConfig, x: bool): $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig(s->$maximum, s->$uri, s->$royalty, x, s->$properties) +} +function {:inline} $Update'$1_token_TokenMutabilityConfig'_properties(s: $1_token_TokenMutabilityConfig, x: bool): $1_token_TokenMutabilityConfig { + $1_token_TokenMutabilityConfig(s->$maximum, s->$uri, s->$royalty, s->$description, x) +} +function $IsValid'$1_token_TokenMutabilityConfig'(s: $1_token_TokenMutabilityConfig): bool { + $IsValid'bool'(s->$maximum) + && $IsValid'bool'(s->$uri) + && $IsValid'bool'(s->$royalty) + && $IsValid'bool'(s->$description) + && $IsValid'bool'(s->$properties) +} +function {:inline} $IsEqual'$1_token_TokenMutabilityConfig'(s1: $1_token_TokenMutabilityConfig, s2: $1_token_TokenMutabilityConfig): bool { + s1 == s2 +} + +// struct token::TokenStore at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:232:5+383 +datatype $1_token_TokenStore { + $1_token_TokenStore($tokens: Table int ($1_token_Token), $direct_transfer: bool, $deposit_events: $1_event_EventHandle'$1_token_DepositEvent', $withdraw_events: $1_event_EventHandle'$1_token_WithdrawEvent', $burn_events: $1_event_EventHandle'$1_token_BurnTokenEvent', $mutate_token_property_events: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent') +} +function {:inline} $Update'$1_token_TokenStore'_tokens(s: $1_token_TokenStore, x: Table int ($1_token_Token)): $1_token_TokenStore { + $1_token_TokenStore(x, s->$direct_transfer, s->$deposit_events, s->$withdraw_events, s->$burn_events, s->$mutate_token_property_events) +} +function {:inline} $Update'$1_token_TokenStore'_direct_transfer(s: $1_token_TokenStore, x: bool): $1_token_TokenStore { + $1_token_TokenStore(s->$tokens, x, s->$deposit_events, s->$withdraw_events, s->$burn_events, s->$mutate_token_property_events) +} +function {:inline} $Update'$1_token_TokenStore'_deposit_events(s: $1_token_TokenStore, x: $1_event_EventHandle'$1_token_DepositEvent'): $1_token_TokenStore { + $1_token_TokenStore(s->$tokens, s->$direct_transfer, x, s->$withdraw_events, s->$burn_events, s->$mutate_token_property_events) +} +function {:inline} $Update'$1_token_TokenStore'_withdraw_events(s: $1_token_TokenStore, x: $1_event_EventHandle'$1_token_WithdrawEvent'): $1_token_TokenStore { + $1_token_TokenStore(s->$tokens, s->$direct_transfer, s->$deposit_events, x, s->$burn_events, s->$mutate_token_property_events) +} +function {:inline} $Update'$1_token_TokenStore'_burn_events(s: $1_token_TokenStore, x: $1_event_EventHandle'$1_token_BurnTokenEvent'): $1_token_TokenStore { + $1_token_TokenStore(s->$tokens, s->$direct_transfer, s->$deposit_events, s->$withdraw_events, x, s->$mutate_token_property_events) +} +function {:inline} $Update'$1_token_TokenStore'_mutate_token_property_events(s: $1_token_TokenStore, x: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'): $1_token_TokenStore { + $1_token_TokenStore(s->$tokens, s->$direct_transfer, s->$deposit_events, s->$withdraw_events, s->$burn_events, x) +} +function $IsValid'$1_token_TokenStore'(s: $1_token_TokenStore): bool { + $IsValid'$1_table_Table'$1_token_TokenId_$1_token_Token''(s->$tokens) + && $IsValid'bool'(s->$direct_transfer) + && $IsValid'$1_event_EventHandle'$1_token_DepositEvent''(s->$deposit_events) + && $IsValid'$1_event_EventHandle'$1_token_WithdrawEvent''(s->$withdraw_events) + && $IsValid'$1_event_EventHandle'$1_token_BurnTokenEvent''(s->$burn_events) + && $IsValid'$1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent''(s->$mutate_token_property_events) +} +function {:inline} $IsEqual'$1_token_TokenStore'(s1: $1_token_TokenStore, s2: $1_token_TokenStore): bool { + s1 == s2 +} +var $1_token_TokenStore_$memory: $Memory $1_token_TokenStore; + +// fun token::burn [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+3378 +procedure {:timeLimit 80} $1_token_burn$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: int) returns () +{ + // declare local variables + var $t6: $1_string_String; + var $t7: $1_property_map_PropertyMap; + var $t8: $1_string_String; + var $t9: $1_property_map_PropertyMap; + var $t10: int; + var $t11: $Mutation ($1_token_CollectionData); + var $t12: $Mutation ($1_token_Collections); + var $t13: int; + var $t14: $Mutation ($1_token_TokenData); + var $t15: $Mutation ($1_token_TokenData); + var $t16: $1_token_TokenId; + var $t17: $Mutation ($1_token_TokenStore); + var $t18: $1_token_TokenId; + var $t19: int; + var $t20: $1_token_Collections; + var $t21: $1_token_TokenData; + var $t22: int; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: $1_token_TokenId; + var $t28: $1_token_TokenDataId; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_token_Collections); + var $t34: Table int ($1_token_TokenData); + var $t35: $1_token_TokenDataId; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: $Mutation (Table int ($1_token_TokenData)); + var $t40: $1_token_TokenDataId; + var $t41: $Mutation ($1_token_TokenData); + var $t42: $1_property_map_PropertyMap; + var $t43: Vec (int); + var $t44: $1_string_String; + var $t45: bool; + var $t46: int; + var $t47: int; + var $t48: $1_property_map_PropertyMap; + var $t49: Vec (int); + var $t50: $1_string_String; + var $t51: Vec (int); + var $t52: $1_property_map_PropertyValue; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: int; + var $t57: Table int ($1_token_Token); + var $t58: $1_token_Token; + var $t59: $1_token_TokenId; + var $t60: int; + var $t61: $1_property_map_PropertyMap; + var $t62: int; + var $t63: $Mutation ($1_token_TokenStore); + var $t64: bool; + var $t65: $1_token_BurnToken; + var $t66: $Mutation ($1_event_EventHandle'$1_token_BurnTokenEvent'); + var $t67: $1_token_BurnTokenEvent; + var $t68: $Mutation (Table int ($1_token_TokenData)); + var $t69: $1_token_TokenDataId; + var $t70: $Mutation ($1_token_TokenData); + var $t71: int; + var $t72: int; + var $t73: bool; + var $t74: int; + var $t75: int; + var $t76: $Mutation (int); + var $t77: int; + var $t78: int; + var $t79: bool; + var $t80: $Mutation (Table int ($1_token_TokenData)); + var $t81: $1_token_TokenDataId; + var $t82: $1_token_TokenData; + var $t83: $Mutation (Table int ($1_token_CollectionData)); + var $t84: $1_token_TokenDataId; + var $t85: $1_string_String; + var $t86: $Mutation ($1_token_CollectionData); + var $t87: int; + var $t88: int; + var $t89: bool; + var $t90: int; + var $t91: int; + var $t92: int; + var $t93: $Mutation (int); + var $t94: int; + var $t95: int; + var $t96: bool; + var $t97: $Mutation (Table int ($1_token_CollectionData)); + var $t98: $1_string_String; + var $t99: $1_token_CollectionData; + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'$1_token_Collections': $1_token_Collections; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_Collections_$memory#854: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$at(186,22327,22328)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume $IsValid'u64'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t18, token::spec_create_token_id_raw($t1, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:208:9+94 + assume {:print "$at(187,7498,7592)"} true; + assume ($t18 == $1_token_spec_create_token_id_raw($t1, $t2, $t3, $t4)); + + // assume Identical($t19, select token::TokenDataId.creator(select token::TokenId.token_data_id($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:209:9+50 + assume {:print "$at(187,7601,7651)"} true; + assume ($t19 == $t18->$token_data_id->$creator); + + // assume Identical($t20, global($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:210:9+63 + assume {:print "$at(187,7660,7723)"} true; + assume ($t20 == $ResourceValue($1_token_Collections_$memory, $t19)); + + // assume Identical($t21, table::spec_get(select token::Collections.token_data($t20), select token::TokenId.token_data_id($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:211:9+116 + assume {:print "$at(187,7732,7848)"} true; + assume ($t21 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t20->$token_data, $t18->$token_data_id)); + + // @854 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$at(186,22327,22328)"} true; + $1_token_Collections_$memory#854 := $1_token_Collections_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,0):", $t0} $t0 == $t0; + + // trace_local[creators_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,1):", $t1} $t1 == $t1; + + // trace_local[collection]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,3):", $t3} $t3 == $t3; + + // trace_local[property_version]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,4):", $t4} $t4 == $t4; + + // trace_local[amount]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:634:5+1 + assume {:print "$track_local(113,4,5):", $t5} $t5 == $t5; + + // $t22 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:26+1 + assume {:print "$at(186,22576,22577)"} true; + $t22 := 0; + assume $IsValid'u64'($t22); + + // $t23 := >($t5, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:24+1 + call $t23 := $Gt($t5, $t22); + + // if ($t23) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 + if ($t23) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 + assume {:print "$at(186,22559,22636)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 +L0: + + // $t24 := 29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:53+31 + assume {:print "$at(186,22603,22634)"} true; + $t24 := 29; + assume $IsValid'u64'($t24); + + // $t25 := error::invalid_argument($t24) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:29+56 + call $t25 := $1_error_invalid_argument($t24); + if ($abort_flag) { + assume {:print "$at(186,22579,22635)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 + assume {:print "$at(186,22559,22636)"} true; + assume {:print "$track_abort(113,4):", $t25} $t25 == $t25; + + // $t26 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 + $t26 := $t25; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:642:9+77 + goto L30; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:643:44+16 + assume {:print "$at(186,22681,22697)"} true; +L2: + + // $t27 := token::create_token_id_raw($t1, $t2, $t3, $t4) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:643:24+73 + assume {:print "$at(186,22661,22734)"} true; + call $t27 := $1_token_create_token_id_raw($t1, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(186,22661,22734)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[token_id]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:643:13+8 + assume {:print "$track_local(113,4,16):", $t27} $t27 == $t27; + + // $t28 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:644:28+22 + assume {:print "$at(186,22763,22785)"} true; + $t28 := $t27->$token_data_id; + + // $t29 := get_field.creator($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:644:28+30 + $t29 := $t28->$creator; + + // trace_local[creator_addr]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:644:13+12 + assume {:print "$track_local(113,4,13):", $t29} $t29 == $t29; + + // $t30 := exists($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:646:13+6 + assume {:print "$at(186,22824,22830)"} true; + $t30 := $ResourceExists($1_token_Collections_$memory, $t29); + + // if ($t30) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 + assume {:print "$at(186,22803,22926)"} true; + if ($t30) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 + assume {:print "$at(186,22803,22926)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 +L3: + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:647:30+26 + assume {:print "$at(186,22888,22914)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:647:13+44 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(186,22871,22915)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 + assume {:print "$at(186,22803,22926)"} true; + assume {:print "$track_abort(113,4):", $t32} $t32 == $t32; + + // $t26 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 + $t26 := $t32; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:645:9+123 + goto L30; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:650:58+12 + assume {:print "$at(186,22986,22998)"} true; +L5: + + // $t33 := borrow_global($t29) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:650:27+17 + assume {:print "$at(186,22955,22972)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t33 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(186,22955,22972)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[collections]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:650:13+11 + $temp_0'$1_token_Collections' := $Dereference($t33); + assume {:print "$track_local(113,4,12):", $temp_0'$1_token_Collections'} $temp_0'$1_token_Collections' == $temp_0'$1_token_Collections'; + + // $t34 := get_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:652:29+23 + assume {:print "$at(186,23046,23069)"} true; + $t34 := $Dereference($t33)->$token_data; + + // $t35 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:652:54+22 + $t35 := $t27->$token_data_id; + + // $t36 := table::contains($t34, $t35) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:652:13+64 + call $t36 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t34, $t35); + if ($abort_flag) { + assume {:print "$at(186,23030,23094)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // if ($t36) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + assume {:print "$at(186,23009,23162)"} true; + if ($t36) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + assume {:print "$at(186,23009,23162)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 +L6: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + assume {:print "$at(186,23009,23162)"} true; + + // $t37 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:653:30+25 + assume {:print "$at(186,23125,23150)"} true; + $t37 := 10; + assume $IsValid'u64'($t37); + + // $t38 := error::not_found($t37) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:653:13+43 + call $t38 := $1_error_not_found($t37); + if ($abort_flag) { + assume {:print "$at(186,23108,23151)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + assume {:print "$at(186,23009,23162)"} true; + assume {:print "$track_abort(113,4):", $t38} $t38 == $t38; + + // $t26 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + $t26 := $t38; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:651:9+153 + goto L30; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:657:18+11 + assume {:print "$at(186,23226,23237)"} true; +L8: + + // $t39 := borrow_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:657:13+27 + assume {:print "$at(186,23221,23248)"} true; + $t39 := $ChildMutation($t33, 1, $Dereference($t33)->$token_data); + + // $t40 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:658:13+22 + assume {:print "$at(186,23262,23284)"} true; + $t40 := $t27->$token_data_id; + + // $t41 := table::borrow_mut($t39, $t40) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:656:26+105 + assume {:print "$at(186,23190,23295)"} true; + call $t41,$t39 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t39, $t40); + if ($abort_flag) { + assume {:print "$at(186,23190,23295)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[token_data]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:656:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t41); + assume {:print "$track_local(113,4,14):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t42 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:662:40+30 + assume {:print "$at(186,23354,23384)"} true; + $t42 := $Dereference($t41)->$default_properties; + + // $t43 := [84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 79, 87, 78, 69, 82] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:662:86+17 + $t43 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 79, 87)), MakeVec3(78, 69, 82)); + assume $IsValid'vec'u8''($t43); + + // $t44 := string::utf8($t43) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:662:73+31 + call $t44 := $1_string_utf8($t43); + if ($abort_flag) { + assume {:print "$at(186,23387,23418)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // $t45 := property_map::contains_key($t42, $t44) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:662:13+92 + call $t45 := $1_property_map_contains_key($t42, $t44); + if ($abort_flag) { + assume {:print "$at(186,23327,23419)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // if ($t45) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + assume {:print "$at(186,23306,23493)"} true; + if ($t45) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + assume {:print "$at(186,23306,23493)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 +L9: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + assume {:print "$at(186,23306,23493)"} true; + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + + // $t46 := 30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:663:38+24 + assume {:print "$at(186,23458,23482)"} true; + $t46 := 30; + assume $IsValid'u64'($t46); + + // $t47 := error::permission_denied($t46) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:663:13+50 + call $t47 := $1_error_permission_denied($t46); + if ($abort_flag) { + assume {:print "$at(186,23433,23483)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + assume {:print "$at(186,23306,23493)"} true; + assume {:print "$track_abort(113,4):", $t47} $t47 == $t47; + + // $t26 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + $t26 := $t47; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:661:9+187 + goto L30; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:665:59+10 + assume {:print "$at(186,23553,23563)"} true; +L11: + + // $t48 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:665:58+30 + assume {:print "$at(186,23552,23582)"} true; + $t48 := $Dereference($t41)->$default_properties; + + // $t49 := [84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 79, 87, 78, 69, 82] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:665:104+17 + $t49 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 79, 87)), MakeVec3(78, 69, 82)); + assume $IsValid'vec'u8''($t49); + + // $t50 := string::utf8($t49) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:665:91+31 + call $t50 := $1_string_utf8($t49); + if ($abort_flag) { + assume {:print "$at(186,23585,23616)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // assume Identical($t51, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t51 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t52, simple_map::spec_get(select property_map::PropertyMap.map($t48), $t50)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t52 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t48->$map, $t50)); + + // $t53 := property_map::read_bool($t48, $t50) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:665:34+89 + assume {:print "$at(186,23528,23617)"} true; + call $t53 := $1_property_map_read_bool($t48, $t50); + if ($abort_flag) { + assume {:print "$at(186,23528,23617)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // if ($t53) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + assume {:print "$at(186,23627,23706)"} true; + if ($t53) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + assume {:print "$at(186,23627,23706)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 +L12: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + assume {:print "$at(186,23627,23706)"} true; + + // $t54 := 30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:62+24 + $t54 := 30; + assume $IsValid'u64'($t54); + + // $t55 := error::permission_denied($t54) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:37+50 + call $t55 := $1_error_permission_denied($t54); + if ($abort_flag) { + assume {:print "$at(186,23655,23705)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_abort($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + assume {:print "$at(186,23627,23706)"} true; + assume {:print "$track_abort(113,4):", $t55} $t55 == $t55; + + // $t26 := move($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + $t26 := $t55; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:666:9+79 + goto L30; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:90+5 + assume {:print "$at(186,23826,23831)"} true; +L14: + + // assume Identical($t56, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t56 == $1_signer_$address_of($t0)); + + // assume Identical($t57, select token::TokenStore.tokens(global($t56))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t57 == $ResourceValue($1_token_TokenStore_$memory, $t56)->$tokens); + + // $t58 := token::withdraw_token($t0, $t27, $t5) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:75+39 + assume {:print "$at(186,23811,23850)"} true; + call $t58 := $1_token_withdraw_token($t0, $t27, $t5); + if ($abort_flag) { + assume {:print "$at(186,23811,23850)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // ($t59, $t60, $t61) := unpack token::Token($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:13+59 + $t59 := $t58->$id; + $t60 := $t58->$amount; + $t61 := $t58->$token_properties; + + // drop($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:69+1 + + // trace_local[burned_amount]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:36+13 + assume {:print "$track_local(113,4,10):", $t60} $t60 == $t60; + + // drop($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:669:25+1 + + // $t62 := signer::address_of($t0) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:670:57+25 + assume {:print "$at(186,23908,23933)"} true; + call $t62 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,23908,23933)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // $t63 := borrow_global($t62) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:670:27+17 + if (!$ResourceExists($1_token_TokenStore_$memory, $t62)) { + call $ExecFailureAbort(); + } else { + $t63 := $Mutation($Global($t62), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t62)); + } + if ($abort_flag) { + assume {:print "$at(186,23878,23895)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[token_store]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:670:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t63); + assume {:print "$track_local(113,4,17):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t64 := features::module_event_migration_enabled() on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:671:13+47 + assume {:print "$at(186,23948,23995)"} true; + call $t64 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,23948,23995)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // if ($t64) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:671:9+140 + if ($t64) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:672:41+8 + assume {:print "$at(186,24039,24047)"} true; +L16: + + // $t65 := pack token::BurnToken($t27, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:672:25+49 + assume {:print "$at(186,24023,24072)"} true; + $t65 := $1_token_BurnToken($t27, $t60); + + // opaque begin: event::emit($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:672:13+62 + + // opaque end: event::emit($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:672:13+62 + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:675:18+11 + assume {:print "$at(186,24146,24157)"} true; +L15: + + // $t66 := borrow_field.burn_events($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:675:13+28 + assume {:print "$at(186,24141,24169)"} true; + $t66 := $ChildMutation($t63, 4, $Dereference($t63)->$burn_events); + + // $t67 := pack token::BurnTokenEvent($t27, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:676:13+54 + assume {:print "$at(186,24183,24237)"} true; + $t67 := $1_token_BurnTokenEvent($t27, $t60); + + // opaque begin: event::emit_event($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:674:9+153 + assume {:print "$at(186,24094,24247)"} true; + + // opaque end: event::emit_event($t66, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:674:9+153 + + // write_back[Reference($t63).burn_events (event::EventHandle)]($t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:674:9+153 + $t63 := $UpdateMutation($t63, $Update'$1_token_TokenStore'_burn_events($Dereference($t63), $Dereference($t66))); + + // write_back[token::TokenStore@]($t63) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:674:9+153 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t63), + $Dereference($t63)); + + // $t68 := borrow_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:681:13+27 + assume {:print "$at(186,24385,24412)"} true; + $t68 := $ChildMutation($t33, 1, $Dereference($t33)->$token_data); + + // $t69 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:682:13+22 + assume {:print "$at(186,24426,24448)"} true; + $t69 := $t27->$token_data_id; + + // $t70 := table::borrow_mut($t68, $t69) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:680:26+105 + assume {:print "$at(186,24354,24459)"} true; + call $t70,$t68 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t68, $t69); + if ($abort_flag) { + assume {:print "$at(186,24354,24459)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[token_data#5]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:680:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t70); + assume {:print "$track_local(113,4,15):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t71 := get_field.maximum($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:13+18 + assume {:print "$at(186,24640,24658)"} true; + $t71 := $Dereference($t70)->$maximum; + + // $t72 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:34+1 + $t72 := 0; + assume $IsValid'u64'($t72); + + // $t73 := >($t71, $t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:32+1 + call $t73 := $Gt($t71, $t72); + + // if ($t73) goto L18 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:9+1062 + if ($t73) { goto L18; } else { goto L31; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:33+10 + assume {:print "$at(186,24698,24708)"} true; +L18: + + // $t74 := get_field.supply($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:33+17 + assume {:print "$at(186,24698,24715)"} true; + $t74 := $Dereference($t70)->$supply; + + // $t75 := -($t74, $t60) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:51+1 + call $t75 := $Sub($t74, $t60); + if ($abort_flag) { + assume {:print "$at(186,24716,24717)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // $t76 := borrow_field.supply($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:13+17 + $t76 := $ChildMutation($t70, 2, $Dereference($t70)->$supply); + + // write_ref($t76, $t75) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:13+53 + $t76 := $UpdateMutation($t76, $t75); + + // write_back[Reference($t70).supply (u64)]($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:688:13+53 + $t70 := $UpdateMutation($t70, $Update'$1_token_TokenData'_supply($Dereference($t70), $Dereference($t76))); + + // $t77 := get_field.supply($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:17+17 + assume {:print "$at(186,24809,24826)"} true; + $t77 := $Dereference($t70)->$supply; + + // write_back[Reference($t68)[]]($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:17+17 + $t68 := $UpdateMutation($t68, UpdateTable($Dereference($t68), ReadVec($t70->p, LenVec($t68->p)), $Dereference($t70))); + + // write_back[Reference($t33).token_data (table::Table)]($t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:17+17 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_token_data($Dereference($t33), $Dereference($t68))); + + // $t78 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:38+1 + $t78 := 0; + assume $IsValid'u64'($t78); + + // $t79 := ==($t77, $t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:35+2 + $t79 := $IsEqual'u64'($t77, $t78); + + // if ($t79) goto L20 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:13+882 + if ($t79) { goto L20; } else { goto L19; } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:55+11 + assume {:print "$at(186,24889,24900)"} true; +L20: + + // $t80 := borrow_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:50+27 + assume {:print "$at(186,24884,24911)"} true; + $t80 := $ChildMutation($t33, 1, $Dereference($t33)->$token_data); + + // $t81 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:79+22 + $t81 := $t27->$token_data_id; + + // $t82 := table::remove($t80, $t81) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:36+66 + call $t82,$t80 := $1_table_remove'$1_token_TokenDataId_$1_token_TokenData'($t80, $t81); + if ($abort_flag) { + assume {:print "$at(186,24870,24936)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // write_back[Reference($t33).token_data (table::Table)]($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:36+66 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_token_data($Dereference($t33), $Dereference($t80))); + + // token::destroy_token_data($t82) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:692:17+86 + call $1_token_destroy_token_data($t82); + if ($abort_flag) { + assume {:print "$at(186,24851,24937)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // $t83 := borrow_field.collection_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:696:21+32 + assume {:print "$at(186,25065,25097)"} true; + $t83 := $ChildMutation($t33, 0, $Dereference($t33)->$collection_data); + + // $t84 := get_field.token_data_id($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:697:21+22 + assume {:print "$at(186,25119,25141)"} true; + $t84 := $t27->$token_data_id; + + // $t85 := get_field.collection($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:697:21+33 + $t85 := $t84->$collection; + + // $t86 := table::borrow_mut($t83, $t85) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:695:39+144 + assume {:print "$at(186,25026,25170)"} true; + call $t86,$t83 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t83, $t85); + if ($abort_flag) { + assume {:print "$at(186,25026,25170)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // trace_local[collection_data]($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:695:21+15 + $temp_0'$1_token_CollectionData' := $Dereference($t86); + assume {:print "$track_local(113,4,11):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t87 := get_field.maximum($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:21+23 + assume {:print "$at(186,25270,25293)"} true; + $t87 := $Dereference($t86)->$maximum; + + // $t88 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:47+1 + $t88 := 0; + assume $IsValid'u64'($t88); + + // $t89 := >($t87, $t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:45+1 + call $t89 := $Gt($t87, $t88); + + // if ($t89) goto L22 else goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:17+406 + if ($t89) { goto L22; } else { goto L32; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:46+15 + assume {:print "$at(186,25345,25360)"} true; +L22: + + // $t90 := get_field.supply($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:46+22 + assume {:print "$at(186,25345,25367)"} true; + $t90 := $Dereference($t86)->$supply; + + // $t91 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:71+1 + $t91 := 1; + assume $IsValid'u64'($t91); + + // $t92 := -($t90, $t91) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:69+1 + call $t92 := $Sub($t90, $t91); + if ($abort_flag) { + assume {:print "$at(186,25368,25369)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // $t93 := borrow_field.supply($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:21+22 + $t93 := $ChildMutation($t86, 3, $Dereference($t86)->$supply); + + // write_ref($t93, $t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:21+51 + $t93 := $UpdateMutation($t93, $t92); + + // write_back[Reference($t86).supply (u64)]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:702:21+51 + $t86 := $UpdateMutation($t86, $Update'$1_token_CollectionData'_supply($Dereference($t86), $Dereference($t93))); + + // $t94 := get_field.supply($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:25+22 + assume {:print "$at(186,25481,25503)"} true; + $t94 := $Dereference($t86)->$supply; + + // $t95 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:51+1 + $t95 := 0; + assume $IsValid'u64'($t95); + + // $t96 := ==($t94, $t95) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:48+2 + $t96 := $IsEqual'u64'($t94, $t95); + + // if ($t96) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + if ($t96) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:68+11 + assume {:print "$at(186,25579,25590)"} true; +L24: + + // $t97 := borrow_field.collection_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:63+32 + assume {:print "$at(186,25574,25606)"} true; + $t97 := $ChildMutation($t33, 0, $Dereference($t33)->$collection_data); + + // $t98 := get_field.name($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:97+20 + $t98 := $Dereference($t86)->$name; + + // write_back[Reference($t83)[]]($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:97+20 + $t83 := $UpdateMutation($t83, UpdateTable($Dereference($t83), ReadVec($t86->p, LenVec($t83->p)), $Dereference($t86))); + + // write_back[Reference($t33).collection_data (table::Table)]($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:97+20 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_collection_data($Dereference($t33), $Dereference($t83))); + + // $t99 := table::remove($t97, $t98) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:49+69 + call $t99,$t97 := $1_table_remove'$1_string_String_$1_token_CollectionData'($t97, $t98); + if ($abort_flag) { + assume {:print "$at(186,25560,25629)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // write_back[Reference($t33).collection_data (table::Table)]($t97) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:49+69 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_collection_data($Dereference($t33), $Dereference($t97))); + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:49+69 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // token::destroy_collection_data($t99) on_abort goto L30 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:25+94 + call $1_token_destroy_collection_data($t99); + if ($abort_flag) { + assume {:print "$at(186,25536,25630)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,4):", $t26} $t26 == $t26; + goto L30; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:705:119+1 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + assume {:print "$at(186,25477,25653)"} true; +L23: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + assume {:print "$at(186,25477,25653)"} true; + + // write_back[Reference($t83)[]]($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + $t83 := $UpdateMutation($t83, UpdateTable($Dereference($t83), ReadVec($t86->p, LenVec($t83->p)), $Dereference($t86))); + + // write_back[Reference($t33).collection_data (table::Table)]($t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_collection_data($Dereference($t33), $Dereference($t83))); + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // drop($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:704:21+176 + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:706:22+1 + assume {:print "$at(186,25653,25654)"} true; +L25: + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:706:22+1 + assume {:print "$at(186,25653,25654)"} true; + goto L26; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:17+406 + assume {:print "$at(186,25266,25672)"} true; +L21: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:17+406 + assume {:print "$at(186,25266,25672)"} true; + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:17+406 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // drop($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:701:17+406 + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:707:18+1 + assume {:print "$at(186,25672,25673)"} true; +L26: + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:707:18+1 + assume {:print "$at(186,25672,25673)"} true; + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:13+882 + assume {:print "$at(186,24805,25687)"} true; +L19: + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:13+882 + assume {:print "$at(186,24805,25687)"} true; + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:691:13+882 + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:708:14+1 + assume {:print "$at(186,25687,25688)"} true; +L27: + + // goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:708:14+1 + assume {:print "$at(186,25687,25688)"} true; + goto L28; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:9+1062 + assume {:print "$at(186,24636,25698)"} true; +L17: + + // drop($t70) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:9+1062 + assume {:print "$at(186,24636,25698)"} true; + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:687:9+1062 + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:709:10+1 + assume {:print "$at(186,25698,25699)"} true; +L28: + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:710:5+1 + assume {:print "$at(186,25704,25705)"} true; +L29: + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 128); + + // assert Not(Le($t5, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:218:9+22 + assume {:print "$at(187,7946,7968)"} true; + assert {:msg "assert_failed(187,7946,7968): function does not abort under this condition"} + !($t5 <= 0); + + // assert Not(Not(exists[@854]($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:219:9+45 + assume {:print "$at(187,7977,8022)"} true; + assert {:msg "assert_failed(187,7977,8022): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#854, $t19); + + // assert Not(Not(table::spec_contains[](select token::Collections.token_data($t20), select token::TokenId.token_data_id($t18)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:220:9+80 + assume {:print "$at(187,8031,8111)"} true; + assert {:msg "assert_failed(187,8031,8111): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t20->$token_data, $t18->$token_data_id); + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map(select token::TokenData.default_properties($t21)), string::spec_utf8[]([84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 79, 87, 78, 69, 82])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:221:9+119 + assume {:print "$at(187,8120,8239)"} true; + assert {:msg "assert_failed(187,8120,8239): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t21->$default_properties->$map, $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 79, 87)), MakeVec3(78, 69, 82)))); + + // assert Not(Not(string::spec_internal_check_utf8[]([84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 79, 87, 78, 69, 82]))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:222:9+63 + assume {:print "$at(187,8248,8311)"} true; + assert {:msg "assert_failed(187,8248,8311): function does not abort under this condition"} + !!$1_string_spec_internal_check_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 79, 87)), MakeVec3(78, 69, 82))); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:222:9+63 + return; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:710:5+1 + assume {:print "$at(186,25704,25705)"} true; +L30: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:710:5+1 + assume {:print "$at(186,25704,25705)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + + // label L31 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L31: + + // drop($t68) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L17 at :1:1+10 + goto L17; + + // label L32 at :1:1+10 +L32: + + // drop($t83) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun token::transfer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+400 +procedure {:inline 1} $1_token_transfer(_$t0: $signer, _$t1: $1_token_TokenId, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_Token; + var $t5: bool; + var $t6: int; + var $t7: Table int ($1_token_Token); + var $t8: $1_token_TokenStore; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Table int ($1_token_Token); + var $t15: $1_token_Token; + var $t16: $1_token_TokenId; + var $t17: int; + var $t18: $1_token_TokenStore; + var $t19: $1_token_Token; + var $t20: bool; + var $t0: $signer; + var $t1: $1_token_TokenId; + var $t2: int; + var $t3: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + 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($t5, select token::TokenStore.direct_transfer(global($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:471:9+61 + assume {:print "$at(187,20210,20271)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t2)->$direct_transfer); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:472:9+44 + assume {:print "$at(187,20280,20324)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select token::TokenStore.tokens(global($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t7 == $ResourceValue($1_token_TokenStore_$memory, $t6)->$tokens); + + // trace_local[from]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$at(186,41228,41229)"} true; + assume {:print "$track_local(113,79,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,2):", $t2} $t2 == $t2; + + // trace_local[amount]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,3):", $t3} $t3 == $t3; + + // $t8 := get_global($t2) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1023:31+13 + assume {:print "$at(186,41393,41406)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_TokenStore_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(186,41393,41406)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := get_field.direct_transfer($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1023:31+45 + $t10 := $t8->$direct_transfer; + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 +L0: + + // $t11 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:59+32 + assume {:print "$at(186,41498,41530)"} true; + $t11 := 16; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:34+58 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(186,41473,41531)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + assume {:print "$track_abort(113,79):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + $t9 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:36+4 + assume {:print "$at(186,41569,41573)"} true; +L2: + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select token::TokenStore.tokens(global($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t14 == $ResourceValue($1_token_TokenStore_$memory, $t13)->$tokens); + + // $t15 := token::withdraw_token($t0, $t1, $t3) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:21+32 + assume {:print "$at(186,41554,41586)"} true; + call $t15 := $1_token_withdraw_token($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(186,41554,41586)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:13+5 + assume {:print "$track_local(113,79,4):", $t15} $t15 == $t15; + + // assume Identical($t16, select token::Token.id($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t16 == $t15->$id); + + // assume Identical($t17, select token::Token.amount($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t17 == $t15->$amount); + + // assume Identical($t18, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t18 == $ResourceValue($1_token_TokenStore_$memory, $t2)); + + // assume Identical($t19, table::spec_get(select token::TokenStore.tokens($t18), $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t19 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t18->$tokens, $t16)); + + // assume Identical($t20, table::spec_contains(select token::TokenStore.tokens($t18), $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t20 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t18->$tokens, $t16)); + + // token::direct_deposit($t2, $t15) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1026:9+25 + assume {:print "$at(186,41596,41621)"} true; + call $1_token_direct_deposit($t2, $t15); + if ($abort_flag) { + assume {:print "$at(186,41596,41621)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+400 +procedure {:timeLimit 80} $1_token_transfer$verify(_$t0: $signer, _$t1: $1_token_TokenId, _$t2: int, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_Token; + var $t5: bool; + var $t6: int; + var $t7: Table int ($1_token_Token); + var $t8: $1_token_TokenStore; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: Table int ($1_token_Token); + var $t15: $1_token_Token; + var $t16: $1_token_TokenId; + var $t17: int; + var $t18: $1_token_TokenStore; + var $t19: $1_token_Token; + var $t20: bool; + var $t0: $signer; + var $t1: $1_token_TokenId; + var $t2: int; + var $t3: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_TokenStore_$memory#857: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$at(186,41228,41229)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume $IsValid'u64'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t5, select token::TokenStore.direct_transfer(global($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:471:9+61 + assume {:print "$at(187,20210,20271)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t2)->$direct_transfer); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:472:9+44 + assume {:print "$at(187,20280,20324)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, select token::TokenStore.tokens(global($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t7 == $ResourceValue($1_token_TokenStore_$memory, $t6)->$tokens); + + // @857 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$at(186,41228,41229)"} true; + $1_token_TokenStore_$memory#857 := $1_token_TokenStore_$memory; + + // trace_local[from]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,1):", $t1} $t1 == $t1; + + // trace_local[to]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,2):", $t2} $t2 == $t2; + + // trace_local[amount]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1017:5+1 + assume {:print "$track_local(113,79,3):", $t3} $t3 == $t3; + + // $t8 := get_global($t2) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1023:31+13 + assume {:print "$at(186,41393,41406)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t2)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_TokenStore_$memory, $t2); + } + if ($abort_flag) { + assume {:print "$at(186,41393,41406)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := get_field.direct_transfer($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1023:31+45 + $t10 := $t8->$direct_transfer; + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 +L0: + + // $t11 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:59+32 + assume {:print "$at(186,41498,41530)"} true; + $t11 := 16; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:34+58 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(186,41473,41531)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + assume {:print "$at(186,41448,41532)"} true; + assume {:print "$track_abort(113,79):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + $t9 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1024:9+84 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:36+4 + assume {:print "$at(186,41569,41573)"} true; +L2: + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select token::TokenStore.tokens(global($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t14 == $ResourceValue($1_token_TokenStore_$memory, $t13)->$tokens); + + // $t15 := token::withdraw_token($t0, $t1, $t3) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:21+32 + assume {:print "$at(186,41554,41586)"} true; + call $t15 := $1_token_withdraw_token($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(186,41554,41586)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // trace_local[token]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1025:13+5 + assume {:print "$track_local(113,79,4):", $t15} $t15 == $t15; + + // assume Identical($t16, select token::Token.id($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t16 == $t15->$id); + + // assume Identical($t17, select token::Token.amount($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t17 == $t15->$amount); + + // assume Identical($t18, global($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t18 == $ResourceValue($1_token_TokenStore_$memory, $t2)); + + // assume Identical($t19, table::spec_get(select token::TokenStore.tokens($t18), $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t19 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t18->$tokens, $t16)); + + // assume Identical($t20, table::spec_contains(select token::TokenStore.tokens($t18), $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t20 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t18->$tokens, $t16)); + + // token::direct_deposit($t2, $t15) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1026:9+25 + assume {:print "$at(186,41596,41621)"} true; + call $1_token_direct_deposit($t2, $t15); + if ($abort_flag) { + assume {:print "$at(186,41596,41621)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,79):", $t9} $t9 == $t9; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; +L3: + + // assert Not(Not($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:473:9+27 + assume {:print "$at(187,20333,20360)"} true; + assert {:msg "assert_failed(187,20333,20360): function does not abort under this condition"} + !!$t5; + + // assert Not(Le($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:876:9+22 + assume {:print "$at(187,37080,37102)"} true; + assert {:msg "assert_failed(187,37080,37102): function does not abort under this condition"} + !($t3 <= 0); + + // assert Not(Lt(token::spec_balance_of[@857]($t6, $t1), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:877:9+53 + assume {:print "$at(187,37111,37164)"} true; + assert {:msg "assert_failed(187,37111,37164): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#857, $t6, $t1) < $t3); + + // assert Not(Not(exists[@857]($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:878:9+44 + assume {:print "$at(187,37173,37217)"} true; + assert {:msg "assert_failed(187,37173,37217): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#857, $t6); + + // assert Not(Not(table::spec_contains[]($t7, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + assume {:print "$at(187,37226,37270)"} true; + assert {:msg "assert_failed(187,37226,37270): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t7, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; +L4: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1027:5+1 + assume {:print "$at(186,41627,41628)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::merge [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+310 +procedure {:inline 1} $1_token_merge(_$t0: $Mutation ($1_token_Token), _$t1: $1_token_Token) returns ($ret0: $Mutation ($1_token_Token)) +{ + // declare local variables + var $t2: $1_token_TokenId; + var $t3: $1_token_TokenId; + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: $Mutation (int); + var $t12: $1_token_TokenId; + var $t13: int; + var $t14: $1_property_map_PropertyMap; + var $t0: $Mutation ($1_token_Token); + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + assume {:print "$at(186,40219,40220)"} true; + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // trace_local[source_token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + assume {:print "$track_local(113,61,1):", $t1} $t1 == $t1; + + // $t2 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:17+13 + assume {:print "$at(186,40298,40311)"} true; + $t2 := $Dereference($t0)->$id; + + // $t3 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:34+16 + $t3 := $t1->$id; + + // $t4 := ==($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:31+2 + $t4 := $IsEqual'$1_token_TokenId'($t2, $t3); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + + // $t5 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:76+20 + $t5 := 6; + assume $IsValid'u64'($t5); + + // $t6 := error::invalid_argument($t5) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:52+45 + call $t6 := $1_error_invalid_argument($t5); + if ($abort_flag) { + assume {:print "$at(186,40333,40378)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,61):", $t7} $t7 == $t7; + goto L4; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + assume {:print "$track_abort(113,61):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + $t7 := $t6; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:28+9 + assume {:print "$at(186,40408,40417)"} true; +L2: + + // $t8 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:28+16 + assume {:print "$at(186,40408,40424)"} true; + $t8 := $Dereference($t0)->$amount; + + // $t9 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:47+19 + $t9 := $t1->$amount; + + // $t10 := +($t8, $t9) on_abort goto L4 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:45+1 + call $t10 := $AddU64($t8, $t9); + if ($abort_flag) { + assume {:print "$at(186,40425,40426)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,61):", $t7} $t7 == $t7; + goto L4; + } + + // $t11 := borrow_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+16 + $t11 := $ChildMutation($t0, 1, $Dereference($t0)->$amount); + + // write_ref($t11, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $t11 := $UpdateMutation($t11, $t10); + + // write_back[Reference($t0).amount (u64)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $t0 := $UpdateMutation($t0, $Update'$1_token_Token'_amount($Dereference($t0), $Dereference($t11))); + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // ($t12, $t13, $t14) := unpack token::Token($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:13+47 + assume {:print "$at(186,40460,40507)"} true; + $t12 := $t1->$id; + $t13 := $t1->$amount; + $t14 := $t1->$token_properties; + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:57+1 + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:36+1 + + // drop($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:25+1 + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:75+1 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 + assume {:print "$at(186,40528,40529)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 + assume {:print "$at(186,40528,40529)"} true; + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 +L4: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 + assume {:print "$at(186,40528,40529)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::merge [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+310 +procedure {:timeLimit 80} $1_token_merge$verify(_$t0: $Mutation ($1_token_Token), _$t1: $1_token_Token) returns ($ret0: $Mutation ($1_token_Token)) +{ + // declare local variables + var $t2: $1_token_Token; + var $t3: $1_token_TokenId; + var $t4: $1_token_TokenId; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: $Mutation (int); + var $t13: $1_token_TokenId; + var $t14: int; + var $t15: $1_property_map_PropertyMap; + var $t0: $Mutation ($1_token_Token); + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + assume {:print "$at(186,40219,40220)"} true; + assume $IsValid'$1_token_Token'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + assume $IsValid'$1_token_Token'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + $t2 := $Dereference($t0); + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // trace_local[source_token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:994:5+1 + assume {:print "$track_local(113,61,1):", $t1} $t1 == $t1; + + // $t3 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:17+13 + assume {:print "$at(186,40298,40311)"} true; + $t3 := $Dereference($t0)->$id; + + // $t4 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:34+16 + $t4 := $t1->$id; + + // $t5 := ==($t3, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:31+2 + $t5 := $IsEqual'$1_token_TokenId'($t3, $t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + + // $t6 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:76+20 + $t6 := 6; + assume $IsValid'u64'($t6); + + // $t7 := error::invalid_argument($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:52+45 + call $t7 := $1_error_invalid_argument($t6); + if ($abort_flag) { + assume {:print "$at(186,40333,40378)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,61):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + assume {:print "$at(186,40290,40379)"} true; + assume {:print "$track_abort(113,61):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:995:9+89 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:28+9 + assume {:print "$at(186,40408,40417)"} true; +L2: + + // $t9 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:28+16 + assume {:print "$at(186,40408,40424)"} true; + $t9 := $Dereference($t0)->$amount; + + // $t10 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:47+19 + $t10 := $t1->$amount; + + // $t11 := +($t9, $t10) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:45+1 + call $t11 := $AddU64($t9, $t10); + if ($abort_flag) { + assume {:print "$at(186,40425,40426)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,61):", $t8} $t8 == $t8; + goto L4; + } + + // $t12 := borrow_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+16 + $t12 := $ChildMutation($t0, 1, $Dereference($t0)->$amount); + + // write_ref($t12, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $t12 := $UpdateMutation($t12, $t11); + + // write_back[Reference($t0).amount (u64)]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $t0 := $UpdateMutation($t0, $Update'$1_token_Token'_amount($Dereference($t0), $Dereference($t12))); + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:996:9+57 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // ($t13, $t14, $t15) := unpack token::Token($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:13+47 + assume {:print "$at(186,40460,40507)"} true; + $t13 := $t1->$id; + $t14 := $t1->$amount; + $t15 := $t1->$token_properties; + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:57+1 + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:36+1 + + // drop($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:25+1 + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:997:75+1 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,61,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 + assume {:print "$at(186,40528,40529)"} true; +L3: + + // assert Not(Neq(select token::Token.id($t2), select token::Token.id($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:455:9+42 + assume {:print "$at(187,19773,19815)"} true; + assert {:msg "assert_failed(187,19773,19815): function does not abort under this condition"} + !!$IsEqual'$1_token_TokenId'($t2->$id, $t1->$id); + + // assert Not(Gt(Add(select token::Token.amount($t2), select token::Token.amount($t1)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:456:9+59 + assume {:print "$at(187,19824,19883)"} true; + assert {:msg "assert_failed(187,19824,19883): function does not abort under this condition"} + !(($t2->$amount + $t1->$amount) > 18446744073709551615); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:456:9+59 + $ret0 := $t0; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:998:5+1 + assume {:print "$at(186,40528,40529)"} true; +L4: + + // assert Or(Neq(select token::Token.id($t2), select token::Token.id($t1)), Gt(Add(select token::Token.amount($t2), select token::Token.amount($t1)), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:454:5+181 + assume {:print "$at(187,19708,19889)"} true; + assert {:msg "assert_failed(187,19708,19889): abort not covered by any of the `aborts_if` clauses"} + (!$IsEqual'$1_token_TokenId'($t2->$id, $t1->$id) || (($t2->$amount + $t1->$amount) > 18446744073709551615)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:454:5+181 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun token::withdraw_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+460 +procedure {:timeLimit 80} $1_token_withdraw_with_capability$verify(_$t0: $1_token_WithdrawCapability) returns ($ret0: $1_token_Token) +{ + // declare local variables + var $t1: int; + var $t2: Table int ($1_token_Token); + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_TokenId; + var $t11: int; + var $t12: Table int ($1_token_Token); + var $t13: $1_token_Token; + var $t0: $1_token_WithdrawCapability; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_WithdrawCapability': $1_token_WithdrawCapability; + var $1_timestamp_CurrentTimeMicroseconds_$memory#859: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_token_TokenStore_$memory#860: $Memory $1_token_TokenStore; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + assume {:print "$at(186,42109,42110)"} true; + assume $IsValid'$1_token_WithdrawCapability'($t0); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046: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: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+460 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t1, select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:482:9+95 + assume {:print "$at(187,20619,20714)"} true; + assume ($t1 == $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)->$microseconds); + + // assume Identical($t2, select token::TokenStore.tokens(global(select token::WithdrawCapability.token_owner($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t2 == $ResourceValue($1_token_TokenStore_$memory, $t0->$token_owner)->$tokens); + + // @859 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + assume {:print "$at(186,42109,42110)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#859 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @860 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + $1_token_TokenStore_$memory#860 := $1_token_TokenStore_$memory; + + // trace_local[withdraw_proof]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1046:5+1 + assume {:print "$track_local(113,83,0):", $t0} $t0 == $t0; + + // $t3 := timestamp::now_seconds() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:17+24 + assume {:print "$at(186,42293,42317)"} true; + call $t3 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(186,42293,42317)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,83):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := get_field.expiration_sec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:45+29 + $t5 := $t0->$expiration_sec; + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:42+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 + assume {:print "$at(186,42285,42401)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:100+23 +L0: + + // $t7 := 39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:100+23 + assume {:print "$at(186,42376,42399)"} true; + $t7 := 39; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:76+48 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(186,42352,42400)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,83):", $t4} $t4 == $t4; + goto L4; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 + assume {:print "$at(186,42285,42401)"} true; + assume {:print "$track_abort(113,83):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 + $t4 := $t8; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1050:9+116 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1053:13+14 + assume {:print "$at(186,42454,42468)"} true; +L2: + + // $t9 := get_field.token_owner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1053:13+26 + assume {:print "$at(186,42454,42480)"} true; + $t9 := $t0->$token_owner; + + // $t10 := get_field.token_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1054:13+23 + assume {:print "$at(186,42494,42517)"} true; + $t10 := $t0->$token_id; + + // $t11 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1055:13+21 + assume {:print "$at(186,42531,42552)"} true; + $t11 := $t0->$amount; + + // assume Identical($t12, select token::TokenStore.tokens(global($t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t12 == $ResourceValue($1_token_TokenStore_$memory, $t9)->$tokens); + + // $t13 := token::withdraw_with_event_internal($t9, $t10, $t11) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1052:9+151 + assume {:print "$at(186,42412,42563)"} true; + call $t13 := $1_token_withdraw_with_event_internal($t9, $t10, $t11); + if ($abort_flag) { + assume {:print "$at(186,42412,42563)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,83):", $t4} $t4 == $t4; + goto L4; + } + + // trace_return[0]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1052:9+151 + assume {:print "$track_return(113,83,0):", $t13} $t13 == $t13; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1057:5+1 + assume {:print "$at(186,42568,42569)"} true; +L3: + + // assert Not(Not(exists[@859](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:483:9+75 + assume {:print "$at(187,20723,20798)"} true; + assert {:msg "assert_failed(187,20723,20798): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#859, 1); + + // assert Not(Gt(Div($t1, 1000000), select token::WithdrawCapability.expiration_sec($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:484:9+91 + assume {:print "$at(187,20807,20898)"} true; + assert {:msg "assert_failed(187,20807,20898): function does not abort under this condition"} + !(($t1 div 1000000) > $t0->$expiration_sec); + + // assert Not(Le(select token::WithdrawCapability.amount($t0), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:876:9+22 + assume {:print "$at(187,37080,37102)"} true; + assert {:msg "assert_failed(187,37080,37102): function does not abort under this condition"} + !($t0->$amount <= 0); + + // assert Not(Lt(token::spec_balance_of[@860](select token::WithdrawCapability.token_owner($t0), select token::WithdrawCapability.token_id($t0)), select token::WithdrawCapability.amount($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:877:9+53 + assume {:print "$at(187,37111,37164)"} true; + assert {:msg "assert_failed(187,37111,37164): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#860, $t0->$token_owner, $t0->$token_id) < $t0->$amount); + + // assert Not(Not(exists[@860](select token::WithdrawCapability.token_owner($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:878:9+44 + assume {:print "$at(187,37173,37217)"} true; + assert {:msg "assert_failed(187,37173,37217): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#860, $t0->$token_owner); + + // assert Not(Not(table::spec_contains[]($t2, select token::WithdrawCapability.token_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + assume {:print "$at(187,37226,37270)"} true; + assert {:msg "assert_failed(187,37226,37270): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t2, $t0->$token_id); + + // return $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + $ret0 := $t13; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1057:5+1 + assume {:print "$at(186,42568,42569)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Not(exists[@859](0x1)), Gt(Div($t1, 1000000), select token::WithdrawCapability.expiration_sec($t0))), Le(select token::WithdrawCapability.amount($t0), 0)), Lt(token::spec_balance_of[@860](select token::WithdrawCapability.token_owner($t0), select token::WithdrawCapability.token_id($t0)), select token::WithdrawCapability.amount($t0))), Not(exists[@860](select token::WithdrawCapability.token_owner($t0)))), Not(table::spec_contains[]($t2, select token::WithdrawCapability.token_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:479:5+561 + assume {:print "$at(187,20521,21082)"} true; + assert {:msg "assert_failed(187,20521,21082): abort not covered by any of the `aborts_if` clauses"} + (((((!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#859, 1) || (($t1 div 1000000) > $t0->$expiration_sec)) || ($t0->$amount <= 0)) || ($1_token_spec_balance_of($1_token_TokenStore_$memory#860, $t0->$token_owner, $t0->$token_id) < $t0->$amount)) || !$ResourceExists($1_token_TokenStore_$memory#860, $t0->$token_owner)) || !$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t2, $t0->$token_id)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:479:5+561 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::check_collection_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+361 +procedure {:timeLimit 80} $1_token_check_collection_exists$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: $1_token_Collections; + var $t7: Table int ($1_token_CollectionData); + var $t8: bool; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_token_Collections_$memory#861: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + assume {:print "$at(186,46549,46550)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // @861 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + $1_token_Collections_$memory#861 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + assume {:print "$track_local(113,6,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1169:5+1 + assume {:print "$track_local(113,6,1):", $t1} $t1 == $t1; + + // $t2 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1171:13+6 + assume {:print "$at(186,46674,46680)"} true; + $t2 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 + assume {:print "$at(186,46653,46771)"} true; + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 + assume {:print "$at(186,46653,46771)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1172:30+26 + assume {:print "$at(186,46733,46759)"} true; +L0: + + // $t3 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1172:30+26 + assume {:print "$at(186,46733,46759)"} true; + $t3 := 1; + assume $IsValid'u64'($t3); + + // $t4 := error::not_found($t3) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1172:13+44 + call $t4 := $1_error_not_found($t3); + if ($abort_flag) { + assume {:print "$at(186,46716,46760)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,6):", $t5} $t5 == $t5; + goto L4; + } + + // trace_abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 + assume {:print "$at(186,46653,46771)"} true; + assume {:print "$track_abort(113,6):", $t4} $t4 == $t4; + + // $t5 := move($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 + $t5 := $t4; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1170:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1175:59+7 + assume {:print "$at(186,46832,46839)"} true; +L2: + + // $t6 := get_global($t0) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1175:32+13 + assume {:print "$at(186,46805,46818)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t6 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,46805,46818)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,6):", $t5} $t5 == $t5; + goto L4; + } + + // $t7 := get_field.collection_data($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1175:31+52 + $t7 := $t6->$collection_data; + + // $t8 := table::contains($t7, $t1) on_abort goto L4 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1176:9+38 + assume {:print "$at(186,46866,46904)"} true; + call $t8 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t7, $t1); + if ($abort_flag) { + assume {:print "$at(186,46866,46904)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,6):", $t5} $t5 == $t5; + goto L4; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1176:9+38 + assume {:print "$track_return(113,6,0):", $t8} $t8 == $t8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1177:5+1 + assume {:print "$at(186,46909,46910)"} true; +L3: + + // assert Not(Not(exists[@861]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:560:9+40 + assume {:print "$at(187,23845,23885)"} true; + assert {:msg "assert_failed(187,23845,23885): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#861, $t0); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:560:9+40 + $ret0 := $t8; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1177:5+1 + assume {:print "$at(186,46909,46910)"} true; +L4: + + // assert Not(exists[@861]($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:559:5+123 + assume {:print "$at(187,23768,23891)"} true; + assert {:msg "assert_failed(187,23768,23891): abort not covered by any of the `aborts_if` clauses"} + !$ResourceExists($1_token_Collections_$memory#861, $t0); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:559:5+123 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun token::create_collection [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+2385 +procedure {:inline 1} $1_token_create_collection(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: Vec (bool)) returns () +{ + // declare local variables + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_token_CollectionData; + var $t9: $Mutation (Table int ($1_token_CollectionData)); + var $t10: $Mutation ($1_token_Collections); + var $t11: $1_token_CollectionMutabilityConfig; + var $t12: int; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_token_Collections; + var $t16: bool; + var $t17: Table int ($1_token_CollectionData); + 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: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: bool; + var $t32: Table int ($1_token_CollectionData); + var $t33: Table int ($1_token_TokenData); + var $t34: int; + var $t35: $1_account_Account; + var $t36: $1_event_EventHandle'$1_token_CreateCollectionEvent'; + var $t37: int; + var $t38: $1_account_Account; + var $t39: $1_event_EventHandle'$1_token_CreateTokenDataEvent'; + var $t40: int; + var $t41: $1_account_Account; + var $t42: $1_event_EventHandle'$1_token_MintTokenEvent'; + var $t43: $1_token_Collections; + var $t44: $Mutation ($1_token_Collections); + var $t45: $Mutation (Table int ($1_token_CollectionData)); + var $t46: Table int ($1_token_CollectionData); + var $t47: bool; + var $t48: bool; + var $t49: int; + var $t50: int; + var $t51: $1_token_CollectionMutabilityConfig; + var $t52: int; + var $t53: $1_token_CollectionData; + var $t54: $Mutation ($1_token_Collections); + var $t55: bool; + var $t56: $1_token_CreateCollection; + var $t57: $Mutation ($1_event_EventHandle'$1_token_CreateCollectionEvent'); + var $t58: $1_token_CreateCollectionEvent; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: Vec (bool); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'': Table int ($1_token_CollectionData); + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'$1_token_Collections': $1_token_Collections; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:530:9+47 + assume {:print "$at(187,22584,22631)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:544:9+39 + assume {:print "$at(187,22971,23010)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:545:9+45 + assume {:print "$at(187,23019,23064)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // assume Identical($t15, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:546:9+43 + assume {:print "$at(187,23073,23116)"} true; + assume ($t15 == $ResourceValue($1_token_Collections_$memory, $t13)); + + // assume Identical($t16, Not(exists($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:547:9+35 + assume {:print "$at(187,23125,23160)"} true; + assume ($t16 == !$ResourceExists($1_token_Collections_$memory, $t13)); + + // assume Identical($t17, select token::Collections.collection_data(global($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:548:9+64 + assume {:print "$at(187,23169,23233)"} true; + assume ($t17 == $ResourceValue($1_token_Collections_$memory, $t13)->$collection_data); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$at(186,44158,44159)"} true; + assume {:print "$track_local(113,8,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,2):", $t2} $t2 == $t2; + + // trace_local[uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,3):", $t3} $t3 == $t3; + + // trace_local[maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,4):", $t4} $t4 == $t4; + + // trace_local[mutate_setting]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,5):", $t5} $t5 == $t5; + + // $t18 := string::length($t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:17+21 + assume {:print "$at(186,44390,44411)"} true; + call $t18 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(186,44390,44411)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t20 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:42+26 + $t20 := 128; + assume $IsValid'u64'($t20); + + // $t21 := <=($t18, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:39+2 + call $t21 := $Le($t18, $t20); + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + assume {:print "$at(186,44382,44494)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 +L0: + + // $t22 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:94+25 + assume {:print "$at(186,44467,44492)"} true; + $t22 := 25; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:70+50 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(186,44443,44493)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + assume {:print "$at(186,44382,44494)"} true; + assume {:print "$track_abort(113,8):", $t23} $t23 == $t23; + + // $t19 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + $t19 := $t23; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:32+4 + assume {:print "$at(186,44527,44531)"} true; +L2: + + // $t24 := string::length($t3) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:17+20 + assume {:print "$at(186,44512,44532)"} true; + call $t24 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(186,44512,44532)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t25 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:41+14 + $t25 := 512; + assume $IsValid'u64'($t25); + + // $t26 := <=($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:38+2 + call $t26 := $Le($t24, $t25); + + // if ($t26) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + if ($t26) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + assume {:print "$at(186,44504,44591)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 +L3: + + // $t27 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:81+13 + assume {:print "$at(186,44576,44589)"} true; + $t27 := 27; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_argument($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:57+38 + call $t28 := $1_error_invalid_argument($t27); + if ($abort_flag) { + assume {:print "$at(186,44552,44590)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + assume {:print "$at(186,44504,44591)"} true; + assume {:print "$track_abort(113,8):", $t28} $t28 == $t28; + + // $t19 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + $t19 := $t28; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:47+7 + assume {:print "$at(186,44639,44646)"} true; +L5: + + // $t29 := signer::address_of($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:28+27 + assume {:print "$at(186,44620,44647)"} true; + call $t29 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,44620,44647)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[account_addr]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:13+12 + assume {:print "$track_local(113,8,7):", $t29} $t29 == $t29; + + // $t30 := exists($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:14+6 + assume {:print "$at(186,44662,44668)"} true; + $t30 := $ResourceExists($1_token_Collections_$memory, $t29); + + // $t31 := !($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:13+1 + call $t31 := $Not($t30); + + // if ($t31) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:9+557 + if ($t31) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1116:17+7 + assume {:print "$at(186,44736,44743)"} true; +L7: + + // $t32 := table::new() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1118:38+12 + assume {:print "$at(186,44812,44824)"} true; + call $t32 := $1_table_new'$1_string_String_$1_token_CollectionData'(); + if ($abort_flag) { + assume {:print "$at(186,44812,44824)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t33 := table::new() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1119:33+12 + assume {:print "$at(186,44858,44870)"} true; + call $t33 := $1_table_new'$1_token_TokenDataId_$1_token_TokenData'(); + if ($abort_flag) { + assume {:print "$at(186,44858,44870)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, global($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t35 == $ResourceValue($1_account_Account_$memory, $t34)); + + // $t36 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1120:47+57 + assume {:print "$at(186,44918,44975)"} true; + call $t36 := $1_account_new_event_handle'$1_token_CreateCollectionEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,44918,44975)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t37, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t37 == $1_signer_$address_of($t0)); + + // assume Identical($t38, global($t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t38 == $ResourceValue($1_account_Account_$memory, $t37)); + + // $t39 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1121:47+56 + assume {:print "$at(186,45023,45079)"} true; + call $t39 := $1_account_new_event_handle'$1_token_CreateTokenDataEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,45023,45079)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t40, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t40 == $1_signer_$address_of($t0)); + + // assume Identical($t41, global($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t41 == $ResourceValue($1_account_Account_$memory, $t40)); + + // $t42 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1122:40+50 + assume {:print "$at(186,45120,45170)"} true; + call $t42 := $1_account_new_event_handle'$1_token_MintTokenEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,45120,45170)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t43 := pack token::Collections($t32, $t33, $t36, $t39, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1117:17+428 + assume {:print "$at(186,44761,45189)"} true; + $t43 := $1_token_Collections($t32, $t33, $t36, $t39, $t42); + + // move_to($t43, $t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1115:13+7 + assume {:print "$at(186,44711,44718)"} true; + if ($ResourceExists($1_token_Collections_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $t0->$addr, $t43); + } + if ($abort_flag) { + assume {:print "$at(186,44711,44718)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1115:13+493 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:9+557 + assume {:print "$at(186,44657,45214)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:67+12 + assume {:print "$at(186,45283,45295)"} true; +L8: + + // $t44 := borrow_global($t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:36+17 + assume {:print "$at(186,45252,45269)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t44 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(186,45252,45269)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t45 := borrow_field.collection_data($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:31+65 + $t45 := $ChildMutation($t44, 0, $Dereference($t44)->$collection_data); + + // trace_local[collection_data]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:13+15 + $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'' := $Dereference($t45); + assume {:print "$track_local(113,8,9):", $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData''} $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'' == $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData''; + + // $t46 := read_ref($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:29+23 + assume {:print "$at(186,45360,45383)"} true; + $t46 := $Dereference($t45); + + // $t47 := table::contains($t46, $t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:14+38 + call $t47 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t46, $t1); + if ($abort_flag) { + assume {:print "$at(186,45345,45383)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t48 := !($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:13+1 + call $t48 := $Not($t47); + + // if ($t48) goto L10 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + if ($t48) { goto L10; } else { goto L16; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 +L9: + + // drop($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + + // $t49 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1131:35+26 + assume {:print "$at(186,45419,45445)"} true; + $t49 := 3; + assume $IsValid'u64'($t49); + + // $t50 := error::already_exists($t49) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1131:13+49 + call $t50 := $1_error_already_exists($t49); + if ($abort_flag) { + assume {:print "$at(186,45397,45446)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + assume {:print "$track_abort(113,8):", $t50} $t50 == $t50; + + // $t19 := move($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + $t19 := $t50; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:69+15 + assume {:print "$at(186,45528,45543)"} true; +L11: + + // $t51 := token::create_collection_mutability_config($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:33+52 + assume {:print "$at(186,45492,45544)"} true; + call $t51 := $1_token_create_collection_mutability_config($t5); + if ($abort_flag) { + assume {:print "$at(186,45492,45544)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mutability_config]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:13+17 + assume {:print "$track_local(113,8,11):", $t51} $t51 == $t51; + + // $t52 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1139:21+1 + assume {:print "$at(186,45674,45675)"} true; + $t52 := 0; + assume $IsValid'u64'($t52); + + // $t53 := pack token::CollectionData($t2, $t1, $t3, $t52, $t4, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1135:26+166 + assume {:print "$at(186,45571,45737)"} true; + $t53 := $1_token_CollectionData($t2, $t1, $t3, $t52, $t4, $t51); + + // trace_local[collection]($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1135:13+10 + assume {:print "$track_local(113,8,8):", $t53} $t53 == $t53; + + // table::add($t45, $t1, $t53) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + assume {:print "$at(186,45748,45793)"} true; + call $t45 := $1_table_add'$1_string_String_$1_token_CollectionData'($t45, $t1, $t53); + if ($abort_flag) { + assume {:print "$at(186,45748,45793)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t44).collection_data (table::Table)]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + $t44 := $UpdateMutation($t44, $Update'$1_token_Collections'_collection_data($Dereference($t44), $Dereference($t45))); + + // write_back[token::Collections@]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t44), + $Dereference($t44)); + + // $t54 := borrow_global($t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1145:33+17 + assume {:print "$at(186,45827,45844)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t54 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(186,45827,45844)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[collection_handle]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1145:13+17 + $temp_0'$1_token_Collections' := $Dereference($t54); + assume {:print "$track_local(113,8,10):", $temp_0'$1_token_Collections'} $temp_0'$1_token_Collections' == $temp_0'$1_token_Collections'; + + // $t55 := features::module_event_migration_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1146:13+47 + assume {:print "$at(186,45885,45932)"} true; + call $t55 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,45885,45932)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1146:9+330 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1149:30+12 + assume {:print "$at(186,46025,46037)"} true; +L13: + + // $t56 := pack token::CreateCollection($t29, $t1, $t3, $t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1148:17+209 + assume {:print "$at(186,45977,46186)"} true; + $t56 := $1_token_CreateCollection($t29, $t1, $t3, $t2, $t4); + + // opaque begin: event::emit($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1147:13+252 + assume {:print "$at(186,45948,46200)"} true; + + // opaque end: event::emit($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1147:13+252 + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1158:18+17 + assume {:print "$at(186,46280,46297)"} true; +L12: + + // $t57 := borrow_field.create_collection_events($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1158:13+47 + assume {:print "$at(186,46275,46322)"} true; + $t57 := $ChildMutation($t54, 2, $Dereference($t54)->$create_collection_events); + + // $t58 := pack token::CreateCollectionEvent($t29, $t1, $t3, $t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1159:13+190 + assume {:print "$at(186,46336,46526)"} true; + $t58 := $1_token_CreateCollectionEvent($t29, $t1, $t3, $t2, $t4); + + // opaque begin: event::emit_event($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + assume {:print "$at(186,46221,46536)"} true; + + // opaque end: event::emit_event($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + + // write_back[Reference($t54).create_collection_events (event::EventHandle)]($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + $t54 := $UpdateMutation($t54, $Update'$1_token_Collections'_create_collection_events($Dereference($t54), $Dereference($t57))); + + // write_back[token::Collections@]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t54), + $Dereference($t54)); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; +L14: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t44) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun token::create_collection [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+2385 +procedure {:timeLimit 80} $1_token_create_collection$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: Vec (bool)) returns () +{ + // declare local variables + var $t6: $1_string_String; + var $t7: int; + var $t8: $1_token_CollectionData; + var $t9: $Mutation (Table int ($1_token_CollectionData)); + var $t10: $Mutation ($1_token_Collections); + var $t11: $1_token_CollectionMutabilityConfig; + var $t12: int; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_token_Collections; + var $t16: bool; + var $t17: Table int ($1_token_CollectionData); + 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: int; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: bool; + var $t32: Table int ($1_token_CollectionData); + var $t33: Table int ($1_token_TokenData); + var $t34: int; + var $t35: $1_account_Account; + var $t36: $1_event_EventHandle'$1_token_CreateCollectionEvent'; + var $t37: int; + var $t38: $1_account_Account; + var $t39: $1_event_EventHandle'$1_token_CreateTokenDataEvent'; + var $t40: int; + var $t41: $1_account_Account; + var $t42: $1_event_EventHandle'$1_token_MintTokenEvent'; + var $t43: $1_token_Collections; + var $t44: $Mutation ($1_token_Collections); + var $t45: $Mutation (Table int ($1_token_CollectionData)); + var $t46: Table int ($1_token_CollectionData); + var $t47: bool; + var $t48: bool; + var $t49: int; + var $t50: int; + var $t51: $1_token_CollectionMutabilityConfig; + var $t52: int; + var $t53: $1_token_CollectionData; + var $t54: $Mutation ($1_token_Collections); + var $t55: bool; + var $t56: $1_token_CreateCollection; + var $t57: $Mutation ($1_event_EventHandle'$1_token_CreateCollectionEvent'); + var $t58: $1_token_CreateCollectionEvent; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: Vec (bool); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'': Table int ($1_token_CollectionData); + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'$1_token_Collections': $1_token_Collections; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'bool'': Vec (bool); + var $1_account_Account_$memory#862: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$at(186,44158,44159)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume $IsValid'vec'bool''($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:530:9+47 + assume {:print "$at(187,22584,22631)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:544:9+39 + assume {:print "$at(187,22971,23010)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:545:9+45 + assume {:print "$at(187,23019,23064)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // assume Identical($t15, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:546:9+43 + assume {:print "$at(187,23073,23116)"} true; + assume ($t15 == $ResourceValue($1_token_Collections_$memory, $t13)); + + // assume Identical($t16, Not(exists($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:547:9+35 + assume {:print "$at(187,23125,23160)"} true; + assume ($t16 == !$ResourceExists($1_token_Collections_$memory, $t13)); + + // assume Identical($t17, select token::Collections.collection_data(global($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:548:9+64 + assume {:print "$at(187,23169,23233)"} true; + assume ($t17 == $ResourceValue($1_token_Collections_$memory, $t13)->$collection_data); + + // @862 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$at(186,44158,44159)"} true; + $1_account_Account_$memory#862 := $1_account_Account_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,2):", $t2} $t2 == $t2; + + // trace_local[uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,3):", $t3} $t3 == $t3; + + // trace_local[maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,4):", $t4} $t4 == $t4; + + // trace_local[mutate_setting]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1103:5+1 + assume {:print "$track_local(113,8,5):", $t5} $t5 == $t5; + + // $t18 := string::length($t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:17+21 + assume {:print "$at(186,44390,44411)"} true; + call $t18 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(186,44390,44411)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t20 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:42+26 + $t20 := 128; + assume $IsValid'u64'($t20); + + // $t21 := <=($t18, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:39+2 + call $t21 := $Le($t18, $t20); + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + assume {:print "$at(186,44382,44494)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 +L0: + + // $t22 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:94+25 + assume {:print "$at(186,44467,44492)"} true; + $t22 := 25; + assume $IsValid'u64'($t22); + + // $t23 := error::invalid_argument($t22) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:70+50 + call $t23 := $1_error_invalid_argument($t22); + if ($abort_flag) { + assume {:print "$at(186,44443,44493)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + assume {:print "$at(186,44382,44494)"} true; + assume {:print "$track_abort(113,8):", $t23} $t23 == $t23; + + // $t19 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + $t19 := $t23; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1111:9+112 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:32+4 + assume {:print "$at(186,44527,44531)"} true; +L2: + + // $t24 := string::length($t3) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:17+20 + assume {:print "$at(186,44512,44532)"} true; + call $t24 := $1_string_length($t3); + if ($abort_flag) { + assume {:print "$at(186,44512,44532)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t25 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:41+14 + $t25 := 512; + assume $IsValid'u64'($t25); + + // $t26 := <=($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:38+2 + call $t26 := $Le($t24, $t25); + + // if ($t26) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + if ($t26) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + assume {:print "$at(186,44504,44591)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 +L3: + + // $t27 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:81+13 + assume {:print "$at(186,44576,44589)"} true; + $t27 := 27; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_argument($t27) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:57+38 + call $t28 := $1_error_invalid_argument($t27); + if ($abort_flag) { + assume {:print "$at(186,44552,44590)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + assume {:print "$at(186,44504,44591)"} true; + assume {:print "$track_abort(113,8):", $t28} $t28 == $t28; + + // $t19 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + $t19 := $t28; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1112:9+87 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:47+7 + assume {:print "$at(186,44639,44646)"} true; +L5: + + // $t29 := signer::address_of($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:28+27 + assume {:print "$at(186,44620,44647)"} true; + call $t29 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,44620,44647)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[account_addr]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1113:13+12 + assume {:print "$track_local(113,8,7):", $t29} $t29 == $t29; + + // $t30 := exists($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:14+6 + assume {:print "$at(186,44662,44668)"} true; + $t30 := $ResourceExists($1_token_Collections_$memory, $t29); + + // $t31 := !($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:13+1 + call $t31 := $Not($t30); + + // if ($t31) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:9+557 + if ($t31) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1116:17+7 + assume {:print "$at(186,44736,44743)"} true; +L7: + + // $t32 := table::new() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1118:38+12 + assume {:print "$at(186,44812,44824)"} true; + call $t32 := $1_table_new'$1_string_String_$1_token_CollectionData'(); + if ($abort_flag) { + assume {:print "$at(186,44812,44824)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t33 := table::new() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1119:33+12 + assume {:print "$at(186,44858,44870)"} true; + call $t33 := $1_table_new'$1_token_TokenDataId_$1_token_TokenData'(); + if ($abort_flag) { + assume {:print "$at(186,44858,44870)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, global($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t35 == $ResourceValue($1_account_Account_$memory, $t34)); + + // $t36 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1120:47+57 + assume {:print "$at(186,44918,44975)"} true; + call $t36 := $1_account_new_event_handle'$1_token_CreateCollectionEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,44918,44975)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t37, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t37 == $1_signer_$address_of($t0)); + + // assume Identical($t38, global($t37)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t38 == $ResourceValue($1_account_Account_$memory, $t37)); + + // $t39 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1121:47+56 + assume {:print "$at(186,45023,45079)"} true; + call $t39 := $1_account_new_event_handle'$1_token_CreateTokenDataEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,45023,45079)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // assume Identical($t40, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t40 == $1_signer_$address_of($t0)); + + // assume Identical($t41, global($t40)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t41 == $ResourceValue($1_account_Account_$memory, $t40)); + + // $t42 := account::new_event_handle($t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1122:40+50 + assume {:print "$at(186,45120,45170)"} true; + call $t42 := $1_account_new_event_handle'$1_token_MintTokenEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,45120,45170)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t43 := pack token::Collections($t32, $t33, $t36, $t39, $t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1117:17+428 + assume {:print "$at(186,44761,45189)"} true; + $t43 := $1_token_Collections($t32, $t33, $t36, $t39, $t42); + + // move_to($t43, $t0) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1115:13+7 + assume {:print "$at(186,44711,44718)"} true; + if ($ResourceExists($1_token_Collections_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $t0->$addr, $t43); + } + if ($abort_flag) { + assume {:print "$at(186,44711,44718)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1115:13+493 + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1114:9+557 + assume {:print "$at(186,44657,45214)"} true; +L6: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:67+12 + assume {:print "$at(186,45283,45295)"} true; +L8: + + // $t44 := borrow_global($t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:36+17 + assume {:print "$at(186,45252,45269)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t44 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(186,45252,45269)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t45 := borrow_field.collection_data($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:31+65 + $t45 := $ChildMutation($t44, 0, $Dereference($t44)->$collection_data); + + // trace_local[collection_data]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1127:13+15 + $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'' := $Dereference($t45); + assume {:print "$track_local(113,8,9):", $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData''} $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'' == $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData''; + + // $t46 := read_ref($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:29+23 + assume {:print "$at(186,45360,45383)"} true; + $t46 := $Dereference($t45); + + // $t47 := table::contains($t46, $t1) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:14+38 + call $t47 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t46, $t1); + if ($abort_flag) { + assume {:print "$at(186,45345,45383)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // $t48 := !($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1130:13+1 + call $t48 := $Not($t47); + + // if ($t48) goto L10 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + if ($t48) { goto L10; } else { goto L16; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 +L9: + + // drop($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + + // $t49 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1131:35+26 + assume {:print "$at(186,45419,45445)"} true; + $t49 := 3; + assume $IsValid'u64'($t49); + + // $t50 := error::already_exists($t49) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1131:13+49 + call $t50 := $1_error_already_exists($t49); + if ($abort_flag) { + assume {:print "$at(186,45397,45446)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_abort($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + assume {:print "$at(186,45323,45457)"} true; + assume {:print "$track_abort(113,8):", $t50} $t50 == $t50; + + // $t19 := move($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + $t19 := $t50; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1129:9+134 + goto L15; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:69+15 + assume {:print "$at(186,45528,45543)"} true; +L11: + + // $t51 := token::create_collection_mutability_config($t5) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:33+52 + assume {:print "$at(186,45492,45544)"} true; + call $t51 := $1_token_create_collection_mutability_config($t5); + if ($abort_flag) { + assume {:print "$at(186,45492,45544)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[mutability_config]($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1134:13+17 + assume {:print "$track_local(113,8,11):", $t51} $t51 == $t51; + + // $t52 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1139:21+1 + assume {:print "$at(186,45674,45675)"} true; + $t52 := 0; + assume $IsValid'u64'($t52); + + // $t53 := pack token::CollectionData($t2, $t1, $t3, $t52, $t4, $t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1135:26+166 + assume {:print "$at(186,45571,45737)"} true; + $t53 := $1_token_CollectionData($t2, $t1, $t3, $t52, $t4, $t51); + + // trace_local[collection]($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1135:13+10 + assume {:print "$track_local(113,8,8):", $t53} $t53 == $t53; + + // table::add($t45, $t1, $t53) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + assume {:print "$at(186,45748,45793)"} true; + call $t45 := $1_table_add'$1_string_String_$1_token_CollectionData'($t45, $t1, $t53); + if ($abort_flag) { + assume {:print "$at(186,45748,45793)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // write_back[Reference($t44).collection_data (table::Table)]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + $t44 := $UpdateMutation($t44, $Update'$1_token_Collections'_collection_data($Dereference($t44), $Dereference($t45))); + + // write_back[token::Collections@]($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1144:9+45 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t44), + $Dereference($t44)); + + // $t54 := borrow_global($t29) on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1145:33+17 + assume {:print "$at(186,45827,45844)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t29)) { + call $ExecFailureAbort(); + } else { + $t54 := $Mutation($Global($t29), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t29)); + } + if ($abort_flag) { + assume {:print "$at(186,45827,45844)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // trace_local[collection_handle]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1145:13+17 + $temp_0'$1_token_Collections' := $Dereference($t54); + assume {:print "$track_local(113,8,10):", $temp_0'$1_token_Collections'} $temp_0'$1_token_Collections' == $temp_0'$1_token_Collections'; + + // $t55 := features::module_event_migration_enabled() on_abort goto L15 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1146:13+47 + assume {:print "$at(186,45885,45932)"} true; + call $t55 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,45885,45932)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,8):", $t19} $t19 == $t19; + goto L15; + } + + // if ($t55) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1146:9+330 + if ($t55) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1149:30+12 + assume {:print "$at(186,46025,46037)"} true; +L13: + + // $t56 := pack token::CreateCollection($t29, $t1, $t3, $t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1148:17+209 + assume {:print "$at(186,45977,46186)"} true; + $t56 := $1_token_CreateCollection($t29, $t1, $t3, $t2, $t4); + + // opaque begin: event::emit($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1147:13+252 + assume {:print "$at(186,45948,46200)"} true; + + // opaque end: event::emit($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1147:13+252 + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1158:18+17 + assume {:print "$at(186,46280,46297)"} true; +L12: + + // $t57 := borrow_field.create_collection_events($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1158:13+47 + assume {:print "$at(186,46275,46322)"} true; + $t57 := $ChildMutation($t54, 2, $Dereference($t54)->$create_collection_events); + + // $t58 := pack token::CreateCollectionEvent($t29, $t1, $t3, $t2, $t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1159:13+190 + assume {:print "$at(186,46336,46526)"} true; + $t58 := $1_token_CreateCollectionEvent($t29, $t1, $t3, $t2, $t4); + + // opaque begin: event::emit_event($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + assume {:print "$at(186,46221,46536)"} true; + + // opaque end: event::emit_event($t57, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + + // write_back[Reference($t54).create_collection_events (event::EventHandle)]($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + $t54 := $UpdateMutation($t54, $Update'$1_token_Collections'_create_collection_events($Dereference($t54), $Dereference($t57))); + + // write_back[token::Collections@]($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1157:9+315 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t54), + $Dereference($t54)); + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; +L14: + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:531:9+32 + assume {:print "$at(187,22640,22672)"} true; + assert {:msg "assert_failed(187,22640,22672): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 512)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:532:9+31 + assume {:print "$at(187,22681,22712)"} true; + assert {:msg "assert_failed(187,22681,22712): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 512); + + // assert Not(And($t16, Not(exists[@862]($t13)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:551:9+47 + assume {:print "$at(187,23384,23431)"} true; + assert {:msg "assert_failed(187,23384,23431): function does not abort under this condition"} + !($t16 && !$ResourceExists($1_account_Account_$memory#862, $t13)); + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:552:9+55 + assume {:print "$at(187,23440,23495)"} true; + assert {:msg "assert_failed(187,23440,23495): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 512)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:553:9+42 + assume {:print "$at(187,23504,23546)"} true; + assert {:msg "assert_failed(187,23504,23546): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 512); + + // assert Not(And($t16, Ge(Add(select account::Account.guid_creation_num($t14), 3), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:554:9+79 + assume {:print "$at(187,23555,23634)"} true; + assert {:msg "assert_failed(187,23555,23634): function does not abort under this condition"} + !($t16 && (($t14->$guid_creation_num + 3) >= 1125899906842624)); + + // assert Not(And($t16, Gt(Add(select account::Account.guid_creation_num($t14), 3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:555:9+55 + assume {:print "$at(187,23643,23698)"} true; + assert {:msg "assert_failed(187,23643,23698): function does not abort under this condition"} + !($t16 && (($t14->$guid_creation_num + 3) > 18446744073709551615)); + + // assert Not(Lt(Len($t5), 3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:679:9+34 + assume {:print "$at(187,29051,29085)"} true; + assert {:msg "assert_failed(187,29051,29085): function does not abort under this condition"} + !(LenVec($t5) < 3); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:680:9+101 + assume {:print "$at(187,29094,29195)"} true; + assert {:msg "assert_failed(187,29094,29195): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 0)); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:681:9+93 + assume {:print "$at(187,29204,29297)"} true; + assert {:msg "assert_failed(187,29204,29297): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 1)); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + assume {:print "$at(187,29306,29399)"} true; + assert {:msg "assert_failed(187,29306,29399): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 2)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; +L15: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1167:5+1 + assume {:print "$at(186,46542,46543)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t44) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun token::assert_collection_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+422 +procedure {:inline 1} $1_token_assert_collection_exists(_$t0: int, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_token_Collections; + var $t8: Table int ($1_token_CollectionData); + var $t9: bool; + var $t10: int; + var $t11: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t2, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$at(186,71805,71806)"} true; + assume {:print "$track_local(113,0,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$track_local(113,0,1):", $t1} $t1 == $t1; + + // $t3 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:17+6 + assume {:print "$at(186,71924,71930)"} true; + $t3 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + assume {:print "$at(186,71916,72007)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:72+26 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:72+26 + assume {:print "$at(186,71979,72005)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:55+44 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(186,71962,72006)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + assume {:print "$at(186,71916,72007)"} true; + assume {:print "$track_abort(113,0):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + $t6 := $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:63+15 + assume {:print "$at(186,72071,72086)"} true; +L2: + + // $t7 := get_global($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:36+13 + assume {:print "$at(186,72044,72057)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,72044,72057)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // $t8 := get_field.collection_data($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:35+60 + $t8 := $t7->$collection_data; + + // $t9 := table::contains($t8, $t1) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:17+53 + assume {:print "$at(186,72121,72174)"} true; + call $t9 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(186,72121,72174)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + assume {:print "$at(186,72113,72220)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:89+25 +L3: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:89+25 + assume {:print "$at(186,72193,72218)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:72+43 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(186,72176,72219)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + assume {:print "$at(186,72113,72220)"} true; + assume {:print "$track_abort(113,0):", $t11} $t11 == $t11; + + // $t6 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + $t6 := $t11; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:116+1 +L5: + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 + assume {:print "$at(186,72226,72227)"} true; +L6: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 + assume {:print "$at(186,72226,72227)"} true; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 +L7: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 + assume {:print "$at(186,72226,72227)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::assert_collection_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+422 +procedure {:timeLimit 80} $1_token_assert_collection_exists$verify(_$t0: int, _$t1: $1_string_String) returns () +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: $1_token_Collections; + var $t8: Table int ($1_token_CollectionData); + var $t9: bool; + var $t10: int; + var $t11: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $1_token_Collections_$memory#864: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$at(186,71805,71806)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t2, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @864 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$at(186,71805,71806)"} true; + $1_token_Collections_$memory#864 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$track_local(113,0,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1773:5+1 + assume {:print "$track_local(113,0,1):", $t1} $t1 == $t1; + + // $t3 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:17+6 + assume {:print "$at(186,71924,71930)"} true; + $t3 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + assume {:print "$at(186,71916,72007)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:72+26 +L0: + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:72+26 + assume {:print "$at(186,71979,72005)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := error::not_found($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:55+44 + call $t5 := $1_error_not_found($t4); + if ($abort_flag) { + assume {:print "$at(186,71962,72006)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + assume {:print "$at(186,71916,72007)"} true; + assume {:print "$track_abort(113,0):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + $t6 := $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1774:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:63+15 + assume {:print "$at(186,72071,72086)"} true; +L2: + + // $t7 := get_global($t0) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:36+13 + assume {:print "$at(186,72044,72057)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,72044,72057)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // $t8 := get_field.collection_data($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1775:35+60 + $t8 := $t7->$collection_data; + + // $t9 := table::contains($t8, $t1) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:17+53 + assume {:print "$at(186,72121,72174)"} true; + call $t9 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(186,72121,72174)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t9) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + if ($t9) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + assume {:print "$at(186,72113,72220)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:89+25 +L3: + + // $t10 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:89+25 + assume {:print "$at(186,72193,72218)"} true; + $t10 := 2; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:72+43 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(186,72176,72219)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,0):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + assume {:print "$at(186,72113,72220)"} true; + assume {:print "$track_abort(113,0):", $t11} $t11 == $t11; + + // $t6 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + $t6 := $t11; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:9+107 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1776:116+1 +L5: + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 + assume {:print "$at(186,72226,72227)"} true; +L6: + + // assert Not(Not(exists[@864]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#864, $t0); + + // assert Not(Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1777:5+1 + assume {:print "$at(186,72226,72227)"} true; +L7: + + // assert Or(Not(exists[@864]($t0)), Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:916:5+136 + assume {:print "$at(187,38621,38757)"} true; + assert {:msg "assert_failed(187,38621,38757): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#864, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:916:5+136 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::assert_non_standard_reserved_property [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1787:5+435 +procedure {:inline 1} $1_token_assert_non_standard_reserved_property(_$t0: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: int; + var $t3: $1_string_String; + var $t4: int; + var $t5: Vec ($1_string_String); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: $1_string_String; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $1_string_String; + var $t17: Vec (int); + var $t18: $1_string_String; + var $t19: bool; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: int; + var $t0: Vec ($1_string_String); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[keys]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1787:5+1 + assume {:print "$at(186,72801,72802)"} true; + assume {:print "$track_local(113,1,0):", $t0} $t0 == $t0; + + // trace_local[self#886]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:286:45+4 + assume {:print "$at(16,10348,10352)"} true; + assume {:print "$track_local(113,1,5):", $t0} $t0 == $t0; + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:17+1 + assume {:print "$at(16,10405,10406)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_local[i#888]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:287:13+1 + assume {:print "$track_local(113,1,2):", $t6} $t6 == $t6; + + // $t7 := vector::length($t0) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:19+12 + assume {:print "$at(16,10426,10438)"} true; + call $t7 := $1_vector_length'$1_string_String'($t0); + if ($abort_flag) { + assume {:print "$at(16,10426,10438)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // trace_local[len#889]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:288:13+3 + assume {:print "$track_local(113,1,4):", $t7} $t7 == $t7; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; +L9: + + // $t2 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$at(16,10455,10456)"} true; + havoc $t2; + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t2); + + // $t9 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t9; + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t9); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'$1_string_String'($t10); + + // $t11 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t11; + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t11); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t12; + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t12); + + // $t13 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t13; + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t13); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'$1_string_String'($t16); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'vec'u8''($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'$1_string_String'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'bool'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume $IsValid'u64'($t21); + + // trace_local[i#888]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume {:print "$info(): enter loop, variable(s) i#888 havocked and reassigned"} true; + assume {:print "$track_local(113,1,2):", $t2} $t2 == $t2; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:16+1 + assume !$abort_flag; + + // $t9 := <($t2, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:18+1 + call $t9 := $Lt($t2, $t7); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:289:9+81 +L1: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:22+4 + assume {:print "$at(16,10487,10491)"} true; +L2: + + // $t10 := vector::borrow($t0, $t2) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:290:15+15 + assume {:print "$at(16,10480,10495)"} true; + call $t10 := $1_vector_borrow'$1_string_String'($t0, $t2); + if ($abort_flag) { + assume {:print "$at(16,10480,10495)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // trace_local[key#891]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1789:17+3 + assume {:print "$at(186,72927,72930)"} true; + assume {:print "$track_local(113,1,3):", $t10} $t10 == $t10; + + // $t11 := string::length($t10) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1790:26+19 + assume {:print "$at(186,72972,72991)"} true; + call $t11 := $1_string_length($t10); + if ($abort_flag) { + assume {:print "$at(186,72972,72991)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // $t12 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1791:27+1 + assume {:print "$at(186,73019,73020)"} true; + $t12 := 6; + assume $IsValid'u64'($t12); + + // $t13 := >=($t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1791:24+2 + call $t13 := $Ge($t11, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1791:13+212 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1792:51+3 + assume {:print "$at(186,73074,73077)"} true; +L4: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1792:56+1 + assume {:print "$at(186,73079,73080)"} true; + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t15 := 6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1792:59+1 + $t15 := 6; + assume $IsValid'u64'($t15); + + // $t16 := string::sub_string($t10, $t14, $t15) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1792:30+31 + call $t16 := $1_string_sub_string($t10, $t14, $t15); + if ($abort_flag) { + assume {:print "$at(186,73053,73084)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // $t17 := [84, 79, 75, 69, 78, 95] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:48+9 + assume {:print "$at(186,73133,73142)"} true; + $t17 := ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec2(78, 95)); + assume $IsValid'vec'u8''($t17); + + // $t18 := string::utf8($t17) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:35+23 + call $t18 := $1_string_utf8($t17); + if ($abort_flag) { + assume {:print "$at(186,73120,73143)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // $t19 := !=($t16, $t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:32+2 + $t19 := !$IsEqual'$1_string_String'($t16, $t18); + + // if ($t19) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 + if ($t19) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 + assume {:print "$at(186,73102,73202)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 +L5: + + // $t22 := 40 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:85+30 + assume {:print "$at(186,73170,73200)"} true; + $t22 := 40; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:60+56 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(186,73145,73201)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 + assume {:print "$at(186,73102,73202)"} true; + assume {:print "$track_abort(113,1):", $t23} $t23 == $t23; + + // $t8 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 + $t8 := $t23; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:17+100 + goto L12; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:117+1 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1793:117+1 + assume {:print "$at(186,73202,73203)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1791:13+212 + assume {:print "$at(186,73005,73217)"} true; +L3: + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:17+1 + assume {:print "$at(16,10514,10515)"} true; +L8: + + // $t20 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:21+1 + assume {:print "$at(16,10518,10519)"} true; + $t20 := 1; + assume $IsValid'u64'($t20); + + // $t21 := +($t2, $t20) on_abort goto L12 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:19+1 + call $t21 := $AddU64($t2, $t20); + if ($abort_flag) { + assume {:print "$at(16,10516,10517)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,1):", $t8} $t8 == $t8; + goto L12; + } + + // trace_local[i#888]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+1 + assume {:print "$track_local(113,1,2):", $t21} $t21 == $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/vector.move:291:13+9 + goto L10; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1795:11+1 + assume {:print "$at(186,73229,73230)"} true; +L0: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1795:11+1 + assume {:print "$at(186,73229,73230)"} true; + goto L11; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1795:11+1 + // Loop invariant checking block for the loop started with header: L9 +L10: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1795:11+1 + assume {:print "$at(186,73229,73230)"} true; + assume false; + return; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1796:5+1 + assume {:print "$at(186,73235,73236)"} true; +L11: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1796:5+1 + assume {:print "$at(186,73235,73236)"} true; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1796:5+1 +L12: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1796:5+1 + assume {:print "$at(186,73235,73236)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun token::assert_tokendata_exists [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+562 +procedure {:inline 1} $1_token_assert_tokendata_exists(_$t0: $signer, _$t1: $1_token_TokenDataId) returns () +{ + // declare local variables + var $t2: $1_token_TokenDataId; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int ($1_token_TokenData); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Collections); + var $t17: $Mutation (Table int ($1_token_TokenData)); + var $t18: Table int ($1_token_TokenData); + var $t19: bool; + var $t20: int; + var $t21: int; + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t4, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t4 == $t1->$creator); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, select token::Collections.token_data(global($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t6 == $ResourceValue($1_token_Collections_$memory, $t4)->$token_data); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$at(186,72233,72234)"} true; + assume {:print "$track_local(113,2,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$track_local(113,2,1):", $t1} $t1 == $t1; + + // $t7 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1780:28+21 + assume {:print "$at(186,72357,72378)"} true; + $t7 := $t1->$creator; + + // trace_local[creator_addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1780:13+12 + assume {:print "$track_local(113,2,3):", $t7} $t7 == $t7; + + // $t8 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:17+27 + assume {:print "$at(186,72396,72423)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,72396,72423)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // $t10 := ==($t8, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:45+2 + $t10 := $IsEqual'address'($t8, $t7); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + assume {:print "$at(186,72388,72489)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:87+21 +L0: + + // $t11 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:87+21 + assume {:print "$at(186,72466,72487)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:62+47 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(186,72441,72488)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + assume {:print "$at(186,72388,72489)"} true; + assume {:print "$track_abort(113,2):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + $t9 := $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:37+12 + assume {:print "$at(186,72527,72539)"} true; +L2: + + // $t13 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:17+6 + assume {:print "$at(186,72507,72513)"} true; + $t13 := $ResourceExists($1_token_Collections_$memory, $t7); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + assume {:print "$at(186,72499,72587)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:69+26 +L3: + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:69+26 + assume {:print "$at(186,72559,72585)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:52+44 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(186,72542,72586)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + assume {:print "$at(186,72499,72587)"} true; + assume {:print "$track_abort(113,2):", $t15} $t15 == $t15; + + // $t9 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + $t9 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:66+12 + assume {:print "$at(186,72654,72666)"} true; +L5: + + // $t16 := borrow_global($t7) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:35+17 + assume {:print "$at(186,72623,72640)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(186,72623,72640)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // $t17 := borrow_field.token_data($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:30+60 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$token_data); + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:32+31 + assume {:print "$at(186,72711,72742)"} true; + $t18 := $Dereference($t17); + + // $t19 := table::contains($t18, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:17+46 + call $t19 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t18, $t1); + if ($abort_flag) { + assume {:print "$at(186,72696,72742)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + assume {:print "$at(186,72688,72788)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:82+25 +L6: + + // $t20 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:82+25 + assume {:print "$at(186,72761,72786)"} true; + $t20 := 10; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:65+43 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(186,72744,72787)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + assume {:print "$at(186,72688,72788)"} true; + assume {:print "$track_abort(113,2):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:109+1 +L8: + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 + assume {:print "$at(186,72794,72795)"} true; +L9: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 + assume {:print "$at(186,72794,72795)"} true; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 +L10: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 + assume {:print "$at(186,72794,72795)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::assert_tokendata_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+562 +procedure {:timeLimit 80} $1_token_assert_tokendata_exists$verify(_$t0: $signer, _$t1: $1_token_TokenDataId) returns () +{ + // declare local variables + var $t2: $1_token_TokenDataId; + var $t3: int; + var $t4: int; + var $t5: int; + var $t6: Table int ($1_token_TokenData); + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Collections); + var $t17: $Mutation (Table int ($1_token_TokenData)); + var $t18: Table int ($1_token_TokenData); + var $t19: bool; + var $t20: int; + var $t21: int; + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#866: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$at(186,72233,72234)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t4, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t4 == $t1->$creator); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, select token::Collections.token_data(global($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t6 == $ResourceValue($1_token_Collections_$memory, $t4)->$token_data); + + // @866 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$at(186,72233,72234)"} true; + $1_token_Collections_$memory#866 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$track_local(113,2,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1779:5+1 + assume {:print "$track_local(113,2,1):", $t1} $t1 == $t1; + + // $t7 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1780:28+21 + assume {:print "$at(186,72357,72378)"} true; + $t7 := $t1->$creator; + + // trace_local[creator_addr]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1780:13+12 + assume {:print "$track_local(113,2,3):", $t7} $t7 == $t7; + + // $t8 := signer::address_of($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:17+27 + assume {:print "$at(186,72396,72423)"} true; + call $t8 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,72396,72423)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // $t10 := ==($t8, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:45+2 + $t10 := $IsEqual'address'($t8, $t7); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + assume {:print "$at(186,72388,72489)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:87+21 +L0: + + // $t11 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:87+21 + assume {:print "$at(186,72466,72487)"} true; + $t11 := 14; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:62+47 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(186,72441,72488)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + assume {:print "$at(186,72388,72489)"} true; + assume {:print "$track_abort(113,2):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + $t9 := $t12; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1781:9+101 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:37+12 + assume {:print "$at(186,72527,72539)"} true; +L2: + + // $t13 := exists($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:17+6 + assume {:print "$at(186,72507,72513)"} true; + $t13 := $ResourceExists($1_token_Collections_$memory, $t7); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + assume {:print "$at(186,72499,72587)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:69+26 +L3: + + // $t14 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:69+26 + assume {:print "$at(186,72559,72585)"} true; + $t14 := 1; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:52+44 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(186,72542,72586)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + assume {:print "$at(186,72499,72587)"} true; + assume {:print "$track_abort(113,2):", $t15} $t15 == $t15; + + // $t9 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + $t9 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1782:9+88 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:66+12 + assume {:print "$at(186,72654,72666)"} true; +L5: + + // $t16 := borrow_global($t7) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:35+17 + assume {:print "$at(186,72623,72640)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t7)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t7), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t7)); + } + if ($abort_flag) { + assume {:print "$at(186,72623,72640)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // $t17 := borrow_field.token_data($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1783:30+60 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$token_data); + + // $t18 := read_ref($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:32+31 + assume {:print "$at(186,72711,72742)"} true; + $t18 := $Dereference($t17); + + // $t19 := table::contains($t18, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:17+46 + call $t19 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t18, $t1); + if ($abort_flag) { + assume {:print "$at(186,72696,72742)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t19) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + if ($t19) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + assume {:print "$at(186,72688,72788)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:82+25 +L6: + + // $t20 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:82+25 + assume {:print "$at(186,72761,72786)"} true; + $t20 := 10; + assume $IsValid'u64'($t20); + + // $t21 := error::not_found($t20) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:65+43 + call $t21 := $1_error_not_found($t20); + if ($abort_flag) { + assume {:print "$at(186,72744,72787)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,2):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + assume {:print "$at(186,72688,72788)"} true; + assume {:print "$track_abort(113,2):", $t21} $t21 == $t21; + + // $t9 := move($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + $t9 := $t21; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:9+100 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1784:109+1 +L8: + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 + assume {:print "$at(186,72794,72795)"} true; +L9: + + // assert Not(Neq
($t5, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t5, $t4); + + // assert Not(Not(exists[@866]($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#866, $t4); + + // assert Not(Not(table::spec_contains[]($t6, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t6, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1785:5+1 + assume {:print "$at(186,72794,72795)"} true; +L10: + + // assert Or(Or(Neq
($t5, $t4), Not(exists[@866]($t4))), Not(table::spec_contains[]($t6, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:931:5+129 + assume {:print "$at(187,39278,39407)"} true; + assert {:msg "assert_failed(187,39278,39407): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'address'($t5, $t4) || !$ResourceExists($1_token_Collections_$memory#866, $t4)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t6, $t1)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:931:5+129 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::balance_of [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+372 +procedure {:inline 1} $1_token_balance_of(_$t0: int, _$t1: $1_token_TokenId) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: $1_token_TokenStore; + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_token_TokenStore; + var $t9: int; + var $t10: Table int ($1_token_Token); + var $t11: bool; + var $t12: Table int ($1_token_Token); + var $t13: $1_token_Token; + var $t14: int; + var $t0: int; + var $t1: $1_token_TokenId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume {:print "$at(186,60126,60127)"} true; + assume {:print "$track_local(113,3,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume {:print "$track_local(113,3,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:14+6 + assume {:print "$at(186,60217,60223)"} true; + $t4 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // $t5 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:13+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:9+64 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:20+1 + assume {:print "$at(186,60265,60266)"} true; +L1: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:20+1 + assume {:print "$at(186,60265,60266)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + assume {:print "$track_return(113,3,0):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + $t7 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:53+5 + assume {:print "$at(186,60330,60335)"} true; +L0: + + // $t8 := get_global($t0) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:27+13 + assume {:print "$at(186,60304,60317)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_TokenStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,60304,60317)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[token_store]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:13+11 + assume {:print "$track_local(113,3,3):", $t8} $t8 == $t8; + + // $t10 := get_field.tokens($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:29+19 + assume {:print "$at(186,60366,60385)"} true; + $t10 := $t8->$tokens; + + // $t11 := table::contains($t10, $t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:13+40 + call $t11 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t10, $t1); + if ($abort_flag) { + assume {:print "$at(186,60350,60390)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // if ($t11) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + if ($t11) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:28+11 + assume {:print "$at(186,60421,60432)"} true; +L3: + + // $t12 := get_field.tokens($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:27+19 + assume {:print "$at(186,60420,60439)"} true; + $t12 := $t8->$tokens; + + // $t13 := table::borrow($t12, $t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:13+38 + call $t13 := $1_table_borrow'$1_token_TokenId_$1_token_Token'($t12, $t1); + if ($abort_flag) { + assume {:print "$at(186,60406,60444)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // $t2 := get_field.amount($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:13+45 + $t2 := $t13->$amount; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 +L2: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1497:13+1 + assume {:print "$at(186,60481,60482)"} true; + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t2 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + $t2 := $t14; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 +L4: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + assume {:print "$track_return(113,3,0):", $t2} $t2 == $t2; + + // $t7 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + $t7 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + assume {:print "$at(186,60497,60498)"} true; +L5: + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + assume {:print "$at(186,60497,60498)"} true; + $ret0 := $t7; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 +L6: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + assume {:print "$at(186,60497,60498)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::balance_of [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+372 +procedure {:timeLimit 80} $1_token_balance_of$verify(_$t0: int, _$t1: $1_token_TokenId) returns ($ret0: int) +{ + // declare local variables + var $t2: int; + var $t3: $1_token_TokenStore; + var $t4: bool; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: $1_token_TokenStore; + var $t9: int; + var $t10: Table int ($1_token_Token); + var $t11: bool; + var $t12: Table int ($1_token_Token); + var $t13: $1_token_Token; + var $t14: int; + var $t0: int; + var $t1: $1_token_TokenId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume {:print "$at(186,60126,60127)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume {:print "$track_local(113,3,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+1 + assume {:print "$track_local(113,3,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:14+6 + assume {:print "$at(186,60217,60223)"} true; + $t4 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // $t5 := !($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:13+1 + call $t5 := $Not($t4); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1490:9+64 + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:20+1 + assume {:print "$at(186,60265,60266)"} true; +L1: + + // $t6 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:20+1 + assume {:print "$at(186,60265,60266)"} true; + $t6 := 0; + assume $IsValid'u64'($t6); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + assume {:print "$track_return(113,3,0):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + $t7 := $t6; + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1491:13+8 + goto L5; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:53+5 + assume {:print "$at(186,60330,60335)"} true; +L0: + + // $t8 := get_global($t0) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:27+13 + assume {:print "$at(186,60304,60317)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_TokenStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,60304,60317)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // trace_local[token_store]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1493:13+11 + assume {:print "$track_local(113,3,3):", $t8} $t8 == $t8; + + // $t10 := get_field.tokens($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:29+19 + assume {:print "$at(186,60366,60385)"} true; + $t10 := $t8->$tokens; + + // $t11 := table::contains($t10, $t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:13+40 + call $t11 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t10, $t1); + if ($abort_flag) { + assume {:print "$at(186,60350,60390)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // if ($t11) goto L3 else goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + if ($t11) { goto L3; } else { goto L2; } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:28+11 + assume {:print "$at(186,60421,60432)"} true; +L3: + + // $t12 := get_field.tokens($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:27+19 + assume {:print "$at(186,60420,60439)"} true; + $t12 := $t8->$tokens; + + // $t13 := table::borrow($t12, $t1) on_abort goto L6 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:13+38 + call $t13 := $1_table_borrow'$1_token_TokenId_$1_token_Token'($t12, $t1); + if ($abort_flag) { + assume {:print "$at(186,60406,60444)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,3):", $t9} $t9 == $t9; + goto L6; + } + + // $t2 := get_field.amount($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1495:13+45 + $t2 := $t13->$amount; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 +L2: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1497:13+1 + assume {:print "$at(186,60481,60482)"} true; + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t2 := $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + $t2 := $t14; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 +L4: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + assume {:print "$at(186,60346,60492)"} true; + assume {:print "$track_return(113,3,0):", $t2} $t2 == $t2; + + // $t7 := move($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1494:9+146 + $t7 := $t2; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + assume {:print "$at(186,60497,60498)"} true; +L5: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + assume {:print "$at(186,60497,60498)"} true; + assert {:msg "assert_failed(186,60497,60498): function does not abort under this condition"} + !false; + + // return $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 + $ret0 := $t7; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1499:5+1 +L6: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+372 + assume {:print "$at(186,60126,60498)"} true; + assert {:msg "assert_failed(186,60126,60498): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1489:5+372 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::burn_by_creator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+3093 +procedure {:timeLimit 80} $1_token_burn_by_creator$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: int) returns () +{ + // declare local variables + var $t6: $1_string_String; + var $t7: $1_property_map_PropertyMap; + var $t8: $1_string_String; + var $t9: $1_property_map_PropertyMap; + var $t10: int; + var $t11: $Mutation ($1_token_CollectionData); + var $t12: $Mutation ($1_token_Collections); + var $t13: int; + var $t14: $Mutation ($1_token_TokenData); + var $t15: $1_token_TokenId; + var $t16: $Mutation ($1_token_TokenStore); + var $t17: int; + var $t18: $1_token_TokenId; + var $t19: int; + var $t20: $1_token_Collections; + var $t21: $1_token_TokenData; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: $1_token_TokenId; + var $t29: $1_token_TokenDataId; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: $Mutation ($1_token_Collections); + var $t35: Table int ($1_token_TokenData); + var $t36: $1_token_TokenDataId; + var $t37: bool; + var $t38: int; + var $t39: int; + var $t40: $Mutation (Table int ($1_token_TokenData)); + var $t41: $1_token_TokenDataId; + var $t42: $Mutation ($1_token_TokenData); + var $t43: $1_property_map_PropertyMap; + var $t44: Vec (int); + var $t45: $1_string_String; + var $t46: bool; + var $t47: int; + var $t48: int; + var $t49: $1_property_map_PropertyMap; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: Vec (int); + var $t53: $1_property_map_PropertyValue; + var $t54: bool; + var $t55: int; + var $t56: int; + var $t57: Table int ($1_token_Token); + var $t58: $1_token_Token; + var $t59: $1_token_TokenId; + var $t60: int; + var $t61: $1_property_map_PropertyMap; + var $t62: $Mutation ($1_token_TokenStore); + var $t63: bool; + var $t64: $1_token_BurnToken; + var $t65: $Mutation ($1_event_EventHandle'$1_token_BurnTokenEvent'); + var $t66: $1_token_BurnTokenEvent; + var $t67: int; + var $t68: int; + var $t69: bool; + var $t70: int; + var $t71: int; + var $t72: $Mutation (int); + var $t73: int; + var $t74: int; + var $t75: bool; + var $t76: $Mutation (Table int ($1_token_TokenData)); + var $t77: $1_token_TokenDataId; + var $t78: $1_token_TokenData; + var $t79: $Mutation (Table int ($1_token_CollectionData)); + var $t80: $1_token_TokenDataId; + var $t81: $1_string_String; + var $t82: $Mutation ($1_token_CollectionData); + var $t83: int; + var $t84: int; + var $t85: bool; + var $t86: int; + var $t87: int; + var $t88: int; + var $t89: $Mutation (int); + var $t90: int; + var $t91: int; + var $t92: bool; + var $t93: $Mutation (Table int ($1_token_CollectionData)); + var $t94: $1_string_String; + var $t95: $1_token_CollectionData; + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'$1_token_Collections': $1_token_Collections; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_Collections_$memory#868: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$at(186,19188,19189)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume $IsValid'u64'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:182:9+50 + assume {:print "$at(187,6359,6409)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, token::spec_create_token_id_raw($t17, $t2, $t3, $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:183:9+93 + assume {:print "$at(187,6418,6511)"} true; + assume ($t18 == $1_token_spec_create_token_id_raw($t17, $t2, $t3, $t4)); + + // assume Identical($t19, select token::TokenDataId.creator(select token::TokenId.token_data_id($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:184:9+50 + assume {:print "$at(187,6520,6570)"} true; + assume ($t19 == $t18->$token_data_id->$creator); + + // assume Identical($t20, global($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:185:9+66 + assume {:print "$at(187,6579,6645)"} true; + assume ($t20 == $ResourceValue($1_token_Collections_$memory, $t17)); + + // assume Identical($t21, table::spec_get(select token::Collections.token_data($t20), select token::TokenId.token_data_id($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:186:9+116 + assume {:print "$at(187,6654,6770)"} true; + assume ($t21 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t20->$token_data, $t18->$token_data_id)); + + // @868 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$at(186,19188,19189)"} true; + $1_token_Collections_$memory#868 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,0):", $t0} $t0 == $t0; + + // trace_local[owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,1):", $t1} $t1 == $t1; + + // trace_local[collection]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,3):", $t3} $t3 == $t3; + + // trace_local[property_version]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,4):", $t4} $t4 == $t4; + + // trace_local[amount]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:562:5+1 + assume {:print "$track_local(113,5,5):", $t5} $t5 == $t5; + + // $t22 := signer::address_of($t0) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:570:31+27 + assume {:print "$at(186,19445,19472)"} true; + call $t22 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,19445,19472)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[creator_address]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:570:13+15 + assume {:print "$track_local(113,5,13):", $t22} $t22 == $t22; + + // $t24 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:26+1 + assume {:print "$at(186,19499,19500)"} true; + $t24 := 0; + assume $IsValid'u64'($t24); + + // $t25 := >($t5, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:24+1 + call $t25 := $Gt($t5, $t24); + + // if ($t25) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 + if ($t25) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 + assume {:print "$at(186,19482,19559)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:53+31 +L0: + + // $t26 := 29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:53+31 + assume {:print "$at(186,19526,19557)"} true; + $t26 := 29; + assume $IsValid'u64'($t26); + + // $t27 := error::invalid_argument($t26) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:29+56 + call $t27 := $1_error_invalid_argument($t26); + if ($abort_flag) { + assume {:print "$at(186,19502,19558)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 + assume {:print "$at(186,19482,19559)"} true; + assume {:print "$track_abort(113,5):", $t27} $t27 == $t27; + + // $t23 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 + $t23 := $t27; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:571:9+77 + goto L30; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:572:44+15 + assume {:print "$at(186,19604,19619)"} true; +L2: + + // $t28 := token::create_token_id_raw($t22, $t2, $t3, $t4) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:572:24+72 + assume {:print "$at(186,19584,19656)"} true; + call $t28 := $1_token_create_token_id_raw($t22, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(186,19584,19656)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[token_id]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:572:13+8 + assume {:print "$track_local(113,5,15):", $t28} $t28 == $t28; + + // $t29 := get_field.token_data_id($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:573:28+22 + assume {:print "$at(186,19685,19707)"} true; + $t29 := $t28->$token_data_id; + + // $t30 := get_field.creator($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:573:28+30 + $t30 := $t29->$creator; + + // $t31 := exists($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:575:13+6 + assume {:print "$at(186,19746,19752)"} true; + $t31 := $ResourceExists($1_token_Collections_$memory, $t30); + + // if ($t31) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 + assume {:print "$at(186,19725,19848)"} true; + if ($t31) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 + assume {:print "$at(186,19725,19848)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:576:30+26 + assume {:print "$at(186,19810,19836)"} true; +L3: + + // $t32 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:576:30+26 + assume {:print "$at(186,19810,19836)"} true; + $t32 := 1; + assume $IsValid'u64'($t32); + + // $t33 := error::not_found($t32) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:576:13+44 + call $t33 := $1_error_not_found($t32); + if ($abort_flag) { + assume {:print "$at(186,19793,19837)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 + assume {:print "$at(186,19725,19848)"} true; + assume {:print "$track_abort(113,5):", $t33} $t33 == $t33; + + // $t23 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 + $t23 := $t33; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:574:9+123 + goto L30; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:579:58+15 + assume {:print "$at(186,19908,19923)"} true; +L5: + + // $t34 := borrow_global($t22) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:579:27+17 + assume {:print "$at(186,19877,19894)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t22)) { + call $ExecFailureAbort(); + } else { + $t34 := $Mutation($Global($t22), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t22)); + } + if ($abort_flag) { + assume {:print "$at(186,19877,19894)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[collections]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:579:13+11 + $temp_0'$1_token_Collections' := $Dereference($t34); + assume {:print "$track_local(113,5,12):", $temp_0'$1_token_Collections'} $temp_0'$1_token_Collections' == $temp_0'$1_token_Collections'; + + // $t35 := get_field.token_data($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:581:29+23 + assume {:print "$at(186,19971,19994)"} true; + $t35 := $Dereference($t34)->$token_data; + + // $t36 := get_field.token_data_id($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:581:54+22 + $t36 := $t28->$token_data_id; + + // $t37 := table::contains($t35, $t36) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:581:13+64 + call $t37 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t35, $t36); + if ($abort_flag) { + assume {:print "$at(186,19955,20019)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // if ($t37) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + assume {:print "$at(186,19934,20087)"} true; + if ($t37) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + assume {:print "$at(186,19934,20087)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 +L6: + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + assume {:print "$at(186,19934,20087)"} true; + + // $t38 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:582:30+25 + assume {:print "$at(186,20050,20075)"} true; + $t38 := 10; + assume $IsValid'u64'($t38); + + // $t39 := error::not_found($t38) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:582:13+43 + call $t39 := $1_error_not_found($t38); + if ($abort_flag) { + assume {:print "$at(186,20033,20076)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_abort($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + assume {:print "$at(186,19934,20087)"} true; + assume {:print "$track_abort(113,5):", $t39} $t39 == $t39; + + // $t23 := move($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + $t23 := $t39; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:580:9+153 + goto L30; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:586:18+11 + assume {:print "$at(186,20151,20162)"} true; +L8: + + // $t40 := borrow_field.token_data($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:586:13+27 + assume {:print "$at(186,20146,20173)"} true; + $t40 := $ChildMutation($t34, 1, $Dereference($t34)->$token_data); + + // $t41 := get_field.token_data_id($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:587:13+22 + assume {:print "$at(186,20187,20209)"} true; + $t41 := $t28->$token_data_id; + + // $t42 := table::borrow_mut($t40, $t41) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:585:26+105 + assume {:print "$at(186,20115,20220)"} true; + call $t42,$t40 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t40, $t41); + if ($abort_flag) { + assume {:print "$at(186,20115,20220)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[token_data]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:585:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t42); + assume {:print "$track_local(113,5,14):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t43 := get_field.default_properties($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:592:40+30 + assume {:print "$at(186,20378,20408)"} true; + $t43 := $Dereference($t42)->$default_properties; + + // $t44 := [84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 67, 82, 69, 65, 84, 79, 82] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:592:86+19 + $t44 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 67, 82)), MakeVec4(69, 65, 84, 79)), MakeVec1(82)); + assume $IsValid'vec'u8''($t44); + + // $t45 := string::utf8($t44) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:592:73+33 + call $t45 := $1_string_utf8($t44); + if ($abort_flag) { + assume {:print "$at(186,20411,20444)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // $t46 := property_map::contains_key($t43, $t45) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:592:13+94 + call $t46 := $1_property_map_contains_key($t43, $t45); + if ($abort_flag) { + assume {:print "$at(186,20351,20445)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // if ($t46) goto L10 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + assume {:print "$at(186,20330,20521)"} true; + if ($t46) { goto L10; } else { goto L31; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + assume {:print "$at(186,20330,20521)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 +L9: + + // drop($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + assume {:print "$at(186,20330,20521)"} true; + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + + // $t47 := 31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:593:38+26 + assume {:print "$at(186,20484,20510)"} true; + $t47 := 31; + assume $IsValid'u64'($t47); + + // $t48 := error::permission_denied($t47) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:593:13+52 + call $t48 := $1_error_permission_denied($t47); + if ($abort_flag) { + assume {:print "$at(186,20459,20511)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_abort($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + assume {:print "$at(186,20330,20521)"} true; + assume {:print "$track_abort(113,5):", $t48} $t48 == $t48; + + // $t23 := move($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + $t23 := $t48; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:591:9+191 + goto L30; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:596:61+10 + assume {:print "$at(186,20584,20594)"} true; +L11: + + // $t49 := get_field.default_properties($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:596:60+30 + assume {:print "$at(186,20583,20613)"} true; + $t49 := $Dereference($t42)->$default_properties; + + // $t50 := [84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 67, 82, 69, 65, 84, 79, 82] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:596:106+19 + $t50 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 67, 82)), MakeVec4(69, 65, 84, 79)), MakeVec1(82)); + assume $IsValid'vec'u8''($t50); + + // $t51 := string::utf8($t50) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:596:93+33 + call $t51 := $1_string_utf8($t50); + if ($abort_flag) { + assume {:print "$at(186,20616,20649)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // assume Identical($t52, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t52 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t53, simple_map::spec_get(select property_map::PropertyMap.map($t49), $t51)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t53 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t49->$map, $t51)); + + // $t54 := property_map::read_bool($t49, $t51) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:596:36+91 + assume {:print "$at(186,20559,20650)"} true; + call $t54 := $1_property_map_read_bool($t49, $t51); + if ($abort_flag) { + assume {:print "$at(186,20559,20650)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // if ($t54) goto L13 else goto L32 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + assume {:print "$at(186,20660,20743)"} true; + if ($t54) { goto L13; } else { goto L32; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + assume {:print "$at(186,20660,20743)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 +L12: + + // drop($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + assume {:print "$at(186,20660,20743)"} true; + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + + // $t55 := 31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:64+26 + $t55 := 31; + assume $IsValid'u64'($t55); + + // $t56 := error::permission_denied($t55) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:39+52 + call $t56 := $1_error_permission_denied($t55); + if ($abort_flag) { + assume {:print "$at(186,20690,20742)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_abort($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + assume {:print "$at(186,20660,20743)"} true; + assume {:print "$track_abort(113,5):", $t56} $t56 == $t56; + + // $t23 := move($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + $t23 := $t56; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:597:9+83 + goto L30; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:104+5 + assume {:print "$at(186,20877,20882)"} true; +L14: + + // assume Identical($t57, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t57 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // $t58 := token::withdraw_with_event_internal($t1, $t28, $t5) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:75+53 + assume {:print "$at(186,20848,20901)"} true; + call $t58 := $1_token_withdraw_with_event_internal($t1, $t28, $t5); + if ($abort_flag) { + assume {:print "$at(186,20848,20901)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // ($t59, $t60, $t61) := unpack token::Token($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:13+59 + $t59 := $t58->$id; + $t60 := $t58->$amount; + $t61 := $t58->$token_properties; + + // drop($t61) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:69+1 + + // trace_local[burned_amount]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:36+13 + assume {:print "$track_local(113,5,10):", $t60} $t60 == $t60; + + // drop($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:600:25+1 + + // $t62 := borrow_global($t1) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:601:27+17 + assume {:print "$at(186,20929,20946)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t62 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(186,20929,20946)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[token_store]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:601:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t62); + assume {:print "$track_local(113,5,16):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t63 := features::module_event_migration_enabled() on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:602:13+47 + assume {:print "$at(186,20979,21026)"} true; + call $t63 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,20979,21026)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // if ($t63) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:602:9+140 + if ($t63) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:603:41+8 + assume {:print "$at(186,21070,21078)"} true; +L16: + + // $t64 := pack token::BurnToken($t28, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:603:25+49 + assume {:print "$at(186,21054,21103)"} true; + $t64 := $1_token_BurnToken($t28, $t60); + + // opaque begin: event::emit($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:603:13+62 + + // opaque end: event::emit($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:603:13+62 + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:606:18+11 + assume {:print "$at(186,21177,21188)"} true; +L15: + + // $t65 := borrow_field.burn_events($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:606:13+28 + assume {:print "$at(186,21172,21200)"} true; + $t65 := $ChildMutation($t62, 4, $Dereference($t62)->$burn_events); + + // $t66 := pack token::BurnTokenEvent($t28, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:607:13+54 + assume {:print "$at(186,21214,21268)"} true; + $t66 := $1_token_BurnTokenEvent($t28, $t60); + + // opaque begin: event::emit_event($t65, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:605:9+153 + assume {:print "$at(186,21125,21278)"} true; + + // opaque end: event::emit_event($t65, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:605:9+153 + + // write_back[Reference($t62).burn_events (event::EventHandle)]($t65) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:605:9+153 + $t62 := $UpdateMutation($t62, $Update'$1_token_TokenStore'_burn_events($Dereference($t62), $Dereference($t65))); + + // write_back[token::TokenStore@]($t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:605:9+153 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t62), + $Dereference($t62)); + + // $t67 := get_field.maximum($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:13+18 + assume {:print "$at(186,21293,21311)"} true; + $t67 := $Dereference($t42)->$maximum; + + // $t68 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:34+1 + $t68 := 0; + assume $IsValid'u64'($t68); + + // $t69 := >($t67, $t68) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:32+1 + call $t69 := $Gt($t67, $t68); + + // if ($t69) goto L18 else goto L33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:9+985 + if ($t69) { goto L18; } else { goto L33; } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:33+10 + assume {:print "$at(186,21351,21361)"} true; +L18: + + // $t70 := get_field.supply($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:33+17 + assume {:print "$at(186,21351,21368)"} true; + $t70 := $Dereference($t42)->$supply; + + // $t71 := -($t70, $t60) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:51+1 + call $t71 := $Sub($t70, $t60); + if ($abort_flag) { + assume {:print "$at(186,21369,21370)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // $t72 := borrow_field.supply($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:13+17 + $t72 := $ChildMutation($t42, 2, $Dereference($t42)->$supply); + + // write_ref($t72, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:13+53 + $t72 := $UpdateMutation($t72, $t71); + + // write_back[Reference($t42).supply (u64)]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:611:13+53 + $t42 := $UpdateMutation($t42, $Update'$1_token_TokenData'_supply($Dereference($t42), $Dereference($t72))); + + // $t73 := get_field.supply($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:17+17 + assume {:print "$at(186,21462,21479)"} true; + $t73 := $Dereference($t42)->$supply; + + // write_back[Reference($t40)[]]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:17+17 + $t40 := $UpdateMutation($t40, UpdateTable($Dereference($t40), ReadVec($t42->p, LenVec($t40->p)), $Dereference($t42))); + + // write_back[Reference($t34).token_data (table::Table)]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:17+17 + $t34 := $UpdateMutation($t34, $Update'$1_token_Collections'_token_data($Dereference($t34), $Dereference($t40))); + + // $t74 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:38+1 + $t74 := 0; + assume $IsValid'u64'($t74); + + // $t75 := ==($t73, $t74) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:35+2 + $t75 := $IsEqual'u64'($t73, $t74); + + // if ($t75) goto L20 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:13+805 + if ($t75) { goto L20; } else { goto L19; } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:55+11 + assume {:print "$at(186,21542,21553)"} true; +L20: + + // $t76 := borrow_field.token_data($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:50+27 + assume {:print "$at(186,21537,21564)"} true; + $t76 := $ChildMutation($t34, 1, $Dereference($t34)->$token_data); + + // $t77 := get_field.token_data_id($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:79+22 + $t77 := $t28->$token_data_id; + + // $t78 := table::remove($t76, $t77) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:36+66 + call $t78,$t76 := $1_table_remove'$1_token_TokenDataId_$1_token_TokenData'($t76, $t77); + if ($abort_flag) { + assume {:print "$at(186,21523,21589)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // write_back[Reference($t34).token_data (table::Table)]($t76) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:36+66 + $t34 := $UpdateMutation($t34, $Update'$1_token_Collections'_token_data($Dereference($t34), $Dereference($t76))); + + // token::destroy_token_data($t78) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:615:17+86 + call $1_token_destroy_token_data($t78); + if ($abort_flag) { + assume {:print "$at(186,21504,21590)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // $t79 := borrow_field.collection_data($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:619:21+32 + assume {:print "$at(186,21718,21750)"} true; + $t79 := $ChildMutation($t34, 0, $Dereference($t34)->$collection_data); + + // $t80 := get_field.token_data_id($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:620:21+22 + assume {:print "$at(186,21772,21794)"} true; + $t80 := $t28->$token_data_id; + + // $t81 := get_field.collection($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:620:21+33 + $t81 := $t80->$collection; + + // $t82 := table::borrow_mut($t79, $t81) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:618:39+144 + assume {:print "$at(186,21679,21823)"} true; + call $t82,$t79 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t79, $t81); + if ($abort_flag) { + assume {:print "$at(186,21679,21823)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // trace_local[collection_data]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:618:21+15 + $temp_0'$1_token_CollectionData' := $Dereference($t82); + assume {:print "$track_local(113,5,11):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t83 := get_field.maximum($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:21+23 + assume {:print "$at(186,21845,21868)"} true; + $t83 := $Dereference($t82)->$maximum; + + // $t84 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:47+1 + $t84 := 0; + assume $IsValid'u64'($t84); + + // $t85 := >($t83, $t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:45+1 + call $t85 := $Gt($t83, $t84); + + // if ($t85) goto L22 else goto L34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:17+407 + if ($t85) { goto L22; } else { goto L34; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:46+15 + assume {:print "$at(186,21921,21936)"} true; +L22: + + // $t86 := get_field.supply($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:46+22 + assume {:print "$at(186,21921,21943)"} true; + $t86 := $Dereference($t82)->$supply; + + // $t87 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:71+1 + $t87 := 1; + assume $IsValid'u64'($t87); + + // $t88 := -($t86, $t87) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:69+1 + call $t88 := $Sub($t86, $t87); + if ($abort_flag) { + assume {:print "$at(186,21944,21945)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // $t89 := borrow_field.supply($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:21+22 + $t89 := $ChildMutation($t82, 3, $Dereference($t82)->$supply); + + // write_ref($t89, $t88) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:21+51 + $t89 := $UpdateMutation($t89, $t88); + + // write_back[Reference($t82).supply (u64)]($t89) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:623:21+51 + $t82 := $UpdateMutation($t82, $Update'$1_token_CollectionData'_supply($Dereference($t82), $Dereference($t89))); + + // $t90 := get_field.supply($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:25+22 + assume {:print "$at(186,22057,22079)"} true; + $t90 := $Dereference($t82)->$supply; + + // $t91 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:51+1 + $t91 := 0; + assume $IsValid'u64'($t91); + + // $t92 := ==($t90, $t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:48+2 + $t92 := $IsEqual'u64'($t90, $t91); + + // if ($t92) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + if ($t92) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:68+11 + assume {:print "$at(186,22155,22166)"} true; +L24: + + // $t93 := borrow_field.collection_data($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:63+32 + assume {:print "$at(186,22150,22182)"} true; + $t93 := $ChildMutation($t34, 0, $Dereference($t34)->$collection_data); + + // $t94 := get_field.name($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:97+20 + $t94 := $Dereference($t82)->$name; + + // write_back[Reference($t79)[]]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:97+20 + $t79 := $UpdateMutation($t79, UpdateTable($Dereference($t79), ReadVec($t82->p, LenVec($t79->p)), $Dereference($t82))); + + // write_back[Reference($t34).collection_data (table::Table)]($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:97+20 + $t34 := $UpdateMutation($t34, $Update'$1_token_Collections'_collection_data($Dereference($t34), $Dereference($t79))); + + // $t95 := table::remove($t93, $t94) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:49+69 + call $t95,$t93 := $1_table_remove'$1_string_String_$1_token_CollectionData'($t93, $t94); + if ($abort_flag) { + assume {:print "$at(186,22136,22205)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // write_back[Reference($t34).collection_data (table::Table)]($t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:49+69 + $t34 := $UpdateMutation($t34, $Update'$1_token_Collections'_collection_data($Dereference($t34), $Dereference($t93))); + + // write_back[token::Collections@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:49+69 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t34), + $Dereference($t34)); + + // token::destroy_collection_data($t95) on_abort goto L30 with $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:25+94 + call $1_token_destroy_collection_data($t95); + if ($abort_flag) { + assume {:print "$at(186,22112,22206)"} true; + $t23 := $abort_code; + assume {:print "$track_abort(113,5):", $t23} $t23 == $t23; + goto L30; + } + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:626:119+1 + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + assume {:print "$at(186,22053,22229)"} true; +L23: + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + assume {:print "$at(186,22053,22229)"} true; + + // write_back[Reference($t79)[]]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + $t79 := $UpdateMutation($t79, UpdateTable($Dereference($t79), ReadVec($t82->p, LenVec($t79->p)), $Dereference($t82))); + + // write_back[Reference($t34).collection_data (table::Table)]($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + $t34 := $UpdateMutation($t34, $Update'$1_token_Collections'_collection_data($Dereference($t34), $Dereference($t79))); + + // write_back[token::Collections@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t34), + $Dereference($t34)); + + // drop($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:625:21+176 + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:627:22+1 + assume {:print "$at(186,22229,22230)"} true; +L25: + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:627:22+1 + assume {:print "$at(186,22229,22230)"} true; + goto L26; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:17+407 + assume {:print "$at(186,21841,22248)"} true; +L21: + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:17+407 + assume {:print "$at(186,21841,22248)"} true; + + // write_back[token::Collections@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:17+407 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t34), + $Dereference($t34)); + + // drop($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:622:17+407 + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:628:18+1 + assume {:print "$at(186,22248,22249)"} true; +L26: + + // goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:628:18+1 + assume {:print "$at(186,22248,22249)"} true; + goto L27; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:13+805 + assume {:print "$at(186,21458,22263)"} true; +L19: + + // write_back[token::Collections@]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:13+805 + assume {:print "$at(186,21458,22263)"} true; + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t34), + $Dereference($t34)); + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:614:13+805 + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:629:14+1 + assume {:print "$at(186,22263,22264)"} true; +L27: + + // goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:629:14+1 + assume {:print "$at(186,22263,22264)"} true; + goto L28; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:9+985 + assume {:print "$at(186,21289,22274)"} true; +L17: + + // drop($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:9+985 + assume {:print "$at(186,21289,22274)"} true; + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:610:9+985 + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:630:10+1 + assume {:print "$at(186,22274,22275)"} true; +L28: + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:631:5+1 + assume {:print "$at(186,22280,22281)"} true; +L29: + + // assert Not(Le($t5, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:190:9+22 + assume {:print "$at(187,6779,6801)"} true; + assert {:msg "assert_failed(187,6779,6801): function does not abort under this condition"} + !($t5 <= 0); + + // assert Not(Not(exists[@868]($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:191:9+45 + assume {:print "$at(187,6810,6855)"} true; + assert {:msg "assert_failed(187,6810,6855): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#868, $t19); + + // assert Not(Not(table::spec_contains[](select token::Collections.token_data($t20), select token::TokenId.token_data_id($t18)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:192:9+80 + assume {:print "$at(187,6864,6944)"} true; + assert {:msg "assert_failed(187,6864,6944): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t20->$token_data, $t18->$token_data_id); + + // assert Not(Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map(select token::TokenData.default_properties($t21)), string::spec_utf8[]([84, 79, 75, 69, 78, 95, 66, 85, 82, 78, 65, 66, 76, 69, 95, 66, 89, 95, 67, 82, 69, 65, 84, 79, 82])))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:193:9+121 + assume {:print "$at(187,6953,7074)"} true; + assert {:msg "assert_failed(187,6953,7074): function does not abort under this condition"} + !!$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t21->$default_properties->$map, $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 66, 85)), MakeVec4(82, 78, 65, 66)), MakeVec4(76, 69, 95, 66)), MakeVec4(89, 95, 67, 82)), MakeVec4(69, 65, 84, 79)), MakeVec1(82)))); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:193:9+121 + return; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:631:5+1 + assume {:print "$at(186,22280,22281)"} true; +L30: + + // abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:631:5+1 + assume {:print "$at(186,22280,22281)"} true; + $abort_code := $t23; + $abort_flag := true; + return; + + // label L31 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L31: + + // drop($t40) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + + // label L32 at :1:1+10 +L32: + + // drop($t40) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L12 at :1:1+10 + goto L12; + + // label L33 at :1:1+10 +L33: + + // drop($t40) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L17 at :1:1+10 + goto L17; + + // label L34 at :1:1+10 +L34: + + // drop($t79) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun token::check_tokendata_exists [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+473 +procedure {:timeLimit 80} $1_token_check_tokendata_exists$verify(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: bool) +{ + // declare local variables + var $t3: Table int ($1_token_TokenData); + var $t4: $1_token_TokenDataId; + var $t5: bool; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_token_Collections; + var $t10: Table int ($1_token_TokenData); + var $t11: $1_token_TokenDataId; + var $t12: bool; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $1_token_Collections_$memory#869: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume {:print "$at(186,46916,46917)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // @869 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + $1_token_Collections_$memory#869 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume {:print "$track_local(113,7,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume {:print "$track_local(113,7,1):", $t1} $t1 == $t1; + + // trace_local[token_name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1179:5+1 + assume {:print "$track_local(113,7,2):", $t2} $t2 == $t2; + + // $t5 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1181:13+6 + assume {:print "$at(186,47071,47077)"} true; + $t5 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t5) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 + assume {:print "$at(186,47050,47168)"} true; + if ($t5) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 + assume {:print "$at(186,47050,47168)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1182:30+26 + assume {:print "$at(186,47130,47156)"} true; +L0: + + // $t6 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1182:30+26 + assume {:print "$at(186,47130,47156)"} true; + $t6 := 1; + assume $IsValid'u64'($t6); + + // $t7 := error::not_found($t6) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1182:13+44 + call $t7 := $1_error_not_found($t6); + if ($abort_flag) { + assume {:print "$at(186,47113,47157)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 + assume {:print "$at(186,47050,47168)"} true; + assume {:print "$track_abort(113,7):", $t7} $t7 == $t7; + + // $t8 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 + $t8 := $t7; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1180:9+118 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1185:54+7 + assume {:print "$at(186,47224,47231)"} true; +L2: + + // $t9 := get_global($t0) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1185:27+13 + assume {:print "$at(186,47197,47210)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,47197,47210)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,7):", $t8} $t8 == $t8; + goto L4; + } + + // $t10 := get_field.token_data($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1185:26+47 + $t10 := $t9->$token_data; + + // trace_local[token_data]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1185:13+10 + assume {:print "$track_local(113,7,3):", $t10} $t10 == $t10; + + // $t11 := token::create_token_data_id($t0, $t1, $t2) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1186:29+58 + assume {:print "$at(186,47273,47331)"} true; + call $t11 := $1_token_create_token_data_id($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,47273,47331)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_local[token_data_id]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1186:13+13 + assume {:print "$track_local(113,7,4):", $t11} $t11 == $t11; + + // $t12 := table::contains($t10, $t11) on_abort goto L4 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1187:9+42 + assume {:print "$at(186,47341,47383)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t11); + if ($abort_flag) { + assume {:print "$at(186,47341,47383)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,7):", $t8} $t8 == $t8; + goto L4; + } + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1187:9+42 + assume {:print "$track_return(113,7,0):", $t12} $t12 == $t12; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1188:5+1 + assume {:print "$at(186,47388,47389)"} true; +L3: + + // assert Not(Not(exists[@869]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:566:9+40 + assume {:print "$at(187,24145,24185)"} true; + assert {:msg "assert_failed(187,24145,24185): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#869, $t0); + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + $ret0 := $t12; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1188:5+1 + assume {:print "$at(186,47388,47389)"} true; +L4: + + // assert Or(Or(Not(exists[@869]($t0)), Gt(Len(select string::String.bytes($t1)), 128)), Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:565:5+308 + assume {:print "$at(187,24038,24346)"} true; + assert {:msg "assert_failed(187,24038,24346): abort not covered by any of the `aborts_if` clauses"} + ((!$ResourceExists($1_token_Collections_$memory#869, $t0) || (LenVec($t1->$bytes) > 128)) || (LenVec($t2->$bytes) > 128)); + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:565:5+308 + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun token::create_collection_mutability_config [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1367:5+414 +procedure {:inline 1} $1_token_create_collection_mutability_config(_$t0: Vec (bool)) returns ($ret0: $1_token_CollectionMutabilityConfig) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: $1_token_CollectionMutabilityConfig; + var $t0: Vec (bool); + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[mutate_setting]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1367:5+1 + assume {:print "$at(186,55220,55221)"} true; + assume {:print "$track_local(113,9,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1369:58+34 + assume {:print "$at(186,55422,55456)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := vector::borrow($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1369:27+66 + call $t2 := $1_vector_borrow'bool'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,55391,55457)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1370:50+26 + assume {:print "$at(186,55508,55534)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := vector::borrow($t0, $t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1370:19+58 + call $t5 := $1_vector_borrow'bool'($t0, $t4); + if ($abort_flag) { + assume {:print "$at(186,55477,55535)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1371:54+26 + assume {:print "$at(186,55590,55616)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow($t0, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1371:23+58 + call $t7 := $1_vector_borrow'bool'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(186,55559,55617)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := pack token::CollectionMutabilityConfig($t2, $t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1368:9+292 + assume {:print "$at(186,55336,55628)"} true; + $t8 := $1_token_CollectionMutabilityConfig($t2, $t5, $t7); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1368:9+292 + assume {:print "$track_return(113,9,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 + assume {:print "$at(186,55633,55634)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 + assume {:print "$at(186,55633,55634)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 + assume {:print "$at(186,55633,55634)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun token::create_collection_mutability_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1367:5+414 +procedure {:timeLimit 80} $1_token_create_collection_mutability_config$verify(_$t0: Vec (bool)) returns ($ret0: $1_token_CollectionMutabilityConfig) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: $1_token_CollectionMutabilityConfig; + var $t0: Vec (bool); + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1367:5+1 + assume {:print "$at(186,55220,55221)"} true; + assume $IsValid'vec'bool''($t0); + + // trace_local[mutate_setting]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1367:5+1 + assume {:print "$track_local(113,9,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1369:58+34 + assume {:print "$at(186,55422,55456)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := vector::borrow($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1369:27+66 + call $t2 := $1_vector_borrow'bool'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,55391,55457)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1370:50+26 + assume {:print "$at(186,55508,55534)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := vector::borrow($t0, $t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1370:19+58 + call $t5 := $1_vector_borrow'bool'($t0, $t4); + if ($abort_flag) { + assume {:print "$at(186,55477,55535)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1371:54+26 + assume {:print "$at(186,55590,55616)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow($t0, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1371:23+58 + call $t7 := $1_vector_borrow'bool'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(186,55559,55617)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,9):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := pack token::CollectionMutabilityConfig($t2, $t5, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1368:9+292 + assume {:print "$at(186,55336,55628)"} true; + $t8 := $1_token_CollectionMutabilityConfig($t2, $t5, $t7); + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1368:9+292 + assume {:print "$track_return(113,9,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 + assume {:print "$at(186,55633,55634)"} true; +L1: + + // assert Not(Lt(Len($t0), 3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:679:9+34 + assume {:print "$at(187,29051,29085)"} true; + assert {:msg "assert_failed(187,29051,29085): function does not abort under this condition"} + !(LenVec($t0) < 3); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:680:9+101 + assume {:print "$at(187,29094,29195)"} true; + assert {:msg "assert_failed(187,29094,29195): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 0)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:681:9+93 + assume {:print "$at(187,29204,29297)"} true; + assert {:msg "assert_failed(187,29204,29297): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 1)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + assume {:print "$at(187,29306,29399)"} true; + assert {:msg "assert_failed(187,29306,29399): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 2)); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1373:5+1 + assume {:print "$at(186,55633,55634)"} true; +L2: + + // assert Or(Or(Or(Lt(Len($t0), 3), Not(vector::spec_contains[]($t0, Index($t0, 0)))), Not(vector::spec_contains[]($t0, Index($t0, 1)))), Not(vector::spec_contains[]($t0, Index($t0, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:673:5+106 + assume {:print "$at(187,28838,28944)"} true; + assert {:msg "assert_failed(187,28838,28944): abort not covered by any of the `aborts_if` clauses"} + ((((LenVec($t0) < 3) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 0))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 1))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 2))); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:673:5+106 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun token::create_collection_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+402 +procedure {:timeLimit 80} $1_token_create_collection_script$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: Vec (bool)) returns () +{ + // declare local variables + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_token_Collections; + var $t9: bool; + var $t10: Table int ($1_token_CollectionData); + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: $1_token_Collections; + var $t15: bool; + var $t16: Table int ($1_token_CollectionData); + var $t17: int; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: Vec (bool); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'bool'': Vec (bool); + var $1_account_Account_$memory#870: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$at(186,14149,14150)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume $IsValid'vec'bool''($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:544:9+39 + assume {:print "$at(187,22971,23010)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:545:9+45 + assume {:print "$at(187,23019,23064)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // assume Identical($t8, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:546:9+43 + assume {:print "$at(187,23073,23116)"} true; + assume ($t8 == $ResourceValue($1_token_Collections_$memory, $t6)); + + // assume Identical($t9, Not(exists($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:547:9+35 + assume {:print "$at(187,23125,23160)"} true; + assume ($t9 == !$ResourceExists($1_token_Collections_$memory, $t6)); + + // assume Identical($t10, select token::Collections.collection_data(global($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:548:9+64 + assume {:print "$at(187,23169,23233)"} true; + assume ($t10 == $ResourceValue($1_token_Collections_$memory, $t6)->$collection_data); + + // @870 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$at(186,14149,14150)"} true; + $1_account_Account_$memory#870 := $1_account_Account_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,0):", $t0} $t0 == $t0; + + // trace_local[name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,2):", $t2} $t2 == $t2; + + // trace_local[uri]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,3):", $t3} $t3 == $t3; + + // trace_local[maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,4):", $t4} $t4 == $t4; + + // trace_local[mutate_setting]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:409:5+1 + assume {:print "$track_local(113,10,5):", $t5} $t5 == $t5; + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:530:9+47 + assume {:print "$at(187,22584,22631)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:544:9+39 + assume {:print "$at(187,22971,23010)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:545:9+45 + assume {:print "$at(187,23019,23064)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // assume Identical($t14, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:546:9+43 + assume {:print "$at(187,23073,23116)"} true; + assume ($t14 == $ResourceValue($1_token_Collections_$memory, $t12)); + + // assume Identical($t15, Not(exists($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:547:9+35 + assume {:print "$at(187,23125,23160)"} true; + assume ($t15 == !$ResourceExists($1_token_Collections_$memory, $t12)); + + // assume Identical($t16, select token::Collections.collection_data(global($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:548:9+64 + assume {:print "$at(187,23169,23233)"} true; + assume ($t16 == $ResourceValue($1_token_Collections_$memory, $t12)->$collection_data); + + // token::create_collection($t0, $t1, $t2, $t3, $t4, $t5) on_abort goto L2 with $t17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:417:9+157 + assume {:print "$at(186,14387,14544)"} true; + call $1_token_create_collection($t0, $t1, $t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,14387,14544)"} true; + $t17 := $abort_code; + assume {:print "$track_abort(113,10):", $t17} $t17 == $t17; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:425:5+1 + assume {:print "$at(186,14550,14551)"} true; +L1: + + // assert Not(And($t9, Not(exists[@870]($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:551:9+47 + assume {:print "$at(187,23384,23431)"} true; + assert {:msg "assert_failed(187,23384,23431): function does not abort under this condition"} + !($t9 && !$ResourceExists($1_account_Account_$memory#870, $t6)); + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:552:9+55 + assume {:print "$at(187,23440,23495)"} true; + assert {:msg "assert_failed(187,23440,23495): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 512)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:553:9+42 + assume {:print "$at(187,23504,23546)"} true; + assert {:msg "assert_failed(187,23504,23546): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 512); + + // assert Not(And($t9, Ge(Add(select account::Account.guid_creation_num($t7), 3), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:554:9+79 + assume {:print "$at(187,23555,23634)"} true; + assert {:msg "assert_failed(187,23555,23634): function does not abort under this condition"} + !($t9 && (($t7->$guid_creation_num + 3) >= 1125899906842624)); + + // assert Not(And($t9, Gt(Add(select account::Account.guid_creation_num($t7), 3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:555:9+55 + assume {:print "$at(187,23643,23698)"} true; + assert {:msg "assert_failed(187,23643,23698): function does not abort under this condition"} + !($t9 && (($t7->$guid_creation_num + 3) > 18446744073709551615)); + + // assert Not(Lt(Len($t5), 3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:679:9+34 + assume {:print "$at(187,29051,29085)"} true; + assert {:msg "assert_failed(187,29051,29085): function does not abort under this condition"} + !(LenVec($t5) < 3); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:680:9+101 + assume {:print "$at(187,29094,29195)"} true; + assert {:msg "assert_failed(187,29094,29195): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 0)); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:681:9+93 + assume {:print "$at(187,29204,29297)"} true; + assert {:msg "assert_failed(187,29204,29297): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 1)); + + // assert Not(Not(vector::spec_contains[]($t5, Index($t5, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + assume {:print "$at(187,29306,29399)"} true; + assert {:msg "assert_failed(187,29306,29399): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t5, ReadVec($t5, 2)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:682:9+93 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:425:5+1 + assume {:print "$at(186,14550,14551)"} true; +L2: + + // abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:425:5+1 + assume {:print "$at(186,14550,14551)"} true; + $abort_code := $t17; + $abort_flag := true; + return; + +} + +// fun token::create_royalty [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+516 +procedure {:inline 1} $1_token_create_royalty(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: $1_token_Royalty) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_token_Royalty; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[royalty_points_numerator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$at(186,38023,38024)"} true; + assume {:print "$track_local(113,11,0):", $t0} $t0 == $t0; + + // trace_local[royalty_points_denominator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$track_local(113,11,1):", $t1} $t1 == $t1; + + // trace_local[payee_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$track_local(113,11,2):", $t2} $t2 == $t2; + + // $t3 := <=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:42+2 + assume {:print "$at(186,38189,38191)"} true; + call $t3 := $Le($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + assume {:print "$at(186,38156,38284)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:97+38 +L0: + + // $t4 := 34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:97+38 + assume {:print "$at(186,38244,38282)"} true; + $t4 := 34; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:73+63 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(186,38220,38283)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + assume {:print "$at(186,38156,38284)"} true; + assume {:print "$track_abort(113,11):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + $t6 := $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:36+13 + assume {:print "$at(186,38321,38334)"} true; +L2: + + // $t7 := account::exists_at($t2) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:17+33 + assume {:print "$at(186,38302,38335)"} true; + call $t7 := $1_account_exists_at($t2); + if ($abort_flag) { + assume {:print "$at(186,38302,38335)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + assume {:print "$at(186,38294,38400)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:76+37 +L3: + + // $t8 := 35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:76+37 + assume {:print "$at(186,38361,38398)"} true; + $t8 := 35; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:52+62 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(186,38337,38399)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + assume {:print "$at(186,38294,38400)"} true; + assume {:print "$track_abort(113,11):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + $t6 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:948:13+24 + assume {:print "$at(186,38432,38456)"} true; +L5: + + // $t10 := pack token::Royalty($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:947:9+123 + assume {:print "$at(186,38410,38533)"} true; + $t10 := $1_token_Royalty($t0, $t1, $t2); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:947:9+123 + assume {:print "$track_return(113,11,0):", $t10} $t10 == $t10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 + assume {:print "$at(186,38538,38539)"} true; +L6: + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 + assume {:print "$at(186,38538,38539)"} true; + $ret0 := $t10; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 +L7: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 + assume {:print "$at(186,38538,38539)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::create_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+516 +procedure {:timeLimit 80} $1_token_create_royalty$verify(_$t0: int, _$t1: int, _$t2: int) returns ($ret0: $1_token_Royalty) +{ + // declare local variables + var $t3: bool; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: $1_token_Royalty; + var $t0: int; + var $t1: int; + var $t2: int; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_account_Account_$memory#871: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$at(186,38023,38024)"} true; + assume $IsValid'u64'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume $IsValid'u64'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume $IsValid'address'($t2); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // @871 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + $1_account_Account_$memory#871 := $1_account_Account_$memory; + + // trace_local[royalty_points_numerator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$track_local(113,11,0):", $t0} $t0 == $t0; + + // trace_local[royalty_points_denominator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$track_local(113,11,1):", $t1} $t1 == $t1; + + // trace_local[payee_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:944:5+1 + assume {:print "$track_local(113,11,2):", $t2} $t2 == $t2; + + // $t3 := <=($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:42+2 + assume {:print "$at(186,38189,38191)"} true; + call $t3 := $Le($t0, $t1); + + // if ($t3) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + if ($t3) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + assume {:print "$at(186,38156,38284)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:97+38 +L0: + + // $t4 := 34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:97+38 + assume {:print "$at(186,38244,38282)"} true; + $t4 := 34; + assume $IsValid'u64'($t4); + + // $t5 := error::invalid_argument($t4) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:73+63 + call $t5 := $1_error_invalid_argument($t4); + if ($abort_flag) { + assume {:print "$at(186,38220,38283)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + assume {:print "$at(186,38156,38284)"} true; + assume {:print "$track_abort(113,11):", $t5} $t5 == $t5; + + // $t6 := move($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + $t6 := $t5; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:945:9+128 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:36+13 + assume {:print "$at(186,38321,38334)"} true; +L2: + + // $t7 := account::exists_at($t2) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:17+33 + assume {:print "$at(186,38302,38335)"} true; + call $t7 := $1_account_exists_at($t2); + if ($abort_flag) { + assume {:print "$at(186,38302,38335)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // if ($t7) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + if ($t7) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + assume {:print "$at(186,38294,38400)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:76+37 +L3: + + // $t8 := 35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:76+37 + assume {:print "$at(186,38361,38398)"} true; + $t8 := 35; + assume $IsValid'u64'($t8); + + // $t9 := error::invalid_argument($t8) on_abort goto L7 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:52+62 + call $t9 := $1_error_invalid_argument($t8); + if ($abort_flag) { + assume {:print "$at(186,38337,38399)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,11):", $t6} $t6 == $t6; + goto L7; + } + + // trace_abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + assume {:print "$at(186,38294,38400)"} true; + assume {:print "$track_abort(113,11):", $t9} $t9 == $t9; + + // $t6 := move($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + $t6 := $t9; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:946:9+106 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:948:13+24 + assume {:print "$at(186,38432,38456)"} true; +L5: + + // $t10 := pack token::Royalty($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:947:9+123 + assume {:print "$at(186,38410,38533)"} true; + $t10 := $1_token_Royalty($t0, $t1, $t2); + + // trace_return[0]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:947:9+123 + assume {:print "$track_return(113,11,0):", $t10} $t10 == $t10; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 + assume {:print "$at(186,38538,38539)"} true; +L6: + + // assert Not(Gt($t0, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:403:9+64 + assume {:print "$at(187,17775,17839)"} true; + assert {:msg "assert_failed(187,17775,17839): function does not abort under this condition"} + !($t0 > $t1); + + // assert Not(Not(exists[@871]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:404:9+51 + assume {:print "$at(187,17848,17899)"} true; + assert {:msg "assert_failed(187,17848,17899): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#871, $t2); + + // return $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:404:9+51 + $ret0 := $t10; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:952:5+1 + assume {:print "$at(186,38538,38539)"} true; +L7: + + // assert Or(Gt($t0, $t1), Not(exists[@871]($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:394:5+163 + assume {:print "$at(187,17368,17531)"} true; + assert {:msg "assert_failed(187,17368,17531): abort not covered by any of the `aborts_if` clauses"} + (($t0 > $t1) || !$ResourceExists($1_account_Account_$memory#871, $t2)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:394:5+163 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::create_token_data_id [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+421 +procedure {:inline 1} $1_token_create_token_data_id(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: $1_token_TokenDataId) +{ + // 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: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_token_TokenDataId; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$at(186,59398,59399)"} true; + assume {:print "$track_local(113,12,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$track_local(113,12,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$track_local(113,12,2):", $t2} $t2 == $t2; + + // $t3 := string::length($t1) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:17+27 + assume {:print "$at(186,59544,59571)"} true; + call $t3 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(186,59544,59571)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // $t5 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:48+26 + $t5 := 128; + assume $IsValid'u64'($t5); + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:45+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + assume {:print "$at(186,59536,59654)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:100+25 +L0: + + // $t7 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:100+25 + assume {:print "$at(186,59627,59652)"} true; + $t7 := 25; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:76+50 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(186,59603,59653)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + assume {:print "$at(186,59536,59654)"} true; + assume {:print "$track_abort(113,12):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + $t4 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:32+5 + assume {:print "$at(186,59687,59692)"} true; +L2: + + // $t9 := string::length($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:17+21 + assume {:print "$at(186,59672,59693)"} true; + call $t9 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(186,59672,59693)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // $t10 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:42+19 + $t10 := 128; + assume $IsValid'u64'($t10); + + // $t11 := <=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:39+2 + call $t11 := $Le($t9, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + assume {:print "$at(186,59664,59762)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:87+18 +L3: + + // $t12 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:87+18 + assume {:print "$at(186,59742,59760)"} true; + $t12 := 26; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:63+43 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(186,59718,59761)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + assume {:print "$at(186,59664,59762)"} true; + assume {:print "$track_abort(113,12):", $t13} $t13 == $t13; + + // $t4 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + $t4 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:23+7 + assume {:print "$at(186,59786,59793)"} true; +L5: + + // $t14 := pack token::TokenDataId($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:9+41 + assume {:print "$at(186,59772,59813)"} true; + $t14 := $1_token_TokenDataId($t0, $t1, $t2); + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:9+41 + assume {:print "$track_return(113,12,0):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 + assume {:print "$at(186,59818,59819)"} true; +L6: + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 + assume {:print "$at(186,59818,59819)"} true; + $ret0 := $t14; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 +L7: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 + assume {:print "$at(186,59818,59819)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::create_token_data_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+421 +procedure {:timeLimit 80} $1_token_create_token_data_id$verify(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String) returns ($ret0: $1_token_TokenDataId) +{ + // 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: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: $1_token_TokenDataId; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$at(186,59398,59399)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume $IsValid'$1_string_String'($t2); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$track_local(113,12,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$track_local(113,12,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1467:5+1 + assume {:print "$track_local(113,12,2):", $t2} $t2 == $t2; + + // $t3 := string::length($t1) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:17+27 + assume {:print "$at(186,59544,59571)"} true; + call $t3 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(186,59544,59571)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // $t5 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:48+26 + $t5 := 128; + assume $IsValid'u64'($t5); + + // $t6 := <=($t3, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:45+2 + call $t6 := $Le($t3, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + assume {:print "$at(186,59536,59654)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:100+25 +L0: + + // $t7 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:100+25 + assume {:print "$at(186,59627,59652)"} true; + $t7 := 25; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_argument($t7) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:76+50 + call $t8 := $1_error_invalid_argument($t7); + if ($abort_flag) { + assume {:print "$at(186,59603,59653)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + assume {:print "$at(186,59536,59654)"} true; + assume {:print "$track_abort(113,12):", $t8} $t8 == $t8; + + // $t4 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + $t4 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1472:9+118 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:32+5 + assume {:print "$at(186,59687,59692)"} true; +L2: + + // $t9 := string::length($t2) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:17+21 + assume {:print "$at(186,59672,59693)"} true; + call $t9 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(186,59672,59693)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // $t10 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:42+19 + $t10 := 128; + assume $IsValid'u64'($t10); + + // $t11 := <=($t9, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:39+2 + call $t11 := $Le($t9, $t10); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + assume {:print "$at(186,59664,59762)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:87+18 +L3: + + // $t12 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:87+18 + assume {:print "$at(186,59742,59760)"} true; + $t12 := 26; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L7 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:63+43 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(186,59718,59761)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,12):", $t4} $t4 == $t4; + goto L7; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + assume {:print "$at(186,59664,59762)"} true; + assume {:print "$track_abort(113,12):", $t13} $t13 == $t13; + + // $t4 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + $t4 := $t13; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1473:9+98 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:23+7 + assume {:print "$at(186,59786,59793)"} true; +L5: + + // $t14 := pack token::TokenDataId($t0, $t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:9+41 + assume {:print "$at(186,59772,59813)"} true; + $t14 := $1_token_TokenDataId($t0, $t1, $t2); + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1474:9+41 + assume {:print "$track_return(113,12,0):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 + assume {:print "$at(186,59818,59819)"} true; +L6: + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + $ret0 := $t14; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1475:5+1 + assume {:print "$at(186,59818,59819)"} true; +L7: + + // assert Or(Gt(Len(select string::String.bytes($t1)), 128), Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:762:5+172 + assume {:print "$at(187,32793,32965)"} true; + assert {:msg "assert_failed(187,32793,32965): abort not covered by any of the `aborts_if` clauses"} + ((LenVec($t1->$bytes) > 128) || (LenVec($t2->$bytes) > 128)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:762:5+172 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::create_token_id [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+179 +procedure {:inline 1} $1_token_create_token_id(_$t0: $1_token_TokenDataId, _$t1: int) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t2: $1_token_TokenId; + var $t0: $1_token_TokenDataId; + var $t1: int; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume {:print "$at(186,59213,59214)"} true; + assume {:print "$track_local(113,13,0):", $t0} $t0 == $t0; + + // trace_local[property_version]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume {:print "$track_local(113,13,1):", $t1} $t1 == $t1; + + // $t2 := pack token::TokenId($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1461:9+76 + assume {:print "$at(186,59310,59386)"} true; + $t2 := $1_token_TokenId($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1461:9+76 + assume {:print "$track_return(113,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1465:5+1 + assume {:print "$at(186,59391,59392)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1465:5+1 + assume {:print "$at(186,59391,59392)"} true; + $ret0 := $t2; + return; + +} + +// fun token::create_token_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+179 +procedure {:timeLimit 80} $1_token_create_token_id$verify(_$t0: $1_token_TokenDataId, _$t1: int) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t2: $1_token_TokenId; + var $t0: $1_token_TokenDataId; + var $t1: int; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume {:print "$at(186,59213,59214)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume $IsValid'u64'($t1); + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume {:print "$track_local(113,13,0):", $t0} $t0 == $t0; + + // trace_local[property_version]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1460:5+1 + assume {:print "$track_local(113,13,1):", $t1} $t1 == $t1; + + // $t2 := pack token::TokenId($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1461:9+76 + assume {:print "$at(186,59310,59386)"} true; + $t2 := $1_token_TokenId($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1461:9+76 + assume {:print "$track_return(113,13,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1465:5+1 + assume {:print "$at(186,59391,59392)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1465:5+1 + assume {:print "$at(186,59391,59392)"} true; + assert {:msg "assert_failed(186,59391,59392): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1465:5+1 + $ret0 := $t2; + return; + +} + +// fun token::create_token_id_raw [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+295 +procedure {:inline 1} $1_token_create_token_id_raw(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t4: $1_token_TokenDataId; + var $t5: int; + var $t6: $1_token_TokenId; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$at(186,59825,59826)"} true; + assume {:print "$track_local(113,14,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,2):", $t2} $t2 == $t2; + + // trace_local[property_version]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,3):", $t3} $t3 == $t3; + + // $t4 := token::create_token_data_id($t0, $t1, $t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1484:28+47 + assume {:print "$at(186,60026,60073)"} true; + call $t4 := $1_token_create_token_data_id($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,60026,60073)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,14):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack token::TokenId($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1483:9+125 + assume {:print "$at(186,59989,60114)"} true; + $t6 := $1_token_TokenId($t4, $t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1483:9+125 + assume {:print "$track_return(113,14,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 + assume {:print "$at(186,60119,60120)"} true; +L1: + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 + assume {:print "$at(186,60119,60120)"} true; + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 +L2: + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 + assume {:print "$at(186,60119,60120)"} true; + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun token::create_token_id_raw [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+295 +procedure {:timeLimit 80} $1_token_create_token_id_raw$verify(_$t0: int, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: int) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t4: $1_token_TokenDataId; + var $t5: int; + var $t6: $1_token_TokenId; + var $t0: int; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$at(186,59825,59826)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume $IsValid'u64'($t3); + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,2):", $t2} $t2 == $t2; + + // trace_local[property_version]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1477:5+1 + assume {:print "$track_local(113,14,3):", $t3} $t3 == $t3; + + // $t4 := token::create_token_data_id($t0, $t1, $t2) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1484:28+47 + assume {:print "$at(186,60026,60073)"} true; + call $t4 := $1_token_create_token_data_id($t0, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,60026,60073)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,14):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack token::TokenId($t4, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1483:9+125 + assume {:print "$at(186,59989,60114)"} true; + $t6 := $1_token_TokenId($t4, $t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1483:9+125 + assume {:print "$track_return(113,14,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 + assume {:print "$at(186,60119,60120)"} true; +L1: + + // assert Not(Gt(Len(select string::String.bytes($t1)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t1->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1487:5+1 + assume {:print "$at(186,60119,60120)"} true; +L2: + + // assert Or(Gt(Len(select string::String.bytes($t1)), 128), Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:780:5+198 + assume {:print "$at(187,33366,33564)"} true; + assert {:msg "assert_failed(187,33366,33564): abort not covered by any of the `aborts_if` clauses"} + ((LenVec($t1->$bytes) > 128) || (LenVec($t2->$bytes) > 128)); + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:780:5+198 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun token::create_token_mutability_config [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1357:5+550 +procedure {:inline 1} $1_token_create_token_mutability_config(_$t0: Vec (bool)) returns ($ret0: $1_token_TokenMutabilityConfig) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: $1_token_TokenMutabilityConfig; + var $t0: Vec (bool); + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[mutate_setting]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1357:5+1 + assume {:print "$at(186,54664,54665)"} true; + assume {:print "$track_local(113,15,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1359:54+21 + assume {:print "$at(186,54847,54868)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := vector::borrow($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1359:23+53 + call $t2 := $1_vector_borrow'bool'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,54816,54869)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1360:50+21 + assume {:print "$at(186,54920,54941)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := vector::borrow($t0, $t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1360:19+53 + call $t5 := $1_vector_borrow'bool'($t0, $t4); + if ($abort_flag) { + assume {:print "$at(186,54889,54942)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1361:54+25 + assume {:print "$at(186,54997,55022)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow($t0, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1361:23+57 + call $t7 := $1_vector_borrow'bool'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(186,54966,55023)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1362:58+29 + assume {:print "$at(186,55082,55111)"} true; + $t8 := 3; + assume $IsValid'u64'($t8); + + // $t9 := vector::borrow($t0, $t8) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1362:27+61 + call $t9 := $1_vector_borrow'bool'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(186,55051,55112)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t10 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1363:57+26 + assume {:print "$at(186,55170,55196)"} true; + $t10 := 4; + assume $IsValid'u64'($t10); + + // $t11 := vector::borrow($t0, $t10) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1363:26+58 + call $t11 := $1_vector_borrow'bool'($t0, $t10); + if ($abort_flag) { + assume {:print "$at(186,55139,55197)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t12 := pack token::TokenMutabilityConfig($t2, $t5, $t7, $t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1358:9+438 + assume {:print "$at(186,54770,55208)"} true; + $t12 := $1_token_TokenMutabilityConfig($t2, $t5, $t7, $t9, $t11); + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1358:9+438 + assume {:print "$track_return(113,15,0):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 + assume {:print "$at(186,55213,55214)"} true; +L1: + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 + assume {:print "$at(186,55213,55214)"} true; + $ret0 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 +L2: + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 + assume {:print "$at(186,55213,55214)"} true; + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun token::create_token_mutability_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1357:5+550 +procedure {:timeLimit 80} $1_token_create_token_mutability_config$verify(_$t0: Vec (bool)) returns ($ret0: $1_token_TokenMutabilityConfig) +{ + // declare local variables + var $t1: int; + var $t2: bool; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: int; + var $t7: bool; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: bool; + var $t12: $1_token_TokenMutabilityConfig; + var $t0: Vec (bool); + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'vec'bool'': Vec (bool); + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1357:5+1 + assume {:print "$at(186,54664,54665)"} true; + assume $IsValid'vec'bool''($t0); + + // trace_local[mutate_setting]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1357:5+1 + assume {:print "$track_local(113,15,0):", $t0} $t0 == $t0; + + // $t1 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1359:54+21 + assume {:print "$at(186,54847,54868)"} true; + $t1 := 0; + assume $IsValid'u64'($t1); + + // $t2 := vector::borrow($t0, $t1) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1359:23+53 + call $t2 := $1_vector_borrow'bool'($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,54816,54869)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t4 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1360:50+21 + assume {:print "$at(186,54920,54941)"} true; + $t4 := 1; + assume $IsValid'u64'($t4); + + // $t5 := vector::borrow($t0, $t4) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1360:19+53 + call $t5 := $1_vector_borrow'bool'($t0, $t4); + if ($abort_flag) { + assume {:print "$at(186,54889,54942)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t6 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1361:54+25 + assume {:print "$at(186,54997,55022)"} true; + $t6 := 2; + assume $IsValid'u64'($t6); + + // $t7 := vector::borrow($t0, $t6) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1361:23+57 + call $t7 := $1_vector_borrow'bool'($t0, $t6); + if ($abort_flag) { + assume {:print "$at(186,54966,55023)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t8 := 3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1362:58+29 + assume {:print "$at(186,55082,55111)"} true; + $t8 := 3; + assume $IsValid'u64'($t8); + + // $t9 := vector::borrow($t0, $t8) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1362:27+61 + call $t9 := $1_vector_borrow'bool'($t0, $t8); + if ($abort_flag) { + assume {:print "$at(186,55051,55112)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t10 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1363:57+26 + assume {:print "$at(186,55170,55196)"} true; + $t10 := 4; + assume $IsValid'u64'($t10); + + // $t11 := vector::borrow($t0, $t10) on_abort goto L2 with $t3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1363:26+58 + call $t11 := $1_vector_borrow'bool'($t0, $t10); + if ($abort_flag) { + assume {:print "$at(186,55139,55197)"} true; + $t3 := $abort_code; + assume {:print "$track_abort(113,15):", $t3} $t3 == $t3; + goto L2; + } + + // $t12 := pack token::TokenMutabilityConfig($t2, $t5, $t7, $t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1358:9+438 + assume {:print "$at(186,54770,55208)"} true; + $t12 := $1_token_TokenMutabilityConfig($t2, $t5, $t7, $t9, $t11); + + // trace_return[0]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1358:9+438 + assume {:print "$track_return(113,15,0):", $t12} $t12 == $t12; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 + assume {:print "$at(186,55213,55214)"} true; +L1: + + // assert Not(Lt(Len($t0), 5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:665:9+34 + assume {:print "$at(187,28290,28324)"} true; + assert {:msg "assert_failed(187,28290,28324): function does not abort under this condition"} + !(LenVec($t0) < 5); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:666:9+88 + assume {:print "$at(187,28333,28421)"} true; + assert {:msg "assert_failed(187,28333,28421): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 0)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:667:9+88 + assume {:print "$at(187,28430,28518)"} true; + assert {:msg "assert_failed(187,28430,28518): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 1)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:668:9+92 + assume {:print "$at(187,28527,28619)"} true; + assert {:msg "assert_failed(187,28527,28619): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 2)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:669:9+96 + assume {:print "$at(187,28628,28724)"} true; + assert {:msg "assert_failed(187,28628,28724): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 3)); + + // assert Not(Not(vector::spec_contains[]($t0, Index($t0, 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:670:9+93 + assume {:print "$at(187,28733,28826)"} true; + assert {:msg "assert_failed(187,28733,28826): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t0, ReadVec($t0, 4)); + + // return $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:670:9+93 + $ret0 := $t12; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1365:5+1 + assume {:print "$at(186,55213,55214)"} true; +L2: + + // assert Or(Or(Or(Or(Or(Lt(Len($t0), 5), Not(vector::spec_contains[]($t0, Index($t0, 0)))), Not(vector::spec_contains[]($t0, Index($t0, 1)))), Not(vector::spec_contains[]($t0, Index($t0, 2)))), Not(vector::spec_contains[]($t0, Index($t0, 3)))), Not(vector::spec_contains[]($t0, Index($t0, 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:659:5+151 + assume {:print "$at(187,28037,28188)"} true; + assert {:msg "assert_failed(187,28037,28188): abort not covered by any of the `aborts_if` clauses"} + ((((((LenVec($t0) < 5) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 0))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 1))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 2))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 3))) || !$1_vector_spec_contains'bool'($t0, ReadVec($t0, 4))); + + // abort($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:659:5+151 + $abort_code := $t3; + $abort_flag := true; + return; + +} + +// fun token::create_token_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1123 +procedure {:timeLimit 80} $1_token_create_token_script$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: int, _$t6: $1_string_String, _$t7: int, _$t8: int, _$t9: int, _$t10: Vec (bool), _$t11: Vec ($1_string_String), _$t12: Vec (Vec (int)), _$t13: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t14: $1_token_TokenMutabilityConfig; + var $t15: $1_token_TokenDataId; + var $t16: int; + var $t17: $1_token_TokenDataId; + var $t18: int; + var $t19: Table int ($1_token_TokenData); + var $t20: $1_token_TokenData; + var $t21: $1_token_TokenMutabilityConfig; + var $t22: int; + var $t23: int; + var $t24: $1_token_Collections; + var $t25: $1_token_TokenDataId; + var $t26: $1_token_CollectionData; + var $t27: int; + var $t28: $1_token_TokenDataId; + var $t29: $1_token_TokenId; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $t6: $1_string_String; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: Vec (bool); + var $t11: Vec ($1_string_String); + var $t12: Vec (Vec (int)); + var $t13: Vec ($1_string_String); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'bool'': Vec (bool); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + var $1_token_Collections_$memory#881: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + $t10 := _$t10; + $t11 := _$t11; + $t12 := _$t12; + $t13 := _$t13; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$at(186,14594,14595)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'u64'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'$1_string_String'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'address'($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'u64'($t8); + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'u64'($t9); + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'vec'bool''($t10); + + // assume WellFormed($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'vec'$1_string_String''($t11); + + // assume WellFormed($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'vec'vec'u8'''($t12); + + // assume WellFormed($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume $IsValid'vec'$1_string_String''($t13); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:44:9+39 + assume {:print "$at(187,1437,1476)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, token::spec_create_tokendata($t16, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:45:9+66 + assume {:print "$at(187,1485,1551)"} true; + assume ($t17 == $1_token_spec_create_tokendata($t16, $t1, $t2)); + + // assume Identical($t18, select token::TokenDataId.creator($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:46:9+41 + assume {:print "$at(187,1560,1601)"} true; + assume ($t18 == $t17->$creator); + + // assume Identical($t19, select token::Collections.token_data(global($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:47:9+66 + assume {:print "$at(187,1610,1676)"} true; + assume ($t19 == $ResourceValue($1_token_Collections_$memory, $t18)->$token_data); + + // assume Identical($t20, table::spec_get($t19, $t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:48:9+64 + assume {:print "$at(187,1685,1749)"} true; + assume ($t20 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t19, $t17)); + + // @881 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$at(186,14594,14595)"} true; + $1_token_Collections_$memory#881 := $1_token_Collections_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,2):", $t2} $t2 == $t2; + + // trace_local[description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,3):", $t3} $t3 == $t3; + + // trace_local[balance]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,4):", $t4} $t4 == $t4; + + // trace_local[maximum]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,5):", $t5} $t5 == $t5; + + // trace_local[uri]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,6):", $t6} $t6 == $t6; + + // trace_local[royalty_payee_address]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,7):", $t7} $t7 == $t7; + + // trace_local[royalty_points_denominator]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,8):", $t8} $t8 == $t8; + + // trace_local[royalty_points_numerator]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,9):", $t9} $t9 == $t9; + + // trace_local[mutate_setting]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,10):", $t10} $t10 == $t10; + + // trace_local[property_keys]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,11):", $t11} $t11 == $t11; + + // trace_local[property_values]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,12):", $t12} $t12 == $t12; + + // trace_local[property_types]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:428:5+1 + assume {:print "$track_local(113,16,13):", $t13} $t13 == $t13; + + // $t21 := token::create_token_mutability_config($t10) on_abort goto L2 with $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:444:32+47 + assume {:print "$at(186,15155,15202)"} true; + call $t21 := $1_token_create_token_mutability_config($t10); + if ($abort_flag) { + assume {:print "$at(186,15155,15202)"} true; + $t22 := $abort_code; + assume {:print "$track_abort(113,16):", $t22} $t22 == $t22; + goto L2; + } + + // trace_local[token_mut_config]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:444:13+16 + assume {:print "$track_local(113,16,14):", $t21} $t21 == $t21; + + // assume Identical($t23, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:594:9+47 + assume {:print "$at(187,25120,25167)"} true; + assume ($t23 == $1_signer_$address_of($t0)); + + // assume Identical($t24, global($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:595:9+52 + assume {:print "$at(187,25176,25228)"} true; + assume ($t24 == $ResourceValue($1_token_Collections_$memory, $t23)); + + // assume Identical($t25, token::spec_create_token_data_id($t23, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:596:9+78 + assume {:print "$at(187,25237,25315)"} true; + assume ($t25 == $1_token_spec_create_token_data_id($t23, $t1, $t2)); + + // assume Identical($t26, table::spec_get(select token::Collections.collection_data($t24), select token::TokenDataId.collection($t25))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:597:9+88 + assume {:print "$at(187,25324,25412)"} true; + assume ($t26 == $1_table_spec_get'$1_string_String_$1_token_CollectionData'($t24->$collection_data, $t25->$collection)); + + // assume Identical($t27, Len($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:598:9+32 + assume {:print "$at(187,25421,25453)"} true; + assume ($t27 == LenVec($t11)); + + // $t28 := token::create_tokendata($t0, $t1, $t2, $t3, $t5, $t6, $t7, $t8, $t9, $t21, $t11, $t12, $t13) on_abort goto L2 with $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:445:28+379 + assume {:print "$at(186,15231,15610)"} true; + call $t28 := $1_token_create_tokendata($t0, $t1, $t2, $t3, $t5, $t6, $t7, $t8, $t9, $t21, $t11, $t12, $t13); + if ($abort_flag) { + assume {:print "$at(186,15231,15610)"} true; + $t22 := $abort_code; + assume {:print "$track_abort(113,16):", $t22} $t22 == $t22; + goto L2; + } + + // trace_local[tokendata_id]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:445:13+12 + assume {:print "$track_local(113,16,15):", $t28} $t28 == $t28; + + // $t29 := token::mint_token($t0, $t28, $t4) on_abort goto L2 with $t22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:461:9+89 + assume {:print "$at(186,15621,15710)"} true; + call $t29 := $1_token_mint_token($t0, $t28, $t4); + if ($abort_flag) { + assume {:print "$at(186,15621,15710)"} true; + $t22 := $abort_code; + assume {:print "$track_abort(113,16):", $t22} $t22 == $t22; + goto L2; + } + + // drop($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:461:9+89 + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:466:5+1 + assume {:print "$at(186,15716,15717)"} true; +L1: + + // assert Not(Neq
(select token::TokenDataId.creator($t17), $t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:49:9+40 + assume {:print "$at(187,1758,1798)"} true; + assert {:msg "assert_failed(187,1758,1798): function does not abort under this condition"} + !!$IsEqual'address'($t17->$creator, $t16); + + // assert Not(Not(exists[@881]($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:52:9+45 + assume {:print "$at(187,1979,2024)"} true; + assert {:msg "assert_failed(187,1979,2024): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#881, $t18); + + // assert Not(Le($t4, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:53:9+23 + assume {:print "$at(187,2033,2056)"} true; + assert {:msg "assert_failed(187,2033,2056): function does not abort under this condition"} + !($t4 <= 0); + + // assert Not(Lt(Len($t10), 5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:665:9+34 + assume {:print "$at(187,28290,28324)"} true; + assert {:msg "assert_failed(187,28290,28324): function does not abort under this condition"} + !(LenVec($t10) < 5); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:666:9+88 + assume {:print "$at(187,28333,28421)"} true; + assert {:msg "assert_failed(187,28333,28421): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 0)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:667:9+88 + assume {:print "$at(187,28430,28518)"} true; + assert {:msg "assert_failed(187,28430,28518): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 1)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:668:9+92 + assume {:print "$at(187,28527,28619)"} true; + assert {:msg "assert_failed(187,28527,28619): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 2)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:669:9+96 + assume {:print "$at(187,28628,28724)"} true; + assert {:msg "assert_failed(187,28628,28724): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 3)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:670:9+93 + assume {:print "$at(187,28733,28826)"} true; + assert {:msg "assert_failed(187,28733,28826): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 4)); + + // assert Not(Lt(Len($t10), 5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:665:9+34 + assume {:print "$at(187,28290,28324)"} true; + assert {:msg "assert_failed(187,28290,28324): function does not abort under this condition"} + !(LenVec($t10) < 5); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:666:9+88 + assume {:print "$at(187,28333,28421)"} true; + assert {:msg "assert_failed(187,28333,28421): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 0)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:667:9+88 + assume {:print "$at(187,28430,28518)"} true; + assert {:msg "assert_failed(187,28430,28518): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 1)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:668:9+92 + assume {:print "$at(187,28527,28619)"} true; + assert {:msg "assert_failed(187,28527,28619): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 2)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 3)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:669:9+96 + assume {:print "$at(187,28628,28724)"} true; + assert {:msg "assert_failed(187,28628,28724): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 3)); + + // assert Not(Not(vector::spec_contains[]($t10, Index($t10, 4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:670:9+93 + assume {:print "$at(187,28733,28826)"} true; + assert {:msg "assert_failed(187,28733,28826): function does not abort under this condition"} + !!$1_vector_spec_contains'bool'($t10, ReadVec($t10, 4)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:670:9+93 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:466:5+1 + assume {:print "$at(186,15716,15717)"} true; +L2: + + // abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:466:5+1 + assume {:print "$at(186,15716,15717)"} true; + $abort_code := $t22; + $abort_flag := true; + return; + +} + +// fun token::create_tokendata [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+3964 +procedure {:inline 1} $1_token_create_tokendata(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: $1_string_String, _$t6: int, _$t7: int, _$t8: int, _$t9: $1_token_TokenMutabilityConfig, _$t10: Vec ($1_string_String), _$t11: Vec (Vec (int)), _$t12: Vec ($1_string_String)) returns ($ret0: $1_token_TokenDataId) +{ + // declare local variables + var $t13: int; + var $t14: $Mutation ($1_token_CollectionData); + var $t15: $Mutation ($1_token_Collections); + var $t16: $1_token_TokenData; + var $t17: $1_token_TokenDataId; + var $t18: int; + var $t19: $1_token_Collections; + var $t20: $1_token_TokenDataId; + var $t21: $1_token_CollectionData; + 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: bool; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: int; + var $t36: bool; + var $t37: int; + var $t38: int; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: bool; + var $t44: int; + var $t45: int; + var $t46: $Mutation ($1_token_Collections); + var $t47: $1_token_TokenDataId; + var $t48: Table int ($1_token_CollectionData); + var $t49: $1_string_String; + var $t50: bool; + var $t51: int; + var $t52: int; + var $t53: Table int ($1_token_TokenData); + var $t54: bool; + var $t55: bool; + var $t56: int; + var $t57: int; + var $t58: $Mutation (Table int ($1_token_CollectionData)); + var $t59: $1_string_String; + var $t60: $Mutation ($1_token_CollectionData); + var $t61: int; + var $t62: int; + var $t63: bool; + var $t64: int; + var $t65: int; + var $t66: int; + var $t67: $Mutation (int); + var $t68: int; + var $t69: int; + var $t70: bool; + var $t71: int; + var $t72: int; + var $t73: int; + var $t74: int; + var $t75: $1_token_Royalty; + var $t76: int; + var $t77: $1_property_map_PropertyMap; + var $t78: $1_token_TokenData; + var $t79: $Mutation (Table int ($1_token_TokenData)); + var $t80: bool; + var $t81: $1_token_CreateTokenData; + var $t82: $Mutation ($1_event_EventHandle'$1_token_CreateTokenDataEvent'); + var $t83: $1_token_CreateTokenDataEvent; + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: $1_string_String; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_token_TokenMutabilityConfig; + var $t10: Vec ($1_string_String); + var $t11: Vec (Vec (int)); + var $t12: Vec ($1_string_String); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'$1_token_Collections': $1_token_Collections; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + $t10 := _$t10; + $t11 := _$t11; + $t12 := _$t12; + + // bytecode translation starts here + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:594:9+47 + assume {:print "$at(187,25120,25167)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:595:9+52 + assume {:print "$at(187,25176,25228)"} true; + assume ($t19 == $ResourceValue($1_token_Collections_$memory, $t18)); + + // assume Identical($t20, token::spec_create_token_data_id($t18, $t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:596:9+78 + assume {:print "$at(187,25237,25315)"} true; + assume ($t20 == $1_token_spec_create_token_data_id($t18, $t1, $t2)); + + // assume Identical($t21, table::spec_get(select token::Collections.collection_data($t19), select token::TokenDataId.collection($t20))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:597:9+88 + assume {:print "$at(187,25324,25412)"} true; + assume ($t21 == $1_table_spec_get'$1_string_String_$1_token_CollectionData'($t19->$collection_data, $t20->$collection)); + + // assume Identical($t22, Len($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:598:9+32 + assume {:print "$at(187,25421,25453)"} true; + assume ($t22 == LenVec($t10)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$at(186,47395,47396)"} true; + assume {:print "$track_local(113,17,0):", $t0} $t0 == $t0; + + // trace_local[collection]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,1):", $t1} $t1 == $t1; + + // trace_local[name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,2):", $t2} $t2 == $t2; + + // trace_local[description]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,3):", $t3} $t3 == $t3; + + // trace_local[maximum]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,4):", $t4} $t4 == $t4; + + // trace_local[uri]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,5):", $t5} $t5 == $t5; + + // trace_local[royalty_payee_address]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,6):", $t6} $t6 == $t6; + + // trace_local[royalty_points_denominator]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,7):", $t7} $t7 == $t7; + + // trace_local[royalty_points_numerator]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,8):", $t8} $t8 == $t8; + + // trace_local[token_mutate_config]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,9):", $t9} $t9 == $t9; + + // trace_local[property_keys]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,10):", $t10} $t10 == $t10; + + // trace_local[property_values]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,11):", $t11} $t11 == $t11; + + // trace_local[property_types]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1190:5+1 + assume {:print "$track_local(113,17,12):", $t12} $t12 == $t12; + + // $t23 := string::length($t2) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:17+21 + assume {:print "$at(186,47925,47946)"} true; + call $t23 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(186,47925,47946)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t25 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:42+19 + $t25 := 128; + assume $IsValid'u64'($t25); + + // $t26 := <=($t23, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:39+2 + call $t26 := $Le($t23, $t25); + + // if ($t26) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 + if ($t26) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 + assume {:print "$at(186,47917,48015)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 +L0: + + // $t27 := 26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:87+18 + assume {:print "$at(186,47995,48013)"} true; + $t27 := 26; + assume $IsValid'u64'($t27); + + // $t28 := error::invalid_argument($t27) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:63+43 + call $t28 := $1_error_invalid_argument($t27); + if ($abort_flag) { + assume {:print "$at(186,47971,48014)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 + assume {:print "$at(186,47917,48015)"} true; + assume {:print "$track_abort(113,17):", $t28} $t28 == $t28; + + // $t24 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 + $t24 := $t28; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1205:9+98 + goto L30; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:32+11 + assume {:print "$at(186,48048,48059)"} true; +L2: + + // $t29 := string::length($t1) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:17+27 + assume {:print "$at(186,48033,48060)"} true; + call $t29 := $1_string_length($t1); + if ($abort_flag) { + assume {:print "$at(186,48033,48060)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t30 := 128 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:48+26 + $t30 := 128; + assume $IsValid'u64'($t30); + + // $t31 := <=($t29, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:45+2 + call $t31 := $Le($t29, $t30); + + // if ($t31) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 + if ($t31) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 + assume {:print "$at(186,48025,48143)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 +L3: + + // $t32 := 25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:100+25 + assume {:print "$at(186,48116,48141)"} true; + $t32 := 25; + assume $IsValid'u64'($t32); + + // $t33 := error::invalid_argument($t32) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:76+50 + call $t33 := $1_error_invalid_argument($t32); + if ($abort_flag) { + assume {:print "$at(186,48092,48142)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 + assume {:print "$at(186,48025,48143)"} true; + assume {:print "$track_abort(113,17):", $t33} $t33 == $t33; + + // $t24 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 + $t24 := $t33; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1206:9+118 + goto L30; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:32+4 + assume {:print "$at(186,48176,48180)"} true; +L5: + + // $t34 := string::length($t5) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:17+20 + assume {:print "$at(186,48161,48181)"} true; + call $t34 := $1_string_length($t5); + if ($abort_flag) { + assume {:print "$at(186,48161,48181)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t35 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:41+14 + $t35 := 512; + assume $IsValid'u64'($t35); + + // $t36 := <=($t34, $t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:38+2 + call $t36 := $Le($t34, $t35); + + // if ($t36) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 + if ($t36) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 + assume {:print "$at(186,48153,48240)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 +L6: + + // $t37 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:81+13 + assume {:print "$at(186,48225,48238)"} true; + $t37 := 27; + assume $IsValid'u64'($t37); + + // $t38 := error::invalid_argument($t37) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:57+38 + call $t38 := $1_error_invalid_argument($t37); + if ($abort_flag) { + assume {:print "$at(186,48201,48239)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 + assume {:print "$at(186,48153,48240)"} true; + assume {:print "$track_abort(113,17):", $t38} $t38 == $t38; + + // $t24 := move($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 + $t24 := $t38; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1207:9+87 + goto L30; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:17+24 + assume {:print "$at(186,48258,48282)"} true; +L8: + + // $t39 := <=($t8, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:42+2 + assume {:print "$at(186,48283,48285)"} true; + call $t39 := $Le($t8, $t7); + + // if ($t39) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 + if ($t39) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 + assume {:print "$at(186,48250,48378)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 +L9: + + // $t40 := 34 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:97+38 + assume {:print "$at(186,48338,48376)"} true; + $t40 := 34; + assume $IsValid'u64'($t40); + + // $t41 := error::invalid_argument($t40) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:73+63 + call $t41 := $1_error_invalid_argument($t40); + if ($abort_flag) { + assume {:print "$at(186,48314,48377)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 + assume {:print "$at(186,48250,48378)"} true; + assume {:print "$track_abort(113,17):", $t41} $t41 == $t41; + + // $t24 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 + $t24 := $t41; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1208:9+128 + goto L30; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1210:47+7 + assume {:print "$at(186,48427,48434)"} true; +L11: + + // $t42 := signer::address_of($t0) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1210:28+27 + assume {:print "$at(186,48408,48435)"} true; + call $t42 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,48408,48435)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_local[account_addr]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1210:13+12 + assume {:print "$track_local(113,17,13):", $t42} $t42 == $t42; + + // $t43 := exists($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1212:13+6 + assume {:print "$at(186,48466,48472)"} true; + $t43 := $ResourceExists($1_token_Collections_$memory, $t42); + + // if ($t43) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 + assume {:print "$at(186,48445,48568)"} true; + if ($t43) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 +L13: + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 + assume {:print "$at(186,48445,48568)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1213:30+26 + assume {:print "$at(186,48530,48556)"} true; +L12: + + // $t44 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1213:30+26 + assume {:print "$at(186,48530,48556)"} true; + $t44 := 1; + assume $IsValid'u64'($t44); + + // $t45 := error::not_found($t44) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1213:13+44 + call $t45 := $1_error_not_found($t44); + if ($abort_flag) { + assume {:print "$at(186,48513,48557)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 + assume {:print "$at(186,48445,48568)"} true; + assume {:print "$track_abort(113,17):", $t45} $t45 == $t45; + + // $t24 := move($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 + $t24 := $t45; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1211:9+123 + goto L30; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1215:58+12 + assume {:print "$at(186,48627,48639)"} true; +L14: + + // $t46 := borrow_global($t42) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1215:27+17 + assume {:print "$at(186,48596,48613)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t42)) { + call $ExecFailureAbort(); + } else { + $t46 := $Mutation($Global($t42), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t42)); + } + if ($abort_flag) { + assume {:print "$at(186,48596,48613)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_local[collections]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1215:13+11 + $temp_0'$1_token_Collections' := $Dereference($t46); + assume {:print "$track_local(113,17,15):", $temp_0'$1_token_Collections'} $temp_0'$1_token_Collections' == $temp_0'$1_token_Collections'; + + // $t47 := token::create_token_data_id($t42, $t1, $t2) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1217:29+52 + assume {:print "$at(186,48671,48723)"} true; + call $t47 := $1_token_create_token_data_id($t42, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,48671,48723)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_local[token_data_id]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1217:13+13 + assume {:print "$track_local(113,17,17):", $t47} $t47 == $t47; + + // $t48 := get_field.collection_data($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1220:29+28 + assume {:print "$at(186,48771,48799)"} true; + $t48 := $Dereference($t46)->$collection_data; + + // $t49 := get_field.collection($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1220:59+24 + $t49 := $t47->$collection; + + // $t50 := table::contains($t48, $t49) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1220:13+71 + call $t50 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t48, $t49); + if ($abort_flag) { + assume {:print "$at(186,48755,48826)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // if ($t50) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + assume {:print "$at(186,48734,48894)"} true; + if ($t50) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 +L16: + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + assume {:print "$at(186,48734,48894)"} true; + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 +L15: + + // drop($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + assume {:print "$at(186,48734,48894)"} true; + + // $t51 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1221:30+25 + assume {:print "$at(186,48857,48882)"} true; + $t51 := 2; + assume $IsValid'u64'($t51); + + // $t52 := error::not_found($t51) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1221:13+43 + call $t52 := $1_error_not_found($t51); + if ($abort_flag) { + assume {:print "$at(186,48840,48883)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + assume {:print "$at(186,48734,48894)"} true; + assume {:print "$track_abort(113,17):", $t52} $t52 == $t52; + + // $t24 := move($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + $t24 := $t52; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1219:9+160 + goto L30; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1224:31+11 + assume {:print "$at(186,48943,48954)"} true; +L17: + + // $t53 := get_field.token_data($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1224:30+23 + assume {:print "$at(186,48942,48965)"} true; + $t53 := $Dereference($t46)->$token_data; + + // $t54 := table::contains($t53, $t47) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1224:14+55 + call $t54 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t53, $t47); + if ($abort_flag) { + assume {:print "$at(186,48926,48981)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t55 := !($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1224:13+1 + call $t55 := $Not($t54); + + // if ($t55) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + assume {:print "$at(186,48904,49055)"} true; + if ($t55) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 +L19: + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + assume {:print "$at(186,48904,49055)"} true; + goto L20; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 +L18: + + // drop($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + assume {:print "$at(186,48904,49055)"} true; + + // $t56 := 9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1225:35+26 + assume {:print "$at(186,49017,49043)"} true; + $t56 := 9; + assume $IsValid'u64'($t56); + + // $t57 := error::already_exists($t56) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1225:13+49 + call $t57 := $1_error_already_exists($t56); + if ($abort_flag) { + assume {:print "$at(186,48995,49044)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + assume {:print "$at(186,48904,49055)"} true; + assume {:print "$track_abort(113,17):", $t57} $t57 == $t57; + + // $t24 := move($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + $t24 := $t57; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1223:9+151 + goto L30; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1228:49+11 + assume {:print "$at(186,49106,49117)"} true; +L20: + + // $t58 := borrow_field.collection_data($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1228:44+32 + assume {:print "$at(186,49101,49133)"} true; + $t58 := $ChildMutation($t46, 0, $Dereference($t46)->$collection_data); + + // $t59 := get_field.collection($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1228:78+24 + $t59 := $t47->$collection; + + // $t60 := table::borrow_mut($t58, $t59) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1228:26+77 + call $t60,$t58 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t58, $t59); + if ($abort_flag) { + assume {:print "$at(186,49083,49160)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_local[collection#1]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1228:13+10 + $temp_0'$1_token_CollectionData' := $Dereference($t60); + assume {:print "$track_local(113,17,14):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t61 := get_field.maximum($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:13+18 + assume {:print "$at(186,49331,49349)"} true; + $t61 := $Dereference($t60)->$maximum; + + // $t62 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:34+1 + $t62 := 0; + assume $IsValid'u64'($t62); + + // $t63 := >($t61, $t62) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:32+1 + call $t63 := $Gt($t61, $t62); + + // if ($t63) goto L22 else goto L31 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:9+269 + if ($t63) { goto L22; } else { goto L31; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:33+10 + assume {:print "$at(186,49389,49399)"} true; +L22: + + // $t64 := get_field.supply($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:33+17 + assume {:print "$at(186,49389,49406)"} true; + $t64 := $Dereference($t60)->$supply; + + // $t65 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:53+1 + $t65 := 1; + assume $IsValid'u64'($t65); + + // $t66 := +($t64, $t65) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:51+1 + call $t66 := $AddU64($t64, $t65); + if ($abort_flag) { + assume {:print "$at(186,49407,49408)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t67 := borrow_field.supply($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:13+17 + $t67 := $ChildMutation($t60, 3, $Dereference($t60)->$supply); + + // write_ref($t67, $t66) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:13+41 + $t67 := $UpdateMutation($t67, $t66); + + // write_back[Reference($t60).supply (u64)]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1233:13+41 + $t60 := $UpdateMutation($t60, $Update'$1_token_CollectionData'_supply($Dereference($t60), $Dereference($t67))); + + // $t68 := get_field.maximum($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1235:17+18 + assume {:print "$at(186,49449,49467)"} true; + $t68 := $Dereference($t60)->$maximum; + + // $t69 := get_field.supply($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1235:39+17 + $t69 := $Dereference($t60)->$supply; + + // write_back[Reference($t58)[]]($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1235:39+17 + $t58 := $UpdateMutation($t58, UpdateTable($Dereference($t58), ReadVec($t60->p, LenVec($t58->p)), $Dereference($t60))); + + // write_back[Reference($t46).collection_data (table::Table)]($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1235:39+17 + $t46 := $UpdateMutation($t46, $Update'$1_token_Collections'_collection_data($Dereference($t46), $Dereference($t58))); + + // $t70 := >=($t68, $t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1235:36+2 + call $t70 := $Ge($t68, $t69); + + // if ($t70) goto L24 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + assume {:print "$at(186,49424,49585)"} true; + if ($t70) { goto L24; } else { goto L23; } + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 +L24: + + // goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + assume {:print "$at(186,49424,49585)"} true; + goto L25; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 +L23: + + // write_back[token::Collections@]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + assume {:print "$at(186,49424,49585)"} true; + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t46), + $Dereference($t46)); + + // drop($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + + // $t71 := 4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1236:41+39 + assume {:print "$at(186,49530,49569)"} true; + $t71 := 4; + assume $IsValid'u64'($t71); + + // $t72 := error::invalid_argument($t71) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1236:17+64 + call $t72 := $1_error_invalid_argument($t71); + if ($abort_flag) { + assume {:print "$at(186,49506,49570)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // trace_abort($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + assume {:print "$at(186,49424,49585)"} true; + assume {:print "$track_abort(113,17):", $t72} $t72 == $t72; + + // $t24 := move($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + $t24 := $t72; + + // goto L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1234:13+161 + goto L30; + + // label L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1237:14+1 + assume {:print "$at(186,49585,49586)"} true; +L25: + + // goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1237:14+1 + assume {:print "$at(186,49585,49586)"} true; + goto L26; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:9+269 + assume {:print "$at(186,49327,49596)"} true; +L21: + + // drop($t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1232:9+269 + assume {:print "$at(186,49327,49596)"} true; + + // label L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1241:13+7 + assume {:print "$at(186,49648,49655)"} true; +L26: + + // $t73 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1242:39+1 + assume {:print "$at(186,49695,49696)"} true; + $t73 := 0; + assume $IsValid'u64'($t73); + + // $t74 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1243:21+1 + assume {:print "$at(186,49718,49719)"} true; + $t74 := 0; + assume $IsValid'u64'($t74); + + // $t75 := token::create_royalty($t8, $t7, $t6) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1245:22+91 + assume {:print "$at(186,49759,49850)"} true; + call $t75 := $1_token_create_royalty($t8, $t7, $t6); + if ($abort_flag) { + assume {:print "$at(186,49759,49850)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // assume Identical($t76, Len($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:17:9+23 + assume {:print "$at(185,437,460)"} true; + assume ($t76 == LenVec($t10)); + + // $t77 := property_map::new($t10, $t11, $t12) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1248:33+65 + assume {:print "$at(186,49927,49992)"} true; + call $t77 := $1_property_map_new($t10, $t11, $t12); + if ($abort_flag) { + assume {:print "$at(186,49927,49992)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // $t78 := pack token::TokenData($t4, $t73, $t74, $t5, $t75, $t2, $t3, $t77, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1240:26+431 + assume {:print "$at(186,49624,50055)"} true; + $t78 := $1_token_TokenData($t4, $t73, $t74, $t5, $t75, $t2, $t3, $t77, $t9); + + // trace_local[token_data]($t78) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1240:13+10 + assume {:print "$track_local(113,17,16):", $t78} $t78 == $t78; + + // $t79 := borrow_field.token_data($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1252:20+27 + assume {:print "$at(186,50077,50104)"} true; + $t79 := $ChildMutation($t46, 1, $Dereference($t46)->$token_data); + + // table::add($t79, $t47, $t78) on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1252:9+66 + call $t79 := $1_table_add'$1_token_TokenDataId_$1_token_TokenData'($t79, $t47, $t78); + if ($abort_flag) { + assume {:print "$at(186,50066,50132)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // write_back[Reference($t46).token_data (table::Table)]($t79) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1252:9+66 + $t46 := $UpdateMutation($t46, $Update'$1_token_Collections'_token_data($Dereference($t46), $Dereference($t79))); + + // $t80 := features::module_event_migration_enabled() on_abort goto L30 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1253:13+47 + assume {:print "$at(186,50146,50193)"} true; + call $t80 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,50146,50193)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,17):", $t24} $t24 == $t24; + goto L30; + } + + // if ($t80) goto L28 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1253:9+613 + if ($t80) { goto L28; } else { goto L27; } + + // label L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1256:25+13 + assume {:print "$at(186,50280,50293)"} true; +L28: + + // $t81 := pack token::CreateTokenData($t47, $t3, $t4, $t5, $t6, $t7, $t8, $t2, $t9, $t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1255:17+492 + assume {:print "$at(186,50238,50730)"} true; + $t81 := $1_token_CreateTokenData($t47, $t3, $t4, $t5, $t6, $t7, $t8, $t2, $t9, $t10, $t11, $t12); + + // opaque begin: event::emit($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1254:13+535 + assume {:print "$at(186,50209,50744)"} true; + + // opaque end: event::emit($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1254:13+535 + + // label L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1273:18+11 + assume {:print "$at(186,50824,50835)"} true; +L27: + + // $t82 := borrow_field.create_token_data_events($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1273:13+41 + assume {:print "$at(186,50819,50860)"} true; + $t82 := $ChildMutation($t46, 3, $Dereference($t46)->$create_token_data_events); + + // $t83 := pack token::CreateTokenDataEvent($t47, $t3, $t4, $t5, $t6, $t7, $t8, $t2, $t9, $t10, $t11, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1274:13+445 + assume {:print "$at(186,50874,51319)"} true; + $t83 := $1_token_CreateTokenDataEvent($t47, $t3, $t4, $t5, $t6, $t7, $t8, $t2, $t9, $t10, $t11, $t12); + + // opaque begin: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1272:9+564 + assume {:print "$at(186,50766,51330)"} true; + + // opaque end: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1272:9+564 + + // write_back[Reference($t46).create_token_data_events (event::EventHandle)]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1272:9+564 + $t46 := $UpdateMutation($t46, $Update'$1_token_Collections'_create_token_data_events($Dereference($t46), $Dereference($t82))); + + // write_back[token::Collections@]($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1272:9+564 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t46), + $Dereference($t46)); + + // trace_return[0]($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1289:9+13 + assume {:print "$at(186,51340,51353)"} true; + assume {:print "$track_return(113,17,0):", $t47} $t47 == $t47; + + // label L29 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1290:5+1 + assume {:print "$at(186,51358,51359)"} true; +L29: + + // return $t47 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1290:5+1 + assume {:print "$at(186,51358,51359)"} true; + $ret0 := $t47; + return; + + // label L30 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1290:5+1 +L30: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1290:5+1 + assume {:print "$at(186,51358,51359)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + + // label L31 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L31: + + // drop($t58) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L21 at :1:1+10 + goto L21; + +} + +// fun token::create_withdraw_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+334 +procedure {:timeLimit 80} $1_token_create_withdraw_capability$verify(_$t0: $signer, _$t1: $1_token_TokenId, _$t2: int, _$t3: int) returns ($ret0: $1_token_WithdrawCapability) +{ + // declare local variables + var $t4: int; + var $t5: int; + var $t6: $1_token_WithdrawCapability; + var $t0: $signer; + var $t1: $1_token_TokenId; + var $t2: int; + var $t3: int; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_WithdrawCapability': $1_token_WithdrawCapability; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume {:print "$at(186,41724,41725)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume $IsValid'u64'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume $IsValid'u64'($t3); + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume {:print "$track_local(113,18,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume {:print "$track_local(113,18,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume {:print "$track_local(113,18,2):", $t2} $t2 == $t2; + + // trace_local[expiration_sec]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+1 + assume {:print "$track_local(113,18,3):", $t3} $t3 == $t3; + + // $t4 := signer::address_of($t0) on_abort goto L2 with $t5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1038:26+25 + assume {:print "$at(186,41946,41971)"} true; + call $t4 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,41946,41971)"} true; + $t5 := $abort_code; + assume {:print "$track_abort(113,18):", $t5} $t5 == $t5; + goto L2; + } + + // $t6 := pack token::WithdrawCapability($t4, $t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1037:9+152 + assume {:print "$at(186,41900,42052)"} true; + $t6 := $1_token_WithdrawCapability($t4, $t1, $t2, $t3); + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1037:9+152 + assume {:print "$track_return(113,18,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1043:5+1 + assume {:print "$at(186,42057,42058)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1043:5+1 + assume {:print "$at(186,42057,42058)"} true; + assert {:msg "assert_failed(186,42057,42058): function does not abort under this condition"} + !false; + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1043:5+1 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1043:5+1 +L2: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+334 + assume {:print "$at(186,41724,42058)"} true; + assert {:msg "assert_failed(186,41724,42058): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1031:5+334 + $abort_code := $t5; + $abort_flag := true; + return; + +} + +// fun token::token_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1012:5+70 +procedure {:timeLimit 80} $1_token_token_id$verify(_$t0: $1_token_Token) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t1: $1_token_TokenId; + var $t0: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1012:5+1 + assume {:print "$at(186,41094,41095)"} true; + assume $IsValid'$1_token_Token'($t0); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1012:5+1 + assume {:print "$track_local(113,78,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1013:9+9 + assume {:print "$at(186,41149,41158)"} true; + $t1 := $t0->$id; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1013:9+9 + assume {:print "$track_return(113,78,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1014:5+1 + assume {:print "$at(186,41163,41164)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1014:5+1 + assume {:print "$at(186,41163,41164)"} true; + assert {:msg "assert_failed(186,41163,41164): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1014:5+1 + $ret0 := $t1; + return; + +} + +// fun token::deposit_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:955:5+225 +procedure {:inline 1} $1_token_deposit_token(_$t0: $signer, _$t1: $1_token_Token) returns () +{ + // declare local variables + var $t2: int; + var $t3: int; + var $t4: $1_token_TokenId; + var $t5: int; + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_token_TokenStore; + var $t9: $1_token_Token; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $1_account_Account; + var $t15: $1_token_TokenId; + var $t16: int; + var $t17: $1_token_TokenStore; + var $t18: $1_token_Token; + var $t19: bool; + var $t0: $signer; + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'address': int; + var $temp_0'signer': $signer; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t4 == $t1->$id); + + // assume Identical($t5, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t5 == $t1->$amount); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // assume Identical($t8, global($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t8 == $ResourceValue($1_token_TokenStore_$memory, $t3)); + + // assume Identical($t9, table::spec_get(select token::TokenStore.tokens($t8), $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t9 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t8->$tokens, $t4)); + + // assume Identical($t10, table::spec_contains(select token::TokenStore.tokens($t8), $t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t10 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t8->$tokens, $t4)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:955:5+1 + assume {:print "$at(186,38623,38624)"} true; + assume {:print "$track_local(113,19,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:955:5+1 + assume {:print "$track_local(113,19,1):", $t1} $t1 == $t1; + + // $t11 := signer::address_of($t0) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:956:28+27 + assume {:print "$at(186,38729,38756)"} true; + call $t11 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,38729,38756)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,19):", $t12} $t12 == $t12; + goto L2; + } + + // trace_local[account_addr]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:956:13+12 + assume {:print "$track_local(113,19,2):", $t11} $t11 == $t11; + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, global($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t14 == $ResourceValue($1_account_Account_$memory, $t13)); + + // token::initialize_token_store($t0) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:957:9+31 + assume {:print "$at(186,38766,38797)"} true; + call $1_token_initialize_token_store($t0); + if ($abort_flag) { + assume {:print "$at(186,38766,38797)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,19):", $t12} $t12 == $t12; + goto L2; + } + + // assume Identical($t15, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t15 == $t1->$id); + + // assume Identical($t16, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t16 == $t1->$amount); + + // assume Identical($t17, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t17 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t18, table::spec_get(select token::TokenStore.tokens($t17), $t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t18 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t17->$tokens, $t15)); + + // assume Identical($t19, table::spec_contains(select token::TokenStore.tokens($t17), $t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t19 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t17->$tokens, $t15)); + + // token::direct_deposit($t11, $t1) on_abort goto L2 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:958:9+35 + assume {:print "$at(186,38807,38842)"} true; + call $1_token_direct_deposit($t11, $t1); + if ($abort_flag) { + assume {:print "$at(186,38807,38842)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,19):", $t12} $t12 == $t12; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:959:5+1 + assume {:print "$at(186,38847,38848)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:959:5+1 + assume {:print "$at(186,38847,38848)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:959:5+1 +L2: + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:959:5+1 + assume {:print "$at(186,38847,38848)"} true; + $abort_code := $t12; + $abort_flag := true; + return; + +} + +// fun token::destroy_collection_data [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1683:5+276 +procedure {:inline 1} $1_token_destroy_collection_data(_$t0: $1_token_CollectionData) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $t6: $1_token_CollectionMutabilityConfig; + var $t0: $1_token_CollectionData; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[collection_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1683:5+1 + assume {:print "$at(186,68368,68369)"} true; + assume {:print "$track_local(113,20,0):", $t0} $t0 == $t0; + + // ($t1, $t2, $t3, $t4, $t5, $t6) := unpack token::CollectionData($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1684:13+176 + assume {:print "$at(186,68443,68619)"} true; + $t1 := $t0->$description; + $t2 := $t0->$name; + $t3 := $t0->$uri; + $t4 := $t0->$supply; + $t5 := $t0->$maximum; + $t6 := $t0->$mutability_config; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1690:32+1 + assume {:print "$at(186,68607,68608)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1689:22+1 + assume {:print "$at(186,68573,68574)"} true; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1688:21+1 + assume {:print "$at(186,68549,68550)"} true; + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1687:18+1 + assume {:print "$at(186,68526,68527)"} true; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1686:19+1 + assume {:print "$at(186,68506,68507)"} true; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1685:26+1 + assume {:print "$at(186,68485,68486)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1692:5+1 + assume {:print "$at(186,68643,68644)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1692:5+1 + assume {:print "$at(186,68643,68644)"} true; + return; + +} + +// fun token::destroy_collection_data [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1683:5+276 +procedure {:timeLimit 80} $1_token_destroy_collection_data$verify(_$t0: $1_token_CollectionData) returns () +{ + // declare local variables + var $t1: $1_string_String; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $t6: $1_token_CollectionMutabilityConfig; + var $t0: $1_token_CollectionData; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1683:5+1 + assume {:print "$at(186,68368,68369)"} true; + assume $IsValid'$1_token_CollectionData'($t0); + + // trace_local[collection_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1683:5+1 + assume {:print "$track_local(113,20,0):", $t0} $t0 == $t0; + + // ($t1, $t2, $t3, $t4, $t5, $t6) := unpack token::CollectionData($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1684:13+176 + assume {:print "$at(186,68443,68619)"} true; + $t1 := $t0->$description; + $t2 := $t0->$name; + $t3 := $t0->$uri; + $t4 := $t0->$supply; + $t5 := $t0->$maximum; + $t6 := $t0->$mutability_config; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1690:32+1 + assume {:print "$at(186,68607,68608)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1689:22+1 + assume {:print "$at(186,68573,68574)"} true; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1688:21+1 + assume {:print "$at(186,68549,68550)"} true; + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1687:18+1 + assume {:print "$at(186,68526,68527)"} true; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1686:19+1 + assume {:print "$at(186,68506,68507)"} true; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1685:26+1 + assume {:print "$at(186,68485,68486)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1692:5+1 + assume {:print "$at(186,68643,68644)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1692:5+1 + assume {:print "$at(186,68643,68644)"} true; + assert {:msg "assert_failed(186,68643,68644): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1692:5+1 + return; + +} + +// fun token::destroy_token_data [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1669:5+351 +procedure {:inline 1} $1_token_destroy_token_data(_$t0: $1_token_TokenData) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_string_String; + var $t5: $1_token_Royalty; + var $t6: $1_string_String; + var $t7: $1_string_String; + var $t8: $1_property_map_PropertyMap; + var $t9: $1_token_TokenMutabilityConfig; + var $t0: $1_token_TokenData; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1669:5+1 + assume {:print "$at(186,68011,68012)"} true; + assume {:print "$track_local(113,21,0):", $t0} $t0 == $t0; + + // ($t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9) := unpack token::TokenData($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1670:13+271 + assume {:print "$at(186,68071,68342)"} true; + $t1 := $t0->$maximum; + $t2 := $t0->$largest_property_version; + $t3 := $t0->$supply; + $t4 := $t0->$uri; + $t5 := $t0->$royalty; + $t6 := $t0->$name; + $t7 := $t0->$description; + $t8 := $t0->$default_properties; + $t9 := $t0->$mutability_config; + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1679:32+1 + assume {:print "$at(186,68330,68331)"} true; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1678:33+1 + assume {:print "$at(186,68296,68297)"} true; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1677:26+1 + assume {:print "$at(186,68261,68262)"} true; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1676:19+1 + assume {:print "$at(186,68233,68234)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1675:22+1 + assume {:print "$at(186,68212,68213)"} true; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1674:18+1 + assume {:print "$at(186,68188,68189)"} true; + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1673:21+1 + assume {:print "$at(186,68168,68169)"} true; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1672:39+1 + assume {:print "$at(186,68145,68146)"} true; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1671:22+1 + assume {:print "$at(186,68104,68105)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1681:5+1 + assume {:print "$at(186,68361,68362)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1681:5+1 + assume {:print "$at(186,68361,68362)"} true; + return; + +} + +// fun token::destroy_token_data [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1669:5+351 +procedure {:timeLimit 80} $1_token_destroy_token_data$verify(_$t0: $1_token_TokenData) returns () +{ + // declare local variables + var $t1: int; + var $t2: int; + var $t3: int; + var $t4: $1_string_String; + var $t5: $1_token_Royalty; + var $t6: $1_string_String; + var $t7: $1_string_String; + var $t8: $1_property_map_PropertyMap; + var $t9: $1_token_TokenMutabilityConfig; + var $t0: $1_token_TokenData; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1669:5+1 + assume {:print "$at(186,68011,68012)"} true; + assume $IsValid'$1_token_TokenData'($t0); + + // trace_local[token_data]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1669:5+1 + assume {:print "$track_local(113,21,0):", $t0} $t0 == $t0; + + // ($t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9) := unpack token::TokenData($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1670:13+271 + assume {:print "$at(186,68071,68342)"} true; + $t1 := $t0->$maximum; + $t2 := $t0->$largest_property_version; + $t3 := $t0->$supply; + $t4 := $t0->$uri; + $t5 := $t0->$royalty; + $t6 := $t0->$name; + $t7 := $t0->$description; + $t8 := $t0->$default_properties; + $t9 := $t0->$mutability_config; + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1679:32+1 + assume {:print "$at(186,68330,68331)"} true; + + // drop($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1678:33+1 + assume {:print "$at(186,68296,68297)"} true; + + // drop($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1677:26+1 + assume {:print "$at(186,68261,68262)"} true; + + // drop($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1676:19+1 + assume {:print "$at(186,68233,68234)"} true; + + // drop($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1675:22+1 + assume {:print "$at(186,68212,68213)"} true; + + // drop($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1674:18+1 + assume {:print "$at(186,68188,68189)"} true; + + // drop($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1673:21+1 + assume {:print "$at(186,68168,68169)"} true; + + // drop($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1672:39+1 + assume {:print "$at(186,68145,68146)"} true; + + // drop($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1671:22+1 + assume {:print "$at(186,68104,68105)"} true; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1681:5+1 + assume {:print "$at(186,68361,68362)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1681:5+1 + assume {:print "$at(186,68361,68362)"} true; + assert {:msg "assert_failed(186,68361,68362): function does not abort under this condition"} + !false; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1681:5+1 + return; + +} + +// fun token::direct_deposit [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+978 +procedure {:inline 1} $1_token_direct_deposit(_$t0: int, _$t1: $1_token_Token) returns () +{ + // declare local variables + var $t2: $Mutation ($1_token_TokenStore); + var $t3: $1_token_TokenId; + var $t4: int; + var $t5: $1_token_TokenStore; + var $t6: $1_token_Token; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $Mutation ($1_token_TokenStore); + var $t15: bool; + var $t16: $1_token_TokenId; + var $t17: int; + var $t18: $1_token_Deposit; + var $t19: $Mutation ($1_event_EventHandle'$1_token_DepositEvent'); + var $t20: $1_token_TokenId; + var $t21: int; + var $t22: $1_token_DepositEvent; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: Table int ($1_token_Token); + var $t27: $1_token_TokenId; + var $t28: bool; + var $t29: bool; + var $t30: $Mutation (Table int ($1_token_Token)); + var $t31: $1_token_TokenId; + var $t32: $Mutation (Table int ($1_token_Token)); + var $t33: $1_token_TokenId; + var $t34: $Mutation ($1_token_Token); + var $t0: int; + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // assume Identical($t3, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t3 == $t1->$id); + + // assume Identical($t4, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t4 == $t1->$amount); + + // assume Identical($t5, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t0)); + + // assume Identical($t6, table::spec_get(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t6 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // assume Identical($t7, table::spec_contains(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t7 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$at(186,70821,70822)"} true; + assume {:print "$track_local(113,22,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$track_local(113,22,1):", $t1} $t1 == $t1; + + // $t8 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:17+12 + assume {:print "$at(186,70915,70927)"} true; + $t8 := $t1->$amount; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:32+1 + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := >($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:30+1 + call $t10 := $Gt($t8, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + assume {:print "$at(186,70907,70989)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:59+30 +L0: + + // $t11 := 33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:59+30 + assume {:print "$at(186,70957,70987)"} true; + $t11 := 33; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:35+55 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(186,70933,70988)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + assume {:print "$at(186,70907,70989)"} true; + assume {:print "$track_abort(113,22):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + $t13 := $t12; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:57+12 + assume {:print "$at(186,71047,71059)"} true; +L2: + + // $t14 := borrow_global($t0) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:27+17 + assume {:print "$at(186,71017,71034)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,71017,71034)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[token_store]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t14); + assume {:print "$track_local(113,22,2):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t15 := features::module_event_migration_enabled() on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1752:13+47 + assume {:print "$at(186,71075,71122)"} true; + call $t15 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,71075,71122)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1752:9+137 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:39+5 + assume {:print "$at(186,71164,71169)"} true; +L4: + + // $t16 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:39+8 + assume {:print "$at(186,71164,71172)"} true; + $t16 := $t1->$id; + + // $t17 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:57+12 + $t17 := $t1->$amount; + + // $t18 := pack token::Deposit($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:25+46 + $t18 := $1_token_Deposit($t16, $t17); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:13+59 + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:13+59 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1756:18+11 + assume {:print "$at(186,71268,71279)"} true; +L3: + + // $t19 := borrow_field.deposit_events($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1756:13+31 + assume {:print "$at(186,71263,71294)"} true; + $t19 := $ChildMutation($t14, 2, $Dereference($t14)->$deposit_events); + + // $t20 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:32+8 + assume {:print "$at(186,71327,71335)"} true; + $t20 := $t1->$id; + + // $t21 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:50+12 + $t21 := $t1->$amount; + + // $t22 := pack token::DepositEvent($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:13+51 + $t22 := $1_token_DepositEvent($t20, $t21); + + // opaque begin: event::emit_event($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + assume {:print "$at(186,71218,71370)"} true; + + // opaque end: event::emit_event($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + + // write_back[Reference($t14).deposit_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_deposit_events($Dereference($t14), $Dereference($t19))); + + // $t23 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1761:13+6 + assume {:print "$at(186,71402,71408)"} true; + $t23 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // if ($t23) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + if ($t23) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 +L5: + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + + // $t24 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1762:30+26 + assume {:print "$at(186,71465,71491)"} true; + $t24 := 11; + assume $IsValid'u64'($t24); + + // $t25 := error::not_found($t24) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1762:13+44 + call $t25 := $1_error_not_found($t24); + if ($abort_flag) { + assume {:print "$at(186,71448,71492)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + assume {:print "$track_abort(113,22):", $t25} $t25 == $t25; + + // $t13 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + $t13 := $t25; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + goto L12; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:31+11 + assume {:print "$at(186,71536,71547)"} true; +L7: + + // $t26 := get_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:30+19 + assume {:print "$at(186,71535,71554)"} true; + $t26 := $Dereference($t14)->$tokens; + + // $t27 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:51+8 + $t27 := $t1->$id; + + // $t28 := table::contains($t26, $t27) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:14+46 + call $t28 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t26, $t27); + if ($abort_flag) { + assume {:print "$at(186,71519,71565)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // $t29 := !($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:13+1 + call $t29 := $Not($t28); + + // if ($t29) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:9+278 + if ($t29) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:29+11 + assume {:print "$at(186,71597,71608)"} true; +L9: + + // $t30 := borrow_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:24+23 + assume {:print "$at(186,71592,71615)"} true; + $t30 := $ChildMutation($t14, 0, $Dereference($t14)->$tokens); + + // $t31 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:49+8 + $t31 := $t1->$id; + + // table::add($t30, $t31, $t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + call $t30 := $1_table_add'$1_token_TokenId_$1_token_Token'($t30, $t31, $t1); + if ($abort_flag) { + assume {:print "$at(186,71581,71633)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // write_back[Reference($t14).tokens (table::Table)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_tokens($Dereference($t14), $Dereference($t30))); + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:65+1 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:58+11 + assume {:print "$at(186,71709,71720)"} true; +L8: + + // $t32 := borrow_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:53+23 + assume {:print "$at(186,71704,71727)"} true; + $t32 := $ChildMutation($t14, 0, $Dereference($t14)->$tokens); + + // $t33 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:78+8 + $t33 := $t1->$id; + + // $t34 := table::borrow_mut($t32, $t33) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:35+52 + call $t34,$t32 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t32, $t33); + if ($abort_flag) { + assume {:print "$at(186,71686,71738)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // token::merge($t34, $t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + assume {:print "$at(186,71752,71781)"} true; + call $t34 := $1_token_merge($t34, $t1); + if ($abort_flag) { + assume {:print "$at(186,71752,71781)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // write_back[Reference($t32)[]]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $t32 := $UpdateMutation($t32, UpdateTable($Dereference($t32), ReadVec($t34->p, LenVec($t32->p)), $Dereference($t34))); + + // write_back[Reference($t14).tokens (table::Table)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_tokens($Dereference($t14), $Dereference($t32))); + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1770:10+1 + assume {:print "$at(186,71792,71793)"} true; +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 + assume {:print "$at(186,71798,71799)"} true; +L11: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 + assume {:print "$at(186,71798,71799)"} true; + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 +L12: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 + assume {:print "$at(186,71798,71799)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun token::direct_deposit [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+978 +procedure {:timeLimit 80} $1_token_direct_deposit$verify(_$t0: int, _$t1: $1_token_Token) returns () +{ + // declare local variables + var $t2: $Mutation ($1_token_TokenStore); + var $t3: $1_token_TokenId; + var $t4: int; + var $t5: $1_token_TokenStore; + var $t6: $1_token_Token; + var $t7: bool; + var $t8: int; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: $Mutation ($1_token_TokenStore); + var $t15: bool; + var $t16: $1_token_TokenId; + var $t17: int; + var $t18: $1_token_Deposit; + var $t19: $Mutation ($1_event_EventHandle'$1_token_DepositEvent'); + var $t20: $1_token_TokenId; + var $t21: int; + var $t22: $1_token_DepositEvent; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: Table int ($1_token_Token); + var $t27: $1_token_TokenId; + var $t28: bool; + var $t29: bool; + var $t30: $Mutation (Table int ($1_token_Token)); + var $t31: $1_token_TokenId; + var $t32: $Mutation (Table int ($1_token_Token)); + var $t33: $1_token_TokenId; + var $t34: $Mutation ($1_token_Token); + var $t0: int; + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $1_token_TokenStore_$memory#855: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$at(186,70821,70822)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume $IsValid'$1_token_Token'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t3, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t3 == $t1->$id); + + // assume Identical($t4, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t4 == $t1->$amount); + + // assume Identical($t5, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t0)); + + // assume Identical($t6, table::spec_get(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t6 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // assume Identical($t7, table::spec_contains(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t7 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // @855 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$at(186,70821,70822)"} true; + $1_token_TokenStore_$memory#855 := $1_token_TokenStore_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$track_local(113,22,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1748:5+1 + assume {:print "$track_local(113,22,1):", $t1} $t1 == $t1; + + // $t8 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:17+12 + assume {:print "$at(186,70915,70927)"} true; + $t8 := $t1->$amount; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:32+1 + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := >($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:30+1 + call $t10 := $Gt($t8, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + assume {:print "$at(186,70907,70989)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:59+30 +L0: + + // $t11 := 33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:59+30 + assume {:print "$at(186,70957,70987)"} true; + $t11 := 33; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:35+55 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(186,70933,70988)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + assume {:print "$at(186,70907,70989)"} true; + assume {:print "$track_abort(113,22):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + $t13 := $t12; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1749:9+82 + goto L12; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:57+12 + assume {:print "$at(186,71047,71059)"} true; +L2: + + // $t14 := borrow_global($t0) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:27+17 + assume {:print "$at(186,71017,71034)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t14 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,71017,71034)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_local[token_store]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1750:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t14); + assume {:print "$track_local(113,22,2):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t15 := features::module_event_migration_enabled() on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1752:13+47 + assume {:print "$at(186,71075,71122)"} true; + call $t15 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,71075,71122)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1752:9+137 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:39+5 + assume {:print "$at(186,71164,71169)"} true; +L4: + + // $t16 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:39+8 + assume {:print "$at(186,71164,71172)"} true; + $t16 := $t1->$id; + + // $t17 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:57+12 + $t17 := $t1->$amount; + + // $t18 := pack token::Deposit($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:25+46 + $t18 := $1_token_Deposit($t16, $t17); + + // opaque begin: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:13+59 + + // opaque end: event::emit($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1753:13+59 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1756:18+11 + assume {:print "$at(186,71268,71279)"} true; +L3: + + // $t19 := borrow_field.deposit_events($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1756:13+31 + assume {:print "$at(186,71263,71294)"} true; + $t19 := $ChildMutation($t14, 2, $Dereference($t14)->$deposit_events); + + // $t20 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:32+8 + assume {:print "$at(186,71327,71335)"} true; + $t20 := $t1->$id; + + // $t21 := get_field.amount($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:50+12 + $t21 := $t1->$amount; + + // $t22 := pack token::DepositEvent($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1757:13+51 + $t22 := $1_token_DepositEvent($t20, $t21); + + // opaque begin: event::emit_event($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + assume {:print "$at(186,71218,71370)"} true; + + // opaque end: event::emit_event($t19, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + + // write_back[Reference($t14).deposit_events (event::EventHandle)]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1755:9+152 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_deposit_events($Dereference($t14), $Dereference($t19))); + + // $t23 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1761:13+6 + assume {:print "$at(186,71402,71408)"} true; + $t23 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // if ($t23) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + if ($t23) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 +L5: + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + + // $t24 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1762:30+26 + assume {:print "$at(186,71465,71491)"} true; + $t24 := 11; + assume $IsValid'u64'($t24); + + // $t25 := error::not_found($t24) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1762:13+44 + call $t25 := $1_error_not_found($t24); + if ($abort_flag) { + assume {:print "$at(186,71448,71492)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + assume {:print "$at(186,71381,71503)"} true; + assume {:print "$track_abort(113,22):", $t25} $t25 == $t25; + + // $t13 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + $t13 := $t25; + + // goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1760:9+122 + goto L12; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:31+11 + assume {:print "$at(186,71536,71547)"} true; +L7: + + // $t26 := get_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:30+19 + assume {:print "$at(186,71535,71554)"} true; + $t26 := $Dereference($t14)->$tokens; + + // $t27 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:51+8 + $t27 := $t1->$id; + + // $t28 := table::contains($t26, $t27) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:14+46 + call $t28 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t26, $t27); + if ($abort_flag) { + assume {:print "$at(186,71519,71565)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // $t29 := !($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:13+1 + call $t29 := $Not($t28); + + // if ($t29) goto L9 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1765:9+278 + if ($t29) { goto L9; } else { goto L8; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:29+11 + assume {:print "$at(186,71597,71608)"} true; +L9: + + // $t30 := borrow_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:24+23 + assume {:print "$at(186,71592,71615)"} true; + $t30 := $ChildMutation($t14, 0, $Dereference($t14)->$tokens); + + // $t31 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:49+8 + $t31 := $t1->$id; + + // table::add($t30, $t31, $t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + call $t30 := $1_table_add'$1_token_TokenId_$1_token_Token'($t30, $t31, $t1); + if ($abort_flag) { + assume {:print "$at(186,71581,71633)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // write_back[Reference($t14).tokens (table::Table)]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_tokens($Dereference($t14), $Dereference($t30))); + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:13+52 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1766:65+1 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:58+11 + assume {:print "$at(186,71709,71720)"} true; +L8: + + // $t32 := borrow_field.tokens($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:53+23 + assume {:print "$at(186,71704,71727)"} true; + $t32 := $ChildMutation($t14, 0, $Dereference($t14)->$tokens); + + // $t33 := get_field.id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:78+8 + $t33 := $t1->$id; + + // $t34 := table::borrow_mut($t32, $t33) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1768:35+52 + call $t34,$t32 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t32, $t33); + if ($abort_flag) { + assume {:print "$at(186,71686,71738)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // token::merge($t34, $t1) on_abort goto L12 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + assume {:print "$at(186,71752,71781)"} true; + call $t34 := $1_token_merge($t34, $t1); + if ($abort_flag) { + assume {:print "$at(186,71752,71781)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,22):", $t13} $t13 == $t13; + goto L12; + } + + // write_back[Reference($t32)[]]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $t32 := $UpdateMutation($t32, UpdateTable($Dereference($t32), ReadVec($t34->p, LenVec($t32->p)), $Dereference($t34))); + + // write_back[Reference($t14).tokens (table::Table)]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $t14 := $UpdateMutation($t14, $Update'$1_token_TokenStore'_tokens($Dereference($t14), $Dereference($t32))); + + // write_back[token::TokenStore@]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1769:13+29 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t14), + $Dereference($t14)); + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1770:10+1 + assume {:print "$at(186,71792,71793)"} true; +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 + assume {:print "$at(186,71798,71799)"} true; +L11: + + // assert Not(Le($t4, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:909:9+28 + assume {:print "$at(187,38303,38331)"} true; + assert {:msg "assert_failed(187,38303,38331): function does not abort under this condition"} + !($t4 <= 0); + + // assert Not(Not(exists[@855]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:910:9+44 + assume {:print "$at(187,38340,38384)"} true; + assert {:msg "assert_failed(187,38340,38384): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#855, $t0); + + // assert Not(And($t7, Neq(select token::Token.id($t6), $t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:911:9+46 + assume {:print "$at(187,38393,38439)"} true; + assert {:msg "assert_failed(187,38393,38439): function does not abort under this condition"} + !($t7 && !$IsEqual'$1_token_TokenId'($t6->$id, $t3)); + + // assert Not(And($t7, Gt(Add(select token::Token.amount($t6), $t4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + assume {:print "$at(187,38448,38511)"} true; + assert {:msg "assert_failed(187,38448,38511): function does not abort under this condition"} + !($t7 && (($t6->$amount + $t4) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + return; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1771:5+1 + assume {:print "$at(186,71798,71799)"} true; +L12: + + // assert Or(Or(Or(Le($t4, 0), Not(exists[@855]($t0))), And($t7, Neq(select token::Token.id($t6), $t3))), And($t7, Gt(Add(select token::Token.amount($t6), $t4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:896:5+177 + assume {:print "$at(187,37786,37963)"} true; + assert {:msg "assert_failed(187,37786,37963): abort not covered by any of the `aborts_if` clauses"} + (((($t4 <= 0) || !$ResourceExists($1_token_TokenStore_$memory#855, $t0)) || ($t7 && !$IsEqual'$1_token_TokenId'($t6->$id, $t3))) || ($t7 && (($t6->$amount + $t4) > 18446744073709551615))); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:896:5+177 + $abort_code := $t13; + $abort_flag := true; + return; + +} + +// fun token::direct_deposit_with_opt_in [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+328 +procedure {:timeLimit 80} $1_token_direct_deposit_with_opt_in$verify(_$t0: int, _$t1: $1_token_Token) returns () +{ + // declare local variables + var $t2: bool; + var $t3: $1_token_TokenId; + var $t4: int; + var $t5: $1_token_TokenStore; + var $t6: $1_token_Token; + var $t7: bool; + var $t8: $1_token_TokenStore; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $1_token_TokenId; + var $t14: int; + var $t15: $1_token_TokenStore; + var $t16: $1_token_Token; + var $t17: bool; + var $t0: int; + var $t1: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'address': int; + var $1_token_TokenStore_$memory#882: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume {:print "$at(186,38908,38909)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume $IsValid'$1_token_Token'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t2, select token::TokenStore.direct_transfer(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:420:9+71 + assume {:print "$at(187,18535,18606)"} true; + assume ($t2 == $ResourceValue($1_token_TokenStore_$memory, $t0)->$direct_transfer); + + // assume Identical($t3, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:423:9+24 + assume {:print "$at(187,18704,18728)"} true; + assume ($t3 == $t1->$id); + + // assume Identical($t4, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:424:9+32 + assume {:print "$at(187,18737,18769)"} true; + assume ($t4 == $t1->$amount); + + // assume Identical($t5, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t0)); + + // assume Identical($t6, table::spec_get(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t6 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // assume Identical($t7, table::spec_contains(select token::TokenStore.tokens($t5), $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t7 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t5->$tokens, $t3)); + + // @882 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume {:print "$at(186,38908,38909)"} true; + $1_token_TokenStore_$memory#882 := $1_token_TokenStore_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume {:print "$track_local(113,23,0):", $t0} $t0 == $t0; + + // trace_local[token]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:962:5+1 + assume {:print "$track_local(113,23,1):", $t1} $t1 == $t1; + + // $t8 := get_global($t0) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:963:31+13 + assume {:print "$at(186,39035,39048)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_TokenStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,39035,39048)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,23):", $t9} $t9 == $t9; + goto L4; + } + + // $t10 := get_field.direct_transfer($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:963:31+55 + $t10 := $t8->$direct_transfer; + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 + assume {:print "$at(186,39100,39184)"} true; + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 + assume {:print "$at(186,39100,39184)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:59+32 +L0: + + // $t11 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:59+32 + assume {:print "$at(186,39150,39182)"} true; + $t11 := 16; + assume $IsValid'u64'($t11); + + // $t12 := error::permission_denied($t11) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:34+58 + call $t12 := $1_error_permission_denied($t11); + if ($abort_flag) { + assume {:print "$at(186,39125,39183)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,23):", $t9} $t9 == $t9; + goto L4; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 + assume {:print "$at(186,39100,39184)"} true; + assume {:print "$track_abort(113,23):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 + $t9 := $t12; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:964:9+84 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:965:24+12 + assume {:print "$at(186,39209,39221)"} true; +L2: + + // assume Identical($t13, select token::Token.id($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t13 == $t1->$id); + + // assume Identical($t14, select token::Token.amount($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t14 == $t1->$amount); + + // assume Identical($t15, global($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t15 == $ResourceValue($1_token_TokenStore_$memory, $t0)); + + // assume Identical($t16, table::spec_get(select token::TokenStore.tokens($t15), $t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t16 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t15->$tokens, $t13)); + + // assume Identical($t17, table::spec_contains(select token::TokenStore.tokens($t15), $t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t17 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t15->$tokens, $t13)); + + // token::direct_deposit($t0, $t1) on_abort goto L4 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:965:9+35 + assume {:print "$at(186,39194,39229)"} true; + call $1_token_direct_deposit($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,39194,39229)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,23):", $t9} $t9 == $t9; + goto L4; + } + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:966:5+1 + assume {:print "$at(186,39235,39236)"} true; +L3: + + // assert Not(Not(exists[@882]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:421:9+44 + assume {:print "$at(187,18615,18659)"} true; + assert {:msg "assert_failed(187,18615,18659): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#882, $t0); + + // assert Not(Not($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:422:9+27 + assume {:print "$at(187,18668,18695)"} true; + assert {:msg "assert_failed(187,18668,18695): function does not abort under this condition"} + !!$t2; + + // assert Not(Le($t4, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:909:9+28 + assume {:print "$at(187,38303,38331)"} true; + assert {:msg "assert_failed(187,38303,38331): function does not abort under this condition"} + !($t4 <= 0); + + // assert Not(Not(exists[@882]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:910:9+44 + assume {:print "$at(187,38340,38384)"} true; + assert {:msg "assert_failed(187,38340,38384): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#882, $t0); + + // assert Not(And($t7, Neq(select token::Token.id($t6), $t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:911:9+46 + assume {:print "$at(187,38393,38439)"} true; + assert {:msg "assert_failed(187,38393,38439): function does not abort under this condition"} + !($t7 && !$IsEqual'$1_token_TokenId'($t6->$id, $t3)); + + // assert Not(And($t7, Gt(Add(select token::Token.amount($t6), $t4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + assume {:print "$at(187,38448,38511)"} true; + assert {:msg "assert_failed(187,38448,38511): function does not abort under this condition"} + !($t7 && (($t6->$amount + $t4) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:966:5+1 + assume {:print "$at(186,39235,39236)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Not(exists[@882]($t0)), Not($t2)), Le($t4, 0)), Not(exists[@882]($t0))), And($t7, Neq(select token::Token.id($t6), $t3))), And($t7, Gt(Add(select token::Token.amount($t6), $t4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:419:5+358 + assume {:print "$at(187,18456,18814)"} true; + assert {:msg "assert_failed(187,18456,18814): abort not covered by any of the `aborts_if` clauses"} + (((((!$ResourceExists($1_token_TokenStore_$memory#882, $t0) || !$t2) || ($t4 <= 0)) || !$ResourceExists($1_token_TokenStore_$memory#882, $t0)) || ($t7 && !$IsEqual'$1_token_TokenId'($t6->$id, $t3))) || ($t7 && (($t6->$amount + $t4) > 18446744073709551615))); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:419:5+358 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::direct_transfer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:968:5+263 +procedure {:inline 1} $1_token_direct_transfer(_$t0: $signer, _$t1: $signer, _$t2: $1_token_TokenId, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_Token; + var $t5: int; + var $t6: Table int ($1_token_Token); + var $t7: $1_token_Token; + var $t8: int; + var $t9: int; + var $t10: $1_token_TokenId; + var $t11: int; + var $t12: int; + var $t13: $1_account_Account; + var $t14: $1_token_TokenStore; + var $t15: $1_token_Token; + var $t16: bool; + var $t0: $signer; + var $t1: $signer; + var $t2: $1_token_TokenId; + var $t3: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // bytecode translation starts here + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:968:5+1 + assume {:print "$at(186,39242,39243)"} true; + assume {:print "$track_local(113,24,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:968:5+1 + assume {:print "$track_local(113,24,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:968:5+1 + assume {:print "$track_local(113,24,2):", $t2} $t2 == $t2; + + // trace_local[amount]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:968:5+1 + assume {:print "$track_local(113,24,3):", $t3} $t3 == $t3; + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, select token::TokenStore.tokens(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t6 == $ResourceValue($1_token_TokenStore_$memory, $t5)->$tokens); + + // $t7 := token::withdraw_token($t0, $t2, $t3) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:974:21+40 + assume {:print "$at(186,39418,39458)"} true; + call $t7 := $1_token_withdraw_token($t0, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(186,39418,39458)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,24):", $t8} $t8 == $t8; + goto L2; + } + + // trace_local[token]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:974:13+5 + assume {:print "$track_local(113,24,4):", $t7} $t7 == $t7; + + // assume Identical($t9, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t9 == $1_signer_$address_of($t1)); + + // assume Identical($t10, select token::Token.id($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t10 == $t7->$id); + + // assume Identical($t11, select token::Token.amount($t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t11 == $t7->$amount); + + // assume Identical($t12, signer::$address_of($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t12 == $1_signer_$address_of($t1)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // assume Identical($t14, global($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t14 == $ResourceValue($1_token_TokenStore_$memory, $t9)); + + // assume Identical($t15, table::spec_get(select token::TokenStore.tokens($t14), $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t15 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t14->$tokens, $t10)); + + // assume Identical($t16, table::spec_contains(select token::TokenStore.tokens($t14), $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t16 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t14->$tokens, $t10)); + + // token::deposit_token($t1, $t7) on_abort goto L2 with $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:975:9+30 + assume {:print "$at(186,39468,39498)"} true; + call $1_token_deposit_token($t1, $t7); + if ($abort_flag) { + assume {:print "$at(186,39468,39498)"} true; + $t8 := $abort_code; + assume {:print "$track_abort(113,24):", $t8} $t8 == $t8; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:976:5+1 + assume {:print "$at(186,39504,39505)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:976:5+1 + assume {:print "$at(186,39504,39505)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:976:5+1 +L2: + + // abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:976:5+1 + assume {:print "$at(186,39504,39505)"} true; + $abort_code := $t8; + $abort_flag := true; + return; + +} + +// fun token::direct_transfer_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+422 +procedure {:timeLimit 80} $1_token_direct_transfer_script$verify(_$t0: $signer, _$t1: $signer, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: int, _$t6: int) returns () +{ + // declare local variables + var $t7: $1_token_TokenId; + var $t8: $1_token_TokenId; + var $t9: int; + var $t0: $signer; + var $t1: $signer; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: int; + var $t6: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$at(186,17722,17723)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'signer'($t1) && $1_signer_is_txn_signer($t1) && $1_signer_is_txn_signer_addr($t1->$addr); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'u64'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume $IsValid'u64'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,1):", $t1} $t1 == $t1; + + // trace_local[creators_address]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,2):", $t2} $t2 == $t2; + + // trace_local[collection]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,3):", $t3} $t3 == $t3; + + // trace_local[name]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,4):", $t4} $t4 == $t4; + + // trace_local[property_version]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,5):", $t5} $t5 == $t5; + + // trace_local[amount]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:524:5+1 + assume {:print "$track_local(113,25,6):", $t6} $t6 == $t6; + + // $t8 := token::create_token_id_raw($t2, $t3, $t4, $t5) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:533:24+73 + assume {:print "$at(186,18003,18076)"} true; + call $t8 := $1_token_create_token_id_raw($t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,18003,18076)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,25):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[token_id]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:533:13+8 + assume {:print "$track_local(113,25,7):", $t8} $t8 == $t8; + + // token::direct_transfer($t0, $t1, $t8, $t6) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:534:9+51 + assume {:print "$at(186,18086,18137)"} true; + call $1_token_direct_transfer($t0, $t1, $t8, $t6); + if ($abort_flag) { + assume {:print "$at(186,18086,18137)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,25):", $t9} $t9 == $t9; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:535:5+1 + assume {:print "$at(186,18143,18144)"} true; +L1: + + // assert Not(Gt(Len(select string::String.bytes($t3)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t4)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t4->$bytes) > 128); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:535:5+1 + assume {:print "$at(186,18143,18144)"} true; +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:535:5+1 + assume {:print "$at(186,18143,18144)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_collection_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+365 +procedure {:timeLimit 80} $1_token_get_collection_description$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: Table int ($1_token_CollectionData); + var $t4: int; + var $t5: $Mutation ($1_token_Collections); + var $t6: $Mutation (Table int ($1_token_CollectionData)); + var $t7: $Mutation ($1_token_CollectionData); + var $t8: $1_string_String; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $1_token_Collections_$memory#883: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume {:print "$at(186,51929,51930)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t2, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @883 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume {:print "$at(186,51929,51930)"} true; + $1_token_Collections_$memory#883 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume {:print "$track_local(113,26,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1304:5+1 + assume {:print "$track_local(113,26,1):", $t1} $t1 == $t1; + + // assume Identical($t3, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // token::assert_collection_exists($t0, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1305:9+58 + assume {:print "$at(186,52057,52115)"} true; + call $1_token_assert_collection_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,52057,52115)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,26):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := borrow_global($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1306:54+17 + assume {:print "$at(186,52170,52187)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,52170,52187)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,26):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.collection_data($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1306:49+68 + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$collection_data); + + // $t7 := table::borrow_mut($t6, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1306:31+104 + call $t7,$t6 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(186,52147,52251)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,26):", $t4} $t4 == $t4; + goto L2; + } + + // $t8 := get_field.description($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1307:9+27 + assume {:print "$at(186,52261,52288)"} true; + $t8 := $Dereference($t7)->$description; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1307:9+27 + assume {:print "$track_return(113,26,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1308:5+1 + assume {:print "$at(186,52293,52294)"} true; +L1: + + // assert Not(Not(exists[@883]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#883, $t0); + + // assert Not(Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1308:5+1 + assume {:print "$at(186,52293,52294)"} true; +L2: + + // assert Or(Not(exists[@883]($t0)), Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:633:5+146 + assume {:print "$at(187,26854,27000)"} true; + assert {:msg "assert_failed(187,26854,27000): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#883, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:633:5+146 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::get_collection_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+354 +procedure {:timeLimit 80} $1_token_get_collection_maximum$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: int) +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: Table int ($1_token_CollectionData); + var $t4: int; + var $t5: $Mutation ($1_token_Collections); + var $t6: $Mutation (Table int ($1_token_CollectionData)); + var $t7: $Mutation ($1_token_CollectionData); + var $t8: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_token_Collections_$memory#884: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume {:print "$at(186,52655,52656)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t2, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @884 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume {:print "$at(186,52655,52656)"} true; + $1_token_Collections_$memory#884 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume {:print "$track_local(113,27,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1316:5+1 + assume {:print "$track_local(113,27,1):", $t1} $t1 == $t1; + + // assume Identical($t3, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // token::assert_collection_exists($t0, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1317:9+58 + assume {:print "$at(186,52776,52834)"} true; + call $1_token_assert_collection_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,52776,52834)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := borrow_global($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1318:54+17 + assume {:print "$at(186,52889,52906)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,52889,52906)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.collection_data($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1318:49+68 + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$collection_data); + + // $t7 := table::borrow_mut($t6, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1318:31+104 + call $t7,$t6 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(186,52866,52970)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,27):", $t4} $t4 == $t4; + goto L2; + } + + // $t8 := get_field.maximum($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1319:9+23 + assume {:print "$at(186,52980,53003)"} true; + $t8 := $Dereference($t7)->$maximum; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1319:9+23 + assume {:print "$track_return(113,27,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1320:5+1 + assume {:print "$at(186,53008,53009)"} true; +L1: + + // assert Not(Not(exists[@884]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#884, $t0); + + // assert Not(Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1320:5+1 + assume {:print "$at(186,53008,53009)"} true; +L2: + + // assert Or(Not(exists[@884]($t0)), Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:641:5+139 + assume {:print "$at(187,27150,27289)"} true; + assert {:msg "assert_failed(187,27150,27289): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#884, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:641:5+139 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::get_collection_mutability_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+541 +procedure {:timeLimit 80} $1_token_get_collection_mutability_config$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: $1_token_CollectionMutabilityConfig) +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: Table int ($1_token_CollectionData); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_token_Collections; + var $t9: Table int ($1_token_CollectionData); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $1_token_CollectionData; + var $t14: $1_token_CollectionMutabilityConfig; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_string_String_$1_token_CollectionData'': Table int ($1_token_CollectionData); + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'address': int; + var $1_token_Collections_$memory#885: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume {:print "$at(186,66792,66793)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:858:9+71 + assume {:print "$at(187,36493,36564)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @885 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume {:print "$at(186,66792,66793)"} true; + $1_token_Collections_$memory#885 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume {:print "$track_local(113,28,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1642:5+1 + assume {:print "$track_local(113,28,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:17+6 + assume {:print "$at(186,66968,66974)"} true; + $t4 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 + assume {:print "$at(186,66960,67043)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:64+26 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:64+26 + assume {:print "$at(186,67015,67041)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:47+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(186,66998,67042)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,28):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 + assume {:print "$at(186,66960,67043)"} true; + assume {:print "$track_abort(113,28):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1646:9+83 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1647:63+7 + assume {:print "$at(186,67107,67114)"} true; +L2: + + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1647:36+13 + assume {:print "$at(186,67080,67093)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,67080,67093)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,28):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := get_field.collection_data($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1647:35+52 + $t9 := $t8->$collection_data; + + // trace_local[all_collection_data]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1647:13+19 + assume {:print "$track_local(113,28,2):", $t9} $t9 == $t9; + + // $t10 := table::contains($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:17+53 + assume {:print "$at(186,67149,67202)"} true; + call $t10 := $1_table_contains'$1_string_String_$1_token_CollectionData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,67149,67202)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,28):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t10) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 + assume {:print "$at(186,67141,67248)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 +L3: + + // $t11 := 2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:89+25 + assume {:print "$at(186,67221,67246)"} true; + $t11 := 2; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:72+43 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(186,67204,67247)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,28):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 + assume {:print "$at(186,67141,67248)"} true; + assume {:print "$track_abort(113,28):", $t12} $t12 == $t12; + + // $t7 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 + $t7 := $t12; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1648:9+107 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1649:23+19 + assume {:print "$at(186,67272,67291)"} true; +L5: + + // $t13 := table::borrow($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1649:9+51 + assume {:print "$at(186,67258,67309)"} true; + call $t13 := $1_table_borrow'$1_string_String_$1_token_CollectionData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,67258,67309)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,28):", $t7} $t7 == $t7; + goto L7; + } + + // $t14 := get_field.mutability_config($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1649:9+69 + $t14 := $t13->$mutability_config; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1649:9+69 + assume {:print "$track_return(113,28,0):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1650:5+1 + assume {:print "$at(186,67332,67333)"} true; +L6: + + // assert Not(Not(exists[@885]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:859:9+40 + assume {:print "$at(187,36573,36613)"} true; + assert {:msg "assert_failed(187,36573,36613): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#885, $t0); + + // assert Not(Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:860:9+70 + assume {:print "$at(187,36622,36692)"} true; + assert {:msg "assert_failed(187,36622,36692): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t3, $t1); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:860:9+70 + $ret0 := $t14; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1650:5+1 + assume {:print "$at(186,67332,67333)"} true; +L7: + + // assert Or(Not(exists[@885]($t0)), Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:854:5+346 + assume {:print "$at(187,36352,36698)"} true; + assert {:msg "assert_failed(187,36352,36698): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#885, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t3, $t1)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:854:5+346 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::get_collection_mutability_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1653:5+126 +procedure {:timeLimit 80} $1_token_get_collection_mutability_description$verify(_$t0: $1_token_CollectionMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_CollectionMutabilityConfig; + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1653:5+1 + assume {:print "$at(186,67431,67432)"} true; + assume $IsValid'$1_token_CollectionMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1653:5+1 + assume {:print "$track_local(113,29,0):", $t0} $t0 == $t0; + + // $t1 := get_field.description($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1654:9+18 + assume {:print "$at(186,67533,67551)"} true; + $t1 := $t0->$description; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1654:9+18 + assume {:print "$track_return(113,29,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1655:5+1 + assume {:print "$at(186,67556,67557)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1655:5+1 + assume {:print "$at(186,67556,67557)"} true; + assert {:msg "assert_failed(186,67556,67557): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1655:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_collection_mutability_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1662:5+118 +procedure {:timeLimit 80} $1_token_get_collection_mutability_maximum$verify(_$t0: $1_token_CollectionMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_CollectionMutabilityConfig; + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1662:5+1 + assume {:print "$at(186,67848,67849)"} true; + assume $IsValid'$1_token_CollectionMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1662:5+1 + assume {:print "$track_local(113,30,0):", $t0} $t0 == $t0; + + // $t1 := get_field.maximum($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1663:9+14 + assume {:print "$at(186,67946,67960)"} true; + $t1 := $t0->$maximum; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1663:9+14 + assume {:print "$track_return(113,30,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1664:5+1 + assume {:print "$at(186,67965,67966)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1664:5+1 + assume {:print "$at(186,67965,67966)"} true; + assert {:msg "assert_failed(186,67965,67966): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1664:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_collection_mutability_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1658:5+110 +procedure {:timeLimit 80} $1_token_get_collection_mutability_uri$verify(_$t0: $1_token_CollectionMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_CollectionMutabilityConfig; + var $temp_0'$1_token_CollectionMutabilityConfig': $1_token_CollectionMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1658:5+1 + assume {:print "$at(186,67647,67648)"} true; + assume $IsValid'$1_token_CollectionMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1658:5+1 + assume {:print "$track_local(113,31,0):", $t0} $t0 == $t0; + + // $t1 := get_field.uri($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1659:9+10 + assume {:print "$at(186,67741,67751)"} true; + $t1 := $t0->$uri; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1659:9+10 + assume {:print "$track_return(113,31,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1660:5+1 + assume {:print "$at(186,67756,67757)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1660:5+1 + assume {:print "$at(186,67756,67757)"} true; + assert {:msg "assert_failed(186,67756,67757): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1660:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_collection_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+476 +procedure {:timeLimit 80} $1_token_get_collection_supply$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: $1_option_Option'u64') +{ + // declare local variables + var $t2: $1_option_Option'u64'; + var $t3: $Mutation ($1_token_CollectionData); + var $t4: Table int ($1_token_CollectionData); + var $t5: Table int ($1_token_CollectionData); + var $t6: int; + var $t7: $Mutation ($1_token_Collections); + var $t8: $Mutation (Table int ($1_token_CollectionData)); + var $t9: $Mutation ($1_token_CollectionData); + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'address': int; + var $1_token_Collections_$memory#886: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume {:print "$at(186,51447,51448)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t4, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @886 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume {:print "$at(186,51447,51448)"} true; + $1_token_Collections_$memory#886 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume {:print "$track_local(113,32,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1293:5+1 + assume {:print "$track_local(113,32,1):", $t1} $t1 == $t1; + + // assume Identical($t5, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t5 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // token::assert_collection_exists($t0, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1294:9+58 + assume {:print "$at(186,51575,51633)"} true; + call $1_token_assert_collection_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,51575,51633)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,32):", $t6} $t6 == $t6; + goto L4; + } + + // $t7 := borrow_global($t0) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1295:54+17 + assume {:print "$at(186,51688,51705)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t7 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,51688,51705)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,32):", $t6} $t6 == $t6; + goto L4; + } + + // $t8 := borrow_field.collection_data($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1295:49+68 + $t8 := $ChildMutation($t7, 0, $Dereference($t7)->$collection_data); + + // $t9 := table::borrow_mut($t8, $t1) on_abort goto L4 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1295:31+104 + call $t9,$t8 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t8, $t1); + if ($abort_flag) { + assume {:print "$at(186,51665,51769)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,32):", $t6} $t6 == $t6; + goto L4; + } + + // trace_local[collection_data]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1295:13+15 + $temp_0'$1_token_CollectionData' := $Dereference($t9); + assume {:print "$track_local(113,32,3):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t10 := get_field.maximum($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:13+23 + assume {:print "$at(186,51784,51807)"} true; + $t10 := $Dereference($t9)->$maximum; + + // $t11 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:39+1 + $t11 := 0; + assume $IsValid'u64'($t11); + + // $t12 := >($t10, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:37+1 + call $t12 := $Gt($t10, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:26+15 + assume {:print "$at(186,51840,51855)"} true; +L1: + + // $t13 := get_field.supply($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:26+22 + assume {:print "$at(186,51840,51862)"} true; + $t13 := $Dereference($t9)->$supply; + + // $t2 := opaque begin: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:13+36 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:13+36 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t13)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:13+36 + assume $IsEqual'$1_option_Option'u64''($t2, $1_option_spec_some'u64'($t13)); + + // $t2 := opaque end: option::some($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1298:13+36 + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 + assume {:print "$at(186,51780,51917)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 +L0: + + // drop($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 + assume {:print "$at(186,51780,51917)"} true; + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1300:13+14 + assume {:print "$at(186,51893,51907)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1300:13+14 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1300:13+14 + assume $IsEqual'$1_option_Option'u64''($t2, $1_option_spec_none'u64'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1300:13+14 + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 + assume {:print "$at(186,51780,51917)"} true; +L2: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1297:9+137 + assume {:print "$at(186,51780,51917)"} true; + assume {:print "$track_return(113,32,0):", $t2} $t2 == $t2; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1302:5+1 + assume {:print "$at(186,51922,51923)"} true; +L3: + + // assert Not(Not(exists[@886]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#886, $t0); + + // assert Not(Not(table::spec_contains[]($t4, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t4, $t1); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + $ret0 := $t2; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1302:5+1 + assume {:print "$at(186,51922,51923)"} true; +L4: + + // assert Or(Not(exists[@886]($t0)), Not(table::spec_contains[]($t4, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:629:5+146 + assume {:print "$at(187,26702,26848)"} true; + assert {:msg "assert_failed(187,26702,26848): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#886, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t4, $t1)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:629:5+146 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::get_collection_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+349 +procedure {:timeLimit 80} $1_token_get_collection_uri$verify(_$t0: int, _$t1: $1_string_String) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: Table int ($1_token_CollectionData); + var $t3: Table int ($1_token_CollectionData); + var $t4: int; + var $t5: $Mutation ($1_token_Collections); + var $t6: $Mutation (Table int ($1_token_CollectionData)); + var $t7: $Mutation ($1_token_CollectionData); + var $t8: $1_string_String; + var $t0: int; + var $t1: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'address': int; + var $1_token_Collections_$memory#887: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume {:print "$at(186,52300,52301)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t2, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // @887 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume {:print "$at(186,52300,52301)"} true; + $1_token_Collections_$memory#887 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume {:print "$track_local(113,33,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1310:5+1 + assume {:print "$track_local(113,33,1):", $t1} $t1 == $t1; + + // assume Identical($t3, select token::Collections.collection_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$collection_data); + + // token::assert_collection_exists($t0, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1311:9+58 + assume {:print "$at(186,52420,52478)"} true; + call $1_token_assert_collection_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,52420,52478)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,33):", $t4} $t4 == $t4; + goto L2; + } + + // $t5 := borrow_global($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1312:54+17 + assume {:print "$at(186,52533,52550)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,52533,52550)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,33):", $t4} $t4 == $t4; + goto L2; + } + + // $t6 := borrow_field.collection_data($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1312:49+68 + $t6 := $ChildMutation($t5, 0, $Dereference($t5)->$collection_data); + + // $t7 := table::borrow_mut($t6, $t1) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1312:31+104 + call $t7,$t6 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t6, $t1); + if ($abort_flag) { + assume {:print "$at(186,52510,52614)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,33):", $t4} $t4 == $t4; + goto L2; + } + + // $t8 := get_field.uri($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1313:9+19 + assume {:print "$at(186,52624,52643)"} true; + $t8 := $Dereference($t7)->$uri; + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1313:9+19 + assume {:print "$track_return(113,33,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1314:5+1 + assume {:print "$at(186,52648,52649)"} true; +L1: + + // assert Not(Not(exists[@887]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#887, $t0); + + // assert Not(Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1314:5+1 + assume {:print "$at(186,52648,52649)"} true; +L2: + + // assert Or(Not(exists[@887]($t0)), Not(table::spec_contains[]($t2, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:637:5+138 + assume {:print "$at(187,27006,27144)"} true; + assert {:msg "assert_failed(187,27006,27144): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#887, $t0) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t2, $t1)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:637:5+138 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::get_direct_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+225 +procedure {:timeLimit 80} $1_token_get_direct_transfer$verify(_$t0: int) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t2: bool; + var $t3: bool; + var $t4: bool; + var $t5: $1_token_TokenStore; + var $t6: int; + var $t7: bool; + var $t0: int; + var $temp_0'address': int; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+1 + assume {:print "$at(186,54433,54434)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // trace_local[receiver]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+1 + assume {:print "$track_local(113,34,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1350:14+6 + assume {:print "$at(186,54524,54530)"} true; + $t1 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // $t2 := !($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1350:13+1 + call $t2 := $Not($t1); + + // if ($t2) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1350:9+71 + if ($t2) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1351:20+5 + assume {:print "$at(186,54575,54580)"} true; +L1: + + // $t3 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1351:20+5 + assume {:print "$at(186,54575,54580)"} true; + $t3 := false; + assume $IsValid'bool'($t3); + + // trace_return[0]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1351:13+12 + assume {:print "$track_return(113,34,0):", $t3} $t3 == $t3; + + // $t4 := move($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1351:13+12 + $t4 := $t3; + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1351:13+12 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1354:35+8 + assume {:print "$at(186,54627,54635)"} true; +L0: + + // $t5 := get_global($t0) on_abort goto L3 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1354:9+13 + assume {:print "$at(186,54601,54614)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t5 := $ResourceValue($1_token_TokenStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,54601,54614)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,34):", $t6} $t6 == $t6; + goto L3; + } + + // $t7 := get_field.direct_transfer($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1354:9+51 + $t7 := $t5->$direct_transfer; + + // trace_return[0]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1354:9+51 + assume {:print "$track_return(113,34,0):", $t7} $t7 == $t7; + + // $t4 := move($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1354:9+51 + $t4 := $t7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1355:5+1 + assume {:print "$at(186,54657,54658)"} true; +L2: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1355:5+1 + assume {:print "$at(186,54657,54658)"} true; + assert {:msg "assert_failed(186,54657,54658): function does not abort under this condition"} + !false; + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1355:5+1 + $ret0 := $t4; + return; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1355:5+1 +L3: + + // assert false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+225 + assume {:print "$at(186,54433,54658)"} true; + assert {:msg "assert_failed(186,54433,54658): abort not covered by any of the `aborts_if` clauses"} + false; + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1349:5+225 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::get_property_map [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+871 +procedure {:timeLimit 80} $1_token_get_property_map$verify(_$t0: int, _$t1: $1_token_TokenId) returns ($ret0: $1_property_map_PropertyMap) +{ + // declare local variables + var $t2: $1_property_map_PropertyMap; + var $t3: Table int ($1_token_TokenData); + var $t4: int; + var $t5: Table int ($1_token_TokenData); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: $1_token_TokenDataId; + var $t16: int; + var $t17: $1_token_Collections; + var $t18: Table int ($1_token_TokenData); + var $t19: $1_token_TokenDataId; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_token_TokenDataId; + var $t24: $1_token_TokenData; + var $t25: $1_token_TokenStore; + var $t26: Table int ($1_token_Token); + var $t27: $1_token_Token; + var $t0: int; + var $t1: $1_token_TokenId; + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $1_token_TokenStore_$memory#888: $Memory $1_token_TokenStore; + var $1_token_Collections_$memory#889: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume {:print "$at(186,61995,61996)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t4, select token::TokenDataId.creator(select token::TokenId.token_data_id($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:808:9+50 + assume {:print "$at(187,34178,34228)"} true; + assume ($t4 == $t1->$token_data_id->$creator); + + // assume Identical($t5, select token::Collections.token_data(global($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:809:9+66 + assume {:print "$at(187,34237,34303)"} true; + assume ($t5 == $ResourceValue($1_token_Collections_$memory, $t4)->$token_data); + + // @889 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume {:print "$at(186,61995,61996)"} true; + $1_token_Collections_$memory#889 := $1_token_Collections_$memory; + + // @888 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + $1_token_TokenStore_$memory#888 := $1_token_TokenStore_$memory; + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume {:print "$track_local(113,35,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1547:5+1 + assume {:print "$track_local(113,35,1):", $t1} $t1 == $t1; + + // $t6 := token::balance_of($t0, $t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:17+27 + assume {:print "$at(186,62122,62149)"} true; + call $t6 := $1_token_balance_of($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,62122,62149)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // $t8 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:47+1 + $t8 := 0; + assume $IsValid'u64'($t8); + + // $t9 := >($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:45+1 + call $t9 := $Gt($t6, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 + assume {:print "$at(186,62114,62195)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:67+21 +L0: + + // $t10 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:67+21 + assume {:print "$at(186,62172,62193)"} true; + $t10 := 5; + assume $IsValid'u64'($t10); + + // $t11 := error::not_found($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:50+39 + call $t11 := $1_error_not_found($t10); + if ($abort_flag) { + assume {:print "$at(186,62155,62194)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 + assume {:print "$at(186,62114,62195)"} true; + assume {:print "$track_abort(113,35):", $t11} $t11 == $t11; + + // $t7 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 + $t7 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1548:9+81 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:13+8 + assume {:print "$at(186,62273,62281)"} true; +L2: + + // $t12 := get_field.property_version($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:13+25 + assume {:print "$at(186,62273,62298)"} true; + $t12 := $t1->$property_version; + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:42+1 + $t13 := 0; + assume $IsValid'u64'($t13); + + // $t14 := ==($t12, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:39+2 + $t14 := $IsEqual'u64'($t12, $t13); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:9+591 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1551:32+8 + assume {:print "$at(186,62338,62346)"} true; +L4: + + // $t15 := get_field.token_data_id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1551:32+22 + assume {:print "$at(186,62338,62360)"} true; + $t15 := $t1->$token_data_id; + + // $t16 := get_field.creator($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1551:32+30 + $t16 := $t15->$creator; + + // $t17 := get_global($t16) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1552:35+13 + assume {:print "$at(186,62404,62417)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t16)) { + call $ExecFailureAbort(); + } else { + $t17 := $ResourceValue($1_token_Collections_$memory, $t16); + } + if ($abort_flag) { + assume {:print "$at(186,62404,62417)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // $t18 := get_field.token_data($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1552:34+52 + $t18 := $t17->$token_data; + + // trace_local[all_token_data]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1552:17+14 + assume {:print "$track_local(113,35,3):", $t18} $t18 == $t18; + + // $t19 := get_field.token_data_id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:53+22 + assume {:print "$at(186,62509,62531)"} true; + $t19 := $t1->$token_data_id; + + // $t20 := table::contains($t18, $t19) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:21+55 + call $t20 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t18, $t19); + if ($abort_flag) { + assume {:print "$at(186,62477,62532)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // if ($t20) goto L6 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 + if ($t20) { goto L6; } else { goto L5; } + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 +L6: + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 + assume {:print "$at(186,62469,62578)"} true; + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 +L5: + + // $t21 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:95+25 + assume {:print "$at(186,62551,62576)"} true; + $t21 := 10; + assume $IsValid'u64'($t21); + + // $t22 := error::not_found($t21) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:78+43 + call $t22 := $1_error_not_found($t21); + if ($abort_flag) { + assume {:print "$at(186,62534,62577)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 + assume {:print "$at(186,62469,62578)"} true; + assume {:print "$track_abort(113,35):", $t22} $t22 == $t22; + + // $t7 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 + $t7 := $t22; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1553:13+109 + goto L10; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1554:44+14 + assume {:print "$at(186,62623,62637)"} true; +L7: + + // $t23 := get_field.token_data_id($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1554:60+22 + assume {:print "$at(186,62639,62661)"} true; + $t23 := $t1->$token_data_id; + + // $t24 := table::borrow($t18, $t23) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1554:30+53 + call $t24 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t18, $t23); + if ($abort_flag) { + assume {:print "$at(186,62609,62662)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // $t2 := get_field.default_properties($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1555:13+29 + assume {:print "$at(186,62676,62705)"} true; + $t2 := $t24->$default_properties; + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:9+591 + assume {:print "$at(186,62269,62860)"} true; + goto L8; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1557:53+5 + assume {:print "$at(186,62775,62780)"} true; +L3: + + // $t25 := get_global($t0) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1557:27+13 + assume {:print "$at(186,62749,62762)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t25 := $ResourceValue($1_token_TokenStore_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,62749,62762)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // $t26 := get_field.tokens($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1557:26+40 + $t26 := $t25->$tokens; + + // $t27 := table::borrow($t26, $t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1558:13+31 + assume {:print "$at(186,62802,62833)"} true; + call $t27 := $1_table_borrow'$1_token_TokenId_$1_token_Token'($t26, $t1); + if ($abort_flag) { + assume {:print "$at(186,62802,62833)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,35):", $t7} $t7 == $t7; + goto L10; + } + + // $t2 := get_field.token_properties($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1558:13+48 + $t2 := $t27->$token_properties; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:9+591 + assume {:print "$at(186,62269,62860)"} true; +L8: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1550:9+591 + assume {:print "$at(186,62269,62860)"} true; + assume {:print "$track_return(113,35,0):", $t2} $t2 == $t2; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1560:5+1 + assume {:print "$at(186,62865,62866)"} true; +L9: + + // assert Not(Le(token::spec_balance_of[@888]($t0, $t1), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:810:9+48 + assume {:print "$at(187,34312,34360)"} true; + assert {:msg "assert_failed(187,34312,34360): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#888, $t0, $t1) <= 0); + + // assert Not(And(Eq(select token::TokenId.property_version($t1), 0), Not(table::spec_contains[]($t5, select token::TokenId.token_data_id($t1))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:811:9+106 + assume {:print "$at(187,34369,34475)"} true; + assert {:msg "assert_failed(187,34369,34475): function does not abort under this condition"} + !($IsEqual'u64'($t1->$property_version, 0) && !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t5, $t1->$token_data_id)); + + // assert Not(And(Eq(select token::TokenId.property_version($t1), 0), Not(exists[@889]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:812:9+79 + assume {:print "$at(187,34484,34563)"} true; + assert {:msg "assert_failed(187,34484,34563): function does not abort under this condition"} + !($IsEqual'u64'($t1->$property_version, 0) && !$ResourceExists($1_token_Collections_$memory#889, $t4)); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:812:9+79 + $ret0 := $t2; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1560:5+1 + assume {:print "$at(186,62865,62866)"} true; +L10: + + // assert Or(Or(Le(token::spec_balance_of[@888]($t0, $t1), 0), And(Eq(select token::TokenId.property_version($t1), 0), Not(table::spec_contains[]($t5, select token::TokenId.token_data_id($t1))))), And(Eq(select token::TokenId.property_version($t1), 0), Not(exists[@889]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:807:5+471 + assume {:print "$at(187,34098,34569)"} true; + assert {:msg "assert_failed(187,34098,34569): abort not covered by any of the `aborts_if` clauses"} + ((($1_token_spec_balance_of($1_token_TokenStore_$memory#888, $t0, $t1) <= 0) || ($IsEqual'u64'($t1->$property_version, 0) && !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t5, $t1->$token_data_id))) || ($IsEqual'u64'($t1->$property_version, 0) && !$ResourceExists($1_token_Collections_$memory#889, $t4))); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:807:5+471 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::get_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1505:5+176 +procedure {:timeLimit 80} $1_token_get_royalty$verify(_$t0: $1_token_TokenId) returns ($ret0: $1_token_Royalty) +{ + // declare local variables + var $t1: int; + var $t2: Table int ($1_token_TokenData); + var $t3: $1_token_TokenDataId; + var $t4: int; + var $t5: Table int ($1_token_TokenData); + var $t6: $1_token_Royalty; + var $t7: int; + var $t0: $1_token_TokenId; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $1_token_Collections_$memory#892: $Memory $1_token_Collections; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1505:5+1 + assume {:print "$at(186,60600,60601)"} true; + assume $IsValid'$1_token_TokenId'($t0); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1505:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t1, select token::TokenDataId.creator(select token::TokenId.token_data_id($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:841:9+44 + assume {:print "$at(187,35737,35781)"} true; + assume ($t1 == $t0->$token_data_id->$creator); + + // assume Identical($t2, select token::Collections.token_data(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:842:9+69 + assume {:print "$at(187,35790,35859)"} true; + assume ($t2 == $ResourceValue($1_token_Collections_$memory, $t1)->$token_data); + + // @892 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1505:5+1 + assume {:print "$at(186,60600,60601)"} true; + $1_token_Collections_$memory#892 := $1_token_Collections_$memory; + + // trace_local[token_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1505:5+1 + assume {:print "$track_local(113,36,0):", $t0} $t0 == $t0; + + // $t3 := get_field.token_data_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1506:29+22 + assume {:print "$at(186,60702,60724)"} true; + $t3 := $t0->$token_data_id; + + // assume Identical($t4, select token::TokenDataId.creator($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:841:9+44 + assume {:print "$at(187,35737,35781)"} true; + assume ($t4 == $t3->$creator); + + // assume Identical($t5, select token::Collections.token_data(global($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:842:9+69 + assume {:print "$at(187,35790,35859)"} true; + assume ($t5 == $ResourceValue($1_token_Collections_$memory, $t4)->$token_data); + + // $t6 := token::get_tokendata_royalty($t3) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1507:9+36 + assume {:print "$at(186,60734,60770)"} true; + call $t6 := $1_token_get_tokendata_royalty($t3); + if ($abort_flag) { + assume {:print "$at(186,60734,60770)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,36):", $t7} $t7 == $t7; + goto L2; + } + + // trace_return[0]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1507:9+36 + assume {:print "$track_return(113,36,0):", $t6} $t6 == $t6; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1508:5+1 + assume {:print "$at(186,60775,60776)"} true; +L1: + + // assert Not(Not(exists[@892]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:843:9+48 + assume {:print "$at(187,35868,35916)"} true; + assert {:msg "assert_failed(187,35868,35916): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#892, $t1); + + // assert Not(Not(table::spec_contains[]($t2, select token::TokenId.token_data_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:844:9+63 + assume {:print "$at(187,35925,35988)"} true; + assert {:msg "assert_failed(187,35925,35988): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t2, $t0->$token_data_id); + + // return $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:844:9+63 + $ret0 := $t6; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1508:5+1 + assume {:print "$at(186,60775,60776)"} true; +L2: + + // assert Or(Not(exists[@892]($t1)), Not(table::spec_contains[]($t2, select token::TokenId.token_data_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:801:5+159 + assume {:print "$at(187,33933,34092)"} true; + assert {:msg "assert_failed(187,33933,34092): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#892, $t1) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t2, $t0->$token_data_id)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:801:5+159 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::get_royalty_denominator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1514:5+109 +procedure {:timeLimit 80} $1_token_get_royalty_denominator$verify(_$t0: $1_token_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_token_Royalty; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1514:5+1 + assume {:print "$at(186,60893,60894)"} true; + assume $IsValid'$1_token_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1514:5+1 + assume {:print "$track_local(113,37,0):", $t0} $t0 == $t0; + + // $t1 := get_field.royalty_points_denominator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1515:9+34 + assume {:print "$at(186,60962,60996)"} true; + $t1 := $t0->$royalty_points_denominator; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1515:9+34 + assume {:print "$track_return(113,37,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1516:5+1 + assume {:print "$at(186,61001,61002)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1516:5+1 + assume {:print "$at(186,61001,61002)"} true; + assert {:msg "assert_failed(186,61001,61002): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1516:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_royalty_numerator [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1510:5+105 +procedure {:timeLimit 80} $1_token_get_royalty_numerator$verify(_$t0: $1_token_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_token_Royalty; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1510:5+1 + assume {:print "$at(186,60782,60783)"} true; + assume $IsValid'$1_token_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1510:5+1 + assume {:print "$track_local(113,38,0):", $t0} $t0 == $t0; + + // $t1 := get_field.royalty_points_numerator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1511:9+32 + assume {:print "$at(186,60849,60881)"} true; + $t1 := $t0->$royalty_points_numerator; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1511:9+32 + assume {:print "$track_return(113,38,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1512:5+1 + assume {:print "$at(186,60886,60887)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1512:5+1 + assume {:print "$at(186,60886,60887)"} true; + assert {:msg "assert_failed(186,60886,60887): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1512:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_royalty_payee [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1518:5+94 +procedure {:timeLimit 80} $1_token_get_royalty_payee$verify(_$t0: $1_token_Royalty) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_token_Royalty; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1518:5+1 + assume {:print "$at(186,61008,61009)"} true; + assume $IsValid'$1_token_Royalty'($t0); + + // trace_local[royalty]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1518:5+1 + assume {:print "$track_local(113,39,0):", $t0} $t0 == $t0; + + // $t1 := get_field.payee_address($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1519:9+21 + assume {:print "$at(186,61075,61096)"} true; + $t1 := $t0->$payee_address; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1519:9+21 + assume {:print "$track_return(113,39,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1520:5+1 + assume {:print "$at(186,61101,61102)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1520:5+1 + assume {:print "$at(186,61101,61102)"} true; + assert {:msg "assert_failed(186,61101,61102): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1520:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_amount [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1522:5+76 +procedure {:inline 1} $1_token_get_token_amount(_$t0: $1_token_Token) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'u64': int; + $t0 := _$t0; + + // bytecode translation starts here + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1522:5+1 + assume {:print "$at(186,61108,61109)"} true; + assume {:print "$track_local(113,40,0):", $t0} $t0 == $t0; + + // $t1 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1523:9+12 + assume {:print "$at(186,61166,61178)"} true; + $t1 := $t0->$amount; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1523:9+12 + assume {:print "$track_return(113,40,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1524:5+1 + assume {:print "$at(186,61183,61184)"} true; +L1: + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1524:5+1 + assume {:print "$at(186,61183,61184)"} true; + $ret0 := $t1; + return; + +} + +// fun token::get_token_amount [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1522:5+76 +procedure {:timeLimit 80} $1_token_get_token_amount$verify(_$t0: $1_token_Token) returns ($ret0: int) +{ + // declare local variables + var $t1: int; + var $t0: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1522:5+1 + assume {:print "$at(186,61108,61109)"} true; + assume $IsValid'$1_token_Token'($t0); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1522:5+1 + assume {:print "$track_local(113,40,0):", $t0} $t0 == $t0; + + // $t1 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1523:9+12 + assume {:print "$at(186,61166,61178)"} true; + $t1 := $t0->$amount; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1523:9+12 + assume {:print "$track_return(113,40,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1524:5+1 + assume {:print "$at(186,61183,61184)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1524:5+1 + assume {:print "$at(186,61183,61184)"} true; + assert {:msg "assert_failed(186,61183,61184): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1524:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_data_id_fields [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1536:5+224 +procedure {:timeLimit 80} $1_token_get_token_data_id_fields$verify(_$t0: $1_token_TokenDataId) returns ($ret0: int, $ret1: $1_string_String, $ret2: $1_string_String) +{ + // declare local variables + var $t1: int; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1536:5+1 + assume {:print "$at(186,61562,61563)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1536:5+1 + assume {:print "$track_local(113,41,0):", $t0} $t0 == $t0; + + // $t1 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1538:13+21 + assume {:print "$at(186,61678,61699)"} true; + $t1 := $t0->$creator; + + // $t2 := get_field.collection($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1539:13+24 + assume {:print "$at(186,61713,61737)"} true; + $t2 := $t0->$collection; + + // $t3 := get_field.name($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1540:13+18 + assume {:print "$at(186,61751,61769)"} true; + $t3 := $t0->$name; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1537:9+116 + assume {:print "$at(186,61664,61780)"} true; + assume {:print "$track_return(113,41,0):", $t1} $t1 == $t1; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1537:9+116 + assume {:print "$track_return(113,41,1):", $t2} $t2 == $t2; + + // trace_return[2]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1537:9+116 + assume {:print "$track_return(113,41,2):", $t3} $t3 == $t3; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1542:5+1 + assume {:print "$at(186,61785,61786)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1542:5+1 + assume {:print "$at(186,61785,61786)"} true; + assert {:msg "assert_failed(186,61785,61786): function does not abort under this condition"} + !false; + + // return ($t1, $t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1542:5+1 + $ret0 := $t1; + $ret1 := $t2; + $ret2 := $t3; + return; + +} + +// fun token::get_token_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1345:5+72 +procedure {:timeLimit 80} $1_token_get_token_id$verify(_$t0: $1_token_Token) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t1: $1_token_TokenId; + var $t0: $1_token_Token; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1345:5+1 + assume {:print "$at(186,54355,54356)"} true; + assume $IsValid'$1_token_Token'($t0); + + // trace_local[token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1345:5+1 + assume {:print "$track_local(113,42,0):", $t0} $t0 == $t0; + + // $t1 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1346:9+8 + assume {:print "$at(186,54413,54421)"} true; + $t1 := $t0->$id; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1346:9+8 + assume {:print "$track_return(113,42,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1347:5+1 + assume {:print "$at(186,54426,54427)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1347:5+1 + assume {:print "$at(186,54426,54427)"} true; + assert {:msg "assert_failed(186,54426,54427): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1347:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_id_fields [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1527:5+281 +procedure {:timeLimit 80} $1_token_get_token_id_fields$verify(_$t0: $1_token_TokenId) returns ($ret0: int, $ret1: $1_string_String, $ret2: $1_string_String, $ret3: int) +{ + // declare local variables + var $t1: $1_token_TokenDataId; + var $t2: int; + var $t3: $1_token_TokenDataId; + var $t4: $1_string_String; + var $t5: $1_token_TokenDataId; + var $t6: $1_string_String; + var $t7: int; + var $t0: $1_token_TokenId; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1527:5+1 + assume {:print "$at(186,61275,61276)"} true; + assume $IsValid'$1_token_TokenId'($t0); + + // trace_local[token_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1527:5+1 + assume {:print "$track_local(113,43,0):", $t0} $t0 == $t0; + + // $t1 := get_field.token_data_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1529:13+22 + assume {:print "$at(186,61382,61404)"} true; + $t1 := $t0->$token_data_id; + + // $t2 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1529:13+30 + $t2 := $t1->$creator; + + // $t3 := get_field.token_data_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1530:13+22 + assume {:print "$at(186,61426,61448)"} true; + $t3 := $t0->$token_data_id; + + // $t4 := get_field.collection($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1530:13+33 + $t4 := $t3->$collection; + + // $t5 := get_field.token_data_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1531:13+22 + assume {:print "$at(186,61473,61495)"} true; + $t5 := $t0->$token_data_id; + + // $t6 := get_field.name($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1531:13+27 + $t6 := $t5->$name; + + // $t7 := get_field.property_version($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1532:13+25 + assume {:print "$at(186,61514,61539)"} true; + $t7 := $t0->$property_version; + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1528:9+182 + assume {:print "$at(186,61368,61550)"} true; + assume {:print "$track_return(113,43,0):", $t2} $t2 == $t2; + + // trace_return[1]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1528:9+182 + assume {:print "$track_return(113,43,1):", $t4} $t4 == $t4; + + // trace_return[2]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1528:9+182 + assume {:print "$track_return(113,43,2):", $t6} $t6 == $t6; + + // trace_return[3]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1528:9+182 + assume {:print "$track_return(113,43,3):", $t7} $t7 == $t7; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1534:5+1 + assume {:print "$at(186,61555,61556)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1534:5+1 + assume {:print "$at(186,61555,61556)"} true; + assert {:msg "assert_failed(186,61555,61556): function does not abort under this condition"} + !false; + + // return ($t2, $t4, $t6, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1534:5+1 + $ret0 := $t2; + $ret1 := $t4; + $ret2 := $t6; + $ret3 := $t7; + return; + +} + +// fun token::get_token_mutability_default_properties [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1636:5+122 +procedure {:timeLimit 80} $1_token_get_token_mutability_default_properties$verify(_$t0: $1_token_TokenMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_TokenMutabilityConfig; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1636:5+1 + assume {:print "$at(186,66605,66606)"} true; + assume $IsValid'$1_token_TokenMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1636:5+1 + assume {:print "$track_local(113,44,0):", $t0} $t0 == $t0; + + // $t1 := get_field.properties($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1637:9+17 + assume {:print "$at(186,66704,66721)"} true; + $t1 := $t0->$properties; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1637:9+17 + assume {:print "$track_return(113,44,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1638:5+1 + assume {:print "$at(186,66726,66727)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1638:5+1 + assume {:print "$at(186,66726,66727)"} true; + assert {:msg "assert_failed(186,66726,66727): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1638:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_mutability_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1631:5+116 +procedure {:timeLimit 80} $1_token_get_token_mutability_description$verify(_$t0: $1_token_TokenMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_TokenMutabilityConfig; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1631:5+1 + assume {:print "$at(186,66388,66389)"} true; + assume $IsValid'$1_token_TokenMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1631:5+1 + assume {:print "$track_local(113,45,0):", $t0} $t0 == $t0; + + // $t1 := get_field.description($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1632:9+18 + assume {:print "$at(186,66480,66498)"} true; + $t1 := $t0->$description; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1632:9+18 + assume {:print "$track_return(113,45,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1633:5+1 + assume {:print "$at(186,66503,66504)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1633:5+1 + assume {:print "$at(186,66503,66504)"} true; + assert {:msg "assert_failed(186,66503,66504): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1633:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_mutability_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1616:5+108 +procedure {:timeLimit 80} $1_token_get_token_mutability_maximum$verify(_$t0: $1_token_TokenMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_TokenMutabilityConfig; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1616:5+1 + assume {:print "$at(186,65820,65821)"} true; + assume $IsValid'$1_token_TokenMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1616:5+1 + assume {:print "$track_local(113,46,0):", $t0} $t0 == $t0; + + // $t1 := get_field.maximum($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1617:9+14 + assume {:print "$at(186,65908,65922)"} true; + $t1 := $t0->$maximum; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1617:9+14 + assume {:print "$track_return(113,46,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1618:5+1 + assume {:print "$at(186,65927,65928)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1618:5+1 + assume {:print "$at(186,65927,65928)"} true; + assert {:msg "assert_failed(186,65927,65928): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1618:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_mutability_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1621:5+108 +procedure {:timeLimit 80} $1_token_get_token_mutability_royalty$verify(_$t0: $1_token_TokenMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_TokenMutabilityConfig; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1621:5+1 + assume {:print "$at(186,66012,66013)"} true; + assume $IsValid'$1_token_TokenMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1621:5+1 + assume {:print "$track_local(113,47,0):", $t0} $t0 == $t0; + + // $t1 := get_field.royalty($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1622:9+14 + assume {:print "$at(186,66100,66114)"} true; + $t1 := $t0->$royalty; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1622:9+14 + assume {:print "$track_return(113,47,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1623:5+1 + assume {:print "$at(186,66119,66120)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1623:5+1 + assume {:print "$at(186,66119,66120)"} true; + assert {:msg "assert_failed(186,66119,66120): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1623:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_mutability_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1626:5+100 +procedure {:timeLimit 80} $1_token_get_token_mutability_uri$verify(_$t0: $1_token_TokenMutabilityConfig) returns ($ret0: bool) +{ + // declare local variables + var $t1: bool; + var $t0: $1_token_TokenMutabilityConfig; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'bool': bool; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1626:5+1 + assume {:print "$at(186,66200,66201)"} true; + assume $IsValid'$1_token_TokenMutabilityConfig'($t0); + + // trace_local[config]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1626:5+1 + assume {:print "$track_local(113,48,0):", $t0} $t0 == $t0; + + // $t1 := get_field.uri($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1627:9+10 + assume {:print "$at(186,66284,66294)"} true; + $t1 := $t0->$uri; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1627:9+10 + assume {:print "$track_return(113,48,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1628:5+1 + assume {:print "$at(186,66299,66300)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1628:5+1 + assume {:print "$at(186,66299,66300)"} true; + assert {:msg "assert_failed(186,66299,66300): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1628:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_token_supply [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+633 +procedure {:timeLimit 80} $1_token_get_token_supply$verify(_$t0: int, _$t1: $1_token_TokenDataId) returns ($ret0: $1_option_Option'u64') +{ + // declare local variables + var $t2: $1_option_Option'u64'; + var $t3: Table int ($1_token_TokenData); + var $t4: $1_token_TokenData; + var $t5: Table int ($1_token_TokenData); + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t0: int; + var $t1: $1_token_TokenDataId; + var $temp_0'$1_option_Option'u64'': $1_option_Option'u64'; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $1_token_Collections_$memory#893: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume {:print "$at(186,53091,53092)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t5, select token::Collections.token_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:647:9+69 + assume {:print "$at(187,27451,27520)"} true; + assume ($t5 == $ResourceValue($1_token_Collections_$memory, $t0)->$token_data); + + // @893 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume {:print "$at(186,53091,53092)"} true; + $1_token_Collections_$memory#893 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume {:print "$track_local(113,49,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1323:5+1 + assume {:print "$track_local(113,49,1):", $t1} $t1 == $t1; + + // $t6 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:17+6 + assume {:print "$at(186,53225,53231)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 + assume {:print "$at(186,53217,53308)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:72+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:72+26 + assume {:print "$at(186,53280,53306)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:55+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,53263,53307)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,49):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 + assume {:print "$at(186,53217,53308)"} true; + assume {:print "$track_abort(113,49):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 + $t9 := $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1324:9+91 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1325:58+15 + assume {:print "$at(186,53367,53382)"} true; +L2: + + // $t10 := get_global($t0) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1325:31+13 + assume {:print "$at(186,53340,53353)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,53340,53353)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,49):", $t9} $t9 == $t9; + goto L10; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1325:30+55 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1325:13+14 + assume {:print "$track_local(113,49,3):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:17+46 + assume {:print "$at(186,53412,53458)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(186,53412,53458)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,49):", $t9} $t9 == $t9; + goto L10; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 + assume {:print "$at(186,53404,53504)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:82+25 + assume {:print "$at(186,53477,53502)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,53460,53503)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,49):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 + assume {:print "$at(186,53404,53504)"} true; + assume {:print "$track_abort(113,49):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 + $t9 := $t14; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1326:9+100 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1327:40+14 + assume {:print "$at(186,53545,53559)"} true; +L5: + + // $t15 := table::borrow($t11, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1327:26+44 + assume {:print "$at(186,53531,53575)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(186,53531,53575)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,49):", $t9} $t9 == $t9; + goto L10; + } + + // trace_local[token_data]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1327:13+10 + assume {:print "$track_local(113,49,4):", $t15} $t15 == $t15; + + // $t16 := get_field.maximum($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:13+18 + assume {:print "$at(186,53590,53608)"} true; + $t16 := $t15->$maximum; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:34+1 + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := >($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:32+1 + call $t18 := $Gt($t16, $t17); + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:9+132 + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:26+10 + assume {:print "$at(186,53641,53651)"} true; +L7: + + // $t19 := get_field.supply($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:26+17 + assume {:print "$at(186,53641,53658)"} true; + $t19 := $t15->$supply; + + // $t2 := opaque begin: option::some($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:13+31 + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:13+31 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:13+31 + assume $IsEqual'$1_option_Option'u64''($t2, $1_option_spec_some'u64'($t19)); + + // $t2 := opaque end: option::some($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1330:13+31 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:9+132 + assume {:print "$at(186,53586,53718)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:9+132 +L6: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1332:13+19 + assume {:print "$at(186,53689,53708)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1332:13+19 + assume ($IsValid'$1_option_Option'u64''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1332:13+19 + assume $IsEqual'$1_option_Option'u64''($t2, $1_option_spec_none'u64'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1332:13+19 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:9+132 + assume {:print "$at(186,53586,53718)"} true; +L8: + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1329:9+132 + assume {:print "$at(186,53586,53718)"} true; + assume {:print "$track_return(113,49,0):", $t2} $t2 == $t2; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1334:5+1 + assume {:print "$at(186,53723,53724)"} true; +L9: + + // assert Not(Not(exists[@893]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:646:9+48 + assume {:print "$at(187,27394,27442)"} true; + assert {:msg "assert_failed(187,27394,27442): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#893, $t0); + + // assert Not(Not(table::spec_contains[]($t5, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:648:9+63 + assume {:print "$at(187,27529,27592)"} true; + assert {:msg "assert_failed(187,27529,27592): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t5, $t1); + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:648:9+63 + $ret0 := $t2; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1334:5+1 + assume {:print "$at(186,53723,53724)"} true; +L10: + + // assert Or(Not(exists[@893]($t0)), Not(table::spec_contains[]($t5, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:645:5+303 + assume {:print "$at(187,27295,27598)"} true; + assert {:msg "assert_failed(187,27295,27598): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#893, $t0) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t5, $t1)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:645:5+303 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1581:5+554 +procedure {:timeLimit 80} $1_token_get_tokendata_description$verify(_$t0: $1_token_TokenDataId) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t1: Table int ($1_token_TokenData); + var $t2: int; + var $t3: int; + var $t4: Table int ($1_token_TokenData); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: $1_string_String; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $1_token_Collections_$memory#894: $Memory $1_token_Collections; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1581:5+1 + assume {:print "$at(186,63914,63915)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1581:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::TokenDataId.creator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:829:9+44 + assume {:print "$at(187,35266,35310)"} true; + assume ($t3 == $t0->$creator); + + // assume Identical($t4, select token::Collections.token_data(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:831:9+69 + assume {:print "$at(187,35376,35445)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t3)->$token_data); + + // @894 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1581:5+1 + assume {:print "$at(186,63914,63915)"} true; + $1_token_Collections_$memory#894 := $1_token_Collections_$memory; + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1581:5+1 + assume {:print "$track_local(113,50,0):", $t0} $t0 == $t0; + + // $t5 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1582:31+21 + assume {:print "$at(186,64040,64061)"} true; + $t5 := $t0->$creator; + + // trace_local[creator_address]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1582:13+15 + assume {:print "$track_local(113,50,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:17+6 + assume {:print "$at(186,64079,64085)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 + assume {:print "$at(186,64071,64162)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:72+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:72+26 + assume {:print "$at(186,64134,64160)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:55+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,64117,64161)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,50):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 + assume {:print "$at(186,64071,64162)"} true; + assume {:print "$track_abort(113,50):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 + $t9 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1583:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1584:58+15 + assume {:print "$at(186,64221,64236)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1584:31+13 + assume {:print "$at(186,64194,64207)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(186,64194,64207)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,50):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1584:30+55 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1584:13+14 + assume {:print "$track_local(113,50,1):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:17+46 + assume {:print "$at(186,64266,64312)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64266,64312)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,50):", $t9} $t9 == $t9; + goto L7; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 + assume {:print "$at(186,64258,64358)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:82+25 + assume {:print "$at(186,64331,64356)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,64314,64357)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,50):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 + assume {:print "$at(186,64258,64358)"} true; + assume {:print "$track_abort(113,50):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 + $t9 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1585:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1587:40+14 + assume {:print "$at(186,64400,64414)"} true; +L5: + + // $t15 := table::borrow($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1587:26+44 + assume {:print "$at(186,64386,64430)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64386,64430)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,50):", $t9} $t9 == $t9; + goto L7; + } + + // $t16 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1588:9+22 + assume {:print "$at(186,64440,64462)"} true; + $t16 := $t15->$description; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1588:9+22 + assume {:print "$track_return(113,50,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1589:5+1 + assume {:print "$at(186,64467,64468)"} true; +L6: + + // assert Not(Not(exists[@894]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:830:9+48 + assume {:print "$at(187,35319,35367)"} true; + assert {:msg "assert_failed(187,35319,35367): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#894, $t3); + + // assert Not(Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:832:9+63 + assume {:print "$at(187,35454,35517)"} true; + assert {:msg "assert_failed(187,35454,35517): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:832:9+63 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1589:5+1 + assume {:print "$at(186,64467,64468)"} true; +L7: + + // assert Or(Not(exists[@894]($t3)), Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:828:5+334 + assume {:print "$at(187,35189,35523)"} true; + assert {:msg "assert_failed(187,35189,35523): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#894, $t3) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:828:5+334 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1602:5+98 +procedure {:timeLimit 80} $1_token_get_tokendata_id$verify(_$t0: $1_token_TokenId) returns ($ret0: $1_token_TokenDataId) +{ + // declare local variables + var $t1: $1_token_TokenDataId; + var $t0: $1_token_TokenId; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1602:5+1 + assume {:print "$at(186,65078,65079)"} true; + assume $IsValid'$1_token_TokenId'($t0); + + // trace_local[token_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1602:5+1 + assume {:print "$track_local(113,51,0):", $t0} $t0 == $t0; + + // $t1 := get_field.token_data_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1603:9+22 + assume {:print "$at(186,65148,65170)"} true; + $t1 := $t0->$token_data_id; + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1603:9+22 + assume {:print "$track_return(113,51,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1604:5+1 + assume {:print "$at(186,65175,65176)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1604:5+1 + assume {:print "$at(186,65175,65176)"} true; + assert {:msg "assert_failed(186,65175,65176): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1604:5+1 + $ret0 := $t1; + return; + +} + +// fun token::get_tokendata_largest_property_version [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+512 +procedure {:timeLimit 80} $1_token_get_tokendata_largest_property_version$verify(_$t0: int, _$t1: $1_token_TokenDataId) returns ($ret0: int) +{ + // declare local variables + var $t2: Table int ($1_token_TokenData); + var $t3: Table int ($1_token_TokenData); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_token_Collections; + var $t9: Table int ($1_token_TokenData); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $1_token_TokenData; + var $t14: int; + var $t0: int; + var $t1: $1_token_TokenDataId; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_token_Collections_$memory#895: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume {:print "$at(186,53792,53793)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::Collections.token_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:653:9+69 + assume {:print "$at(187,27774,27843)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$token_data); + + // @895 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume {:print "$at(186,53792,53793)"} true; + $1_token_Collections_$memory#895 := $1_token_Collections_$memory; + + // trace_local[creator_address]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume {:print "$track_local(113,52,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1337:5+1 + assume {:print "$track_local(113,52,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:17+6 + assume {:print "$at(186,53940,53946)"} true; + $t4 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 + assume {:print "$at(186,53932,54023)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:72+26 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:72+26 + assume {:print "$at(186,53995,54021)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:55+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(186,53978,54022)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,52):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 + assume {:print "$at(186,53932,54023)"} true; + assume {:print "$track_abort(113,52):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1338:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1339:58+15 + assume {:print "$at(186,54082,54097)"} true; +L2: + + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1339:31+13 + assume {:print "$at(186,54055,54068)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,54055,54068)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,52):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := get_field.token_data($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1339:30+55 + $t9 := $t8->$token_data; + + // trace_local[all_token_data]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1339:13+14 + assume {:print "$track_local(113,52,2):", $t9} $t9 == $t9; + + // $t10 := table::contains($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:17+46 + assume {:print "$at(186,54127,54173)"} true; + call $t10 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,54127,54173)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,52):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t10) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 + assume {:print "$at(186,54119,54219)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 +L3: + + // $t11 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:82+25 + assume {:print "$at(186,54192,54217)"} true; + $t11 := 10; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:65+43 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(186,54175,54218)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,52):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 + assume {:print "$at(186,54119,54219)"} true; + assume {:print "$track_abort(113,52):", $t12} $t12 == $t12; + + // $t7 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 + $t7 := $t12; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1340:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1341:23+14 + assume {:print "$at(186,54243,54257)"} true; +L5: + + // $t13 := table::borrow($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1341:9+44 + assume {:print "$at(186,54229,54273)"} true; + call $t13 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,54229,54273)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,52):", $t7} $t7 == $t7; + goto L7; + } + + // $t14 := get_field.largest_property_version($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1341:9+69 + $t14 := $t13->$largest_property_version; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1341:9+69 + assume {:print "$track_return(113,52,0):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1342:5+1 + assume {:print "$at(186,54303,54304)"} true; +L6: + + // assert Not(Not(exists[@895]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:652:9+48 + assume {:print "$at(187,27717,27765)"} true; + assert {:msg "assert_failed(187,27717,27765): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#895, $t0); + + // assert Not(Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:654:9+63 + assume {:print "$at(187,27852,27915)"} true; + assert {:msg "assert_failed(187,27852,27915): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t3, $t1); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:654:9+63 + $ret0 := $t14; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1342:5+1 + assume {:print "$at(186,54303,54304)"} true; +L7: + + // assert Or(Not(exists[@895]($t0)), Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:651:5+317 + assume {:print "$at(187,27604,27921)"} true; + assert {:msg "assert_failed(187,27604,27921): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#895, $t0) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t3, $t1)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:651:5+317 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1562:5+543 +procedure {:timeLimit 80} $1_token_get_tokendata_maximum$verify(_$t0: $1_token_TokenDataId) returns ($ret0: int) +{ + // declare local variables + var $t1: Table int ($1_token_TokenData); + var $t2: int; + var $t3: int; + var $t4: Table int ($1_token_TokenData); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: int; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_token_Collections_$memory#896: $Memory $1_token_Collections; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1562:5+1 + assume {:print "$at(186,62872,62873)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1562:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::TokenDataId.creator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:816:9+44 + assume {:print "$at(187,34645,34689)"} true; + assume ($t3 == $t0->$creator); + + // assume Identical($t4, select token::Collections.token_data(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:818:9+69 + assume {:print "$at(187,34755,34824)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t3)->$token_data); + + // @896 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1562:5+1 + assume {:print "$at(186,62872,62873)"} true; + $1_token_Collections_$memory#896 := $1_token_Collections_$memory; + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1562:5+1 + assume {:print "$track_local(113,53,0):", $t0} $t0 == $t0; + + // $t5 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1563:31+21 + assume {:print "$at(186,62991,63012)"} true; + $t5 := $t0->$creator; + + // trace_local[creator_address]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1563:13+15 + assume {:print "$track_local(113,53,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:17+6 + assume {:print "$at(186,63030,63036)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 + assume {:print "$at(186,63022,63113)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:72+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:72+26 + assume {:print "$at(186,63085,63111)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:55+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,63068,63112)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,53):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 + assume {:print "$at(186,63022,63113)"} true; + assume {:print "$track_abort(113,53):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 + $t9 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1564:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1565:58+15 + assume {:print "$at(186,63172,63187)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1565:31+13 + assume {:print "$at(186,63145,63158)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(186,63145,63158)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,53):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1565:30+55 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1565:13+14 + assume {:print "$track_local(113,53,1):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:17+46 + assume {:print "$at(186,63217,63263)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,63217,63263)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,53):", $t9} $t9 == $t9; + goto L7; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 + assume {:print "$at(186,63209,63309)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:82+25 + assume {:print "$at(186,63282,63307)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,63265,63308)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,53):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 + assume {:print "$at(186,63209,63309)"} true; + assume {:print "$track_abort(113,53):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 + $t9 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1566:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1568:40+14 + assume {:print "$at(186,63351,63365)"} true; +L5: + + // $t15 := table::borrow($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1568:26+44 + assume {:print "$at(186,63337,63381)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,63337,63381)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,53):", $t9} $t9 == $t9; + goto L7; + } + + // $t16 := get_field.maximum($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1569:9+18 + assume {:print "$at(186,63391,63409)"} true; + $t16 := $t15->$maximum; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1569:9+18 + assume {:print "$track_return(113,53,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1570:5+1 + assume {:print "$at(186,63414,63415)"} true; +L6: + + // assert Not(Not(exists[@896]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:817:9+48 + assume {:print "$at(187,34698,34746)"} true; + assert {:msg "assert_failed(187,34698,34746): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#896, $t3); + + // assert Not(Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:819:9+63 + assume {:print "$at(187,34833,34896)"} true; + assert {:msg "assert_failed(187,34833,34896): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:819:9+63 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1570:5+1 + assume {:print "$at(186,63414,63415)"} true; +L7: + + // assert Or(Not(exists[@896]($t3)), Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:815:5+327 + assume {:print "$at(187,34575,34902)"} true; + assert {:msg "assert_failed(187,34575,34902): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#896, $t3) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:815:5+327 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_mutability_config [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1607:5+534 +procedure {:timeLimit 80} $1_token_get_tokendata_mutability_config$verify(_$t0: $1_token_TokenDataId) returns ($ret0: $1_token_TokenMutabilityConfig) +{ + // declare local variables + var $t1: Table int ($1_token_TokenData); + var $t2: int; + var $t3: int; + var $t4: Table int ($1_token_TokenData); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: $1_token_TokenMutabilityConfig; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenMutabilityConfig': $1_token_TokenMutabilityConfig; + var $temp_0'address': int; + var $1_token_Collections_$memory#897: $Memory $1_token_Collections; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1607:5+1 + assume {:print "$at(186,65231,65232)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1607:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::TokenDataId.creator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:848:9+41 + assume {:print "$at(187,36098,36139)"} true; + assume ($t3 == $t0->$creator); + + // assume Identical($t4, select token::Collections.token_data(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:849:9+66 + assume {:print "$at(187,36148,36214)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t3)->$token_data); + + // @897 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1607:5+1 + assume {:print "$at(186,65231,65232)"} true; + $1_token_Collections_$memory#897 := $1_token_Collections_$memory; + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1607:5+1 + assume {:print "$track_local(113,54,0):", $t0} $t0 == $t0; + + // $t5 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1608:28+21 + assume {:print "$at(186,65375,65396)"} true; + $t5 := $t0->$creator; + + // trace_local[creator_addr]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1608:13+12 + assume {:print "$track_local(113,54,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:17+6 + assume {:print "$at(186,65414,65420)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 + assume {:print "$at(186,65406,65494)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:69+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:69+26 + assume {:print "$at(186,65466,65492)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:52+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,65449,65493)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,54):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 + assume {:print "$at(186,65406,65494)"} true; + assume {:print "$track_abort(113,54):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 + $t9 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1609:9+88 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1610:58+12 + assume {:print "$at(186,65553,65565)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1610:31+13 + assume {:print "$at(186,65526,65539)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(186,65526,65539)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,54):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1610:30+52 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1610:13+14 + assume {:print "$track_local(113,54,1):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:17+46 + assume {:print "$at(186,65595,65641)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,65595,65641)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,54):", $t9} $t9 == $t9; + goto L7; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 + assume {:print "$at(186,65587,65687)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:82+25 + assume {:print "$at(186,65660,65685)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,65643,65686)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,54):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 + assume {:print "$at(186,65587,65687)"} true; + assume {:print "$track_abort(113,54):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 + $t9 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1611:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1612:23+14 + assume {:print "$at(186,65711,65725)"} true; +L5: + + // $t15 := table::borrow($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1612:9+44 + assume {:print "$at(186,65697,65741)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,65697,65741)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,54):", $t9} $t9 == $t9; + goto L7; + } + + // $t16 := get_field.mutability_config($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1612:9+62 + $t16 := $t15->$mutability_config; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1612:9+62 + assume {:print "$track_return(113,54,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1613:5+1 + assume {:print "$at(186,65764,65765)"} true; +L6: + + // assert Not(Not(exists[@897]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:850:9+45 + assume {:print "$at(187,36223,36268)"} true; + assert {:msg "assert_failed(187,36223,36268): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#897, $t3); + + // assert Not(Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:851:9+63 + assume {:print "$at(187,36277,36340)"} true; + assert {:msg "assert_failed(187,36277,36340): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:851:9+63 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1613:5+1 + assume {:print "$at(186,65764,65765)"} true; +L7: + + // assert Or(Not(exists[@897]($t3)), Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:847:5+346 + assume {:print "$at(187,36000,36346)"} true; + assert {:msg "assert_failed(187,36000,36346): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#897, $t3) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:847:5+346 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_royalty [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+547 +procedure {:inline 1} $1_token_get_tokendata_royalty(_$t0: $1_token_TokenDataId) returns ($ret0: $1_token_Royalty) +{ + // declare local variables + var $t1: Table int ($1_token_TokenData); + var $t2: int; + var $t3: int; + var $t4: Table int ($1_token_TokenData); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: $1_token_Royalty; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t3, select token::TokenDataId.creator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:841:9+44 + assume {:print "$at(187,35737,35781)"} true; + assume ($t3 == $t0->$creator); + + // assume Identical($t4, select token::Collections.token_data(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:842:9+69 + assume {:print "$at(187,35790,35859)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t3)->$token_data); + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+1 + assume {:print "$at(186,64474,64475)"} true; + assume {:print "$track_local(113,55,0):", $t0} $t0 == $t0; + + // $t5 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1592:31+21 + assume {:print "$at(186,64597,64618)"} true; + $t5 := $t0->$creator; + + // trace_local[creator_address]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1592:13+15 + assume {:print "$track_local(113,55,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:17+6 + assume {:print "$at(186,64636,64642)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + assume {:print "$at(186,64628,64719)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:72+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:72+26 + assume {:print "$at(186,64691,64717)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:55+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,64674,64718)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + assume {:print "$at(186,64628,64719)"} true; + assume {:print "$track_abort(113,55):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + $t9 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:58+15 + assume {:print "$at(186,64778,64793)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:31+13 + assume {:print "$at(186,64751,64764)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(186,64751,64764)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:30+55 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:13+14 + assume {:print "$track_local(113,55,1):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:17+46 + assume {:print "$at(186,64823,64869)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64823,64869)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + assume {:print "$at(186,64815,64915)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:82+25 + assume {:print "$at(186,64888,64913)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,64871,64914)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + assume {:print "$at(186,64815,64915)"} true; + assume {:print "$track_abort(113,55):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + $t9 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1597:40+14 + assume {:print "$at(186,64957,64971)"} true; +L5: + + // $t15 := table::borrow($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1597:26+44 + assume {:print "$at(186,64943,64987)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64943,64987)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // $t16 := get_field.royalty($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1598:9+18 + assume {:print "$at(186,64997,65015)"} true; + $t16 := $t15->$royalty; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1598:9+18 + assume {:print "$track_return(113,55,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 + assume {:print "$at(186,65020,65021)"} true; +L6: + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 + assume {:print "$at(186,65020,65021)"} true; + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 +L7: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 + assume {:print "$at(186,65020,65021)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+547 +procedure {:timeLimit 80} $1_token_get_tokendata_royalty$verify(_$t0: $1_token_TokenDataId) returns ($ret0: $1_token_Royalty) +{ + // declare local variables + var $t1: Table int ($1_token_TokenData); + var $t2: int; + var $t3: int; + var $t4: Table int ($1_token_TokenData); + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: $1_token_Collections; + var $t11: Table int ($1_token_TokenData); + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: $1_token_TokenData; + var $t16: $1_token_Royalty; + var $t0: $1_token_TokenDataId; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $1_token_Collections_$memory#890: $Memory $1_token_Collections; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+1 + assume {:print "$at(186,64474,64475)"} true; + assume $IsValid'$1_token_TokenDataId'($t0); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::TokenDataId.creator($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:841:9+44 + assume {:print "$at(187,35737,35781)"} true; + assume ($t3 == $t0->$creator); + + // assume Identical($t4, select token::Collections.token_data(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:842:9+69 + assume {:print "$at(187,35790,35859)"} true; + assume ($t4 == $ResourceValue($1_token_Collections_$memory, $t3)->$token_data); + + // @890 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+1 + assume {:print "$at(186,64474,64475)"} true; + $1_token_Collections_$memory#890 := $1_token_Collections_$memory; + + // trace_local[token_data_id]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1591:5+1 + assume {:print "$track_local(113,55,0):", $t0} $t0 == $t0; + + // $t5 := get_field.creator($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1592:31+21 + assume {:print "$at(186,64597,64618)"} true; + $t5 := $t0->$creator; + + // trace_local[creator_address]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1592:13+15 + assume {:print "$track_local(113,55,2):", $t5} $t5 == $t5; + + // $t6 := exists($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:17+6 + assume {:print "$at(186,64636,64642)"} true; + $t6 := $ResourceExists($1_token_Collections_$memory, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + assume {:print "$at(186,64628,64719)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:72+26 +L0: + + // $t7 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:72+26 + assume {:print "$at(186,64691,64717)"} true; + $t7 := 1; + assume $IsValid'u64'($t7); + + // $t8 := error::not_found($t7) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:55+44 + call $t8 := $1_error_not_found($t7); + if ($abort_flag) { + assume {:print "$at(186,64674,64718)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + assume {:print "$at(186,64628,64719)"} true; + assume {:print "$track_abort(113,55):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + $t9 := $t8; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1593:9+91 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:58+15 + assume {:print "$at(186,64778,64793)"} true; +L2: + + // $t10 := get_global($t5) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:31+13 + assume {:print "$at(186,64751,64764)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t5)) { + call $ExecFailureAbort(); + } else { + $t10 := $ResourceValue($1_token_Collections_$memory, $t5); + } + if ($abort_flag) { + assume {:print "$at(186,64751,64764)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // $t11 := get_field.token_data($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:30+55 + $t11 := $t10->$token_data; + + // trace_local[all_token_data]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1594:13+14 + assume {:print "$track_local(113,55,1):", $t11} $t11 == $t11; + + // $t12 := table::contains($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:17+46 + assume {:print "$at(186,64823,64869)"} true; + call $t12 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64823,64869)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // if ($t12) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + if ($t12) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + assume {:print "$at(186,64815,64915)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 +L3: + + // $t13 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:82+25 + assume {:print "$at(186,64888,64913)"} true; + $t13 := 10; + assume $IsValid'u64'($t13); + + // $t14 := error::not_found($t13) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:65+43 + call $t14 := $1_error_not_found($t13); + if ($abort_flag) { + assume {:print "$at(186,64871,64914)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + assume {:print "$at(186,64815,64915)"} true; + assume {:print "$track_abort(113,55):", $t14} $t14 == $t14; + + // $t9 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + $t9 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1595:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1597:40+14 + assume {:print "$at(186,64957,64971)"} true; +L5: + + // $t15 := table::borrow($t11, $t0) on_abort goto L7 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1597:26+44 + assume {:print "$at(186,64943,64987)"} true; + call $t15 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t11, $t0); + if ($abort_flag) { + assume {:print "$at(186,64943,64987)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,55):", $t9} $t9 == $t9; + goto L7; + } + + // $t16 := get_field.royalty($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1598:9+18 + assume {:print "$at(186,64997,65015)"} true; + $t16 := $t15->$royalty; + + // trace_return[0]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1598:9+18 + assume {:print "$track_return(113,55,0):", $t16} $t16 == $t16; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 + assume {:print "$at(186,65020,65021)"} true; +L6: + + // assert Not(Not(exists[@890]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:843:9+48 + assume {:print "$at(187,35868,35916)"} true; + assert {:msg "assert_failed(187,35868,35916): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#890, $t3); + + // assert Not(Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:844:9+63 + assume {:print "$at(187,35925,35988)"} true; + assert {:msg "assert_failed(187,35925,35988): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0); + + // return $t16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:844:9+63 + $ret0 := $t16; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1599:5+1 + assume {:print "$at(186,65020,65021)"} true; +L7: + + // assert Or(Not(exists[@890]($t3)), Not(table::spec_contains[]($t4, $t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:835:5+116 + assume {:print "$at(187,35529,35645)"} true; + assert {:msg "assert_failed(187,35529,35645): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#890, $t3) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t4, $t0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:835:5+116 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::get_tokendata_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+487 +procedure {:timeLimit 80} $1_token_get_tokendata_uri$verify(_$t0: int, _$t1: $1_token_TokenDataId) returns ($ret0: $1_string_String) +{ + // declare local variables + var $t2: Table int ($1_token_TokenData); + var $t3: Table int ($1_token_TokenData); + var $t4: bool; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: $1_token_Collections; + var $t9: Table int ($1_token_TokenData); + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: $1_token_TokenData; + var $t14: $1_string_String; + var $t0: int; + var $t1: $1_token_TokenDataId; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $1_token_Collections_$memory#898: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume {:print "$at(186,63421,63422)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t3, select token::Collections.token_data(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:824:9+61 + assume {:print "$at(187,35044,35105)"} true; + assume ($t3 == $ResourceValue($1_token_Collections_$memory, $t0)->$token_data); + + // @898 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume {:print "$at(186,63421,63422)"} true; + $1_token_Collections_$memory#898 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume {:print "$track_local(113,56,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1572:5+1 + assume {:print "$track_local(113,56,1):", $t1} $t1 == $t1; + + // $t4 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:17+6 + assume {:print "$at(186,63543,63549)"} true; + $t4 := $ResourceExists($1_token_Collections_$memory, $t0); + + // if ($t4) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 + if ($t4) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 + assume {:print "$at(186,63535,63618)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:64+26 +L0: + + // $t5 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:64+26 + assume {:print "$at(186,63590,63616)"} true; + $t5 := 1; + assume $IsValid'u64'($t5); + + // $t6 := error::not_found($t5) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:47+44 + call $t6 := $1_error_not_found($t5); + if ($abort_flag) { + assume {:print "$at(186,63573,63617)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,56):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 + assume {:print "$at(186,63535,63618)"} true; + assume {:print "$track_abort(113,56):", $t6} $t6 == $t6; + + // $t7 := move($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 + $t7 := $t6; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1573:9+83 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1574:58+7 + assume {:print "$at(186,63677,63684)"} true; +L2: + + // $t8 := get_global($t0) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1574:31+13 + assume {:print "$at(186,63650,63663)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t8 := $ResourceValue($1_token_Collections_$memory, $t0); + } + if ($abort_flag) { + assume {:print "$at(186,63650,63663)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,56):", $t7} $t7 == $t7; + goto L7; + } + + // $t9 := get_field.token_data($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1574:30+47 + $t9 := $t8->$token_data; + + // trace_local[all_token_data]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1574:13+14 + assume {:print "$track_local(113,56,2):", $t9} $t9 == $t9; + + // $t10 := table::contains($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:17+46 + assume {:print "$at(186,63714,63760)"} true; + call $t10 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,63714,63760)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,56):", $t7} $t7 == $t7; + goto L7; + } + + // if ($t10) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 + if ($t10) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 + assume {:print "$at(186,63706,63806)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 +L3: + + // $t11 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:82+25 + assume {:print "$at(186,63779,63804)"} true; + $t11 := 10; + assume $IsValid'u64'($t11); + + // $t12 := error::not_found($t11) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:65+43 + call $t12 := $1_error_not_found($t11); + if ($abort_flag) { + assume {:print "$at(186,63762,63805)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,56):", $t7} $t7 == $t7; + goto L7; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 + assume {:print "$at(186,63706,63806)"} true; + assume {:print "$track_abort(113,56):", $t12} $t12 == $t12; + + // $t7 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 + $t7 := $t12; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1575:9+100 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1577:40+14 + assume {:print "$at(186,63848,63862)"} true; +L5: + + // $t13 := table::borrow($t9, $t1) on_abort goto L7 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1577:26+44 + assume {:print "$at(186,63834,63878)"} true; + call $t13 := $1_table_borrow'$1_token_TokenDataId_$1_token_TokenData'($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,63834,63878)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,56):", $t7} $t7 == $t7; + goto L7; + } + + // $t14 := get_field.uri($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1578:9+14 + assume {:print "$at(186,63888,63902)"} true; + $t14 := $t13->$uri; + + // trace_return[0]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1578:9+14 + assume {:print "$track_return(113,56,0):", $t14} $t14 == $t14; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1579:5+1 + assume {:print "$at(186,63907,63908)"} true; +L6: + + // assert Not(Not(exists[@898]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:823:9+40 + assume {:print "$at(187,34995,35035)"} true; + assert {:msg "assert_failed(187,34995,35035): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#898, $t0); + + // assert Not(Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:825:9+63 + assume {:print "$at(187,35114,35177)"} true; + assert {:msg "assert_failed(187,35114,35177): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t3, $t1); + + // return $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:825:9+63 + $ret0 := $t14; + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1579:5+1 + assume {:print "$at(186,63907,63908)"} true; +L7: + + // assert Or(Not(exists[@898]($t0)), Not(table::spec_contains[]($t3, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:822:5+275 + assume {:print "$at(187,34908,35183)"} true; + assert {:msg "assert_failed(187,34908,35183): abort not covered by any of the `aborts_if` clauses"} + (!$ResourceExists($1_token_Collections_$memory#898, $t0) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t3, $t1)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:822:5+275 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::has_token_store [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1501:5+90 +procedure {:timeLimit 80} $1_token_has_token_store$verify(_$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; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1501:5+1 + assume {:print "$at(186,60504,60505)"} true; + assume $IsValid'address'($t0); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1501:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // trace_local[owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1501:5+1 + assume {:print "$track_local(113,57,0):", $t0} $t0 == $t0; + + // $t1 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1502:9+6 + assume {:print "$at(186,60563,60569)"} true; + $t1 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // trace_return[0]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1502:9+25 + assume {:print "$track_return(113,57,0):", $t1} $t1 == $t1; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1503:5+1 + assume {:print "$at(186,60593,60594)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1503:5+1 + assume {:print "$at(186,60593,60594)"} true; + assert {:msg "assert_failed(186,60593,60594): function does not abort under this condition"} + !false; + + // return $t1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1503:5+1 + $ret0 := $t1; + return; + +} + +// fun token::initialize_token_store [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+702 +procedure {:inline 1} $1_token_initialize_token_store(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: Table int ($1_token_Token); + var $t8: bool; + var $t9: int; + var $t10: $1_account_Account; + var $t11: $1_event_EventHandle'$1_token_DepositEvent'; + var $t12: int; + var $t13: $1_account_Account; + var $t14: $1_event_EventHandle'$1_token_WithdrawEvent'; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $1_event_EventHandle'$1_token_BurnTokenEvent'; + var $t18: int; + var $t19: $1_account_Account; + var $t20: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; + var $t21: $1_token_TokenStore; + var $t0: $signer; + var $temp_0'signer': $signer; + $t0 := _$t0; + + // bytecode translation starts here + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + assume {:print "$at(186,39511,39512)"} true; + assume {:print "$track_local(113,60,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:33+27 + assume {:print "$at(186,39597,39624)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,39597,39624)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:14+6 + $t5 := $ResourceExists($1_token_TokenStore_$memory, $t3); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:13+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:981:17+7 + assume {:print "$at(186,39666,39673)"} true; +L1: + + // $t7 := table::new() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:983:29+12 + assume {:print "$at(186,39732,39744)"} true; + call $t7 := $1_table_new'$1_token_TokenId_$1_token_Token'(); + if ($abort_flag) { + assume {:print "$at(186,39732,39744)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:984:38+5 + assume {:print "$at(186,39783,39788)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, global($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t10 == $ResourceValue($1_account_Account_$memory, $t9)); + + // $t11 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:985:37+48 + assume {:print "$at(186,39826,39874)"} true; + call $t11 := $1_account_new_event_handle'$1_token_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39826,39874)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // $t14 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:986:38+49 + assume {:print "$at(186,39913,39962)"} true; + call $t14 := $1_account_new_event_handle'$1_token_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39913,39962)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // $t17 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:987:34+50 + assume {:print "$at(186,39997,40047)"} true; + call $t17 := $1_account_new_event_handle'$1_token_BurnTokenEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39997,40047)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t19 == $ResourceValue($1_account_Account_$memory, $t18)); + + // $t20 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:988:51+63 + assume {:print "$at(186,40099,40162)"} true; + call $t20 := $1_account_new_event_handle'$1_token_MutateTokenPropertyMapEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,40099,40162)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t21 := pack token::TokenStore($t7, $t8, $t11, $t14, $t17, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:982:17+490 + assume {:print "$at(186,39691,40181)"} true; + $t21 := $1_token_TokenStore($t7, $t8, $t11, $t14, $t17, $t20); + + // move_to($t21, $t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:980:13+7 + assume {:print "$at(186,39641,39648)"} true; + if ($ResourceExists($1_token_TokenStore_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $t0->$addr, $t21); + } + if ($abort_flag) { + assume {:print "$at(186,39641,39648)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + assume {:print "$at(186,39573,40207)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + assume {:print "$at(186,39573,40207)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 + assume {:print "$at(186,40212,40213)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 + assume {:print "$at(186,40212,40213)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 +L4: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 + assume {:print "$at(186,40212,40213)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::initialize_token_store [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+702 +procedure {:timeLimit 80} $1_token_initialize_token_store$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: int; + var $t4: int; + var $t5: bool; + var $t6: bool; + var $t7: Table int ($1_token_Token); + var $t8: bool; + var $t9: int; + var $t10: $1_account_Account; + var $t11: $1_event_EventHandle'$1_token_DepositEvent'; + var $t12: int; + var $t13: $1_account_Account; + var $t14: $1_event_EventHandle'$1_token_WithdrawEvent'; + var $t15: int; + var $t16: $1_account_Account; + var $t17: $1_event_EventHandle'$1_token_BurnTokenEvent'; + var $t18: int; + var $t19: $1_account_Account; + var $t20: $1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'; + var $t21: $1_token_TokenStore; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_token_TokenStore_$memory#873: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#874: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + assume {:print "$at(186,39511,39512)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // @874 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + assume {:print "$at(186,39511,39512)"} true; + $1_account_Account_$memory#874 := $1_account_Account_$memory; + + // @873 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + $1_token_TokenStore_$memory#873 := $1_token_TokenStore_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:978:5+1 + assume {:print "$track_local(113,60,0):", $t0} $t0 == $t0; + + // $t3 := signer::address_of($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:33+27 + assume {:print "$at(186,39597,39624)"} true; + call $t3 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,39597,39624)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t5 := exists($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:14+6 + $t5 := $ResourceExists($1_token_TokenStore_$memory, $t3); + + // $t6 := !($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:13+1 + call $t6 := $Not($t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:981:17+7 + assume {:print "$at(186,39666,39673)"} true; +L1: + + // $t7 := table::new() on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:983:29+12 + assume {:print "$at(186,39732,39744)"} true; + call $t7 := $1_table_new'$1_token_TokenId_$1_token_Token'(); + if ($abort_flag) { + assume {:print "$at(186,39732,39744)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t8 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:984:38+5 + assume {:print "$at(186,39783,39788)"} true; + $t8 := false; + assume $IsValid'bool'($t8); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, global($t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t10 == $ResourceValue($1_account_Account_$memory, $t9)); + + // $t11 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:985:37+48 + assume {:print "$at(186,39826,39874)"} true; + call $t11 := $1_account_new_event_handle'$1_token_DepositEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39826,39874)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // $t14 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:986:38+49 + assume {:print "$at(186,39913,39962)"} true; + call $t14 := $1_account_new_event_handle'$1_token_WithdrawEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39913,39962)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t15, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t15 == $1_signer_$address_of($t0)); + + // assume Identical($t16, global($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t16 == $ResourceValue($1_account_Account_$memory, $t15)); + + // $t17 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:987:34+50 + assume {:print "$at(186,39997,40047)"} true; + call $t17 := $1_account_new_event_handle'$1_token_BurnTokenEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,39997,40047)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t19 == $ResourceValue($1_account_Account_$memory, $t18)); + + // $t20 := account::new_event_handle($t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:988:51+63 + assume {:print "$at(186,40099,40162)"} true; + call $t20 := $1_account_new_event_handle'$1_token_MutateTokenPropertyMapEvent'($t0); + if ($abort_flag) { + assume {:print "$at(186,40099,40162)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // $t21 := pack token::TokenStore($t7, $t8, $t11, $t14, $t17, $t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:982:17+490 + assume {:print "$at(186,39691,40181)"} true; + $t21 := $1_token_TokenStore($t7, $t8, $t11, $t14, $t17, $t20); + + // move_to($t21, $t0) on_abort goto L4 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:980:13+7 + assume {:print "$at(186,39641,39648)"} true; + if ($ResourceExists($1_token_TokenStore_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $t0->$addr, $t21); + } + if ($abort_flag) { + assume {:print "$at(186,39641,39648)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(113,60):", $t4} $t4 == $t4; + goto L4; + } + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + assume {:print "$at(186,39573,40207)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 +L0: + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:979:9+634 + assume {:print "$at(186,39573,40207)"} true; +L2: + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 + assume {:print "$at(186,40212,40213)"} true; +L3: + + // assert Not(And(Not(exists[@873]($t1)), Not(exists[@874]($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && !$ResourceExists($1_account_Account_$memory#874, $t1)); + + // assert Not(And(Not(exists[@873]($t1)), Ge(Add(select account::Account.guid_creation_num($t2), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && (($t2->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@873]($t1)), Gt(Add(select account::Account.guid_creation_num($t2), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && (($t2->$guid_creation_num + 4) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:992:5+1 + assume {:print "$at(186,40212,40213)"} true; +L4: + + // assert Or(Or(And(Not(exists[@873]($t1)), Not(exists[@874]($t1))), And(Not(exists[@873]($t1)), Ge(Add(select account::Account.guid_creation_num($t2), 4), 1125899906842624))), And(Not(exists[@873]($t1)), Gt(Add(select account::Account.guid_creation_num($t2), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:440:5+91 + assume {:print "$at(187,19142,19233)"} true; + assert {:msg "assert_failed(187,19142,19233): abort not covered by any of the `aborts_if` clauses"} + (((!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && !$ResourceExists($1_account_Account_$memory#874, $t1)) || (!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && (($t2->$guid_creation_num + 4) >= 1125899906842624))) || (!$ResourceExists($1_token_TokenStore_$memory#873, $t1) && (($t2->$guid_creation_num + 4) > 18446744073709551615))); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:440:5+91 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun token::mint_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+632 +procedure {:timeLimit 80} $1_token_mint_script$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int) returns () +{ + // declare local variables + var $t5: $1_token_TokenDataId; + var $t6: $1_token_TokenDataId; + var $t7: int; + var $t8: int; + var $t9: Table int ($1_token_TokenData); + var $t10: $1_token_TokenData; + var $t11: int; + var $t12: int; + var $t13: Table int ($1_token_TokenData); + var $t14: $1_token_TokenData; + var $t15: $1_token_TokenId; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_token_TokenDataId; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: int; + var $t25: $1_token_TokenId; + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_Collections_$memory#899: $Memory $1_token_Collections; + var $1_token_TokenStore_$memory#900: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#901: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$at(186,15824,15825)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume $IsValid'u64'($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t6, token::spec_create_token_data_id($t1, $t2, $t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:76:9+131 + assume {:print "$at(187,2673,2804)"} true; + assume ($t6 == $1_token_spec_create_token_data_id($t1, $t2, $t3)); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:81:9+39 + assume {:print "$at(187,2813,2852)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, select token::TokenDataId.creator($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:82:9+41 + assume {:print "$at(187,2861,2902)"} true; + assume ($t8 == $t6->$creator); + + // assume Identical($t9, select token::Collections.token_data(global($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:83:9+66 + assume {:print "$at(187,2911,2977)"} true; + assume ($t9 == $ResourceValue($1_token_Collections_$memory, $t8)->$token_data); + + // assume Identical($t10, table::spec_get($t9, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:84:9+64 + assume {:print "$at(187,2986,3050)"} true; + assume ($t10 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t9, $t6)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:711:9+39 + assume {:print "$at(187,30524,30563)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, select token::TokenDataId.creator($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:712:9+41 + assume {:print "$at(187,30572,30613)"} true; + assume ($t12 == $t6->$creator); + + // assume Identical($t13, select token::Collections.token_data(global($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:713:9+66 + assume {:print "$at(187,30622,30688)"} true; + assume ($t13 == $ResourceValue($1_token_Collections_$memory, $t12)->$token_data); + + // assume Identical($t14, table::spec_get($t13, $t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:714:9+64 + assume {:print "$at(187,30697,30761)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t13, $t6)); + + // assume Identical($t15, token::$create_token_id($t6, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:722:9+49 + assume {:print "$at(187,31108,31157)"} true; + assume ($t15 == $1_token_$create_token_id($t6, 0)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // @901 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$at(186,15824,15825)"} true; + $1_account_Account_$memory#901 := $1_account_Account_$memory; + + // @899 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + $1_token_Collections_$memory#899 := $1_token_Collections_$memory; + + // @900 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + $1_token_TokenStore_$memory#900 := $1_token_TokenStore_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$track_local(113,62,0):", $t0} $t0 == $t0; + + // trace_local[token_data_address]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$track_local(113,62,1):", $t1} $t1 == $t1; + + // trace_local[collection]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$track_local(113,62,2):", $t2} $t2 == $t2; + + // trace_local[name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$track_local(113,62,3):", $t3} $t3 == $t3; + + // trace_local[amount]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:469:5+1 + assume {:print "$track_local(113,62,4):", $t4} $t4 == $t4; + + // $t18 := token::create_token_data_id($t1, $t2, $t3) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:476:29+105 + assume {:print "$at(186,16057,16162)"} true; + call $t18 := $1_token_create_token_data_id($t1, $t2, $t3); + if ($abort_flag) { + assume {:print "$at(186,16057,16162)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,62):", $t19} $t19 == $t19; + goto L4; + } + + // trace_local[token_data_id]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:476:13+13 + assume {:print "$track_local(113,62,5):", $t18} $t18 == $t18; + + // $t20 := get_field.creator($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:17+21 + assume {:print "$at(186,16250,16271)"} true; + $t20 := $t18->$creator; + + // $t21 := signer::address_of($t0) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:42+27 + call $t21 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,16275,16302)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,62):", $t19} $t19 == $t19; + goto L4; + } + + // $t22 := ==($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:39+2 + $t22 := $IsEqual'address'($t20, $t21); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 + assume {:print "$at(186,16242,16350)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 +L0: + + // $t23 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:96+19 + assume {:print "$at(186,16329,16348)"} true; + $t23 := 19; + assume $IsValid'u64'($t23); + + // $t24 := error::permission_denied($t23) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:71+45 + call $t24 := $1_error_permission_denied($t23); + if ($abort_flag) { + assume {:print "$at(186,16304,16349)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,62):", $t19} $t19 == $t19; + goto L4; + } + + // trace_abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 + assume {:print "$at(186,16242,16350)"} true; + assume {:print "$track_abort(113,62):", $t24} $t24 == $t24; + + // $t19 := move($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 + $t19 := $t24; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:482:9+108 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:484:13+7 + assume {:print "$at(186,16384,16391)"} true; +L2: + + // $t25 := token::mint_token($t0, $t18, $t4) on_abort goto L4 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:483:9+89 + assume {:print "$at(186,16360,16449)"} true; + call $t25 := $1_token_mint_token($t0, $t18, $t4); + if ($abort_flag) { + assume {:print "$at(186,16360,16449)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(113,62):", $t19} $t19 == $t19; + goto L4; + } + + // drop($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:483:9+89 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:488:5+1 + assume {:print "$at(186,16455,16456)"} true; +L3: + + // assert Not(Neq
(select token::TokenDataId.creator($t6), signer::$address_of[]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:85:9+63 + assume {:print "$at(187,3059,3122)"} true; + assert {:msg "assert_failed(187,3059,3122): function does not abort under this condition"} + !!$IsEqual'address'($t6->$creator, $1_signer_$address_of($t0)); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 128); + + // assert Not(Neq
(select token::TokenDataId.creator($t6), $t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:715:9+40 + assume {:print "$at(187,30770,30810)"} true; + assert {:msg "assert_failed(187,30770,30810): function does not abort under this condition"} + !!$IsEqual'address'($t6->$creator, $t11); + + // assert Not(Not(table::spec_contains[]($t13, $t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:716:9+63 + assume {:print "$at(187,30819,30882)"} true; + assert {:msg "assert_failed(187,30819,30882): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t13, $t6); + + // assert Not(And(Gt(select token::TokenData.maximum($t14), 0), Gt(Add(select token::TokenData.supply($t14), $t4), select token::TokenData.maximum($t14)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:717:9+84 + assume {:print "$at(187,30891,30975)"} true; + assert {:msg "assert_failed(187,30891,30975): function does not abort under this condition"} + !(($t14->$maximum > 0) && (($t14->$supply + $t4) > $t14->$maximum)); + + // assert Not(Not(exists[@899]($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:718:9+45 + assume {:print "$at(187,30984,31029)"} true; + assert {:msg "assert_failed(187,30984,31029): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#899, $t12); + + // assert Not(Le($t4, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:719:9+22 + assume {:print "$at(187,31038,31060)"} true; + assert {:msg "assert_failed(187,31038,31060): function does not abort under this condition"} + !($t4 <= 0); + + // assert Not(And(Not(exists[@900]($t16)), Not(exists[@901]($t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#900, $t16) && !$ResourceExists($1_account_Account_$memory#901, $t16)); + + // assert Not(And(Not(exists[@900]($t16)), Ge(Add(select account::Account.guid_creation_num($t17), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#900, $t16) && (($t17->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@900]($t16)), Gt(Add(select account::Account.guid_creation_num($t17), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#900, $t16) && (($t17->$guid_creation_num + 4) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:488:5+1 + assume {:print "$at(186,16455,16456)"} true; +L4: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:488:5+1 + assume {:print "$at(186,16455,16456)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun token::mint_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1375:5+1587 +procedure {:inline 1} $1_token_mint_token(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: int) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t3: $1_token_TokenDataId; + var $t4: $Mutation (Table int ($1_token_TokenData)); + var $t5: int; + var $t6: $Mutation ($1_token_TokenData); + var $t7: $1_token_TokenId; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: $Mutation ($1_token_Collections); + var $t16: $Mutation (Table int ($1_token_TokenData)); + var $t17: Table int ($1_token_TokenData); + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_token_TokenData); + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $Mutation (int); + var $t34: int; + var $t35: $1_token_TokenId; + var $t36: bool; + var $t37: $1_token_MintToken; + var $t38: $Mutation ($1_token_Collections); + var $t39: $Mutation ($1_event_EventHandle'$1_token_MintTokenEvent'); + var $t40: $1_token_MintTokenEvent; + var $t41: $1_property_map_PropertyMap; + var $t42: $1_token_Token; + var $t43: int; + var $t44: $1_token_TokenId; + var $t45: int; + var $t46: int; + var $t47: $1_account_Account; + var $t48: $1_token_TokenStore; + var $t49: $1_token_Token; + var $t50: bool; + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: int; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + 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[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1375:5+1 + assume {:print "$at(186,55640,55641)"} true; + assume {:print "$track_local(113,63,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1375:5+1 + assume {:print "$track_local(113,63,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1375:5+1 + assume {:print "$track_local(113,63,2):", $t2} $t2 == $t2; + + // $t8 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:17+21 + assume {:print "$at(186,55812,55833)"} true; + $t8 := $t1->$creator; + + // $t9 := signer::address_of($t0) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:42+27 + call $t9 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,55837,55864)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t11 := ==($t8, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:39+2 + $t11 := $IsEqual'address'($t8, $t9); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 + assume {:print "$at(186,55804,55912)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 +L0: + + // $t12 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:96+19 + assume {:print "$at(186,55891,55910)"} true; + $t12 := 19; + assume $IsValid'u64'($t12); + + // $t13 := error::permission_denied($t12) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:71+45 + call $t13 := $1_error_permission_denied($t12); + if ($abort_flag) { + assume {:print "$at(186,55866,55911)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 + assume {:print "$at(186,55804,55912)"} true; + assume {:print "$track_abort(113,63):", $t13} $t13 == $t13; + + // $t10 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 + $t10 := $t13; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1380:9+108 + goto L15; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1381:28+13 + assume {:print "$at(186,55941,55954)"} true; +L2: + + // $t14 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1381:28+21 + assume {:print "$at(186,55941,55962)"} true; + $t14 := $t1->$creator; + + // trace_local[creator_addr]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1381:13+12 + assume {:print "$track_local(113,63,5):", $t14} $t14 == $t14; + + // $t15 := borrow_global($t14) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1382:35+17 + assume {:print "$at(186,55998,56015)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t15 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(186,55998,56015)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t16 := borrow_field.token_data($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1382:30+60 + $t16 := $ChildMutation($t15, 1, $Dereference($t15)->$token_data); + + // trace_local[all_token_data]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1382:13+14 + $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' := $Dereference($t16); + assume {:print "$track_local(113,63,4):", $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''} $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' == $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''; + + // $t17 := read_ref($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:32+31 + assume {:print "$at(186,56086,56117)"} true; + $t17 := $Dereference($t16); + + // $t18 := table::contains($t17, $t1) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:17+46 + call $t18 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(186,56071,56117)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // if ($t18) goto L4 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + if ($t18) { goto L4; } else { goto L16; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + assume {:print "$at(186,56063,56163)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 +L3: + + // drop($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + assume {:print "$at(186,56063,56163)"} true; + + // $t19 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:82+25 + $t19 := 10; + assume $IsValid'u64'($t19); + + // $t20 := error::not_found($t19) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:65+43 + call $t20 := $1_error_not_found($t19); + if ($abort_flag) { + assume {:print "$at(186,56119,56162)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + assume {:print "$at(186,56063,56163)"} true; + assume {:print "$track_abort(113,63):", $t20} $t20 == $t20; + + // $t10 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + $t10 := $t20; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1383:9+100 + goto L15; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1384:44+14 + assume {:print "$at(186,56208,56222)"} true; +L5: + + // $t21 := table::borrow_mut($t16, $t1) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1384:26+48 + assume {:print "$at(186,56190,56238)"} true; + call $t21,$t16 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t16, $t1); + if ($abort_flag) { + assume {:print "$at(186,56190,56238)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_local[token_data]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1384:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t21); + assume {:print "$track_local(113,63,6):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t22 := get_field.maximum($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:13+18 + assume {:print "$at(186,56253,56271)"} true; + $t22 := $Dereference($t21)->$maximum; + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:34+1 + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t24 := >($t22, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:32+1 + call $t24 := $Gt($t22, $t23); + + // if ($t24) goto L7 else goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:9+229 + if ($t24) { goto L7; } else { goto L17; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:21+10 + assume {:print "$at(186,56299,56309)"} true; +L7: + + // $t25 := get_field.supply($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:21+17 + assume {:print "$at(186,56299,56316)"} true; + $t25 := $Dereference($t21)->$supply; + + // $t26 := +($t25, $t2) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:39+1 + call $t26 := $AddU64($t25, $t2); + if ($abort_flag) { + assume {:print "$at(186,56317,56318)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t27 := get_field.maximum($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:51+18 + $t27 := $Dereference($t21)->$maximum; + + // $t28 := <=($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:48+2 + call $t28 := $Le($t26, $t27); + + // if ($t28) goto L9 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + if ($t28) { goto L9; } else { goto L18; } + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 +L9: + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + assume {:print "$at(186,56291,56407)"} true; + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 +L8: + + // drop($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + assume {:print "$at(186,56291,56407)"} true; + + // $t29 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:95+32 + $t29 := 7; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_argument($t29) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:71+57 + call $t30 := $1_error_invalid_argument($t29); + if ($abort_flag) { + assume {:print "$at(186,56349,56406)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + assume {:print "$at(186,56291,56407)"} true; + assume {:print "$track_abort(113,63):", $t30} $t30 == $t30; + + // $t10 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + $t10 := $t30; + + // goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1387:13+116 + goto L15; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:33+10 + assume {:print "$at(186,56441,56451)"} true; +L10: + + // $t31 := get_field.supply($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:33+17 + assume {:print "$at(186,56441,56458)"} true; + $t31 := $Dereference($t21)->$supply; + + // $t32 := +($t31, $t2) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:51+1 + call $t32 := $AddU64($t31, $t2); + if ($abort_flag) { + assume {:print "$at(186,56459,56460)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t33 := borrow_field.supply($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+17 + $t33 := $ChildMutation($t21, 2, $Dereference($t21)->$supply); + + // write_ref($t33, $t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+46 + $t33 := $UpdateMutation($t33, $t32); + + // write_back[Reference($t21).supply (u64)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+46 + $t21 := $UpdateMutation($t21, $Update'$1_token_TokenData'_supply($Dereference($t21), $Dereference($t33))); + + // write_back[Reference($t16)[]]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+46 + $t16 := $UpdateMutation($t16, UpdateTable($Dereference($t16), ReadVec($t21->p, LenVec($t16->p)), $Dereference($t21))); + + // write_back[Reference($t15).token_data (table::Table)]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+46 + $t15 := $UpdateMutation($t15, $Update'$1_token_Collections'_token_data($Dereference($t15), $Dereference($t16))); + + // write_back[token::Collections@]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:13+46 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t15), + $Dereference($t15)); + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1388:59+1 + goto L11; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:9+229 + assume {:print "$at(186,56249,56478)"} true; +L6: + + // drop($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1386:9+229 + assume {:print "$at(186,56249,56478)"} true; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1392:40+13 + assume {:print "$at(186,56574,56587)"} true; +L11: + + // $t34 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1392:55+1 + assume {:print "$at(186,56589,56590)"} true; + $t34 := 0; + assume $IsValid'u64'($t34); + + // $t35 := token::create_token_id($t1, $t34) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1392:24+33 + call $t35 := $1_token_create_token_id($t1, $t34); + if ($abort_flag) { + assume {:print "$at(186,56558,56591)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_local[token_id]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1392:13+8 + assume {:print "$track_local(113,63,7):", $t35} $t35 == $t35; + + // $t36 := features::module_event_migration_enabled() on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1393:13+47 + assume {:print "$at(186,56605,56652)"} true; + call $t36 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,56605,56652)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // if ($t36) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1393:9+129 + if ($t36) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1394:41+13 + assume {:print "$at(186,56696,56709)"} true; +L13: + + // $t37 := pack token::MintToken($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1394:25+39 + assume {:print "$at(186,56680,56719)"} true; + $t37 := $1_token_MintToken($t1, $t2); + + // opaque begin: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1394:13+52 + + // opaque end: event::emit($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1394:13+52 + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1397:49+12 + assume {:print "$at(186,56823,56835)"} true; +L12: + + // $t38 := borrow_global($t14) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1397:18+17 + assume {:print "$at(186,56792,56809)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t14)) { + call $ExecFailureAbort(); + } else { + $t38 := $Mutation($Global($t14), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t14)); + } + if ($abort_flag) { + assume {:print "$at(186,56792,56809)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t39 := borrow_field.mint_token_events($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1397:13+67 + $t39 := $ChildMutation($t38, 4, $Dereference($t38)->$mint_token_events); + + // $t40 := pack token::MintTokenEvent($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1398:13+89 + assume {:print "$at(186,56868,56957)"} true; + $t40 := $1_token_MintTokenEvent($t1, $t2); + + // opaque begin: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1396:9+227 + assume {:print "$at(186,56740,56967)"} true; + + // opaque end: event::emit_event($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1396:9+227 + + // write_back[Reference($t38).mint_token_events (event::EventHandle)]($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1396:9+227 + $t38 := $UpdateMutation($t38, $Update'$1_token_Collections'_mint_token_events($Dereference($t38), $Dereference($t39))); + + // write_back[token::Collections@]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1396:9+227 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t38), + $Dereference($t38)); + + // $t41 := property_map::empty() on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1408:35+21 + assume {:print "$at(186,57109,57130)"} true; + call $t41 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(186,57109,57130)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // $t42 := pack token::Token($t35, $t2, $t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1405:13+179 + assume {:print "$at(186,57013,57192)"} true; + $t42 := $1_token_Token($t35, $t2, $t41); + + // assume Identical($t43, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t43 == $1_signer_$address_of($t0)); + + // assume Identical($t44, select token::Token.id($t42)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t44 == $t42->$id); + + // assume Identical($t45, select token::Token.amount($t42)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t45 == $t42->$amount); + + // assume Identical($t46, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t46 == $1_signer_$address_of($t0)); + + // assume Identical($t47, global($t46)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t47 == $ResourceValue($1_account_Account_$memory, $t46)); + + // assume Identical($t48, global($t43)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t48 == $ResourceValue($1_token_TokenStore_$memory, $t43)); + + // assume Identical($t49, table::spec_get(select token::TokenStore.tokens($t48), $t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t49 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t48->$tokens, $t44)); + + // assume Identical($t50, table::spec_contains(select token::TokenStore.tokens($t48), $t44)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t50 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t48->$tokens, $t44)); + + // token::deposit_token($t0, $t42) on_abort goto L15 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1404:9+224 + assume {:print "$at(186,56978,57202)"} true; + call $1_token_deposit_token($t0, $t42); + if ($abort_flag) { + assume {:print "$at(186,56978,57202)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,63):", $t10} $t10 == $t10; + goto L15; + } + + // trace_return[0]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1412:9+8 + assume {:print "$at(186,57213,57221)"} true; + assume {:print "$track_return(113,63,0):", $t35} $t35 == $t35; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1413:5+1 + assume {:print "$at(186,57226,57227)"} true; +L14: + + // return $t35 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1413:5+1 + assume {:print "$at(186,57226,57227)"} true; + $ret0 := $t35; + return; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1413:5+1 +L15: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1413:5+1 + assume {:print "$at(186,57226,57227)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L16 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L16: + + // drop($t15) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + + // label L17 at :1:1+10 +L17: + + // drop($t15) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t16) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + + // label L18 at :1:1+10 +L18: + + // drop($t15) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t16) at :1:1+10 + + // goto L8 at :1:1+10 + goto L8; + +} + +// fun token::mint_token_to [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1864 +procedure {:timeLimit 80} $1_token_mint_token_to$verify(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenDataId, _$t3: int) returns () +{ + // declare local variables + var $t4: $1_token_TokenDataId; + var $t5: $Mutation (Table int ($1_token_TokenData)); + var $t6: int; + var $t7: $Mutation ($1_token_TokenData); + var $t8: $1_token_TokenId; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: Table int ($1_token_TokenData); + var $t13: $1_token_TokenData; + var $t14: $1_token_TokenId; + var $t15: $1_token_TokenStore; + var $t16: $1_token_Token; + var $t17: bool; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: int; + var $t22: $1_token_TokenStore; + var $t23: bool; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: $Mutation ($1_token_Collections); + var $t33: $Mutation (Table int ($1_token_TokenData)); + var $t34: Table int ($1_token_TokenData); + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: $Mutation ($1_token_TokenData); + var $t39: int; + var $t40: int; + var $t41: bool; + var $t42: int; + var $t43: int; + var $t44: int; + var $t45: bool; + var $t46: int; + var $t47: int; + var $t48: int; + var $t49: int; + var $t50: $Mutation (int); + var $t51: int; + var $t52: $1_token_TokenId; + var $t53: bool; + var $t54: $1_token_MintToken; + var $t55: $Mutation ($1_token_Collections); + var $t56: $Mutation ($1_event_EventHandle'$1_token_MintTokenEvent'); + var $t57: $1_token_MintTokenEvent; + var $t58: $1_property_map_PropertyMap; + var $t59: $1_token_Token; + var $t60: $1_token_TokenId; + var $t61: int; + var $t62: $1_token_TokenStore; + var $t63: $1_token_Token; + var $t64: bool; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenDataId; + var $t3: int; + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_TokenStore_$memory#902: $Memory $1_token_TokenStore; + var $1_token_Collections_$memory#903: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$at(186,57343,57344)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume $IsValid'$1_token_TokenDataId'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume $IsValid'u64'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:738:9+39 + assume {:print "$at(187,31730,31769)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, select token::TokenStore.direct_transfer(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:739:9+67 + assume {:print "$at(187,31778,31845)"} true; + assume ($t10 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$direct_transfer); + + // assume Identical($t11, select token::TokenDataId.creator($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:740:9+41 + assume {:print "$at(187,31854,31895)"} true; + assume ($t11 == $t2->$creator); + + // assume Identical($t12, select token::Collections.token_data(global($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:741:9+66 + assume {:print "$at(187,31904,31970)"} true; + assume ($t12 == $ResourceValue($1_token_Collections_$memory, $t11)->$token_data); + + // assume Identical($t13, table::spec_get($t12, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:742:9+64 + assume {:print "$at(187,31979,32043)"} true; + assume ($t13 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t12, $t2)); + + // assume Identical($t14, token::$create_token_id($t2, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:751:9+49 + assume {:print "$at(187,32437,32486)"} true; + assume ($t14 == $1_token_$create_token_id($t2, 0)); + + // assume Identical($t15, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t15 == $ResourceValue($1_token_TokenStore_$memory, $t1)); + + // assume Identical($t16, table::spec_get(select token::TokenStore.tokens($t15), $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t16 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t15->$tokens, $t14)); + + // assume Identical($t17, table::spec_contains(select token::TokenStore.tokens($t15), $t14)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t17 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t15->$tokens, $t14)); + + // @903 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$at(186,57343,57344)"} true; + $1_token_Collections_$memory#903 := $1_token_Collections_$memory; + + // @902 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + $1_token_TokenStore_$memory#902 := $1_token_TokenStore_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$track_local(113,64,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$track_local(113,64,1):", $t1} $t1 == $t1; + + // trace_local[token_data_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$track_local(113,64,2):", $t2} $t2 == $t2; + + // trace_local[amount]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1416:5+1 + assume {:print "$track_local(113,64,3):", $t3} $t3 == $t3; + + // $t18 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:17+6 + assume {:print "$at(186,57536,57542)"} true; + $t18 := $ResourceExists($1_token_TokenStore_$memory, $t1); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 + assume {:print "$at(186,57528,57611)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 +L0: + + // $t19 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:64+26 + assume {:print "$at(186,57583,57609)"} true; + $t19 := 11; + assume $IsValid'u64'($t19); + + // $t20 := error::not_found($t19) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:47+44 + call $t20 := $1_error_not_found($t19); + if ($abort_flag) { + assume {:print "$at(186,57566,57610)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 + assume {:print "$at(186,57528,57611)"} true; + assume {:print "$track_abort(113,64):", $t20} $t20 == $t20; + + // $t21 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 + $t21 := $t20; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1422:9+83 + goto L21; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1423:57+8 + assume {:print "$at(186,57669,57677)"} true; +L2: + + // $t22 := get_global($t1) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1423:31+13 + assume {:print "$at(186,57643,57656)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t22 := $ResourceValue($1_token_TokenStore_$memory, $t1); + } + if ($abort_flag) { + assume {:print "$at(186,57643,57656)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t23 := get_field.direct_transfer($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1423:31+51 + $t23 := $t22->$direct_transfer; + + // if ($t23) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 + assume {:print "$at(186,57704,57788)"} true; + if ($t23) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 + assume {:print "$at(186,57704,57788)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 +L3: + + // $t24 := 16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:59+32 + assume {:print "$at(186,57754,57786)"} true; + $t24 := 16; + assume $IsValid'u64'($t24); + + // $t25 := error::permission_denied($t24) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:34+58 + call $t25 := $1_error_permission_denied($t24); + if ($abort_flag) { + assume {:print "$at(186,57729,57787)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_abort($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 + assume {:print "$at(186,57704,57788)"} true; + assume {:print "$track_abort(113,64):", $t25} $t25 == $t25; + + // $t21 := move($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 + $t21 := $t25; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1424:9+84 + goto L21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:17+13 + assume {:print "$at(186,57807,57820)"} true; +L5: + + // $t26 := get_field.creator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:17+21 + assume {:print "$at(186,57807,57828)"} true; + $t26 := $t2->$creator; + + // $t27 := signer::address_of($t0) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:42+27 + call $t27 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,57832,57859)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t28 := ==($t26, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:39+2 + $t28 := $IsEqual'address'($t26, $t27); + + // if ($t28) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 + if ($t28) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 + assume {:print "$at(186,57799,57907)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:96+19 +L6: + + // $t29 := 19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:96+19 + assume {:print "$at(186,57886,57905)"} true; + $t29 := 19; + assume $IsValid'u64'($t29); + + // $t30 := error::permission_denied($t29) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:71+45 + call $t30 := $1_error_permission_denied($t29); + if ($abort_flag) { + assume {:print "$at(186,57861,57906)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 + assume {:print "$at(186,57799,57907)"} true; + assume {:print "$track_abort(113,64):", $t30} $t30 == $t30; + + // $t21 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 + $t21 := $t30; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1426:9+108 + goto L21; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1427:28+13 + assume {:print "$at(186,57936,57949)"} true; +L8: + + // $t31 := get_field.creator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1427:28+21 + assume {:print "$at(186,57936,57957)"} true; + $t31 := $t2->$creator; + + // trace_local[creator_addr]($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1427:13+12 + assume {:print "$track_local(113,64,6):", $t31} $t31 == $t31; + + // $t32 := borrow_global($t31) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1428:35+17 + assume {:print "$at(186,57993,58010)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t31)) { + call $ExecFailureAbort(); + } else { + $t32 := $Mutation($Global($t31), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t31)); + } + if ($abort_flag) { + assume {:print "$at(186,57993,58010)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t33 := borrow_field.token_data($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1428:30+60 + $t33 := $ChildMutation($t32, 1, $Dereference($t32)->$token_data); + + // trace_local[all_token_data]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1428:13+14 + $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' := $Dereference($t33); + assume {:print "$track_local(113,64,5):", $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''} $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' == $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''; + + // $t34 := read_ref($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:32+31 + assume {:print "$at(186,58081,58112)"} true; + $t34 := $Dereference($t33); + + // $t35 := table::contains($t34, $t2) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:17+46 + call $t35 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t34, $t2); + if ($abort_flag) { + assume {:print "$at(186,58066,58112)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // if ($t35) goto L10 else goto L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + if ($t35) { goto L10; } else { goto L22; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + assume {:print "$at(186,58058,58158)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 +L9: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + assume {:print "$at(186,58058,58158)"} true; + + // $t36 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:82+25 + $t36 := 10; + assume $IsValid'u64'($t36); + + // $t37 := error::not_found($t36) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:65+43 + call $t37 := $1_error_not_found($t36); + if ($abort_flag) { + assume {:print "$at(186,58114,58157)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_abort($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + assume {:print "$at(186,58058,58158)"} true; + assume {:print "$track_abort(113,64):", $t37} $t37 == $t37; + + // $t21 := move($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + $t21 := $t37; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1429:9+100 + goto L21; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1430:44+14 + assume {:print "$at(186,58203,58217)"} true; +L11: + + // $t38 := table::borrow_mut($t33, $t2) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1430:26+48 + assume {:print "$at(186,58185,58233)"} true; + call $t38,$t33 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t33, $t2); + if ($abort_flag) { + assume {:print "$at(186,58185,58233)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_local[token_data]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1430:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t38); + assume {:print "$track_local(113,64,7):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t39 := get_field.maximum($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:13+18 + assume {:print "$at(186,58248,58266)"} true; + $t39 := $Dereference($t38)->$maximum; + + // $t40 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:34+1 + $t40 := 0; + assume $IsValid'u64'($t40); + + // $t41 := >($t39, $t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:32+1 + call $t41 := $Gt($t39, $t40); + + // if ($t41) goto L13 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:9+229 + if ($t41) { goto L13; } else { goto L23; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:21+10 + assume {:print "$at(186,58294,58304)"} true; +L13: + + // $t42 := get_field.supply($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:21+17 + assume {:print "$at(186,58294,58311)"} true; + $t42 := $Dereference($t38)->$supply; + + // $t43 := +($t42, $t3) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:39+1 + call $t43 := $AddU64($t42, $t3); + if ($abort_flag) { + assume {:print "$at(186,58312,58313)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t44 := get_field.maximum($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:51+18 + $t44 := $Dereference($t38)->$maximum; + + // $t45 := <=($t43, $t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:48+2 + call $t45 := $Le($t43, $t44); + + // if ($t45) goto L15 else goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + if ($t45) { goto L15; } else { goto L24; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 +L15: + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + assume {:print "$at(186,58286,58402)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 +L14: + + // drop($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + assume {:print "$at(186,58286,58402)"} true; + + // $t46 := 7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:95+32 + $t46 := 7; + assume $IsValid'u64'($t46); + + // $t47 := error::invalid_argument($t46) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:71+57 + call $t47 := $1_error_invalid_argument($t46); + if ($abort_flag) { + assume {:print "$at(186,58344,58401)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_abort($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + assume {:print "$at(186,58286,58402)"} true; + assume {:print "$track_abort(113,64):", $t47} $t47 == $t47; + + // $t21 := move($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + $t21 := $t47; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1433:13+116 + goto L21; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:33+10 + assume {:print "$at(186,58436,58446)"} true; +L16: + + // $t48 := get_field.supply($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:33+17 + assume {:print "$at(186,58436,58453)"} true; + $t48 := $Dereference($t38)->$supply; + + // $t49 := +($t48, $t3) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:51+1 + call $t49 := $AddU64($t48, $t3); + if ($abort_flag) { + assume {:print "$at(186,58454,58455)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t50 := borrow_field.supply($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+17 + $t50 := $ChildMutation($t38, 2, $Dereference($t38)->$supply); + + // write_ref($t50, $t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+46 + $t50 := $UpdateMutation($t50, $t49); + + // write_back[Reference($t38).supply (u64)]($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+46 + $t38 := $UpdateMutation($t38, $Update'$1_token_TokenData'_supply($Dereference($t38), $Dereference($t50))); + + // write_back[Reference($t33)[]]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+46 + $t33 := $UpdateMutation($t33, UpdateTable($Dereference($t33), ReadVec($t38->p, LenVec($t33->p)), $Dereference($t38))); + + // write_back[Reference($t32).token_data (table::Table)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+46 + $t32 := $UpdateMutation($t32, $Update'$1_token_Collections'_token_data($Dereference($t32), $Dereference($t33))); + + // write_back[token::Collections@]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:13+46 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t32), + $Dereference($t32)); + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1434:59+1 + goto L17; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:9+229 + assume {:print "$at(186,58244,58473)"} true; +L12: + + // drop($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1432:9+229 + assume {:print "$at(186,58244,58473)"} true; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1438:40+13 + assume {:print "$at(186,58569,58582)"} true; +L17: + + // $t51 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1438:55+1 + assume {:print "$at(186,58584,58585)"} true; + $t51 := 0; + assume $IsValid'u64'($t51); + + // $t52 := token::create_token_id($t2, $t51) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1438:24+33 + call $t52 := $1_token_create_token_id($t2, $t51); + if ($abort_flag) { + assume {:print "$at(186,58553,58586)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // trace_local[token_id]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1438:13+8 + assume {:print "$track_local(113,64,8):", $t52} $t52 == $t52; + + // $t53 := features::module_event_migration_enabled() on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1440:13+47 + assume {:print "$at(186,58601,58648)"} true; + call $t53 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,58601,58648)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // if ($t53) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1440:9+129 + if ($t53) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1441:41+13 + assume {:print "$at(186,58692,58705)"} true; +L19: + + // $t54 := pack token::MintToken($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1441:25+39 + assume {:print "$at(186,58676,58715)"} true; + $t54 := $1_token_MintToken($t2, $t3); + + // opaque begin: event::emit($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1441:13+52 + + // opaque end: event::emit($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1441:13+52 + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1444:49+12 + assume {:print "$at(186,58819,58831)"} true; +L18: + + // $t55 := borrow_global($t31) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1444:18+17 + assume {:print "$at(186,58788,58805)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t31)) { + call $ExecFailureAbort(); + } else { + $t55 := $Mutation($Global($t31), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t31)); + } + if ($abort_flag) { + assume {:print "$at(186,58788,58805)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t56 := borrow_field.mint_token_events($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1444:13+67 + $t56 := $ChildMutation($t55, 4, $Dereference($t55)->$mint_token_events); + + // $t57 := pack token::MintTokenEvent($t2, $t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1445:13+89 + assume {:print "$at(186,58864,58953)"} true; + $t57 := $1_token_MintTokenEvent($t2, $t3); + + // opaque begin: event::emit_event($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1443:9+227 + assume {:print "$at(186,58736,58963)"} true; + + // opaque end: event::emit_event($t56, $t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1443:9+227 + + // write_back[Reference($t55).mint_token_events (event::EventHandle)]($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1443:9+227 + $t55 := $UpdateMutation($t55, $Update'$1_token_Collections'_mint_token_events($Dereference($t55), $Dereference($t56))); + + // write_back[token::Collections@]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1443:9+227 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t55), + $Dereference($t55)); + + // $t58 := property_map::empty() on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1455:35+21 + assume {:print "$at(186,59107,59128)"} true; + call $t58 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(186,59107,59128)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // $t59 := pack token::Token($t52, $t3, $t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1452:13+179 + assume {:print "$at(186,59011,59190)"} true; + $t59 := $1_token_Token($t52, $t3, $t58); + + // assume Identical($t60, select token::Token.id($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t60 == $t59->$id); + + // assume Identical($t61, select token::Token.amount($t59)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t61 == $t59->$amount); + + // assume Identical($t62, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t62 == $ResourceValue($1_token_TokenStore_$memory, $t1)); + + // assume Identical($t63, table::spec_get(select token::TokenStore.tokens($t62), $t60)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t63 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t62->$tokens, $t60)); + + // assume Identical($t64, table::spec_contains(select token::TokenStore.tokens($t62), $t60)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t64 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t62->$tokens, $t60)); + + // token::direct_deposit($t1, $t59) on_abort goto L21 with $t21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1451:9+226 + assume {:print "$at(186,58974,59200)"} true; + call $1_token_direct_deposit($t1, $t59); + if ($abort_flag) { + assume {:print "$at(186,58974,59200)"} true; + $t21 := $abort_code; + assume {:print "$track_abort(113,64):", $t21} $t21 == $t21; + goto L21; + } + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1458:5+1 + assume {:print "$at(186,59206,59207)"} true; +L20: + + // assert Not(Not(exists[@902]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:743:9+40 + assume {:print "$at(187,32052,32092)"} true; + assert {:msg "assert_failed(187,32052,32092): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#902, $t1); + + // assert Not(Not($t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:744:9+27 + assume {:print "$at(187,32101,32128)"} true; + assert {:msg "assert_failed(187,32101,32128): function does not abort under this condition"} + !!$t10; + + // assert Not(Neq
(select token::TokenDataId.creator($t2), $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:745:9+40 + assume {:print "$at(187,32137,32177)"} true; + assert {:msg "assert_failed(187,32137,32177): function does not abort under this condition"} + !!$IsEqual'address'($t2->$creator, $t9); + + // assert Not(Not(table::spec_contains[]($t12, $t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:746:9+63 + assume {:print "$at(187,32186,32249)"} true; + assert {:msg "assert_failed(187,32186,32249): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t12, $t2); + + // assert Not(And(Gt(select token::TokenData.maximum($t13), 0), Gt(Add(select token::TokenData.supply($t13), $t3), select token::TokenData.maximum($t13)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:747:9+84 + assume {:print "$at(187,32258,32342)"} true; + assert {:msg "assert_failed(187,32258,32342): function does not abort under this condition"} + !(($t13->$maximum > 0) && (($t13->$supply + $t3) > $t13->$maximum)); + + // assert Not(Le($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:748:9+22 + assume {:print "$at(187,32351,32373)"} true; + assert {:msg "assert_failed(187,32351,32373): function does not abort under this condition"} + !($t3 <= 0); + + // assert Not(Not(exists[@903]($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:749:9+45 + assume {:print "$at(187,32382,32427)"} true; + assert {:msg "assert_failed(187,32382,32427): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#903, $t11); + + // assert Not(Le($t3, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:909:9+28 + assume {:print "$at(187,38303,38331)"} true; + assert {:msg "assert_failed(187,38303,38331): function does not abort under this condition"} + !($t3 <= 0); + + // assert Not(Not(exists[@902]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:910:9+44 + assume {:print "$at(187,38340,38384)"} true; + assert {:msg "assert_failed(187,38340,38384): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#902, $t1); + + // assert Not(And($t17, Neq(select token::Token.id($t16), $t14))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:911:9+46 + assume {:print "$at(187,38393,38439)"} true; + assert {:msg "assert_failed(187,38393,38439): function does not abort under this condition"} + !($t17 && !$IsEqual'$1_token_TokenId'($t16->$id, $t14)); + + // assert Not(And($t17, Gt(Add(select token::Token.amount($t16), $t3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + assume {:print "$at(187,38448,38511)"} true; + assert {:msg "assert_failed(187,38448,38511): function does not abort under this condition"} + !($t17 && (($t16->$amount + $t3) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:912:9+63 + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1458:5+1 + assume {:print "$at(186,59206,59207)"} true; +L21: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Or(Or(Not(exists[@902]($t1)), Not($t10)), Neq
(select token::TokenDataId.creator($t2), $t9)), Not(table::spec_contains[]($t12, $t2))), And(Gt(select token::TokenData.maximum($t13), 0), Gt(Add(select token::TokenData.supply($t13), $t3), select token::TokenData.maximum($t13)))), Le($t3, 0)), Not(exists[@903]($t11))), Le($t3, 0)), Not(exists[@902]($t1))), And($t17, Neq(select token::Token.id($t16), $t14))), And($t17, Gt(Add(select token::Token.amount($t16), $t3), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:732:5+1062 + assume {:print "$at(187,31584,32646)"} true; + assert {:msg "assert_failed(187,31584,32646): abort not covered by any of the `aborts_if` clauses"} + ((((((((((!$ResourceExists($1_token_TokenStore_$memory#902, $t1) || !$t10) || !$IsEqual'address'($t2->$creator, $t9)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t12, $t2)) || (($t13->$maximum > 0) && (($t13->$supply + $t3) > $t13->$maximum))) || ($t3 <= 0)) || !$ResourceExists($1_token_Collections_$memory#903, $t11)) || ($t3 <= 0)) || !$ResourceExists($1_token_TokenStore_$memory#902, $t1)) || ($t17 && !$IsEqual'$1_token_TokenId'($t16->$id, $t14))) || ($t17 && (($t16->$amount + $t3) > 18446744073709551615))); + + // abort($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:732:5+1062 + $abort_code := $t21; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t32) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L9 at :1:1+10 + goto L9; + + // label L23 at :1:1+10 +L23: + + // drop($t32) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t33) at :1:1+10 + + // goto L12 at :1:1+10 + goto L12; + + // label L24 at :1:1+10 +L24: + + // drop($t32) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t33) at :1:1+10 + + // goto L14 at :1:1+10 + goto L14; + +} + +// fun token::mutate_collection_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+694 +procedure {:timeLimit 80} $1_token_mutate_collection_description$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $Mutation ($1_token_CollectionData); + var $t4: int; + var $t5: int; + var $t6: $1_account_Account; + var $t7: $1_token_CollectionData; + var $t8: Table int ($1_token_CollectionData); + var $t9: int; + var $t10: int; + var $t11: Table int ($1_token_CollectionData); + var $t12: $Mutation ($1_token_Collections); + var $t13: $Mutation (Table int ($1_token_CollectionData)); + var $t14: $Mutation ($1_token_CollectionData); + var $t15: $1_token_CollectionMutabilityConfig; + var $t16: bool; + var $t17: int; + var $t18: int; + var $t19: $1_string_String; + var $t20: int; + var $t21: $1_account_Account; + var $t22: $Mutation ($1_string_String); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#904: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#905: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#906: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume {:print "$at(186,25838,25839)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:241:9+39 + assume {:print "$at(187,8808,8847)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:242:9+45 + assume {:print "$at(187,8856,8901)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // assume Identical($t7, table::spec_get(select token::Collections.collection_data(global($t5)), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:243:9+98 + assume {:print "$at(187,8910,9008)"} true; + assume ($t7 == $1_table_spec_get'$1_string_String_$1_token_CollectionData'($ResourceValue($1_token_Collections_$memory, $t5)->$collection_data, $t1)); + + // assume Identical($t8, select token::Collections.collection_data(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t8 == $ResourceValue($1_token_Collections_$memory, $t5)->$collection_data); + + // @906 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume {:print "$at(186,25838,25839)"} true; + $1_account_Account_$memory#906 := $1_account_Account_$memory; + + // @905 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#905 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @904 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + $1_token_Collections_$memory#904 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume {:print "$track_local(113,65,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume {:print "$track_local(113,65,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:717:5+1 + assume {:print "$track_local(113,65,2):", $t2} $t2 == $t2; + + // $t9 := signer::address_of($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:718:31+27 + assume {:print "$at(186,25996,26023)"} true; + call $t9 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,25996,26023)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[creator_address]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:718:13+15 + assume {:print "$track_local(113,65,4):", $t9} $t9 == $t9; + + // assume Identical($t11, select token::Collections.collection_data(global($t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t11 == $ResourceValue($1_token_Collections_$memory, $t9)->$collection_data); + + // token::assert_collection_exists($t9, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:719:9+58 + assume {:print "$at(186,26033,26091)"} true; + call $1_token_assert_collection_exists($t9, $t1); + if ($abort_flag) { + assume {:print "$at(186,26033,26091)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // $t12 := borrow_global($t9) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:720:54+17 + assume {:print "$at(186,26146,26163)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t9)) { + call $ExecFailureAbort(); + } else { + $t12 := $Mutation($Global($t9), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t9)); + } + if ($abort_flag) { + assume {:print "$at(186,26146,26163)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // $t13 := borrow_field.collection_data($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:720:49+68 + $t13 := $ChildMutation($t12, 0, $Dereference($t12)->$collection_data); + + // $t14 := table::borrow_mut($t13, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:720:31+104 + call $t14,$t13 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t13, $t1); + if ($abort_flag) { + assume {:print "$at(186,26123,26227)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // trace_local[collection_data]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:720:13+15 + $temp_0'$1_token_CollectionData' := $Dereference($t14); + assume {:print "$track_local(113,65,3):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t15 := get_field.mutability_config($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:17+33 + assume {:print "$at(186,26245,26278)"} true; + $t15 := $Dereference($t14)->$mutability_config; + + // $t16 := get_field.description($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:17+45 + $t16 := $t15->$description; + + // if ($t16) goto L1 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + if ($t16) { goto L1; } else { goto L5; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + assume {:print "$at(186,26237,26337)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 +L0: + + // drop($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + assume {:print "$at(186,26237,26337)"} true; + + // $t17 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:89+18 + $t17 := 13; + assume $IsValid'u64'($t17); + + // $t18 := error::permission_denied($t17) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:64+44 + call $t18 := $1_error_permission_denied($t17); + if ($abort_flag) { + assume {:print "$at(186,26292,26336)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + assume {:print "$at(186,26237,26337)"} true; + assume {:print "$track_abort(113,65):", $t18} $t18 == $t18; + + // $t10 := move($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + $t10 := $t18; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:721:9+100 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:722:69+7 + assume {:print "$at(186,26407,26414)"} true; +L2: + + // $t19 := get_field.description($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:722:95+27 + assume {:print "$at(186,26433,26460)"} true; + $t19 := $Dereference($t14)->$description; + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, global($t20)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t21 == $ResourceValue($1_account_Account_$memory, $t20)); + + // token_event_store::emit_collection_description_mutate_event($t0, $t1, $t19, $t2) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:722:9+127 + assume {:print "$at(186,26347,26474)"} true; + call $1_token_event_store_emit_collection_description_mutate_event($t0, $t1, $t19, $t2); + if ($abort_flag) { + assume {:print "$at(186,26347,26474)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,65):", $t10} $t10 == $t10; + goto L4; + } + + // $t22 := borrow_field.description($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+27 + assume {:print "$at(186,26484,26511)"} true; + $t22 := $ChildMutation($t14, 0, $Dereference($t14)->$description); + + // write_ref($t22, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+41 + $t22 := $UpdateMutation($t22, $t2); + + // write_back[Reference($t14).description (string::String)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+41 + $t14 := $UpdateMutation($t14, $Update'$1_token_CollectionData'_description($Dereference($t14), $Dereference($t22))); + + // write_back[Reference($t13)[]]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+41 + $t13 := $UpdateMutation($t13, UpdateTable($Dereference($t13), ReadVec($t14->p, LenVec($t13->p)), $Dereference($t14))); + + // write_back[Reference($t12).collection_data (table::Table)]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+41 + $t12 := $UpdateMutation($t12, $Update'$1_token_Collections'_collection_data($Dereference($t12), $Dereference($t13))); + + // write_back[token::Collections@]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:723:9+41 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t12), + $Dereference($t12)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:724:5+1 + assume {:print "$at(186,26531,26532)"} true; +L3: + + // assert Not(Not(exists[@904]($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#904, $t5); + + // assert Not(Not(table::spec_contains[]($t8, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t8, $t1); + + // assert Not(Not(select token::CollectionMutabilityConfig.description(select token::CollectionData.mutability_config($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:248:9+57 + assume {:print "$at(187,9157,9214)"} true; + assert {:msg "assert_failed(187,9157,9214): function does not abort under this condition"} + !!$t7->$mutability_config->$description; + + // assert Not(And(Not(exists[@905]($t5)), Not(exists[@906]($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:249:9+97 + assume {:print "$at(187,9223,9320)"} true; + assert {:msg "assert_failed(187,9223,9320): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && !$ResourceExists($1_account_Account_$memory#906, $t5)); + + // assert Not(And(Not(exists[@905]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:250:9+129 + assume {:print "$at(187,9329,9458)"} true; + assert {:msg "assert_failed(187,9329,9458): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@905]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:251:9+105 + assume {:print "$at(187,9467,9572)"} true; + assert {:msg "assert_failed(187,9467,9572): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:251:9+105 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:724:5+1 + assume {:print "$at(186,26531,26532)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Not(exists[@904]($t5)), Not(table::spec_contains[]($t8, $t1))), Not(select token::CollectionMutabilityConfig.description(select token::CollectionData.mutability_config($t7)))), And(Not(exists[@905]($t5)), Not(exists[@906]($t5)))), And(Not(exists[@905]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))), And(Not(exists[@905]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:240:5+879 + assume {:print "$at(187,8699,9578)"} true; + assert {:msg "assert_failed(187,8699,9578): abort not covered by any of the `aborts_if` clauses"} + (((((!$ResourceExists($1_token_Collections_$memory#904, $t5) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t8, $t1)) || !$t7->$mutability_config->$description) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && !$ResourceExists($1_account_Account_$memory#906, $t5))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#905, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:240:5+879 + $abort_code := $t10; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t12) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t13) at :1:1+10 + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun token::mutate_collection_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+931 +procedure {:timeLimit 80} $1_token_mutate_collection_maximum$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: int) returns () +{ + // declare local variables + var $t3: bool; + var $t4: $Mutation ($1_token_CollectionData); + var $t5: int; + var $t6: int; + var $t7: $1_account_Account; + var $t8: $1_token_CollectionData; + var $t9: Table int ($1_token_CollectionData); + var $t10: int; + var $t11: int; + var $t12: Table int ($1_token_CollectionData); + var $t13: $Mutation ($1_token_Collections); + var $t14: $Mutation (Table int ($1_token_CollectionData)); + var $t15: $Mutation ($1_token_CollectionData); + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: $1_token_CollectionMutabilityConfig; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: $1_account_Account; + var $t34: $Mutation (int); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_Collections_$memory#907: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#908: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#909: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume {:print "$at(186,27272,27273)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t6, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:274:9+39 + assume {:print "$at(187,10794,10833)"} true; + assume ($t6 == $1_signer_$address_of($t0)); + + // assume Identical($t7, global($t6)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:275:9+45 + assume {:print "$at(187,10842,10887)"} true; + assume ($t7 == $ResourceValue($1_account_Account_$memory, $t6)); + + // assume Identical($t8, table::spec_get(select token::Collections.collection_data(global($t6)), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:276:9+98 + assume {:print "$at(187,10896,10994)"} true; + assume ($t8 == $1_table_spec_get'$1_string_String_$1_token_CollectionData'($ResourceValue($1_token_Collections_$memory, $t6)->$collection_data, $t1)); + + // assume Identical($t9, select token::Collections.collection_data(global($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t9 == $ResourceValue($1_token_Collections_$memory, $t6)->$collection_data); + + // @909 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume {:print "$at(186,27272,27273)"} true; + $1_account_Account_$memory#909 := $1_account_Account_$memory; + + // @908 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#908 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @907 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + $1_token_Collections_$memory#907 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume {:print "$track_local(113,66,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume {:print "$track_local(113,66,1):", $t1} $t1 == $t1; + + // trace_local[maximum]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:736:5+1 + assume {:print "$track_local(113,66,2):", $t2} $t2 == $t2; + + // $t10 := signer::address_of($t0) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:737:31+27 + assume {:print "$at(186,27419,27446)"} true; + call $t10 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,27419,27446)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // trace_local[creator_address]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:737:13+15 + assume {:print "$track_local(113,66,5):", $t10} $t10 == $t10; + + // assume Identical($t12, select token::Collections.collection_data(global($t10))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t12 == $ResourceValue($1_token_Collections_$memory, $t10)->$collection_data); + + // token::assert_collection_exists($t10, $t1) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:738:9+58 + assume {:print "$at(186,27456,27514)"} true; + call $1_token_assert_collection_exists($t10, $t1); + if ($abort_flag) { + assume {:print "$at(186,27456,27514)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // $t13 := borrow_global($t10) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:739:54+17 + assume {:print "$at(186,27569,27586)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t10)) { + call $ExecFailureAbort(); + } else { + $t13 := $Mutation($Global($t10), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t10)); + } + if ($abort_flag) { + assume {:print "$at(186,27569,27586)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // $t14 := borrow_field.collection_data($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:739:49+68 + $t14 := $ChildMutation($t13, 0, $Dereference($t13)->$collection_data); + + // $t15 := table::borrow_mut($t14, $t1) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:739:31+104 + call $t15,$t14 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t14, $t1); + if ($abort_flag) { + assume {:print "$at(186,27546,27650)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // trace_local[collection_data]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:739:13+15 + $temp_0'$1_token_CollectionData' := $Dereference($t15); + assume {:print "$track_local(113,66,4):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t16 := get_field.maximum($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+23 + assume {:print "$at(186,27739,27762)"} true; + $t16 := $Dereference($t15)->$maximum; + + // $t17 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:44+1 + $t17 := 0; + assume $IsValid'u64'($t17); + + // $t18 := !=($t16, $t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:41+2 + $t18 := !$IsEqual'u64'($t16, $t17); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:49+7 +L1: + + // $t19 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:60+1 + assume {:print "$at(186,27782,27783)"} true; + $t19 := 0; + assume $IsValid'u64'($t19); + + // $t3 := !=($t2, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:57+2 + $t3 := !$IsEqual'u64'($t2, $t19); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 +L0: + + // $t20 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 + assume {:print "$at(186,27739,27783)"} true; + $t20 := false; + assume $IsValid'bool'($t20); + + // $t3 := $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 + $t3 := $t20; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:17+44 +L2: + + // if ($t3) goto L4 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + assume {:print "$at(186,27731,27827)"} true; + if ($t3) { goto L4; } else { goto L14; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + assume {:print "$at(186,27731,27827)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 +L3: + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + assume {:print "$at(186,27731,27827)"} true; + + // $t21 := 36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:87+16 + $t21 := 36; + assume $IsValid'u64'($t21); + + // $t22 := error::invalid_argument($t21) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:63+41 + call $t22 := $1_error_invalid_argument($t21); + if ($abort_flag) { + assume {:print "$at(186,27785,27826)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + assume {:print "$at(186,27731,27827)"} true; + assume {:print "$track_abort(113,66):", $t22} $t22 == $t22; + + // $t11 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + $t11 := $t22; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:741:9+96 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:17+7 + assume {:print "$at(186,27845,27852)"} true; +L5: + + // $t23 := get_field.supply($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:28+22 + assume {:print "$at(186,27856,27878)"} true; + $t23 := $Dereference($t15)->$supply; + + // $t24 := >=($t2, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:25+2 + call $t24 := $Ge($t2, $t23); + + // if ($t24) goto L7 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + if ($t24) { goto L7; } else { goto L15; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + assume {:print "$at(186,27837,27922)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 +L6: + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + assume {:print "$at(186,27837,27922)"} true; + + // $t25 := 36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:76+16 + $t25 := 36; + assume $IsValid'u64'($t25); + + // $t26 := error::invalid_argument($t25) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:52+41 + call $t26 := $1_error_invalid_argument($t25); + if ($abort_flag) { + assume {:print "$at(186,27880,27921)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + assume {:print "$at(186,27837,27922)"} true; + assume {:print "$track_abort(113,66):", $t26} $t26 == $t26; + + // $t11 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + $t11 := $t26; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:742:9+85 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:17+15 + assume {:print "$at(186,27940,27955)"} true; +L8: + + // $t27 := get_field.mutability_config($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:17+33 + assume {:print "$at(186,27940,27973)"} true; + $t27 := $Dereference($t15)->$mutability_config; + + // $t28 := get_field.maximum($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:17+41 + $t28 := $t27->$maximum; + + // if ($t28) goto L10 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + if ($t28) { goto L10; } else { goto L16; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + assume {:print "$at(186,27932,28028)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 +L9: + + // drop($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + assume {:print "$at(186,27932,28028)"} true; + + // $t29 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:85+18 + $t29 := 13; + assume $IsValid'u64'($t29); + + // $t30 := error::permission_denied($t29) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:60+44 + call $t30 := $1_error_permission_denied($t29); + if ($abort_flag) { + assume {:print "$at(186,27983,28027)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + assume {:print "$at(186,27932,28028)"} true; + assume {:print "$track_abort(113,66):", $t30} $t30 == $t30; + + // $t11 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + $t11 := $t30; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:743:9+96 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:744:65+7 + assume {:print "$at(186,28094,28101)"} true; +L11: + + // $t31 := get_field.maximum($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:744:91+23 + assume {:print "$at(186,28120,28143)"} true; + $t31 := $Dereference($t15)->$maximum; + + // assume Identical($t32, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t32 == $1_signer_$address_of($t0)); + + // assume Identical($t33, global($t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t33 == $ResourceValue($1_account_Account_$memory, $t32)); + + // token_event_store::emit_collection_maximum_mutate_event($t0, $t1, $t31, $t2) on_abort goto L13 with $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:744:9+115 + assume {:print "$at(186,28038,28153)"} true; + call $1_token_event_store_emit_collection_maximum_mutate_event($t0, $t1, $t31, $t2); + if ($abort_flag) { + assume {:print "$at(186,28038,28153)"} true; + $t11 := $abort_code; + assume {:print "$track_abort(113,66):", $t11} $t11 == $t11; + goto L13; + } + + // $t34 := borrow_field.maximum($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+23 + assume {:print "$at(186,28163,28186)"} true; + $t34 := $ChildMutation($t15, 4, $Dereference($t15)->$maximum); + + // write_ref($t34, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+33 + $t34 := $UpdateMutation($t34, $t2); + + // write_back[Reference($t15).maximum (u64)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+33 + $t15 := $UpdateMutation($t15, $Update'$1_token_CollectionData'_maximum($Dereference($t15), $Dereference($t34))); + + // write_back[Reference($t14)[]]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+33 + $t14 := $UpdateMutation($t14, UpdateTable($Dereference($t14), ReadVec($t15->p, LenVec($t14->p)), $Dereference($t15))); + + // write_back[Reference($t13).collection_data (table::Table)]($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+33 + $t13 := $UpdateMutation($t13, $Update'$1_token_Collections'_collection_data($Dereference($t13), $Dereference($t14))); + + // write_back[token::Collections@]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:745:9+33 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t13), + $Dereference($t13)); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:746:5+1 + assume {:print "$at(186,28202,28203)"} true; +L12: + + // assert Not(Not(exists[@907]($t6))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#907, $t6); + + // assert Not(Not(table::spec_contains[]($t9, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t9, $t1); + + // assert Not(Or(Eq(select token::CollectionData.maximum($t8), 0), Eq($t2, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:281:9+55 + assume {:print "$at(187,11143,11198)"} true; + assert {:msg "assert_failed(187,11143,11198): function does not abort under this condition"} + !($IsEqual'u64'($t8->$maximum, 0) || $IsEqual'u64'($t2, 0)); + + // assert Not(Lt($t2, select token::CollectionData.supply($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:282:9+43 + assume {:print "$at(187,11207,11250)"} true; + assert {:msg "assert_failed(187,11207,11250): function does not abort under this condition"} + !($t2 < $t8->$supply); + + // assert Not(Not(select token::CollectionMutabilityConfig.maximum(select token::CollectionData.mutability_config($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:283:9+53 + assume {:print "$at(187,11259,11312)"} true; + assert {:msg "assert_failed(187,11259,11312): function does not abort under this condition"} + !!$t8->$mutability_config->$maximum; + + // assert Not(And(Not(exists[@908]($t6)), Not(exists[@909]($t6)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:284:9+97 + assume {:print "$at(187,11321,11418)"} true; + assert {:msg "assert_failed(187,11321,11418): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && !$ResourceExists($1_account_Account_$memory#909, $t6)); + + // assert Not(And(Not(exists[@908]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:285:9+129 + assume {:print "$at(187,11427,11556)"} true; + assert {:msg "assert_failed(187,11427,11556): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@908]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:286:9+105 + assume {:print "$at(187,11565,11670)"} true; + assert {:msg "assert_failed(187,11565,11670): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:286:9+105 + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:746:5+1 + assume {:print "$at(186,28202,28203)"} true; +L13: + + // assert Or(Or(Or(Or(Or(Or(Or(Not(exists[@907]($t6)), Not(table::spec_contains[]($t9, $t1))), Or(Eq(select token::CollectionData.maximum($t8), 0), Eq($t2, 0))), Lt($t2, select token::CollectionData.supply($t8))), Not(select token::CollectionMutabilityConfig.maximum(select token::CollectionData.mutability_config($t8)))), And(Not(exists[@908]($t6)), Not(exists[@909]($t6)))), And(Not(exists[@908]($t6)), Ge(Add(select account::Account.guid_creation_num($t7), 9), 1125899906842624))), And(Not(exists[@908]($t6)), Gt(Add(select account::Account.guid_creation_num($t7), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:273:5+980 + assume {:print "$at(187,10696,11676)"} true; + assert {:msg "assert_failed(187,10696,11676): abort not covered by any of the `aborts_if` clauses"} + (((((((!$ResourceExists($1_token_Collections_$memory#907, $t6) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t9, $t1)) || ($IsEqual'u64'($t8->$maximum, 0) || $IsEqual'u64'($t2, 0))) || ($t2 < $t8->$supply)) || !$t8->$mutability_config->$maximum) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && !$ResourceExists($1_account_Account_$memory#909, $t6))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && (($t7->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#908, $t6) && (($t7->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:273:5+980 + $abort_code := $t11; + $abort_flag := true; + return; + + // label L14 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L14: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t14) at :1:1+10 + + // goto L3 at :1:1+10 + goto L3; + + // label L15 at :1:1+10 +L15: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t14) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + + // label L16 at :1:1+10 +L16: + + // drop($t13) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t14) at :1:1+10 + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun token::mutate_collection_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+728 +procedure {:timeLimit 80} $1_token_mutate_collection_uri$verify(_$t0: $signer, _$t1: $1_string_String, _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $Mutation ($1_token_CollectionData); + var $t4: int; + var $t5: int; + var $t6: $1_account_Account; + var $t7: $1_token_CollectionData; + var $t8: Table int ($1_token_CollectionData); + var $t9: int; + var $t10: int; + var $t11: int; + var $t12: bool; + var $t13: int; + var $t14: int; + var $t15: int; + var $t16: Table int ($1_token_CollectionData); + var $t17: $Mutation ($1_token_Collections); + var $t18: $Mutation (Table int ($1_token_CollectionData)); + var $t19: $Mutation ($1_token_CollectionData); + var $t20: $1_token_CollectionMutabilityConfig; + var $t21: bool; + var $t22: int; + var $t23: int; + var $t24: $1_string_String; + var $t25: int; + var $t26: $1_account_Account; + var $t27: $Mutation ($1_string_String); + var $t0: $signer; + var $t1: $1_string_String; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_CollectionData': $1_token_CollectionData; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#910: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#911: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#912: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume {:print "$at(186,26538,26539)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume $IsValid'$1_string_String'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:256:9+39 + assume {:print "$at(187,9719,9758)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:257:9+45 + assume {:print "$at(187,9767,9812)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // assume Identical($t7, table::spec_get(select token::Collections.collection_data(global($t5)), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:258:9+98 + assume {:print "$at(187,9821,9919)"} true; + assume ($t7 == $1_table_spec_get'$1_string_String_$1_token_CollectionData'($ResourceValue($1_token_Collections_$memory, $t5)->$collection_data, $t1)); + + // assume Identical($t8, select token::Collections.collection_data(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t8 == $ResourceValue($1_token_Collections_$memory, $t5)->$collection_data); + + // @912 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume {:print "$at(186,26538,26539)"} true; + $1_account_Account_$memory#912 := $1_account_Account_$memory; + + // @911 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#911 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @910 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + $1_token_Collections_$memory#910 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume {:print "$track_local(113,67,0):", $t0} $t0 == $t0; + + // trace_local[collection_name]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume {:print "$track_local(113,67,1):", $t1} $t1 == $t1; + + // trace_local[uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:726:5+1 + assume {:print "$track_local(113,67,2):", $t2} $t2 == $t2; + + // $t9 := string::length($t2) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:17+20 + assume {:print "$at(186,26666,26686)"} true; + call $t9 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(186,26666,26686)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // $t11 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:41+14 + $t11 := 512; + assume $IsValid'u64'($t11); + + // $t12 := <=($t9, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:38+2 + call $t12 := $Le($t9, $t11); + + // if ($t12) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 + if ($t12) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 + assume {:print "$at(186,26658,26745)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 +L0: + + // $t13 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:81+13 + assume {:print "$at(186,26730,26743)"} true; + $t13 := 27; + assume $IsValid'u64'($t13); + + // $t14 := error::invalid_argument($t13) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:57+38 + call $t14 := $1_error_invalid_argument($t13); + if ($abort_flag) { + assume {:print "$at(186,26706,26744)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // trace_abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 + assume {:print "$at(186,26658,26745)"} true; + assume {:print "$track_abort(113,67):", $t14} $t14 == $t14; + + // $t10 := move($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 + $t10 := $t14; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:727:9+87 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:728:50+7 + assume {:print "$at(186,26796,26803)"} true; +L2: + + // $t15 := signer::address_of($t0) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:728:31+27 + assume {:print "$at(186,26777,26804)"} true; + call $t15 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,26777,26804)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[creator_address]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:728:13+15 + assume {:print "$track_local(113,67,4):", $t15} $t15 == $t15; + + // assume Identical($t16, select token::Collections.collection_data(global($t15))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:923:9+79 + assume {:print "$at(187,38883,38962)"} true; + assume ($t16 == $ResourceValue($1_token_Collections_$memory, $t15)->$collection_data); + + // token::assert_collection_exists($t15, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:729:9+58 + assume {:print "$at(186,26814,26872)"} true; + call $1_token_assert_collection_exists($t15, $t1); + if ($abort_flag) { + assume {:print "$at(186,26814,26872)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // $t17 := borrow_global($t15) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:730:54+17 + assume {:print "$at(186,26927,26944)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(186,26927,26944)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // $t18 := borrow_field.collection_data($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:730:49+68 + $t18 := $ChildMutation($t17, 0, $Dereference($t17)->$collection_data); + + // $t19 := table::borrow_mut($t18, $t1) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:730:31+104 + call $t19,$t18 := $1_table_borrow_mut'$1_string_String_$1_token_CollectionData'($t18, $t1); + if ($abort_flag) { + assume {:print "$at(186,26904,27008)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // trace_local[collection_data]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:730:13+15 + $temp_0'$1_token_CollectionData' := $Dereference($t19); + assume {:print "$track_local(113,67,3):", $temp_0'$1_token_CollectionData'} $temp_0'$1_token_CollectionData' == $temp_0'$1_token_CollectionData'; + + // $t20 := get_field.mutability_config($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:17+33 + assume {:print "$at(186,27026,27059)"} true; + $t20 := $Dereference($t19)->$mutability_config; + + // $t21 := get_field.uri($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:17+37 + $t21 := $t20->$uri; + + // if ($t21) goto L4 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + if ($t21) { goto L4; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + assume {:print "$at(186,27018,27110)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 +L3: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + assume {:print "$at(186,27018,27110)"} true; + + // $t22 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:81+18 + $t22 := 13; + assume $IsValid'u64'($t22); + + // $t23 := error::permission_denied($t22) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:56+44 + call $t23 := $1_error_permission_denied($t22); + if ($abort_flag) { + assume {:print "$at(186,27065,27109)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // trace_abort($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + assume {:print "$at(186,27018,27110)"} true; + assume {:print "$track_abort(113,67):", $t23} $t23 == $t23; + + // $t10 := move($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + $t10 := $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:731:9+92 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:732:61+7 + assume {:print "$at(186,27172,27179)"} true; +L5: + + // $t24 := get_field.uri($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:732:87+19 + assume {:print "$at(186,27198,27217)"} true; + $t24 := $Dereference($t19)->$uri; + + // assume Identical($t25, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t25 == $1_signer_$address_of($t0)); + + // assume Identical($t26, global($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t26 == $ResourceValue($1_account_Account_$memory, $t25)); + + // token_event_store::emit_collection_uri_mutate_event($t0, $t1, $t24, $t2) on_abort goto L7 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:732:9+104 + assume {:print "$at(186,27120,27224)"} true; + call $1_token_event_store_emit_collection_uri_mutate_event($t0, $t1, $t24, $t2); + if ($abort_flag) { + assume {:print "$at(186,27120,27224)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,67):", $t10} $t10 == $t10; + goto L7; + } + + // $t27 := borrow_field.uri($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+19 + assume {:print "$at(186,27234,27253)"} true; + $t27 := $ChildMutation($t19, 2, $Dereference($t19)->$uri); + + // write_ref($t27, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+25 + $t27 := $UpdateMutation($t27, $t2); + + // write_back[Reference($t19).uri (string::String)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+25 + $t19 := $UpdateMutation($t19, $Update'$1_token_CollectionData'_uri($Dereference($t19), $Dereference($t27))); + + // write_back[Reference($t18)[]]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+25 + $t18 := $UpdateMutation($t18, UpdateTable($Dereference($t18), ReadVec($t19->p, LenVec($t18->p)), $Dereference($t19))); + + // write_back[Reference($t17).collection_data (table::Table)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+25 + $t17 := $UpdateMutation($t17, $Update'$1_token_Collections'_collection_data($Dereference($t17), $Dereference($t18))); + + // write_back[token::Collections@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:733:9+25 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:734:5+1 + assume {:print "$at(186,27265,27266)"} true; +L6: + + // assert Not(Gt(Len(select string::String.bytes($t2)), 512)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:259:9+42 + assume {:print "$at(187,9928,9970)"} true; + assert {:msg "assert_failed(187,9928,9970): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 512); + + // assert Not(Not(exists[@910]($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:924:9+48 + assume {:print "$at(187,38971,39019)"} true; + assert {:msg "assert_failed(187,38971,39019): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#910, $t5); + + // assert Not(Not(table::spec_contains[]($t8, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:925:9+70 + assume {:print "$at(187,39028,39098)"} true; + assert {:msg "assert_failed(187,39028,39098): function does not abort under this condition"} + !!$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t8, $t1); + + // assert Not(Not(select token::CollectionMutabilityConfig.uri(select token::CollectionData.mutability_config($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:264:9+49 + assume {:print "$at(187,10119,10168)"} true; + assert {:msg "assert_failed(187,10119,10168): function does not abort under this condition"} + !!$t7->$mutability_config->$uri; + + // assert Not(And(Not(exists[@911]($t5)), Not(exists[@912]($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:265:9+97 + assume {:print "$at(187,10177,10274)"} true; + assert {:msg "assert_failed(187,10177,10274): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && !$ResourceExists($1_account_Account_$memory#912, $t5)); + + // assert Not(And(Not(exists[@911]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:266:9+129 + assume {:print "$at(187,10283,10412)"} true; + assert {:msg "assert_failed(187,10283,10412): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@911]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:267:9+105 + assume {:print "$at(187,10421,10526)"} true; + assert {:msg "assert_failed(187,10421,10526): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:267:9+105 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:734:5+1 + assume {:print "$at(186,27265,27266)"} true; +L7: + + // assert Or(Or(Or(Or(Or(Or(Gt(Len(select string::String.bytes($t2)), 512), Not(exists[@910]($t5))), Not(table::spec_contains[]($t8, $t1))), Not(select token::CollectionMutabilityConfig.uri(select token::CollectionData.mutability_config($t7)))), And(Not(exists[@911]($t5)), Not(exists[@912]($t5)))), And(Not(exists[@911]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))), And(Not(exists[@911]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:255:5+906 + assume {:print "$at(187,9626,10532)"} true; + assert {:msg "assert_failed(187,9626,10532): abort not covered by any of the `aborts_if` clauses"} + (((((((LenVec($t2->$bytes) > 512) || !$ResourceExists($1_token_Collections_$memory#910, $t5)) || !$1_table_spec_contains'$1_string_String_$1_token_CollectionData'($t8, $t1)) || !$t7->$mutability_config->$uri) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && !$ResourceExists($1_account_Account_$memory#912, $t5))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#911, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:255:5+906 + $abort_code := $t10; + $abort_flag := true; + return; + + // label L8 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L8: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t18) at :1:1+10 + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun token::mutate_one_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+4195 +procedure {:inline 1} $1_token_mutate_one_token(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId, _$t3: Vec ($1_string_String), _$t4: Vec (Vec (int)), _$t5: Vec ($1_string_String)) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t6: $1_token_TokenDataId; + var $t7: $1_string_String; + var $t8: $1_property_map_PropertyMap; + var $t9: $1_string_String; + var $t10: $1_property_map_PropertyMap; + var $t11: $1_token_TokenId; + var $t12: $Mutation (Table int ($1_token_TokenData)); + var $t13: int; + var $t14: int; + var $t15: $1_token_Token; + var $t16: $1_token_TokenId; + var $t17: $1_token_Token; + var $t18: $Mutation ($1_token_TokenData); + var $t19: int; + var $t20: int; + var $t21: Table int ($1_token_TokenData); + var $t22: $1_token_TokenData; + var $t23: $1_token_TokenDataId; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_token_Collections); + var $t34: $Mutation (Table int ($1_token_TokenData)); + var $t35: $1_token_TokenDataId; + var $t36: Table int ($1_token_TokenData); + var $t37: bool; + var $t38: int; + var $t39: int; + var $t40: $1_token_TokenDataId; + var $t41: $Mutation ($1_token_TokenData); + var $t42: $1_token_TokenMutabilityConfig; + var $t43: bool; + var $t44: bool; + var $t45: $1_property_map_PropertyMap; + var $t46: Vec (int); + var $t47: $1_string_String; + var $t48: bool; + var $t49: int; + var $t50: int; + var $t51: $1_property_map_PropertyMap; + var $t52: Vec (int); + var $t53: $1_string_String; + var $t54: Vec (int); + var $t55: $1_property_map_PropertyValue; + var $t56: bool; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: bool; + var $t62: int; + var $t63: Table int ($1_token_Token); + var $t64: $1_token_Token; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $1_token_TokenDataId; + var $t69: $1_token_TokenId; + var $t70: int; + var $t71: $1_property_map_PropertyMap; + var $t72: $1_token_Token; + var $t73: $1_token_TokenId; + var $t74: int; + var $t75: $1_token_TokenStore; + var $t76: $1_token_Token; + var $t77: bool; + var $t78: Table int ($1_token_Token); + var $t79: bool; + var $t80: $1_token_MutateTokenPropertyMap; + var $t81: $Mutation ($1_token_TokenStore); + var $t82: $Mutation ($1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'); + var $t83: $1_token_MutateTokenPropertyMapEvent; + var $t84: $Mutation (int); + var $t85: $1_token_TokenId; + var $t86: int; + var $t87: $1_property_map_PropertyMap; + var $t88: Table int ($1_token_Token); + var $t89: bool; + var $t90: $1_token_MutateTokenPropertyMap; + var $t91: $Mutation ($1_token_TokenStore); + var $t92: $Mutation ($1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'); + var $t93: $1_token_MutateTokenPropertyMapEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $t3: Vec ($1_string_String); + var $t4: Vec (Vec (int)); + var $t5: Vec ($1_string_String); + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // bytecode translation starts here + // assume Identical($t19, select token::TokenDataId.creator(select token::TokenId.token_data_id($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:384:9+45 + assume {:print "$at(187,16769,16814)"} true; + assume ($t19 == $t2->$token_data_id->$creator); + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:385:9+39 + assume {:print "$at(187,16823,16862)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, select token::Collections.token_data(global($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:386:9+61 + assume {:print "$at(187,16871,16932)"} true; + assume ($t21 == $ResourceValue($1_token_Collections_$memory, $t19)->$token_data); + + // assume Identical($t22, table::spec_get($t21, select token::TokenId.token_data_id($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:387:9+73 + assume {:print "$at(187,16941,17014)"} true; + assume ($t22 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t21, $t2->$token_data_id)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$at(186,33822,33823)"} true; + assume {:print "$track_local(113,68,0):", $t0} $t0 == $t0; + + // trace_local[token_owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,2):", $t2} $t2 == $t2; + + // trace_local[keys]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,3):", $t3} $t3 == $t3; + + // trace_local[values]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,4):", $t4} $t4 == $t4; + + // trace_local[types]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,5):", $t5} $t5 == $t5; + + // $t23 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:23+22 + assume {:print "$at(186,34103,34125)"} true; + $t23 := $t2->$token_data_id; + + // $t24 := get_field.creator($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:23+30 + $t24 := $t23->$creator; + + // trace_local[creator]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:13+7 + assume {:print "$track_local(113,68,13):", $t24} $t24 == $t24; + + // $t25 := signer::address_of($t0) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:17+27 + assume {:print "$at(186,34151,34178)"} true; + call $t25 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,34151,34178)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t27 := ==($t25, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:45+2 + $t27 := $IsEqual'address'($t25, $t24); + + // if ($t27) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + if ($t27) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + assume {:print "$at(186,34143,34239)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:82+21 +L0: + + // $t28 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:82+21 + assume {:print "$at(186,34216,34237)"} true; + $t28 := 14; + assume $IsValid'u64'($t28); + + // $t29 := error::permission_denied($t28) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:57+47 + call $t29 := $1_error_permission_denied($t28); + if ($abort_flag) { + assume {:print "$at(186,34191,34238)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + assume {:print "$at(186,34143,34239)"} true; + assume {:print "$track_abort(113,68):", $t29} $t29 == $t29; + + // $t26 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + $t26 := $t29; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:37+7 + assume {:print "$at(186,34326,34333)"} true; +L2: + + // $t30 := exists($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:17+6 + assume {:print "$at(186,34306,34312)"} true; + $t30 := $ResourceExists($1_token_Collections_$memory, $t24); + + // if ($t30) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + if ($t30) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + assume {:print "$at(186,34298,34381)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:64+26 +L3: + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:64+26 + assume {:print "$at(186,34353,34379)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:47+44 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(186,34336,34380)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + assume {:print "$at(186,34298,34381)"} true; + assume {:print "$track_abort(113,68):", $t32} $t32 == $t32; + + // $t26 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + $t26 := $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + goto L24; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:863:13+7 + assume {:print "$at(186,34461,34468)"} true; +L5: + + // $t33 := borrow_global($t24) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:35+17 + assume {:print "$at(186,34417,34434)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t24)) { + call $ExecFailureAbort(); + } else { + $t33 := $Mutation($Global($t24), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t24)); + } + if ($abort_flag) { + assume {:print "$at(186,34417,34434)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t34 := borrow_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:30+77 + $t34 := $ChildMutation($t33, 1, $Dereference($t33)->$token_data); + + // trace_local[all_token_data]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:13+14 + $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' := $Dereference($t34); + assume {:print "$track_local(113,68,12):", $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''} $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' == $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''; + + // $t35 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:49+22 + assume {:print "$at(186,34540,34562)"} true; + $t35 := $t2->$token_data_id; + + // $t36 := read_ref($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:32+40 + $t36 := $Dereference($t34); + + // $t37 := table::contains($t36, $t35) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:17+55 + call $t37 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t36, $t35); + if ($abort_flag) { + assume {:print "$at(186,34508,34563)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t37) goto L7 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + if ($t37) { goto L7; } else { goto L25; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 +L6: + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + + // $t38 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:91+25 + $t38 := 10; + assume $IsValid'u64'($t38); + + // $t39 := error::not_found($t38) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:74+43 + call $t39 := $1_error_not_found($t38); + if ($abort_flag) { + assume {:print "$at(186,34565,34608)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + assume {:print "$track_abort(113,68):", $t39} $t39 == $t39; + + // $t26 := move($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + $t26 := $t39; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:44+14 + assume {:print "$at(186,34654,34668)"} true; +L8: + + // $t40 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:60+22 + assume {:print "$at(186,34670,34692)"} true; + $t40 := $t2->$token_data_id; + + // $t41 := table::borrow_mut($t34, $t40) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:26+57 + call $t41,$t34 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t34, $t40); + if ($abort_flag) { + assume {:print "$at(186,34636,34693)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[token_data]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t41); + assume {:print "$track_local(113,68,18):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t42 := get_field.mutability_config($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:14+28 + assume {:print "$at(186,34878,34906)"} true; + $t42 := $Dereference($t41)->$mutability_config; + + // $t43 := get_field.properties($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:14+39 + $t43 := $t42->$properties; + + // $t44 := !($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:13+1 + call $t44 := $Not($t43); + + // if ($t44) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:9+490 + if ($t44) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:45+10 + assume {:print "$at(186,34986,34996)"} true; +L10: + + // $t45 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:44+30 + assume {:print "$at(186,34985,35015)"} true; + $t45 := $Dereference($t41)->$default_properties; + + // $t46 := [84, 79, 75, 69, 78, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 77, 85, 84, 65, 84, 66, 76, 69] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:90+22 + $t46 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 80, 82)), MakeVec4(79, 80, 69, 82)), MakeVec4(84, 89, 95, 77)), MakeVec4(85, 84, 65, 84)), MakeVec3(66, 76, 69)); + assume $IsValid'vec'u8''($t46); + + // $t47 := string::utf8($t46) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:77+36 + call $t47 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(186,35018,35054)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t48 := property_map::contains_key($t45, $t47) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:17+97 + call $t48 := $1_property_map_contains_key($t45, $t47); + if ($abort_flag) { + assume {:print "$at(186,34958,35055)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t48) goto L12 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + if ($t48) { goto L12; } else { goto L26; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 +L11: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + + // $t49 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:874:42+18 + assume {:print "$at(186,35098,35116)"} true; + $t49 := 13; + assume $IsValid'u64'($t49); + + // $t50 := error::permission_denied($t49) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:874:17+44 + call $t50 := $1_error_permission_denied($t49); + if ($abort_flag) { + assume {:print "$at(186,35073,35117)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + assume {:print "$track_abort(113,68):", $t50} $t50 == $t50; + + // $t26 := move($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + $t26 := $t50; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:63+10 + assume {:print "$at(186,35196,35206)"} true; +L13: + + // $t51 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:62+30 + assume {:print "$at(186,35195,35225)"} true; + $t51 := $Dereference($t41)->$default_properties; + + // $t52 := [84, 79, 75, 69, 78, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 77, 85, 84, 65, 84, 66, 76, 69] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:108+22 + $t52 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 80, 82)), MakeVec4(79, 80, 69, 82)), MakeVec4(84, 89, 95, 77)), MakeVec4(85, 84, 65, 84)), MakeVec3(66, 76, 69)); + assume $IsValid'vec'u8''($t52); + + // $t53 := string::utf8($t52) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:95+36 + call $t53 := $1_string_utf8($t52); + if ($abort_flag) { + assume {:print "$at(186,35228,35264)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // assume Identical($t54, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t54 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t55, simple_map::spec_get(select property_map::PropertyMap.map($t51), $t53)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t55 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t51->$map, $t53)); + + // $t56 := property_map::read_bool($t51, $t53) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:38+94 + assume {:print "$at(186,35171,35265)"} true; + call $t56 := $1_property_map_read_bool($t51, $t53); + if ($abort_flag) { + assume {:print "$at(186,35171,35265)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t56) goto L15 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + if ($t56) { goto L15; } else { goto L27; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 +L15: + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + goto L9; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 +L14: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + + // $t57 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:66+18 + $t57 := 13; + assume $IsValid'u64'($t57); + + // $t58 := error::permission_denied($t57) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:41+44 + call $t58 := $1_error_permission_denied($t57); + if ($abort_flag) { + assume {:print "$at(186,35307,35351)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + assume {:print "$track_abort(113,68):", $t58} $t58 == $t58; + + // $t26 := move($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + $t26 := $t58; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + goto L24; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:13+8 + assume {:print "$at(186,35479,35487)"} true; +L9: + + // $t59 := get_field.property_version($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:13+25 + assume {:print "$at(186,35479,35504)"} true; + $t59 := $t2->$property_version; + + // $t60 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:42+1 + $t60 := 0; + assume $IsValid'u64'($t60); + + // $t61 := ==($t59, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:39+2 + $t61 := $IsEqual'u64'($t59, $t60); + + // if ($t61) goto L17 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + if ($t61) { goto L17; } else { goto L28; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:54+11 + assume {:print "$at(186,35566,35577)"} true; +L17: + + // $t62 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:77+1 + assume {:print "$at(186,35589,35590)"} true; + $t62 := 1; + assume $IsValid'u64'($t62); + + // assume Identical($t63, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t63 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // $t64 := token::withdraw_with_event_internal($t1, $t2, $t62) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:25+54 + assume {:print "$at(186,35537,35591)"} true; + call $t64 := $1_token_withdraw_with_event_internal($t1, $t2, $t62); + if ($abort_flag) { + assume {:print "$at(186,35537,35591)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[token]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:17+5 + assume {:print "$track_local(113,68,17):", $t64} $t64 == $t64; + + // $t65 := get_field.largest_property_version($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:40+35 + assume {:print "$at(186,35690,35725)"} true; + $t65 := $Dereference($t41)->$largest_property_version; + + // $t66 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:78+1 + $t66 := 1; + assume $IsValid'u64'($t66); + + // $t67 := +($t65, $t66) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:76+1 + call $t67 := $AddU64($t65, $t66); + if ($abort_flag) { + assume {:print "$at(186,35726,35727)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[cur_property_version]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:17+20 + assume {:print "$track_local(113,68,14):", $t67} $t67 == $t67; + + // $t68 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:48+22 + assume {:print "$at(186,35778,35800)"} true; + $t68 := $t2->$token_data_id; + + // $t69 := token::create_token_id($t68, $t67) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:32+61 + call $t69 := $1_token_create_token_id($t68, $t67); + if ($abort_flag) { + assume {:print "$at(186,35762,35823)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[new_token_id]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:17+12 + assume {:print "$track_local(113,68,16):", $t69} $t69 == $t69; + + // $t70 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:889:25+1 + assume {:print "$at(186,35919,35920)"} true; + $t70 := 1; + assume $IsValid'u64'($t70); + + // $t71 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:890:35+29 + assume {:print "$at(186,35956,35985)"} true; + $t71 := $Dereference($t41)->$default_properties; + + // $t72 := pack token::Token($t69, $t70, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:887:29+147 + assume {:print "$at(186,35853,36000)"} true; + $t72 := $1_token_Token($t69, $t70, $t71); + + // trace_local[new_token]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:887:17+9 + assume {:print "$track_local(113,68,15):", $t72} $t72 == $t72; + + // assume Identical($t73, select token::Token.id($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t73 == $t72->$id); + + // assume Identical($t74, select token::Token.amount($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t74 == $t72->$amount); + + // assume Identical($t75, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t75 == $ResourceValue($1_token_TokenStore_$memory, $t1)); + + // assume Identical($t76, table::spec_get(select token::TokenStore.tokens($t75), $t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t76 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t75->$tokens, $t73)); + + // assume Identical($t77, table::spec_contains(select token::TokenStore.tokens($t75), $t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t77 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t75->$tokens, $t73)); + + // token::direct_deposit($t1, $t72) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:892:13+38 + assume {:print "$at(186,36014,36052)"} true; + call $1_token_direct_deposit($t1, $t72); + if ($abort_flag) { + assume {:print "$at(186,36014,36052)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // assume Identical($t78, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t78 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // token::update_token_property_internal($t1, $t69, $t3, $t4, $t5) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:893:13+78 + assume {:print "$at(186,36066,36144)"} true; + call $1_token_update_token_property_internal($t1, $t69, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,36066,36144)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t79 := features::module_event_migration_enabled() on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:894:17+47 + assume {:print "$at(186,36162,36209)"} true; + call $t79 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,36162,36209)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t79) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:894:13+301 + if ($t79) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:896:29+8 + assume {:print "$at(186,36294,36302)"} true; +L19: + + // $t80 := pack token::MutateTokenPropertyMap($t2, $t69, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:29+202 + assume {:print "$at(186,36241,36443)"} true; + $t80 := $1_token_MutateTokenPropertyMap($t2, $t69, $t3, $t4, $t5); + + // opaque begin: event::emit($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:17+215 + + // opaque end: event::emit($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:17+215 + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:52+11 + assume {:print "$at(186,36572,36583)"} true; +L18: + + // $t81 := borrow_global($t1) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:22+17 + assume {:print "$at(186,36542,36559)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t81 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(186,36542,36559)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t82 := borrow_field.mutate_token_property_events($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:17+76 + $t82 := $ChildMutation($t81, 5, $Dereference($t81)->$mutate_token_property_events); + + // $t83 := pack token::MutateTokenPropertyMapEvent($t2, $t69, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:905:17+207 + assume {:print "$at(186,36631,36838)"} true; + $t83 := $1_token_MutateTokenPropertyMapEvent($t2, $t69, $t3, $t4, $t5); + + // opaque begin: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + assume {:print "$at(186,36473,36853)"} true; + + // opaque end: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + + // write_back[Reference($t81).mutate_token_property_events (event::EventHandle)]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + $t81 := $UpdateMutation($t81, $Update'$1_token_TokenStore'_mutate_token_property_events($Dereference($t81), $Dereference($t82))); + + // write_back[token::TokenStore@]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t81), + $Dereference($t81)); + + // $t84 := borrow_field.largest_property_version($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+35 + assume {:print "$at(186,36868,36903)"} true; + $t84 := $ChildMutation($t41, 1, $Dereference($t41)->$largest_property_version); + + // write_ref($t84, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t84 := $UpdateMutation($t84, $t67); + + // write_back[Reference($t41).largest_property_version (u64)]($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t41 := $UpdateMutation($t41, $Update'$1_token_TokenData'_largest_property_version($Dereference($t41), $Dereference($t84))); + + // write_back[Reference($t34)[]]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t34 := $UpdateMutation($t34, UpdateTable($Dereference($t34), ReadVec($t41->p, LenVec($t34->p)), $Dereference($t41))); + + // write_back[Reference($t33).token_data (table::Table)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_token_data($Dereference($t33), $Dereference($t34))); + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // ($t85, $t86, $t87) := unpack token::Token($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:17+47 + assume {:print "$at(186,37017,37064)"} true; + $t85 := $t64->$id; + $t86 := $t64->$amount; + $t87 := $t64->$token_properties; + + // drop($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:61+1 + + // drop($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:40+1 + + // drop($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:29+1 + + // $t11 := $t69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + $t11 := $t69; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + goto L20; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; +L16: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; + + // assume Identical($t88, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t88 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // token::update_token_property_internal($t1, $t2, $t3, $t4, $t5) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; + call $1_token_update_token_property_internal($t1, $t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,37204,37278)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t89 := features::module_event_migration_enabled() on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:921:17+47 + assume {:print "$at(186,37296,37343)"} true; + call $t89 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,37296,37343)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t89) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:921:13+297 + if ($t89) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:923:29+8 + assume {:print "$at(186,37428,37436)"} true; +L22: + + // $t90 := pack token::MutateTokenPropertyMap($t2, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:29+198 + assume {:print "$at(186,37375,37573)"} true; + $t90 := $1_token_MutateTokenPropertyMap($t2, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:17+211 + + // opaque end: event::emit($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:17+211 + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:52+11 + assume {:print "$at(186,37702,37713)"} true; +L21: + + // $t91 := borrow_global($t1) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:22+17 + assume {:print "$at(186,37672,37689)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t91 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(186,37672,37689)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t92 := borrow_field.mutate_token_property_events($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:17+76 + $t92 := $ChildMutation($t91, 5, $Dereference($t91)->$mutate_token_property_events); + + // $t93 := pack token::MutateTokenPropertyMapEvent($t2, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:932:17+203 + assume {:print "$at(186,37761,37964)"} true; + $t93 := $1_token_MutateTokenPropertyMapEvent($t2, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit_event($t92, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + assume {:print "$at(186,37603,37979)"} true; + + // opaque end: event::emit_event($t92, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + + // write_back[Reference($t91).mutate_token_property_events (event::EventHandle)]($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + $t91 := $UpdateMutation($t91, $Update'$1_token_TokenStore'_mutate_token_property_events($Dereference($t91), $Dereference($t92))); + + // write_back[token::TokenStore@]($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t91), + $Dereference($t91)); + + // $t11 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + $t11 := $t2; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 +L20: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + assume {:print "$track_return(113,68,0):", $t11} $t11 == $t11; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; +L23: + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; + $ret0 := $t11; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 +L24: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + + // label L25 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L25: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L26 at :1:1+10 +L26: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L11 at :1:1+10 + goto L11; + + // label L27 at :1:1+10 +L27: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L14 at :1:1+10 + goto L14; + + // label L28 at :1:1+10 +L28: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L16 at :1:1+10 + goto L16; + +} + +// fun token::mutate_one_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+4195 +procedure {:timeLimit 80} $1_token_mutate_one_token$verify(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId, _$t3: Vec ($1_string_String), _$t4: Vec (Vec (int)), _$t5: Vec ($1_string_String)) returns ($ret0: $1_token_TokenId) +{ + // declare local variables + var $t6: $1_token_TokenDataId; + var $t7: $1_string_String; + var $t8: $1_property_map_PropertyMap; + var $t9: $1_string_String; + var $t10: $1_property_map_PropertyMap; + var $t11: $1_token_TokenId; + var $t12: $Mutation (Table int ($1_token_TokenData)); + var $t13: int; + var $t14: int; + var $t15: $1_token_Token; + var $t16: $1_token_TokenId; + var $t17: $1_token_Token; + var $t18: $Mutation ($1_token_TokenData); + var $t19: int; + var $t20: int; + var $t21: Table int ($1_token_TokenData); + var $t22: $1_token_TokenData; + var $t23: $1_token_TokenDataId; + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: bool; + var $t28: int; + var $t29: int; + var $t30: bool; + var $t31: int; + var $t32: int; + var $t33: $Mutation ($1_token_Collections); + var $t34: $Mutation (Table int ($1_token_TokenData)); + var $t35: $1_token_TokenDataId; + var $t36: Table int ($1_token_TokenData); + var $t37: bool; + var $t38: int; + var $t39: int; + var $t40: $1_token_TokenDataId; + var $t41: $Mutation ($1_token_TokenData); + var $t42: $1_token_TokenMutabilityConfig; + var $t43: bool; + var $t44: bool; + var $t45: $1_property_map_PropertyMap; + var $t46: Vec (int); + var $t47: $1_string_String; + var $t48: bool; + var $t49: int; + var $t50: int; + var $t51: $1_property_map_PropertyMap; + var $t52: Vec (int); + var $t53: $1_string_String; + var $t54: Vec (int); + var $t55: $1_property_map_PropertyValue; + var $t56: bool; + var $t57: int; + var $t58: int; + var $t59: int; + var $t60: int; + var $t61: bool; + var $t62: int; + var $t63: Table int ($1_token_Token); + var $t64: $1_token_Token; + var $t65: int; + var $t66: int; + var $t67: int; + var $t68: $1_token_TokenDataId; + var $t69: $1_token_TokenId; + var $t70: int; + var $t71: $1_property_map_PropertyMap; + var $t72: $1_token_Token; + var $t73: $1_token_TokenId; + var $t74: int; + var $t75: $1_token_TokenStore; + var $t76: $1_token_Token; + var $t77: bool; + var $t78: Table int ($1_token_Token); + var $t79: bool; + var $t80: $1_token_MutateTokenPropertyMap; + var $t81: $Mutation ($1_token_TokenStore); + var $t82: $Mutation ($1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'); + var $t83: $1_token_MutateTokenPropertyMapEvent; + var $t84: $Mutation (int); + var $t85: $1_token_TokenId; + var $t86: int; + var $t87: $1_property_map_PropertyMap; + var $t88: Table int ($1_token_Token); + var $t89: bool; + var $t90: $1_token_MutateTokenPropertyMap; + var $t91: $Mutation ($1_token_TokenStore); + var $t92: $Mutation ($1_event_EventHandle'$1_token_MutateTokenPropertyMapEvent'); + var $t93: $1_token_MutateTokenPropertyMapEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $t3: Vec ($1_string_String); + var $t4: Vec (Vec (int)); + var $t5: Vec ($1_string_String); + var $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'': Table int ($1_token_TokenData); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + var $1_token_Collections_$memory#915: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$at(186,33822,33823)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume $IsValid'$1_token_TokenId'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume $IsValid'vec'$1_string_String''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume $IsValid'vec'vec'u8'''($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume $IsValid'vec'$1_string_String''($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t19, select token::TokenDataId.creator(select token::TokenId.token_data_id($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:384:9+45 + assume {:print "$at(187,16769,16814)"} true; + assume ($t19 == $t2->$token_data_id->$creator); + + // assume Identical($t20, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:385:9+39 + assume {:print "$at(187,16823,16862)"} true; + assume ($t20 == $1_signer_$address_of($t0)); + + // assume Identical($t21, select token::Collections.token_data(global($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:386:9+61 + assume {:print "$at(187,16871,16932)"} true; + assume ($t21 == $ResourceValue($1_token_Collections_$memory, $t19)->$token_data); + + // assume Identical($t22, table::spec_get($t21, select token::TokenId.token_data_id($t2))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:387:9+73 + assume {:print "$at(187,16941,17014)"} true; + assume ($t22 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t21, $t2->$token_data_id)); + + // @915 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$at(186,33822,33823)"} true; + $1_token_Collections_$memory#915 := $1_token_Collections_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,0):", $t0} $t0 == $t0; + + // trace_local[token_owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,2):", $t2} $t2 == $t2; + + // trace_local[keys]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,3):", $t3} $t3 == $t3; + + // trace_local[values]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,4):", $t4} $t4 == $t4; + + // trace_local[types]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:850:5+1 + assume {:print "$track_local(113,68,5):", $t5} $t5 == $t5; + + // $t23 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:23+22 + assume {:print "$at(186,34103,34125)"} true; + $t23 := $t2->$token_data_id; + + // $t24 := get_field.creator($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:23+30 + $t24 := $t23->$creator; + + // trace_local[creator]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:858:13+7 + assume {:print "$track_local(113,68,13):", $t24} $t24 == $t24; + + // $t25 := signer::address_of($t0) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:17+27 + assume {:print "$at(186,34151,34178)"} true; + call $t25 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,34151,34178)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t27 := ==($t25, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:45+2 + $t27 := $IsEqual'address'($t25, $t24); + + // if ($t27) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + if ($t27) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + assume {:print "$at(186,34143,34239)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:82+21 +L0: + + // $t28 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:82+21 + assume {:print "$at(186,34216,34237)"} true; + $t28 := 14; + assume $IsValid'u64'($t28); + + // $t29 := error::permission_denied($t28) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:57+47 + call $t29 := $1_error_permission_denied($t28); + if ($abort_flag) { + assume {:print "$at(186,34191,34238)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + assume {:print "$at(186,34143,34239)"} true; + assume {:print "$track_abort(113,68):", $t29} $t29 == $t29; + + // $t26 := move($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + $t26 := $t29; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:859:9+96 + goto L24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:37+7 + assume {:print "$at(186,34326,34333)"} true; +L2: + + // $t30 := exists($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:17+6 + assume {:print "$at(186,34306,34312)"} true; + $t30 := $ResourceExists($1_token_Collections_$memory, $t24); + + // if ($t30) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + if ($t30) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + assume {:print "$at(186,34298,34381)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:64+26 +L3: + + // $t31 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:64+26 + assume {:print "$at(186,34353,34379)"} true; + $t31 := 1; + assume $IsValid'u64'($t31); + + // $t32 := error::not_found($t31) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:47+44 + call $t32 := $1_error_not_found($t31); + if ($abort_flag) { + assume {:print "$at(186,34336,34380)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + assume {:print "$at(186,34298,34381)"} true; + assume {:print "$track_abort(113,68):", $t32} $t32 == $t32; + + // $t26 := move($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + $t26 := $t32; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:861:9+83 + goto L24; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:863:13+7 + assume {:print "$at(186,34461,34468)"} true; +L5: + + // $t33 := borrow_global($t24) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:35+17 + assume {:print "$at(186,34417,34434)"} true; + if (!$ResourceExists($1_token_Collections_$memory, $t24)) { + call $ExecFailureAbort(); + } else { + $t33 := $Mutation($Global($t24), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t24)); + } + if ($abort_flag) { + assume {:print "$at(186,34417,34434)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t34 := borrow_field.token_data($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:30+77 + $t34 := $ChildMutation($t33, 1, $Dereference($t33)->$token_data); + + // trace_local[all_token_data]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:862:13+14 + $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' := $Dereference($t34); + assume {:print "$track_local(113,68,12):", $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''} $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData'' == $temp_0'$1_table_Table'$1_token_TokenDataId_$1_token_TokenData''; + + // $t35 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:49+22 + assume {:print "$at(186,34540,34562)"} true; + $t35 := $t2->$token_data_id; + + // $t36 := read_ref($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:32+40 + $t36 := $Dereference($t34); + + // $t37 := table::contains($t36, $t35) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:17+55 + call $t37 := $1_table_contains'$1_token_TokenDataId_$1_token_TokenData'($t36, $t35); + if ($abort_flag) { + assume {:print "$at(186,34508,34563)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t37) goto L7 else goto L25 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + if ($t37) { goto L7; } else { goto L25; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 +L6: + + // drop($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + + // $t38 := 10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:91+25 + $t38 := 10; + assume $IsValid'u64'($t38); + + // $t39 := error::not_found($t38) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:74+43 + call $t39 := $1_error_not_found($t38); + if ($abort_flag) { + assume {:print "$at(186,34565,34608)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + assume {:print "$at(186,34500,34609)"} true; + assume {:print "$track_abort(113,68):", $t39} $t39 == $t39; + + // $t26 := move($t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + $t26 := $t39; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:866:9+109 + goto L24; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:44+14 + assume {:print "$at(186,34654,34668)"} true; +L8: + + // $t40 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:60+22 + assume {:print "$at(186,34670,34692)"} true; + $t40 := $t2->$token_data_id; + + // $t41 := table::borrow_mut($t34, $t40) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:26+57 + call $t41,$t34 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t34, $t40); + if ($abort_flag) { + assume {:print "$at(186,34636,34693)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[token_data]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:867:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t41); + assume {:print "$track_local(113,68,18):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t42 := get_field.mutability_config($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:14+28 + assume {:print "$at(186,34878,34906)"} true; + $t42 := $Dereference($t41)->$mutability_config; + + // $t43 := get_field.properties($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:14+39 + $t43 := $t42->$properties; + + // $t44 := !($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:13+1 + call $t44 := $Not($t43); + + // if ($t44) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:871:9+490 + if ($t44) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:45+10 + assume {:print "$at(186,34986,34996)"} true; +L10: + + // $t45 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:44+30 + assume {:print "$at(186,34985,35015)"} true; + $t45 := $Dereference($t41)->$default_properties; + + // $t46 := [84, 79, 75, 69, 78, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 77, 85, 84, 65, 84, 66, 76, 69] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:90+22 + $t46 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 80, 82)), MakeVec4(79, 80, 69, 82)), MakeVec4(84, 89, 95, 77)), MakeVec4(85, 84, 65, 84)), MakeVec3(66, 76, 69)); + assume $IsValid'vec'u8''($t46); + + // $t47 := string::utf8($t46) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:77+36 + call $t47 := $1_string_utf8($t46); + if ($abort_flag) { + assume {:print "$at(186,35018,35054)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t48 := property_map::contains_key($t45, $t47) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:873:17+97 + call $t48 := $1_property_map_contains_key($t45, $t47); + if ($abort_flag) { + assume {:print "$at(186,34958,35055)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t48) goto L12 else goto L26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + if ($t48) { goto L12; } else { goto L26; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 +L11: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + + // $t49 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:874:42+18 + assume {:print "$at(186,35098,35116)"} true; + $t49 := 13; + assume $IsValid'u64'($t49); + + // $t50 := error::permission_denied($t49) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:874:17+44 + call $t50 := $1_error_permission_denied($t49); + if ($abort_flag) { + assume {:print "$at(186,35073,35117)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + assume {:print "$at(186,34933,35131)"} true; + assume {:print "$track_abort(113,68):", $t50} $t50 == $t50; + + // $t26 := move($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + $t26 := $t50; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:872:13+198 + goto L24; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:63+10 + assume {:print "$at(186,35196,35206)"} true; +L13: + + // $t51 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:62+30 + assume {:print "$at(186,35195,35225)"} true; + $t51 := $Dereference($t41)->$default_properties; + + // $t52 := [84, 79, 75, 69, 78, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 77, 85, 84, 65, 84, 66, 76, 69] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:108+22 + $t52 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 80, 82)), MakeVec4(79, 80, 69, 82)), MakeVec4(84, 89, 95, 77)), MakeVec4(85, 84, 65, 84)), MakeVec3(66, 76, 69)); + assume $IsValid'vec'u8''($t52); + + // $t53 := string::utf8($t52) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:95+36 + call $t53 := $1_string_utf8($t52); + if ($abort_flag) { + assume {:print "$at(186,35228,35264)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // assume Identical($t54, [98, 111, 111, 108]) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:143:9+18 + assume {:print "$at(185,4806,4824)"} true; + assume ($t54 == MakeVec4(98, 111, 111, 108)); + + // assume Identical($t55, simple_map::spec_get(select property_map::PropertyMap.map($t51), $t53)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:146:9+46 + assume {:print "$at(185,4955,5001)"} true; + assume ($t55 == $1_simple_map_spec_get'$1_string_String_$1_property_map_PropertyValue'($t51->$map, $t53)); + + // $t56 := property_map::read_bool($t51, $t53) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:877:38+94 + assume {:print "$at(186,35171,35265)"} true; + call $t56 := $1_property_map_read_bool($t51, $t53); + if ($abort_flag) { + assume {:print "$at(186,35171,35265)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t56) goto L15 else goto L27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + if ($t56) { goto L15; } else { goto L27; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 +L15: + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + goto L9; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 +L14: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + + // $t57 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:66+18 + $t57 := 13; + assume $IsValid'u64'($t57); + + // $t58 := error::permission_denied($t57) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:41+44 + call $t58 := $1_error_permission_denied($t57); + if ($abort_flag) { + assume {:print "$at(186,35307,35351)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_abort($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + assume {:print "$at(186,35279,35352)"} true; + assume {:print "$track_abort(113,68):", $t58} $t58 == $t58; + + // $t26 := move($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + $t26 := $t58; + + // goto L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:878:13+73 + goto L24; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:13+8 + assume {:print "$at(186,35479,35487)"} true; +L9: + + // $t59 := get_field.property_version($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:13+25 + assume {:print "$at(186,35479,35504)"} true; + $t59 := $t2->$property_version; + + // $t60 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:42+1 + $t60 := 0; + assume $IsValid'u64'($t60); + + // $t61 := ==($t59, $t60) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:39+2 + $t61 := $IsEqual'u64'($t59, $t60); + + // if ($t61) goto L17 else goto L28 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + if ($t61) { goto L17; } else { goto L28; } + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:54+11 + assume {:print "$at(186,35566,35577)"} true; +L17: + + // $t62 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:77+1 + assume {:print "$at(186,35589,35590)"} true; + $t62 := 1; + assume $IsValid'u64'($t62); + + // assume Identical($t63, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t63 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // $t64 := token::withdraw_with_event_internal($t1, $t2, $t62) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:25+54 + assume {:print "$at(186,35537,35591)"} true; + call $t64 := $1_token_withdraw_with_event_internal($t1, $t2, $t62); + if ($abort_flag) { + assume {:print "$at(186,35537,35591)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[token]($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:883:17+5 + assume {:print "$track_local(113,68,17):", $t64} $t64 == $t64; + + // $t65 := get_field.largest_property_version($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:40+35 + assume {:print "$at(186,35690,35725)"} true; + $t65 := $Dereference($t41)->$largest_property_version; + + // $t66 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:78+1 + $t66 := 1; + assume $IsValid'u64'($t66); + + // $t67 := +($t65, $t66) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:76+1 + call $t67 := $AddU64($t65, $t66); + if ($abort_flag) { + assume {:print "$at(186,35726,35727)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[cur_property_version]($t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:885:17+20 + assume {:print "$track_local(113,68,14):", $t67} $t67 == $t67; + + // $t68 := get_field.token_data_id($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:48+22 + assume {:print "$at(186,35778,35800)"} true; + $t68 := $t2->$token_data_id; + + // $t69 := token::create_token_id($t68, $t67) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:32+61 + call $t69 := $1_token_create_token_id($t68, $t67); + if ($abort_flag) { + assume {:print "$at(186,35762,35823)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // trace_local[new_token_id]($t69) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:886:17+12 + assume {:print "$track_local(113,68,16):", $t69} $t69 == $t69; + + // $t70 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:889:25+1 + assume {:print "$at(186,35919,35920)"} true; + $t70 := 1; + assume $IsValid'u64'($t70); + + // $t71 := get_field.default_properties($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:890:35+29 + assume {:print "$at(186,35956,35985)"} true; + $t71 := $Dereference($t41)->$default_properties; + + // $t72 := pack token::Token($t69, $t70, $t71) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:887:29+147 + assume {:print "$at(186,35853,36000)"} true; + $t72 := $1_token_Token($t69, $t70, $t71); + + // trace_local[new_token]($t72) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:887:17+9 + assume {:print "$track_local(113,68,15):", $t72} $t72 == $t72; + + // assume Identical($t73, select token::Token.id($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:897:9+24 + assume {:print "$at(187,37853,37877)"} true; + assume ($t73 == $t72->$id); + + // assume Identical($t74, select token::Token.amount($t72)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:898:9+32 + assume {:print "$at(187,37886,37918)"} true; + assume ($t74 == $t72->$amount); + + // assume Identical($t75, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t75 == $ResourceValue($1_token_TokenStore_$memory, $t1)); + + // assume Identical($t76, table::spec_get(select token::TokenStore.tokens($t75), $t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t76 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t75->$tokens, $t73)); + + // assume Identical($t77, table::spec_contains(select token::TokenStore.tokens($t75), $t73)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t77 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t75->$tokens, $t73)); + + // token::direct_deposit($t1, $t72) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:892:13+38 + assume {:print "$at(186,36014,36052)"} true; + call $1_token_direct_deposit($t1, $t72); + if ($abort_flag) { + assume {:print "$at(186,36014,36052)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // assume Identical($t78, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t78 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // token::update_token_property_internal($t1, $t69, $t3, $t4, $t5) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:893:13+78 + assume {:print "$at(186,36066,36144)"} true; + call $1_token_update_token_property_internal($t1, $t69, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,36066,36144)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t79 := features::module_event_migration_enabled() on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:894:17+47 + assume {:print "$at(186,36162,36209)"} true; + call $t79 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,36162,36209)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t79) goto L19 else goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:894:13+301 + if ($t79) { goto L19; } else { goto L18; } + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:896:29+8 + assume {:print "$at(186,36294,36302)"} true; +L19: + + // $t80 := pack token::MutateTokenPropertyMap($t2, $t69, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:29+202 + assume {:print "$at(186,36241,36443)"} true; + $t80 := $1_token_MutateTokenPropertyMap($t2, $t69, $t3, $t4, $t5); + + // opaque begin: event::emit($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:17+215 + + // opaque end: event::emit($t80) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:895:17+215 + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:52+11 + assume {:print "$at(186,36572,36583)"} true; +L18: + + // $t81 := borrow_global($t1) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:22+17 + assume {:print "$at(186,36542,36559)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t81 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(186,36542,36559)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t82 := borrow_field.mutate_token_property_events($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:904:17+76 + $t82 := $ChildMutation($t81, 5, $Dereference($t81)->$mutate_token_property_events); + + // $t83 := pack token::MutateTokenPropertyMapEvent($t2, $t69, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:905:17+207 + assume {:print "$at(186,36631,36838)"} true; + $t83 := $1_token_MutateTokenPropertyMapEvent($t2, $t69, $t3, $t4, $t5); + + // opaque begin: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + assume {:print "$at(186,36473,36853)"} true; + + // opaque end: event::emit_event($t82, $t83) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + + // write_back[Reference($t81).mutate_token_property_events (event::EventHandle)]($t82) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + $t81 := $UpdateMutation($t81, $Update'$1_token_TokenStore'_mutate_token_property_events($Dereference($t81), $Dereference($t82))); + + // write_back[token::TokenStore@]($t81) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:903:13+380 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t81), + $Dereference($t81)); + + // $t84 := borrow_field.largest_property_version($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+35 + assume {:print "$at(186,36868,36903)"} true; + $t84 := $ChildMutation($t41, 1, $Dereference($t41)->$largest_property_version); + + // write_ref($t84, $t67) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t84 := $UpdateMutation($t84, $t67); + + // write_back[Reference($t41).largest_property_version (u64)]($t84) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t41 := $UpdateMutation($t41, $Update'$1_token_TokenData'_largest_property_version($Dereference($t41), $Dereference($t84))); + + // write_back[Reference($t34)[]]($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t34 := $UpdateMutation($t34, UpdateTable($Dereference($t34), ReadVec($t41->p, LenVec($t34->p)), $Dereference($t41))); + + // write_back[Reference($t33).token_data (table::Table)]($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $t33 := $UpdateMutation($t33, $Update'$1_token_Collections'_token_data($Dereference($t33), $Dereference($t34))); + + // write_back[token::Collections@]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:914:13+58 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t33), + $Dereference($t33)); + + // ($t85, $t86, $t87) := unpack token::Token($t64) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:17+47 + assume {:print "$at(186,37017,37064)"} true; + $t85 := $t64->$id; + $t86 := $t64->$amount; + $t87 := $t64->$token_properties; + + // drop($t87) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:61+1 + + // drop($t86) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:40+1 + + // drop($t85) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:916:29+1 + + // $t11 := $t69 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + $t11 := $t69; + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + goto L20; + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; +L16: + + // drop($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; + + // assume Identical($t88, select token::TokenStore.tokens(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t88 == $ResourceValue($1_token_TokenStore_$memory, $t1)->$tokens); + + // token::update_token_property_internal($t1, $t2, $t3, $t4, $t5) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:920:13+74 + assume {:print "$at(186,37204,37278)"} true; + call $1_token_update_token_property_internal($t1, $t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,37204,37278)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t89 := features::module_event_migration_enabled() on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:921:17+47 + assume {:print "$at(186,37296,37343)"} true; + call $t89 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,37296,37343)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // if ($t89) goto L22 else goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:921:13+297 + if ($t89) { goto L22; } else { goto L21; } + + // label L22 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:923:29+8 + assume {:print "$at(186,37428,37436)"} true; +L22: + + // $t90 := pack token::MutateTokenPropertyMap($t2, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:29+198 + assume {:print "$at(186,37375,37573)"} true; + $t90 := $1_token_MutateTokenPropertyMap($t2, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:17+211 + + // opaque end: event::emit($t90) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:922:17+211 + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:52+11 + assume {:print "$at(186,37702,37713)"} true; +L21: + + // $t91 := borrow_global($t1) on_abort goto L24 with $t26 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:22+17 + assume {:print "$at(186,37672,37689)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t91 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(186,37672,37689)"} true; + $t26 := $abort_code; + assume {:print "$track_abort(113,68):", $t26} $t26 == $t26; + goto L24; + } + + // $t92 := borrow_field.mutate_token_property_events($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:931:17+76 + $t92 := $ChildMutation($t91, 5, $Dereference($t91)->$mutate_token_property_events); + + // $t93 := pack token::MutateTokenPropertyMapEvent($t2, $t2, $t3, $t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:932:17+203 + assume {:print "$at(186,37761,37964)"} true; + $t93 := $1_token_MutateTokenPropertyMapEvent($t2, $t2, $t3, $t4, $t5); + + // opaque begin: event::emit_event($t92, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + assume {:print "$at(186,37603,37979)"} true; + + // opaque end: event::emit_event($t92, $t93) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + + // write_back[Reference($t91).mutate_token_property_events (event::EventHandle)]($t92) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + $t91 := $UpdateMutation($t91, $Update'$1_token_TokenStore'_mutate_token_property_events($Dereference($t91), $Dereference($t92))); + + // write_back[token::TokenStore@]($t91) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:930:13+376 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t91), + $Dereference($t91)); + + // $t11 := $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + $t11 := $t2; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 +L20: + + // trace_return[0]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:882:9+2536 + assume {:print "$at(186,35475,38011)"} true; + assume {:print "$track_return(113,68,0):", $t11} $t11 == $t11; + + // label L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; +L23: + + // assert Not(Neq
($t20, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:388:9+26 + assume {:print "$at(187,17023,17049)"} true; + assert {:msg "assert_failed(187,17023,17049): function does not abort under this condition"} + !!$IsEqual'address'($t20, $t19); + + // assert Not(Not(exists[@915]($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:389:9+40 + assume {:print "$at(187,17058,17098)"} true; + assert {:msg "assert_failed(187,17058,17098): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#915, $t19); + + // assert Not(Not(table::spec_contains[]($t21, select token::TokenId.token_data_id($t2)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:390:9+72 + assume {:print "$at(187,17107,17179)"} true; + assert {:msg "assert_failed(187,17107,17179): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t21, $t2->$token_data_id); + + // assert Not(And(Not(select token::TokenMutabilityConfig.properties(select token::TokenData.mutability_config($t22))), Not(simple_map::spec_contains_key[](select property_map::PropertyMap.map(select token::TokenData.default_properties($t22)), string::spec_utf8[]([84, 79, 75, 69, 78, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 77, 85, 84, 65, 84, 66, 76, 69]))))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:391:9+168 + assume {:print "$at(187,17188,17356)"} true; + assert {:msg "assert_failed(187,17188,17356): function does not abort under this condition"} + !(!$t22->$mutability_config->$properties && !$1_simple_map_spec_contains_key'$1_string_String_$1_property_map_PropertyValue'($t22->$default_properties->$map, $1_string_spec_utf8(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(84, 79, 75, 69), MakeVec4(78, 95, 80, 82)), MakeVec4(79, 80, 69, 82)), MakeVec4(84, 89, 95, 77)), MakeVec4(85, 84, 65, 84)), MakeVec3(66, 76, 69))))); + + // return $t11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:391:9+168 + $ret0 := $t11; + return; + + // label L24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; +L24: + + // abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:942:5+1 + assume {:print "$at(186,38016,38017)"} true; + $abort_code := $t26; + $abort_flag := true; + return; + + // label L25 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L25: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L6 at :1:1+10 + goto L6; + + // label L26 at :1:1+10 +L26: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L11 at :1:1+10 + goto L11; + + // label L27 at :1:1+10 +L27: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L14 at :1:1+10 + goto L14; + + // label L28 at :1:1+10 +L28: + + // drop($t33) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t34) at :1:1+10 + + // goto L16 at :1:1+10 + goto L16; + +} + +// fun token::mutate_token_properties [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+868 +procedure {:timeLimit 80} $1_token_mutate_token_properties$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: int, _$t6: int, _$t7: Vec ($1_string_String), _$t8: Vec (Vec (int)), _$t9: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t10: int; + var $t11: $1_token_TokenId; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: $1_token_TokenId; + var $t20: bool; + var $t21: $1_token_TokenId; + var $t22: int; + var $t23: int; + var $t24: int; + var $t25: int; + var $t26: Table int ($1_token_TokenData); + var $t27: $1_token_TokenData; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: int; + var $t6: int; + var $t7: Vec ($1_string_String); + var $t8: Vec (Vec (int)); + var $t9: Vec ($1_string_String); + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + $t7 := _$t7; + $t8 := _$t8; + $t9 := _$t9; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$at(186,16798,16799)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'u64'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'u64'($t6); + + // assume WellFormed($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'vec'$1_string_String''($t7); + + // assume WellFormed($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'vec'vec'u8'''($t8); + + // assume WellFormed($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume $IsValid'vec'$1_string_String''($t9); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:113:9+39 + assume {:print "$at(187,3847,3886)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$at(186,16798,16799)"} true; + assume {:print "$track_local(113,69,0):", $t0} $t0 == $t0; + + // trace_local[token_owner]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,1):", $t1} $t1 == $t1; + + // trace_local[creator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,2):", $t2} $t2 == $t2; + + // trace_local[collection_name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,3):", $t3} $t3 == $t3; + + // trace_local[token_name]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,4):", $t4} $t4 == $t4; + + // trace_local[token_property_version]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,5):", $t5} $t5 == $t5; + + // trace_local[amount]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,6):", $t6} $t6 == $t6; + + // trace_local[keys]($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,7):", $t7} $t7 == $t7; + + // trace_local[values]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,8):", $t8} $t8 == $t8; + + // trace_local[types]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:493:5+1 + assume {:print "$track_local(113,69,9):", $t9} $t9 == $t9; + + // $t13 := signer::address_of($t0) on_abort goto L9 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:17+27 + assume {:print "$at(186,17195,17222)"} true; + call $t13 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,17195,17222)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,69):", $t14} $t14 == $t14; + goto L9; + } + + // $t15 := ==($t13, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:45+2 + $t15 := $IsEqual'address'($t13, $t2); + + // if ($t15) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 + if ($t15) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 + assume {:print "$at(186,17187,17275)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 +L0: + + // $t16 := 14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:74+21 + assume {:print "$at(186,17252,17273)"} true; + $t16 := 14; + assume $IsValid'u64'($t16); + + // $t17 := error::not_found($t16) on_abort goto L9 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:57+39 + call $t17 := $1_error_not_found($t16); + if ($abort_flag) { + assume {:print "$at(186,17235,17274)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,69):", $t14} $t14 == $t14; + goto L9; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 + assume {:print "$at(186,17187,17275)"} true; + assume {:print "$track_abort(113,69):", $t17} $t17 == $t17; + + // $t14 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 + $t14 := $t17; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:505:9+88 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:506:17+1 + assume {:print "$at(186,17293,17294)"} true; +L2: + + // $t18 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:506:17+1 + assume {:print "$at(186,17293,17294)"} true; + $t18 := 0; + assume $IsValid'u64'($t18); + + // trace_local[i]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:506:13+1 + assume {:print "$track_local(113,69,10):", $t18} $t18 == $t18; + + // $t19 := token::create_token_id_raw($t2, $t3, $t4, $t5) on_abort goto L9 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:507:24+140 + assume {:print "$at(186,17319,17459)"} true; + call $t19 := $1_token_create_token_id_raw($t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(186,17319,17459)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,69):", $t14} $t14 == $t14; + goto L9; + } + + // trace_local[token_id]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:507:13+8 + assume {:print "$track_local(113,69,11):", $t19} $t19 == $t19; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume {:print "$at(186,17530,17531)"} true; +L6: + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume {:print "$at(186,17530,17531)"} true; + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume $IsValid'u64'($t10); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume $IsValid'bool'($t20); + + // $t21 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + havoc $t21; + + // assume WellFormed($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume $IsValid'$1_token_TokenId'($t21); + + // $t22 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + havoc $t22; + + // assume WellFormed($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume $IsValid'u64'($t22); + + // $t23 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + havoc $t23; + + // assume WellFormed($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume $IsValid'u64'($t23); + + // trace_local[i]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume {:print "$info(): enter loop, variable(s) i havocked and reassigned"} true; + assume {:print "$track_local(113,69,10):", $t10} $t10 == $t10; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:16+1 + assume !$abort_flag; + + // $t20 := <($t10, $t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:18+1 + call $t20 := $Lt($t10, $t6); + + // if ($t20) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:9+136 + if ($t20) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:514:9+136 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:515:30+7 + assume {:print "$at(186,17573,17580)"} true; +L5: + + // assume Identical($t24, select token::TokenDataId.creator(select token::TokenId.token_data_id($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:384:9+45 + assume {:print "$at(187,16769,16814)"} true; + assume ($t24 == $t19->$token_data_id->$creator); + + // assume Identical($t25, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:385:9+39 + assume {:print "$at(187,16823,16862)"} true; + assume ($t25 == $1_signer_$address_of($t0)); + + // assume Identical($t26, select token::Collections.token_data(global($t24))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:386:9+61 + assume {:print "$at(187,16871,16932)"} true; + assume ($t26 == $ResourceValue($1_token_Collections_$memory, $t24)->$token_data); + + // assume Identical($t27, table::spec_get($t26, select token::TokenId.token_data_id($t19))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:387:9+73 + assume {:print "$at(187,16941,17014)"} true; + assume ($t27 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t26, $t19->$token_data_id)); + + // $t21 := token::mutate_one_token($t0, $t1, $t19, $t7, $t8, $t9) on_abort goto L9 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:515:13+69 + assume {:print "$at(186,17556,17625)"} true; + call $t21 := $1_token_mutate_one_token($t0, $t1, $t19, $t7, $t8, $t9); + if ($abort_flag) { + assume {:print "$at(186,17556,17625)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,69):", $t14} $t14 == $t14; + goto L9; + } + + // drop($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:515:13+69 + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:516:21+1 + assume {:print "$at(186,17647,17648)"} true; + $t22 := 1; + assume $IsValid'u64'($t22); + + // $t23 := +($t10, $t22) on_abort goto L9 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:516:19+1 + call $t23 := $AddU64($t10, $t22); + if ($abort_flag) { + assume {:print "$at(186,17645,17646)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,69):", $t14} $t14 == $t14; + goto L9; + } + + // trace_local[i]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:516:13+1 + assume {:print "$track_local(113,69,10):", $t23} $t23 == $t23; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:516:22+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:517:10+1 + assume {:print "$at(186,17659,17660)"} true; +L3: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:517:10+1 + assume {:print "$at(186,17659,17660)"} true; + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:517:10+1 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:517:10+1 + assume {:print "$at(186,17659,17660)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:518:5+1 + assume {:print "$at(186,17665,17666)"} true; +L8: + + // assert Not(Neq
($t12, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:114:9+26 + assume {:print "$at(187,3895,3921)"} true; + assert {:msg "assert_failed(187,3895,3921): function does not abort under this condition"} + !!$IsEqual'address'($t12, $t2); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t4)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t4->$bytes) > 128); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:518:5+1 + assume {:print "$at(186,17665,17666)"} true; +L9: + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:518:5+1 + assume {:print "$at(186,17665,17666)"} true; + $abort_code := $t14; + $abort_flag := true; + return; + +} + +// fun token::mutate_tokendata_description [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+674 +procedure {:timeLimit 80} $1_token_mutate_tokendata_description$verify(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $Mutation ($1_token_TokenData); + var $t4: int; + var $t5: $1_account_Account; + var $t6: Table int ($1_token_TokenData); + var $t7: $1_token_TokenData; + var $t8: int; + var $t9: int; + var $t10: Table int ($1_token_TokenData); + var $t11: int; + var $t12: int; + var $t13: Table int ($1_token_TokenData); + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Collections); + var $t17: $Mutation (Table int ($1_token_TokenData)); + var $t18: $Mutation ($1_token_TokenData); + var $t19: $1_token_TokenMutabilityConfig; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_string_String; + var $t24: $1_string_String; + var $t25: $1_string_String; + var $t26: int; + var $t27: $1_account_Account; + var $t28: $Mutation ($1_string_String); + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#917: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#918: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#919: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume {:print "$at(186,30866,30867)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:342:9+39 + assume {:print "$at(187,14880,14919)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:343:9+45 + assume {:print "$at(187,14928,14973)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // assume Identical($t6, select token::Collections.token_data(global(select token::TokenDataId.creator($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:344:9+75 + assume {:print "$at(187,14982,15057)"} true; + assume ($t6 == $ResourceValue($1_token_Collections_$memory, $t1->$creator)->$token_data); + + // assume Identical($t7, table::spec_get($t6, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:345:9+64 + assume {:print "$at(187,15066,15130)"} true; + assume ($t7 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t6, $t1)); + + // assume Identical($t8, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t8 == $t1->$creator); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, select token::Collections.token_data(global($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t10 == $ResourceValue($1_token_Collections_$memory, $t8)->$token_data); + + // @919 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume {:print "$at(186,30866,30867)"} true; + $1_account_Account_$memory#919 := $1_account_Account_$memory; + + // @918 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#918 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @917 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + $1_token_Collections_$memory#917 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume {:print "$track_local(113,70,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume {:print "$track_local(113,70,1):", $t1} $t1 == $t1; + + // trace_local[description]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:797:5+1 + assume {:print "$track_local(113,70,2):", $t2} $t2 == $t2; + + // assume Identical($t11, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t11 == $t1->$creator); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, select token::Collections.token_data(global($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t13 == $ResourceValue($1_token_Collections_$memory, $t11)->$token_data); + + // token::assert_tokendata_exists($t0, $t1) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:798:9+47 + assume {:print "$at(186,31004,31051)"} true; + call $1_token_assert_tokendata_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,31004,31051)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,70):", $t14} $t14 == $t14; + goto L4; + } + + // $t15 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:800:66+21 + assume {:print "$at(186,31119,31140)"} true; + $t15 := $t1->$creator; + + // $t16 := borrow_global($t15) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:800:35+17 + if (!$ResourceExists($1_token_Collections_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(186,31088,31105)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,70):", $t14} $t14 == $t14; + goto L4; + } + + // $t17 := borrow_field.token_data($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:800:30+69 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$token_data); + + // $t18 := table::borrow_mut($t17, $t1) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:801:26+48 + assume {:print "$at(186,31179,31227)"} true; + call $t18,$t17 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(186,31179,31227)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,70):", $t14} $t14 == $t14; + goto L4; + } + + // trace_local[token_data]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:801:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t18); + assume {:print "$track_local(113,70,3):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t19 := get_field.mutability_config($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:17+28 + assume {:print "$at(186,31245,31273)"} true; + $t19 := $Dereference($t18)->$mutability_config; + + // $t20 := get_field.description($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:17+40 + $t20 := $t19->$description; + + // if ($t20) goto L1 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + if ($t20) { goto L1; } else { goto L5; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + assume {:print "$at(186,31237,31332)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 +L0: + + // drop($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + assume {:print "$at(186,31237,31332)"} true; + + // $t21 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:84+18 + $t21 := 13; + assume $IsValid'u64'($t21); + + // $t22 := error::permission_denied($t21) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:59+44 + call $t22 := $1_error_permission_denied($t21); + if ($abort_flag) { + assume {:print "$at(186,31287,31331)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,70):", $t14} $t14 == $t14; + goto L4; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + assume {:print "$at(186,31237,31332)"} true; + assume {:print "$track_abort(113,70):", $t22} $t22 == $t22; + + // $t14 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + $t14 := $t22; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:802:9+95 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:803:63+7 + assume {:print "$at(186,31396,31403)"} true; +L2: + + // $t23 := get_field.collection($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:803:72+24 + assume {:print "$at(186,31405,31429)"} true; + $t23 := $t1->$collection; + + // $t24 := get_field.name($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:803:98+18 + $t24 := $t1->$name; + + // $t25 := get_field.description($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:803:118+22 + $t25 := $Dereference($t18)->$description; + + // assume Identical($t26, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t26 == $1_signer_$address_of($t0)); + + // assume Identical($t27, global($t26)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t27 == $ResourceValue($1_account_Account_$memory, $t26)); + + // token_event_store::emit_token_descrition_mutate_event($t0, $t23, $t24, $t25, $t2) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:803:9+145 + assume {:print "$at(186,31342,31487)"} true; + call $1_token_event_store_emit_token_descrition_mutate_event($t0, $t23, $t24, $t25, $t2); + if ($abort_flag) { + assume {:print "$at(186,31342,31487)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,70):", $t14} $t14 == $t14; + goto L4; + } + + // $t28 := borrow_field.description($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+22 + assume {:print "$at(186,31497,31519)"} true; + $t28 := $ChildMutation($t18, 6, $Dereference($t18)->$description); + + // write_ref($t28, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+36 + $t28 := $UpdateMutation($t28, $t2); + + // write_back[Reference($t18).description (string::String)]($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+36 + $t18 := $UpdateMutation($t18, $Update'$1_token_TokenData'_description($Dereference($t18), $Dereference($t28))); + + // write_back[Reference($t17)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+36 + $t17 := $UpdateMutation($t17, UpdateTable($Dereference($t17), ReadVec($t18->p, LenVec($t17->p)), $Dereference($t18))); + + // write_back[Reference($t16).token_data (table::Table)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+36 + $t16 := $UpdateMutation($t16, $Update'$1_token_Collections'_token_data($Dereference($t16), $Dereference($t17))); + + // write_back[token::Collections@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:804:9+36 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:805:5+1 + assume {:print "$at(186,31539,31540)"} true; +L3: + + // assert Not(Neq
($t9, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t9, $t8); + + // assert Not(Not(exists[@917]($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#917, $t8); + + // assert Not(Not(table::spec_contains[]($t10, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1); + + // assert Not(Not(select token::TokenMutabilityConfig.description(select token::TokenData.mutability_config($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:346:9+52 + assume {:print "$at(187,15139,15191)"} true; + assert {:msg "assert_failed(187,15139,15191): function does not abort under this condition"} + !!$t7->$mutability_config->$description; + + // assert Not(And(Not(exists[@918]($t4)), Not(exists[@919]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:347:9+97 + assume {:print "$at(187,15200,15297)"} true; + assert {:msg "assert_failed(187,15200,15297): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && !$ResourceExists($1_account_Account_$memory#919, $t4)); + + // assert Not(And(Not(exists[@918]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:348:9+129 + assume {:print "$at(187,15306,15435)"} true; + assert {:msg "assert_failed(187,15306,15435): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@918]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:349:9+105 + assume {:print "$at(187,15444,15549)"} true; + assert {:msg "assert_failed(187,15444,15549): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:349:9+105 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:805:5+1 + assume {:print "$at(186,31539,31540)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Or(Neq
($t9, $t8), Not(exists[@917]($t8))), Not(table::spec_contains[]($t10, $t1))), Not(select token::TokenMutabilityConfig.description(select token::TokenData.mutability_config($t7)))), And(Not(exists[@918]($t4)), Not(exists[@919]($t4)))), And(Not(exists[@918]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))), And(Not(exists[@918]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:340:5+833 + assume {:print "$at(187,14722,15555)"} true; + assert {:msg "assert_failed(187,14722,15555): abort not covered by any of the `aborts_if` clauses"} + ((((((!$IsEqual'address'($t9, $t8) || !$ResourceExists($1_token_Collections_$memory#917, $t8)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1)) || !$t7->$mutability_config->$description) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && !$ResourceExists($1_account_Account_$memory#919, $t4))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#918, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:340:5+833 + $abort_code := $t14; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t17) at :1:1+10 + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun token::mutate_tokendata_maximum [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+901 +procedure {:timeLimit 80} $1_token_mutate_tokendata_maximum$verify(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: int) returns () +{ + // declare local variables + var $t3: bool; + var $t4: $Mutation ($1_token_TokenData); + var $t5: int; + var $t6: $1_account_Account; + var $t7: Table int ($1_token_TokenData); + var $t8: $1_token_TokenData; + var $t9: int; + var $t10: int; + var $t11: Table int ($1_token_TokenData); + var $t12: int; + var $t13: int; + var $t14: Table int ($1_token_TokenData); + var $t15: int; + var $t16: int; + var $t17: $Mutation ($1_token_Collections); + var $t18: $Mutation (Table int ($1_token_TokenData)); + var $t19: $Mutation ($1_token_TokenData); + var $t20: int; + var $t21: int; + var $t22: bool; + var $t23: int; + var $t24: bool; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: $1_token_TokenMutabilityConfig; + var $t32: bool; + var $t33: int; + var $t34: int; + var $t35: $1_string_String; + var $t36: $1_string_String; + var $t37: int; + var $t38: int; + var $t39: $1_account_Account; + var $t40: $Mutation (int); + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: int; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_Collections_$memory#920: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#921: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#922: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume {:print "$at(186,28256,28257)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:293:9+39 + assume {:print "$at(187,11932,11971)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:294:9+45 + assume {:print "$at(187,11980,12025)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // assume Identical($t7, select token::Collections.token_data(global(select token::TokenDataId.creator($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:295:9+75 + assume {:print "$at(187,12034,12109)"} true; + assume ($t7 == $ResourceValue($1_token_Collections_$memory, $t1->$creator)->$token_data); + + // assume Identical($t8, table::spec_get($t7, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:296:9+64 + assume {:print "$at(187,12118,12182)"} true; + assume ($t8 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t7, $t1)); + + // assume Identical($t9, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t9 == $t1->$creator); + + // assume Identical($t10, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t10 == $1_signer_$address_of($t0)); + + // assume Identical($t11, select token::Collections.token_data(global($t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t11 == $ResourceValue($1_token_Collections_$memory, $t9)->$token_data); + + // @922 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume {:print "$at(186,28256,28257)"} true; + $1_account_Account_$memory#922 := $1_account_Account_$memory; + + // @921 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#921 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @920 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + $1_token_Collections_$memory#920 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume {:print "$track_local(113,71,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume {:print "$track_local(113,71,1):", $t1} $t1 == $t1; + + // trace_local[maximum]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:749:5+1 + assume {:print "$track_local(113,71,2):", $t2} $t2 == $t2; + + // assume Identical($t12, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t12 == $t1->$creator); + + // assume Identical($t13, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t13 == $1_signer_$address_of($t0)); + + // assume Identical($t14, select token::Collections.token_data(global($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t14 == $ResourceValue($1_token_Collections_$memory, $t12)->$token_data); + + // token::assert_tokendata_exists($t0, $t1) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:750:9+47 + assume {:print "$at(186,28383,28430)"} true; + call $1_token_assert_tokendata_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,28383,28430)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // $t16 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:751:66+21 + assume {:print "$at(186,28497,28518)"} true; + $t16 := $t1->$creator; + + // $t17 := borrow_global($t16) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:751:35+17 + if (!$ResourceExists($1_token_Collections_$memory, $t16)) { + call $ExecFailureAbort(); + } else { + $t17 := $Mutation($Global($t16), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t16)); + } + if ($abort_flag) { + assume {:print "$at(186,28466,28483)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // $t18 := borrow_field.token_data($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:751:30+69 + $t18 := $ChildMutation($t17, 1, $Dereference($t17)->$token_data); + + // $t19 := table::borrow_mut($t18, $t1) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:752:26+48 + assume {:print "$at(186,28557,28605)"} true; + call $t19,$t18 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t18, $t1); + if ($abort_flag) { + assume {:print "$at(186,28557,28605)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // trace_local[token_data]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:752:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t19); + assume {:print "$track_local(113,71,4):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t20 := get_field.maximum($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+18 + assume {:print "$at(186,28694,28712)"} true; + $t20 := $Dereference($t19)->$maximum; + + // $t21 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:39+1 + $t21 := 0; + assume $IsValid'u64'($t21); + + // $t22 := !=($t20, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:36+2 + $t22 := !$IsEqual'u64'($t20, $t21); + + // if ($t22) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 + if ($t22) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:44+7 +L1: + + // $t23 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:55+1 + assume {:print "$at(186,28732,28733)"} true; + $t23 := 0; + assume $IsValid'u64'($t23); + + // $t3 := !=($t2, $t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:52+2 + $t3 := !$IsEqual'u64'($t2, $t23); + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 +L0: + + // $t24 := false at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 + assume {:print "$at(186,28694,28733)"} true; + $t24 := false; + assume $IsValid'bool'($t24); + + // $t3 := $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 + $t3 := $t24; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:17+39 +L2: + + // if ($t3) goto L4 else goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + assume {:print "$at(186,28686,28777)"} true; + if ($t3) { goto L4; } else { goto L14; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + assume {:print "$at(186,28686,28777)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 +L3: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + assume {:print "$at(186,28686,28777)"} true; + + // $t25 := 36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:82+16 + $t25 := 36; + assume $IsValid'u64'($t25); + + // $t26 := error::invalid_argument($t25) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:58+41 + call $t26 := $1_error_invalid_argument($t25); + if ($abort_flag) { + assume {:print "$at(186,28735,28776)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // trace_abort($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + assume {:print "$at(186,28686,28777)"} true; + assume {:print "$track_abort(113,71):", $t26} $t26 == $t26; + + // $t15 := move($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + $t15 := $t26; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:754:9+91 + goto L13; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:17+7 + assume {:print "$at(186,28795,28802)"} true; +L5: + + // $t27 := get_field.supply($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:28+17 + assume {:print "$at(186,28806,28823)"} true; + $t27 := $Dereference($t19)->$supply; + + // $t28 := >=($t2, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:25+2 + call $t28 := $Ge($t2, $t27); + + // if ($t28) goto L7 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + if ($t28) { goto L7; } else { goto L15; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + assume {:print "$at(186,28787,28867)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 +L6: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + assume {:print "$at(186,28787,28867)"} true; + + // $t29 := 36 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:71+16 + $t29 := 36; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_argument($t29) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:47+41 + call $t30 := $1_error_invalid_argument($t29); + if ($abort_flag) { + assume {:print "$at(186,28825,28866)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + assume {:print "$at(186,28787,28867)"} true; + assume {:print "$track_abort(113,71):", $t30} $t30 == $t30; + + // $t15 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + $t15 := $t30; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:755:9+80 + goto L13; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:17+10 + assume {:print "$at(186,28885,28895)"} true; +L8: + + // $t31 := get_field.mutability_config($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:17+28 + assume {:print "$at(186,28885,28913)"} true; + $t31 := $Dereference($t19)->$mutability_config; + + // $t32 := get_field.maximum($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:17+36 + $t32 := $t31->$maximum; + + // if ($t32) goto L10 else goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + if ($t32) { goto L10; } else { goto L16; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 +L10: + + // goto L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + assume {:print "$at(186,28877,28968)"} true; + goto L11; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 +L9: + + // drop($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + assume {:print "$at(186,28877,28968)"} true; + + // $t33 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:80+18 + $t33 := 13; + assume $IsValid'u64'($t33); + + // $t34 := error::permission_denied($t33) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:55+44 + call $t34 := $1_error_permission_denied($t33); + if ($abort_flag) { + assume {:print "$at(186,28923,28967)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // trace_abort($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + assume {:print "$at(186,28877,28968)"} true; + assume {:print "$track_abort(113,71):", $t34} $t34 == $t34; + + // $t15 := move($t34) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + $t15 := $t34; + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:756:9+91 + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:757:60+7 + assume {:print "$at(186,29029,29036)"} true; +L11: + + // $t35 := get_field.collection($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:757:69+24 + assume {:print "$at(186,29038,29062)"} true; + $t35 := $t1->$collection; + + // $t36 := get_field.name($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:757:95+18 + $t36 := $t1->$name; + + // $t37 := get_field.maximum($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:757:115+18 + $t37 := $Dereference($t19)->$maximum; + + // assume Identical($t38, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t38 == $1_signer_$address_of($t0)); + + // assume Identical($t39, global($t38)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t39 == $ResourceValue($1_account_Account_$memory, $t38)); + + // token_event_store::emit_token_maximum_mutate_event($t0, $t35, $t36, $t37, $t2) on_abort goto L13 with $t15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:757:9+134 + assume {:print "$at(186,28978,29112)"} true; + call $1_token_event_store_emit_token_maximum_mutate_event($t0, $t35, $t36, $t37, $t2); + if ($abort_flag) { + assume {:print "$at(186,28978,29112)"} true; + $t15 := $abort_code; + assume {:print "$track_abort(113,71):", $t15} $t15 == $t15; + goto L13; + } + + // $t40 := borrow_field.maximum($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+18 + assume {:print "$at(186,29122,29140)"} true; + $t40 := $ChildMutation($t19, 0, $Dereference($t19)->$maximum); + + // write_ref($t40, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+28 + $t40 := $UpdateMutation($t40, $t2); + + // write_back[Reference($t19).maximum (u64)]($t40) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+28 + $t19 := $UpdateMutation($t19, $Update'$1_token_TokenData'_maximum($Dereference($t19), $Dereference($t40))); + + // write_back[Reference($t18)[]]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+28 + $t18 := $UpdateMutation($t18, UpdateTable($Dereference($t18), ReadVec($t19->p, LenVec($t18->p)), $Dereference($t19))); + + // write_back[Reference($t17).token_data (table::Table)]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+28 + $t17 := $UpdateMutation($t17, $Update'$1_token_Collections'_token_data($Dereference($t17), $Dereference($t18))); + + // write_back[token::Collections@]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:758:9+28 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t17), + $Dereference($t17)); + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:759:5+1 + assume {:print "$at(186,29156,29157)"} true; +L12: + + // assert Not(Neq
($t10, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t10, $t9); + + // assert Not(Not(exists[@920]($t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#920, $t9); + + // assert Not(Not(table::spec_contains[]($t11, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t1); + + // assert Not(Or(Eq(select token::TokenData.maximum($t8), 0), Eq($t2, 0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:298:9+50 + assume {:print "$at(187,12238,12288)"} true; + assert {:msg "assert_failed(187,12238,12288): function does not abort under this condition"} + !($IsEqual'u64'($t8->$maximum, 0) || $IsEqual'u64'($t2, 0)); + + // assert Not(Lt($t2, select token::TokenData.supply($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:299:9+38 + assume {:print "$at(187,12297,12335)"} true; + assert {:msg "assert_failed(187,12297,12335): function does not abort under this condition"} + !($t2 < $t8->$supply); + + // assert Not(Not(select token::TokenMutabilityConfig.maximum(select token::TokenData.mutability_config($t8)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:300:9+48 + assume {:print "$at(187,12344,12392)"} true; + assert {:msg "assert_failed(187,12344,12392): function does not abort under this condition"} + !!$t8->$mutability_config->$maximum; + + // assert Not(And(Not(exists[@921]($t5)), Not(exists[@922]($t5)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:301:9+97 + assume {:print "$at(187,12401,12498)"} true; + assert {:msg "assert_failed(187,12401,12498): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && !$ResourceExists($1_account_Account_$memory#922, $t5)); + + // assert Not(And(Not(exists[@921]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:302:9+129 + assume {:print "$at(187,12507,12636)"} true; + assert {:msg "assert_failed(187,12507,12636): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@921]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:303:9+105 + assume {:print "$at(187,12645,12750)"} true; + assert {:msg "assert_failed(187,12645,12750): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:303:9+105 + return; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:759:5+1 + assume {:print "$at(186,29156,29157)"} true; +L13: + + // assert Or(Or(Or(Or(Or(Or(Or(Or(Neq
($t10, $t9), Not(exists[@920]($t9))), Not(table::spec_contains[]($t11, $t1))), Or(Eq(select token::TokenData.maximum($t8), 0), Eq($t2, 0))), Lt($t2, select token::TokenData.supply($t8))), Not(select token::TokenMutabilityConfig.maximum(select token::TokenData.mutability_config($t8)))), And(Not(exists[@921]($t5)), Not(exists[@922]($t5)))), And(Not(exists[@921]($t5)), Ge(Add(select account::Account.guid_creation_num($t6), 9), 1125899906842624))), And(Not(exists[@921]($t5)), Gt(Add(select account::Account.guid_creation_num($t6), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:292:5+924 + assume {:print "$at(187,11832,12756)"} true; + assert {:msg "assert_failed(187,11832,12756): abort not covered by any of the `aborts_if` clauses"} + ((((((((!$IsEqual'address'($t10, $t9) || !$ResourceExists($1_token_Collections_$memory#920, $t9)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t11, $t1)) || ($IsEqual'u64'($t8->$maximum, 0) || $IsEqual'u64'($t2, 0))) || ($t2 < $t8->$supply)) || !$t8->$mutability_config->$maximum) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && !$ResourceExists($1_account_Account_$memory#922, $t5))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && (($t6->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#921, $t5) && (($t6->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:292:5+924 + $abort_code := $t15; + $abort_flag := true; + return; + + // label L14 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L14: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t18) at :1:1+10 + + // goto L3 at :1:1+10 + goto L3; + + // label L15 at :1:1+10 +L15: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t18) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + + // label L16 at :1:1+10 +L16: + + // drop($t17) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t18) at :1:1+10 + + // goto L9 at :1:1+10 + goto L9; + +} + +// fun token::mutate_tokendata_property [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+2152 +procedure {:timeLimit 80} $1_token_mutate_tokendata_property$verify(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: Vec ($1_string_String), _$t3: Vec (Vec (int)), _$t4: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t5: $1_option_Option'$1_property_map_PropertyValue'; + var $t6: int; + var $t7: $1_string_String; + var $t8: int; + var $t9: $1_property_map_PropertyValue; + var $t10: Vec ($1_property_map_PropertyValue); + var $t11: $1_option_Option'$1_property_map_PropertyValue'; + var $t12: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $t13: $Mutation ($1_token_TokenData); + var $t14: int; + var $t15: int; + var $t16: Table int ($1_token_TokenData); + var $t17: $1_token_TokenData; + var $t18: int; + var $t19: int; + var $t20: Table int ($1_token_TokenData); + var $t21: int; + var $t22: int; + var $t23: Table int ($1_token_TokenData); + var $t24: int; + var $t25: int; + var $t26: int; + var $t27: int; + var $t28: bool; + var $t29: int; + var $t30: int; + var $t31: bool; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: $Mutation ($1_token_Collections); + var $t36: $Mutation (Table int ($1_token_TokenData)); + var $t37: $Mutation ($1_token_TokenData); + var $t38: $1_token_TokenMutabilityConfig; + var $t39: bool; + var $t40: int; + var $t41: int; + var $t42: int; + var $t43: int; + var $t44: bool; + var $t45: $1_string_String; + var $t46: $1_property_map_PropertyMap; + var $t47: bool; + var $t48: $1_property_map_PropertyMap; + var $t49: $1_property_map_PropertyValue; + var $t50: Vec (int); + var $t51: $1_string_String; + var $t52: $1_property_map_PropertyValue; + var $t53: bool; + var $t54: int; + var $t55: int; + var $t56: $Mutation (Vec ($1_option_Option'$1_property_map_PropertyValue')); + var $t57: $Mutation (Vec ($1_property_map_PropertyValue)); + var $t58: $Mutation ($1_property_map_PropertyMap); + var $t59: $Mutation ($1_property_map_PropertyMap); + var $t60: $1_string_String; + var $t61: $1_string_String; + var $t62: Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $t63: Vec ($1_property_map_PropertyValue); + var $t64: int; + var $t65: $1_account_Account; + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: Vec ($1_string_String); + var $t3: Vec (Vec (int)); + var $t4: Vec ($1_string_String); + var $temp_0'$1_option_Option'$1_property_map_PropertyValue'': $1_option_Option'$1_property_map_PropertyValue'; + var $temp_0'$1_property_map_PropertyValue': $1_property_map_PropertyValue; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $temp_0'vec'$1_option_Option'$1_property_map_PropertyValue''': Vec ($1_option_Option'$1_property_map_PropertyValue'); + var $temp_0'vec'$1_property_map_PropertyValue'': Vec ($1_property_map_PropertyValue); + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + var $1_token_Collections_$memory#923: $Memory $1_token_Collections; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$at(186,31614,31615)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume $IsValid'vec'$1_string_String''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume $IsValid'vec'vec'u8'''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume $IsValid'vec'$1_string_String''($t4); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t16, select token::Collections.token_data(global(select token::TokenDataId.creator($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:362:9+75 + assume {:print "$at(187,15886,15961)"} true; + assume ($t16 == $ResourceValue($1_token_Collections_$memory, $t1->$creator)->$token_data); + + // assume Identical($t17, table::spec_get($t16, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:363:9+64 + assume {:print "$at(187,15970,16034)"} true; + assume ($t17 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t16, $t1)); + + // assume Identical($t18, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t18 == $t1->$creator); + + // assume Identical($t19, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t19 == $1_signer_$address_of($t0)); + + // assume Identical($t20, select token::Collections.token_data(global($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t20 == $ResourceValue($1_token_Collections_$memory, $t18)->$token_data); + + // @923 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$at(186,31614,31615)"} true; + $1_token_Collections_$memory#923 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$track_local(113,72,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$track_local(113,72,1):", $t1} $t1 == $t1; + + // trace_local[keys]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$track_local(113,72,2):", $t2} $t2 == $t2; + + // trace_local[values]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$track_local(113,72,3):", $t3} $t3 == $t3; + + // trace_local[types]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:808:5+1 + assume {:print "$track_local(113,72,4):", $t4} $t4 == $t4; + + // assume Identical($t21, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t21 == $t1->$creator); + + // assume Identical($t22, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t22 == $1_signer_$address_of($t0)); + + // assume Identical($t23, select token::Collections.token_data(global($t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t23 == $ResourceValue($1_token_Collections_$memory, $t21)->$token_data); + + // token::assert_tokendata_exists($t0, $t1) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:815:9+47 + assume {:print "$at(186,31848,31895)"} true; + call $1_token_assert_tokendata_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,31848,31895)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t25 := vector::length($t2) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:816:23+21 + assume {:print "$at(186,31919,31940)"} true; + call $t25 := $1_vector_length'$1_string_String'($t2); + if ($abort_flag) { + assume {:print "$at(186,31919,31940)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[key_len]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:816:13+7 + assume {:print "$track_local(113,72,8):", $t25} $t25 == $t25; + + // $t26 := vector::length>($t3) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:817:23+23 + assume {:print "$at(186,31964,31987)"} true; + call $t26 := $1_vector_length'vec'u8''($t3); + if ($abort_flag) { + assume {:print "$at(186,31964,31987)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[val_len]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:817:13+7 + assume {:print "$track_local(113,72,15):", $t26} $t26 == $t26; + + // $t27 := vector::length($t4) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:818:23+22 + assume {:print "$at(186,32011,32033)"} true; + call $t27 := $1_vector_length'$1_string_String'($t4); + if ($abort_flag) { + assume {:print "$at(186,32011,32033)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[typ_len]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:818:13+7 + assume {:print "$track_local(113,72,14):", $t27} $t27 == $t27; + + // $t28 := ==($t25, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:25+2 + assume {:print "$at(186,32059,32061)"} true; + $t28 := $IsEqual'u64'($t25, $t26); + + // if ($t28) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 + if ($t28) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 + assume {:print "$at(186,32043,32127)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 +L0: + + // $t29 := 37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:58+33 + assume {:print "$at(186,32092,32125)"} true; + $t29 := 37; + assume $IsValid'u64'($t29); + + // $t30 := error::invalid_state($t29) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:37+55 + call $t30 := $1_error_invalid_state($t29); + if ($abort_flag) { + assume {:print "$at(186,32071,32126)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_abort($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 + assume {:print "$at(186,32043,32127)"} true; + assume {:print "$track_abort(113,72):", $t30} $t30 == $t30; + + // $t24 := move($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 + $t24 := $t30; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:819:9+84 + goto L21; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:17+7 + assume {:print "$at(186,32145,32152)"} true; +L2: + + // $t31 := ==($t25, $t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:25+2 + assume {:print "$at(186,32153,32155)"} true; + $t31 := $IsEqual'u64'($t25, $t27); + + // if ($t31) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 + if ($t31) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 + assume {:print "$at(186,32137,32221)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 +L3: + + // $t32 := 37 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:58+33 + assume {:print "$at(186,32186,32219)"} true; + $t32 := 37; + assume $IsValid'u64'($t32); + + // $t33 := error::invalid_state($t32) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:37+55 + call $t33 := $1_error_invalid_state($t32); + if ($abort_flag) { + assume {:print "$at(186,32165,32220)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_abort($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 + assume {:print "$at(186,32137,32221)"} true; + assume {:print "$track_abort(113,72):", $t33} $t33 == $t33; + + // $t24 := move($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 + $t24 := $t33; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:820:9+84 + goto L21; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:822:66+13 + assume {:print "$at(186,32289,32302)"} true; +L5: + + // $t34 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:822:66+21 + assume {:print "$at(186,32289,32310)"} true; + $t34 := $t1->$creator; + + // $t35 := borrow_global($t34) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:822:35+17 + if (!$ResourceExists($1_token_Collections_$memory, $t34)) { + call $ExecFailureAbort(); + } else { + $t35 := $Mutation($Global($t34), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t34)); + } + if ($abort_flag) { + assume {:print "$at(186,32258,32275)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t36 := borrow_field.token_data($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:822:30+69 + $t36 := $ChildMutation($t35, 1, $Dereference($t35)->$token_data); + + // $t37 := table::borrow_mut($t36, $t1) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:823:26+48 + assume {:print "$at(186,32349,32397)"} true; + call $t37,$t36 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t36, $t1); + if ($abort_flag) { + assume {:print "$at(186,32349,32397)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[token_data]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:823:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t37); + assume {:print "$track_local(113,72,13):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t38 := get_field.mutability_config($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:17+28 + assume {:print "$at(186,32415,32443)"} true; + $t38 := $Dereference($t37)->$mutability_config; + + // $t39 := get_field.properties($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:17+39 + $t39 := $t38->$properties; + + // if ($t39) goto L22 else goto L23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + if ($t39) { goto L22; } else { goto L23; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + assume {:print "$at(186,32407,32501)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 +L6: + + // drop($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + assume {:print "$at(186,32407,32501)"} true; + + // $t40 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:83+18 + $t40 := 13; + assume $IsValid'u64'($t40); + + // $t41 := error::permission_denied($t40) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:58+44 + call $t41 := $1_error_permission_denied($t40); + if ($abort_flag) { + assume {:print "$at(186,32456,32500)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_abort($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + assume {:print "$at(186,32407,32501)"} true; + assume {:print "$track_abort(113,72):", $t41} $t41 == $t41; + + // $t24 := move($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + $t24 := $t41; + + // goto L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:824:9+94 + goto L21; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:825:22+1 + assume {:print "$at(186,32524,32525)"} true; +L8: + + // $t42 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:825:22+1 + assume {:print "$at(186,32524,32525)"} true; + $t42 := 0; + assume $IsValid'u64'($t42); + + // trace_local[i]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:825:13+1 + assume {:print "$track_local(113,72,6):", $t42} $t42 == $t42; + + // $t12 := vector::empty>() on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:826:57+15 + assume {:print "$at(186,32583,32598)"} true; + call $t12 := $1_vector_empty'$1_option_Option'$1_property_map_PropertyValue''(); + if ($abort_flag) { + assume {:print "$at(186,32583,32598)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[old_values]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:826:13+10 + assume {:print "$track_local(113,72,12):", $t12} $t12 == $t12; + + // $t10 := vector::empty() on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:827:49+15 + assume {:print "$at(186,32648,32663)"} true; + call $t10 := $1_vector_empty'$1_property_map_PropertyValue'(); + if ($abort_flag) { + assume {:print "$at(186,32648,32663)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[new_values]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:827:13+10 + assume {:print "$track_local(113,72,10):", $t10} $t10 == $t10; + + // token::assert_non_standard_reserved_property($t2) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:828:9+44 + assume {:print "$at(186,32673,32717)"} true; + call $1_token_assert_non_standard_reserved_property($t2); + if ($abort_flag) { + assume {:print "$at(186,32673,32717)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume {:print "$at(186,32734,32735)"} true; +L18: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume {:print "$at(186,32734,32735)"} true; + havoc $t5; + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume ($IsValid'$1_option_Option'$1_property_map_PropertyValue''($t5) && (LenVec($t5->$vec) <= 1)); + + // $t6 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t6; + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'u64'($t6); + + // $t10 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t10; + + // assume WellFormed($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'vec'$1_property_map_PropertyValue''($t10); + + // $t12 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t12; + + // assume And(WellFormed($t12), forall $elem: option::Option: $t12: Le(Len(select option::Option.vec($elem)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume ($IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''($t12) && (var $range_0 := $t12; (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1)))))); + + // $t43 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t43; + + // assume WellFormed($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'u64'($t43); + + // $t44 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t44; + + // assume WellFormed($t44) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'bool'($t44); + + // $t45 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t45; + + // assume WellFormed($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_string_String'($t45); + + // $t46 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t46; + + // assume WellFormed($t46) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t46); + + // $t47 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t47; + + // assume WellFormed($t47) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'bool'($t47); + + // $t48 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t48; + + // assume WellFormed($t48) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyMap'($t48); + + // $t49 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t49; + + // assume WellFormed($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t49); + + // $t50 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t50; + + // assume WellFormed($t50) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'vec'u8''($t50); + + // $t51 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t51; + + // assume WellFormed($t51) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_string_String'($t51); + + // $t52 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t52; + + // assume WellFormed($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyValue'($t52); + + // $t53 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t53; + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'bool'($t53); + + // $t54 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t54; + + // assume WellFormed($t54) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'u64'($t54); + + // $t55 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t55; + + // assume WellFormed($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'u64'($t55); + + // $t37 := havoc[mut]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $temp_0'$1_token_TokenData'; + $t37 := $UpdateMutation($t37, $temp_0'$1_token_TokenData'); + + // assume WellFormed($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_token_TokenData'($Dereference($t37)); + + // $t56 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t56; + + // assume And(WellFormed($t56), forall $elem: option::Option: $t56: Le(Len(select option::Option.vec($elem)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume ($IsValid'vec'$1_option_Option'$1_property_map_PropertyValue'''($Dereference($t56)) && (var $range_0 := $Dereference($t56); (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1)))))); + + // $t57 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t57; + + // assume WellFormed($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'vec'$1_property_map_PropertyValue''($Dereference($t57)); + + // $t58 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t58; + + // assume WellFormed($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t58)); + + // $t59 := havoc[mut_all]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + havoc $t59; + + // assume WellFormed($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume $IsValid'$1_property_map_PropertyMap'($Dereference($t59)); + + // trace_local[i]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume {:print "$info(): enter loop, variable(s) i, new_values, old_values havocked and reassigned"} true; + assume {:print "$track_local(113,72,6):", $t6} $t6 == $t6; + + // trace_local[new_values]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume {:print "$track_local(113,72,10):", $t10} $t10 == $t10; + + // trace_local[old_values]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume {:print "$track_local(113,72,12):", $t12} $t12 == $t12; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:16+1 + assume !$abort_flag; + + // $t43 := vector::length($t2) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:20+21 + call $t43 := $1_vector_length'$1_string_String'($t2); + if ($abort_flag) { + assume {:print "$at(186,32738,32759)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t44 := <($t6, $t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:18+1 + call $t44 := $Lt($t6, $t43); + + // if ($t44) goto L24 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:9+884 + if ($t44) { goto L24; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:829:9+884 +L10: + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:830:38+5 + assume {:print "$at(186,32799,32804)"} true; +L11: + + // $t45 := vector::borrow($t2, $t6) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:830:23+24 + assume {:print "$at(186,32784,32808)"} true; + call $t45 := $1_vector_borrow'$1_string_String'($t2, $t6); + if ($abort_flag) { + assume {:print "$at(186,32784,32808)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[key]($t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:830:17+3 + assume {:print "$track_local(113,72,7):", $t45} $t45 == $t45; + + // $t46 := get_field.default_properties($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:57+30 + assume {:print "$at(186,32866,32896)"} true; + $t46 := $Dereference($t37)->$default_properties; + + // $t47 := property_map::contains_key($t46, $t45) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:30+63 + call $t47 := $1_property_map_contains_key($t46, $t45); + if ($abort_flag) { + assume {:print "$at(186,32839,32902)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // if ($t47) goto L13 else goto L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:26+240 + if ($t47) { goto L13; } else { goto L12; } + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:53+10 + assume {:print "$at(186,32958,32968)"} true; +L13: + + // $t48 := get_field.default_properties($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:52+30 + assume {:print "$at(186,32957,32987)"} true; + $t48 := $Dereference($t37)->$default_properties; + + // $t49 := property_map::borrow($t48, $t45) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:31+57 + call $t49 := $1_property_map_borrow($t48, $t45); + if ($abort_flag) { + assume {:print "$at(186,32936,32993)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t5 := opaque begin: option::some($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:17+72 + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:17+72 + assume ($IsValid'$1_option_Option'$1_property_map_PropertyValue''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume Eq>($t5, option::spec_some($t49)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:17+72 + assume $IsEqual'$1_option_Option'$1_property_map_PropertyValue''($t5, $1_option_spec_some'$1_property_map_PropertyValue'($t49)); + + // $t5 := opaque end: option::some($t49) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:832:17+72 + + // goto L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:26+240 + assume {:print "$at(186,32835,33075)"} true; + goto L14; + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:834:17+29 + assume {:print "$at(186,33032,33061)"} true; +L12: + + // $t5 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:834:17+29 + assume {:print "$at(186,33032,33061)"} true; + + // assume And(WellFormed($t5), Le(Len(select option::Option.vec($t5)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:834:17+29 + assume ($IsValid'$1_option_Option'$1_property_map_PropertyValue''($t5) && (LenVec($t5->$vec) <= 1)); + + // assume Eq>($t5, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:834:17+29 + assume $IsEqual'$1_option_Option'$1_property_map_PropertyValue''($t5, $1_option_spec_none'$1_property_map_PropertyValue'()); + + // $t5 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:834:17+29 + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:26+240 + assume {:print "$at(186,32835,33075)"} true; +L14: + + // trace_local[old_pv]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:831:17+6 + assume {:print "$at(186,32826,32832)"} true; + assume {:print "$track_local(113,72,11):", $t5} $t5 == $t5; + + // $t56 := borrow_local($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:836:31+15 + assume {:print "$at(186,33107,33122)"} true; + $t56 := $Mutation($Local(12), EmptyVec(), $t12); + + // vector::push_back>($t56, $t5) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:836:13+42 + call $t56 := $1_vector_push_back'$1_option_Option'$1_property_map_PropertyValue''($t56, $t5); + if ($abort_flag) { + assume {:print "$at(186,33089,33131)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // assert forall $elem: option::Option: $t56: Le(Len(select option::Option.vec($elem)), 1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + // data invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/move-stdlib/sources/option.move:13:9+24 + assume {:print "$at(11,530,554)"} true; + assert {:msg "assert_failed(11,530,554): data invariant does not hold"} + (var $range_0 := $Dereference($t56); (forall $i_1: int :: InRangeVec($range_0, $i_1) ==> (var $elem := ReadVec($range_0, $i_1); + ((LenVec($elem->$vec) <= 1))))); + + // write_back[LocalRoot($t12)@]($t56) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:836:13+42 + assume {:print "$at(186,33089,33131)"} true; + $t12 := $Dereference($t56); + + // trace_local[old_values]($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:836:13+42 + assume {:print "$track_local(113,72,12):", $t12} $t12 == $t12; + + // $t50 := vector::borrow>($t3, $t6) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:837:67+26 + assume {:print "$at(186,33199,33225)"} true; + call $t50 := $1_vector_borrow'vec'u8''($t3, $t6); + if ($abort_flag) { + assume {:print "$at(186,33199,33225)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t51 := vector::borrow($t4, $t6) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:837:96+25 + call $t51 := $1_vector_borrow'$1_string_String'($t4, $t6); + if ($abort_flag) { + assume {:print "$at(186,33228,33253)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // $t52 := property_map::create_property_value_raw($t50, $t51) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:837:26+96 + call $t52 := $1_property_map_create_property_value_raw($t50, $t51); + if ($abort_flag) { + assume {:print "$at(186,33158,33254)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[new_pv]($t52) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:837:17+6 + assume {:print "$track_local(113,72,9):", $t52} $t52 == $t52; + + // $t57 := borrow_local($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:838:31+15 + assume {:print "$at(186,33286,33301)"} true; + $t57 := $Mutation($Local(10), EmptyVec(), $t10); + + // vector::push_back($t57, $t52) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:838:13+42 + call $t57 := $1_vector_push_back'$1_property_map_PropertyValue'($t57, $t52); + if ($abort_flag) { + assume {:print "$at(186,33268,33310)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // write_back[LocalRoot($t10)@]($t57) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:838:13+42 + $t10 := $Dereference($t57); + + // trace_local[new_values]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:838:13+42 + assume {:print "$track_local(113,72,10):", $t10} $t10 == $t10; + + // $t53 := opaque begin: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:839:17+24 + assume {:print "$at(186,33328,33352)"} true; + + // assume WellFormed($t53) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:839:17+24 + assume $IsValid'bool'($t53); + + // assume Eq($t53, option::spec_is_some($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:839:17+24 + assume $IsEqual'bool'($t53, $1_option_spec_is_some'$1_property_map_PropertyValue'($t5)); + + // $t53 := opaque end: option::is_some($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:839:17+24 + + // if ($t53) goto L16 else goto L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:839:13+253 + if ($t53) { goto L16; } else { goto L15; } + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:840:58+10 + assume {:print "$at(186,33413,33423)"} true; +L16: + + // $t58 := borrow_field.default_properties($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:840:53+34 + assume {:print "$at(186,33408,33442)"} true; + $t58 := $ChildMutation($t37, 7, $Dereference($t37)->$default_properties); + + // property_map::update_property_value($t58, $t45, $t52) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:840:17+84 + call $t58 := $1_property_map_update_property_value($t58, $t45, $t52); + if ($abort_flag) { + assume {:print "$at(186,33372,33456)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // write_back[Reference($t37).default_properties (property_map::PropertyMap)]($t58) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:840:17+84 + $t37 := $UpdateMutation($t37, $Update'$1_token_TokenData'_default_properties($Dereference($t37), $Dereference($t58))); + + // goto L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:840:101+1 + goto L17; + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:842:40+10 + assume {:print "$at(186,33518,33528)"} true; +L15: + + // $t59 := borrow_field.default_properties($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:842:35+34 + assume {:print "$at(186,33513,33547)"} true; + $t59 := $ChildMutation($t37, 7, $Dereference($t37)->$default_properties); + + // property_map::add($t59, $t45, $t52) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:842:17+67 + call $t59 := $1_property_map_add($t59, $t45, $t52); + if ($abort_flag) { + assume {:print "$at(186,33495,33562)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // write_back[Reference($t37).default_properties (property_map::PropertyMap)]($t59) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:842:17+67 + $t37 := $UpdateMutation($t37, $Update'$1_token_TokenData'_default_properties($Dereference($t37), $Dereference($t59))); + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:844:17+1 + assume {:print "$at(186,33595,33596)"} true; +L17: + + // $t54 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:844:21+1 + assume {:print "$at(186,33599,33600)"} true; + $t54 := 1; + assume $IsValid'u64'($t54); + + // $t55 := +($t6, $t54) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:844:19+1 + call $t55 := $AddU64($t6, $t54); + if ($abort_flag) { + assume {:print "$at(186,33597,33598)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // trace_local[i]($t55) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:844:13+1 + assume {:print "$track_local(113,72,6):", $t55} $t55 == $t55; + + // goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:844:22+1 + goto L19; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + assume {:print "$at(186,33621,33759)"} true; +L9: + + // write_back[Reference($t36)[]]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + assume {:print "$at(186,33621,33759)"} true; + $t36 := $UpdateMutation($t36, UpdateTable($Dereference($t36), ReadVec($t37->p, LenVec($t36->p)), $Dereference($t37))); + + // write_back[Reference($t35).token_data (table::Table)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + $t35 := $UpdateMutation($t35, $Update'$1_token_Collections'_token_data($Dereference($t35), $Dereference($t36))); + + // write_back[token::Collections@]($t35) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t35), + $Dereference($t35)); + + // drop($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + + // $t60 := get_field.collection($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:72+24 + $t60 := $t1->$collection; + + // $t61 := get_field.name($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:98+18 + $t61 := $t1->$name; + + // $t62 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:124+10 + $t62 := $t12; + + // $t63 := move($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:136+10 + $t63 := $t10; + + // assume Identical($t64, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t64 == $1_signer_$address_of($t0)); + + // assume Identical($t65, global($t64)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t65 == $ResourceValue($1_account_Account_$memory, $t64)); + + // token_event_store::emit_default_property_mutate_event($t0, $t60, $t61, $t2, $t62, $t63) on_abort goto L21 with $t24 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + assume {:print "$at(186,33621,33759)"} true; + call $1_token_event_store_emit_default_property_mutate_event($t0, $t60, $t61, $t2, $t62, $t63); + if ($abort_flag) { + assume {:print "$at(186,33621,33759)"} true; + $t24 := $abort_code; + assume {:print "$track_abort(113,72):", $t24} $t24 == $t24; + goto L21; + } + + // goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:147+1 + goto L20; + + // label L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + // Loop invariant checking block for the loop started with header: L18 +L19: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:846:9+138 + assume {:print "$at(186,33621,33759)"} true; + assume false; + return; + + // label L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:847:5+1 + assume {:print "$at(186,33765,33766)"} true; +L20: + + // assert Not(Neq
($t19, $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t19, $t18); + + // assert Not(Not(exists[@923]($t18))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#923, $t18); + + // assert Not(Not(table::spec_contains[]($t20, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t20, $t1); + + // assert Not(Neq(Len($t2), Len>($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:365:9+35 + assume {:print "$at(187,16090,16125)"} true; + assert {:msg "assert_failed(187,16090,16125): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t2), LenVec($t3)); + + // assert Not(Neq(Len($t2), Len($t4))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:366:9+34 + assume {:print "$at(187,16134,16168)"} true; + assert {:msg "assert_failed(187,16134,16168): function does not abort under this condition"} + !!$IsEqual'num'(LenVec($t2), LenVec($t4)); + + // assert Not(Not(select token::TokenMutabilityConfig.properties(select token::TokenData.mutability_config($t17)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:367:9+51 + assume {:print "$at(187,16177,16228)"} true; + assert {:msg "assert_failed(187,16177,16228): function does not abort under this condition"} + !!$t17->$mutability_config->$properties; + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:367:9+51 + return; + + // label L21 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:847:5+1 + assume {:print "$at(186,33765,33766)"} true; +L21: + + // abort($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:847:5+1 + assume {:print "$at(186,33765,33766)"} true; + $abort_code := $t24; + $abort_flag := true; + return; + + // label L22 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L22: + + // drop($t37) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L7 at :1:1+10 + goto L7; + + // label L23 at :1:1+10 +L23: + + // drop($t35) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t36) at :1:1+10 + + // goto L6 at :1:1+10 + goto L6; + + // label L24 at :1:1+10 +L24: + + // drop($t35) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t36) at :1:1+10 + + // goto L10 at :1:1+10 + goto L10; + +} + +// fun token::mutate_tokendata_royalty [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+953 +procedure {:timeLimit 80} $1_token_mutate_tokendata_royalty$verify(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: $1_token_Royalty) returns () +{ + // declare local variables + var $t3: $Mutation ($1_token_TokenData); + var $t4: int; + var $t5: $1_account_Account; + var $t6: Table int ($1_token_TokenData); + var $t7: $1_token_TokenData; + var $t8: int; + var $t9: int; + var $t10: Table int ($1_token_TokenData); + var $t11: int; + var $t12: int; + var $t13: Table int ($1_token_TokenData); + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Collections); + var $t17: $Mutation (Table int ($1_token_TokenData)); + var $t18: $Mutation ($1_token_TokenData); + var $t19: $1_token_TokenMutabilityConfig; + var $t20: bool; + var $t21: int; + var $t22: int; + var $t23: $1_string_String; + var $t24: $1_string_String; + var $t25: $1_token_Royalty; + var $t26: int; + var $t27: $1_token_Royalty; + var $t28: int; + var $t29: $1_token_Royalty; + var $t30: int; + var $t31: int; + var $t32: int; + var $t33: int; + var $t34: int; + var $t35: $1_account_Account; + var $t36: $Mutation ($1_token_Royalty); + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: $1_token_Royalty; + var $temp_0'$1_token_Royalty': $1_token_Royalty; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#924: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#925: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#926: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume {:print "$at(186,29907,29908)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume $IsValid'$1_token_Royalty'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:329:9+39 + assume {:print "$at(187,14004,14043)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:330:9+45 + assume {:print "$at(187,14052,14097)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // assume Identical($t6, select token::Collections.token_data(global(select token::TokenDataId.creator($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:331:9+75 + assume {:print "$at(187,14106,14181)"} true; + assume ($t6 == $ResourceValue($1_token_Collections_$memory, $t1->$creator)->$token_data); + + // assume Identical($t7, table::spec_get($t6, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:332:9+64 + assume {:print "$at(187,14190,14254)"} true; + assume ($t7 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t6, $t1)); + + // assume Identical($t8, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t8 == $t1->$creator); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, select token::Collections.token_data(global($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t10 == $ResourceValue($1_token_Collections_$memory, $t8)->$token_data); + + // @926 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume {:print "$at(186,29907,29908)"} true; + $1_account_Account_$memory#926 := $1_account_Account_$memory; + + // @925 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#925 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @924 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + $1_token_Collections_$memory#924 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume {:print "$track_local(113,73,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume {:print "$track_local(113,73,1):", $t1} $t1 == $t1; + + // trace_local[royalty]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:776:5+1 + assume {:print "$track_local(113,73,2):", $t2} $t2 == $t2; + + // assume Identical($t11, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t11 == $t1->$creator); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, select token::Collections.token_data(global($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t13 == $ResourceValue($1_token_Collections_$memory, $t11)->$token_data); + + // token::assert_tokendata_exists($t0, $t1) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:777:9+47 + assume {:print "$at(186,30038,30085)"} true; + call $1_token_assert_tokendata_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,30038,30085)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,73):", $t14} $t14 == $t14; + goto L4; + } + + // $t15 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:779:66+21 + assume {:print "$at(186,30153,30174)"} true; + $t15 := $t1->$creator; + + // $t16 := borrow_global($t15) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:779:35+17 + if (!$ResourceExists($1_token_Collections_$memory, $t15)) { + call $ExecFailureAbort(); + } else { + $t16 := $Mutation($Global($t15), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t15)); + } + if ($abort_flag) { + assume {:print "$at(186,30122,30139)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,73):", $t14} $t14 == $t14; + goto L4; + } + + // $t17 := borrow_field.token_data($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:779:30+69 + $t17 := $ChildMutation($t16, 1, $Dereference($t16)->$token_data); + + // $t18 := table::borrow_mut($t17, $t1) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:780:26+48 + assume {:print "$at(186,30213,30261)"} true; + call $t18,$t17 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t17, $t1); + if ($abort_flag) { + assume {:print "$at(186,30213,30261)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,73):", $t14} $t14 == $t14; + goto L4; + } + + // trace_local[token_data]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:780:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t18); + assume {:print "$track_local(113,73,3):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t19 := get_field.mutability_config($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:17+28 + assume {:print "$at(186,30279,30307)"} true; + $t19 := $Dereference($t18)->$mutability_config; + + // $t20 := get_field.royalty($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:17+36 + $t20 := $t19->$royalty; + + // if ($t20) goto L1 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + if ($t20) { goto L1; } else { goto L5; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + assume {:print "$at(186,30271,30362)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 +L0: + + // drop($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + assume {:print "$at(186,30271,30362)"} true; + + // $t21 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:80+18 + $t21 := 13; + assume $IsValid'u64'($t21); + + // $t22 := error::permission_denied($t21) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:55+44 + call $t22 := $1_error_permission_denied($t21); + if ($abort_flag) { + assume {:print "$at(186,30317,30361)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,73):", $t14} $t14 == $t14; + goto L4; + } + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + assume {:print "$at(186,30271,30362)"} true; + assume {:print "$track_abort(113,73):", $t22} $t22 == $t22; + + // $t14 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + $t14 := $t22; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:781:9+91 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:784:13+7 + assume {:print "$at(186,30437,30444)"} true; +L2: + + // $t23 := get_field.collection($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:785:13+24 + assume {:print "$at(186,30458,30482)"} true; + $t23 := $t1->$collection; + + // $t24 := get_field.name($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:786:13+18 + assume {:print "$at(186,30496,30514)"} true; + $t24 := $t1->$name; + + // $t25 := get_field.royalty($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:787:13+18 + assume {:print "$at(186,30528,30546)"} true; + $t25 := $Dereference($t18)->$royalty; + + // $t26 := get_field.royalty_points_numerator($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:787:13+43 + $t26 := $t25->$royalty_points_numerator; + + // $t27 := get_field.royalty($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:788:13+18 + assume {:print "$at(186,30585,30603)"} true; + $t27 := $Dereference($t18)->$royalty; + + // $t28 := get_field.royalty_points_denominator($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:788:13+45 + $t28 := $t27->$royalty_points_denominator; + + // $t29 := get_field.royalty($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:789:13+18 + assume {:print "$at(186,30644,30662)"} true; + $t29 := $Dereference($t18)->$royalty; + + // $t30 := get_field.payee_address($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:789:13+32 + $t30 := $t29->$payee_address; + + // $t31 := get_field.royalty_points_numerator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:790:13+32 + assume {:print "$at(186,30690,30722)"} true; + $t31 := $t2->$royalty_points_numerator; + + // $t32 := get_field.royalty_points_denominator($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:791:13+34 + assume {:print "$at(186,30736,30770)"} true; + $t32 := $t2->$royalty_points_denominator; + + // $t33 := get_field.payee_address($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:792:13+21 + assume {:print "$at(186,30784,30805)"} true; + $t33 := $t2->$payee_address; + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, global($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t35 == $ResourceValue($1_account_Account_$memory, $t34)); + + // token_event_store::emit_token_royalty_mutate_event($t0, $t23, $t24, $t26, $t28, $t30, $t31, $t32, $t33) on_abort goto L4 with $t14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:783:9+442 + assume {:print "$at(186,30373,30815)"} true; + call $1_token_event_store_emit_token_royalty_mutate_event($t0, $t23, $t24, $t26, $t28, $t30, $t31, $t32, $t33); + if ($abort_flag) { + assume {:print "$at(186,30373,30815)"} true; + $t14 := $abort_code; + assume {:print "$track_abort(113,73):", $t14} $t14 == $t14; + goto L4; + } + + // $t36 := borrow_field.royalty($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+18 + assume {:print "$at(186,30825,30843)"} true; + $t36 := $ChildMutation($t18, 4, $Dereference($t18)->$royalty); + + // write_ref($t36, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+28 + $t36 := $UpdateMutation($t36, $t2); + + // write_back[Reference($t18).royalty (token::Royalty)]($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+28 + $t18 := $UpdateMutation($t18, $Update'$1_token_TokenData'_royalty($Dereference($t18), $Dereference($t36))); + + // write_back[Reference($t17)[]]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+28 + $t17 := $UpdateMutation($t17, UpdateTable($Dereference($t17), ReadVec($t18->p, LenVec($t17->p)), $Dereference($t18))); + + // write_back[Reference($t16).token_data (table::Table)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+28 + $t16 := $UpdateMutation($t16, $Update'$1_token_Collections'_token_data($Dereference($t16), $Dereference($t17))); + + // write_back[token::Collections@]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:794:9+28 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t16), + $Dereference($t16)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:795:5+1 + assume {:print "$at(186,30859,30860)"} true; +L3: + + // assert Not(Neq
($t9, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t9, $t8); + + // assert Not(Not(exists[@924]($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#924, $t8); + + // assert Not(Not(table::spec_contains[]($t10, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1); + + // assert Not(Not(select token::TokenMutabilityConfig.royalty(select token::TokenData.mutability_config($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:333:9+48 + assume {:print "$at(187,14263,14311)"} true; + assert {:msg "assert_failed(187,14263,14311): function does not abort under this condition"} + !!$t7->$mutability_config->$royalty; + + // assert Not(And(Not(exists[@925]($t4)), Not(exists[@926]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:334:9+97 + assume {:print "$at(187,14320,14417)"} true; + assert {:msg "assert_failed(187,14320,14417): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && !$ResourceExists($1_account_Account_$memory#926, $t4)); + + // assert Not(And(Not(exists[@925]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:335:9+129 + assume {:print "$at(187,14426,14555)"} true; + assert {:msg "assert_failed(187,14426,14555): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@925]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:336:9+105 + assume {:print "$at(187,14564,14669)"} true; + assert {:msg "assert_failed(187,14564,14669): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:336:9+105 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:795:5+1 + assume {:print "$at(186,30859,30860)"} true; +L4: + + // assert Or(Or(Or(Or(Or(Or(Neq
($t9, $t8), Not(exists[@924]($t8))), Not(table::spec_contains[]($t10, $t1))), Not(select token::TokenMutabilityConfig.royalty(select token::TokenData.mutability_config($t7)))), And(Not(exists[@925]($t4)), Not(exists[@926]($t4)))), And(Not(exists[@925]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))), And(Not(exists[@925]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:327:5+822 + assume {:print "$at(187,13853,14675)"} true; + assert {:msg "assert_failed(187,13853,14675): abort not covered by any of the `aborts_if` clauses"} + ((((((!$IsEqual'address'($t9, $t8) || !$ResourceExists($1_token_Collections_$memory#924, $t8)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1)) || !$t7->$mutability_config->$royalty) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && !$ResourceExists($1_account_Account_$memory#926, $t4))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#925, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:327:5+822 + $abort_code := $t14; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t16) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t17) at :1:1+10 + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun token::mutate_tokendata_uri [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+738 +procedure {:timeLimit 80} $1_token_mutate_tokendata_uri$verify(_$t0: $signer, _$t1: $1_token_TokenDataId, _$t2: $1_string_String) returns () +{ + // declare local variables + var $t3: $Mutation ($1_token_TokenData); + var $t4: int; + var $t5: $1_account_Account; + var $t6: Table int ($1_token_TokenData); + var $t7: $1_token_TokenData; + var $t8: int; + var $t9: int; + var $t10: Table int ($1_token_TokenData); + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: Table int ($1_token_TokenData); + var $t20: int; + var $t21: $Mutation ($1_token_Collections); + var $t22: $Mutation (Table int ($1_token_TokenData)); + var $t23: $Mutation ($1_token_TokenData); + var $t24: $1_token_TokenMutabilityConfig; + var $t25: bool; + var $t26: int; + var $t27: int; + var $t28: $1_string_String; + var $t29: $1_string_String; + var $t30: $1_string_String; + var $t31: int; + var $t32: $1_account_Account; + var $t33: $Mutation ($1_string_String); + var $t0: $signer; + var $t1: $1_token_TokenDataId; + var $t2: $1_string_String; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenData': $1_token_TokenData; + var $temp_0'$1_token_TokenDataId': $1_token_TokenDataId; + var $temp_0'signer': $signer; + var $1_token_Collections_$memory#927: $Memory $1_token_Collections; + var $1_token_event_store_TokenEventStoreV1_$memory#928: $Memory $1_token_event_store_TokenEventStoreV1; + var $1_account_Account_$memory#929: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume {:print "$at(186,29163,29164)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume $IsValid'$1_token_TokenDataId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::Collections: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_Collections_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_Collections_$memory, $a_0); + ($IsValid'$1_token_Collections'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:314:9+39 + assume {:print "$at(187,13046,13085)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:315:9+45 + assume {:print "$at(187,13094,13139)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // assume Identical($t6, select token::Collections.token_data(global(select token::TokenDataId.creator($t1)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:316:9+75 + assume {:print "$at(187,13148,13223)"} true; + assume ($t6 == $ResourceValue($1_token_Collections_$memory, $t1->$creator)->$token_data); + + // assume Identical($t7, table::spec_get($t6, $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:317:9+64 + assume {:print "$at(187,13232,13296)"} true; + assume ($t7 == $1_table_spec_get'$1_token_TokenDataId_$1_token_TokenData'($t6, $t1)); + + // assume Identical($t8, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t8 == $t1->$creator); + + // assume Identical($t9, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t9 == $1_signer_$address_of($t0)); + + // assume Identical($t10, select token::Collections.token_data(global($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t10 == $ResourceValue($1_token_Collections_$memory, $t8)->$token_data); + + // @929 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume {:print "$at(186,29163,29164)"} true; + $1_account_Account_$memory#929 := $1_account_Account_$memory; + + // @928 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#928 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @927 := save_mem(token::Collections) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + $1_token_Collections_$memory#927 := $1_token_Collections_$memory; + + // trace_local[creator]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume {:print "$track_local(113,74,0):", $t0} $t0 == $t0; + + // trace_local[token_data_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume {:print "$track_local(113,74,1):", $t1} $t1 == $t1; + + // trace_local[uri]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:761:5+1 + assume {:print "$track_local(113,74,2):", $t2} $t2 == $t2; + + // $t11 := string::length($t2) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:17+20 + assume {:print "$at(186,29323,29343)"} true; + call $t11 := $1_string_length($t2); + if ($abort_flag) { + assume {:print "$at(186,29323,29343)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // $t13 := 512 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:41+14 + $t13 := 512; + assume $IsValid'u64'($t13); + + // $t14 := <=($t11, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:38+2 + call $t14 := $Le($t11, $t13); + + // if ($t14) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 + if ($t14) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 + assume {:print "$at(186,29315,29402)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 +L0: + + // $t15 := 27 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:81+13 + assume {:print "$at(186,29387,29400)"} true; + $t15 := 27; + assume $IsValid'u64'($t15); + + // $t16 := error::invalid_argument($t15) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:57+38 + call $t16 := $1_error_invalid_argument($t15); + if ($abort_flag) { + assume {:print "$at(186,29363,29401)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // trace_abort($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 + assume {:print "$at(186,29315,29402)"} true; + assume {:print "$track_abort(113,74):", $t16} $t16 == $t16; + + // $t12 := move($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 + $t12 := $t16; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:766:9+87 + goto L7; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:767:33+7 + assume {:print "$at(186,29436,29443)"} true; +L2: + + // assume Identical($t17, select token::TokenDataId.creator($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:938:9+41 + assume {:print "$at(187,39526,39567)"} true; + assume ($t17 == $t1->$creator); + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:939:9+39 + assume {:print "$at(187,39576,39615)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, select token::Collections.token_data(global($t17))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:942:9+66 + assume {:print "$at(187,39718,39784)"} true; + assume ($t19 == $ResourceValue($1_token_Collections_$memory, $t17)->$token_data); + + // token::assert_tokendata_exists($t0, $t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:767:9+47 + assume {:print "$at(186,29412,29459)"} true; + call $1_token_assert_tokendata_exists($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,29412,29459)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // $t20 := get_field.creator($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:769:66+21 + assume {:print "$at(186,29527,29548)"} true; + $t20 := $t1->$creator; + + // $t21 := borrow_global($t20) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:769:35+17 + if (!$ResourceExists($1_token_Collections_$memory, $t20)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t20), EmptyVec(), $ResourceValue($1_token_Collections_$memory, $t20)); + } + if ($abort_flag) { + assume {:print "$at(186,29496,29513)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // $t22 := borrow_field.token_data($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:769:30+69 + $t22 := $ChildMutation($t21, 1, $Dereference($t21)->$token_data); + + // $t23 := table::borrow_mut($t22, $t1) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:770:26+48 + assume {:print "$at(186,29587,29635)"} true; + call $t23,$t22 := $1_table_borrow_mut'$1_token_TokenDataId_$1_token_TokenData'($t22, $t1); + if ($abort_flag) { + assume {:print "$at(186,29587,29635)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // trace_local[token_data]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:770:13+10 + $temp_0'$1_token_TokenData' := $Dereference($t23); + assume {:print "$track_local(113,74,3):", $temp_0'$1_token_TokenData'} $temp_0'$1_token_TokenData' == $temp_0'$1_token_TokenData'; + + // $t24 := get_field.mutability_config($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:17+28 + assume {:print "$at(186,29653,29681)"} true; + $t24 := $Dereference($t23)->$mutability_config; + + // $t25 := get_field.uri($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:17+32 + $t25 := $t24->$uri; + + // if ($t25) goto L4 else goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + if ($t25) { goto L4; } else { goto L8; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + assume {:print "$at(186,29645,29732)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 +L3: + + // drop($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + assume {:print "$at(186,29645,29732)"} true; + + // $t26 := 13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:76+18 + $t26 := 13; + assume $IsValid'u64'($t26); + + // $t27 := error::permission_denied($t26) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:51+44 + call $t27 := $1_error_permission_denied($t26); + if ($abort_flag) { + assume {:print "$at(186,29687,29731)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // trace_abort($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + assume {:print "$at(186,29645,29732)"} true; + assume {:print "$track_abort(113,74):", $t27} $t27 == $t27; + + // $t12 := move($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + $t12 := $t27; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:771:9+87 + goto L7; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:772:56+7 + assume {:print "$at(186,29789,29796)"} true; +L5: + + // $t28 := get_field.collection($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:772:65+24 + assume {:print "$at(186,29798,29822)"} true; + $t28 := $t1->$collection; + + // $t29 := get_field.name($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:772:91+18 + $t29 := $t1->$name; + + // $t30 := get_field.uri($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:772:111+14 + $t30 := $Dereference($t23)->$uri; + + // assume Identical($t31, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t31 == $1_signer_$address_of($t0)); + + // assume Identical($t32, global($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t32 == $ResourceValue($1_account_Account_$memory, $t31)); + + // token_event_store::emit_token_uri_mutate_event($t0, $t28, $t29, $t30, $t2) on_abort goto L7 with $t12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:772:9+122 + assume {:print "$at(186,29742,29864)"} true; + call $1_token_event_store_emit_token_uri_mutate_event($t0, $t28, $t29, $t30, $t2); + if ($abort_flag) { + assume {:print "$at(186,29742,29864)"} true; + $t12 := $abort_code; + assume {:print "$track_abort(113,74):", $t12} $t12 == $t12; + goto L7; + } + + // $t33 := borrow_field.uri($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+14 + assume {:print "$at(186,29874,29888)"} true; + $t33 := $ChildMutation($t23, 3, $Dereference($t23)->$uri); + + // write_ref($t33, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+20 + $t33 := $UpdateMutation($t33, $t2); + + // write_back[Reference($t23).uri (string::String)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+20 + $t23 := $UpdateMutation($t23, $Update'$1_token_TokenData'_uri($Dereference($t23), $Dereference($t33))); + + // write_back[Reference($t22)[]]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+20 + $t22 := $UpdateMutation($t22, UpdateTable($Dereference($t22), ReadVec($t23->p, LenVec($t22->p)), $Dereference($t23))); + + // write_back[Reference($t21).token_data (table::Table)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+20 + $t21 := $UpdateMutation($t21, $Update'$1_token_Collections'_token_data($Dereference($t21), $Dereference($t22))); + + // write_back[token::Collections@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:773:9+20 + $1_token_Collections_$memory := $ResourceUpdate($1_token_Collections_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:774:5+1 + assume {:print "$at(186,29900,29901)"} true; +L6: + + // assert Not(Neq
($t9, $t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:940:9+31 + assume {:print "$at(187,39624,39655)"} true; + assert {:msg "assert_failed(187,39624,39655): function does not abort under this condition"} + !!$IsEqual'address'($t9, $t8); + + // assert Not(Not(exists[@927]($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:941:9+45 + assume {:print "$at(187,39664,39709)"} true; + assert {:msg "assert_failed(187,39664,39709): function does not abort under this condition"} + !!$ResourceExists($1_token_Collections_$memory#927, $t8); + + // assert Not(Not(table::spec_contains[]($t10, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:943:9+63 + assume {:print "$at(187,39793,39856)"} true; + assert {:msg "assert_failed(187,39793,39856): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1); + + // assert Not(Gt(Len(select string::String.bytes($t2)), 512)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:319:9+42 + assume {:print "$at(187,13352,13394)"} true; + assert {:msg "assert_failed(187,13352,13394): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 512); + + // assert Not(Not(select token::TokenMutabilityConfig.uri(select token::TokenData.mutability_config($t7)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:320:9+44 + assume {:print "$at(187,13403,13447)"} true; + assert {:msg "assert_failed(187,13403,13447): function does not abort under this condition"} + !!$t7->$mutability_config->$uri; + + // assert Not(And(Not(exists[@928]($t4)), Not(exists[@929]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:321:9+97 + assume {:print "$at(187,13456,13553)"} true; + assert {:msg "assert_failed(187,13456,13553): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && !$ResourceExists($1_account_Account_$memory#929, $t4)); + + // assert Not(And(Not(exists[@928]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:322:9+129 + assume {:print "$at(187,13562,13691)"} true; + assert {:msg "assert_failed(187,13562,13691): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624)); + + // assert Not(And(Not(exists[@928]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:323:9+105 + assume {:print "$at(187,13700,13805)"} true; + assert {:msg "assert_failed(187,13700,13805): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:323:9+105 + return; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:774:5+1 + assume {:print "$at(186,29900,29901)"} true; +L7: + + // assert Or(Or(Or(Or(Or(Or(Or(Neq
($t9, $t8), Not(exists[@927]($t8))), Not(table::spec_contains[]($t10, $t1))), Gt(Len(select string::String.bytes($t2)), 512)), Not(select token::TokenMutabilityConfig.uri(select token::TokenData.mutability_config($t7)))), And(Not(exists[@928]($t4)), Not(exists[@929]($t4)))), And(Not(exists[@928]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))), And(Not(exists[@928]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:309:5+890 + assume {:print "$at(187,12921,13811)"} true; + assert {:msg "assert_failed(187,12921,13811): abort not covered by any of the `aborts_if` clauses"} + (((((((!$IsEqual'address'($t9, $t8) || !$ResourceExists($1_token_Collections_$memory#927, $t8)) || !$1_table_spec_contains'$1_token_TokenDataId_$1_token_TokenData'($t10, $t1)) || (LenVec($t2->$bytes) > 512)) || !$t7->$mutability_config->$uri) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && !$ResourceExists($1_account_Account_$memory#929, $t4))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && (($t5->$guid_creation_num + 9) >= 1125899906842624))) || (!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#928, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615))); + + // abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:309:5+890 + $abort_code := $t12; + $abort_flag := true; + return; + + // label L8 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L8: + + // drop($t21) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // drop($t22) at :1:1+10 + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun token::opt_in_direct_transfer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+372 +procedure {:timeLimit 80} $1_token_opt_in_direct_transfer$verify(_$t0: $signer, _$t1: bool) returns () +{ + // declare local variables + var $t2: int; + var $t3: $Mutation (bool); + var $t4: int; + var $t5: $1_account_Account; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: $1_account_Account; + var $t10: $Mutation ($1_token_TokenStore); + var $t11: $Mutation (bool); + var $t12: int; + var $t13: $1_account_Account; + var $t0: $signer; + var $t1: bool; + var $temp_0'address': int; + var $temp_0'bool': bool; + var $temp_0'signer': $signer; + var $1_token_TokenStore_$memory#930: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#931: $Memory $1_account_Account; + var $1_token_event_store_TokenEventStoreV1_$memory#932: $Memory $1_token_event_store_TokenEventStoreV1; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume {:print "$at(186,18150,18151)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume $IsValid'bool'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_event_store::TokenEventStoreV1: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select token_event_store::TokenEventStoreV1.extension($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_event_store_TokenEventStoreV1_$memory, $a_0); + (($IsValid'$1_token_event_store_TokenEventStoreV1'($rsc) && (LenVec($rsc->$extension->$vec) <= 1))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t4, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:143:9+39 + assume {:print "$at(187,4732,4771)"} true; + assume ($t4 == $1_signer_$address_of($t0)); + + // assume Identical($t5, global($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:144:9+50 + assume {:print "$at(187,4780,4830)"} true; + assume ($t5 == $ResourceValue($1_account_Account_$memory, $t4)); + + // @931 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume {:print "$at(186,18150,18151)"} true; + $1_account_Account_$memory#931 := $1_account_Account_$memory; + + // @932 := save_mem(token_event_store::TokenEventStoreV1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + $1_token_event_store_TokenEventStoreV1_$memory#932 := $1_token_event_store_TokenEventStoreV1_$memory; + + // @930 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + $1_token_TokenStore_$memory#930 := $1_token_TokenStore_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume {:print "$track_local(113,75,0):", $t0} $t0 == $t0; + + // trace_local[opt_in]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:537:5+1 + assume {:print "$track_local(113,75,1):", $t1} $t1 == $t1; + + // $t6 := signer::address_of($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:538:20+27 + assume {:print "$at(186,18263,18290)"} true; + call $t6 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,18263,18290)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,75):", $t7} $t7 == $t7; + goto L2; + } + + // trace_local[addr]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:538:13+4 + assume {:print "$track_local(113,75,2):", $t6} $t6 == $t6; + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // token::initialize_token_store($t0) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:539:9+31 + assume {:print "$at(186,18300,18331)"} true; + call $1_token_initialize_token_store($t0); + if ($abort_flag) { + assume {:print "$at(186,18300,18331)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,75):", $t7} $t7 == $t7; + goto L2; + } + + // $t10 := borrow_global($t6) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:540:32+17 + assume {:print "$at(186,18364,18381)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t6)) { + call $ExecFailureAbort(); + } else { + $t10 := $Mutation($Global($t6), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t6)); + } + if ($abort_flag) { + assume {:print "$at(186,18364,18381)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,75):", $t7} $t7 == $t7; + goto L2; + } + + // $t11 := borrow_field.direct_transfer($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:540:27+56 + $t11 := $ChildMutation($t10, 1, $Dereference($t10)->$direct_transfer); + + // trace_local[opt_in_flag]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:540:13+11 + $temp_0'bool' := $Dereference($t11); + assume {:print "$track_local(113,75,3):", $temp_0'bool'} $temp_0'bool' == $temp_0'bool'; + + // write_ref($t11, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:541:9+21 + assume {:print "$at(186,18425,18446)"} true; + $t11 := $UpdateMutation($t11, $t1); + + // write_back[Reference($t10).direct_transfer (bool)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:541:9+21 + $t10 := $UpdateMutation($t10, $Update'$1_token_TokenStore'_direct_transfer($Dereference($t10), $Dereference($t11))); + + // write_back[token::TokenStore@]($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:541:9+21 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t10), + $Dereference($t10)); + + // assume Identical($t12, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:18:9+39 + assume {:print "$at(191,562,601)"} true; + assume ($t12 == $1_signer_$address_of($t0)); + + // assume Identical($t13, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_event_store.spec.move:19:9+36 + assume {:print "$at(191,610,646)"} true; + assume ($t13 == $ResourceValue($1_account_Account_$memory, $t12)); + + // token_event_store::emit_token_opt_in_event($t0, $t1) on_abort goto L2 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:542:9+59 + assume {:print "$at(186,18456,18515)"} true; + call $1_token_event_store_emit_token_opt_in_event($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,18456,18515)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,75):", $t7} $t7 == $t7; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:543:5+1 + assume {:print "$at(186,18521,18522)"} true; +L1: + + // assert Not(And(Not(exists[@930]($t4)), Not(exists[@931]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:145:9+71 + assume {:print "$at(187,4839,4910)"} true; + assert {:msg "assert_failed(187,4839,4910): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#930, $t4) && !$ResourceExists($1_account_Account_$memory#931, $t4)); + + // assert Not(And(Not(exists[@930]($t4)), Ge(Add(select account::Account.guid_creation_num($t5), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:146:9+108 + assume {:print "$at(187,4919,5027)"} true; + assert {:msg "assert_failed(187,4919,5027): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#930, $t4) && (($t5->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@930]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:147:9+84 + assume {:print "$at(187,5036,5120)"} true; + assert {:msg "assert_failed(187,5036,5120): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#930, $t4) && (($t5->$guid_creation_num + 4) > 18446744073709551615)); + + // assert Not(And(Not(exists[@932]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:148:9+133 + assume {:print "$at(187,5129,5262)"} true; + assert {:msg "assert_failed(187,5129,5262): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#932, $t4) && (($t5->$guid_creation_num + 9) > 1125899906842624)); + + // assert Not(And(Not(exists[@932]($t4)), Gt(Add(select account::Account.guid_creation_num($t5), 9), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:149:9+110 + assume {:print "$at(187,5271,5381)"} true; + assert {:msg "assert_failed(187,5271,5381): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#932, $t4) && (($t5->$guid_creation_num + 9) > 18446744073709551615)); + + // assert Not(And(Not(exists[@932]($t4)), Not(exists[@931]($t4)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:150:9+97 + assume {:print "$at(187,5390,5487)"} true; + assert {:msg "assert_failed(187,5390,5487): function does not abort under this condition"} + !(!$ResourceExists($1_token_event_store_TokenEventStoreV1_$memory#932, $t4) && !$ResourceExists($1_account_Account_$memory#931, $t4)); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:150:9+97 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:543:5+1 + assume {:print "$at(186,18521,18522)"} true; +L2: + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:543:5+1 + assume {:print "$at(186,18521,18522)"} true; + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::partial_withdraw_with_capability [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1224 +procedure {:timeLimit 80} $1_token_partial_withdraw_with_capability$verify(_$t0: $1_token_WithdrawCapability, _$t1: int) returns ($ret0: $1_token_Token, $ret1: $1_option_Option'$1_token_WithdrawCapability') +{ + // declare local variables + var $t2: $1_option_Option'$1_token_WithdrawCapability'; + var $t3: $1_option_Option'$1_token_WithdrawCapability'; + var $t4: int; + var $t5: Table int ($1_token_Token); + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: bool; + var $t10: int; + var $t11: int; + var $t12: int; + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: int; + var $t17: bool; + var $t18: int; + var $t19: $1_token_TokenId; + var $t20: int; + var $t21: int; + var $t22: int; + var $t23: $1_token_WithdrawCapability; + var $t24: int; + var $t25: $1_token_TokenId; + var $t26: Table int ($1_token_Token); + var $t27: $1_token_Token; + var $t0: $1_token_WithdrawCapability; + var $t1: int; + var $temp_0'$1_option_Option'$1_token_WithdrawCapability'': $1_option_Option'$1_token_WithdrawCapability'; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_WithdrawCapability': $1_token_WithdrawCapability; + var $temp_0'u64': int; + var $1_timestamp_CurrentTimeMicroseconds_$memory#933: $Memory $1_timestamp_CurrentTimeMicroseconds; + var $1_token_TokenStore_$memory#934: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume {:print "$at(186,42621,42622)"} true; + assume $IsValid'$1_token_WithdrawCapability'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume $IsValid'u64'($t1); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: chain_status::GenesisEndMarker: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060: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: timestamp::CurrentTimeMicroseconds: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060: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: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Implies(chain_status::$is_operating(), exists(0x1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1224 + // global invariant at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/timestamp.spec.move:36:9+110 + assume ($1_chain_status_$is_operating($1_chain_status_GenesisEndMarker_$memory) ==> $ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory, 1)); + + // assume Identical($t4, select timestamp::CurrentTimeMicroseconds.microseconds(global(0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:495:9+95 + assume {:print "$at(187,21254,21349)"} true; + assume ($t4 == $ResourceValue($1_timestamp_CurrentTimeMicroseconds_$memory, 1)->$microseconds); + + // assume Identical($t5, select token::TokenStore.tokens(global(select token::WithdrawCapability.token_owner($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t5 == $ResourceValue($1_token_TokenStore_$memory, $t0->$token_owner)->$tokens); + + // @933 := save_mem(timestamp::CurrentTimeMicroseconds) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume {:print "$at(186,42621,42622)"} true; + $1_timestamp_CurrentTimeMicroseconds_$memory#933 := $1_timestamp_CurrentTimeMicroseconds_$memory; + + // @934 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + $1_token_TokenStore_$memory#934 := $1_token_TokenStore_$memory; + + // trace_local[withdraw_proof]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume {:print "$track_local(113,76,0):", $t0} $t0 == $t0; + + // trace_local[withdraw_amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1060:5+1 + assume {:print "$track_local(113,76,1):", $t1} $t1 == $t1; + + // $t6 := timestamp::now_seconds() on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:17+24 + assume {:print "$at(186,42873,42897)"} true; + call $t6 := $1_timestamp_now_seconds(); + if ($abort_flag) { + assume {:print "$at(186,42873,42897)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,76):", $t7} $t7 == $t7; + goto L10; + } + + // $t8 := get_field.expiration_sec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:45+29 + $t8 := $t0->$expiration_sec; + + // $t9 := <=($t6, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:42+2 + call $t9 := $Le($t6, $t8); + + // if ($t9) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 + if ($t9) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 + assume {:print "$at(186,42865,42981)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:100+23 +L0: + + // $t10 := 39 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:100+23 + assume {:print "$at(186,42956,42979)"} true; + $t10 := 39; + assume $IsValid'u64'($t10); + + // $t11 := error::invalid_argument($t10) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:76+48 + call $t11 := $1_error_invalid_argument($t10); + if ($abort_flag) { + assume {:print "$at(186,42932,42980)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,76):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 + assume {:print "$at(186,42865,42981)"} true; + assume {:print "$track_abort(113,76):", $t11} $t11 == $t11; + + // $t7 := move($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 + $t7 := $t11; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1065:9+116 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:17+15 + assume {:print "$at(186,43000,43015)"} true; +L2: + + // $t12 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:36+21 + assume {:print "$at(186,43019,43040)"} true; + $t12 := $t0->$amount; + + // $t13 := <=($t1, $t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:33+2 + call $t13 := $Le($t1, $t12); + + // if ($t13) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 + if ($t13) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 + assume {:print "$at(186,42992,43108)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:83+40 +L3: + + // $t14 := 38 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:83+40 + assume {:print "$at(186,43066,43106)"} true; + $t14 := 38; + assume $IsValid'u64'($t14); + + // $t15 := error::invalid_argument($t14) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:59+65 + call $t15 := $1_error_invalid_argument($t14); + if ($abort_flag) { + assume {:print "$at(186,43042,43107)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,76):", $t7} $t7 == $t7; + goto L10; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 + assume {:print "$at(186,42992,43108)"} true; + assume {:print "$track_abort(113,76):", $t15} $t15 == $t15; + + // $t7 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 + $t7 := $t15; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1067:9+116 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:51+15 + assume {:print "$at(186,43161,43176)"} true; +L5: + + // $t16 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:70+21 + assume {:print "$at(186,43180,43201)"} true; + $t16 := $t0->$amount; + + // $t17 := ==($t1, $t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:67+2 + $t17 := $IsEqual'u64'($t1, $t16); + + // if ($t17) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:47+468 + if ($t17) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1070:13+34 + assume {:print "$at(186,43217,43251)"} true; +L7: + + // $t2 := opaque begin: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1070:13+34 + assume {:print "$at(186,43217,43251)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1070:13+34 + assume ($IsValid'$1_option_Option'$1_token_WithdrawCapability''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_none()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1070:13+34 + assume $IsEqual'$1_option_Option'$1_token_WithdrawCapability''($t2, $1_option_spec_none'$1_token_WithdrawCapability'()); + + // $t2 := opaque end: option::none() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1070:13+34 + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:47+468 + assume {:print "$at(186,43157,43625)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1074:34+14 + assume {:print "$at(186,43365,43379)"} true; +L6: + + // $t18 := get_field.token_owner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1074:34+26 + assume {:print "$at(186,43365,43391)"} true; + $t18 := $t0->$token_owner; + + // $t19 := get_field.token_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1075:31+23 + assume {:print "$at(186,43423,43446)"} true; + $t19 := $t0->$token_id; + + // $t20 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1076:29+21 + assume {:print "$at(186,43476,43497)"} true; + $t20 := $t0->$amount; + + // $t21 := -($t20, $t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1076:51+1 + call $t21 := $Sub($t20, $t1); + if ($abort_flag) { + assume {:print "$at(186,43498,43499)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,76):", $t7} $t7 == $t7; + goto L10; + } + + // $t22 := get_field.expiration_sec($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1077:37+29 + assume {:print "$at(186,43553,43582)"} true; + $t22 := $t0->$expiration_sec; + + // $t23 := pack token::WithdrawCapability($t18, $t19, $t21, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1073:17+290 + assume {:print "$at(186,43311,43601)"} true; + $t23 := $1_token_WithdrawCapability($t18, $t19, $t21, $t22); + + // $t2 := opaque begin: option::some($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1072:13+334 + assume {:print "$at(186,43281,43615)"} true; + + // assume And(WellFormed($t2), Le(Len(select option::Option.vec($t2)), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1072:13+334 + assume ($IsValid'$1_option_Option'$1_token_WithdrawCapability''($t2) && (LenVec($t2->$vec) <= 1)); + + // assume Eq>($t2, option::spec_some($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1072:13+334 + assume $IsEqual'$1_option_Option'$1_token_WithdrawCapability''($t2, $1_option_spec_some'$1_token_WithdrawCapability'($t23)); + + // $t2 := opaque end: option::some($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1072:13+334 + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:47+468 + assume {:print "$at(186,43157,43625)"} true; +L8: + + // trace_local[res]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1069:13+3 + assume {:print "$at(186,43123,43126)"} true; + assume {:print "$track_local(113,76,3):", $t2} $t2 == $t2; + + // $t24 := get_field.token_owner($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1084:17+26 + assume {:print "$at(186,43696,43722)"} true; + $t24 := $t0->$token_owner; + + // $t25 := get_field.token_id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1085:17+23 + assume {:print "$at(186,43740,43763)"} true; + $t25 := $t0->$token_id; + + // assume Identical($t26, select token::TokenStore.tokens(global($t24))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t26 == $ResourceValue($1_token_TokenStore_$memory, $t24)->$tokens); + + // $t27 := token::withdraw_with_event_internal($t24, $t25, $t1) on_abort goto L10 with $t7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1083:13+161 + assume {:print "$at(186,43650,43811)"} true; + call $t27 := $1_token_withdraw_with_event_internal($t24, $t25, $t1); + if ($abort_flag) { + assume {:print "$at(186,43650,43811)"} true; + $t7 := $abort_code; + assume {:print "$track_abort(113,76):", $t7} $t7 == $t7; + goto L10; + } + + // trace_return[0]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1082:9+202 + assume {:print "$at(186,43636,43838)"} true; + assume {:print "$track_return(113,76,0):", $t27} $t27 == $t27; + + // trace_return[1]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1082:9+202 + assume {:print "$track_return(113,76,1):", $t2} $t2 == $t2; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1091:5+1 + assume {:print "$at(186,43844,43845)"} true; +L9: + + // assert Not(Not(exists[@933](0x1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:496:9+75 + assume {:print "$at(187,21358,21433)"} true; + assert {:msg "assert_failed(187,21358,21433): function does not abort under this condition"} + !!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#933, 1); + + // assert Not(Gt(Div($t4, 1000000), select token::WithdrawCapability.expiration_sec($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:497:9+91 + assume {:print "$at(187,21442,21533)"} true; + assert {:msg "assert_failed(187,21442,21533): function does not abort under this condition"} + !(($t4 div 1000000) > $t0->$expiration_sec); + + // assert Not(Gt($t1, select token::WithdrawCapability.amount($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:498:9+50 + assume {:print "$at(187,21542,21592)"} true; + assert {:msg "assert_failed(187,21542,21592): function does not abort under this condition"} + !($t1 > $t0->$amount); + + // assert Not(Le($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:876:9+22 + assume {:print "$at(187,37080,37102)"} true; + assert {:msg "assert_failed(187,37080,37102): function does not abort under this condition"} + !($t1 <= 0); + + // assert Not(Lt(token::spec_balance_of[@934](select token::WithdrawCapability.token_owner($t0), select token::WithdrawCapability.token_id($t0)), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:877:9+53 + assume {:print "$at(187,37111,37164)"} true; + assert {:msg "assert_failed(187,37111,37164): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#934, $t0->$token_owner, $t0->$token_id) < $t1); + + // assert Not(Not(exists[@934](select token::WithdrawCapability.token_owner($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:878:9+44 + assume {:print "$at(187,37173,37217)"} true; + assert {:msg "assert_failed(187,37173,37217): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#934, $t0->$token_owner); + + // assert Not(Not(table::spec_contains[]($t5, select token::WithdrawCapability.token_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + assume {:print "$at(187,37226,37270)"} true; + assert {:msg "assert_failed(187,37226,37270): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t5, $t0->$token_id); + + // return ($t27, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + $ret0 := $t27; + $ret1 := $t2; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1091:5+1 + assume {:print "$at(186,43844,43845)"} true; +L10: + + // assert Or(Or(Or(Or(Or(Or(Not(exists[@933](0x1)), Gt(Div($t4, 1000000), select token::WithdrawCapability.expiration_sec($t0))), Gt($t1, select token::WithdrawCapability.amount($t0))), Le($t1, 0)), Lt(token::spec_balance_of[@934](select token::WithdrawCapability.token_owner($t0), select token::WithdrawCapability.token_id($t0)), $t1)), Not(exists[@934](select token::WithdrawCapability.token_owner($t0)))), Not(table::spec_contains[]($t5, select token::WithdrawCapability.token_id($t0)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:491:5+703 + assume {:print "$at(187,21088,21791)"} true; + assert {:msg "assert_failed(187,21088,21791): abort not covered by any of the `aborts_if` clauses"} + ((((((!$ResourceExists($1_timestamp_CurrentTimeMicroseconds_$memory#933, 1) || (($t4 div 1000000) > $t0->$expiration_sec)) || ($t1 > $t0->$amount)) || ($t1 <= 0)) || ($1_token_spec_balance_of($1_token_TokenStore_$memory#934, $t0->$token_owner, $t0->$token_id) < $t1)) || !$ResourceExists($1_token_TokenStore_$memory#934, $t0->$token_owner)) || !$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t5, $t0->$token_id)); + + // abort($t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:491:5+703 + $abort_code := $t7; + $abort_flag := true; + return; + +} + +// fun token::split [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+553 +procedure {:timeLimit 80} $1_token_split$verify(_$t0: $Mutation ($1_token_Token), _$t1: int) returns ($ret0: $1_token_Token, $ret1: $Mutation ($1_token_Token)) +{ + // declare local variables + var $t2: $1_token_Token; + var $t3: $1_token_TokenId; + var $t4: int; + var $t5: int; + var $t6: bool; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: $Mutation (int); + var $t21: $1_token_TokenId; + var $t22: $1_property_map_PropertyMap; + var $t23: $1_token_Token; + var $t0: $Mutation ($1_token_Token); + var $t1: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + assume $t0->l == $Param(0); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+1 + assume {:print "$at(186,40535,40536)"} true; + assume $IsValid'$1_token_Token'($Dereference($t0)); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+1 + assume $IsValid'u64'($t1); + + // $t2 := read_ref($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+1 + $t2 := $Dereference($t0); + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+1 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,77,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // trace_local[amount]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1000:5+1 + assume {:print "$track_local(113,77,1):", $t1} $t1 == $t1; + + // $t3 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:17+12 + assume {:print "$at(186,40613,40625)"} true; + $t3 := $Dereference($t0)->$id; + + // $t4 := get_field.property_version($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:17+29 + $t4 := $t3->$property_version; + + // $t5 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:50+1 + $t5 := 0; + assume $IsValid'u64'($t5); + + // $t6 := ==($t4, $t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:47+2 + $t6 := $IsEqual'u64'($t4, $t5); + + // if ($t6) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + if ($t6) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + assume {:print "$at(186,40605,40690)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 +L0: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + assume {:print "$at(186,40605,40690)"} true; + + // $t7 := 18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:74+18 + $t7 := 18; + assume $IsValid'u64'($t7); + + // $t8 := error::invalid_state($t7) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:53+40 + call $t8 := $1_error_invalid_state($t7); + if ($abort_flag) { + assume {:print "$at(186,40649,40689)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,77):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + assume {:print "$at(186,40605,40690)"} true; + assume {:print "$track_abort(113,77):", $t8} $t8 == $t8; + + // $t9 := move($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + $t9 := $t8; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1001:9+85 + goto L10; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:17+9 + assume {:print "$at(186,40708,40717)"} true; +L2: + + // $t10 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:17+16 + assume {:print "$at(186,40708,40724)"} true; + $t10 := $Dereference($t0)->$amount; + + // $t11 := >($t10, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:34+1 + call $t11 := $Gt($t10, $t1); + + // if ($t11) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + if ($t11) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + assume {:print "$at(186,40700,40812)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 +L3: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + assume {:print "$at(186,40700,40812)"} true; + + // $t12 := 12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:68+51 + $t12 := 12; + assume $IsValid'u64'($t12); + + // $t13 := error::invalid_argument($t12) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:44+76 + call $t13 := $1_error_invalid_argument($t12); + if ($abort_flag) { + assume {:print "$at(186,40735,40811)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,77):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + assume {:print "$at(186,40700,40812)"} true; + assume {:print "$track_abort(113,77):", $t13} $t13 == $t13; + + // $t9 := move($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + $t9 := $t13; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1002:9+112 + goto L10; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:17+6 + assume {:print "$at(186,40830,40836)"} true; +L5: + + // $t14 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:26+1 + assume {:print "$at(186,40839,40840)"} true; + $t14 := 0; + assume $IsValid'u64'($t14); + + // $t15 := >($t1, $t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:24+1 + call $t15 := $Gt($t1, $t14); + + // if ($t15) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + if ($t15) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + assume {:print "$at(186,40822,40898)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 +L6: + + // drop($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + assume {:print "$at(186,40822,40898)"} true; + + // $t16 := 33 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:53+30 + $t16 := 33; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:29+55 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(186,40842,40897)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,77):", $t9} $t9 == $t9; + goto L10; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + assume {:print "$at(186,40822,40898)"} true; + assume {:print "$track_abort(113,77):", $t17} $t17 == $t17; + + // $t9 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + $t9 := $t17; + + // goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1003:9+76 + goto L10; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:28+9 + assume {:print "$at(186,40927,40936)"} true; +L8: + + // $t18 := get_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:28+16 + assume {:print "$at(186,40927,40943)"} true; + $t18 := $Dereference($t0)->$amount; + + // $t19 := -($t18, $t1) on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:45+1 + call $t19 := $Sub($t18, $t1); + if ($abort_flag) { + assume {:print "$at(186,40944,40945)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,77):", $t9} $t9 == $t9; + goto L10; + } + + // $t20 := borrow_field.amount($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:9+16 + $t20 := $ChildMutation($t0, 1, $Dereference($t0)->$amount); + + // write_ref($t20, $t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:9+44 + $t20 := $UpdateMutation($t20, $t19); + + // write_back[Reference($t0).amount (u64)]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:9+44 + $t0 := $UpdateMutation($t0, $Update'$1_token_Token'_amount($Dereference($t0), $Dereference($t20))); + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1004:9+44 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,77,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // $t21 := get_field.id($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1006:17+12 + assume {:print "$at(186,40986,40998)"} true; + $t21 := $Dereference($t0)->$id; + + // $t22 := property_map::empty() on_abort goto L10 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1008:31+21 + assume {:print "$at(186,41050,41071)"} true; + call $t22 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(186,41050,41071)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,77):", $t9} $t9 == $t9; + goto L10; + } + + // $t23 := pack token::Token($t21, $t1, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1005:9+120 + assume {:print "$at(186,40962,41082)"} true; + $t23 := $1_token_Token($t21, $t1, $t22); + + // trace_return[0]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1005:9+120 + assume {:print "$track_return(113,77,0):", $t23} $t23 == $t23; + + // trace_local[dst_token]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1005:9+120 + $temp_0'$1_token_Token' := $Dereference($t0); + assume {:print "$track_local(113,77,0):", $temp_0'$1_token_Token'} $temp_0'$1_token_Token' == $temp_0'$1_token_Token'; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1010:5+1 + assume {:print "$at(186,41087,41088)"} true; +L9: + + // assert Not(Neq(select token::TokenId.property_version(select token::Token.id($t2)), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:460:9+45 + assume {:print "$at(187,19959,20004)"} true; + assert {:msg "assert_failed(187,19959,20004): function does not abort under this condition"} + !!$IsEqual'u64'($t2->$id->$property_version, 0); + + // assert Not(Le(select token::Token.amount($t2), $t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:461:9+37 + assume {:print "$at(187,20013,20050)"} true; + assert {:msg "assert_failed(187,20013,20050): function does not abort under this condition"} + !($t2->$amount <= $t1); + + // assert Not(Le($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:462:9+22 + assume {:print "$at(187,20059,20081)"} true; + assert {:msg "assert_failed(187,20059,20081): function does not abort under this condition"} + !($t1 <= 0); + + // return $t23 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:462:9+22 + $ret0 := $t23; + $ret1 := $t0; + return; + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1010:5+1 + assume {:print "$at(186,41087,41088)"} true; +L10: + + // assert Or(Or(Neq(select token::TokenId.property_version(select token::Token.id($t2)), 0), Le(select token::Token.amount($t2), $t1)), Le($t1, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:459:5+192 + assume {:print "$at(187,19895,20087)"} true; + assert {:msg "assert_failed(187,19895,20087): abort not covered by any of the `aborts_if` clauses"} + ((!$IsEqual'u64'($t2->$id->$property_version, 0) || ($t2->$amount <= $t1)) || ($t1 <= 0)); + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:459:5+192 + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::transfer_with_opt_in [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+413 +procedure {:timeLimit 80} $1_token_transfer_with_opt_in$verify(_$t0: $signer, _$t1: int, _$t2: $1_string_String, _$t3: $1_string_String, _$t4: int, _$t5: int, _$t6: int) returns () +{ + // declare local variables + var $t7: $1_token_TokenId; + var $t8: $1_token_TokenId; + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: Table int ($1_token_Token); + var $t0: $signer; + var $t1: int; + var $t2: $1_string_String; + var $t3: $1_string_String; + var $t4: int; + var $t5: int; + var $t6: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + $t6 := _$t6; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$at(186,18648,18649)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'$1_string_String'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'u64'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'address'($t5); + + // assume WellFormed($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume $IsValid'u64'($t6); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // trace_local[from]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,0):", $t0} $t0 == $t0; + + // trace_local[creator]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,1):", $t1} $t1 == $t1; + + // trace_local[collection_name]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,2):", $t2} $t2 == $t2; + + // trace_local[token_name]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,3):", $t3} $t3 == $t3; + + // trace_local[token_property_version]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,4):", $t4} $t4 == $t4; + + // trace_local[to]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,5):", $t5} $t5 == $t5; + + // trace_local[amount]($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:547:5+1 + assume {:print "$track_local(113,80,6):", $t6} $t6 == $t6; + + // $t8 := token::create_token_id_raw($t1, $t2, $t3, $t4) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:556:24+81 + assume {:print "$at(186,18927,19008)"} true; + call $t8 := $1_token_create_token_id_raw($t1, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(186,18927,19008)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,80):", $t9} $t9 == $t9; + goto L2; + } + + // trace_local[token_id]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:556:13+8 + assume {:print "$track_local(113,80,7):", $t8} $t8 == $t8; + + // assume Identical($t10, select token::TokenStore.direct_transfer(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:471:9+61 + assume {:print "$at(187,20210,20271)"} true; + assume ($t10 == $ResourceValue($1_token_TokenStore_$memory, $t5)->$direct_transfer); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:472:9+44 + assume {:print "$at(187,20280,20324)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, select token::TokenStore.tokens(global($t11))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t12 == $ResourceValue($1_token_TokenStore_$memory, $t11)->$tokens); + + // token::transfer($t0, $t8, $t5, $t6) on_abort goto L2 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:557:9+36 + assume {:print "$at(186,19018,19054)"} true; + call $1_token_transfer($t0, $t8, $t5, $t6); + if ($abort_flag) { + assume {:print "$at(186,19018,19054)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(113,80):", $t9} $t9 == $t9; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:558:5+1 + assume {:print "$at(186,19060,19061)"} true; +L1: + + // assert Not(Gt(Len(select string::String.bytes($t2)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:774:9+61 + assume {:print "$at(187,33095,33156)"} true; + assert {:msg "assert_failed(187,33095,33156): function does not abort under this condition"} + !(LenVec($t2->$bytes) > 128); + + // assert Not(Gt(Len(select string::String.bytes($t3)), 128)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + assume {:print "$at(187,33165,33213)"} true; + assert {:msg "assert_failed(187,33165,33213): function does not abort under this condition"} + !(LenVec($t3->$bytes) > 128); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:775:9+48 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:558:5+1 + assume {:print "$at(186,19060,19061)"} true; +L2: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:558:5+1 + assume {:print "$at(186,19060,19061)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun token::update_token_property_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+601 +procedure {:inline 1} $1_token_update_token_property_internal(_$t0: int, _$t1: $1_token_TokenId, _$t2: Vec ($1_string_String), _$t3: Vec (Vec (int)), _$t4: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t5: $1_token_TokenId; + var $t6: $Mutation (Table int ($1_token_Token)); + var $t7: $Mutation ($1_property_map_PropertyMap); + var $t8: Table int ($1_token_Token); + var $t9: $Mutation ($1_token_TokenStore); + var $t10: int; + var $t11: $Mutation (Table int ($1_token_Token)); + var $t12: Table int ($1_token_Token); + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Token); + var $t17: $Mutation ($1_property_map_PropertyMap); + var $t18: int; + var $t19: int; + var $t20: int; + var $t0: int; + var $t1: $1_token_TokenId; + var $t2: Vec ($1_string_String); + var $t3: Vec (Vec (int)); + var $t4: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // bytecode translation starts here + // assume Identical($t8, select token::TokenStore.tokens(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t8 == $ResourceValue($1_token_TokenStore_$memory, $t0)->$tokens); + + // trace_local[token_owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$at(186,70133,70134)"} true; + assume {:print "$track_local(113,81,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,1):", $t1} $t1 == $t1; + + // trace_local[keys]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,2):", $t2} $t2 == $t2; + + // trace_local[values]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,3):", $t3} $t3 == $t3; + + // trace_local[types]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,4):", $t4} $t4 == $t4; + + // $t9 := borrow_global($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:27+17 + assume {:print "$at(186,70377,70394)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,70377,70394)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := borrow_field.tokens($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:22+54 + $t11 := $ChildMutation($t9, 0, $Dereference($t9)->$tokens); + + // trace_local[tokens]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:13+6 + $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' := $Dereference($t11); + assume {:print "$track_local(113,81,6):", $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''; + + // $t12 := read_ref($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:32+18 + assume {:print "$at(186,70459,70477)"} true; + $t12 := $Dereference($t11); + + // $t13 := table::contains($t12, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:17+33 + call $t13 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t12, $t1); + if ($abort_flag) { + assume {:print "$at(186,70444,70477)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // if ($t13) goto L1 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + if ($t13) { goto L1; } else { goto L5; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 +L0: + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + + // $t14 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:69+24 + $t14 := 15; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:52+42 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(186,70479,70521)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + assume {:print "$track_abort(113,81):", $t15} $t15 == $t15; + + // $t10 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + $t10 := $t15; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:44+6 + assume {:print "$at(186,70568,70574)"} true; +L2: + + // $t16 := table::borrow_mut($t11, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:26+35 + assume {:print "$at(186,70550,70585)"} true; + call $t16,$t11 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(186,70550,70585)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // $t17 := borrow_field.token_properties($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:21+57 + $t17 := $ChildMutation($t16, 2, $Dereference($t16)->$token_properties); + + // trace_local[value]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:13+5 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t17); + assume {:print "$track_local(113,81,7):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // token::assert_non_standard_reserved_property($t2) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1743:9+44 + assume {:print "$at(186,70612,70656)"} true; + call $1_token_assert_non_standard_reserved_property($t2); + if ($abort_flag) { + assume {:print "$at(186,70612,70656)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // assume Identical($t18, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:174:9+24 + assume {:print "$at(185,5747,5771)"} true; + assume ($t18 == LenVec($t2)); + + // assume Identical($t19, Len>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:175:9+26 + assume {:print "$at(185,5780,5806)"} true; + assume ($t19 == LenVec($t3)); + + // assume Identical($t20, Len($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:176:9+25 + assume {:print "$at(185,5815,5840)"} true; + assume ($t20 == LenVec($t4)); + + // property_map::update_property_map($t17, $t2, $t3, $t4) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + assume {:print "$at(186,70666,70727)"} true; + call $t17 := $1_property_map_update_property_map($t17, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(186,70666,70727)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // write_back[Reference($t16).token_properties (property_map::PropertyMap)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t16 := $UpdateMutation($t16, $Update'$1_token_Token'_token_properties($Dereference($t16), $Dereference($t17))); + + // write_back[Reference($t11)[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t11 := $UpdateMutation($t11, UpdateTable($Dereference($t11), ReadVec($t16->p, LenVec($t11->p)), $Dereference($t16))); + + // write_back[Reference($t9).tokens (table::Table)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t9 := $UpdateMutation($t9, $Update'$1_token_TokenStore'_tokens($Dereference($t9), $Dereference($t11))); + + // write_back[token::TokenStore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; +L3: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun token::update_token_property_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+601 +procedure {:timeLimit 80} $1_token_update_token_property_internal$verify(_$t0: int, _$t1: $1_token_TokenId, _$t2: Vec ($1_string_String), _$t3: Vec (Vec (int)), _$t4: Vec ($1_string_String)) returns () +{ + // declare local variables + var $t5: $1_token_TokenId; + var $t6: $Mutation (Table int ($1_token_Token)); + var $t7: $Mutation ($1_property_map_PropertyMap); + var $t8: Table int ($1_token_Token); + var $t9: $Mutation ($1_token_TokenStore); + var $t10: int; + var $t11: $Mutation (Table int ($1_token_Token)); + var $t12: Table int ($1_token_Token); + var $t13: bool; + var $t14: int; + var $t15: int; + var $t16: $Mutation ($1_token_Token); + var $t17: $Mutation ($1_property_map_PropertyMap); + var $t18: int; + var $t19: int; + var $t20: int; + var $t0: int; + var $t1: $1_token_TokenId; + var $t2: Vec ($1_string_String); + var $t3: Vec (Vec (int)); + var $t4: Vec ($1_string_String); + var $temp_0'$1_property_map_PropertyMap': $1_property_map_PropertyMap; + var $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'vec'$1_string_String'': Vec ($1_string_String); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + var $1_token_TokenStore_$memory#913: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$at(186,70133,70134)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume $IsValid'vec'$1_string_String''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume $IsValid'vec'vec'u8'''($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume $IsValid'vec'$1_string_String''($t4); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t8, select token::TokenStore.tokens(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:891:9+52 + assume {:print "$at(187,37611,37663)"} true; + assume ($t8 == $ResourceValue($1_token_TokenStore_$memory, $t0)->$tokens); + + // @913 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$at(186,70133,70134)"} true; + $1_token_TokenStore_$memory#913 := $1_token_TokenStore_$memory; + + // trace_local[token_owner]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,1):", $t1} $t1 == $t1; + + // trace_local[keys]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,2):", $t2} $t2 == $t2; + + // trace_local[values]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,3):", $t3} $t3 == $t3; + + // trace_local[types]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1732:5+1 + assume {:print "$track_local(113,81,4):", $t4} $t4 == $t4; + + // $t9 := borrow_global($t0) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:27+17 + assume {:print "$at(186,70377,70394)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t9 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,70377,70394)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // $t11 := borrow_field.tokens($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:22+54 + $t11 := $ChildMutation($t9, 0, $Dereference($t9)->$tokens); + + // trace_local[tokens]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1739:13+6 + $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' := $Dereference($t11); + assume {:print "$track_local(113,81,6):", $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''; + + // $t12 := read_ref($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:32+18 + assume {:print "$at(186,70459,70477)"} true; + $t12 := $Dereference($t11); + + // $t13 := table::contains($t12, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:17+33 + call $t13 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t12, $t1); + if ($abort_flag) { + assume {:print "$at(186,70444,70477)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // if ($t13) goto L1 else goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + if ($t13) { goto L1; } else { goto L5; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 +L0: + + // drop($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + + // $t14 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:69+24 + $t14 := 15; + assume $IsValid'u64'($t14); + + // $t15 := error::not_found($t14) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:52+42 + call $t15 := $1_error_not_found($t14); + if ($abort_flag) { + assume {:print "$at(186,70479,70521)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // trace_abort($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + assume {:print "$at(186,70436,70522)"} true; + assume {:print "$track_abort(113,81):", $t15} $t15 == $t15; + + // $t10 := move($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + $t10 := $t15; + + // goto L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1740:9+86 + goto L4; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:44+6 + assume {:print "$at(186,70568,70574)"} true; +L2: + + // $t16 := table::borrow_mut($t11, $t1) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:26+35 + assume {:print "$at(186,70550,70585)"} true; + call $t16,$t11 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t11, $t1); + if ($abort_flag) { + assume {:print "$at(186,70550,70585)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // $t17 := borrow_field.token_properties($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:21+57 + $t17 := $ChildMutation($t16, 2, $Dereference($t16)->$token_properties); + + // trace_local[value]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1742:13+5 + $temp_0'$1_property_map_PropertyMap' := $Dereference($t17); + assume {:print "$track_local(113,81,7):", $temp_0'$1_property_map_PropertyMap'} $temp_0'$1_property_map_PropertyMap' == $temp_0'$1_property_map_PropertyMap'; + + // token::assert_non_standard_reserved_property($t2) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1743:9+44 + assume {:print "$at(186,70612,70656)"} true; + call $1_token_assert_non_standard_reserved_property($t2); + if ($abort_flag) { + assume {:print "$at(186,70612,70656)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // assume Identical($t18, Len($t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:174:9+24 + assume {:print "$at(185,5747,5771)"} true; + assume ($t18 == LenVec($t2)); + + // assume Identical($t19, Len>($t3)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:175:9+26 + assume {:print "$at(185,5780,5806)"} true; + assume ($t19 == LenVec($t3)); + + // assume Identical($t20, Len($t4)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/property_map.spec.move:176:9+25 + assume {:print "$at(185,5815,5840)"} true; + assume ($t20 == LenVec($t4)); + + // property_map::update_property_map($t17, $t2, $t3, $t4) on_abort goto L4 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + assume {:print "$at(186,70666,70727)"} true; + call $t17 := $1_property_map_update_property_map($t17, $t2, $t3, $t4); + if ($abort_flag) { + assume {:print "$at(186,70666,70727)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(113,81):", $t10} $t10 == $t10; + goto L4; + } + + // write_back[Reference($t16).token_properties (property_map::PropertyMap)]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t16 := $UpdateMutation($t16, $Update'$1_token_Token'_token_properties($Dereference($t16), $Dereference($t17))); + + // write_back[Reference($t11)[]]($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t11 := $UpdateMutation($t11, UpdateTable($Dereference($t11), ReadVec($t16->p, LenVec($t11->p)), $Dereference($t16))); + + // write_back[Reference($t9).tokens (table::Table)]($t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $t9 := $UpdateMutation($t9, $Update'$1_token_TokenStore'_tokens($Dereference($t9), $Dereference($t11))); + + // write_back[token::TokenStore@]($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1744:9+61 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t9), + $Dereference($t9)); + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; +L3: + + // assert Not(Not(exists[@913]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:892:9+43 + assume {:print "$at(187,37672,37715)"} true; + assert {:msg "assert_failed(187,37672,37715): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#913, $t0); + + // assert Not(Not(table::spec_contains[]($t8, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:893:9+50 + assume {:print "$at(187,37724,37774)"} true; + assert {:msg "assert_failed(187,37724,37774): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t8, $t1); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:893:9+50 + return; + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; +L4: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1745:5+1 + assume {:print "$at(186,70733,70734)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + + // label L5 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L5: + + // drop($t9) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L0 at :1:1+10 + goto L0; + +} + +// fun token::withdraw_token [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+254 +procedure {:inline 1} $1_token_withdraw_token(_$t0: $signer, _$t1: $1_token_TokenId, _$t2: int) returns ($ret0: $1_token_Token) +{ + // declare local variables + var $t3: int; + var $t4: Table int ($1_token_Token); + var $t5: int; + var $t6: int; + var $t7: Table int ($1_token_Token); + var $t8: $1_token_Token; + var $t0: $signer; + var $t1: $1_token_TokenId; + var $t2: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select token::TokenStore.tokens(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t4 == $ResourceValue($1_token_TokenStore_$memory, $t3)->$tokens); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$at(186,43851,43852)"} true; + assume {:print "$track_local(113,82,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$track_local(113,82,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$track_local(113,82,2):", $t2} $t2 == $t2; + + // $t5 := signer::address_of($t0) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1098:28+27 + assume {:print "$at(186,44008,44035)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,44008,44035)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,82):", $t6} $t6 == $t6; + goto L2; + } + + // assume Identical($t7, select token::TokenStore.tokens(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t7 == $ResourceValue($1_token_TokenStore_$memory, $t5)->$tokens); + + // $t8 := token::withdraw_with_event_internal($t5, $t1, $t2) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1099:9+54 + assume {:print "$at(186,44045,44099)"} true; + call $t8 := $1_token_withdraw_with_event_internal($t5, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,44045,44099)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,82):", $t6} $t6 == $t6; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1099:9+54 + assume {:print "$track_return(113,82,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 + assume {:print "$at(186,44104,44105)"} true; +L1: + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 + assume {:print "$at(186,44104,44105)"} true; + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 +L2: + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 + assume {:print "$at(186,44104,44105)"} true; + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::withdraw_token [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+254 +procedure {:timeLimit 80} $1_token_withdraw_token$verify(_$t0: $signer, _$t1: $1_token_TokenId, _$t2: int) returns ($ret0: $1_token_Token) +{ + // declare local variables + var $t3: int; + var $t4: Table int ($1_token_Token); + var $t5: int; + var $t6: int; + var $t7: Table int ($1_token_Token); + var $t8: $1_token_Token; + var $t0: $signer; + var $t1: $1_token_TokenId; + var $t2: int; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_TokenStore_$memory#852: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$at(186,43851,43852)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t3, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:513:9+47 + assume {:print "$at(187,22008,22055)"} true; + assume ($t3 == $1_signer_$address_of($t0)); + + // assume Identical($t4, select token::TokenStore.tokens(global($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t4 == $ResourceValue($1_token_TokenStore_$memory, $t3)->$tokens); + + // @852 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$at(186,43851,43852)"} true; + $1_token_TokenStore_$memory#852 := $1_token_TokenStore_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$track_local(113,82,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$track_local(113,82,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1093:5+1 + assume {:print "$track_local(113,82,2):", $t2} $t2 == $t2; + + // $t5 := signer::address_of($t0) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1098:28+27 + assume {:print "$at(186,44008,44035)"} true; + call $t5 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(186,44008,44035)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,82):", $t6} $t6 == $t6; + goto L2; + } + + // assume Identical($t7, select token::TokenStore.tokens(global($t5))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t7 == $ResourceValue($1_token_TokenStore_$memory, $t5)->$tokens); + + // $t8 := token::withdraw_with_event_internal($t5, $t1, $t2) on_abort goto L2 with $t6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1099:9+54 + assume {:print "$at(186,44045,44099)"} true; + call $t8 := $1_token_withdraw_with_event_internal($t5, $t1, $t2); + if ($abort_flag) { + assume {:print "$at(186,44045,44099)"} true; + $t6 := $abort_code; + assume {:print "$track_abort(113,82):", $t6} $t6 == $t6; + goto L2; + } + + // trace_return[0]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1099:9+54 + assume {:print "$track_return(113,82,0):", $t8} $t8 == $t8; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 + assume {:print "$at(186,44104,44105)"} true; +L1: + + // assert Not(Le($t2, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:876:9+22 + assume {:print "$at(187,37080,37102)"} true; + assert {:msg "assert_failed(187,37080,37102): function does not abort under this condition"} + !($t2 <= 0); + + // assert Not(Lt(token::spec_balance_of[@852]($t3, $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:877:9+53 + assume {:print "$at(187,37111,37164)"} true; + assert {:msg "assert_failed(187,37111,37164): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#852, $t3, $t1) < $t2); + + // assert Not(Not(exists[@852]($t3))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:878:9+44 + assume {:print "$at(187,37173,37217)"} true; + assert {:msg "assert_failed(187,37173,37217): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#852, $t3); + + // assert Not(Not(table::spec_contains[]($t4, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + assume {:print "$at(187,37226,37270)"} true; + assert {:msg "assert_failed(187,37226,37270): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t4, $t1); + + // return $t8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + $ret0 := $t8; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1100:5+1 + assume {:print "$at(186,44104,44105)"} true; +L2: + + // assert Or(Or(Or(Le($t2, 0), Lt(token::spec_balance_of[@852]($t3, $t1), $t2)), Not(exists[@852]($t3))), Not(table::spec_contains[]($t4, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:508:5+216 + assume {:print "$at(187,21896,22112)"} true; + assert {:msg "assert_failed(187,21896,22112): abort not covered by any of the `aborts_if` clauses"} + (((($t2 <= 0) || ($1_token_spec_balance_of($1_token_TokenStore_$memory#852, $t3, $t1) < $t2)) || !$ResourceExists($1_token_TokenStore_$memory#852, $t3)) || !$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t4, $t1)); + + // abort($t6) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:508:5+216 + $abort_code := $t6; + $abort_flag := true; + return; + +} + +// fun token::withdraw_with_event_internal [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1477 +procedure {:inline 1} $1_token_withdraw_with_event_internal(_$t0: int, _$t1: $1_token_TokenId, _$t2: int) returns ($ret0: $1_token_Token) +{ + // declare local variables + var $t3: $1_token_TokenId; + var $t4: $1_token_Token; + var $t5: $Mutation (int); + var $t6: $Mutation ($1_token_TokenStore); + var $t7: $Mutation (Table int ($1_token_Token)); + var $t8: Table int ($1_token_Token); + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_token_TokenStore); + var $t22: bool; + var $t23: $1_token_Withdraw; + var $t24: $Mutation ($1_event_EventHandle'$1_token_WithdrawEvent'); + var $t25: $1_token_WithdrawEvent; + var $t26: $Mutation ($1_token_TokenStore); + var $t27: $Mutation (Table int ($1_token_Token)); + var $t28: Table int ($1_token_Token); + var $t29: bool; + var $t30: int; + var $t31: int; + var $t32: $Mutation ($1_token_Token); + var $t33: $Mutation (int); + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: $1_property_map_PropertyMap; + var $t0: int; + var $t1: $1_token_TokenId; + var $t2: int; + var $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'u64': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // assume Identical($t8, select token::TokenStore.tokens(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t8 == $ResourceValue($1_token_TokenStore_$memory, $t0)->$tokens); + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$at(186,68650,68651)"} true; + assume {:print "$track_local(113,84,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$track_local(113,84,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$track_local(113,84,2):", $t2} $t2 == $t2; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:26+1 + assume {:print "$at(186,68873,68874)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := >($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:24+1 + call $t10 := $Gt($t2, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + assume {:print "$at(186,68856,68916)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:53+14 +L0: + + // $t11 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:53+14 + assume {:print "$at(186,68900,68914)"} true; + $t11 := 17; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:29+39 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(186,68876,68915)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + assume {:print "$at(186,68856,68916)"} true; + assume {:print "$track_abort(113,84):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + $t13 := $t12; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:28+12 + assume {:print "$at(186,69013,69025)"} true; +L2: + + // $t14 := token::balance_of($t0, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:17+28 + assume {:print "$at(186,69002,69030)"} true; + call $t14 := $1_token_balance_of($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,69002,69030)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t15 := >=($t14, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:46+2 + call $t15 := $Ge($t14, $t2); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + assume {:print "$at(186,68994,69089)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:81+21 +L3: + + // $t16 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:81+21 + assume {:print "$at(186,69066,69087)"} true; + $t16 := 5; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:57+46 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(186,69042,69088)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + assume {:print "$at(186,68994,69089)"} true; + assume {:print "$track_abort(113,84):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + $t13 := $t17; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1705:32+12 + assume {:print "$at(186,69140,69152)"} true; +L5: + + // $t18 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1705:13+6 + assume {:print "$at(186,69121,69127)"} true; + $t18 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:30+26 + assume {:print "$at(186,69184,69210)"} true; +L6: + + // $t19 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:30+26 + assume {:print "$at(186,69184,69210)"} true; + $t19 := 11; + assume $IsValid'u64'($t19); + + // $t20 := error::not_found($t19) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:13+44 + call $t20 := $1_error_not_found($t19); + if ($abort_flag) { + assume {:print "$at(186,69167,69211)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + assume {:print "$track_abort(113,84):", $t20} $t20 == $t20; + + // $t13 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + $t13 := $t20; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:57+12 + assume {:print "$at(186,69281,69293)"} true; +L8: + + // $t21 := borrow_global($t0) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:27+17 + assume {:print "$at(186,69251,69268)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,69251,69268)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_local[token_store]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t21); + assume {:print "$track_local(113,84,6):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t22 := features::module_event_migration_enabled() on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1710:13+47 + assume {:print "$at(186,69308,69355)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,69308,69355)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // if ($t22) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1710:9+113 + if ($t22) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:36+2 + assume {:print "$at(186,69394,69396)"} true; +L10: + + // $t23 := pack token::Withdraw($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:25+23 + assume {:print "$at(186,69383,69406)"} true; + $t23 := $1_token_Withdraw($t1, $t2); + + // opaque begin: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:13+36 + + // opaque end: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:13+36 + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1714:18+11 + assume {:print "$at(186,69478,69489)"} true; +L9: + + // $t24 := borrow_field.withdraw_events($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1714:13+32 + assume {:print "$at(186,69473,69505)"} true; + $t24 := $ChildMutation($t21, 3, $Dereference($t21)->$withdraw_events); + + // $t25 := pack token::WithdrawEvent($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1715:13+28 + assume {:print "$at(186,69519,69547)"} true; + $t25 := $1_token_WithdrawEvent($t1, $t2); + + // opaque begin: event::emit_event($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + assume {:print "$at(186,69427,69557)"} true; + + // opaque end: event::emit_event($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + + // write_back[Reference($t21).withdraw_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + $t21 := $UpdateMutation($t21, $Update'$1_token_TokenStore'_withdraw_events($Dereference($t21), $Dereference($t24))); + + // write_back[token::TokenStore@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // $t26 := borrow_global($t0) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:27+17 + assume {:print "$at(186,69585,69602)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t26 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,69585,69602)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t27 := borrow_field.tokens($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:22+55 + $t27 := $ChildMutation($t26, 0, $Dereference($t26)->$tokens); + + // trace_local[tokens]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:13+6 + $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' := $Dereference($t27); + assume {:print "$track_local(113,84,7):", $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''; + + // $t28 := read_ref($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1719:28+12 + assume {:print "$at(186,69681,69693)"} true; + $t28 := $Dereference($t27); + + // $t29 := table::contains($t28, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1719:13+27 + call $t29 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t28, $t1); + if ($abort_flag) { + assume {:print "$at(186,69666,69693)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // if ($t29) goto L12 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + if ($t29) { goto L12; } else { goto L19; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 +L11: + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + + // $t30 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1720:30+24 + assume {:print "$at(186,69724,69748)"} true; + $t30 := 15; + assume $IsValid'u64'($t30); + + // $t31 := error::not_found($t30) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1720:13+42 + call $t31 := $1_error_not_found($t30); + if ($abort_flag) { + assume {:print "$at(186,69707,69749)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + assume {:print "$track_abort(113,84):", $t31} $t31 == $t31; + + // $t13 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + $t13 := $t31; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + goto L18; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:46+6 + assume {:print "$at(186,69888,69894)"} true; +L13: + + // $t32 := table::borrow_mut($t27, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:28+29 + assume {:print "$at(186,69870,69899)"} true; + call $t32,$t27 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(186,69870,69899)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t33 := borrow_field.amount($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:23+41 + $t33 := $ChildMutation($t32, 1, $Dereference($t32)->$amount); + + // trace_local[balance]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:13+7 + $temp_0'u64' := $Dereference($t33); + assume {:print "$track_local(113,84,5):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t34 := read_ref($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:13+8 + assume {:print "$at(186,69920,69928)"} true; + $t34 := $Dereference($t33); + + // $t35 := >($t34, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:22+1 + call $t35 := $Gt($t34, $t2); + + // if ($t35) goto L15 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + if ($t35) { goto L15; } else { goto L20; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + assume {:print "$at(186,69953,69981)"} true; +L15: + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + assume {:print "$at(186,69953,69981)"} true; + + // $t36 := read_ref($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:24+8 + $t36 := $Dereference($t33); + + // $t37 := -($t36, $t2) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:33+1 + call $t37 := $Sub($t36, $t2); + if ($abort_flag) { + assume {:print "$at(186,69973,69974)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // write_ref($t33, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t33 := $UpdateMutation($t33, $t37); + + // write_back[Reference($t32).amount (u64)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t32 := $UpdateMutation($t32, $Update'$1_token_Token'_amount($Dereference($t32), $Dereference($t33))); + + // write_back[Reference($t27)[]]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t27 := $UpdateMutation($t27, UpdateTable($Dereference($t27), ReadVec($t32->p, LenVec($t27->p)), $Dereference($t32))); + + // write_back[Reference($t26).tokens (table::Table)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t26 := $UpdateMutation($t26, $Update'$1_token_TokenStore'_tokens($Dereference($t26), $Dereference($t27))); + + // write_back[token::TokenStore@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t26), + $Dereference($t26)); + + // $t38 := property_map::empty() on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1726:51+21 + assume {:print "$at(186,70033,70054)"} true; + call $t38 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(186,70033,70054)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t4 := pack token::Token($t1, $t2, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1726:13+61 + $t4 := $1_token_Token($t1, $t2, $t38); + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 +L14: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + + // $t4 := table::remove($t27, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + assume {:print "$at(186,70086,70111)"} true; + call $t4,$t27 := $1_table_remove'$1_token_TokenId_$1_token_Token'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(186,70086,70111)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // write_back[Reference($t26).tokens (table::Table)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + $t26 := $UpdateMutation($t26, $Update'$1_token_TokenStore'_tokens($Dereference($t26), $Dereference($t27))); + + // write_back[token::TokenStore@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t26), + $Dereference($t26)); + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; +L16: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + assume {:print "$track_return(113,84,0):", $t4} $t4 == $t4; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 + assume {:print "$at(186,70126,70127)"} true; +L17: + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 + assume {:print "$at(186,70126,70127)"} true; + $ret0 := $t4; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 +L18: + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 + assume {:print "$at(186,70126,70127)"} true; + $abort_code := $t13; + $abort_flag := true; + return; + + // label L19 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L19: + + // drop($t26) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + + // label L20 at :1:1+10 +L20: + + // drop($t32) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + +} + +// fun token::withdraw_with_event_internal [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1477 +procedure {:timeLimit 80} $1_token_withdraw_with_event_internal$verify(_$t0: int, _$t1: $1_token_TokenId, _$t2: int) returns ($ret0: $1_token_Token) +{ + // declare local variables + var $t3: $1_token_TokenId; + var $t4: $1_token_Token; + var $t5: $Mutation (int); + var $t6: $Mutation ($1_token_TokenStore); + var $t7: $Mutation (Table int ($1_token_Token)); + var $t8: Table int ($1_token_Token); + var $t9: int; + var $t10: bool; + var $t11: int; + var $t12: int; + var $t13: int; + var $t14: int; + var $t15: bool; + var $t16: int; + var $t17: int; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_token_TokenStore); + var $t22: bool; + var $t23: $1_token_Withdraw; + var $t24: $Mutation ($1_event_EventHandle'$1_token_WithdrawEvent'); + var $t25: $1_token_WithdrawEvent; + var $t26: $Mutation ($1_token_TokenStore); + var $t27: $Mutation (Table int ($1_token_Token)); + var $t28: Table int ($1_token_Token); + var $t29: bool; + var $t30: int; + var $t31: int; + var $t32: $Mutation ($1_token_Token); + var $t33: $Mutation (int); + var $t34: int; + var $t35: bool; + var $t36: int; + var $t37: int; + var $t38: $1_property_map_PropertyMap; + var $t0: int; + var $t1: $1_token_TokenId; + var $t2: int; + var $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_TokenStore': $1_token_TokenStore; + var $temp_0'address': int; + var $temp_0'u64': int; + var $1_token_TokenStore_$memory#850: $Memory $1_token_TokenStore; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$at(186,68650,68651)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume $IsValid'u64'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume Identical($t8, select token::TokenStore.tokens(global($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:875:9+53 + assume {:print "$at(187,37018,37071)"} true; + assume ($t8 == $ResourceValue($1_token_TokenStore_$memory, $t0)->$tokens); + + // @850 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$at(186,68650,68651)"} true; + $1_token_TokenStore_$memory#850 := $1_token_TokenStore_$memory; + + // trace_local[account_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$track_local(113,84,0):", $t0} $t0 == $t0; + + // trace_local[id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$track_local(113,84,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1694:5+1 + assume {:print "$track_local(113,84,2):", $t2} $t2 == $t2; + + // $t9 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:26+1 + assume {:print "$at(186,68873,68874)"} true; + $t9 := 0; + assume $IsValid'u64'($t9); + + // $t10 := >($t2, $t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:24+1 + call $t10 := $Gt($t2, $t9); + + // if ($t10) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + if ($t10) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + assume {:print "$at(186,68856,68916)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:53+14 +L0: + + // $t11 := 17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:53+14 + assume {:print "$at(186,68900,68914)"} true; + $t11 := 17; + assume $IsValid'u64'($t11); + + // $t12 := error::invalid_argument($t11) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:29+39 + call $t12 := $1_error_invalid_argument($t11); + if ($abort_flag) { + assume {:print "$at(186,68876,68915)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + assume {:print "$at(186,68856,68916)"} true; + assume {:print "$track_abort(113,84):", $t12} $t12 == $t12; + + // $t13 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + $t13 := $t12; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1700:9+60 + goto L18; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:28+12 + assume {:print "$at(186,69013,69025)"} true; +L2: + + // $t14 := token::balance_of($t0, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:17+28 + assume {:print "$at(186,69002,69030)"} true; + call $t14 := $1_token_balance_of($t0, $t1); + if ($abort_flag) { + assume {:print "$at(186,69002,69030)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t15 := >=($t14, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:46+2 + call $t15 := $Ge($t14, $t2); + + // if ($t15) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + if ($t15) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + assume {:print "$at(186,68994,69089)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:81+21 +L3: + + // $t16 := 5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:81+21 + assume {:print "$at(186,69066,69087)"} true; + $t16 := 5; + assume $IsValid'u64'($t16); + + // $t17 := error::invalid_argument($t16) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:57+46 + call $t17 := $1_error_invalid_argument($t16); + if ($abort_flag) { + assume {:print "$at(186,69042,69088)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + assume {:print "$at(186,68994,69089)"} true; + assume {:print "$track_abort(113,84):", $t17} $t17 == $t17; + + // $t13 := move($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + $t13 := $t17; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1702:9+95 + goto L18; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1705:32+12 + assume {:print "$at(186,69140,69152)"} true; +L5: + + // $t18 := exists($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1705:13+6 + assume {:print "$at(186,69121,69127)"} true; + $t18 := $ResourceExists($1_token_TokenStore_$memory, $t0); + + // if ($t18) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + if ($t18) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 +L7: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + goto L8; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:30+26 + assume {:print "$at(186,69184,69210)"} true; +L6: + + // $t19 := 11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:30+26 + assume {:print "$at(186,69184,69210)"} true; + $t19 := 11; + assume $IsValid'u64'($t19); + + // $t20 := error::not_found($t19) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1706:13+44 + call $t20 := $1_error_not_found($t19); + if ($abort_flag) { + assume {:print "$at(186,69167,69211)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + assume {:print "$at(186,69100,69222)"} true; + assume {:print "$track_abort(113,84):", $t20} $t20 == $t20; + + // $t13 := move($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + $t13 := $t20; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1704:9+122 + goto L18; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:57+12 + assume {:print "$at(186,69281,69293)"} true; +L8: + + // $t21 := borrow_global($t0) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:27+17 + assume {:print "$at(186,69251,69268)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,69251,69268)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_local[token_store]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1709:13+11 + $temp_0'$1_token_TokenStore' := $Dereference($t21); + assume {:print "$track_local(113,84,6):", $temp_0'$1_token_TokenStore'} $temp_0'$1_token_TokenStore' == $temp_0'$1_token_TokenStore'; + + // $t22 := features::module_event_migration_enabled() on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1710:13+47 + assume {:print "$at(186,69308,69355)"} true; + call $t22 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(186,69308,69355)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // if ($t22) goto L10 else goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1710:9+113 + if ($t22) { goto L10; } else { goto L9; } + + // label L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:36+2 + assume {:print "$at(186,69394,69396)"} true; +L10: + + // $t23 := pack token::Withdraw($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:25+23 + assume {:print "$at(186,69383,69406)"} true; + $t23 := $1_token_Withdraw($t1, $t2); + + // opaque begin: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:13+36 + + // opaque end: event::emit($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1711:13+36 + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1714:18+11 + assume {:print "$at(186,69478,69489)"} true; +L9: + + // $t24 := borrow_field.withdraw_events($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1714:13+32 + assume {:print "$at(186,69473,69505)"} true; + $t24 := $ChildMutation($t21, 3, $Dereference($t21)->$withdraw_events); + + // $t25 := pack token::WithdrawEvent($t1, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1715:13+28 + assume {:print "$at(186,69519,69547)"} true; + $t25 := $1_token_WithdrawEvent($t1, $t2); + + // opaque begin: event::emit_event($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + assume {:print "$at(186,69427,69557)"} true; + + // opaque end: event::emit_event($t24, $t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + + // write_back[Reference($t21).withdraw_events (event::EventHandle)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + $t21 := $UpdateMutation($t21, $Update'$1_token_TokenStore'_withdraw_events($Dereference($t21), $Dereference($t24))); + + // write_back[token::TokenStore@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1713:9+130 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // $t26 := borrow_global($t0) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:27+17 + assume {:print "$at(186,69585,69602)"} true; + if (!$ResourceExists($1_token_TokenStore_$memory, $t0)) { + call $ExecFailureAbort(); + } else { + $t26 := $Mutation($Global($t0), EmptyVec(), $ResourceValue($1_token_TokenStore_$memory, $t0)); + } + if ($abort_flag) { + assume {:print "$at(186,69585,69602)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t27 := borrow_field.tokens($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:22+55 + $t27 := $ChildMutation($t26, 0, $Dereference($t26)->$tokens); + + // trace_local[tokens]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1717:13+6 + $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' := $Dereference($t27); + assume {:print "$track_local(113,84,7):", $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_TokenId_$1_token_Token''; + + // $t28 := read_ref($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1719:28+12 + assume {:print "$at(186,69681,69693)"} true; + $t28 := $Dereference($t27); + + // $t29 := table::contains($t28, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1719:13+27 + call $t29 := $1_table_contains'$1_token_TokenId_$1_token_Token'($t28, $t1); + if ($abort_flag) { + assume {:print "$at(186,69666,69693)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // if ($t29) goto L12 else goto L19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + if ($t29) { goto L12; } else { goto L19; } + + // label L12 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 +L12: + + // goto L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + goto L13; + + // label L11 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 +L11: + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + + // $t30 := 15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1720:30+24 + assume {:print "$at(186,69724,69748)"} true; + $t30 := 15; + assume $IsValid'u64'($t30); + + // $t31 := error::not_found($t30) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1720:13+42 + call $t31 := $1_error_not_found($t30); + if ($abort_flag) { + assume {:print "$at(186,69707,69749)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // trace_abort($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + assume {:print "$at(186,69645,69760)"} true; + assume {:print "$track_abort(113,84):", $t31} $t31 == $t31; + + // $t13 := move($t31) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + $t13 := $t31; + + // goto L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1718:9+115 + goto L18; + + // label L13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:46+6 + assume {:print "$at(186,69888,69894)"} true; +L13: + + // $t32 := table::borrow_mut($t27, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:28+29 + assume {:print "$at(186,69870,69899)"} true; + call $t32,$t27 := $1_table_borrow_mut'$1_token_TokenId_$1_token_Token'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(186,69870,69899)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t33 := borrow_field.amount($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:23+41 + $t33 := $ChildMutation($t32, 1, $Dereference($t32)->$amount); + + // trace_local[balance]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1723:13+7 + $temp_0'u64' := $Dereference($t33); + assume {:print "$track_local(113,84,5):", $temp_0'u64'} $temp_0'u64' == $temp_0'u64'; + + // $t34 := read_ref($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:13+8 + assume {:print "$at(186,69920,69928)"} true; + $t34 := $Dereference($t33); + + // $t35 := >($t34, $t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:22+1 + call $t35 := $Gt($t34, $t2); + + // if ($t35) goto L15 else goto L20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + if ($t35) { goto L15; } else { goto L20; } + + // label L15 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + assume {:print "$at(186,69953,69981)"} true; +L15: + + // drop($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + assume {:print "$at(186,69953,69981)"} true; + + // $t36 := read_ref($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:24+8 + $t36 := $Dereference($t33); + + // $t37 := -($t36, $t2) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:33+1 + call $t37 := $Sub($t36, $t2); + if ($abort_flag) { + assume {:print "$at(186,69973,69974)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // write_ref($t33, $t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t33 := $UpdateMutation($t33, $t37); + + // write_back[Reference($t32).amount (u64)]($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t32 := $UpdateMutation($t32, $Update'$1_token_Token'_amount($Dereference($t32), $Dereference($t33))); + + // write_back[Reference($t27)[]]($t32) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t27 := $UpdateMutation($t27, UpdateTable($Dereference($t27), ReadVec($t32->p, LenVec($t27->p)), $Dereference($t32))); + + // write_back[Reference($t26).tokens (table::Table)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $t26 := $UpdateMutation($t26, $Update'$1_token_TokenStore'_tokens($Dereference($t26), $Dereference($t27))); + + // write_back[token::TokenStore@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1725:13+28 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t26), + $Dereference($t26)); + + // $t38 := property_map::empty() on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1726:51+21 + assume {:print "$at(186,70033,70054)"} true; + call $t38 := $1_property_map_empty(); + if ($abort_flag) { + assume {:print "$at(186,70033,70054)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // $t4 := pack token::Token($t1, $t2, $t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1726:13+61 + $t4 := $1_token_Token($t1, $t2, $t38); + + // goto L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + goto L16; + + // label L14 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 +L14: + + // drop($t33) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + + // $t4 := table::remove($t27, $t1) on_abort goto L18 with $t13 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + assume {:print "$at(186,70086,70111)"} true; + call $t4,$t27 := $1_table_remove'$1_token_TokenId_$1_token_Token'($t27, $t1); + if ($abort_flag) { + assume {:print "$at(186,70086,70111)"} true; + $t13 := $abort_code; + assume {:print "$track_abort(113,84):", $t13} $t13 == $t13; + goto L18; + } + + // write_back[Reference($t26).tokens (table::Table)]($t27) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + $t26 := $UpdateMutation($t26, $Update'$1_token_TokenStore'_tokens($Dereference($t26), $Dereference($t27))); + + // write_back[token::TokenStore@]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1728:13+25 + $1_token_TokenStore_$memory := $ResourceUpdate($1_token_TokenStore_$memory, $GlobalLocationAddress($t26), + $Dereference($t26)); + + // label L16 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; +L16: + + // trace_return[0]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1724:9+205 + assume {:print "$at(186,69916,70121)"} true; + assume {:print "$track_return(113,84,0):", $t4} $t4 == $t4; + + // label L17 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 + assume {:print "$at(186,70126,70127)"} true; +L17: + + // assert Not(Le($t2, 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:876:9+22 + assume {:print "$at(187,37080,37102)"} true; + assert {:msg "assert_failed(187,37080,37102): function does not abort under this condition"} + !($t2 <= 0); + + // assert Not(Lt(token::spec_balance_of[@850]($t0, $t1), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:877:9+53 + assume {:print "$at(187,37111,37164)"} true; + assert {:msg "assert_failed(187,37111,37164): function does not abort under this condition"} + !($1_token_spec_balance_of($1_token_TokenStore_$memory#850, $t0, $t1) < $t2); + + // assert Not(Not(exists[@850]($t0))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:878:9+44 + assume {:print "$at(187,37173,37217)"} true; + assert {:msg "assert_failed(187,37173,37217): function does not abort under this condition"} + !!$ResourceExists($1_token_TokenStore_$memory#850, $t0); + + // assert Not(Not(table::spec_contains[]($t8, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + assume {:print "$at(187,37226,37270)"} true; + assert {:msg "assert_failed(187,37226,37270): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t8, $t1); + + // return $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:879:9+44 + $ret0 := $t4; + return; + + // label L18 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.move:1730:5+1 + assume {:print "$at(186,70126,70127)"} true; +L18: + + // assert Or(Or(Or(Le($t2, 0), Lt(token::spec_balance_of[@850]($t0, $t1), $t2)), Not(exists[@850]($t0))), Not(table::spec_contains[]($t8, $t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:863:5+179 + assume {:print "$at(187,36704,36883)"} true; + assert {:msg "assert_failed(187,36704,36883): abort not covered by any of the `aborts_if` clauses"} + (((($t2 <= 0) || ($1_token_spec_balance_of($1_token_TokenStore_$memory#850, $t0, $t1) < $t2)) || !$ResourceExists($1_token_TokenStore_$memory#850, $t0)) || !$1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t8, $t1)); + + // abort($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:863:5+179 + $abort_code := $t13; + $abort_flag := true; + return; + + // label L19 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L19: + + // drop($t26) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L11 at :1:1+10 + goto L11; + + // label L20 at :1:1+10 +L20: + + // drop($t32) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L14 at :1:1+10 + goto L14; + +} + +// spec fun at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+159 +function {:inline} $1_token_transfers_$create_token_offer_id(to_addr: int, token_id: $1_token_TokenId): $1_token_transfers_TokenOfferId { + $1_token_transfers_TokenOfferId(to_addr, token_id) +} + +// struct token_transfers::PendingClaims at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:18:5+257 +datatype $1_token_transfers_PendingClaims { + $1_token_transfers_PendingClaims($pending_claims: Table int ($1_token_Token), $offer_events: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent', $cancel_offer_events: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent', $claim_events: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent') +} +function {:inline} $Update'$1_token_transfers_PendingClaims'_pending_claims(s: $1_token_transfers_PendingClaims, x: Table int ($1_token_Token)): $1_token_transfers_PendingClaims { + $1_token_transfers_PendingClaims(x, s->$offer_events, s->$cancel_offer_events, s->$claim_events) +} +function {:inline} $Update'$1_token_transfers_PendingClaims'_offer_events(s: $1_token_transfers_PendingClaims, x: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'): $1_token_transfers_PendingClaims { + $1_token_transfers_PendingClaims(s->$pending_claims, x, s->$cancel_offer_events, s->$claim_events) +} +function {:inline} $Update'$1_token_transfers_PendingClaims'_cancel_offer_events(s: $1_token_transfers_PendingClaims, x: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'): $1_token_transfers_PendingClaims { + $1_token_transfers_PendingClaims(s->$pending_claims, s->$offer_events, x, s->$claim_events) +} +function {:inline} $Update'$1_token_transfers_PendingClaims'_claim_events(s: $1_token_transfers_PendingClaims, x: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'): $1_token_transfers_PendingClaims { + $1_token_transfers_PendingClaims(s->$pending_claims, s->$offer_events, s->$cancel_offer_events, x) +} +function $IsValid'$1_token_transfers_PendingClaims'(s: $1_token_transfers_PendingClaims): bool { + $IsValid'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''(s->$pending_claims) + && $IsValid'$1_event_EventHandle'$1_token_transfers_TokenOfferEvent''(s->$offer_events) + && $IsValid'$1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent''(s->$cancel_offer_events) + && $IsValid'$1_event_EventHandle'$1_token_transfers_TokenClaimEvent''(s->$claim_events) +} +function {:inline} $IsEqual'$1_token_transfers_PendingClaims'(s1: $1_token_transfers_PendingClaims, s2: $1_token_transfers_PendingClaims): bool { + s1 == s2 +} +var $1_token_transfers_PendingClaims_$memory: $Memory $1_token_transfers_PendingClaims; + +// struct token_transfers::TokenCancelOffer at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:53:5+124 +datatype $1_token_transfers_TokenCancelOffer { + $1_token_transfers_TokenCancelOffer($to_address: int, $token_id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOffer'_to_address(s: $1_token_transfers_TokenCancelOffer, x: int): $1_token_transfers_TokenCancelOffer { + $1_token_transfers_TokenCancelOffer(x, s->$token_id, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOffer'_token_id(s: $1_token_transfers_TokenCancelOffer, x: $1_token_TokenId): $1_token_transfers_TokenCancelOffer { + $1_token_transfers_TokenCancelOffer(s->$to_address, x, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOffer'_amount(s: $1_token_transfers_TokenCancelOffer, x: int): $1_token_transfers_TokenCancelOffer { + $1_token_transfers_TokenCancelOffer(s->$to_address, s->$token_id, x) +} +function $IsValid'$1_token_transfers_TokenCancelOffer'(s: $1_token_transfers_TokenCancelOffer): bool { + $IsValid'address'(s->$to_address) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_transfers_TokenCancelOffer'(s1: $1_token_transfers_TokenCancelOffer, s2: $1_token_transfers_TokenCancelOffer): bool { + $IsEqual'address'(s1->$to_address, s2->$to_address) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token_transfers::TokenCancelOfferEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:46:5+129 +datatype $1_token_transfers_TokenCancelOfferEvent { + $1_token_transfers_TokenCancelOfferEvent($to_address: int, $token_id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOfferEvent'_to_address(s: $1_token_transfers_TokenCancelOfferEvent, x: int): $1_token_transfers_TokenCancelOfferEvent { + $1_token_transfers_TokenCancelOfferEvent(x, s->$token_id, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOfferEvent'_token_id(s: $1_token_transfers_TokenCancelOfferEvent, x: $1_token_TokenId): $1_token_transfers_TokenCancelOfferEvent { + $1_token_transfers_TokenCancelOfferEvent(s->$to_address, x, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenCancelOfferEvent'_amount(s: $1_token_transfers_TokenCancelOfferEvent, x: int): $1_token_transfers_TokenCancelOfferEvent { + $1_token_transfers_TokenCancelOfferEvent(s->$to_address, s->$token_id, x) +} +function $IsValid'$1_token_transfers_TokenCancelOfferEvent'(s: $1_token_transfers_TokenCancelOfferEvent): bool { + $IsValid'address'(s->$to_address) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_transfers_TokenCancelOfferEvent'(s1: $1_token_transfers_TokenCancelOfferEvent, s2: $1_token_transfers_TokenCancelOfferEvent): bool { + $IsEqual'address'(s1->$to_address, s2->$to_address) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token_transfers::TokenClaim at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:67:5+118 +datatype $1_token_transfers_TokenClaim { + $1_token_transfers_TokenClaim($to_address: int, $token_id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_transfers_TokenClaim'_to_address(s: $1_token_transfers_TokenClaim, x: int): $1_token_transfers_TokenClaim { + $1_token_transfers_TokenClaim(x, s->$token_id, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenClaim'_token_id(s: $1_token_transfers_TokenClaim, x: $1_token_TokenId): $1_token_transfers_TokenClaim { + $1_token_transfers_TokenClaim(s->$to_address, x, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenClaim'_amount(s: $1_token_transfers_TokenClaim, x: int): $1_token_transfers_TokenClaim { + $1_token_transfers_TokenClaim(s->$to_address, s->$token_id, x) +} +function $IsValid'$1_token_transfers_TokenClaim'(s: $1_token_transfers_TokenClaim): bool { + $IsValid'address'(s->$to_address) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_transfers_TokenClaim'(s1: $1_token_transfers_TokenClaim, s2: $1_token_transfers_TokenClaim): bool { + $IsEqual'address'(s1->$to_address, s2->$to_address) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token_transfers::TokenClaimEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:60:5+123 +datatype $1_token_transfers_TokenClaimEvent { + $1_token_transfers_TokenClaimEvent($to_address: int, $token_id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_transfers_TokenClaimEvent'_to_address(s: $1_token_transfers_TokenClaimEvent, x: int): $1_token_transfers_TokenClaimEvent { + $1_token_transfers_TokenClaimEvent(x, s->$token_id, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenClaimEvent'_token_id(s: $1_token_transfers_TokenClaimEvent, x: $1_token_TokenId): $1_token_transfers_TokenClaimEvent { + $1_token_transfers_TokenClaimEvent(s->$to_address, x, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenClaimEvent'_amount(s: $1_token_transfers_TokenClaimEvent, x: int): $1_token_transfers_TokenClaimEvent { + $1_token_transfers_TokenClaimEvent(s->$to_address, s->$token_id, x) +} +function $IsValid'$1_token_transfers_TokenClaimEvent'(s: $1_token_transfers_TokenClaimEvent): bool { + $IsValid'address'(s->$to_address) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_transfers_TokenClaimEvent'(s1: $1_token_transfers_TokenClaimEvent, s2: $1_token_transfers_TokenClaimEvent): bool { + $IsEqual'address'(s1->$to_address, s2->$to_address) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token_transfers::TokenOfferEvent at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:39:5+123 +datatype $1_token_transfers_TokenOfferEvent { + $1_token_transfers_TokenOfferEvent($to_address: int, $token_id: $1_token_TokenId, $amount: int) +} +function {:inline} $Update'$1_token_transfers_TokenOfferEvent'_to_address(s: $1_token_transfers_TokenOfferEvent, x: int): $1_token_transfers_TokenOfferEvent { + $1_token_transfers_TokenOfferEvent(x, s->$token_id, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenOfferEvent'_token_id(s: $1_token_transfers_TokenOfferEvent, x: $1_token_TokenId): $1_token_transfers_TokenOfferEvent { + $1_token_transfers_TokenOfferEvent(s->$to_address, x, s->$amount) +} +function {:inline} $Update'$1_token_transfers_TokenOfferEvent'_amount(s: $1_token_transfers_TokenOfferEvent, x: int): $1_token_transfers_TokenOfferEvent { + $1_token_transfers_TokenOfferEvent(s->$to_address, s->$token_id, x) +} +function $IsValid'$1_token_transfers_TokenOfferEvent'(s: $1_token_transfers_TokenOfferEvent): bool { + $IsValid'address'(s->$to_address) + && $IsValid'$1_token_TokenId'(s->$token_id) + && $IsValid'u64'(s->$amount) +} +function {:inline} $IsEqual'$1_token_transfers_TokenOfferEvent'(s1: $1_token_transfers_TokenOfferEvent, s2: $1_token_transfers_TokenOfferEvent): bool { + $IsEqual'address'(s1->$to_address, s2->$to_address) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id) + && $IsEqual'u64'(s1->$amount, s2->$amount)} + +// struct token_transfers::TokenOfferId at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:26:5+102 +datatype $1_token_transfers_TokenOfferId { + $1_token_transfers_TokenOfferId($to_addr: int, $token_id: $1_token_TokenId) +} +function {:inline} $Update'$1_token_transfers_TokenOfferId'_to_addr(s: $1_token_transfers_TokenOfferId, x: int): $1_token_transfers_TokenOfferId { + $1_token_transfers_TokenOfferId(x, s->$token_id) +} +function {:inline} $Update'$1_token_transfers_TokenOfferId'_token_id(s: $1_token_transfers_TokenOfferId, x: $1_token_TokenId): $1_token_transfers_TokenOfferId { + $1_token_transfers_TokenOfferId(s->$to_addr, x) +} +function $IsValid'$1_token_transfers_TokenOfferId'(s: $1_token_transfers_TokenOfferId): bool { + $IsValid'address'(s->$to_addr) + && $IsValid'$1_token_TokenId'(s->$token_id) +} +function {:inline} $IsEqual'$1_token_transfers_TokenOfferId'(s1: $1_token_transfers_TokenOfferId, s2: $1_token_transfers_TokenOfferId): bool { + $IsEqual'address'(s1->$to_addr, s2->$to_addr) + && $IsEqual'$1_token_TokenId'(s1->$token_id, s2->$token_id)} + +// fun token_transfers::cancel_offer [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1169 +procedure {:inline 1} $1_token_transfers_cancel_offer(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: $1_token_Token; + var $t6: $1_token_transfers_TokenOfferId; + var $t7: int; + var $t8: Table int ($1_token_Token); + var $t9: $1_token_transfers_TokenOfferId; + var $t10: $1_token_Token; + var $t11: int; + var $t12: $1_token_Token; + var $t13: $1_token_TokenStore; + var $t14: $1_token_Token; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: int; + var $t19: int; + var $t20: $1_token_transfers_TokenOfferId; + var $t21: bool; + var $t22: int; + var $t23: $Mutation ($1_token_transfers_PendingClaims); + var $t24: $Mutation (Table int ($1_token_Token)); + var $t25: $1_token_Token; + var $t26: int; + var $t27: int; + var $t28: $1_token_TokenId; + var $t29: int; + var $t30: int; + var $t31: $1_account_Account; + var $t32: $1_token_TokenStore; + var $t33: $1_token_Token; + var $t34: bool; + var $t35: bool; + var $t36: $1_token_transfers_TokenCancelOffer; + var $t37: $Mutation ($1_token_transfers_PendingClaims); + var $t38: $Mutation ($1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'); + var $t39: $1_token_transfers_TokenCancelOfferEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + 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 + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:185:9+45 + assume {:print "$at(193,6544,6589)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, select token_transfers::PendingClaims.pending_claims(global($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:187:9+71 + assume {:print "$at(193,6653,6724)"} true; + assume ($t8 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t7)->$pending_claims); + + // assume Identical($t9, token_transfers::$create_token_offer_id($t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:188:9+63 + assume {:print "$at(193,6733,6796)"} true; + assume ($t9 == $1_token_transfers_$create_token_offer_id($t1, $t2)); + + // assume Identical($t10, table::spec_get($t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:192:9+64 + assume {:print "$at(193,6942,7006)"} true; + assume ($t10 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9)); + + // assume Identical($t11, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:194:9+31 + assume {:print "$at(193,7016,7047)"} true; + assume ($t11 == $t7); + + // assume Identical($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:195:9+22 + assume {:print "$at(193,7056,7078)"} true; + assume ($t12 == $t10); + + // assume Identical($t13, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:196:9+51 + assume {:print "$at(193,7087,7138)"} true; + assume ($t13 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t14, table::spec_get(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:197:9+68 + assume {:print "$at(193,7147,7215)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t15, table::spec_contains(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:198:9+59 + assume {:print "$at(193,7224,7283)"} true; + assume ($t15 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$at(192,6200,6201)"} true; + assume {:print "$track_local(115,0,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$track_local(115,0,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$track_local(115,0,2):", $t2} $t2 == $t2; + + // $t18 := signer::address_of($t0) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:209:27+26 + assume {:print "$at(192,6361,6387)"} true; + call $t18 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,6361,6387)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[sender_addr]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:209:13+11 + assume {:print "$track_local(115,0,4):", $t18} $t18 == $t18; + + // $t20 := token_transfers::create_token_offer_id($t1, $t2) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:210:30+41 + assume {:print "$at(192,6418,6459)"} true; + call $t20 := $1_token_transfers_create_token_offer_id($t1, $t2); + if ($abort_flag) { + assume {:print "$at(192,6418,6459)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[token_offer_id]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:210:13+14 + assume {:print "$track_local(115,0,6):", $t20} $t20 == $t20; + + // $t21 := exists($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:17+6 + assume {:print "$at(192,6477,6483)"} true; + $t21 := $ResourceExists($1_token_transfers_PendingClaims_$memory, $t18); + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + assume {:print "$at(192,6469,6536)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 +L0: + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:53+22 + assume {:print "$at(192,6513,6535)"} true; + $t22 := 1; + assume $IsValid'u64'($t22); + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + assume {:print "$at(192,6469,6536)"} true; + assume {:print "$track_abort(115,0):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + $t19 := $t22; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + goto L6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:51+11 + assume {:print "$at(192,6617,6628)"} true; +L2: + + // $t23 := borrow_global($t18) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:18+17 + assume {:print "$at(192,6584,6601)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(192,6584,6601)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t24 := borrow_field.pending_claims($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:13+65 + $t24 := $ChildMutation($t23, 0, $Dereference($t23)->$pending_claims); + + // $t25 := table::remove($t24, $t20) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + assume {:print "$at(192,6666,6711)"} true; + call $t25,$t24 := $1_table_remove'$1_token_transfers_TokenOfferId_$1_token_Token'($t24, $t20); + if ($abort_flag) { + assume {:print "$at(192,6666,6711)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // write_back[Reference($t23).pending_claims (table::Table)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + $t23 := $UpdateMutation($t23, $Update'$1_token_transfers_PendingClaims'_pending_claims($Dereference($t23), $Dereference($t24))); + + // write_back[token_transfers::PendingClaims@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // trace_local[token]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:13+5 + assume {:print "$track_local(115,0,5):", $t25} $t25 == $t25; + + // $t26 := token::get_token_amount($t25) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:215:22+31 + assume {:print "$at(192,6734,6765)"} true; + call $t26 := $1_token_get_token_amount($t25); + if ($abort_flag) { + assume {:print "$at(192,6734,6765)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[amount]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:215:13+6 + assume {:print "$track_local(115,0,3):", $t26} $t26 == $t26; + + // assume Identical($t27, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t27 == $1_signer_$address_of($t0)); + + // assume Identical($t28, select token::Token.id($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t28 == $t25->$id); + + // assume Identical($t29, select token::Token.amount($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t29 == $t25->$amount); + + // assume Identical($t30, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t30 == $1_signer_$address_of($t0)); + + // assume Identical($t31, global($t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t31 == $ResourceValue($1_account_Account_$memory, $t30)); + + // assume Identical($t32, global($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t32 == $ResourceValue($1_token_TokenStore_$memory, $t27)); + + // assume Identical($t33, table::spec_get(select token::TokenStore.tokens($t32), $t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t33 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t32->$tokens, $t28)); + + // assume Identical($t34, table::spec_contains(select token::TokenStore.tokens($t32), $t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t34 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t32->$tokens, $t28)); + + // token::deposit_token($t0, $t25) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:216:9+35 + assume {:print "$at(192,6775,6810)"} true; + call $1_token_deposit_token($t0, $t25); + if ($abort_flag) { + assume {:print "$at(192,6775,6810)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t35 := features::module_event_migration_enabled() on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:218:13+47 + assume {:print "$at(192,6825,6872)"} true; + call $t35 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(192,6825,6872)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // if ($t35) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:218:9+257 + if ($t35) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:221:33+8 + assume {:print "$at(192,6968,6976)"} true; +L4: + + // $t36 := pack token_transfers::TokenCancelOffer($t1, $t2, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:220:17+136 + assume {:print "$at(192,6917,7053)"} true; + $t36 := $1_token_transfers_TokenCancelOffer($t1, $t2, $t26); + + // opaque begin: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:219:13+180 + assume {:print "$at(192,6888,7068)"} true; + + // opaque end: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:219:13+180 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:51+11 + assume {:print "$at(192,7180,7191)"} true; +L3: + + // $t37 := borrow_global($t18) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:18+17 + assume {:print "$at(192,7147,7164)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t37 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(192,7147,7164)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t38 := borrow_field.cancel_offer_events($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:13+70 + $t38 := $ChildMutation($t37, 2, $Dereference($t37)->$cancel_offer_events); + + // $t39 := pack token_transfers::TokenCancelOfferEvent($t1, $t2, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:229:13+125 + assume {:print "$at(192,7226,7351)"} true; + $t39 := $1_token_transfers_TokenCancelOfferEvent($t1, $t2, $t26); + + // opaque begin: event::emit_event($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + assume {:print "$at(192,7088,7362)"} true; + + // opaque end: event::emit_event($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + + // write_back[Reference($t37).cancel_offer_events (event::EventHandle)]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + $t37 := $UpdateMutation($t37, $Update'$1_token_transfers_PendingClaims'_cancel_offer_events($Dereference($t37), $Dereference($t38))); + + // write_back[token_transfers::PendingClaims@]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t37), + $Dereference($t37)); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; +L5: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 +L6: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun token_transfers::cancel_offer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1169 +procedure {:timeLimit 80} $1_token_transfers_cancel_offer$verify(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId) returns () +{ + // declare local variables + var $t3: int; + var $t4: int; + var $t5: $1_token_Token; + var $t6: $1_token_transfers_TokenOfferId; + var $t7: int; + var $t8: Table int ($1_token_Token); + var $t9: $1_token_transfers_TokenOfferId; + var $t10: $1_token_Token; + var $t11: int; + var $t12: $1_token_Token; + var $t13: $1_token_TokenStore; + var $t14: $1_token_Token; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: int; + var $t19: int; + var $t20: $1_token_transfers_TokenOfferId; + var $t21: bool; + var $t22: int; + var $t23: $Mutation ($1_token_transfers_PendingClaims); + var $t24: $Mutation (Table int ($1_token_Token)); + var $t25: $1_token_Token; + var $t26: int; + var $t27: int; + var $t28: $1_token_TokenId; + var $t29: int; + var $t30: int; + var $t31: $1_account_Account; + var $t32: $1_token_TokenStore; + var $t33: $1_token_Token; + var $t34: bool; + var $t35: bool; + var $t36: $1_token_transfers_TokenCancelOffer; + var $t37: $Mutation ($1_token_transfers_PendingClaims); + var $t38: $Mutation ($1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'); + var $t39: $1_token_transfers_TokenCancelOfferEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_transfers_PendingClaims_$memory#935: $Memory $1_token_transfers_PendingClaims; + var $1_token_TokenStore_$memory#936: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#937: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$at(192,6200,6201)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume $IsValid'$1_token_TokenId'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume forall $rsc: token_transfers::PendingClaims: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0); + ($IsValid'$1_token_transfers_PendingClaims'($rsc)))); + + // assume Identical($t7, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:185:9+45 + assume {:print "$at(193,6544,6589)"} true; + assume ($t7 == $1_signer_$address_of($t0)); + + // assume Identical($t8, select token_transfers::PendingClaims.pending_claims(global($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:187:9+71 + assume {:print "$at(193,6653,6724)"} true; + assume ($t8 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t7)->$pending_claims); + + // assume Identical($t9, token_transfers::$create_token_offer_id($t1, $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:188:9+63 + assume {:print "$at(193,6733,6796)"} true; + assume ($t9 == $1_token_transfers_$create_token_offer_id($t1, $t2)); + + // assume Identical($t10, table::spec_get($t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:192:9+64 + assume {:print "$at(193,6942,7006)"} true; + assume ($t10 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9)); + + // assume Identical($t11, $t7) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:194:9+31 + assume {:print "$at(193,7016,7047)"} true; + assume ($t11 == $t7); + + // assume Identical($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:195:9+22 + assume {:print "$at(193,7056,7078)"} true; + assume ($t12 == $t10); + + // assume Identical($t13, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:196:9+51 + assume {:print "$at(193,7087,7138)"} true; + assume ($t13 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t14, table::spec_get(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:197:9+68 + assume {:print "$at(193,7147,7215)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t15, table::spec_contains(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:198:9+59 + assume {:print "$at(193,7224,7283)"} true; + assume ($t15 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // @937 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$at(192,6200,6201)"} true; + $1_account_Account_$memory#937 := $1_account_Account_$memory; + + // @936 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + $1_token_TokenStore_$memory#936 := $1_token_TokenStore_$memory; + + // @935 := save_mem(token_transfers::PendingClaims) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + $1_token_transfers_PendingClaims_$memory#935 := $1_token_transfers_PendingClaims_$memory; + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$track_local(115,0,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$track_local(115,0,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:204:5+1 + assume {:print "$track_local(115,0,2):", $t2} $t2 == $t2; + + // $t18 := signer::address_of($t0) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:209:27+26 + assume {:print "$at(192,6361,6387)"} true; + call $t18 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,6361,6387)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[sender_addr]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:209:13+11 + assume {:print "$track_local(115,0,4):", $t18} $t18 == $t18; + + // $t20 := token_transfers::create_token_offer_id($t1, $t2) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:210:30+41 + assume {:print "$at(192,6418,6459)"} true; + call $t20 := $1_token_transfers_create_token_offer_id($t1, $t2); + if ($abort_flag) { + assume {:print "$at(192,6418,6459)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[token_offer_id]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:210:13+14 + assume {:print "$track_local(115,0,6):", $t20} $t20 == $t20; + + // $t21 := exists($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:17+6 + assume {:print "$at(192,6477,6483)"} true; + $t21 := $ResourceExists($1_token_transfers_PendingClaims_$memory, $t18); + + // if ($t21) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + if ($t21) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + assume {:print "$at(192,6469,6536)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 +L0: + + // $t22 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:53+22 + assume {:print "$at(192,6513,6535)"} true; + $t22 := 1; + assume $IsValid'u64'($t22); + + // trace_abort($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + assume {:print "$at(192,6469,6536)"} true; + assume {:print "$track_abort(115,0):", $t22} $t22 == $t22; + + // $t19 := move($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + $t19 := $t22; + + // goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:211:9+67 + goto L6; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:51+11 + assume {:print "$at(192,6617,6628)"} true; +L2: + + // $t23 := borrow_global($t18) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:18+17 + assume {:print "$at(192,6584,6601)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t23 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(192,6584,6601)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t24 := borrow_field.pending_claims($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:213:13+65 + $t24 := $ChildMutation($t23, 0, $Dereference($t23)->$pending_claims); + + // $t25 := table::remove($t24, $t20) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + assume {:print "$at(192,6666,6711)"} true; + call $t25,$t24 := $1_table_remove'$1_token_transfers_TokenOfferId_$1_token_Token'($t24, $t20); + if ($abort_flag) { + assume {:print "$at(192,6666,6711)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // write_back[Reference($t23).pending_claims (table::Table)]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + $t23 := $UpdateMutation($t23, $Update'$1_token_transfers_PendingClaims'_pending_claims($Dereference($t23), $Dereference($t24))); + + // write_back[token_transfers::PendingClaims@]($t23) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:21+45 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t23), + $Dereference($t23)); + + // trace_local[token]($t25) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:214:13+5 + assume {:print "$track_local(115,0,5):", $t25} $t25 == $t25; + + // $t26 := token::get_token_amount($t25) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:215:22+31 + assume {:print "$at(192,6734,6765)"} true; + call $t26 := $1_token_get_token_amount($t25); + if ($abort_flag) { + assume {:print "$at(192,6734,6765)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // trace_local[amount]($t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:215:13+6 + assume {:print "$track_local(115,0,3):", $t26} $t26 == $t26; + + // assume Identical($t27, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t27 == $1_signer_$address_of($t0)); + + // assume Identical($t28, select token::Token.id($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t28 == $t25->$id); + + // assume Identical($t29, select token::Token.amount($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t29 == $t25->$amount); + + // assume Identical($t30, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t30 == $1_signer_$address_of($t0)); + + // assume Identical($t31, global($t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t31 == $ResourceValue($1_account_Account_$memory, $t30)); + + // assume Identical($t32, global($t27)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t32 == $ResourceValue($1_token_TokenStore_$memory, $t27)); + + // assume Identical($t33, table::spec_get(select token::TokenStore.tokens($t32), $t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t33 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t32->$tokens, $t28)); + + // assume Identical($t34, table::spec_contains(select token::TokenStore.tokens($t32), $t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t34 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t32->$tokens, $t28)); + + // token::deposit_token($t0, $t25) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:216:9+35 + assume {:print "$at(192,6775,6810)"} true; + call $1_token_deposit_token($t0, $t25); + if ($abort_flag) { + assume {:print "$at(192,6775,6810)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t35 := features::module_event_migration_enabled() on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:218:13+47 + assume {:print "$at(192,6825,6872)"} true; + call $t35 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(192,6825,6872)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // if ($t35) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:218:9+257 + if ($t35) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:221:33+8 + assume {:print "$at(192,6968,6976)"} true; +L4: + + // $t36 := pack token_transfers::TokenCancelOffer($t1, $t2, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:220:17+136 + assume {:print "$at(192,6917,7053)"} true; + $t36 := $1_token_transfers_TokenCancelOffer($t1, $t2, $t26); + + // opaque begin: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:219:13+180 + assume {:print "$at(192,6888,7068)"} true; + + // opaque end: event::emit($t36) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:219:13+180 + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:51+11 + assume {:print "$at(192,7180,7191)"} true; +L3: + + // $t37 := borrow_global($t18) on_abort goto L6 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:18+17 + assume {:print "$at(192,7147,7164)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t18)) { + call $ExecFailureAbort(); + } else { + $t37 := $Mutation($Global($t18), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t18)); + } + if ($abort_flag) { + assume {:print "$at(192,7147,7164)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,0):", $t19} $t19 == $t19; + goto L6; + } + + // $t38 := borrow_field.cancel_offer_events($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:228:13+70 + $t38 := $ChildMutation($t37, 2, $Dereference($t37)->$cancel_offer_events); + + // $t39 := pack token_transfers::TokenCancelOfferEvent($t1, $t2, $t26) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:229:13+125 + assume {:print "$at(192,7226,7351)"} true; + $t39 := $1_token_transfers_TokenCancelOfferEvent($t1, $t2, $t26); + + // opaque begin: event::emit_event($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + assume {:print "$at(192,7088,7362)"} true; + + // opaque end: event::emit_event($t38, $t39) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + + // write_back[Reference($t37).cancel_offer_events (event::EventHandle)]($t38) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + $t37 := $UpdateMutation($t37, $Update'$1_token_transfers_PendingClaims'_cancel_offer_events($Dereference($t37), $Dereference($t38))); + + // write_back[token_transfers::PendingClaims@]($t37) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:227:9+274 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t37), + $Dereference($t37)); + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; +L5: + + // assert Not(Not(exists[@935]($t7))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:186:9+46 + assume {:print "$at(193,6598,6644)"} true; + assert {:msg "assert_failed(193,6598,6644): function does not abort under this condition"} + !!$ResourceExists($1_token_transfers_PendingClaims_$memory#935, $t7); + + // assert Not(Not(table::spec_contains[]($t8, $t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:189:9+64 + assume {:print "$at(193,6805,6869)"} true; + assert {:msg "assert_failed(193,6805,6869): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9); + + // assert Not(And(Not(exists[@936]($t16)), Not(exists[@937]($t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#936, $t16) && !$ResourceExists($1_account_Account_$memory#937, $t16)); + + // assert Not(And(Not(exists[@936]($t16)), Ge(Add(select account::Account.guid_creation_num($t17), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#936, $t16) && (($t17->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@936]($t16)), Gt(Add(select account::Account.guid_creation_num($t17), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#936, $t16) && (($t17->$guid_creation_num + 4) > 18446744073709551615)); + + // assert Not(Le(select token::Token.amount($t12), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:199:9+28 + assume {:print "$at(193,7292,7320)"} true; + assert {:msg "assert_failed(193,7292,7320): function does not abort under this condition"} + !($t12->$amount <= 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:199:9+28 + return; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; +L6: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:235:5+1 + assume {:print "$at(192,7368,7369)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun token_transfers::cancel_offer_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+379 +procedure {:timeLimit 80} $1_token_transfers_cancel_offer_script$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: int) returns () +{ + // declare local variables + var $t6: $1_token_TokenId; + var $t7: $1_token_TokenId; + var $t8: int; + var $t9: Table int ($1_token_Token); + var $t10: $1_token_transfers_TokenOfferId; + var $t11: $1_token_Token; + var $t12: int; + var $t13: $1_token_Token; + var $t14: $1_token_TokenStore; + var $t15: $1_token_Token; + var $t16: bool; + var $t17: int; + var $t18: $1_account_Account; + var $t19: $1_token_TokenId; + var $t20: int; + var $t21: int; + var $t22: Table int ($1_token_Token); + var $t23: $1_token_transfers_TokenOfferId; + var $t24: $1_token_Token; + var $t25: int; + var $t26: $1_token_Token; + var $t27: $1_token_TokenStore; + var $t28: $1_token_Token; + var $t29: bool; + var $t30: int; + var $t31: $1_account_Account; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_transfers_PendingClaims_$memory#941: $Memory $1_token_transfers_PendingClaims; + var $1_token_TokenStore_$memory#942: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#943: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$at(192,5756,5757)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume $IsValid'u64'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume forall $rsc: token_transfers::PendingClaims: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0); + ($IsValid'$1_token_transfers_PendingClaims'($rsc)))); + + // assume Identical($t7, token::$create_token_id_raw($t2, $t3, $t4, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:156:9+87 + assume {:print "$at(193,5407,5494)"} true; + assume ($t7 == $1_token_$create_token_id_raw($t2, $t3, $t4, $t5)); + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:158:9+45 + assume {:print "$at(193,5504,5549)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, select token_transfers::PendingClaims.pending_claims(global($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:160:9+71 + assume {:print "$at(193,5613,5684)"} true; + assume ($t9 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t8)->$pending_claims); + + // assume Identical($t10, token_transfers::$create_token_offer_id($t1, $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:161:9+63 + assume {:print "$at(193,5693,5756)"} true; + assume ($t10 == $1_token_transfers_$create_token_offer_id($t1, $t7)); + + // assume Identical($t11, table::spec_get($t9, $t10)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:165:9+64 + assume {:print "$at(193,5902,5966)"} true; + assume ($t11 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t9, $t10)); + + // assume Identical($t12, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:167:9+31 + assume {:print "$at(193,5976,6007)"} true; + assume ($t12 == $t8); + + // assume Identical($t13, $t11) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:168:9+22 + assume {:print "$at(193,6016,6038)"} true; + assume ($t13 == $t11); + + // assume Identical($t14, global($t12)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:169:9+51 + assume {:print "$at(193,6047,6098)"} true; + assume ($t14 == $ResourceValue($1_token_TokenStore_$memory, $t12)); + + // assume Identical($t15, table::spec_get(select token::TokenStore.tokens($t14), select token::Token.id($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:170:9+68 + assume {:print "$at(193,6107,6175)"} true; + assume ($t15 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t14->$tokens, $t13->$id)); + + // assume Identical($t16, table::spec_contains(select token::TokenStore.tokens($t14), select token::Token.id($t13))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:171:9+59 + assume {:print "$at(193,6184,6243)"} true; + assume ($t16 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t14->$tokens, $t13->$id)); + + // assume Identical($t17, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t17 == $1_signer_$address_of($t0)); + + // assume Identical($t18, global($t17)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t18 == $ResourceValue($1_account_Account_$memory, $t17)); + + // @943 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$at(192,5756,5757)"} true; + $1_account_Account_$memory#943 := $1_account_Account_$memory; + + // @942 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + $1_token_TokenStore_$memory#942 := $1_token_TokenStore_$memory; + + // @941 := save_mem(token_transfers::PendingClaims) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + $1_token_transfers_PendingClaims_$memory#941 := $1_token_transfers_PendingClaims_$memory; + + // trace_local[sender]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,0):", $t0} $t0 == $t0; + + // trace_local[receiver]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,1):", $t1} $t1 == $t1; + + // trace_local[creator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,2):", $t2} $t2 == $t2; + + // trace_local[collection]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,3):", $t3} $t3 == $t3; + + // trace_local[name]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,4):", $t4} $t4 == $t4; + + // trace_local[property_version]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:191:5+1 + assume {:print "$track_local(115,1,5):", $t5} $t5 == $t5; + + // $t19 := token::create_token_id_raw($t2, $t3, $t4, $t5) on_abort goto L2 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:199:24+71 + assume {:print "$at(192,6006,6077)"} true; + call $t19 := $1_token_create_token_id_raw($t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(192,6006,6077)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,1):", $t20} $t20 == $t20; + goto L2; + } + + // trace_local[token_id]($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:199:13+8 + assume {:print "$track_local(115,1,6):", $t19} $t19 == $t19; + + // assume Identical($t21, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:185:9+45 + assume {:print "$at(193,6544,6589)"} true; + assume ($t21 == $1_signer_$address_of($t0)); + + // assume Identical($t22, select token_transfers::PendingClaims.pending_claims(global($t21))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:187:9+71 + assume {:print "$at(193,6653,6724)"} true; + assume ($t22 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t21)->$pending_claims); + + // assume Identical($t23, token_transfers::$create_token_offer_id($t1, $t19)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:188:9+63 + assume {:print "$at(193,6733,6796)"} true; + assume ($t23 == $1_token_transfers_$create_token_offer_id($t1, $t19)); + + // assume Identical($t24, table::spec_get($t22, $t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:192:9+64 + assume {:print "$at(193,6942,7006)"} true; + assume ($t24 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t22, $t23)); + + // assume Identical($t25, $t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:194:9+31 + assume {:print "$at(193,7016,7047)"} true; + assume ($t25 == $t21); + + // assume Identical($t26, $t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:195:9+22 + assume {:print "$at(193,7056,7078)"} true; + assume ($t26 == $t24); + + // assume Identical($t27, global($t25)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:196:9+51 + assume {:print "$at(193,7087,7138)"} true; + assume ($t27 == $ResourceValue($1_token_TokenStore_$memory, $t25)); + + // assume Identical($t28, table::spec_get(select token::TokenStore.tokens($t27), select token::Token.id($t26))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:197:9+68 + assume {:print "$at(193,7147,7215)"} true; + assume ($t28 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t27->$tokens, $t26->$id)); + + // assume Identical($t29, table::spec_contains(select token::TokenStore.tokens($t27), select token::Token.id($t26))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:198:9+59 + assume {:print "$at(193,7224,7283)"} true; + assume ($t29 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t27->$tokens, $t26->$id)); + + // assume Identical($t30, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t30 == $1_signer_$address_of($t0)); + + // assume Identical($t31, global($t30)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t31 == $ResourceValue($1_account_Account_$memory, $t30)); + + // token_transfers::cancel_offer($t0, $t1, $t19) on_abort goto L2 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:200:9+41 + assume {:print "$at(192,6087,6128)"} true; + call $1_token_transfers_cancel_offer($t0, $t1, $t19); + if ($abort_flag) { + assume {:print "$at(192,6087,6128)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,1):", $t20} $t20 == $t20; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:201:5+1 + assume {:print "$at(192,6134,6135)"} true; +L1: + + // assert Not(Not(exists[@941]($t8))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:159:9+46 + assume {:print "$at(193,5558,5604)"} true; + assert {:msg "assert_failed(193,5558,5604): function does not abort under this condition"} + !!$ResourceExists($1_token_transfers_PendingClaims_$memory#941, $t8); + + // assert Not(Not(table::spec_contains[]($t9, $t10))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:162:9+64 + assume {:print "$at(193,5765,5829)"} true; + assert {:msg "assert_failed(193,5765,5829): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t9, $t10); + + // assert Not(And(Not(exists[@942]($t17)), Not(exists[@943]($t17)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#942, $t17) && !$ResourceExists($1_account_Account_$memory#943, $t17)); + + // assert Not(And(Not(exists[@942]($t17)), Ge(Add(select account::Account.guid_creation_num($t18), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#942, $t17) && (($t18->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@942]($t17)), Gt(Add(select account::Account.guid_creation_num($t18), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#942, $t17) && (($t18->$guid_creation_num + 4) > 18446744073709551615)); + + // assert Not(Le(select token::Token.amount($t13), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:172:9+28 + assume {:print "$at(193,6252,6280)"} true; + assert {:msg "assert_failed(193,6252,6280): function does not abort under this condition"} + !($t13->$amount <= 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:172:9+28 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:201:5+1 + assume {:print "$at(192,6134,6135)"} true; +L2: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:201:5+1 + assume {:print "$at(192,6134,6135)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + +} + +// fun token_transfers::claim [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1240 +procedure {:inline 1} $1_token_transfers_claim(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId) returns () +{ + // declare local variables + var $t3: $1_token_transfers_TokenOfferId; + var $t4: int; + var $t5: $Mutation (Table int ($1_token_Token)); + var $t6: $1_token_transfers_TokenOfferId; + var $t7: $1_token_Token; + var $t8: Table int ($1_token_Token); + var $t9: $1_token_transfers_TokenOfferId; + var $t10: $1_token_Token; + var $t11: int; + var $t12: $1_token_Token; + var $t13: $1_token_TokenStore; + var $t14: $1_token_Token; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_token_transfers_PendingClaims); + var $t22: $Mutation (Table int ($1_token_Token)); + var $t23: int; + var $t24: $1_token_transfers_TokenOfferId; + var $t25: Table int ($1_token_Token); + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: $1_token_Token; + var $t30: int; + var $t31: int; + var $t32: $1_token_TokenId; + var $t33: int; + var $t34: int; + var $t35: $1_account_Account; + var $t36: $1_token_TokenStore; + var $t37: $1_token_Token; + var $t38: bool; + var $t39: bool; + var $t40: int; + var $t41: $1_token_transfers_TokenClaim; + var $t42: $Mutation ($1_token_transfers_PendingClaims); + var $t43: $Mutation ($1_event_EventHandle'$1_token_transfers_TokenClaimEvent'); + var $t44: int; + var $t45: $1_token_transfers_TokenClaimEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + 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 + // assume Identical($t8, select token_transfers::PendingClaims.pending_claims(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:128:9+66 + assume {:print "$at(193,4362,4428)"} true; + assume ($t8 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)->$pending_claims); + + // assume Identical($t9, token_transfers::$create_token_offer_id(signer::$address_of($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:129:9+83 + assume {:print "$at(193,4437,4520)"} true; + assume ($t9 == $1_token_transfers_$create_token_offer_id($1_signer_$address_of($t0), $t2)); + + // assume Identical($t10, table::spec_get($t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:131:9+61 + assume {:print "$at(193,4602,4663)"} true; + assume ($t10 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:135:9+48 + assume {:print "$at(193,4739,4787)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:136:9+19 + assume {:print "$at(193,4796,4815)"} true; + assume ($t12 == $t10); + + // assume Identical($t13, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:137:9+51 + assume {:print "$at(193,4824,4875)"} true; + assume ($t13 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t14, table::spec_get(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:138:9+68 + assume {:print "$at(193,4884,4952)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t15, table::spec_contains(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:139:9+59 + assume {:print "$at(193,4961,5020)"} true; + assume ($t15 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // trace_local[receiver]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$at(192,4510,4511)"} true; + assume {:print "$track_local(115,2,0):", $t0} $t0 == $t0; + + // trace_local[sender]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$track_local(115,2,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$track_local(115,2,2):", $t2} $t2 == $t2; + + // $t18 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:17+6 + assume {:print "$at(192,4654,4660)"} true; + $t18 := $ResourceExists($1_token_transfers_PendingClaims_$memory, $t1); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + assume {:print "$at(192,4646,4708)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:48+22 + assume {:print "$at(192,4685,4707)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + assume {:print "$at(192,4646,4708)"} true; + assume {:print "$track_abort(115,2):", $t19} $t19 == $t19; + + // $t20 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + $t20 := $t19; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:51+6 + assume {:print "$at(192,4789,4795)"} true; +L2: + + // $t21 := borrow_global($t1) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:18+17 + assume {:print "$at(192,4756,4773)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(192,4756,4773)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t22 := borrow_field.pending_claims($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:13+60 + $t22 := $ChildMutation($t21, 0, $Dereference($t21)->$pending_claims); + + // trace_local[pending_claims]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:164:13+14 + assume {:print "$at(192,4722,4736)"} true; + $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'' := $Dereference($t22); + assume {:print "$track_local(115,2,5):", $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''; + + // $t23 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:52+28 + assume {:print "$at(192,4864,4892)"} true; + call $t23 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,4864,4892)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t24 := token_transfers::create_token_offer_id($t23, $t2) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:30+61 + call $t24 := $1_token_transfers_create_token_offer_id($t23, $t2); + if ($abort_flag) { + assume {:print "$at(192,4842,4903)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_local[token_offer_id]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:13+14 + assume {:print "$track_local(115,2,6):", $t24} $t24 == $t24; + + // $t25 := read_ref($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:32+32 + assume {:print "$at(192,4936,4968)"} true; + $t25 := $Dereference($t22); + + // $t26 := table::contains($t25, $t24) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:17+47 + call $t26 := $1_table_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t25, $t24); + if ($abort_flag) { + assume {:print "$at(192,4921,4968)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // if ($t26) goto L4 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + if ($t26) { goto L4; } else { goto L10; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 +L3: + + // drop($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:83+22 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := error::not_found($t27) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:66+40 + call $t28 := $1_error_not_found($t27); + if ($abort_flag) { + assume {:print "$at(192,4970,5010)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + assume {:print "$track_abort(115,2):", $t28} $t28 == $t28; + + // $t20 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + $t20 := $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:36+14 + assume {:print "$at(192,5048,5062)"} true; +L5: + + // $t29 := table::remove($t22, $t24) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + assume {:print "$at(192,5034,5079)"} true; + call $t29,$t22 := $1_table_remove'$1_token_transfers_TokenOfferId_$1_token_Token'($t22, $t24); + if ($abort_flag) { + assume {:print "$at(192,5034,5079)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // write_back[Reference($t21).pending_claims (table::Table)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + $t21 := $UpdateMutation($t21, $Update'$1_token_transfers_PendingClaims'_pending_claims($Dereference($t21), $Dereference($t22))); + + // write_back[token_transfers::PendingClaims@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // trace_local[tokens]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:13+6 + assume {:print "$track_local(115,2,7):", $t29} $t29 == $t29; + + // $t30 := token::get_token_amount($t29) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:169:22+32 + assume {:print "$at(192,5102,5134)"} true; + call $t30 := $1_token_get_token_amount($t29); + if ($abort_flag) { + assume {:print "$at(192,5102,5134)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_local[amount]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:169:13+6 + assume {:print "$track_local(115,2,4):", $t30} $t30 == $t30; + + // assume Identical($t31, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t31 == $1_signer_$address_of($t0)); + + // assume Identical($t32, select token::Token.id($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t32 == $t29->$id); + + // assume Identical($t33, select token::Token.amount($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t33 == $t29->$amount); + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, global($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t35 == $ResourceValue($1_account_Account_$memory, $t34)); + + // assume Identical($t36, global($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t36 == $ResourceValue($1_token_TokenStore_$memory, $t31)); + + // assume Identical($t37, table::spec_get(select token::TokenStore.tokens($t36), $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t37 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t36->$tokens, $t32)); + + // assume Identical($t38, table::spec_contains(select token::TokenStore.tokens($t36), $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t38 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t36->$tokens, $t32)); + + // token::deposit_token($t0, $t29) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:170:9+38 + assume {:print "$at(192,5144,5182)"} true; + call $1_token_deposit_token($t0, $t29); + if ($abort_flag) { + assume {:print "$at(192,5144,5182)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t39 := features::module_event_migration_enabled() on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:172:13+47 + assume {:print "$at(192,5197,5244)"} true; + call $t39 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(192,5197,5244)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // if ($t39) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:172:9+270 + if ($t39) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:175:52+8 + assume {:print "$at(192,5353,5361)"} true; +L7: + + // $t40 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:175:33+28 + assume {:print "$at(192,5334,5362)"} true; + call $t40 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,5334,5362)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t41 := pack token_transfers::TokenClaim($t40, $t2, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:174:17+150 + assume {:print "$at(192,5289,5439)"} true; + $t41 := $1_token_transfers_TokenClaim($t40, $t2, $t30); + + // opaque begin: event::emit($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:173:13+193 + assume {:print "$at(192,5260,5453)"} true; + + // opaque end: event::emit($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:173:13+193 + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:51+6 + assume {:print "$at(192,5559,5565)"} true; +L6: + + // $t42 := borrow_global($t1) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:18+17 + assume {:print "$at(192,5526,5543)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t42 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(192,5526,5543)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t43 := borrow_field.claim_events($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:13+58 + $t43 := $ChildMutation($t42, 3, $Dereference($t42)->$claim_events); + + // $t44 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:184:29+28 + assume {:print "$at(192,5639,5667)"} true; + call $t44 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,5639,5667)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t45 := pack token_transfers::TokenClaimEvent($t44, $t2, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:183:13+139 + assume {:print "$at(192,5593,5732)"} true; + $t45 := $1_token_transfers_TokenClaimEvent($t44, $t2, $t30); + + // opaque begin: event::emit_event($t43, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + assume {:print "$at(192,5473,5743)"} true; + + // opaque end: event::emit_event($t43, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + + // write_back[Reference($t42).claim_events (event::EventHandle)]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + $t42 := $UpdateMutation($t42, $Update'$1_token_transfers_PendingClaims'_claim_events($Dereference($t42), $Dereference($t43))); + + // write_back[token_transfers::PendingClaims@]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t42), + $Dereference($t42)); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 +L9: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + + // label L10 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L10: + + // drop($t21) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun token_transfers::claim [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1240 +procedure {:timeLimit 80} $1_token_transfers_claim$verify(_$t0: $signer, _$t1: int, _$t2: $1_token_TokenId) returns () +{ + // declare local variables + var $t3: $1_token_transfers_TokenOfferId; + var $t4: int; + var $t5: $Mutation (Table int ($1_token_Token)); + var $t6: $1_token_transfers_TokenOfferId; + var $t7: $1_token_Token; + var $t8: Table int ($1_token_Token); + var $t9: $1_token_transfers_TokenOfferId; + var $t10: $1_token_Token; + var $t11: int; + var $t12: $1_token_Token; + var $t13: $1_token_TokenStore; + var $t14: $1_token_Token; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: bool; + var $t19: int; + var $t20: int; + var $t21: $Mutation ($1_token_transfers_PendingClaims); + var $t22: $Mutation (Table int ($1_token_Token)); + var $t23: int; + var $t24: $1_token_transfers_TokenOfferId; + var $t25: Table int ($1_token_Token); + var $t26: bool; + var $t27: int; + var $t28: int; + var $t29: $1_token_Token; + var $t30: int; + var $t31: int; + var $t32: $1_token_TokenId; + var $t33: int; + var $t34: int; + var $t35: $1_account_Account; + var $t36: $1_token_TokenStore; + var $t37: $1_token_Token; + var $t38: bool; + var $t39: bool; + var $t40: int; + var $t41: $1_token_transfers_TokenClaim; + var $t42: $Mutation ($1_token_transfers_PendingClaims); + var $t43: $Mutation ($1_event_EventHandle'$1_token_transfers_TokenClaimEvent'); + var $t44: int; + var $t45: $1_token_transfers_TokenClaimEvent; + var $t0: $signer; + var $t1: int; + var $t2: $1_token_TokenId; + var $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'': Table int ($1_token_Token); + var $temp_0'$1_token_Token': $1_token_Token; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_transfers_PendingClaims_$memory#944: $Memory $1_token_transfers_PendingClaims; + var $1_token_TokenStore_$memory#945: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#946: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$at(192,4510,4511)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume $IsValid'$1_token_TokenId'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume forall $rsc: token_transfers::PendingClaims: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0); + ($IsValid'$1_token_transfers_PendingClaims'($rsc)))); + + // assume Identical($t8, select token_transfers::PendingClaims.pending_claims(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:128:9+66 + assume {:print "$at(193,4362,4428)"} true; + assume ($t8 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)->$pending_claims); + + // assume Identical($t9, token_transfers::$create_token_offer_id(signer::$address_of($t0), $t2)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:129:9+83 + assume {:print "$at(193,4437,4520)"} true; + assume ($t9 == $1_token_transfers_$create_token_offer_id($1_signer_$address_of($t0), $t2)); + + // assume Identical($t10, table::spec_get($t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:131:9+61 + assume {:print "$at(193,4602,4663)"} true; + assume ($t10 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:135:9+48 + assume {:print "$at(193,4739,4787)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:136:9+19 + assume {:print "$at(193,4796,4815)"} true; + assume ($t12 == $t10); + + // assume Identical($t13, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:137:9+51 + assume {:print "$at(193,4824,4875)"} true; + assume ($t13 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t14, table::spec_get(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:138:9+68 + assume {:print "$at(193,4884,4952)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t15, table::spec_contains(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:139:9+59 + assume {:print "$at(193,4961,5020)"} true; + assume ($t15 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // @946 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$at(192,4510,4511)"} true; + $1_account_Account_$memory#946 := $1_account_Account_$memory; + + // @945 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + $1_token_TokenStore_$memory#945 := $1_token_TokenStore_$memory; + + // @944 := save_mem(token_transfers::PendingClaims) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + $1_token_transfers_PendingClaims_$memory#944 := $1_token_transfers_PendingClaims_$memory; + + // trace_local[receiver]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$track_local(115,2,0):", $t0} $t0 == $t0; + + // trace_local[sender]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$track_local(115,2,1):", $t1} $t1 == $t1; + + // trace_local[token_id]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:158:5+1 + assume {:print "$track_local(115,2,2):", $t2} $t2 == $t2; + + // $t18 := exists($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:17+6 + assume {:print "$at(192,4654,4660)"} true; + $t18 := $ResourceExists($1_token_transfers_PendingClaims_$memory, $t1); + + // if ($t18) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + if ($t18) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + assume {:print "$at(192,4646,4708)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 +L0: + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:48+22 + assume {:print "$at(192,4685,4707)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // trace_abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + assume {:print "$at(192,4646,4708)"} true; + assume {:print "$track_abort(115,2):", $t19} $t19 == $t19; + + // $t20 := move($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + $t20 := $t19; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:163:9+62 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:51+6 + assume {:print "$at(192,4789,4795)"} true; +L2: + + // $t21 := borrow_global($t1) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:18+17 + assume {:print "$at(192,4756,4773)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t21 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(192,4756,4773)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t22 := borrow_field.pending_claims($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:165:13+60 + $t22 := $ChildMutation($t21, 0, $Dereference($t21)->$pending_claims); + + // trace_local[pending_claims]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:164:13+14 + assume {:print "$at(192,4722,4736)"} true; + $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'' := $Dereference($t22); + assume {:print "$track_local(115,2,5):", $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''} $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token'' == $temp_0'$1_table_Table'$1_token_transfers_TokenOfferId_$1_token_Token''; + + // $t23 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:52+28 + assume {:print "$at(192,4864,4892)"} true; + call $t23 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,4864,4892)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t24 := token_transfers::create_token_offer_id($t23, $t2) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:30+61 + call $t24 := $1_token_transfers_create_token_offer_id($t23, $t2); + if ($abort_flag) { + assume {:print "$at(192,4842,4903)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_local[token_offer_id]($t24) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:166:13+14 + assume {:print "$track_local(115,2,6):", $t24} $t24 == $t24; + + // $t25 := read_ref($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:32+32 + assume {:print "$at(192,4936,4968)"} true; + $t25 := $Dereference($t22); + + // $t26 := table::contains($t25, $t24) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:17+47 + call $t26 := $1_table_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t25, $t24); + if ($abort_flag) { + assume {:print "$at(192,4921,4968)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // if ($t26) goto L4 else goto L10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + if ($t26) { goto L4; } else { goto L10; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 +L4: + + // goto L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + goto L5; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 +L3: + + // drop($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + + // $t27 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:83+22 + $t27 := 1; + assume $IsValid'u64'($t27); + + // $t28 := error::not_found($t27) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:66+40 + call $t28 := $1_error_not_found($t27); + if ($abort_flag) { + assume {:print "$at(192,4970,5010)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_abort($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + assume {:print "$at(192,4913,5011)"} true; + assume {:print "$track_abort(115,2):", $t28} $t28 == $t28; + + // $t20 := move($t28) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + $t20 := $t28; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:167:9+98 + goto L9; + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:36+14 + assume {:print "$at(192,5048,5062)"} true; +L5: + + // $t29 := table::remove($t22, $t24) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + assume {:print "$at(192,5034,5079)"} true; + call $t29,$t22 := $1_table_remove'$1_token_transfers_TokenOfferId_$1_token_Token'($t22, $t24); + if ($abort_flag) { + assume {:print "$at(192,5034,5079)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // write_back[Reference($t21).pending_claims (table::Table)]($t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + $t21 := $UpdateMutation($t21, $Update'$1_token_transfers_PendingClaims'_pending_claims($Dereference($t21), $Dereference($t22))); + + // write_back[token_transfers::PendingClaims@]($t21) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:22+45 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t21), + $Dereference($t21)); + + // trace_local[tokens]($t29) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:168:13+6 + assume {:print "$track_local(115,2,7):", $t29} $t29 == $t29; + + // $t30 := token::get_token_amount($t29) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:169:22+32 + assume {:print "$at(192,5102,5134)"} true; + call $t30 := $1_token_get_token_amount($t29); + if ($abort_flag) { + assume {:print "$at(192,5102,5134)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // trace_local[amount]($t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:169:13+6 + assume {:print "$track_local(115,2,4):", $t30} $t30 == $t30; + + // assume Identical($t31, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:411:9+47 + assume {:print "$at(187,18169,18216)"} true; + assume ($t31 == $1_signer_$address_of($t0)); + + // assume Identical($t32, select token::Token.id($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:413:9+24 + assume {:print "$at(187,18301,18325)"} true; + assume ($t32 == $t29->$id); + + // assume Identical($t33, select token::Token.amount($t29)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:414:9+32 + assume {:print "$at(187,18334,18366)"} true; + assume ($t33 == $t29->$amount); + + // assume Identical($t34, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t34 == $1_signer_$address_of($t0)); + + // assume Identical($t35, global($t34)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t35 == $ResourceValue($1_account_Account_$memory, $t34)); + + // assume Identical($t36, global($t31)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:906:9+51 + assume {:print "$at(187,38098,38149)"} true; + assume ($t36 == $ResourceValue($1_token_TokenStore_$memory, $t31)); + + // assume Identical($t37, table::spec_get(select token::TokenStore.tokens($t36), $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:907:9+68 + assume {:print "$at(187,38158,38226)"} true; + assume ($t37 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t36->$tokens, $t32)); + + // assume Identical($t38, table::spec_contains(select token::TokenStore.tokens($t36), $t32)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:908:9+59 + assume {:print "$at(187,38235,38294)"} true; + assume ($t38 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t36->$tokens, $t32)); + + // token::deposit_token($t0, $t29) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:170:9+38 + assume {:print "$at(192,5144,5182)"} true; + call $1_token_deposit_token($t0, $t29); + if ($abort_flag) { + assume {:print "$at(192,5144,5182)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t39 := features::module_event_migration_enabled() on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:172:13+47 + assume {:print "$at(192,5197,5244)"} true; + call $t39 := $1_features_module_event_migration_enabled(); + if ($abort_flag) { + assume {:print "$at(192,5197,5244)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // if ($t39) goto L7 else goto L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:172:9+270 + if ($t39) { goto L7; } else { goto L6; } + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:175:52+8 + assume {:print "$at(192,5353,5361)"} true; +L7: + + // $t40 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:175:33+28 + assume {:print "$at(192,5334,5362)"} true; + call $t40 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,5334,5362)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t41 := pack token_transfers::TokenClaim($t40, $t2, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:174:17+150 + assume {:print "$at(192,5289,5439)"} true; + $t41 := $1_token_transfers_TokenClaim($t40, $t2, $t30); + + // opaque begin: event::emit($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:173:13+193 + assume {:print "$at(192,5260,5453)"} true; + + // opaque end: event::emit($t41) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:173:13+193 + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:51+6 + assume {:print "$at(192,5559,5565)"} true; +L6: + + // $t42 := borrow_global($t1) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:18+17 + assume {:print "$at(192,5526,5543)"} true; + if (!$ResourceExists($1_token_transfers_PendingClaims_$memory, $t1)) { + call $ExecFailureAbort(); + } else { + $t42 := $Mutation($Global($t1), EmptyVec(), $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)); + } + if ($abort_flag) { + assume {:print "$at(192,5526,5543)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t43 := borrow_field.claim_events($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:182:13+58 + $t43 := $ChildMutation($t42, 3, $Dereference($t42)->$claim_events); + + // $t44 := signer::address_of($t0) on_abort goto L9 with $t20 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:184:29+28 + assume {:print "$at(192,5639,5667)"} true; + call $t44 := $1_signer_address_of($t0); + if ($abort_flag) { + assume {:print "$at(192,5639,5667)"} true; + $t20 := $abort_code; + assume {:print "$track_abort(115,2):", $t20} $t20 == $t20; + goto L9; + } + + // $t45 := pack token_transfers::TokenClaimEvent($t44, $t2, $t30) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:183:13+139 + assume {:print "$at(192,5593,5732)"} true; + $t45 := $1_token_transfers_TokenClaimEvent($t44, $t2, $t30); + + // opaque begin: event::emit_event($t43, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + assume {:print "$at(192,5473,5743)"} true; + + // opaque end: event::emit_event($t43, $t45) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + + // write_back[Reference($t42).claim_events (event::EventHandle)]($t43) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + $t42 := $UpdateMutation($t42, $Update'$1_token_transfers_PendingClaims'_claim_events($Dereference($t42), $Dereference($t43))); + + // write_back[token_transfers::PendingClaims@]($t42) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:181:9+270 + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $GlobalLocationAddress($t42), + $Dereference($t42)); + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; +L8: + + // assert Not(Not(exists[@944]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:127:9+41 + assume {:print "$at(193,4312,4353)"} true; + assert {:msg "assert_failed(193,4312,4353): function does not abort under this condition"} + !!$ResourceExists($1_token_transfers_PendingClaims_$memory#944, $t1); + + // assert Not(Not(table::spec_contains[]($t8, $t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:130:9+64 + assume {:print "$at(193,4529,4593)"} true; + assert {:msg "assert_failed(193,4529,4593): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9); + + // assert Not(And(Not(exists[@945]($t16)), Not(exists[@946]($t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#945, $t16) && !$ResourceExists($1_account_Account_$memory#946, $t16)); + + // assert Not(And(Not(exists[@945]($t16)), Ge(Add(select account::Account.guid_creation_num($t17), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#945, $t16) && (($t17->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@945]($t16)), Gt(Add(select account::Account.guid_creation_num($t17), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#945, $t16) && (($t17->$guid_creation_num + 4) > 18446744073709551615)); + + // assert Not(Le(select token::Token.amount($t12), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:140:9+28 + assume {:print "$at(193,5029,5057)"} true; + assert {:msg "assert_failed(193,5029,5057): function does not abort under this condition"} + !($t12->$amount <= 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:140:9+28 + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; +L9: + + // abort($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:189:5+1 + assume {:print "$at(192,5749,5750)"} true; + $abort_code := $t20; + $abort_flag := true; + return; + + // label L10 at :1:1+10 + assume {:print "$at(1,0,10)"} true; +L10: + + // drop($t21) at :1:1+10 + assume {:print "$at(1,0,10)"} true; + + // goto L3 at :1:1+10 + goto L3; + +} + +// fun token_transfers::claim_script [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+365 +procedure {:timeLimit 80} $1_token_transfers_claim_script$verify(_$t0: $signer, _$t1: int, _$t2: int, _$t3: $1_string_String, _$t4: $1_string_String, _$t5: int) returns () +{ + // declare local variables + var $t6: $1_token_TokenId; + var $t7: $1_token_TokenId; + var $t8: Table int ($1_token_Token); + var $t9: $1_token_transfers_TokenOfferId; + var $t10: $1_token_Token; + var $t11: int; + var $t12: $1_token_Token; + var $t13: $1_token_TokenStore; + var $t14: $1_token_Token; + var $t15: bool; + var $t16: int; + var $t17: $1_account_Account; + var $t18: $1_token_TokenId; + var $t19: int; + var $t20: Table int ($1_token_Token); + var $t21: $1_token_transfers_TokenOfferId; + var $t22: $1_token_Token; + var $t23: int; + var $t24: $1_token_Token; + var $t25: $1_token_TokenStore; + var $t26: $1_token_Token; + var $t27: bool; + var $t28: int; + var $t29: $1_account_Account; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: int; + var $temp_0'$1_string_String': $1_string_String; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u64': int; + var $1_token_transfers_PendingClaims_$memory#950: $Memory $1_token_transfers_PendingClaims; + var $1_token_TokenStore_$memory#951: $Memory $1_token_TokenStore; + var $1_account_Account_$memory#952: $Memory $1_account_Account; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + $t4 := _$t4; + $t5 := _$t5; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$at(192,4139,4140)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume $IsValid'address'($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume $IsValid'$1_string_String'($t3); + + // assume WellFormed($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume $IsValid'$1_string_String'($t4); + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume $IsValid'u64'($t5); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token::TokenStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_TokenStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_TokenStore_$memory, $a_0); + ($IsValid'$1_token_TokenStore'($rsc)))); + + // assume forall $rsc: token_transfers::PendingClaims: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0); + ($IsValid'$1_token_transfers_PendingClaims'($rsc)))); + + // assume Identical($t7, token::$create_token_id_raw($t2, $t3, $t4, $t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:100:9+87 + assume {:print "$at(193,3215,3302)"} true; + assume ($t7 == $1_token_$create_token_id_raw($t2, $t3, $t4, $t5)); + + // assume Identical($t8, select token_transfers::PendingClaims.pending_claims(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:102:9+66 + assume {:print "$at(193,3361,3427)"} true; + assume ($t8 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)->$pending_claims); + + // assume Identical($t9, token_transfers::$create_token_offer_id(signer::$address_of($t0), $t7)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:103:9+83 + assume {:print "$at(193,3436,3519)"} true; + assume ($t9 == $1_token_transfers_$create_token_offer_id($1_signer_$address_of($t0), $t7)); + + // assume Identical($t10, table::spec_get($t8, $t9)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:105:9+61 + assume {:print "$at(193,3601,3662)"} true; + assume ($t10 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9)); + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:109:9+48 + assume {:print "$at(193,3738,3786)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:110:9+19 + assume {:print "$at(193,3795,3814)"} true; + assume ($t12 == $t10); + + // assume Identical($t13, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:111:9+51 + assume {:print "$at(193,3823,3874)"} true; + assume ($t13 == $ResourceValue($1_token_TokenStore_$memory, $t11)); + + // assume Identical($t14, table::spec_get(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:112:9+68 + assume {:print "$at(193,3883,3951)"} true; + assume ($t14 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t15, table::spec_contains(select token::TokenStore.tokens($t13), select token::Token.id($t12))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:113:9+59 + assume {:print "$at(193,3960,4019)"} true; + assume ($t15 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t13->$tokens, $t12->$id)); + + // assume Identical($t16, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t16 == $1_signer_$address_of($t0)); + + // assume Identical($t17, global($t16)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t17 == $ResourceValue($1_account_Account_$memory, $t16)); + + // @952 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$at(192,4139,4140)"} true; + $1_account_Account_$memory#952 := $1_account_Account_$memory; + + // @951 := save_mem(token::TokenStore) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + $1_token_TokenStore_$memory#951 := $1_token_TokenStore_$memory; + + // @950 := save_mem(token_transfers::PendingClaims) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + $1_token_transfers_PendingClaims_$memory#950 := $1_token_transfers_PendingClaims_$memory; + + // trace_local[receiver]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,0):", $t0} $t0 == $t0; + + // trace_local[sender]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,1):", $t1} $t1 == $t1; + + // trace_local[creator]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,2):", $t2} $t2 == $t2; + + // trace_local[collection]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,3):", $t3} $t3 == $t3; + + // trace_local[name]($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,4):", $t4} $t4 == $t4; + + // trace_local[property_version]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:146:5+1 + assume {:print "$track_local(115,3,5):", $t5} $t5 == $t5; + + // $t18 := token::create_token_id_raw($t2, $t3, $t4, $t5) on_abort goto L2 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:154:24+71 + assume {:print "$at(192,4382,4453)"} true; + call $t18 := $1_token_create_token_id_raw($t2, $t3, $t4, $t5); + if ($abort_flag) { + assume {:print "$at(192,4382,4453)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,3):", $t19} $t19 == $t19; + goto L2; + } + + // trace_local[token_id]($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:154:13+8 + assume {:print "$track_local(115,3,6):", $t18} $t18 == $t18; + + // assume Identical($t20, select token_transfers::PendingClaims.pending_claims(global($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:128:9+66 + assume {:print "$at(193,4362,4428)"} true; + assume ($t20 == $ResourceValue($1_token_transfers_PendingClaims_$memory, $t1)->$pending_claims); + + // assume Identical($t21, token_transfers::$create_token_offer_id(signer::$address_of($t0), $t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:129:9+83 + assume {:print "$at(193,4437,4520)"} true; + assume ($t21 == $1_token_transfers_$create_token_offer_id($1_signer_$address_of($t0), $t18)); + + // assume Identical($t22, table::spec_get($t20, $t21)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:131:9+61 + assume {:print "$at(193,4602,4663)"} true; + assume ($t22 == $1_table_spec_get'$1_token_transfers_TokenOfferId_$1_token_Token'($t20, $t21)); + + // assume Identical($t23, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:135:9+48 + assume {:print "$at(193,4739,4787)"} true; + assume ($t23 == $1_signer_$address_of($t0)); + + // assume Identical($t24, $t22) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:136:9+19 + assume {:print "$at(193,4796,4815)"} true; + assume ($t24 == $t22); + + // assume Identical($t25, global($t23)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:137:9+51 + assume {:print "$at(193,4824,4875)"} true; + assume ($t25 == $ResourceValue($1_token_TokenStore_$memory, $t23)); + + // assume Identical($t26, table::spec_get(select token::TokenStore.tokens($t25), select token::Token.id($t24))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:138:9+68 + assume {:print "$at(193,4884,4952)"} true; + assume ($t26 == $1_table_spec_get'$1_token_TokenId_$1_token_Token'($t25->$tokens, $t24->$id)); + + // assume Identical($t27, table::spec_contains(select token::TokenStore.tokens($t25), select token::Token.id($t24))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:139:9+59 + assume {:print "$at(193,4961,5020)"} true; + assume ($t27 == $1_table_spec_contains'$1_token_TokenId_$1_token_Token'($t25->$tokens, $t24->$id)); + + // assume Identical($t28, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:447:9+39 + assume {:print "$at(187,19308,19347)"} true; + assume ($t28 == $1_signer_$address_of($t0)); + + // assume Identical($t29, global($t28)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:448:9+50 + assume {:print "$at(187,19356,19406)"} true; + assume ($t29 == $ResourceValue($1_account_Account_$memory, $t28)); + + // token_transfers::claim($t0, $t1, $t18) on_abort goto L2 with $t19 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:155:9+34 + assume {:print "$at(192,4463,4497)"} true; + call $1_token_transfers_claim($t0, $t1, $t18); + if ($abort_flag) { + assume {:print "$at(192,4463,4497)"} true; + $t19 := $abort_code; + assume {:print "$track_abort(115,3):", $t19} $t19 == $t19; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:156:5+1 + assume {:print "$at(192,4503,4504)"} true; +L1: + + // assert Not(Not(exists[@950]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:101:9+41 + assume {:print "$at(193,3311,3352)"} true; + assert {:msg "assert_failed(193,3311,3352): function does not abort under this condition"} + !!$ResourceExists($1_token_transfers_PendingClaims_$memory#950, $t1); + + // assert Not(Not(table::spec_contains[]($t8, $t9))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:104:9+64 + assume {:print "$at(193,3528,3592)"} true; + assert {:msg "assert_failed(193,3528,3592): function does not abort under this condition"} + !!$1_table_spec_contains'$1_token_transfers_TokenOfferId_$1_token_Token'($t8, $t9); + + // assert Not(And(Not(exists[@951]($t16)), Not(exists[@952]($t16)))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:449:9+71 + assume {:print "$at(187,19415,19486)"} true; + assert {:msg "assert_failed(187,19415,19486): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#951, $t16) && !$ResourceExists($1_account_Account_$memory#952, $t16)); + + // assert Not(And(Not(exists[@951]($t16)), Ge(Add(select account::Account.guid_creation_num($t17), 4), 1125899906842624))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:450:9+108 + assume {:print "$at(187,19495,19603)"} true; + assert {:msg "assert_failed(187,19495,19603): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#951, $t16) && (($t17->$guid_creation_num + 4) >= 1125899906842624)); + + // assert Not(And(Not(exists[@951]($t16)), Gt(Add(select account::Account.guid_creation_num($t17), 4), 18446744073709551615))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token.spec.move:451:9+84 + assume {:print "$at(187,19612,19696)"} true; + assert {:msg "assert_failed(187,19612,19696): function does not abort under this condition"} + !(!$ResourceExists($1_token_TokenStore_$memory#951, $t16) && (($t17->$guid_creation_num + 4) > 18446744073709551615)); + + // assert Not(Le(select token::Token.amount($t12), 0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:114:9+28 + assume {:print "$at(193,4028,4056)"} true; + assert {:msg "assert_failed(193,4028,4056): function does not abort under this condition"} + !($t12->$amount <= 0); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:114:9+28 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:156:5+1 + assume {:print "$at(192,4503,4504)"} true; +L2: + + // abort($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:156:5+1 + assume {:print "$at(192,4503,4504)"} true; + $abort_code := $t19; + $abort_flag := true; + return; + +} + +// fun token_transfers::create_token_offer_id [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+159 +procedure {:inline 1} $1_token_transfers_create_token_offer_id(_$t0: int, _$t1: $1_token_TokenId) returns ($ret0: $1_token_transfers_TokenOfferId) +{ + // declare local variables + var $t2: $1_token_transfers_TokenOfferId; + var $t0: int; + var $t1: $1_token_TokenId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // bytecode translation starts here + // trace_local[to_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume {:print "$at(192,2197,2198)"} true; + assume {:print "$track_local(115,4,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume {:print "$track_local(115,4,1):", $t1} $t1 == $t1; + + // $t2 := pack token_transfers::TokenOfferId($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:86:9+66 + assume {:print "$at(192,2284,2350)"} true; + $t2 := $1_token_transfers_TokenOfferId($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:86:9+66 + assume {:print "$track_return(115,4,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:90:5+1 + assume {:print "$at(192,2355,2356)"} true; +L1: + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:90:5+1 + assume {:print "$at(192,2355,2356)"} true; + $ret0 := $t2; + return; + +} + +// fun token_transfers::create_token_offer_id [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+159 +procedure {:timeLimit 80} $1_token_transfers_create_token_offer_id$verify(_$t0: int, _$t1: $1_token_TokenId) returns ($ret0: $1_token_transfers_TokenOfferId) +{ + // declare local variables + var $t2: $1_token_transfers_TokenOfferId; + var $t0: int; + var $t1: $1_token_TokenId; + var $temp_0'$1_token_TokenId': $1_token_TokenId; + var $temp_0'$1_token_transfers_TokenOfferId': $1_token_transfers_TokenOfferId; + var $temp_0'address': int; + $t0 := _$t0; + $t1 := _$t1; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume {:print "$at(192,2197,2198)"} true; + assume $IsValid'address'($t0); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume $IsValid'$1_token_TokenId'($t1); + + // trace_local[to_addr]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume {:print "$track_local(115,4,0):", $t0} $t0 == $t0; + + // trace_local[token_id]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:85:5+1 + assume {:print "$track_local(115,4,1):", $t1} $t1 == $t1; + + // $t2 := pack token_transfers::TokenOfferId($t0, $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:86:9+66 + assume {:print "$at(192,2284,2350)"} true; + $t2 := $1_token_transfers_TokenOfferId($t0, $t1); + + // trace_return[0]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:86:9+66 + assume {:print "$track_return(115,4,0):", $t2} $t2 == $t2; + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:90:5+1 + assume {:print "$at(192,2355,2356)"} true; +L1: + + // assert Not(false) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:25:9+16 + assume {:print "$at(193,832,848)"} true; + assert {:msg "assert_failed(193,832,848): function does not abort under this condition"} + !false; + + // return $t2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:25:9+16 + $ret0 := $t2; + return; + +} + +// fun token_transfers::initialize_token_transfers [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+475 +procedure {:timeLimit 80} $1_token_transfers_initialize_token_transfers$verify(_$t0: $signer) returns () +{ + // declare local variables + var $t1: int; + var $t2: $1_account_Account; + var $t3: Table int ($1_token_Token); + var $t4: int; + var $t5: int; + var $t6: $1_account_Account; + var $t7: $1_event_EventHandle'$1_token_transfers_TokenOfferEvent'; + var $t8: int; + var $t9: $1_account_Account; + var $t10: $1_event_EventHandle'$1_token_transfers_TokenCancelOfferEvent'; + var $t11: int; + var $t12: $1_account_Account; + var $t13: $1_event_EventHandle'$1_token_transfers_TokenClaimEvent'; + var $t14: $1_token_transfers_PendingClaims; + var $t0: $signer; + var $temp_0'signer': $signer; + var $1_token_transfers_PendingClaims_$memory#953: $Memory $1_token_transfers_PendingClaims; + var $1_account_Account_$memory#954: $Memory $1_account_Account; + $t0 := _$t0; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+1 + assume {:print "$at(192,1716,1717)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: token_transfers::PendingClaims: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0)}(var $rsc := $ResourceValue($1_token_transfers_PendingClaims_$memory, $a_0); + ($IsValid'$1_token_transfers_PendingClaims'($rsc)))); + + // assume Identical($t1, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:16:9+39 + assume {:print "$at(193,417,456)"} true; + assume ($t1 == $1_signer_$address_of($t0)); + + // assume Identical($t2, global($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:18:9+36 + assume {:print "$at(193,512,548)"} true; + assume ($t2 == $ResourceValue($1_account_Account_$memory, $t1)); + + // @954 := save_mem(account::Account) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+1 + assume {:print "$at(192,1716,1717)"} true; + $1_account_Account_$memory#954 := $1_account_Account_$memory; + + // @953 := save_mem(token_transfers::PendingClaims) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+1 + $1_token_transfers_PendingClaims_$memory#953 := $1_token_transfers_PendingClaims_$memory; + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:73:5+1 + assume {:print "$track_local(115,5,0):", $t0} $t0 == $t0; + + // $t3 := table::new() on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:77:33+33 + assume {:print "$at(192,1865,1898)"} true; + call $t3 := $1_table_new'$1_token_transfers_TokenOfferId_$1_token_Token'(); + if ($abort_flag) { + assume {:print "$at(192,1865,1898)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(115,5):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t5, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t5 == $1_signer_$address_of($t0)); + + // assume Identical($t6, global($t5)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t6 == $ResourceValue($1_account_Account_$memory, $t5)); + + // $t7 := account::new_event_handle($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:78:31+51 + assume {:print "$at(192,1930,1981)"} true; + call $t7 := $1_account_new_event_handle'$1_token_transfers_TokenOfferEvent'($t0); + if ($abort_flag) { + assume {:print "$at(192,1930,1981)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(115,5):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t8, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t8 == $1_signer_$address_of($t0)); + + // assume Identical($t9, global($t8)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t9 == $ResourceValue($1_account_Account_$memory, $t8)); + + // $t10 := account::new_event_handle($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:79:38+57 + assume {:print "$at(192,2020,2077)"} true; + call $t10 := $1_account_new_event_handle'$1_token_transfers_TokenCancelOfferEvent'($t0); + if ($abort_flag) { + assume {:print "$at(192,2020,2077)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(115,5):", $t4} $t4 == $t4; + goto L2; + } + + // assume Identical($t11, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:642:9+39 + assume {:print "$at(18,32212,32251)"} true; + assume ($t11 == $1_signer_$address_of($t0)); + + // assume Identical($t12, global($t11)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:643:9+36 + assume {:print "$at(18,32260,32296)"} true; + assume ($t12 == $ResourceValue($1_account_Account_$memory, $t11)); + + // $t13 := account::new_event_handle($t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:80:31+51 + assume {:print "$at(192,2109,2160)"} true; + call $t13 := $1_account_new_event_handle'$1_token_transfers_TokenClaimEvent'($t0); + if ($abort_flag) { + assume {:print "$at(192,2109,2160)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(115,5):", $t4} $t4 == $t4; + goto L2; + } + + // $t14 := pack token_transfers::PendingClaims($t3, $t7, $t10, $t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:76:13+358 + assume {:print "$at(192,1817,2175)"} true; + $t14 := $1_token_transfers_PendingClaims($t3, $t7, $t10, $t13); + + // move_to($t14, $t0) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:74:9+7 + assume {:print "$at(192,1775,1782)"} true; + if ($ResourceExists($1_token_transfers_PendingClaims_$memory, $t0->$addr)) { + call $ExecFailureAbort(); + } else { + $1_token_transfers_PendingClaims_$memory := $ResourceUpdate($1_token_transfers_PendingClaims_$memory, $t0->$addr, $t14); + } + if ($abort_flag) { + assume {:print "$at(192,1775,1782)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(115,5):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:83:5+1 + assume {:print "$at(192,2190,2191)"} true; +L1: + + // assert Not(exists[@953]($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:17:9+38 + assume {:print "$at(193,465,503)"} true; + assert {:msg "assert_failed(193,465,503): function does not abort under this condition"} + !$ResourceExists($1_token_transfers_PendingClaims_$memory#953, $t1); + + // assert Not(Not(exists[@954]($t1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:19:9+33 + assume {:print "$at(193,557,590)"} true; + assert {:msg "assert_failed(193,557,590): function does not abort under this condition"} + !!$ResourceExists($1_account_Account_$memory#954, $t1); + + // assert Not(Ge(Add(select account::Account.guid_creation_num($t2), 3), 1125899906842624)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:20:9+74 + assume {:print "$at(193,599,673)"} true; + assert {:msg "assert_failed(193,599,673): function does not abort under this condition"} + !(($t2->$guid_creation_num + 3) >= 1125899906842624); + + // assert Not(Gt(Add(select account::Account.guid_creation_num($t2), 3), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:21:9+50 + assume {:print "$at(193,682,732)"} true; + assert {:msg "assert_failed(193,682,732): function does not abort under this condition"} + !(($t2->$guid_creation_num + 3) > 18446744073709551615); + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:21:9+50 + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.move:83:5+1 + assume {:print "$at(192,2190,2191)"} true; +L2: + + // assert Or(Or(Or(exists[@953]($t1), Not(exists[@954]($t1))), Ge(Add(select account::Account.guid_creation_num($t2), 3), 1125899906842624)), Gt(Add(select account::Account.guid_creation_num($t2), 3), 18446744073709551615)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:7:5+107 + assume {:print "$at(193,134,241)"} true; + assert {:msg "assert_failed(193,134,241): abort not covered by any of the `aborts_if` clauses"} + ((($ResourceExists($1_token_transfers_PendingClaims_$memory#953, $t1) || !$ResourceExists($1_account_Account_$memory#954, $t1)) || (($t2->$guid_creation_num + 3) >= 1125899906842624)) || (($t2->$guid_creation_num + 3) > 18446744073709551615)); + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-token/sources/token_transfers.spec.move:7:5+107 + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::batch_peer_to_peer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+271 +procedure {:timeLimit 80} $1_transfer_scripts_batch_peer_to_peer$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (Vec (int)), _$t3: Vec (int)) returns () +{ + // declare local variables + var $t4: int; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (Vec (int)); + var $t3: Vec (int); + var $temp_0'signer': $signer; + var $temp_0'vec'address'': Vec (int); + var $temp_0'vec'u128'': Vec (int); + var $temp_0'vec'vec'u8''': Vec (Vec (int)); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume {:print "$at(103,1199,1200)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume $IsValid'vec'address''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume $IsValid'vec'vec'u8'''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume $IsValid'vec'u128''($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume {:print "$track_local(116,0,0):", $t0} $t0 == $t0; + + // trace_local[payeees]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume {:print "$track_local(116,0,1):", $t1} $t1 == $t1; + + // trace_local[_payee_auth_keys]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume {:print "$track_local(116,0,2):", $t2} $t2 == $t2; + + // trace_local[amounts]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:33:5+1 + assume {:print "$track_local(116,0,3):", $t3} $t3 == $t3; + + // transfer_scripts::batch_peer_to_peer_v2<#0>($t0, $t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:39:9+59 + assume {:print "$at(103,1405,1464)"} true; + call $1_transfer_scripts_batch_peer_to_peer_v2'#0'($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(103,1405,1464)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(116,0):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:40:5+1 + assume {:print "$at(103,1469,1470)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:40:5+1 + assume {:print "$at(103,1469,1470)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:40:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:40:5+1 + assume {:print "$at(103,1469,1470)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::batch_peer_to_peer_v2<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+664 +procedure {:inline 1} $1_transfer_scripts_batch_peer_to_peer_v2'#0'(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: $signer; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: Vec (int); + var $t22: int; + var $t23: $1_coin_CoinStore'#0'; + var $t24: $1_coin_CoinStore'#0'; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$at(103,1516,1517)"} true; + assume {:print "$track_local(116,1,0):", $t0} $t0 == $t0; + + // trace_local[payeees]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$track_local(116,1,1):", $t1} $t1 == $t1; + + // trace_local[amounts]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$track_local(116,1,2):", $t2} $t2 == $t2; + + // $t8 := vector::length
($t1) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:48:19+24 + assume {:print "$at(103,1682,1706)"} true; + call $t8 := $1_vector_length'address'($t1); + if ($abort_flag) { + assume {:print "$at(103,1682,1706)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[len]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:48:13+3 + assume {:print "$track_local(116,1,6):", $t8} $t8 == $t8; + + // $t10 := vector::length($t2) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:24+24 + assume {:print "$at(103,1731,1755)"} true; + call $t10 := $1_vector_length'u128'($t2); + if ($abort_flag) { + assume {:print "$at(103,1731,1755)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:21+2 + $t11 := $IsEqual'u64'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + assume {:print "$at(103,1716,1774)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:50+16 +L0: + + // $t12 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:50+16 + assume {:print "$at(103,1757,1773)"} true; + $t12 := 102; + assume $IsValid'u64'($t12); + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + assume {:print "$at(103,1716,1774)"} true; + assume {:print "$track_abort(116,1):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + $t9 := $t12; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:17+1 + assume {:print "$at(103,1792,1793)"} true; +L2: + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:17+1 + assume {:print "$at(103,1792,1793)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // trace_local[i]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:13+1 + assume {:print "$track_local(116,1,5):", $t13} $t13 == $t13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$at(103,1810,1811)"} true; +L6: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$at(103,1810,1811)"} true; + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t5); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'bool'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'address'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u128'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t20); + + // trace_local[i]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$info(): enter loop, variable(s) i havocked and reassigned"} true; + assume {:print "$track_local(116,1,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume !$abort_flag; + + // $t14 := <($t5, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:18+1 + call $t14 := $Lt($t5, $t8); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:41+8 + assume {:print "$at(103,1861,1869)"} true; +L5: + + // $t15 := vector::borrow
($t1, $t5) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:26+27 + assume {:print "$at(103,1846,1873)"} true; + call $t15 := $1_vector_borrow'address'($t1, $t5); + if ($abort_flag) { + assume {:print "$at(103,1846,1873)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[payee]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:17+5 + assume {:print "$track_local(116,1,7):", $t15} $t15 == $t15; + + // assume Identical($t21, bcs::$to_bytes
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t21 == $1_bcs_$to_bytes'address'($t15)); + + // account::create_account_if_does_not_exist($t15) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:53:13+48 + assume {:print "$at(103,1887,1935)"} true; + call $1_account_create_account_if_does_not_exist($t15); + if ($abort_flag) { + assume {:print "$at(103,1887,1935)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t16 := opaque begin: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume {:print "$at(103,1976,2011)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // assume Eq
(signer::$address_of($t16), $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume $IsEqual'address'($1_signer_$address_of($t16), $t15); + + // $t16 := opaque end: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + + // coin::register<#0>($t16) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:13+63 + call $1_coin_register'#0'($t16); + if ($abort_flag) { + assume {:print "$at(103,1949,2012)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t17 := vector::borrow($t2, $t5) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:55:27+27 + assume {:print "$at(103,2040,2067)"} true; + call $t17 := $1_vector_borrow'u128'($t2, $t5); + if ($abort_flag) { + assume {:print "$at(103,2040,2067)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[amount]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:55:17+6 + assume {:print "$track_local(116,1,4):", $t17} $t17 == $t17; + + // $t18 := (u64)($t17) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:56:56+15 + assume {:print "$at(103,2124,2139)"} true; + call $t18 := $CastU64($t17); + if ($abort_flag) { + assume {:print "$at(103,2124,2139)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // assume Identical($t22, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:533:9+49 + assume {:print "$at(32,23392,23441)"} true; + assume ($t22 == $1_signer_$address_of($t0)); + + // assume Identical($t23, global>($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:534:9+69 + assume {:print "$at(32,23450,23519)"} true; + assume ($t23 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t22)); + + // assume Identical($t24, global>($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:536:9+52 + assume {:print "$at(32,23616,23668)"} true; + assume ($t24 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t15)); + + // coin::transfer<#0>($t0, $t15, $t18) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:56:13+59 + assume {:print "$at(103,2081,2140)"} true; + call $1_coin_transfer'#0'($t0, $t15, $t18); + if ($abort_flag) { + assume {:print "$at(103,2081,2140)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:21+1 + assume {:print "$at(103,2162,2163)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := +($t5, $t19) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:19+1 + call $t20 := $AddU64($t5, $t19); + if ($abort_flag) { + assume {:print "$at(103,2160,2161)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[i]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:13+1 + assume {:print "$track_local(116,1,5):", $t20} $t20 == $t20; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:22+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; +L3: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 +L9: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::batch_peer_to_peer_v2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+664 +procedure {:timeLimit 80} $1_transfer_scripts_batch_peer_to_peer_v2$verify(_$t0: $signer, _$t1: Vec (int), _$t2: Vec (int)) returns () +{ + // declare local variables + var $t3: $signer; + var $t4: int; + var $t5: int; + var $t6: int; + var $t7: int; + var $t8: int; + var $t9: int; + var $t10: int; + var $t11: bool; + var $t12: int; + var $t13: int; + var $t14: bool; + var $t15: int; + var $t16: $signer; + var $t17: int; + var $t18: int; + var $t19: int; + var $t20: int; + var $t21: Vec (int); + var $t22: int; + var $t23: $1_coin_CoinStore'#0'; + var $t24: $1_coin_CoinStore'#0'; + var $t0: $signer; + var $t1: Vec (int); + var $t2: Vec (int); + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'u64': int; + var $temp_0'vec'address'': Vec (int); + var $temp_0'vec'u128'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$at(103,1516,1517)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume $IsValid'vec'address''($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume $IsValid'vec'u128''($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$track_local(116,1,0):", $t0} $t0 == $t0; + + // trace_local[payeees]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$track_local(116,1,1):", $t1} $t1 == $t1; + + // trace_local[amounts]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:43:5+1 + assume {:print "$track_local(116,1,2):", $t2} $t2 == $t2; + + // $t8 := vector::length
($t1) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:48:19+24 + assume {:print "$at(103,1682,1706)"} true; + call $t8 := $1_vector_length'address'($t1); + if ($abort_flag) { + assume {:print "$at(103,1682,1706)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[len]($t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:48:13+3 + assume {:print "$track_local(116,1,6):", $t8} $t8 == $t8; + + // $t10 := vector::length($t2) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:24+24 + assume {:print "$at(103,1731,1755)"} true; + call $t10 := $1_vector_length'u128'($t2); + if ($abort_flag) { + assume {:print "$at(103,1731,1755)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t11 := ==($t8, $t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:21+2 + $t11 := $IsEqual'u64'($t8, $t10); + + // if ($t11) goto L1 else goto L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + if ($t11) { goto L1; } else { goto L0; } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 +L1: + + // goto L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + assume {:print "$at(103,1716,1774)"} true; + goto L2; + + // label L0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:50+16 +L0: + + // $t12 := 102 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:50+16 + assume {:print "$at(103,1757,1773)"} true; + $t12 := 102; + assume $IsValid'u64'($t12); + + // trace_abort($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + assume {:print "$at(103,1716,1774)"} true; + assume {:print "$track_abort(116,1):", $t12} $t12 == $t12; + + // $t9 := move($t12) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + $t9 := $t12; + + // goto L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:49:9+58 + goto L9; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:17+1 + assume {:print "$at(103,1792,1793)"} true; +L2: + + // $t13 := 0 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:17+1 + assume {:print "$at(103,1792,1793)"} true; + $t13 := 0; + assume $IsValid'u64'($t13); + + // trace_local[i]($t13) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:50:13+1 + assume {:print "$track_local(116,1,5):", $t13} $t13 == $t13; + + // label L6 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$at(103,1810,1811)"} true; +L6: + + // $t5 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$at(103,1810,1811)"} true; + havoc $t5; + + // assume WellFormed($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t5); + + // $t14 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t14; + + // assume WellFormed($t14) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'bool'($t14); + + // $t15 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t15; + + // assume WellFormed($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'address'($t15); + + // $t16 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t16; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // $t17 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t17; + + // assume WellFormed($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u128'($t17); + + // $t18 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t18; + + // assume WellFormed($t18) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t18); + + // $t19 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t19; + + // assume WellFormed($t19) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t19); + + // $t20 := havoc[val]() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + havoc $t20; + + // assume WellFormed($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume $IsValid'u64'($t20); + + // trace_local[i]($t5) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume {:print "$info(): enter loop, variable(s) i havocked and reassigned"} true; + assume {:print "$track_local(116,1,5):", $t5} $t5 == $t5; + + // assume Not(AbortFlag()) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:16+1 + assume !$abort_flag; + + // $t14 := <($t5, $t8) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:18+1 + call $t14 := $Lt($t5, $t8); + + // if ($t14) goto L4 else goto L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + if ($t14) { goto L4; } else { goto L3; } + + // label L4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 +L4: + + // label L5 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:41+8 + assume {:print "$at(103,1861,1869)"} true; +L5: + + // $t15 := vector::borrow
($t1, $t5) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:26+27 + assume {:print "$at(103,1846,1873)"} true; + call $t15 := $1_vector_borrow'address'($t1, $t5); + if ($abort_flag) { + assume {:print "$at(103,1846,1873)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[payee]($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:52:17+5 + assume {:print "$track_local(116,1,7):", $t15} $t15 == $t15; + + // assume Identical($t21, bcs::$to_bytes
($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t21 == $1_bcs_$to_bytes'address'($t15)); + + // account::create_account_if_does_not_exist($t15) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:53:13+48 + assume {:print "$at(103,1887,1935)"} true; + call $1_account_create_account_if_does_not_exist($t15); + if ($abort_flag) { + assume {:print "$at(103,1887,1935)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t16 := opaque begin: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume {:print "$at(103,1976,2011)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // assume Eq
(signer::$address_of($t16), $t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + assume $IsEqual'address'($1_signer_$address_of($t16), $t15); + + // $t16 := opaque end: create_signer::create_signer($t15) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:40+35 + + // coin::register<#0>($t16) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:54:13+63 + call $1_coin_register'#0'($t16); + if ($abort_flag) { + assume {:print "$at(103,1949,2012)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t17 := vector::borrow($t2, $t5) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:55:27+27 + assume {:print "$at(103,2040,2067)"} true; + call $t17 := $1_vector_borrow'u128'($t2, $t5); + if ($abort_flag) { + assume {:print "$at(103,2040,2067)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[amount]($t17) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:55:17+6 + assume {:print "$track_local(116,1,4):", $t17} $t17 == $t17; + + // $t18 := (u64)($t17) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:56:56+15 + assume {:print "$at(103,2124,2139)"} true; + call $t18 := $CastU64($t17); + if ($abort_flag) { + assume {:print "$at(103,2124,2139)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // assume Identical($t22, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:533:9+49 + assume {:print "$at(32,23392,23441)"} true; + assume ($t22 == $1_signer_$address_of($t0)); + + // assume Identical($t23, global>($t22)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:534:9+69 + assume {:print "$at(32,23450,23519)"} true; + assume ($t23 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t22)); + + // assume Identical($t24, global>($t15)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:536:9+52 + assume {:print "$at(32,23616,23668)"} true; + assume ($t24 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t15)); + + // coin::transfer<#0>($t0, $t15, $t18) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:56:13+59 + assume {:print "$at(103,2081,2140)"} true; + call $1_coin_transfer'#0'($t0, $t15, $t18); + if ($abort_flag) { + assume {:print "$at(103,2081,2140)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // $t19 := 1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:21+1 + assume {:print "$at(103,2162,2163)"} true; + $t19 := 1; + assume $IsValid'u64'($t19); + + // $t20 := +($t5, $t19) on_abort goto L9 with $t9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:19+1 + call $t20 := $AddU64($t5, $t19); + if ($abort_flag) { + assume {:print "$at(103,2160,2161)"} true; + $t9 := $abort_code; + assume {:print "$track_abort(116,1):", $t9} $t9 == $t9; + goto L9; + } + + // trace_local[i]($t20) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:13+1 + assume {:print "$track_local(116,1,5):", $t20} $t20 == $t20; + + // goto L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:57:22+1 + goto L7; + + // label L3 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; +L3: + + // goto L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; + goto L8; + + // label L7 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + // Loop invariant checking block for the loop started with header: L6 +L7: + + // stop() at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:51:9+371 + assume {:print "$at(103,1803,2174)"} true; + assume false; + return; + + // label L8 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; +L8: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; + return; + + // label L9 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 +L9: + + // abort($t9) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:59:5+1 + assume {:print "$at(103,2179,2180)"} true; + $abort_code := $t9; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::peer_to_peer [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+221 +procedure {:timeLimit 80} $1_transfer_scripts_peer_to_peer$verify(_$t0: $signer, _$t1: int, _$t2: Vec (int), _$t3: int) returns () +{ + // declare local variables + var $t4: int; + var $t0: $signer; + var $t1: int; + var $t2: Vec (int); + var $t3: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + var $temp_0'vec'u8'': Vec (int); + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + $t3 := _$t3; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume {:print "$at(103,351,352)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume $IsValid'vec'u8''($t2); + + // assume WellFormed($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume $IsValid'u128'($t3); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume {:print "$track_local(116,2,0):", $t0} $t0 == $t0; + + // trace_local[payee]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume {:print "$track_local(116,2,1):", $t1} $t1 == $t1; + + // trace_local[_payee_auth_key]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume {:print "$track_local(116,2,2):", $t2} $t2 == $t2; + + // trace_local[amount]($t3) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:13:5+1 + assume {:print "$track_local(116,2,3):", $t3} $t3 == $t3; + + // transfer_scripts::peer_to_peer_v2<#0>($t0, $t1, $t3) on_abort goto L2 with $t4 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:19:9+50 + assume {:print "$at(103,516,566)"} true; + call $1_transfer_scripts_peer_to_peer_v2'#0'($t0, $t1, $t3); + if ($abort_flag) { + assume {:print "$at(103,516,566)"} true; + $t4 := $abort_code; + assume {:print "$track_abort(116,2):", $t4} $t4 == $t4; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:20:5+1 + assume {:print "$at(103,571,572)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:20:5+1 + assume {:print "$at(103,571,572)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:20:5+1 +L2: + + // abort($t4) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:20:5+1 + assume {:print "$at(103,571,572)"} true; + $abort_code := $t4; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::peer_to_peer_v2<#0> [baseline] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+575 +procedure {:inline 1} $1_transfer_scripts_peer_to_peer_v2'#0'(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $signer; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: int; + var $t14: $1_string_String; + var $t15: Vec (int); + var $t16: $signer; + var $t17: int; + var $t18: int; + var $t19: $1_coin_CoinStore'#0'; + var $t20: $1_coin_CoinStore'#0'; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // bytecode translation starts here + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$at(103,578,579)"} true; + assume {:print "$track_local(116,3,0):", $t0} $t0 == $t0; + + // trace_local[payee]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$track_local(116,3,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$track_local(116,3,2):", $t2} $t2 == $t2; + + // $t8 := [116, 114, 97, 110, 115, 102, 101, 114, 95, 115, 99, 114, 105, 112, 116, 115, 58, 58, 112, 101, 101, 114, 95, 116, 111, 95, 112, 101, 101, 114, 95, 118, 50, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:41+46 + assume {:print "$at(103,711,757)"} true; + $t8 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 114, 97, 110), MakeVec4(115, 102, 101, 114)), MakeVec4(95, 115, 99, 114)), MakeVec4(105, 112, 116, 115)), MakeVec4(58, 58, 112, 101)), MakeVec4(101, 114, 95, 116)), MakeVec4(111, 95, 112, 101)), MakeVec4(101, 114, 95, 118)), MakeVec4(50, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:23+65 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(103,693,758)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t9) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:9+80 + call $1_debug_print'$1_string_String'($t9); + if ($abort_flag) { + assume {:print "$at(103,679,759)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t11, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t11 == $1_type_info_$type_of'#0'()->$account_address); + + // $t12 := coin::name<#0>() on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:24:23+23 + assume {:print "$at(103,783,806)"} true; + call $t12 := $1_coin_name'#0'(); + if ($abort_flag) { + assume {:print "$at(103,783,806)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t12) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:24:9+38 + call $1_debug_print'$1_string_String'($t12); + if ($abort_flag) { + assume {:print "$at(103,769,807)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t13, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t13 == $1_type_info_$type_of'#0'()->$account_address); + + // $t14 := coin::symbol<#0>() on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:25:23+25 + assume {:print "$at(103,831,856)"} true; + call $t14 := $1_coin_symbol'#0'(); + if ($abort_flag) { + assume {:print "$at(103,831,856)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t14) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:25:9+40 + call $1_debug_print'$1_string_String'($t14); + if ($abort_flag) { + assume {:print "$at(103,817,857)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t15, bcs::$to_bytes
($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t15 == $1_bcs_$to_bytes'address'($t1)); + + // account::create_account_if_does_not_exist($t1) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:26:9+48 + assume {:print "$at(103,867,915)"} true; + call $1_account_create_account_if_does_not_exist($t1); + if ($abort_flag) { + assume {:print "$at(103,867,915)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t16 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume {:print "$at(103,952,987)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // assume Eq
(signer::$address_of($t16), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume $IsEqual'address'($1_signer_$address_of($t16), $t1); + + // $t16 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + + // coin::register<#0>($t16) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:9+63 + call $1_coin_register'#0'($t16); + if ($abort_flag) { + assume {:print "$at(103,925,988)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t17 := (u64)($t2) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:28:52+15 + assume {:print "$at(103,1041,1056)"} true; + call $t17 := $CastU64($t2); + if ($abort_flag) { + assume {:print "$at(103,1041,1056)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:533:9+49 + assume {:print "$at(32,23392,23441)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global>($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:534:9+69 + assume {:print "$at(32,23450,23519)"} true; + assume ($t19 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t18)); + + // assume Identical($t20, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:536:9+52 + assume {:print "$at(32,23616,23668)"} true; + assume ($t20 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t1)); + + // coin::transfer<#0>($t0, $t1, $t17) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:28:9+59 + assume {:print "$at(103,998,1057)"} true; + call $1_coin_transfer'#0'($t0, $t1, $t17); + if ($abort_flag) { + assume {:print "$at(103,998,1057)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t21 := [116, 114, 97, 110, 115, 102, 101, 114, 95, 115, 99, 114, 105, 112, 116, 115, 58, 58, 112, 101, 101, 114, 95, 116, 111, 95, 112, 101, 101, 114, 95, 118, 50, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:41+45 + assume {:print "$at(103,1099,1144)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 114, 97, 110), MakeVec4(115, 102, 101, 114)), MakeVec4(95, 115, 99, 114)), MakeVec4(105, 112, 116, 115)), MakeVec4(58, 58, 112, 101)), MakeVec4(101, 114, 95, 116)), MakeVec4(111, 95, 112, 101)), MakeVec4(101, 114, 95, 118)), MakeVec4(50, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:23+64 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(103,1081,1145)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t22) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:9+79 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(103,1067,1146)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 +L2: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +} + +// fun transfer_scripts::peer_to_peer_v2 [verification] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+575 +procedure {:timeLimit 80} $1_transfer_scripts_peer_to_peer_v2$verify(_$t0: $signer, _$t1: int, _$t2: int) returns () +{ + // declare local variables + var $t3: $1_string_String; + var $t4: $1_string_String; + var $t5: $1_string_String; + var $t6: $signer; + var $t7: $1_string_String; + var $t8: Vec (int); + var $t9: $1_string_String; + var $t10: int; + var $t11: int; + var $t12: $1_string_String; + var $t13: int; + var $t14: $1_string_String; + var $t15: Vec (int); + var $t16: $signer; + var $t17: int; + var $t18: int; + var $t19: $1_coin_CoinStore'#0'; + var $t20: $1_coin_CoinStore'#0'; + var $t21: Vec (int); + var $t22: $1_string_String; + var $t0: $signer; + var $t1: int; + var $t2: int; + var $temp_0'address': int; + var $temp_0'signer': $signer; + var $temp_0'u128': int; + $t0 := _$t0; + $t1 := _$t1; + $t2 := _$t2; + + // verification entrypoint assumptions + call $InitVerification(); + + // bytecode translation starts here + // assume WellFormed($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$at(103,578,579)"} true; + assume $IsValid'signer'($t0) && $1_signer_is_txn_signer($t0) && $1_signer_is_txn_signer_addr($t0->$addr); + + // assume WellFormed($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume $IsValid'address'($t1); + + // assume WellFormed($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume $IsValid'u128'($t2); + + // assume forall $rsc: features::Features: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_features_Features_$memory, $a_0)}(var $rsc := $ResourceValue($1_features_Features_$memory, $a_0); + ($IsValid'$1_features_Features'($rsc)))); + + // assume forall $rsc: account::Account: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22: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($rsc->$rotation_capability_offer->$for->$vec) <= 1) && (LenVec($rsc->$signer_capability_offer->$for->$vec) <= 1)))))); + + // assume forall $rsc: object::ObjectCore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_ObjectCore_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_ObjectCore_$memory, $a_0); + ($IsValid'$1_object_ObjectCore'($rsc)))); + + // assume forall $rsc: object::TombStone: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_TombStone_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_TombStone_$memory, $a_0); + ($IsValid'$1_object_TombStone'($rsc)))); + + // assume forall $rsc: object::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_object_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_object_Untransferable_$memory, $a_0); + ($IsValid'$1_object_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::Untransferable: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Untransferable_$memory, $a_0); + ($IsValid'$1_fungible_asset_Untransferable'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentFungibleBalance: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentFungibleBalance_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentFungibleBalance'($rsc)))); + + // assume forall $rsc: fungible_asset::ConcurrentSupply: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_ConcurrentSupply_$memory, $a_0); + ($IsValid'$1_fungible_asset_ConcurrentSupply'($rsc)))); + + // assume forall $rsc: fungible_asset::DispatchFunctionStore: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.withdraw_function($rsc))), 1), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.deposit_function($rsc))), 1)), Le(Len(select option::Option.vec(select fungible_asset::DispatchFunctionStore.derived_balance_function($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_DispatchFunctionStore_$memory, $a_0); + (($IsValid'$1_fungible_asset_DispatchFunctionStore'($rsc) && (((LenVec($rsc->$withdraw_function->$vec) <= 1) && (LenVec($rsc->$deposit_function->$vec) <= 1)) && (LenVec($rsc->$derived_balance_function->$vec) <= 1)))))); + + // assume forall $rsc: fungible_asset::FungibleStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_FungibleStore_$memory, $a_0); + ($IsValid'$1_fungible_asset_FungibleStore'($rsc)))); + + // assume forall $rsc: fungible_asset::Metadata: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Metadata_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Metadata_$memory, $a_0); + ($IsValid'$1_fungible_asset_Metadata'($rsc)))); + + // assume forall $rsc: fungible_asset::Supply: ResourceDomain(): And(WellFormed($rsc), Le(Len(select option::Option.vec(select fungible_asset::Supply.maximum($rsc))), 1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_fungible_asset_Supply_$memory, $a_0)}(var $rsc := $ResourceValue($1_fungible_asset_Supply_$memory, $a_0); + (($IsValid'$1_fungible_asset_Supply'($rsc) && (LenVec($rsc->$maximum->$vec) <= 1))))); + + // assume forall $rsc: dispatchable_fungible_asset::TransferRefStore: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0)}(var $rsc := $ResourceValue($1_dispatchable_fungible_asset_TransferRefStore_$memory, $a_0); + ($IsValid'$1_dispatchable_fungible_asset_TransferRefStore'($rsc)))); + + // assume forall $rsc: primary_fungible_store::DeriveRefPod: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0)}(var $rsc := $ResourceValue($1_primary_fungible_store_DeriveRefPod_$memory, $a_0); + ($IsValid'$1_primary_fungible_store_DeriveRefPod'($rsc)))); + + // assume forall $rsc: coin::CoinConversionMap: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinConversionMap_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinConversionMap_$memory, $a_0); + ($IsValid'$1_coin_CoinConversionMap'($rsc)))); + + // assume forall $rsc: coin::MigrationFlag: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_MigrationFlag_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_MigrationFlag_$memory, $a_0); + ($IsValid'$1_coin_MigrationFlag'($rsc)))); + + // assume forall $rsc: coin::PairedCoinType: ResourceDomain(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedCoinType_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedCoinType_$memory, $a_0); + ($IsValid'$1_coin_PairedCoinType'($rsc)))); + + // assume forall $rsc: coin::PairedFungibleAssetRefs: ResourceDomain(): And(WellFormed($rsc), And(And(Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.mint_ref_opt($rsc))), 1), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.transfer_ref_opt($rsc))), 1)), Le(Len(select option::Option.vec(select coin::PairedFungibleAssetRefs.burn_ref_opt($rsc))), 1))) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_PairedFungibleAssetRefs_$memory, $a_0); + (($IsValid'$1_coin_PairedFungibleAssetRefs'($rsc) && (((LenVec($rsc->$mint_ref_opt->$vec) <= 1) && (LenVec($rsc->$transfer_ref_opt->$vec) <= 1)) && (LenVec($rsc->$burn_ref_opt->$vec) <= 1)))))); + + // assume forall $rsc: coin::CoinInfo<#0>: ResourceDomain>(): And(WellFormed($rsc), And(Le(Len(select option::Option.vec(select coin::CoinInfo.supply($rsc))), 1), forall $elem: optional_aggregator::OptionalAggregator: 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 /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinInfo'#0'_$memory, $a_0); + (($IsValid'$1_coin_CoinInfo'#0''($rsc) && ((LenVec($rsc->$supply->$vec) <= 1) && (var $range_1 := $rsc->$supply->$vec; (forall $i_2: int :: InRangeVec($range_1, $i_2) ==> (var $elem := ReadVec($range_1, $i_2); + ((((((($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) <==> $1_option_$is_none'$1_optional_aggregator_Integer'($elem->$integer)) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) <==> $1_option_$is_none'$1_aggregator_Aggregator'($elem->$aggregator))) && ($1_option_$is_some'$1_optional_aggregator_Integer'($elem->$integer) ==> ($1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$value <= $1_option_$borrow'$1_optional_aggregator_Integer'($elem->$integer)->$limit))) && ($1_option_$is_some'$1_aggregator_Aggregator'($elem->$aggregator) ==> ($1_aggregator_spec_aggregator_get_val($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator)) <= $1_aggregator_spec_get_limit($1_option_$borrow'$1_aggregator_Aggregator'($elem->$aggregator))))) && (LenVec($elem->$aggregator->$vec) <= 1)) && (LenVec($elem->$integer->$vec) <= 1))))))))))); + + // assume forall $rsc: coin::CoinStore<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_CoinStore'#0'_$memory, $a_0); + ($IsValid'$1_coin_CoinStore'#0''($rsc)))); + + // assume forall $rsc: coin::Ghost$supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume $ResourceExists($1_coin_Ghost$supply'#0'_$memory, 0); + + // assume forall $rsc: coin::Ghost$aggregate_supply<#0>: ResourceDomain>(): WellFormed($rsc) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume (forall $a_0: int :: {$ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0)}(var $rsc := $ResourceValue($1_coin_Ghost$aggregate_supply'#0'_$memory, $a_0); + ($IsValid'$1_coin_Ghost$aggregate_supply'#0''($rsc)))); + + // assume exists>(0x0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume $ResourceExists($1_coin_Ghost$aggregate_supply'#0'_$memory, 0); + + // trace_local[account]($t0) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$track_local(116,3,0):", $t0} $t0 == $t0; + + // trace_local[payee]($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$track_local(116,3,1):", $t1} $t1 == $t1; + + // trace_local[amount]($t2) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:22:5+1 + assume {:print "$track_local(116,3,2):", $t2} $t2 == $t2; + + // $t8 := [116, 114, 97, 110, 115, 102, 101, 114, 95, 115, 99, 114, 105, 112, 116, 115, 58, 58, 112, 101, 101, 114, 95, 116, 111, 95, 112, 101, 101, 114, 95, 118, 50, 32, 124, 32, 69, 110, 116, 101, 114, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:41+46 + assume {:print "$at(103,711,757)"} true; + $t8 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 114, 97, 110), MakeVec4(115, 102, 101, 114)), MakeVec4(95, 115, 99, 114)), MakeVec4(105, 112, 116, 115)), MakeVec4(58, 58, 112, 101)), MakeVec4(101, 114, 95, 116)), MakeVec4(111, 95, 112, 101)), MakeVec4(101, 114, 95, 118)), MakeVec4(50, 32, 124, 32)), MakeVec4(69, 110, 116, 101)), MakeVec3(114, 101, 100)); + assume $IsValid'vec'u8''($t8); + + // $t9 := string::utf8($t8) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:23+65 + call $t9 := $1_string_utf8($t8); + if ($abort_flag) { + assume {:print "$at(103,693,758)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t9) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:23:9+80 + call $1_debug_print'$1_string_String'($t9); + if ($abort_flag) { + assume {:print "$at(103,679,759)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t11, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t11 == $1_type_info_$type_of'#0'()->$account_address); + + // $t12 := coin::name<#0>() on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:24:23+23 + assume {:print "$at(103,783,806)"} true; + call $t12 := $1_coin_name'#0'(); + if ($abort_flag) { + assume {:print "$at(103,783,806)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t12) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:24:9+38 + call $1_debug_print'$1_string_String'($t12); + if ($abort_flag) { + assume {:print "$at(103,769,807)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t13, select type_info::TypeInfo.account_address(type_info::$type_of<#0>())) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:205:9+58 + assume {:print "$at(32,10226,10284)"} true; + assume ($t13 == $1_type_info_$type_of'#0'()->$account_address); + + // $t14 := coin::symbol<#0>() on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:25:23+25 + assume {:print "$at(103,831,856)"} true; + call $t14 := $1_coin_symbol'#0'(); + if ($abort_flag) { + assume {:print "$at(103,831,856)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t14) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:25:9+40 + call $1_debug_print'$1_string_String'($t14); + if ($abort_flag) { + assume {:print "$at(103,817,857)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t15, bcs::$to_bytes
($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/account.spec.move:123:9+56 + assume {:print "$at(18,7239,7295)"} true; + assume ($t15 == $1_bcs_$to_bytes'address'($t1)); + + // account::create_account_if_does_not_exist($t1) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:26:9+48 + assume {:print "$at(103,867,915)"} true; + call $1_account_create_account_if_does_not_exist($t1); + if ($abort_flag) { + assume {:print "$at(103,867,915)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t16 := opaque begin: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume {:print "$at(103,952,987)"} true; + + // assume WellFormed($t16) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume $IsValid'signer'($t16) && $1_signer_is_txn_signer($t16) && $1_signer_is_txn_signer_addr($t16->$addr); + + // assume Eq
(signer::$address_of($t16), $t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + assume $IsEqual'address'($1_signer_$address_of($t16), $t1); + + // $t16 := opaque end: create_signer::create_signer($t1) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:36+35 + + // coin::register<#0>($t16) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:27:9+63 + call $1_coin_register'#0'($t16); + if ($abort_flag) { + assume {:print "$at(103,925,988)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t17 := (u64)($t2) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:28:52+15 + assume {:print "$at(103,1041,1056)"} true; + call $t17 := $CastU64($t2); + if ($abort_flag) { + assume {:print "$at(103,1041,1056)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // assume Identical($t18, signer::$address_of($t0)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:533:9+49 + assume {:print "$at(32,23392,23441)"} true; + assume ($t18 == $1_signer_$address_of($t0)); + + // assume Identical($t19, global>($t18)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:534:9+69 + assume {:print "$at(32,23450,23519)"} true; + assume ($t19 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t18)); + + // assume Identical($t20, global>($t1)) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/coin.spec.move:536:9+52 + assume {:print "$at(32,23616,23668)"} true; + assume ($t20 == $ResourceValue($1_coin_CoinStore'#0'_$memory, $t1)); + + // coin::transfer<#0>($t0, $t1, $t17) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:28:9+59 + assume {:print "$at(103,998,1057)"} true; + call $1_coin_transfer'#0'($t0, $t1, $t17); + if ($abort_flag) { + assume {:print "$at(103,998,1057)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // $t21 := [116, 114, 97, 110, 115, 102, 101, 114, 95, 115, 99, 114, 105, 112, 116, 115, 58, 58, 112, 101, 101, 114, 95, 116, 111, 95, 112, 101, 101, 114, 95, 118, 50, 32, 124, 32, 69, 120, 105, 116, 101, 100] at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:41+45 + assume {:print "$at(103,1099,1144)"} true; + $t21 := ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(ConcatVec(MakeVec4(116, 114, 97, 110), MakeVec4(115, 102, 101, 114)), MakeVec4(95, 115, 99, 114)), MakeVec4(105, 112, 116, 115)), MakeVec4(58, 58, 112, 101)), MakeVec4(101, 114, 95, 116)), MakeVec4(111, 95, 112, 101)), MakeVec4(101, 114, 95, 118)), MakeVec4(50, 32, 124, 32)), MakeVec4(69, 120, 105, 116)), MakeVec2(101, 100)); + assume $IsValid'vec'u8''($t21); + + // $t22 := string::utf8($t21) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:23+64 + call $t22 := $1_string_utf8($t21); + if ($abort_flag) { + assume {:print "$at(103,1081,1145)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // debug::print($t22) on_abort goto L2 with $t10 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:29:9+79 + call $1_debug_print'$1_string_String'($t22); + if ($abort_flag) { + assume {:print "$at(103,1067,1146)"} true; + $t10 := $abort_code; + assume {:print "$track_abort(116,3):", $t10} $t10 == $t10; + goto L2; + } + + // label L1 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; +L1: + + // return () at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; + return; + + // label L2 at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 +L2: + + // abort($t10) at /Users/bobong/Codes/westar_labs/starcoin/vm/framework/starcoin-framework/sources/stc/transfer_scripts.move:30:5+1 + assume {:print "$at(103,1152,1153)"} true; + $abort_code := $t10; + $abort_flag := true; + return; + +}